24 changed files with 72 additions and 3634 deletions
			
			
		- 
					1common/js/bigc.js
 - 
					1common/js/zh-address-parse.min.js
 - 
					141components/birthday/birthday.less
 - 
					106components/birthday/birthday.vue
 - 
					32pages.json
 - 
					22pages/address/add/add.vue
 - 
					31pages/index/author/author.less
 - 
					190pages/index/author/author.vue
 - 
					336pages/index/index/index.vue
 - 
					311pages/order/comment/comment.less
 - 
					446pages/order/comment/comment.vue
 - 
					15pages/order/confirm/confirm.vue
 - 
					212pages/order/evaluate/evaluate.less
 - 
					351pages/order/evaluate/evaluate.vue
 - 
					2pages/order/index/onlineorder.vue
 - 
					2pages/order/newdetail/newdetail.vue
 - 
					7pages/store/cart/cart.vue
 - 
					75pages/store/comment/comment.less
 - 
					163pages/store/comment/comment.vue
 - 
					3pages/store/invoiceDetail/invoiceDetail.less
 - 
					196pages/store/invoiceDetail/invoiceDetail.vue
 - 
					304pages/store/list/list.less
 - 
					755pages/store/list/list.vue
 - 
					4pages/user/my/center.vue
 
						
							
						
						
							1
	
						
						common/js/bigc.js
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							1
	
						
						common/js/zh-address-parse.min.js
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						@ -1,141 +0,0 @@ | 
				
			|||
 .birthday-box{ | 
				
			|||
    .mask{ | 
				
			|||
      position: fixed; | 
				
			|||
      top: 0; | 
				
			|||
      left: 0; | 
				
			|||
      right: 0; | 
				
			|||
      bottom: 0; | 
				
			|||
      z-index: 200; | 
				
			|||
      overflow-y: hidden; | 
				
			|||
      background-color: rgba(0, 0, 0, 0.4); | 
				
			|||
    } | 
				
			|||
    .box{ | 
				
			|||
      position: fixed; | 
				
			|||
      z-index: 500; | 
				
			|||
      width: 80%; | 
				
			|||
      top: 47%; | 
				
			|||
      left: 50%; | 
				
			|||
      transform: translate(-50%, -50%); | 
				
			|||
      overflow: auto; | 
				
			|||
      height: 70%; | 
				
			|||
      .title{ | 
				
			|||
        position: relative; | 
				
			|||
        height: 45%; | 
				
			|||
        background: url("http://ibrand-miniprogram.oss-cn-hangzhou.aliyuncs.com/18-12-27/10678114.jpg") no-repeat; | 
				
			|||
        background-size: 100% 100%; | 
				
			|||
        image{ | 
				
			|||
          position: absolute; | 
				
			|||
          right: 0; | 
				
			|||
          top: 2px; | 
				
			|||
          color: #fff; | 
				
			|||
          width: 30px; | 
				
			|||
          height: 30px; | 
				
			|||
        } | 
				
			|||
        i{ | 
				
			|||
          position: absolute; | 
				
			|||
          right: 0; | 
				
			|||
          top: -5px; | 
				
			|||
          color: #fff; | 
				
			|||
          font-size: 30px; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .name{ | 
				
			|||
        font-size: 14px; | 
				
			|||
        text-align: center; | 
				
			|||
        margin-right: 2px; | 
				
			|||
        color: #FFFFFF; | 
				
			|||
        background: #ffce2f; | 
				
			|||
        span{ | 
				
			|||
          color: #e7636f; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .coupon-list{ | 
				
			|||
        overflow: auto; | 
				
			|||
        height: 37%; | 
				
			|||
        background: #ffce2f; | 
				
			|||
        /*margin: 0 9px 0 10px;*/ | 
				
			|||
        margin-right: 2px; | 
				
			|||
        padding: 0 15px; | 
				
			|||
        .item{ | 
				
			|||
          display: flex; | 
				
			|||
          align-items: center; | 
				
			|||
          justify-content: space-between; | 
				
			|||
          position: relative; | 
				
			|||
          padding: 5px 10px; | 
				
			|||
          margin-bottom: 10px; | 
				
			|||
          background: #FFFFFF; | 
				
			|||
          border-radius: 4px; | 
				
			|||
 | 
				
			|||
          &:first-child{ | 
				
			|||
            margin-top: 10px; | 
				
			|||
          } | 
				
			|||
          &::before { | 
				
			|||
            position: absolute; | 
				
			|||
            left: -5px; | 
				
			|||
            top: 20px; | 
				
			|||
            content: ''; | 
				
			|||
            background: #ffce2f; | 
				
			|||
            width: 10px; | 
				
			|||
            height: 10px; | 
				
			|||
            border-radius: 100%; | 
				
			|||
          } | 
				
			|||
          &::after { | 
				
			|||
            position: absolute; | 
				
			|||
            right: -5px; | 
				
			|||
            top: 20px; | 
				
			|||
            content: ''; | 
				
			|||
            background: #ffce2f; | 
				
			|||
            width: 10px; | 
				
			|||
            height: 10px; | 
				
			|||
            border-radius: 100%; | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
          .left{ | 
				
			|||
            flex: 1; | 
				
			|||
            font-size: 14px; | 
				
			|||
            margin-right: 10px; | 
				
			|||
            overflow: hidden; | 
				
			|||
            div{ | 
				
			|||
              white-space: nowrap; | 
				
			|||
              overflow: hidden; | 
				
			|||
              text-overflow: ellipsis; | 
				
			|||
 | 
				
			|||
            } | 
				
			|||
            .time{ | 
				
			|||
              font-size: 10px; | 
				
			|||
              color: #9B9B9B; | 
				
			|||
              min-height: 19px; | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
          .right{ | 
				
			|||
 | 
				
			|||
            font-size: 16px; | 
				
			|||
            color: #e7636f; | 
				
			|||
          } | 
				
			|||
          &.point{ | 
				
			|||
            padding: 13px 10px; | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      .buttom{ | 
				
			|||
        font-size: 14px; | 
				
			|||
        padding: 14px; | 
				
			|||
        /*height: 10%;*/ | 
				
			|||
        text-align: center; | 
				
			|||
        color: #FFFFFF; | 
				
			|||
        background: #ffce2f; | 
				
			|||
        border-top: 4px solid #f7a63d; | 
				
			|||
        border-radius: 0 0 5px 5px; | 
				
			|||
        margin-right: 2px; | 
				
			|||
        span{ | 
				
			|||
          background: #e7636f; | 
				
			|||
          border-radius: 20px; | 
				
			|||
          padding: 10px 50px; | 
				
			|||
 | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
@ -1,106 +0,0 @@ | 
				
			|||
<template> | 
				
			|||
	<view> | 
				
			|||
		<view class="birthday-box"> | 
				
			|||
		        <view class="mask"> | 
				
			|||
		 | 
				
			|||
		        </view> | 
				
			|||
		        <view class="box"> | 
				
			|||
		            <view class="title"> | 
				
			|||
		                <image src="https://ibrand-miniprogram.oss-cn-hangzhou.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/X.png" @tap="closeBirthdayTap"/> | 
				
			|||
		                <!--<i class="iconfont icon-cha-"></i>--> | 
				
			|||
		            </view> | 
				
			|||
		            <view class="name"> | 
				
			|||
		                亲爱的 <span>{{giftData.user.nick_name}}</span> 祝你生日快乐 | 
				
			|||
		            </view> | 
				
			|||
		            <view class="coupon-list"> | 
				
			|||
		                <!--赠送积分--> | 
				
			|||
		                <!--v-if="data.activity.point_status"--> | 
				
			|||
		                <view class="item point" v-if="giftData.activity.point_status"> | 
				
			|||
		                    <view class="left"> | 
				
			|||
		                        <view class="lable"> | 
				
			|||
		                            <!--赠送111积分--> | 
				
			|||
		                            赠送 {{giftData.activity.point}} 积分 | 
				
			|||
		                        </view> | 
				
			|||
		                    </view> | 
				
			|||
		                    <view class="right"> | 
				
			|||
		 | 
				
			|||
		                    </view> | 
				
			|||
		                </view> | 
				
			|||
		 | 
				
			|||
		                <!--积分翻倍--> | 
				
			|||
		                <!--v-if="data.activity.point_double_status"--> | 
				
			|||
		                <view class="item" v-if="giftData.activity.point_double_status"> | 
				
			|||
		                    <view class="left"> | 
				
			|||
		                        <view class="lable"> | 
				
			|||
		                            <!--123--> | 
				
			|||
		                            {{giftData.activity.point_double_title}} | 
				
			|||
		                        </view> | 
				
			|||
		                        <view class="time"> | 
				
			|||
		                            <!--456--> | 
				
			|||
		                            {{giftData.activity.point_double_time}} | 
				
			|||
		                        </view> | 
				
			|||
		                    </view> | 
				
			|||
		                    <div class="right"> | 
				
			|||
		                        <!--X--> | 
				
			|||
		                        X {{giftData.activity.point_double}} | 
				
			|||
		                    </div> | 
				
			|||
		                </view> | 
				
			|||
		                <!--v-for="item in data.activity.gift" v-show="item.is_receive_coupon" --> | 
				
			|||
		                <!--优惠券--> | 
				
			|||
		                <view class="item" v-if="item.is_receive_coupon" v-for="(item,index) in giftData.activity.gift" :key="index"> | 
				
			|||
		                    <view class="left"> | 
				
			|||
		                        <view class="lable"> | 
				
			|||
		                            <!--123--> | 
				
			|||
		                            {{item.coupon.title}} | 
				
			|||
		                        </view> | 
				
			|||
		                        <view class="time"> | 
				
			|||
		                            <!--32121--> | 
				
			|||
		                            {{item.coupon.usestart_at}} - {{item.coupon.useend_at}} | 
				
			|||
		                        </view> | 
				
			|||
		                    </view> | 
				
			|||
		                    <view class="right"> | 
				
			|||
		                        <!--2323--> | 
				
			|||
		                        {{item.coupon.label}} | 
				
			|||
		                    </view> | 
				
			|||
		                </view> | 
				
			|||
		            </view> | 
				
			|||
		            <!--@click="close"--> | 
				
			|||
		            <view class="buttom" @tap="closeBirthdayTap"> | 
				
			|||
		                <span>我知道了</span> | 
				
			|||
		            </view> | 
				
			|||
		        </view> | 
				
			|||
		    </view> | 
				
			|||
	</view> | 
				
			|||
</template> | 
				
			|||
	 | 
				
			|||
<script> | 
				
			|||
	export default{ | 
				
			|||
		data(){ | 
				
			|||
			return{ | 
				
			|||
				 | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		props:{ | 
				
			|||
			isShow:{ | 
				
			|||
				type:Boolean, | 
				
			|||
				value:'' | 
				
			|||
			}, | 
				
			|||
			giftData:{ | 
				
			|||
				type:Object, | 
				
			|||
				value:'' | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
			 | 
				
			|||
		methods:{ | 
				
			|||
			closeBirthdayTap(){ | 
				
			|||
				 this.$emit('close'); | 
				
			|||
    } | 
				
			|||
			 | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
    @import "birthday"; | 
				
			|||
</style> | 
				
			|||
@ -1,31 +0,0 @@ | 
				
			|||
#author { | 
				
			|||
  /* image { | 
				
			|||
    width:100% !important; | 
				
			|||
    vertical-align:top; | 
				
			|||
  } */ | 
				
			|||
  .canvasContent{ | 
				
			|||
          position: fixed; | 
				
			|||
          bottom: 0; | 
				
			|||
          left: 0; | 
				
			|||
          right: 0; | 
				
			|||
          top: 0; | 
				
			|||
          background: rgba(0,0,0,0.5); | 
				
			|||
          display: flex; | 
				
			|||
          align-items: center; | 
				
			|||
          flex-direction: column; | 
				
			|||
          padding-top: 50upx; | 
				
			|||
    | 
				
			|||
          .canvasName{ | 
				
			|||
              width: 80%; | 
				
			|||
              height: calc(100vh - 300upx); | 
				
			|||
          } | 
				
			|||
          .canvasText{ | 
				
			|||
              margin: 30upx 0 20upx; | 
				
			|||
              color: #FFFFFF; | 
				
			|||
          } | 
				
			|||
          .errorImage{ | 
				
			|||
              width: 80upx; | 
				
			|||
              height: 80upx; | 
				
			|||
          } | 
				
			|||
      } | 
				
			|||
} | 
				
			|||
@ -1,190 +0,0 @@ | 
				
			|||
<template> | 
				
			|||
 | 
				
			|||
<!-- <view id="author"> | 
				
			|||
	    <u-parse :content="info.content"  v-if="info.content" /> | 
				
			|||
</view> --> | 
				
			|||
<view> | 
				
			|||
    <view class="personal_li" | 
				
			|||
                  @click="shareClick"> | 
				
			|||
              <image src="../../../static/card-r.png" | 
				
			|||
                     mode="widthFix" | 
				
			|||
                     class="iconImage"></image> | 
				
			|||
              <text class="font14">分享生成图片</text> | 
				
			|||
              <image src="../../../static/home-r.png" | 
				
			|||
                     mode="widthFix" | 
				
			|||
                     class="jtIcon"></image> | 
				
			|||
            </view> | 
				
			|||
        <view class="canvasContent" v-if="canvasShow"> | 
				
			|||
            <canvas canvas-id="shareCanvas" class="canvasName"></canvas> | 
				
			|||
            <view class="canvasText">图片已保存到相册,可分享给好友</view> | 
				
			|||
            <image src="../../../static/error.png" class="errorImage" @click="canvasShow = false"></image> | 
				
			|||
        </view> | 
				
			|||
</view> | 
				
			|||
 | 
				
			|||
</template> | 
				
			|||
<script> | 
				
			|||
import {pageLogin, getUrl,config,is} from '@/common/js/utils.js'; | 
				
			|||
import uParse from '@/components/gaoyia-parse/parse.vue'; | 
				
			|||
 | 
				
			|||
export default { | 
				
			|||
  data() { | 
				
			|||
    return { | 
				
			|||
      info: '', | 
				
			|||
	  canvasShow: false | 
				
			|||
    }; | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
	components:{ | 
				
			|||
		 | 
				
			|||
		uParse | 
				
			|||
	}, | 
				
			|||
 | 
				
			|||
  onLoad() { | 
				
			|||
    /* this.getAuthor(); */ | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  methods: { | 
				
			|||
    getAuthor() { | 
				
			|||
      wx.showLoading({ | 
				
			|||
        title: "加载中", | 
				
			|||
        mask: true | 
				
			|||
      }); | 
				
			|||
      this.$http.get({ | 
				
			|||
        api: 'api/ibrand' | 
				
			|||
      }).then(res => { | 
				
			|||
        if (res.statusCode == 200) { | 
				
			|||
          res = res.data; | 
				
			|||
 | 
				
			|||
          if (res.status) { | 
				
			|||
            this.setData({ | 
				
			|||
              info: res.data | 
				
			|||
            }); | 
				
			|||
          } else { | 
				
			|||
            wx.showModal({ | 
				
			|||
              content: res.message || '请求失败', | 
				
			|||
              showCancel: false | 
				
			|||
            }); | 
				
			|||
          } | 
				
			|||
        } else { | 
				
			|||
          wx.showModal({ | 
				
			|||
            content: res.message || '请求失败', | 
				
			|||
            showCancel: false | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        wx.hideLoading(); | 
				
			|||
      }).catch(err => { | 
				
			|||
        wx.hideLoading(); | 
				
			|||
        wx.showModal({ | 
				
			|||
          content: '请求失败', | 
				
			|||
          showCancel: false | 
				
			|||
        }); | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    setData: function (obj) { | 
				
			|||
      let that = this; | 
				
			|||
      let keys = []; | 
				
			|||
      let val, data; | 
				
			|||
      Object.keys(obj).forEach(function (key) { | 
				
			|||
        keys = key.split('.'); | 
				
			|||
        val = obj[key]; | 
				
			|||
        data = that.$data; | 
				
			|||
        keys.forEach(function (key2, index) { | 
				
			|||
          if (index + 1 == keys.length) { | 
				
			|||
            that.$set(data, key2, val); | 
				
			|||
          } else { | 
				
			|||
            if (!data[key2]) { | 
				
			|||
              that.$set(data, key2, {}); | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
          data = data[key2]; | 
				
			|||
        }); | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
	 //这是一个封装好的方法  | 
				
			|||
	        promisify: api => { | 
				
			|||
	            return (options, ...params) => { | 
				
			|||
	                return new Promise((resolve, reject) => { | 
				
			|||
	                    const extras = { | 
				
			|||
	                        success: resolve, | 
				
			|||
	                        fail: reject | 
				
			|||
	                    } | 
				
			|||
	                    api({ ...options, ...extras }, ...params) | 
				
			|||
	                }) | 
				
			|||
	            } | 
				
			|||
	        }, | 
				
			|||
			shareClick() {          | 
				
			|||
			            const wxGetImageInfo = this.promisify(uni.getImageInfo) | 
				
			|||
			            Promise.all([ | 
				
			|||
			                    // 图片目前只随机找了几张图片,后期可自行替换 | 
				
			|||
			                    wxGetImageInfo({ | 
				
			|||
			                            src: 'http://pics.ksudi.com/pic/2019/soms/companycard/jd2.png'   // 背景图片 | 
				
			|||
			                    }), | 
				
			|||
			                    wxGetImageInfo({ | 
				
			|||
			                            src: 'http://pics.ksudi.com/pic/2019/soms/companycard/st2.png'   // 二维码图片,二维码图片如需要携带参数,可根据接口将需要扫码进入页面的路径+参数传入后端,后端可根据生产小程序二维码路径,将路径放入这里就ok了,<a href="https://www.jianshu.com/p/5f96a4f91b9c" target="_blank">可参考</a> | 
				
			|||
			                    }) | 
				
			|||
			            ]).then(res => { | 
				
			|||
			                    console.log(3454) | 
				
			|||
			                    const ctx = wx.createCanvasContext('shareCanvas') | 
				
			|||
			                    console.log(ctx) | 
				
			|||
			                    // 底图 | 
				
			|||
			                    ctx.drawImage(res[0].path, 0, 0, 600, 700) | 
				
			|||
			                    // 作者名称 | 
				
			|||
			                    ctx.setTextAlign('center')    // 文字居中 | 
				
			|||
			                    ctx.setFillStyle('#000000')  // 文字颜色:黑色 | 
				
			|||
			                    ctx.setFontSize(22)         // 文字字号:22px | 
				
			|||
			                    ctx.fillText('作者:张杰', 300 / 2, 100) | 
				
			|||
			                    // 小程序码 | 
				
			|||
			                    const qrImgSize = 150 | 
				
			|||
			                    ctx.drawImage(res[1].path, (340 - qrImgSize) / 2, 230, qrImgSize, qrImgSize) | 
				
			|||
			                    ctx.stroke() | 
				
			|||
			                    // 绘图生成临时图片 | 
				
			|||
			                    console.log('res', res) | 
				
			|||
			                    ctx.draw(false,() => { | 
				
			|||
			                        this.tempFileImage() | 
				
			|||
			                    }) | 
				
			|||
			                    this.canvasShow = true | 
				
			|||
			            }) | 
				
			|||
			        }, | 
				
			|||
			        tempFileImage() { | 
				
			|||
			            let that = this | 
				
			|||
			            uni.canvasToTempFilePath({ | 
				
			|||
			                    canvasId: 'shareCanvas', | 
				
			|||
			                    success: (res) => { | 
				
			|||
			                            uni.hideLoading() | 
				
			|||
			                            that.savePic(res.tempFilePath) | 
				
			|||
			                    }, | 
				
			|||
			                    fail:function () { | 
				
			|||
			                            //TODO | 
				
			|||
			                    } | 
				
			|||
			            }) | 
				
			|||
			        }, | 
				
			|||
					 //保存 | 
				
			|||
					        savePic (filePath) { | 
				
			|||
					            console.log('filePath', filePath) | 
				
			|||
					            uni.showLoading({ | 
				
			|||
					                    title: '正在保存' | 
				
			|||
					            }); | 
				
			|||
					            uni.saveImageToPhotosAlbum({ | 
				
			|||
					                    filePath: filePath, | 
				
			|||
					                    success: function () { | 
				
			|||
					                            uni.showToast({ | 
				
			|||
					                                    title: '图片保存成功~' | 
				
			|||
					                            }); | 
				
			|||
					                    }, | 
				
			|||
					                    fail: function (e) { | 
				
			|||
					                            //TODO | 
				
			|||
					                    }, | 
				
			|||
					                    complete: function (){ | 
				
			|||
					                            uni.hideLoading() | 
				
			|||
					                    } | 
				
			|||
					            }); | 
				
			|||
					        } | 
				
			|||
  } | 
				
			|||
}; | 
				
			|||
</script> | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
    @import "author"; | 
				
			|||
</style> | 
				
			|||
@ -1,311 +0,0 @@ | 
				
			|||
@import '../../../common/css/global'; | 
				
			|||
#order-index { | 
				
			|||
 | 
				
			|||
  .navbar { | 
				
			|||
    position: fixed; | 
				
			|||
    top: 0px; | 
				
			|||
    width: 100%; | 
				
			|||
    display: flex; | 
				
			|||
    z-index: 20; | 
				
			|||
    height: 50px; | 
				
			|||
    line-height: 50px; | 
				
			|||
    background: #FFFFFF; | 
				
			|||
    font-size: 14px; | 
				
			|||
    color: #353535; | 
				
			|||
 | 
				
			|||
    .navbar-item { | 
				
			|||
      flex: 1; | 
				
			|||
      width: 0%; | 
				
			|||
      text-align: center; | 
				
			|||
 | 
				
			|||
      &.activity { | 
				
			|||
        color: @globalColor; | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
    .navbar-slider { | 
				
			|||
      position: absolute; | 
				
			|||
      content: " "; | 
				
			|||
      left: 0; | 
				
			|||
      bottom: 0; | 
				
			|||
      width: 4em; | 
				
			|||
      height: 3px; | 
				
			|||
      background-color: @globalColor; | 
				
			|||
      -webkit-transition: -webkit-transform .3s; | 
				
			|||
      transition: -webkit-transform .3s; | 
				
			|||
      transition: transform .3s; | 
				
			|||
      transition: transform .3s, -webkit-transform .3s | 
				
			|||
    } | 
				
			|||
  } | 
				
			|||
  .tab-panel{ | 
				
			|||
    padding-top: 50px; | 
				
			|||
  } | 
				
			|||
  .order-box { | 
				
			|||
    .order-item__none{ | 
				
			|||
      text-align: center; | 
				
			|||
      color: #959595; | 
				
			|||
      padding-top: 10px; | 
				
			|||
    } | 
				
			|||
    .order-item { | 
				
			|||
      margin-top: 10px; | 
				
			|||
      background: #FFFFFF; | 
				
			|||
      font-size: 15px; | 
				
			|||
 | 
				
			|||
      .item-top { | 
				
			|||
        .indent { | 
				
			|||
          line-height: 35px; | 
				
			|||
          display: flex; | 
				
			|||
          align-items: center; | 
				
			|||
          justify-content: space-between; | 
				
			|||
          padding: 0 10px; | 
				
			|||
 | 
				
			|||
          .order-num { | 
				
			|||
            white-space: nowrap; | 
				
			|||
            text-overflow: ellipsis; | 
				
			|||
            overflow: hidden; | 
				
			|||
            flex: 1; | 
				
			|||
            padding-right: 10px; | 
				
			|||
            color: #4A4A4A; | 
				
			|||
            font-size: 12px; | 
				
			|||
            line-height: 17px; | 
				
			|||
 | 
				
			|||
            /*span { | 
				
			|||
              font-weight: bold; | 
				
			|||
            }*/ | 
				
			|||
          } | 
				
			|||
          .order-type { | 
				
			|||
            color: @globalColor; | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .item-middle { | 
				
			|||
        .middle-item { | 
				
			|||
          display: flex; | 
				
			|||
          padding: 15px; | 
				
			|||
          color: #959595; | 
				
			|||
 | 
				
			|||
          image { | 
				
			|||
            width: 60px; | 
				
			|||
            height: 60px; | 
				
			|||
            border: 1px solid #e5e5e5; | 
				
			|||
          } | 
				
			|||
          .commodity_detail{ | 
				
			|||
              flex: 1; | 
				
			|||
              overflow: hidden; | 
				
			|||
              padding-left: 13px; | 
				
			|||
              .detail_name{ | 
				
			|||
 | 
				
			|||
                color: #000; | 
				
			|||
                font-size: 14px; | 
				
			|||
                line-height: 20px; | 
				
			|||
                overflow: hidden; | 
				
			|||
                white-space: nowrap; | 
				
			|||
                text-overflow: ellipsis; | 
				
			|||
              } | 
				
			|||
              .detail_num{ | 
				
			|||
                display: flex; | 
				
			|||
                justify-content: space-between; | 
				
			|||
                align-items: center; | 
				
			|||
                .num_css{ | 
				
			|||
                  span{ | 
				
			|||
                    font-size: 12px; | 
				
			|||
                    line-height: 16px; | 
				
			|||
                    padding-right: 4px; | 
				
			|||
                    color: #9B9B9B; | 
				
			|||
                  } | 
				
			|||
                } | 
				
			|||
                .num_money{ | 
				
			|||
                  font-size: 12px; | 
				
			|||
                  line-height: 16px; | 
				
			|||
                  color: #9B9B9B; | 
				
			|||
                } | 
				
			|||
              } | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .closeTime{ | 
				
			|||
        padding: 10px; | 
				
			|||
        font-size: 12px; | 
				
			|||
        color: @globalColor; | 
				
			|||
 | 
				
			|||
        .iconfont{ | 
				
			|||
          margin-right: 5px; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .item-bottom { | 
				
			|||
        display: flex; | 
				
			|||
        align-items: center; | 
				
			|||
        justify-content: space-between; | 
				
			|||
        padding: 10px; | 
				
			|||
        .all-money{ | 
				
			|||
          color: #4a4a4a; | 
				
			|||
          font-size: 12px; | 
				
			|||
          line-height: 17px; | 
				
			|||
        } | 
				
			|||
        .button-box { | 
				
			|||
          font-size: 13px; | 
				
			|||
          color: @globalColor; | 
				
			|||
          padding: 5px 10px; | 
				
			|||
          border: 1px solid @globalColor; | 
				
			|||
          border-radius: 3px; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
    .evaluate-item { | 
				
			|||
      margin-top: 10px; | 
				
			|||
      background: #FFFFFF; | 
				
			|||
      .adapter{ | 
				
			|||
        padding: 12px 15px 18px 15px; | 
				
			|||
 | 
				
			|||
        .adapter_item{ | 
				
			|||
          display: flex; | 
				
			|||
          align-items: center; | 
				
			|||
          justify-content: space-between; | 
				
			|||
          .item_title{ | 
				
			|||
            display: flex; | 
				
			|||
            align-items: center; | 
				
			|||
            .adapter-img{ | 
				
			|||
              position: relative; | 
				
			|||
              width: 34px; | 
				
			|||
              height: 34px; | 
				
			|||
              display: inline-block; | 
				
			|||
              overflow: visible; | 
				
			|||
              border-radius: 100%; | 
				
			|||
              border: 1px solid #825139; | 
				
			|||
              image{ | 
				
			|||
                display: inline-block; | 
				
			|||
                width: 32px; | 
				
			|||
                height: 32px; | 
				
			|||
                border-radius: 50%; | 
				
			|||
              } | 
				
			|||
              .justify{ | 
				
			|||
                font-size: 10px; | 
				
			|||
                position: absolute; | 
				
			|||
                width: 14px; | 
				
			|||
                height: 14px; | 
				
			|||
                text-align: center; | 
				
			|||
                content:""; | 
				
			|||
                right: 0; | 
				
			|||
                bottom: 0; | 
				
			|||
                border-radius: 100%; | 
				
			|||
                background-color: #825139; | 
				
			|||
                color: #ffffff; | 
				
			|||
              } | 
				
			|||
            } | 
				
			|||
            .text{ | 
				
			|||
              color: #717071; | 
				
			|||
              font-size: 12px; | 
				
			|||
              line-height: 14px; | 
				
			|||
              padding-left: 12px; | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
          .rater { | 
				
			|||
            .vlc-rater { | 
				
			|||
              display: flex; | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
        .adapter_type{ | 
				
			|||
          padding-bottom: 6px; | 
				
			|||
          span{ | 
				
			|||
            color: #9B9B9B; | 
				
			|||
            font-size: 10px; | 
				
			|||
            line-height: 14px; | 
				
			|||
            padding-right: 20px; | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
        .adapter_content{ | 
				
			|||
          color: #000; | 
				
			|||
          font-size: 14px; | 
				
			|||
          line-height: 20px; | 
				
			|||
          .content_text{ | 
				
			|||
            color: #000; | 
				
			|||
            font-size: 14px; | 
				
			|||
            line-height: 20px; | 
				
			|||
            padding-bottom: 3px; | 
				
			|||
          } | 
				
			|||
          .content_img{ | 
				
			|||
            //width: 25%; | 
				
			|||
            width: 100%; | 
				
			|||
            box-sizing: border-box; | 
				
			|||
            .img_item{ | 
				
			|||
              width: 25%; | 
				
			|||
              text-align: center; | 
				
			|||
              display: inline-block; | 
				
			|||
              padding: 3px; | 
				
			|||
              box-sizing: border-box; | 
				
			|||
              view { | 
				
			|||
                height: 0; | 
				
			|||
                padding-bottom: 100%; | 
				
			|||
                position: relative; | 
				
			|||
              } | 
				
			|||
              .img{ | 
				
			|||
                overflow: hidden; | 
				
			|||
                image { | 
				
			|||
                  width: 100%; | 
				
			|||
                  height: 100%; | 
				
			|||
                  position: absolute; | 
				
			|||
                  left: 0; | 
				
			|||
                  top: 0; | 
				
			|||
                } | 
				
			|||
              } | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .commodity{ | 
				
			|||
        padding: 15px 12px 11px 12px; | 
				
			|||
        .commodity_item{ | 
				
			|||
          background: #f3f3f3; | 
				
			|||
          padding: 5px; | 
				
			|||
          display: flex; | 
				
			|||
          .commodity_img{ | 
				
			|||
            width: 60px; | 
				
			|||
            height: 60px; | 
				
			|||
            image{ | 
				
			|||
              width: 100%; | 
				
			|||
              height: 100%; | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
          .commodity_detail{ | 
				
			|||
            flex: 1; | 
				
			|||
            overflow: hidden; | 
				
			|||
            padding-left: 13px; | 
				
			|||
            .detail_name{ | 
				
			|||
 | 
				
			|||
              color: #000; | 
				
			|||
              font-size: 14px; | 
				
			|||
              line-height: 20px; | 
				
			|||
              overflow: hidden; | 
				
			|||
              white-space: nowrap; | 
				
			|||
              text-overflow: ellipsis; | 
				
			|||
            } | 
				
			|||
            .detail_num{ | 
				
			|||
              display: flex; | 
				
			|||
              justify-content: space-between; | 
				
			|||
              align-items: center; | 
				
			|||
              .num_css{ | 
				
			|||
                span{ | 
				
			|||
                  font-size: 12px; | 
				
			|||
                  line-height: 16px; | 
				
			|||
                  padding-right: 4px; | 
				
			|||
                  color: #9B9B9B; | 
				
			|||
                } | 
				
			|||
              } | 
				
			|||
              .num_money{ | 
				
			|||
                font-size: 12px; | 
				
			|||
                line-height: 16px; | 
				
			|||
                color: #9B9B9B; | 
				
			|||
              } | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
    .loadingbox{ | 
				
			|||
      height: 40px; | 
				
			|||
      line-height: 40px; | 
				
			|||
      text-align: center; | 
				
			|||
    } | 
				
			|||
  } | 
				
			|||
} | 
				
			|||
@ -1,446 +0,0 @@ | 
				
			|||
<template> | 
				
			|||
 | 
				
			|||
<view id="order-index"> | 
				
			|||
    <view class="navbar mx-1px-bottom"> | 
				
			|||
        <block v-for="(item, index) in tabList" :key="index" > | 
				
			|||
            <view :id="index" class="navbar-item" :class="activeIndex == index ? 'activity' : ''" @tap="tabClick"> | 
				
			|||
                <view class="navbar-title">{{item.title}}</view> | 
				
			|||
            </view> | 
				
			|||
        </block> | 
				
			|||
        <view class="navbar-slider" :style="'width: ' + width + 'px; transform: translateX(' + sliderOffset + 'px); -webkit-transform: translateX(' + sliderOffset + 'px);'"></view> | 
				
			|||
 | 
				
			|||
    </view> | 
				
			|||
    <view class="tab-panel"> | 
				
			|||
        <view class="tab-content" :hidden="activeIndex != 0"> | 
				
			|||
 | 
				
			|||
            <view class="order-box"> | 
				
			|||
                <view class="order-item__none" v-if="dataList[0] == '' && tabList[activeIndex].init"> | 
				
			|||
                    暂无数据 | 
				
			|||
                </view> | 
				
			|||
                <view v-for="(item, idx) in dataList[0]" :key="idx"> | 
				
			|||
                    <view class="order-item" :data-no="order.order_no" v-for="(order, index) in dataList[0][idx]" :key="index"  @tap="jumps"> | 
				
			|||
                        <view class="item-top"> | 
				
			|||
                            <view class="indent mx-1px-bottom"> | 
				
			|||
                                <view class="order-num"> | 
				
			|||
                                    <span>线上门店</span> | 订单编号:{{order.order_no}} | 
				
			|||
                                </view> | 
				
			|||
                                <view class="order-type"> | 
				
			|||
                                    {{typeList[0]}} | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                        <view class="item-middle"> | 
				
			|||
                            <view class="middle-item mx-1px-bottom" v-for="(good, index) in order.items" :key="index" > | 
				
			|||
                                <image :src="good.item_meta.image"></image> | 
				
			|||
                                <view class="commodity_detail"> | 
				
			|||
                                    <view class="detail_name"> | 
				
			|||
                                        {{good.item_name}} | 
				
			|||
                                    </view> | 
				
			|||
                                    <view class="detail_num"> | 
				
			|||
                                        <view class="num_css"> | 
				
			|||
                                            <span>{{good.quantity}}件</span> | 
				
			|||
                                            <span>{{good.item_meta.specs_text}}</span> | 
				
			|||
                                        </view> | 
				
			|||
                                        <view class="num_money"> | 
				
			|||
                                            ¥{{good.total_yuan}} | 
				
			|||
                                        </view> | 
				
			|||
                                    </view> | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                        <view class="item-bottom" > | 
				
			|||
                            <view class="all-money"> | 
				
			|||
                                {{order.count}}件, 共计 ¥{{order.total_yuan}} | 
				
			|||
                            </view> | 
				
			|||
                            <view class="button-box"> | 
				
			|||
                                立即评价 | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
                <view class="loadingbox" :hidden="!tabList[0].show"> | 
				
			|||
                    {{showText}} | 
				
			|||
                </view> | 
				
			|||
 | 
				
			|||
            </view> | 
				
			|||
 | 
				
			|||
        </view> | 
				
			|||
        <view class="tab-content" :hidden="activeIndex != 1"> | 
				
			|||
            <view class="order-box"> | 
				
			|||
                <view class="order-item__none" v-if="dataList[1] == '' && tabList[activeIndex].init"> | 
				
			|||
                    暂无数据 | 
				
			|||
                </view> | 
				
			|||
                <view v-for="(item, indexs) in dataList[1]" :key="indexs" > | 
				
			|||
                    <view class="evaluate-item" v-for="(comment, index) in dataList[1][indexs]" :key="index"> | 
				
			|||
                        <view class="adapter mx-1px-bottom"> | 
				
			|||
                            <view class="adapter_item"> | 
				
			|||
                                <view class="item_title"> | 
				
			|||
                                    <view class="adapter-img"> | 
				
			|||
                                        <image :src="comment.user.avatar"></image> | 
				
			|||
                                       <!-- <view class="justify globalColor">V{{comment.user.grade}}</view> --> | 
				
			|||
                                    </view> | 
				
			|||
                                    <view class="text">{{comment.user.nick_name}}</view> | 
				
			|||
                                </view> | 
				
			|||
                                <view class="rater"> | 
				
			|||
									 <uni-rate size="18" disabled="true" active-color="red"  :value="comment.point" ></uni-rate> | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
 | 
				
			|||
                            <view class="adapter_type"> | 
				
			|||
                                <span>{{comment.created_at}}</span> | 
				
			|||
                                <span>颜色分类:{{comment.item_meta.specs_text}}</span> | 
				
			|||
                            </view> | 
				
			|||
                            <view class="adapter_content"> | 
				
			|||
                                <view class="content_item"> | 
				
			|||
                                    <view class="content_text"> | 
				
			|||
                                        {{comment.contents}} | 
				
			|||
                                    </view> | 
				
			|||
                                    <view class="content_img"> | 
				
			|||
                                        <view class="img_item" v-for="(imgList, index) in comment.pic_list" :key="index" > | 
				
			|||
                                            <view class="img"> | 
				
			|||
                                                <image mode="widthFix" :src="imgList"></image> | 
				
			|||
                                            </view> | 
				
			|||
                                        </view> | 
				
			|||
                                    </view> | 
				
			|||
                                </view> | 
				
			|||
 | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                        <view class="commodity" :hidden="order_item == ''"> | 
				
			|||
					 | 
				
			|||
                            <view class="commodity_item" :data-id="comment.item_meta.detail_id" @tap="jumpDetail"> | 
				
			|||
                                <view class="commodity_img"> | 
				
			|||
                                    <image :src="comment.item_meta.image"></image> | 
				
			|||
                                </view> | 
				
			|||
                                <view class="commodity_detail"> | 
				
			|||
                                    <view class="detail_name"> | 
				
			|||
                                        {{comment.order_item.item_name}} | 
				
			|||
                                    </view> | 
				
			|||
                                    <view class="detail_num"> | 
				
			|||
                                        <view class="num_css"> | 
				
			|||
                                            <span>{{comment.order_item.quantity}}件</span> | 
				
			|||
                                            <span>{{comment.item_meta.specs_text}}</span> | 
				
			|||
                                        </view> | 
				
			|||
                                        <view class="num_money"> | 
				
			|||
                                            ¥{{comment.order_item.total_yuan}} | 
				
			|||
                                        </view> | 
				
			|||
                                    </view> | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
                <view class="loadingbox" :hidden="!tabList[0].show"> | 
				
			|||
                    {{showText}} | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
        </view> | 
				
			|||
    </view> | 
				
			|||
</view> | 
				
			|||
 | 
				
			|||
</template> | 
				
			|||
<script> | 
				
			|||
import {pageLogin, getUrl,config,is} from '@/common/js/utils.js'; | 
				
			|||
import uniRate from "@/components/score/uni-rate/uni-rate.vue" | 
				
			|||
 | 
				
			|||
export default { | 
				
			|||
  data() { | 
				
			|||
    return { | 
				
			|||
      status: { | 
				
			|||
        0: 0, | 
				
			|||
        1: 0, | 
				
			|||
        2: 0, | 
				
			|||
        3: 0 | 
				
			|||
      }, | 
				
			|||
      activeIndex: 0, | 
				
			|||
      sliderOffset: 0, | 
				
			|||
      sliderLeft: 0, | 
				
			|||
      width: 0, | 
				
			|||
      tabList: [{ | 
				
			|||
        title: "待评价", | 
				
			|||
        init: false, | 
				
			|||
        line: false, | 
				
			|||
        statusNum: { | 
				
			|||
          page: 0, | 
				
			|||
          more: true | 
				
			|||
        }, | 
				
			|||
        show: false | 
				
			|||
      }, { | 
				
			|||
        title: "已评价", | 
				
			|||
        init: false, | 
				
			|||
        line: false, | 
				
			|||
        statusNum: { | 
				
			|||
          page: 0, | 
				
			|||
          more: true | 
				
			|||
        }, | 
				
			|||
        show: false | 
				
			|||
      }], | 
				
			|||
      dataList: { | 
				
			|||
        0: [], | 
				
			|||
        1: [] | 
				
			|||
      }, | 
				
			|||
      orderList: {}, | 
				
			|||
      typeList: { | 
				
			|||
        0: '已完成' | 
				
			|||
      }, | 
				
			|||
      showText: '正在加载下一页数据' | 
				
			|||
    }; | 
				
			|||
  }, | 
				
			|||
 components:{ | 
				
			|||
	 uniRate  | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onReachBottom(e) { | 
				
			|||
    var status = this.activeIndex; | 
				
			|||
    var page = this.tabList[status].page + 1; | 
				
			|||
    var tabList = `tabList[${status}]`; | 
				
			|||
 | 
				
			|||
    if (this.tabList[status].more) { | 
				
			|||
      if (status == 0) { | 
				
			|||
		   | 
				
			|||
        // this.setData({ | 
				
			|||
        //   [`${tabList}.show`]: true | 
				
			|||
        // }); | 
				
			|||
		 | 
				
			|||
		this.tabList.show=true; | 
				
			|||
		 | 
				
			|||
        this.orderListF(page); | 
				
			|||
      } else if (status == 1) { | 
				
			|||
        // this.setData({ | 
				
			|||
        //   [`${tabList}.show`]: true | 
				
			|||
        // }); | 
				
			|||
		this.tabList.show=true; | 
				
			|||
        this.commentList(page); | 
				
			|||
      } | 
				
			|||
    } else { | 
				
			|||
      wx.showToast({ | 
				
			|||
        title: '再拉也没有啦' | 
				
			|||
      }); | 
				
			|||
    } | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onShow() { | 
				
			|||
    wx.showLoading({ | 
				
			|||
      title: "加载中", | 
				
			|||
      mask: true | 
				
			|||
    }); | 
				
			|||
    wx.getSystemInfo({ | 
				
			|||
      success: res => { | 
				
			|||
        this.setData({ | 
				
			|||
          width: res.windowWidth / this.tabList.length, | 
				
			|||
          sliderOffset: res.windowWidth / this.tabList.length * this.activeIndex | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
    }); | 
				
			|||
    this.orderListF(); | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onLoad(e) {}, | 
				
			|||
 | 
				
			|||
  components: {}, | 
				
			|||
  props: {}, | 
				
			|||
  methods: { | 
				
			|||
   | 
				
			|||
    tabClick(e) { | 
				
			|||
      var status = e.currentTarget.id; | 
				
			|||
 | 
				
			|||
   //    this.setData({ | 
				
			|||
   //      sliderOffset: e.currentTarget.offsetLeft, | 
				
			|||
   //      activeIndex: status | 
				
			|||
   //    }); | 
				
			|||
	  //  | 
				
			|||
	  this.sliderOffset=e.currentTarget.offsetLeft; | 
				
			|||
	  this.activeIndex=status | 
				
			|||
	   | 
				
			|||
      if (status == 0) { | 
				
			|||
        if (!this.tabList[status].init) { | 
				
			|||
          wx.showLoading({ | 
				
			|||
            title: "加载中", | 
				
			|||
            mask: true | 
				
			|||
          }); | 
				
			|||
          this.orderListF(); | 
				
			|||
        } | 
				
			|||
      } else if (status == 1) { | 
				
			|||
        if (!this.tabList[status].init) { | 
				
			|||
          wx.showLoading({ | 
				
			|||
            title: "加载中", | 
				
			|||
            mask: true | 
				
			|||
          }); | 
				
			|||
          this.commentList(); | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    jump(e) { | 
				
			|||
      wx.navigateTo({ | 
				
			|||
        url: '/pages/order/detail/detail?no=' + e.currentTarget.dataset.no | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    jumps(e) { | 
				
			|||
      wx.navigateTo({ | 
				
			|||
        url: '/pages/order/evaluate/evaluate?no=' + e.currentTarget.dataset.no | 
				
			|||
      }); | 
				
			|||
      console.log(1); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    jumpDetail(e) { | 
				
			|||
      wx.navigateTo({ | 
				
			|||
        url: '/pages/store/detail/detail?id=' + e.currentTarget.dataset.id | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    //获取已评价列表 | 
				
			|||
    commentList(page = 1) { | 
				
			|||
      this.$http.get({ | 
				
			|||
        api: 'api/comment/list', | 
				
			|||
        header: { | 
				
			|||
          Authorization: this.$cookieStorage.get('user_token') | 
				
			|||
        }, | 
				
			|||
        data: { | 
				
			|||
          page: page | 
				
			|||
        } | 
				
			|||
      }).then(res => { | 
				
			|||
        if (res.statusCode == 200) { | 
				
			|||
          res = res.data; | 
				
			|||
 | 
				
			|||
          if (res.status) { | 
				
			|||
            console.log(res.data); | 
				
			|||
            var pages = res.meta.pagination; | 
				
			|||
            var current_page = pages.current_page; | 
				
			|||
            var total_pages = pages.total_pages; | 
				
			|||
            var tabList = `tabList[1]`; | 
				
			|||
            // this.setData({ | 
				
			|||
            //   [`dataList[1][${page - 1}]`]: res.data, | 
				
			|||
            //   [`${tabList}.init`]: true, | 
				
			|||
            //   [`${tabList}.page`]: current_page, | 
				
			|||
            //   [`${tabList}.more`]: current_page < total_pages | 
				
			|||
            // }); | 
				
			|||
			 | 
				
			|||
		    this.dataList[1][page - 1]=res.data; | 
				
			|||
			this.tabList[1].init=res.data; | 
				
			|||
			this.tabList[1].page=current_page; | 
				
			|||
			this.tabList[1].more=current_page < total_pages; | 
				
			|||
			 | 
				
			|||
            res.data.forEach(v => { | 
				
			|||
              /* Rater.init(`${v.id}`, { | 
				
			|||
                   value: v.point, | 
				
			|||
                   disabled: true, | 
				
			|||
                   activeColor: '#EA4448', | 
				
			|||
                   fontSize: 14 | 
				
			|||
               })*/ | 
				
			|||
			    | 
				
			|||
			    | 
				
			|||
            }); | 
				
			|||
          } else { | 
				
			|||
            wx.showToast({ | 
				
			|||
              title: "请求失败", | 
				
			|||
              image: '../../../static/error.png' | 
				
			|||
            }); | 
				
			|||
          } | 
				
			|||
        } else { | 
				
			|||
          wx.showModal({ | 
				
			|||
            content: '请求失败', | 
				
			|||
            showCancel: false | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        wx.hideLoading(); | 
				
			|||
      }).catch(rej => { | 
				
			|||
        wx.showToast({ | 
				
			|||
          title: "请求失败", | 
				
			|||
          image: '../../../static/error.png' | 
				
			|||
        }); | 
				
			|||
        wx.hideLoading(); | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    // 获取订单列表 | 
				
			|||
    orderListF(page = 1, type = 0) { | 
				
			|||
      var token = this.$cookieStorage.get('user_token'); | 
				
			|||
      var params = {}; | 
				
			|||
      params.status = 4, params.page = page; | 
				
			|||
      params.type = type; | 
				
			|||
      params.channel = ''; | 
				
			|||
      this.$http.get({ | 
				
			|||
        api: 'api/order/list', | 
				
			|||
        header: { | 
				
			|||
          Authorization: token | 
				
			|||
        }, | 
				
			|||
        data: params | 
				
			|||
      }).then(res => { | 
				
			|||
        if (res.statusCode == 200) { | 
				
			|||
          res = res.data; | 
				
			|||
 | 
				
			|||
          if (res.status) { | 
				
			|||
            console.log(res.data); | 
				
			|||
            var pages = res.meta.pagination; | 
				
			|||
            var current_page = pages.current_page; | 
				
			|||
            var total_pages = pages.total_pages; | 
				
			|||
            var tabList = `tabList[0]`; | 
				
			|||
            // this.setData({ | 
				
			|||
            //   [`dataList[0][${page - 1}]`]: res.data, | 
				
			|||
            //   [`${tabList}.init`]: true, | 
				
			|||
            //   [`${tabList}.page`]: current_page, | 
				
			|||
            //   [`${tabList}.more`]: current_page < total_pages | 
				
			|||
            // }); | 
				
			|||
			 | 
				
			|||
			this.dataList[0][page - 1]=res.data; | 
				
			|||
			this.tabList[0].init=res.data; | 
				
			|||
			this.tabList[0].page=current_page; | 
				
			|||
			this.tabList[0].more=current_page < total_pages; | 
				
			|||
			 | 
				
			|||
	 | 
				
			|||
          } else { | 
				
			|||
            wx.showToast({ | 
				
			|||
              title: res.message, | 
				
			|||
              image: '../../../static/error.png' | 
				
			|||
            }); | 
				
			|||
          } | 
				
			|||
        } else { | 
				
			|||
          wx.showModal({ | 
				
			|||
            content: '请求失败', | 
				
			|||
            showCancel: false | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        wx.hideLoading(); | 
				
			|||
      }).catch(rej => { | 
				
			|||
        wx.showToast({ | 
				
			|||
          title: "请求失败", | 
				
			|||
          image: '../../../static/error.png' | 
				
			|||
        }); | 
				
			|||
        wx.hideLoading(); | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    setData: function (obj) { | 
				
			|||
      let that = this; | 
				
			|||
      let keys = []; | 
				
			|||
      let val, data; | 
				
			|||
      Object.keys(obj).forEach(function (key) { | 
				
			|||
        keys = key.split('.'); | 
				
			|||
        val = obj[key]; | 
				
			|||
        data = that.$data; | 
				
			|||
        keys.forEach(function (key2, index) { | 
				
			|||
          if (index + 1 == keys.length) { | 
				
			|||
            that.$set(data, key2, val); | 
				
			|||
          } else { | 
				
			|||
            if (!data[key2]) { | 
				
			|||
              that.$set(data, key2, {}); | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
          data = data[key2]; | 
				
			|||
        }); | 
				
			|||
      }); | 
				
			|||
    } | 
				
			|||
  }, | 
				
			|||
  computed: {}, | 
				
			|||
  watch: {} | 
				
			|||
}; | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
    @import "comment"; | 
				
			|||
</style> | 
				
			|||
@ -1,212 +0,0 @@ | 
				
			|||
@import '../../../common/css/global'; | 
				
			|||
#order-comment { | 
				
			|||
  height: 100%; | 
				
			|||
  box-sizing: border-box; | 
				
			|||
  overflow: auto; | 
				
			|||
  .order-status { | 
				
			|||
    display: flex; | 
				
			|||
    height: 40px; | 
				
			|||
    line-height: 40px; | 
				
			|||
    background-color: #FFFFFF; | 
				
			|||
    padding: 0 10px; | 
				
			|||
 | 
				
			|||
    .left { | 
				
			|||
      flex: 1; | 
				
			|||
      font-size: 15px; | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    .right { | 
				
			|||
      color: #ff0000; | 
				
			|||
      font-size: 13px; | 
				
			|||
    } | 
				
			|||
  } | 
				
			|||
  .order-items { | 
				
			|||
    /*margin-top: 10px;*/ | 
				
			|||
    background-color: #eeeeee; | 
				
			|||
    /*background-color: #FFFFFF;*/ | 
				
			|||
    font-size: 14px; | 
				
			|||
    .order-item{ | 
				
			|||
      background-color: #FFFFFF; | 
				
			|||
      margin-top: 10px; | 
				
			|||
      padding: 15px; | 
				
			|||
    } | 
				
			|||
    .order-item:first-child{ | 
				
			|||
      margin-top: 0px; | 
				
			|||
    } | 
				
			|||
    .order-info { | 
				
			|||
      padding-bottom: 15px; | 
				
			|||
      display: flex; | 
				
			|||
 | 
				
			|||
      .image { | 
				
			|||
        width: 60px; | 
				
			|||
        height: 60px; | 
				
			|||
        border: 1px solid #e5e5e5; | 
				
			|||
        margin-right: 10px; | 
				
			|||
 | 
				
			|||
        image { | 
				
			|||
          width: 100%; | 
				
			|||
          height: 100%; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      .texts { | 
				
			|||
        flex: 1; | 
				
			|||
        font-size: 12px; | 
				
			|||
        overflow: hidden; | 
				
			|||
 | 
				
			|||
        .name { | 
				
			|||
          overflow: hidden; | 
				
			|||
          text-overflow: ellipsis; | 
				
			|||
          white-space: nowrap; | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        .spec { | 
				
			|||
          color: #838383; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    .comment-stars { | 
				
			|||
      padding: 10px; | 
				
			|||
      display: flex; | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    .comment-content { | 
				
			|||
      width: 100%; | 
				
			|||
      box-sizing:border-box ; | 
				
			|||
      /*padding: 10px;*/ | 
				
			|||
      display: flex; | 
				
			|||
      height: 120px; | 
				
			|||
      resize:none; | 
				
			|||
      padding: 15px 0; | 
				
			|||
      textarea { | 
				
			|||
        width: 100%; | 
				
			|||
        height: 90px; | 
				
			|||
        border: 1px solid #e3e3e3; | 
				
			|||
        appearance: none; | 
				
			|||
        outline: none; | 
				
			|||
        box-sizing: border-box; | 
				
			|||
        padding: 5px; | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      .number { | 
				
			|||
        position: absolute; | 
				
			|||
        bottom: 5px; | 
				
			|||
        right: 5px; | 
				
			|||
        font-size: 12px; | 
				
			|||
        color: #e0e0e0; | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    .label { | 
				
			|||
      width: 50px; | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    .content { | 
				
			|||
      flex: 1; | 
				
			|||
      position: relative; | 
				
			|||
      .item_start{ | 
				
			|||
        .vlc-rater{ | 
				
			|||
          display: flex; | 
				
			|||
          .is-active{ | 
				
			|||
            color: @globalColor !important; | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
       /* i{ | 
				
			|||
          font-size: 12px; | 
				
			|||
          color: @globalColor; | 
				
			|||
          padding: 0 2px; | 
				
			|||
        }*/ | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
    .uploading-box { | 
				
			|||
      width: 100%; | 
				
			|||
      box-sizing: border-box; | 
				
			|||
      font-size: 0; | 
				
			|||
      padding-top: 15px; | 
				
			|||
 | 
				
			|||
      .uploading-item { | 
				
			|||
        width: 25%; | 
				
			|||
        text-align: center; | 
				
			|||
        display: inline-block; | 
				
			|||
        padding: 0 5px 5px 5px; | 
				
			|||
        box-sizing: border-box; | 
				
			|||
        position: relative; | 
				
			|||
 | 
				
			|||
        .uploading-input { | 
				
			|||
          border: 2px dashed #ddd; | 
				
			|||
          margin: -2px; | 
				
			|||
        } | 
				
			|||
        .delete { | 
				
			|||
          position: absolute; | 
				
			|||
          color: #fff; | 
				
			|||
          font-size: 12px; | 
				
			|||
          top: -10px; | 
				
			|||
          width: 20px; | 
				
			|||
          right: 0px; | 
				
			|||
          height: 20px; | 
				
			|||
          border-radius: 10px; | 
				
			|||
          background: #000; | 
				
			|||
        } | 
				
			|||
        view { | 
				
			|||
          height: 0; | 
				
			|||
          padding-bottom: 100%; | 
				
			|||
          position: relative; | 
				
			|||
        } | 
				
			|||
        .img{ | 
				
			|||
          overflow: hidden; | 
				
			|||
          image { | 
				
			|||
            width: 100%; | 
				
			|||
            height: 100%; | 
				
			|||
            position: absolute; | 
				
			|||
            left: 0; | 
				
			|||
            top: 0; | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
 | 
				
			|||
      } | 
				
			|||
      .uploading { | 
				
			|||
        background: url("https://ibrand-miniprogram.oss-cn-hangzhou.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/uploading.png") no-repeat center; | 
				
			|||
        background-size:30% 30%; | 
				
			|||
        input { | 
				
			|||
          position: absolute; | 
				
			|||
          top: 0; | 
				
			|||
          bottom: 0; | 
				
			|||
          left: 0; | 
				
			|||
          right: 0; | 
				
			|||
          opacity: 0; | 
				
			|||
          width: 100%; | 
				
			|||
        } | 
				
			|||
        .add { | 
				
			|||
          font-size: 35px; | 
				
			|||
          font-weight: bold; | 
				
			|||
        } | 
				
			|||
        image { | 
				
			|||
          width: 25px; | 
				
			|||
          height: 25px; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
  .submit { | 
				
			|||
    margin-top: 10px; | 
				
			|||
    width: 100%; | 
				
			|||
    line-height: 45px; | 
				
			|||
    color: #FFFFFF; | 
				
			|||
    background-color: @globalColor; | 
				
			|||
    font-size: 16px; | 
				
			|||
    border-radius: 0px; | 
				
			|||
    border: none; | 
				
			|||
    text-align: center; | 
				
			|||
    &.disabled { | 
				
			|||
      background-color: #e0e0e0; | 
				
			|||
 | 
				
			|||
      .doing .spinner { | 
				
			|||
        display: none; | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
  } | 
				
			|||
} | 
				
			|||
@ -1,351 +0,0 @@ | 
				
			|||
<template> | 
				
			|||
<!--<import src="../../../component/rater/rater.wxml"></import>--> | 
				
			|||
 | 
				
			|||
<view id="order-comment"> | 
				
			|||
    <view class="order-items"> | 
				
			|||
        <view class="order-item" v-for="(item, index) in orderData.items" :key="index"> | 
				
			|||
            <view class="order-info mx-1px-bottom"> | 
				
			|||
                <view class="image"> | 
				
			|||
                    <image :src="item.item_meta.image"></image> | 
				
			|||
                </view> | 
				
			|||
			 | 
				
			|||
 | 
				
			|||
                <view class="texts"> | 
				
			|||
                    <view class="name">{{item.item_name}}</view> | 
				
			|||
                    <view class="spec">{{item.item_meta.specs_text}}</view> | 
				
			|||
                    <view class="content"> | 
				
			|||
                        <view class="item_start"> | 
				
			|||
                           | 
				
			|||
						     <uni-rate size="18" active-color="red"  value="5" @change="changeStar"></uni-rate> | 
				
			|||
							 | 
				
			|||
 | 
				
			|||
                        </view> | 
				
			|||
						 | 
				
			|||
				 | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
              | 
				
			|||
            <view class="comment-content mx-1px-bottom"> | 
				
			|||
                <view class="content"> | 
				
			|||
                    <textarea @input="changeEvaluate" :data-index="index" :value="item.comment" placeholder="请输入您对该商品的想法"></textarea> | 
				
			|||
                    <view class="number">还可以输入{{500 - length}}字</view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
 | 
				
			|||
            <view class="uploading-box"> | 
				
			|||
                <view class="img-item uploading-item" v-for="(itemVal,idx) in item.upload_images" :key="idx"> | 
				
			|||
                    <view class="img"> | 
				
			|||
                        <image mode="widthFix" :src="itemVal"></image> | 
				
			|||
                    </view> | 
				
			|||
                    <span class="delete" :data-index="index" :data-idx="idx" :data-images="item.upload_images" @tap="deleteImg($event,item.upload_images)"> | 
				
			|||
                        x | 
				
			|||
                    </span> | 
				
			|||
                </view> | 
				
			|||
                <view class="uploading uploading-item" @tap="upload" v-if="item.upload_images.length<5" :data-index="index"> | 
				
			|||
                    <view class="uploading-input"> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
        </view> | 
				
			|||
    </view> | 
				
			|||
 | 
				
			|||
    <view class="submit" :disabled="disabled" @tap="submit">提交评价</view> | 
				
			|||
</view> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
</template> | 
				
			|||
<script> | 
				
			|||
 | 
				
			|||
import {pageLogin, getUrl,config,is} from '@/common/js/utils.js'; | 
				
			|||
import uniRate from "@/components/score/uni-rate/uni-rate.vue" | 
				
			|||
 | 
				
			|||
export default { | 
				
			|||
  data() { | 
				
			|||
    return { | 
				
			|||
      orderData:'', | 
				
			|||
      minLength: 5, | 
				
			|||
      disabled: true, | 
				
			|||
      order_no: '', | 
				
			|||
      length: '', | 
				
			|||
	  star:5 | 
				
			|||
    }; | 
				
			|||
  }, | 
				
			|||
   | 
				
			|||
  components:{   | 
				
			|||
	 uniRate  | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onLoad(e) { | 
				
			|||
    console.log(e); | 
				
			|||
    var no = e.no; | 
				
			|||
    this.initOrderComment(no); | 
				
			|||
    this.setData({ | 
				
			|||
      order_no: no | 
				
			|||
    }); | 
				
			|||
  }, | 
				
			|||
  methods: { | 
				
			|||
    upload(e) { | 
				
			|||
      var index = e.currentTarget.dataset.index; | 
				
			|||
      var that = this; | 
				
			|||
      wx.chooseImage({ | 
				
			|||
        count: 1, | 
				
			|||
        // 默认9 | 
				
			|||
        success: function (res) { | 
				
			|||
          // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片 | 
				
			|||
          var tempFilePaths = res.tempFilePaths; | 
				
			|||
		  | 
				
			|||
          var token = that.$cookieStorage.get('user_token'); | 
				
			|||
          /* that.$http.uploadFile({ | 
				
			|||
            header: { | 
				
			|||
              'content-type': 'multipart/form-data', | 
				
			|||
              Authorization: token | 
				
			|||
            }, | 
				
			|||
            api: 'api/users/upload/avatar', | 
				
			|||
            //仅为示例,非真实的接口地址 | 
				
			|||
            filePath: tempFilePaths[0], | 
				
			|||
            name: 'avatar_file' | 
				
			|||
          }).then(res => { | 
				
			|||
            var result = JSON.parse(res.data); | 
				
			|||
            var arr = that.orderData.items[index].upload_images; | 
				
			|||
            arr.push(result.data.url); | 
				
			|||
            var uploadData = `orderData.items[${index}]`; | 
				
			|||
			 | 
				
			|||
	 | 
				
			|||
			that.orderData.items[index].upload_images=arr; | 
				
			|||
			 | 
				
			|||
          }); */ | 
				
			|||
			uni.uploadFile({ | 
				
			|||
				header: { | 
				
			|||
					Authorization: token | 
				
			|||
				}, | 
				
			|||
				url: config.GLOBAL.baseUrl + 'api/users/upload/avatar', | 
				
			|||
				filePath: tempFilePaths[0], | 
				
			|||
				fileType: 'image', | 
				
			|||
				name: 'avatar_file', | 
				
			|||
				success: res => { | 
				
			|||
					var result = JSON.parse(res.data); | 
				
			|||
					var arr = that.orderData.items[index].upload_images; | 
				
			|||
					arr.push(result.data.url); | 
				
			|||
					var uploadData = `orderData.items[${index}]`; | 
				
			|||
					 | 
				
			|||
						 | 
				
			|||
					that.orderData.items[index].upload_images=arr; | 
				
			|||
				} | 
				
			|||
			}) | 
				
			|||
        } | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    changeEvaluate(e) { | 
				
			|||
      var len = e.detail.value; | 
				
			|||
      var index = e.currentTarget.dataset.index; | 
				
			|||
 | 
				
			|||
      if (e.detail.value.length > 500) { | 
				
			|||
        wx.showModal({ | 
				
			|||
          title: '提示', | 
				
			|||
          content: '超出字数限制' | 
				
			|||
        }); | 
				
			|||
        len = len.slice(0, 500); | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      // this.setData({ | 
				
			|||
      //   [`orderData.items[${index}].comment`]: len, | 
				
			|||
      //   length: e.detail.value.length | 
				
			|||
      // }); | 
				
			|||
	   | 
				
			|||
	  this.length=e.detail.value.length; | 
				
			|||
	  this.orderData.items[index].comment=len; | 
				
			|||
	   | 
				
			|||
	   | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    deleteImg(e,images) { | 
				
			|||
      var index = e.currentTarget.dataset.index; | 
				
			|||
      var idx = e.currentTarget.dataset.idx; | 
				
			|||
      // #ifndef H5 | 
				
			|||
       | 
				
			|||
      // #endif | 
				
			|||
	  // #ifdef H5 | 
				
			|||
	 images = images | 
				
			|||
	  // #endif | 
				
			|||
      images.splice(idx, 1); | 
				
			|||
      // this.setData({ | 
				
			|||
      //   [`orderData.items[${index}].upload_images`]: images | 
				
			|||
      // }); | 
				
			|||
	   | 
				
			|||
	  	this.orderData.items[index].upload_images=images; | 
				
			|||
	   | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    allowComment() { | 
				
			|||
		 | 
				
			|||
      if (this.orderData.items && this.orderData.items.length) { | 
				
			|||
        for (let item of this.orderData.items) { | 
				
			|||
          if (item.comment.length < this.minLength) return false; | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        return true; | 
				
			|||
      } else { | 
				
			|||
        return false; | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    submit() { | 
				
			|||
      if (this.allowComment()) { | 
				
			|||
        var no = this.order_no; | 
				
			|||
        var comments = []; | 
				
			|||
        var data = this.orderData.items; | 
				
			|||
	 | 
				
			|||
        var rater = this.star; | 
				
			|||
         data.forEach((item,index) => { | 
				
			|||
             comments.push({ | 
				
			|||
                 order_no: no, | 
				
			|||
                 order_item_id: item.id, | 
				
			|||
                 contents: item.comment, | 
				
			|||
                 point: rater, | 
				
			|||
                 images:item.upload_images | 
				
			|||
             }) | 
				
			|||
         }); | 
				
			|||
        this.postSubmit(comments); | 
				
			|||
      } else { | 
				
			|||
        wx.showModal({ | 
				
			|||
          content: "请填写完成", | 
				
			|||
          showCancel: false | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
	 | 
				
			|||
	changeStar(e){ | 
				
			|||
		this.star=e.value; | 
				
			|||
	}, | 
				
			|||
	 | 
				
			|||
    postSubmit(comments) { | 
				
			|||
      wx.showLoading({ | 
				
			|||
        title: "加载中", | 
				
			|||
        mask: true | 
				
			|||
      }); | 
				
			|||
      var data = {}; | 
				
			|||
      comments.forEach((comment, index) => { | 
				
			|||
        data[index] = comment; | 
				
			|||
      }); | 
				
			|||
	  | 
				
			|||
      this.$http.post({ | 
				
			|||
        api: 'api/shopping/order/review', | 
				
			|||
        header: { | 
				
			|||
          Authorization: this.$cookieStorage.get('user_token') | 
				
			|||
        }, | 
				
			|||
        data: data | 
				
			|||
      }).then(res => { | 
				
			|||
        if (res.statusCode == 200) { | 
				
			|||
          res = res.data; | 
				
			|||
 | 
				
			|||
          if (res.status  | 
				
			|||
		    && comments.length | 
				
			|||
		  ) { | 
				
			|||
			   console.log(23423423); | 
				
			|||
            wx.showModal({ | 
				
			|||
              content: '评价成功', | 
				
			|||
              showCancel: false, | 
				
			|||
              success: res => { | 
				
			|||
                if (res.confirm || !res.cancel && !res.confirm) { | 
				
			|||
                  wx.redirectTo({ | 
				
			|||
                    url: '/pages/order/comment/comment' | 
				
			|||
                  }); | 
				
			|||
                } | 
				
			|||
              } | 
				
			|||
            }); | 
				
			|||
          } else { | 
				
			|||
            wx.showModal({ | 
				
			|||
              content: res.message || "请求失败", | 
				
			|||
              showCancel: false | 
				
			|||
            }); | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
          wx.hideLoading(); | 
				
			|||
        } else { | 
				
			|||
          wx.showModal({ | 
				
			|||
            content: "请求失败", | 
				
			|||
            showCancel: false | 
				
			|||
          }); | 
				
			|||
          wx.hideLoading(); | 
				
			|||
        } | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    initOrderComment(id) { | 
				
			|||
      wx.showLoading({ | 
				
			|||
        title: "加载中", | 
				
			|||
        mask: true | 
				
			|||
      }); | 
				
			|||
      this.$http.get({ | 
				
			|||
        api: 'api/order/' + id, | 
				
			|||
        header: { | 
				
			|||
          Authorization: this.$cookieStorage.get('user_token') | 
				
			|||
        } | 
				
			|||
      }).then(res => { | 
				
			|||
        if (res.statusCode == 200) { | 
				
			|||
          res = res.data; | 
				
			|||
 | 
				
			|||
          if (res.status) { | 
				
			|||
            // var start = Rater; | 
				
			|||
            var data = res.data; | 
				
			|||
            data.items.forEach((v, index) => { | 
				
			|||
              /*  start.init(index, { | 
				
			|||
                    value: 5 | 
				
			|||
                })*/ | 
				
			|||
              v.score = ''; | 
				
			|||
              v.comment = ''; | 
				
			|||
              v.upload_images = []; | 
				
			|||
            }); | 
				
			|||
            this.setData({ | 
				
			|||
              orderData: data | 
				
			|||
            }); | 
				
			|||
          } else { | 
				
			|||
            wx.showModal({ | 
				
			|||
              content: res.message || "请求失败", | 
				
			|||
              showCancel: false | 
				
			|||
            }); | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
          wx.hideLoading(); | 
				
			|||
        } else { | 
				
			|||
          wx.showModal({ | 
				
			|||
            content: "请求失败", | 
				
			|||
            showCancel: false | 
				
			|||
          }); | 
				
			|||
          wx.hideLoading(); | 
				
			|||
        } | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    setData: function (obj) { | 
				
			|||
      let that = this; | 
				
			|||
      let keys = []; | 
				
			|||
      let val, data; | 
				
			|||
      Object.keys(obj).forEach(function (key) { | 
				
			|||
        keys = key.split('.'); | 
				
			|||
        val = obj[key]; | 
				
			|||
        data = that.$data; | 
				
			|||
        keys.forEach(function (key2, index) { | 
				
			|||
          if (index + 1 == keys.length) { | 
				
			|||
            that.$set(data, key2, val); | 
				
			|||
          } else { | 
				
			|||
            if (!data[key2]) { | 
				
			|||
              that.$set(data, key2, {}); | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
          data = data[key2]; | 
				
			|||
        }); | 
				
			|||
      }); | 
				
			|||
    } | 
				
			|||
  }, | 
				
			|||
  computed: {}, | 
				
			|||
  watch: {} | 
				
			|||
}; | 
				
			|||
</script> | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
    @import "evaluate"; | 
				
			|||
</style> | 
				
			|||
@ -1,75 +0,0 @@ | 
				
			|||
#comments { | 
				
			|||
 | 
				
			|||
  .no-list { | 
				
			|||
    text-align: center; | 
				
			|||
    padding: 10px 0; | 
				
			|||
  } | 
				
			|||
  background: #FFFFFF; | 
				
			|||
 | 
				
			|||
  .comment_list { | 
				
			|||
    font-size: 12px; | 
				
			|||
    line-height: 20px; | 
				
			|||
    padding: 10px 15px; | 
				
			|||
    .comment_user { | 
				
			|||
      display: flex; | 
				
			|||
      align-items: center; | 
				
			|||
      .img-box { | 
				
			|||
        display: flex; | 
				
			|||
        align-items: center; | 
				
			|||
        flex: 1; | 
				
			|||
        image{ | 
				
			|||
          width: 25px; | 
				
			|||
          height: 25px; | 
				
			|||
          border-radius: 100%; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .rater { | 
				
			|||
        .vlc-rater { | 
				
			|||
          display: flex; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .user_name { | 
				
			|||
        margin-left: 15px; | 
				
			|||
        display: inline-block; | 
				
			|||
        color: #717071; | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    .comment_content { | 
				
			|||
      margin-top: 0px; | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    .comment-img { | 
				
			|||
      font-size: 0; | 
				
			|||
      margin: 5px 0; | 
				
			|||
      image{ | 
				
			|||
        display: inline-block; | 
				
			|||
        width: 25%; | 
				
			|||
        //height: 100%; | 
				
			|||
        padding: 0 5px; | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    .comment_time { | 
				
			|||
      display: flex; | 
				
			|||
      align-items: center; | 
				
			|||
      margin: 10px 0; | 
				
			|||
      .time { | 
				
			|||
        margin-right: 15px; | 
				
			|||
      } | 
				
			|||
      color: #838282; | 
				
			|||
    } | 
				
			|||
    .all-comment { | 
				
			|||
      text-align: center; | 
				
			|||
      .text { | 
				
			|||
        margin-top: 10px; | 
				
			|||
        display: inline-block; | 
				
			|||
        font-size: 10px; | 
				
			|||
        color: #4A4A4A; | 
				
			|||
        border: 1px solid #4A4A4A; | 
				
			|||
        border-radius: 3px; | 
				
			|||
        padding: 2px 4px; | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
  } | 
				
			|||
} | 
				
			|||
@ -1,163 +0,0 @@ | 
				
			|||
<template> | 
				
			|||
 | 
				
			|||
<!--<import src="../../../component/rater/rater.wxml"></import>--> | 
				
			|||
 | 
				
			|||
<view id="comments"> | 
				
			|||
    <view class="content"> | 
				
			|||
        <view class="no-list" v-if="!list[0].length && init"> | 
				
			|||
            暂无数据 | 
				
			|||
        </view> | 
				
			|||
        <view v-for="(items, idx) in list" :key="idx"> | 
				
			|||
            <view class="comment_list mx-1px-bottom" v-for="(item, index) in list[idx]" :key="index"> | 
				
			|||
                <view class="comment_user"> | 
				
			|||
                    <view class="img-box"> | 
				
			|||
                        <image :src="item.user.avatar"></image> | 
				
			|||
                        <view class="user_name">{{item.user.nick_name}}</view> | 
				
			|||
                    </view> | 
				
			|||
                    <view class="rater"> | 
				
			|||
                        <!--<template is="rater" data="{{ ...$vlc.rater[item.id] }}"/>--> | 
				
			|||
						<uni-rate size="18" disabled="true" active-color="red"  :value="item.point"></uni-rate> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
                <view class="comment_time"> | 
				
			|||
                    <view class="time"> | 
				
			|||
                        {{item.updated_at}} | 
				
			|||
                    </view> | 
				
			|||
                    <view class="model"> | 
				
			|||
                        {{item.item_meta.specs_text!=undefined?item.item_meta.specs_text:''}} | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
                <view class="comment_content"> | 
				
			|||
                    {{item.contents}} | 
				
			|||
                </view> | 
				
			|||
                <view class="comment-img"> | 
				
			|||
                    <image :src="item" mode="widthFix" alt v-for="(item, index) in item.pic_list" :key="index"></image> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
        </view> | 
				
			|||
    </view> | 
				
			|||
</view> | 
				
			|||
</template> | 
				
			|||
<script> | 
				
			|||
import {pageLogin, getUrl,config,is} from '@/common/js/utils.js'; | 
				
			|||
import uniRate from "@/components/score/uni-rate/uni-rate.vue" | 
				
			|||
 | 
				
			|||
export default { | 
				
			|||
  data() { | 
				
			|||
    return { | 
				
			|||
      hasMore: true, | 
				
			|||
      init: false, | 
				
			|||
      list: [], | 
				
			|||
      page: '', | 
				
			|||
      id: '' | 
				
			|||
    }; | 
				
			|||
  }, | 
				
			|||
   | 
				
			|||
   components: { | 
				
			|||
	   uniRate | 
				
			|||
	}, | 
				
			|||
  // 加载更多 | 
				
			|||
  onReachBottom() { | 
				
			|||
    if (this.hasMore) { | 
				
			|||
      var page = this.page + 1; | 
				
			|||
      this.queryCommodityComments(this.id, page); | 
				
			|||
    } else { | 
				
			|||
      wx.showToast({ | 
				
			|||
        image: '../../../static/error.png', | 
				
			|||
        title: '再拉也没有啦' | 
				
			|||
      }); | 
				
			|||
    } | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onLoad(e) { | 
				
			|||
    wx.showLoading({ | 
				
			|||
      title: "加载中", | 
				
			|||
      mask: true | 
				
			|||
    }); | 
				
			|||
    this.queryCommodityComments(e.id, 1); | 
				
			|||
    this.setData({ | 
				
			|||
      id: e.id | 
				
			|||
    }); | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  components: {}, | 
				
			|||
  props: {}, | 
				
			|||
  methods: { | 
				
			|||
    // 请求评论列表 | 
				
			|||
    queryCommodityComments(id, page = 1) { | 
				
			|||
      this.$http.get({ | 
				
			|||
        api: 'api/store/detail/' + id + '/comments', | 
				
			|||
        data: { | 
				
			|||
          page: page | 
				
			|||
        } | 
				
			|||
      }).then(res => { | 
				
			|||
        if (res.statusCode == 200) { | 
				
			|||
          res = res.data; | 
				
			|||
 | 
				
			|||
          if (res.status) { | 
				
			|||
            var pages = res.meta.pagination; | 
				
			|||
            var current_page = pages.current_page; | 
				
			|||
            var total_pages = pages.total_pages; | 
				
			|||
            this.setData({ | 
				
			|||
              // [`list[${page - 1}]`]: res.data, | 
				
			|||
              init: true, | 
				
			|||
              page: current_page, | 
				
			|||
              hasMore: current_page < total_pages | 
				
			|||
            }); | 
				
			|||
			this.list[[page-1]]=res.data; | 
				
			|||
			 | 
				
			|||
          } else { | 
				
			|||
            wx.showModal({ | 
				
			|||
              title: '', | 
				
			|||
              content: '请求失败', | 
				
			|||
              showCancel: false | 
				
			|||
            }); | 
				
			|||
          } | 
				
			|||
        } else { | 
				
			|||
          wx.showModal({ | 
				
			|||
            title: '', | 
				
			|||
            content: '请求失败', | 
				
			|||
            showCancel: false | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        wx.hideLoading(); | 
				
			|||
         this.show=false; | 
				
			|||
      }, err => { | 
				
			|||
        wx.hideLoading(); | 
				
			|||
        // this.setData({ | 
				
			|||
        //   show: false | 
				
			|||
        // }); | 
				
			|||
		this.show=false; | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    setData: function (obj) { | 
				
			|||
      let that = this; | 
				
			|||
      let keys = []; | 
				
			|||
      let val, data; | 
				
			|||
      Object.keys(obj).forEach(function (key) { | 
				
			|||
        keys = key.split('.'); | 
				
			|||
        val = obj[key]; | 
				
			|||
        data = that.$data; | 
				
			|||
        keys.forEach(function (key2, index) { | 
				
			|||
          if (index + 1 == keys.length) { | 
				
			|||
            that.$set(data, key2, val); | 
				
			|||
          } else { | 
				
			|||
            if (!data[key2]) { | 
				
			|||
              that.$set(data, key2, {}); | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
          data = data[key2]; | 
				
			|||
        }); | 
				
			|||
      }); | 
				
			|||
    } | 
				
			|||
  }, | 
				
			|||
  computed: {}, | 
				
			|||
  watch: {} | 
				
			|||
}; | 
				
			|||
</script> | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
    @import "comment"; | 
				
			|||
</style> | 
				
			|||
@ -1,3 +0,0 @@ | 
				
			|||
.invoice_detail{ | 
				
			|||
	 | 
				
			|||
} | 
				
			|||
@ -1,196 +0,0 @@ | 
				
			|||
<template> | 
				
			|||
	<view class="invoice_detail"> | 
				
			|||
		<view class="header_box"> | 
				
			|||
			<view class="item"> | 
				
			|||
				<view class="name"> | 
				
			|||
					抬头类型 | 
				
			|||
				</view> | 
				
			|||
				<view class="type"> | 
				
			|||
					<radio-group @change="change($event)" style="display: flex;"> | 
				
			|||
						<view class="type-item"> | 
				
			|||
							<label class="checkbox" style="margin-right:10px;"> | 
				
			|||
								<radio checked="true" value="personal" /> | 
				
			|||
								<text>个人</text> | 
				
			|||
							</label> | 
				
			|||
						</view> | 
				
			|||
						<view class="type-item"> | 
				
			|||
							<label class="checkbox"> | 
				
			|||
								<radio value="enterprise" /> | 
				
			|||
								<text>单位</text> | 
				
			|||
							</label> | 
				
			|||
						</view> | 
				
			|||
					</radio-group> | 
				
			|||
				</view> | 
				
			|||
			</view> | 
				
			|||
			<view class="item"> | 
				
			|||
				<view class="name">发票抬头</view> | 
				
			|||
				<view class="input-box"> | 
				
			|||
					<input type="text" placeholder="抬头名称" placeholder-class="input-placeholder" v-model="name" /> | 
				
			|||
				</view> | 
				
			|||
			</view> | 
				
			|||
			<!-- 企业的选择 --> | 
				
			|||
			<view class="conpany" v-if="type == 'enterprise'"> | 
				
			|||
				<view class="item"> | 
				
			|||
					<view class="name">税号</view> | 
				
			|||
					<view class="input-box"> | 
				
			|||
						<input type="text" placeholder="纳税人识别号" placeholder-class="input-placeholder" v-model="number" /> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
				<view class="item"> | 
				
			|||
					<view class="name">开户银行</view> | 
				
			|||
					<view class="input-box"> | 
				
			|||
						<input type="text" placeholder="选填" placeholder-class="input-placeholder" v-model="bank" /> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
				<view class="item"> | 
				
			|||
					<view class="name">银行账号</view> | 
				
			|||
					<view class="input-box"> | 
				
			|||
						<input type="text" placeholder="选填" placeholder-class="input-placeholder" v-model="bank_number" /> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
				<view class="item"> | 
				
			|||
					<view class="name">企业地址</view> | 
				
			|||
					<view class="input-box"> | 
				
			|||
						<input type="text" placeholder="选填" placeholder-class="input-placeholder" v-model="address" /> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
				<view class="item"> | 
				
			|||
					<view class="name">企业电话</view> | 
				
			|||
					<view class="input-box"> | 
				
			|||
						<input type="text" placeholder="选填" placeholder-class="input-placeholder" v-model="phone" /> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
			</view> | 
				
			|||
 | 
				
			|||
		</view> | 
				
			|||
 | 
				
			|||
		<view class="content"> | 
				
			|||
			<view class="detail"> | 
				
			|||
				<view class="name">发票明细:</view> | 
				
			|||
			</view> | 
				
			|||
			<view class="tips"> | 
				
			|||
				开票金额为用户实际支付金额(不含礼品卡、优惠券、积分抵扣) | 
				
			|||
			</view> | 
				
			|||
			 | 
				
			|||
		</view> | 
				
			|||
		<view class="content" @click="jumpback"> | 
				
			|||
			<view class="detail"> | 
				
			|||
				<view class="name">本次不开具发票,继续下单</view> | 
				
			|||
				<view class="iconfont icon--xiangyoujiantou"></view> | 
				
			|||
			</view> | 
				
			|||
			 | 
				
			|||
		</view> | 
				
			|||
		<!-- 完成按钮 --> | 
				
			|||
		<view class="btn-box" @click="submit">完成</view> | 
				
			|||
	</view> | 
				
			|||
</template> | 
				
			|||
 | 
				
			|||
<script> | 
				
			|||
	export default { | 
				
			|||
		data() { | 
				
			|||
			return { | 
				
			|||
				type: 'personal', //发票;类型 | 
				
			|||
				name: '', //发票抬头 | 
				
			|||
				number: '', //税号 | 
				
			|||
				bank: '', //开户银行 | 
				
			|||
				bank_number: '', //银行账号, | 
				
			|||
				phone: '', //企业电话 | 
				
			|||
				address: '', //企业地址 | 
				
			|||
 | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		onLoad() { | 
				
			|||
 | 
				
			|||
		}, | 
				
			|||
		onShow() { | 
				
			|||
 | 
				
			|||
		}, | 
				
			|||
		methods: { | 
				
			|||
			change(e) { | 
				
			|||
				this.type = e.detail.value; | 
				
			|||
			}, | 
				
			|||
			// 点击完成时候所完成的动作 | 
				
			|||
			submit() { | 
				
			|||
				var message = ''; | 
				
			|||
				if (this.type == 'personal') { | 
				
			|||
					if (this.name) { | 
				
			|||
						var data = { | 
				
			|||
							type: 'personal', | 
				
			|||
							name: this.name | 
				
			|||
						} | 
				
			|||
						this.addInvoiceInfo(data); | 
				
			|||
					} else { | 
				
			|||
						message = "请输入抬头名称" | 
				
			|||
						wx.showModal({ | 
				
			|||
							content: message, | 
				
			|||
							showCancel: false | 
				
			|||
						}) | 
				
			|||
						return | 
				
			|||
					} | 
				
			|||
				} | 
				
			|||
				if (this.type == 'enterprise') { | 
				
			|||
					if(!this.name){ | 
				
			|||
						message = "请输入抬头名称" | 
				
			|||
						wx.showModal({ | 
				
			|||
							content: message, | 
				
			|||
							showCancel: false | 
				
			|||
						}) | 
				
			|||
						return | 
				
			|||
					} | 
				
			|||
					var regExp = /^([1-9]{1})(\d{15}|\d{18})$/; | 
				
			|||
					if (!this.number) { | 
				
			|||
						message = "请输入纳税人识别号" | 
				
			|||
						wx.showModal({ | 
				
			|||
							content: message, | 
				
			|||
							showCancel: false | 
				
			|||
						}) | 
				
			|||
						return | 
				
			|||
					} | 
				
			|||
					if (this.bank_number) { | 
				
			|||
						if (!regExp.test(this.bank_number)) { | 
				
			|||
							message = "请输入正确的银行卡号", | 
				
			|||
								wx.showModal({ | 
				
			|||
									content: message, | 
				
			|||
									showCancel: false | 
				
			|||
								}) | 
				
			|||
							return | 
				
			|||
						} | 
				
			|||
					} | 
				
			|||
					var data = { | 
				
			|||
						type: 'enterprise', | 
				
			|||
						name:this.name, | 
				
			|||
						number: this.number, | 
				
			|||
						bank: this.bank, | 
				
			|||
						bank_number: this.bank_number, | 
				
			|||
						phone: this.phone, | 
				
			|||
						address: this.address | 
				
			|||
					} | 
				
			|||
					this.addInvoiceInfo(data); | 
				
			|||
 | 
				
			|||
				} | 
				
			|||
			}, | 
				
			|||
			// 向后端发送发票信息 | 
				
			|||
			addInvoiceInfo(info) { | 
				
			|||
				var data = this.$cookieStorage.get('order_form'); | 
				
			|||
				 | 
				
			|||
					data.invoice = info; | 
				
			|||
					this.$cookieStorage.set('order_form', data); | 
				
			|||
					wx.navigateBack(); | 
				
			|||
		 | 
				
			|||
			}, | 
				
			|||
			// 返回 | 
				
			|||
			jumpback(){ | 
				
			|||
				var data = this.$cookieStorage.get('order_form'); | 
				
			|||
				data.invoice = ""; | 
				
			|||
				this.$cookieStorage.set('order_form', data); | 
				
			|||
				wx.navigateBack(); | 
				
			|||
			} | 
				
			|||
				 | 
				
			|||
 | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
	@import "invoiceDetail"; | 
				
			|||
</style> | 
				
			|||
@ -1,304 +0,0 @@ | 
				
			|||
#store-list{ | 
				
			|||
  .commodity-top{ | 
				
			|||
    position: fixed; | 
				
			|||
    top: 0; | 
				
			|||
    width: 100%; | 
				
			|||
    z-index: 10; | 
				
			|||
    .sidebar{ | 
				
			|||
      background: #FFFFFF; | 
				
			|||
      font-size: 18px; | 
				
			|||
      width: 100%; | 
				
			|||
      height: 50px; | 
				
			|||
      display: flex; | 
				
			|||
      align-items: center; | 
				
			|||
 | 
				
			|||
      .sidebar-left{ | 
				
			|||
        flex: 1; | 
				
			|||
        height: 100%; | 
				
			|||
 | 
				
			|||
        span{ | 
				
			|||
          display: inline-block; | 
				
			|||
          line-height: 50px; | 
				
			|||
          height: 100%; | 
				
			|||
          padding-left: 15px; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .sidebar-right{ | 
				
			|||
        width: 120px; | 
				
			|||
        height: 100%; | 
				
			|||
        overflow: hidden; | 
				
			|||
 | 
				
			|||
        view{ | 
				
			|||
          display: inline-block; | 
				
			|||
          width: 40px; | 
				
			|||
          height: 100%; | 
				
			|||
          text-align: center; | 
				
			|||
          line-height: 50px; | 
				
			|||
          font-size: 20px; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
    .filter-box{ | 
				
			|||
      display: flex; | 
				
			|||
      justify-content: space-between; | 
				
			|||
      align-items: center; | 
				
			|||
      font-size: 14px; | 
				
			|||
      background: #FFFFFF; | 
				
			|||
 | 
				
			|||
      .filter-item{ | 
				
			|||
        display: flex; | 
				
			|||
        flex: 1; | 
				
			|||
        width: 0%; | 
				
			|||
        justify-content: center; | 
				
			|||
        align-items: center; | 
				
			|||
        line-height: 40px; | 
				
			|||
        height: 40px; | 
				
			|||
 | 
				
			|||
        .left{ | 
				
			|||
          flex: 1; | 
				
			|||
          margin-left: 20px; | 
				
			|||
          text-align: center; | 
				
			|||
 | 
				
			|||
          &.active { | 
				
			|||
            color: #099FFF; | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
        } | 
				
			|||
        &.dis { | 
				
			|||
          color: #eeeeee; | 
				
			|||
        } | 
				
			|||
        .right{ | 
				
			|||
          width: 20px; | 
				
			|||
          height: 100%; | 
				
			|||
          margin-right: 5px; | 
				
			|||
          background: url("https://ibrand-miniprogram.oss-cn-hangzhou.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/ico-filter.png") no-repeat center; | 
				
			|||
          background-size: 8px 12px; | 
				
			|||
 | 
				
			|||
          &.asc { | 
				
			|||
            background-image: url("https://ibrand-miniprogram.oss-cn-hangzhou.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/ico-filter1.png"); | 
				
			|||
            transform: rotate(180deg); | 
				
			|||
          } | 
				
			|||
          &.desc { | 
				
			|||
            background-image: url("https://ibrand-miniprogram.oss-cn-hangzhou.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/ico-filter1.png"); | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
  } | 
				
			|||
  .commodity-bottom{ | 
				
			|||
    //height: 100%; | 
				
			|||
    font-size: 0; | 
				
			|||
    box-sizing: border-box; | 
				
			|||
    padding: 90px 5px 20px 5px; | 
				
			|||
    .commodity-out{ | 
				
			|||
      width: 50%; | 
				
			|||
      display: inline-block; | 
				
			|||
      font-size: 12px; | 
				
			|||
      padding: 10px 5px 0 5px; | 
				
			|||
      box-sizing: border-box; | 
				
			|||
      .commodity-box{ | 
				
			|||
        background: #ffffff; | 
				
			|||
        overflow: hidden; | 
				
			|||
        width: 100%; | 
				
			|||
        padding: 10px; | 
				
			|||
        box-sizing: border-box; | 
				
			|||
        font-size: 14px; | 
				
			|||
 | 
				
			|||
        .commodity-img { | 
				
			|||
          overflow: hidden; | 
				
			|||
		  text-align: center; | 
				
			|||
          image{ | 
				
			|||
            width: 290rpx; | 
				
			|||
            //height: 310rpx; | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
        .commodity-name{ | 
				
			|||
          overflow: hidden; | 
				
			|||
          text-overflow: ellipsis; | 
				
			|||
          white-space: nowrap; | 
				
			|||
        } | 
				
			|||
        .commodity-money{ | 
				
			|||
          display: flex; | 
				
			|||
          align-items: center; | 
				
			|||
          margin-top: 10px; | 
				
			|||
          overflow: hidden; | 
				
			|||
          text-overflow: ellipsis; | 
				
			|||
          white-space: nowrap; | 
				
			|||
          height: 25px; | 
				
			|||
          .money{ | 
				
			|||
            color: #ED3327; | 
				
			|||
            margin-top: 2px; | 
				
			|||
			 .origin-money{ | 
				
			|||
			              color: #AAAAAA; | 
				
			|||
			              font-size: 12px; | 
				
			|||
			              display: inline-block; | 
				
			|||
			              padding-left:2px; | 
				
			|||
			              text-decoration: line-through; | 
				
			|||
			            } | 
				
			|||
			 | 
				
			|||
          } | 
				
			|||
          .discount-tags{ | 
				
			|||
            font-size: 0; | 
				
			|||
            overflow: hidden; | 
				
			|||
 | 
				
			|||
            .tags-item{ | 
				
			|||
              display: block; | 
				
			|||
              float: left; | 
				
			|||
              color: #ffffff; | 
				
			|||
              background: #EB7073; | 
				
			|||
              border-radius: 2px; | 
				
			|||
              padding: 2px 5px; | 
				
			|||
              font-size: 12px; | 
				
			|||
              margin: 0 0 0px 5px; | 
				
			|||
 | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
          .vip-type { | 
				
			|||
            width: 15px; | 
				
			|||
            height: 15px; | 
				
			|||
            margin-left: 5px; | 
				
			|||
            image { | 
				
			|||
              width: 100%; | 
				
			|||
              height: 100%; | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
	.commodity-out-vertical{ | 
				
			|||
		display: flex; | 
				
			|||
		align-items: center; | 
				
			|||
		padding-right:5px; | 
				
			|||
		background-color: #FFFFFF; | 
				
			|||
		margin-top: 10px; | 
				
			|||
		.img-box{ | 
				
			|||
			width:110px; | 
				
			|||
			margin-right: 10px; | 
				
			|||
			image{ | 
				
			|||
				vertical-align: middle; | 
				
			|||
				width: 100%; | 
				
			|||
			} | 
				
			|||
		} | 
				
			|||
		.right-box{ | 
				
			|||
			flex: 1; | 
				
			|||
			overflow: hidden; | 
				
			|||
			.goods-name{ | 
				
			|||
				color: #111111; | 
				
			|||
				font-size: 14px; | 
				
			|||
				overflow: hidden; | 
				
			|||
				text-overflow: ellipsis; | 
				
			|||
				display: -webkit-box; | 
				
			|||
				-webkit-line-clamp:2; | 
				
			|||
				-webkit-box-orient: vertical; | 
				
			|||
				padding-top: 10px; | 
				
			|||
			} | 
				
			|||
			.goods-money{ | 
				
			|||
				color:#FB5054; | 
				
			|||
				font-size: 14px; | 
				
			|||
				padding:26px 0px 13px 0; | 
				
			|||
				.origin-money{ | 
				
			|||
					color: #AAAAAA; | 
				
			|||
					font-size: 12px; | 
				
			|||
					display: inline-block; | 
				
			|||
					padding-left:2px; | 
				
			|||
					text-decoration: line-through; | 
				
			|||
				} | 
				
			|||
			} | 
				
			|||
			 | 
				
			|||
			 | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
    .loadingbox{ | 
				
			|||
      margin-top: 10px; | 
				
			|||
      height: 40px; | 
				
			|||
      line-height: 40px; | 
				
			|||
      text-align: center; | 
				
			|||
      font-size:14px; | 
				
			|||
    } | 
				
			|||
  } | 
				
			|||
} | 
				
			|||
 | 
				
			|||
.right-filter-box{ | 
				
			|||
  overflow: auto; | 
				
			|||
  position: fixed; | 
				
			|||
  top: 0; | 
				
			|||
  bottom: 0; | 
				
			|||
  width: 100%; | 
				
			|||
  padding: 6px; | 
				
			|||
  background: #FFFFFF; | 
				
			|||
  font-size: 14px; | 
				
			|||
  //overflow: hidden; | 
				
			|||
  z-index: 10; | 
				
			|||
  //transform: translateX(100%); | 
				
			|||
  .box{ | 
				
			|||
    height: 100%; | 
				
			|||
    .title{ | 
				
			|||
      padding: 10px 5px; | 
				
			|||
    } | 
				
			|||
    .list{ | 
				
			|||
      font-size: 0; | 
				
			|||
      .list-block{ | 
				
			|||
        display: inline-block; | 
				
			|||
        width: 33.33%; | 
				
			|||
        font-size: 12px; | 
				
			|||
        margin-bottom: 10px; | 
				
			|||
        padding: 0 5px; | 
				
			|||
 | 
				
			|||
        .selected{ | 
				
			|||
          background-color: #fff; | 
				
			|||
          border-color: #f9be00; | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        view{ | 
				
			|||
          display: block; | 
				
			|||
          height: 34px; | 
				
			|||
          line-height: 30px; | 
				
			|||
          text-align: center; | 
				
			|||
          background: #ededed; | 
				
			|||
          width: 100%; | 
				
			|||
          border: 2px solid #ededed; | 
				
			|||
          box-sizing: border-box; | 
				
			|||
          white-space: nowrap; | 
				
			|||
          overflow: hidden; | 
				
			|||
          text-overflow: ellipsis; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
      .price-inputs{ | 
				
			|||
        padding: 0 5px; | 
				
			|||
        display: flex; | 
				
			|||
 | 
				
			|||
        input{ | 
				
			|||
          display: block; | 
				
			|||
          text-align: center; | 
				
			|||
          width: 31%; | 
				
			|||
          height: 35px; | 
				
			|||
          outline: none; | 
				
			|||
          background: #f8f8f8; | 
				
			|||
        } | 
				
			|||
        .minus{ | 
				
			|||
          font-size: 12px; | 
				
			|||
          height: 35px; | 
				
			|||
          line-height: 35px; | 
				
			|||
          text-align: center; | 
				
			|||
          padding: 0 5px; | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
    .button-box{ | 
				
			|||
      display: flex; | 
				
			|||
      align-items: center; | 
				
			|||
      justify-content: space-between; | 
				
			|||
      font-size: 12px; | 
				
			|||
      margin: 15px 0; | 
				
			|||
 | 
				
			|||
      button{ | 
				
			|||
        width: 0%; | 
				
			|||
        height: 40px; | 
				
			|||
        line-height: 40px; | 
				
			|||
        text-align: center; | 
				
			|||
        flex: 1; | 
				
			|||
        margin: 0 8px; | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
  } | 
				
			|||
} | 
				
			|||
@ -1,755 +0,0 @@ | 
				
			|||
<template> | 
				
			|||
 | 
				
			|||
<view> | 
				
			|||
   <view id="store-list"> | 
				
			|||
        <view class="commodity-top" catchtouchmove="move"> | 
				
			|||
            <view class="sidebar mx-1px-bottom"> | 
				
			|||
                <view class="sidebar-left"> | 
				
			|||
                <span class="iconfont icon-fenzu" @tap="classF"> | 
				
			|||
 | 
				
			|||
                </span> | 
				
			|||
                </view> | 
				
			|||
                <view class="sidebar-right"> | 
				
			|||
                    <view class="right-seek iconfont icon-sousuo" @tap="search"> | 
				
			|||
 | 
				
			|||
                    </view> | 
				
			|||
                    <view class="right-cart iconfont icon-gouwuche" @tap="cart"> | 
				
			|||
 | 
				
			|||
                    </view> | 
				
			|||
					<view class="right-cart iconfont icon-qiehuan1" v-if="arrangement == 'rank'" @tap="changeRange"> | 
				
			|||
					 | 
				
			|||
					</view> | 
				
			|||
					<view class="right-cart iconfont icon-qiehuanduotuSVG" v-if="arrangement == 'vertical'" @tap="changeRange"> | 
				
			|||
					 | 
				
			|||
					</view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
            <view class="filter-box"> | 
				
			|||
                <view class="filter-item mx-1px-right" data-type="updated_at" @tap="changeOrderBy"> | 
				
			|||
                    <view class="left" :class=" orderBy === 'updated_at' ? 'active' : ''">最新</view> | 
				
			|||
                    <view class="right" :class="(orderBy === 'updated_at' && sort === 'desc') ? 'desc' : ''"></view> | 
				
			|||
                </view> | 
				
			|||
                <view class="filter-item mx-1px-right" data-type="sell_price" @tap="changeOrderBy"> | 
				
			|||
                    <view class="left" :class=" orderBy === 'sell_price' ? 'active' : ''">价格</view> | 
				
			|||
                    <view class="right" :class="(orderBy === 'sell_price' && sort === 'desc') ? 'desc' : ''"></view> | 
				
			|||
                </view> | 
				
			|||
                <view class="filter-item mx-1px-right" data-type="sale" @tap="changeOrderBy"> | 
				
			|||
                    <view class="left" :class=" orderBy === 'sale' ? 'active' : ''">销量</view> | 
				
			|||
                    <view class="right" :class="(orderBy === 'sale' && sort === 'desc') ? 'desc' : ''"></view> | 
				
			|||
                </view> | 
				
			|||
                <view class="filter-item big-filter" :class="c_id ? '' : 'dis'" @tap="showFilterF"> | 
				
			|||
                    筛选 ▼ | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
        </view> | 
				
			|||
        | 
				
			|||
        <view class="commodity-bottom" :hidden="showFilter"> | 
				
			|||
			<!-- 一排显示1个 --> | 
				
			|||
            <view v-for="(items, idx) in storeList" :key="idx" v-if="arrangement == 'rank'"> | 
				
			|||
                <view class="commodity-out" :data-id="item.id" v-for="(item, index) in storeList[idx]" :key="index" @tap="jump"> | 
				
			|||
                    <view class="commodity-box"> | 
				
			|||
                        <view class="commodity-img"> | 
				
			|||
                            <image mode="widthFix" :src="item.img"></image> | 
				
			|||
                        </view> | 
				
			|||
                        <view class="commodity-name"> | 
				
			|||
                            {{item.name}} | 
				
			|||
                        </view> | 
				
			|||
                        <view class="commodity-money"> | 
				
			|||
                            <view class="money"> | 
				
			|||
                                ¥{{item.sell_price}} | 
				
			|||
								<view class="origin-money"> | 
				
			|||
									¥{{item.market_price}} | 
				
			|||
								</view> | 
				
			|||
                            </view> | 
				
			|||
                            <!-- <view class="discount-tags"> | 
				
			|||
                                <span class="tags-item" v-for="(tags, index) in item.discount_tags" :key="index" >{{tags}}</span> | 
				
			|||
                            </view> --> | 
				
			|||
                 | 
				
			|||
                        </view> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
			<!-- 一排显示一个 --> | 
				
			|||
			<view v-for="(items, idx) in storeList" :key="idx"  v-if="arrangement == 'vertical'"> | 
				
			|||
				<view class="commodity-out-vertical" :data-id="item.id" v-for="(item, index) in storeList[idx]" :key="index" @tap="jump"> | 
				
			|||
					<view class="img-box"> | 
				
			|||
						<image mode="widthFix" :src="item.img"></image> | 
				
			|||
					</view> | 
				
			|||
					<view class="right-box"> | 
				
			|||
						<view class="goods-name"> | 
				
			|||
							{{item.name}} | 
				
			|||
						</view> | 
				
			|||
						<view class="goods-money"> | 
				
			|||
							¥{{item.sell_price}} | 
				
			|||
							<view class="origin-money"> | 
				
			|||
								¥{{item.market_price}} | 
				
			|||
							</view> | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
			</view> | 
				
			|||
 | 
				
			|||
           <view class="loadingbox" :hidden="!show"> | 
				
			|||
                正在加载下一页数据 | 
				
			|||
            </view> | 
				
			|||
 | 
				
			|||
         </view> | 
				
			|||
 | 
				
			|||
    </view> | 
				
			|||
	 | 
				
			|||
	 | 
				
			|||
	 | 
				
			|||
	 | 
				
			|||
    <view class="right-filter-box" :hidden="!showFilter"> | 
				
			|||
 | 
				
			|||
        <view class="box"> | 
				
			|||
            <view> | 
				
			|||
                <view class="title"> | 
				
			|||
                    价格区间 | 
				
			|||
                </view> | 
				
			|||
                <view class="list"> | 
				
			|||
                    <view class="list-block"> | 
				
			|||
                        <view data-num="200-500" :class="shadows.price == '200-500' ? 'selected' : ''" @tap="checkPrice">200-500元</view> | 
				
			|||
                    </view> | 
				
			|||
                    <view class="list-block"> | 
				
			|||
                        <view data-num="501-1000" :class="shadows.price == '501-1000' ? 'selected' : ''" @tap="checkPrice">501-1000元</view> | 
				
			|||
                    </view> | 
				
			|||
                    <view class="list-block"> | 
				
			|||
                        <view data-num="1001-1500" :class="shadows.price == '1001-1500' ? 'selected' : ''" @tap="checkPrice">1001-1500元</view> | 
				
			|||
                    </view> | 
				
			|||
                    <view class="list-block"> | 
				
			|||
                        <view data-num="1501-2000" :class="shadows.price == '1501-2000' ? 'selected' : ''" @tap="checkPrice">1501-2000元</view> | 
				
			|||
                    </view> | 
				
			|||
                    <view class="list-block"> | 
				
			|||
                        <view data-num="2000-" :class="shadows.price == '2000-' ? 'selected' : ''" @tap="checkPrice">2000-元以上</view> | 
				
			|||
                    </view> | 
				
			|||
 | 
				
			|||
               <!--    <view class="price-inputs"> | 
				
			|||
                    <input type="number" data-type="0" bindinput="modifyPrice" /> | 
				
			|||
                    <view class="minus"> | 
				
			|||
                      - | 
				
			|||
                    </view> | 
				
			|||
                    <input type="number" data-type="1" bindinput="modifyPrice" /> | 
				
			|||
                    </view> --> | 
				
			|||
 | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
           <!-- #ifdef APP-PLUS || MP-WEIXIN --> | 
				
			|||
		   <view v-for="(item, index) in filter" :key="index"> | 
				
			|||
		       <view class="title"> | 
				
			|||
		           {{item.key}} | 
				
			|||
		       </view> | 
				
			|||
		       <view class="list"> | 
				
			|||
		           <view class="list-block" v-for="(obj, index) in item.values" :key="index"> | 
				
			|||
		               <view :class="!!selections[obj.id] ? 'selected' : ''" :data-id="obj.id" :data-type="obj" @tap="check"> | 
				
			|||
		                   {{obj.text}} | 
				
			|||
		               </view> | 
				
			|||
		           </view>  | 
				
			|||
		       </view> | 
				
			|||
		   </view> | 
				
			|||
      | 
				
			|||
           <!-- #endif --> | 
				
			|||
		    | 
				
			|||
		   <!-- #ifdef H5 --> | 
				
			|||
		   <view v-for="(item, index) in filter" :key="index"> | 
				
			|||
		       <view class="title"> | 
				
			|||
		           {{item.key}} | 
				
			|||
		       </view> | 
				
			|||
		       <view class="list"> | 
				
			|||
		           <view class="list-block" v-for="(obj, index) in item.values" :key="index"> | 
				
			|||
		               <view :class="!!selections[obj.id] ? 'selected' : ''" :data-id="obj.id" :data-type="obj" @tap="check(obj)"> | 
				
			|||
		                   {{obj.text}} | 
				
			|||
		               </view> | 
				
			|||
		           </view> | 
				
			|||
		       </view> | 
				
			|||
		   </view> | 
				
			|||
		    | 
				
			|||
		   <!-- #endif --> | 
				
			|||
 | 
				
			|||
            <view class="button-box"> | 
				
			|||
                <button type="default" @tap="cancel">取消</button> | 
				
			|||
                <button type="primary" @tap="confirm">确定</button> | 
				
			|||
            </view> | 
				
			|||
        </view> | 
				
			|||
    </view> | 
				
			|||
</view> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
</template> | 
				
			|||
<script> | 
				
			|||
var app = getApp(); | 
				
			|||
import {pageLogin, getUrl,config,is} from '@/common/js/utils.js'; | 
				
			|||
import Animation from '@/common/js/animation.js'; | 
				
			|||
 | 
				
			|||
export default { | 
				
			|||
  data() { | 
				
			|||
    return { | 
				
			|||
      page: 1, | 
				
			|||
      storeList: [], | 
				
			|||
      orderBy: '', | 
				
			|||
      sort: '', | 
				
			|||
      c_id: '', | 
				
			|||
      meta: '', | 
				
			|||
      show: false, | 
				
			|||
      showFilter: false, | 
				
			|||
      filter: null, | 
				
			|||
	  price:{}, | 
				
			|||
	  priceCache:{}, | 
				
			|||
        shadows: {}, | 
				
			|||
        selections:{}, | 
				
			|||
		arrangement:'rank',//判断当前的排列方式,是横列 还是 竖列 | 
				
			|||
    }; | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onReachBottom() { | 
				
			|||
    var hasMore = this.meta.pagination.total_pages > this.meta.pagination.current_page; | 
				
			|||
 | 
				
			|||
    if (!this.showFilter) { | 
				
			|||
      if (hasMore) { | 
				
			|||
        this.setData({ | 
				
			|||
          show: true | 
				
			|||
        }); | 
				
			|||
        var query = { | 
				
			|||
          sort: this.sort, | 
				
			|||
          orderBy: this.orderBy, | 
				
			|||
          c_id: this.c_id | 
				
			|||
        }; | 
				
			|||
        var page = this.meta.pagination.current_page + 1; | 
				
			|||
        this.queryCommodityList(query, page); | 
				
			|||
      } else { | 
				
			|||
        wx.showToast({ | 
				
			|||
          image: '../../../static/error.png', | 
				
			|||
          title: '再拉也没有啦' | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
    } | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onReady() { | 
				
			|||
    var query = { | 
				
			|||
      sort: this.sort, | 
				
			|||
      orderBy: this.orderBy, | 
				
			|||
      c_id: this.c_id | 
				
			|||
    }; | 
				
			|||
    this.queryCommodityList(query); | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onLoad(e) { | 
				
			|||
    if (e.c_id) { | 
				
			|||
      this.setData({ | 
				
			|||
        c_id: e.c_id | 
				
			|||
      }); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    if (e.orderBy) { | 
				
			|||
      this.setData({ | 
				
			|||
        orderBy: e.orderBy, | 
				
			|||
        sort: e.sort | 
				
			|||
      }); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    var price = { | 
				
			|||
      min: '', | 
				
			|||
      max: '' | 
				
			|||
    }; | 
				
			|||
    var shadows = { | 
				
			|||
      attr: {}, | 
				
			|||
      specs: {} | 
				
			|||
    }; | 
				
			|||
 | 
				
			|||
    if (e.attr) { | 
				
			|||
      e.attr.forEach(v => shadows.attr[v] = true); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    Object.keys(e).forEach(key => { | 
				
			|||
      let ret = /^specs\[([^\]]+)]$/.exec(key); | 
				
			|||
 | 
				
			|||
      if (ret) { | 
				
			|||
        let name = ret[1]; | 
				
			|||
        shadows.specs[name] = e[key]; | 
				
			|||
      } | 
				
			|||
    }); | 
				
			|||
    var priceList = ['200-500', '501-1000', '1001-1500', '1501-2000', '2000-']; | 
				
			|||
    shadows.price = e.price || ''; | 
				
			|||
 | 
				
			|||
    if (!~priceList.indexOf(shadows.price)) { | 
				
			|||
      var parts = shadows.price.split(/\s*\-\s*/); | 
				
			|||
      price.min = parts[0] || ''; | 
				
			|||
      price.max = parts[1] || ''; | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    // this.setData({ | 
				
			|||
    //   price: price, | 
				
			|||
    //   shadows: shadows, | 
				
			|||
    //   selections: {}, | 
				
			|||
    //   priceList: priceList, | 
				
			|||
    //   priceCache: {} | 
				
			|||
    // }); | 
				
			|||
 | 
				
			|||
      this.price=price; | 
				
			|||
      this.shadows=shadows; | 
				
			|||
      this.selections={}; | 
				
			|||
      this.priceList=priceList; | 
				
			|||
      this.priceCache={}; | 
				
			|||
	 | 
				
			|||
	 | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onShareAppMessage() { | 
				
			|||
    var url = decodeURIComponent(getUrl()); | 
				
			|||
    return { | 
				
			|||
      title: '商品列表', | 
				
			|||
      path: '/' + url | 
				
			|||
    }; | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  methods: { | 
				
			|||
	  //点击切换排列方式 | 
				
			|||
	  changeRange(){ | 
				
			|||
		  if(this.arrangement == 'rank'){ | 
				
			|||
			  this.arrangement = 'vertical' | 
				
			|||
		  } else if(this.arrangement == 'vertical'){ | 
				
			|||
			  this.arrangement = 'rank' | 
				
			|||
		  } | 
				
			|||
	  }, | 
				
			|||
	   | 
				
			|||
    // 价格点击 | 
				
			|||
    checkPrice(e) { | 
				
			|||
      var num = e.currentTarget.dataset.num; | 
				
			|||
      if (this.shadows.price == num) { | 
				
			|||
        console.log("gaehgae"); | 
				
			|||
        this.setData({ | 
				
			|||
          'priceCache.value': num | 
				
			|||
        }); | 
				
			|||
	 | 
				
			|||
        if (this.priceCache.min !== undefined) { | 
				
			|||
          this.setData({ | 
				
			|||
            'price.min': this.priceCache.min | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        if (this.priceCache.max !== undefined) { | 
				
			|||
          this.setData({ | 
				
			|||
            'price.min': this.priceCache.max | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        // this.setData({ | 
				
			|||
        //   'shadows.price': '' | 
				
			|||
        // }); | 
				
			|||
		 | 
				
			|||
		this.shadows={price:''} | 
				
			|||
		 | 
				
			|||
		 | 
				
			|||
      } else { | 
				
			|||
        console.log(46846846846846); | 
				
			|||
 | 
				
			|||
        if (this.price.min !== '') { | 
				
			|||
          // this.setData({ | 
				
			|||
          //   'priceCache.min': this.priceCache.min | 
				
			|||
          // }); | 
				
			|||
		   | 
				
			|||
		   this.priceCache.min=this.priceCache.min; | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        if (this.price.max !== '') { | 
				
			|||
          // this.setData({ | 
				
			|||
          //   'priceCache.max': this.priceCache.max | 
				
			|||
          // }); | 
				
			|||
		  this.priceCache.max=this.priceCache.max; | 
				
			|||
		   | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
  //       this.setData({ | 
				
			|||
  //         'price.min': '', | 
				
			|||
  //         'price.max': '', | 
				
			|||
  //         'shadows.price': num | 
				
			|||
  //       }); | 
				
			|||
		// | 
				
			|||
		this.price.min=''; | 
				
			|||
        this.price.max=''; | 
				
			|||
		this.shadows.price=num; | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    // 价格输入 | 
				
			|||
    modifyPrice(e) { | 
				
			|||
      var type = e.currentTarget.dataset.type; | 
				
			|||
      var val = this.price[type ? 'max' : 'min']; | 
				
			|||
      val = parseFloat(val); | 
				
			|||
      if (isNaN(val)) val = ''; | 
				
			|||
 | 
				
			|||
      if (this.price[type] == 'max') { | 
				
			|||
        // this.setData({ | 
				
			|||
        //   'price.max': val | 
				
			|||
        // }); | 
				
			|||
		this.price={max:val}; | 
				
			|||
		 | 
				
			|||
      } else { | 
				
			|||
        // this.setData({ | 
				
			|||
        //   'price.min': val | 
				
			|||
        // }); | 
				
			|||
		this.price={min:val}; | 
				
			|||
      } | 
				
			|||
   //    this.setData({ | 
				
			|||
   //      'shadows.price': '' | 
				
			|||
   //    }); | 
				
			|||
	  // | 
				
			|||
	  this.shadows={price:''} | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    // 点击筛选条件 | 
				
			|||
   // #ifdef APP-PLUS || MP-WEIXIN | 
				
			|||
   check(e) { | 
				
			|||
   		var type = e.currentTarget.dataset.type; | 
				
			|||
    | 
				
			|||
   		var id = type.id; | 
				
			|||
   		var selections = Object.assign({}, this.selections); | 
				
			|||
    | 
				
			|||
   		if (!selections[id]) { | 
				
			|||
   			for (let k in selections) { | 
				
			|||
   				if (selections.hasOwnProperty(k)) { | 
				
			|||
   					let o = selections[k] | 
				
			|||
   					if (o.type === type.type && o.key === type.key) { | 
				
			|||
   						delete selections[k]; | 
				
			|||
   					} | 
				
			|||
   				} | 
				
			|||
   			} | 
				
			|||
    | 
				
			|||
   			selections[id] = { | 
				
			|||
   				key: type.key, | 
				
			|||
   				type: type.type, | 
				
			|||
   				value: type.value, | 
				
			|||
   				field: type.field | 
				
			|||
   			} | 
				
			|||
   		} else { | 
				
			|||
   			delete  selections[id]; | 
				
			|||
   		} | 
				
			|||
    | 
				
			|||
   		this.setData({ | 
				
			|||
   			selections: Object.assign({}, selections) | 
				
			|||
   		}) | 
				
			|||
   	}, | 
				
			|||
   // #endif | 
				
			|||
    | 
				
			|||
   // #ifdef H5  | 
				
			|||
   check(e) { | 
				
			|||
      var type = e; | 
				
			|||
      var id = type.id; | 
				
			|||
      var selections = Object.assign({}, this.selections); | 
				
			|||
 | 
				
			|||
      if (!selections[id]) { | 
				
			|||
        for (let k in selections) { | 
				
			|||
          if (selections.hasOwnProperty(k)) { | 
				
			|||
            let o = selections[k]; | 
				
			|||
 | 
				
			|||
            if (o.type === type.type && o.key === type.key) { | 
				
			|||
              delete selections[k]; | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        selections[id] = { | 
				
			|||
          key: type.key, | 
				
			|||
          type: type.type, | 
				
			|||
          value: type.value, | 
				
			|||
          field: type.field | 
				
			|||
        }; | 
				
			|||
      } else { | 
				
			|||
        delete selections[id]; | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      this.setData({ | 
				
			|||
        selections: Object.assign({}, selections) | 
				
			|||
      }); | 
				
			|||
 | 
				
			|||
	    /* this.selections=Object.assign({}, selections); */  | 
				
			|||
    }, | 
				
			|||
   // #endif | 
				
			|||
    | 
				
			|||
    | 
				
			|||
    // 取消 | 
				
			|||
    cancel() { | 
				
			|||
	 | 
				
			|||
	 // var animation = new Animation('show'); | 
				
			|||
	 // animation.right().then(() => { | 
				
			|||
	   this.setData({ | 
				
			|||
	     showFilter: false, | 
				
			|||
	     selections: {}, | 
				
			|||
	     shadows: {} | 
				
			|||
	   }); | 
				
			|||
	 // }); | 
				
			|||
	 | 
				
			|||
 | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    // 确定 | 
				
			|||
    confirm() { | 
				
			|||
      var attr = [], | 
				
			|||
          specs = {}; | 
				
			|||
 | 
				
			|||
      for (let k in this.selections) { | 
				
			|||
        if (this.selections.hasOwnProperty(k)) { | 
				
			|||
          let o = this.selections[k]; | 
				
			|||
 | 
				
			|||
          if (o.type === 'attr') { | 
				
			|||
            attr.push(o.value); | 
				
			|||
          } else { | 
				
			|||
            specs['specs[' + o.field + ']'] = o.value; | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      attr = attr.join(','); | 
				
			|||
      var price = this.shadows.price; | 
				
			|||
 | 
				
			|||
      if (attr.length) { | 
				
			|||
        var query = Object.assign({}, { | 
				
			|||
          attr | 
				
			|||
        }, { | 
				
			|||
          c_id: this.c_id, | 
				
			|||
          orderBy: this.orderBy, | 
				
			|||
          sort: this.sort, | 
				
			|||
          price: price | 
				
			|||
        }, specs); | 
				
			|||
      } else { | 
				
			|||
        var query = Object.assign({}, { | 
				
			|||
          c_id: this.c_id, | 
				
			|||
          orderBy: this.orderBy, | 
				
			|||
          sort: this.sort, | 
				
			|||
          price: price | 
				
			|||
        }, specs); | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      console.log(query); | 
				
			|||
      this.queryCommodityList(query); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    changeOrderBy(e) { | 
				
			|||
      var field = e.currentTarget.dataset.type; | 
				
			|||
 | 
				
			|||
      if (this.orderBy === field) { | 
				
			|||
        this.setData({ | 
				
			|||
          sort: this.sort === 'desc' ? 'asc' : 'desc' | 
				
			|||
        }); | 
				
			|||
      } else { | 
				
			|||
        this.setData({ | 
				
			|||
          orderBy: field, | 
				
			|||
          sort: 'desc' | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      wx.redirectTo({ | 
				
			|||
        url: '/pages/store/list/list?orderBy=' + this.orderBy + '&sort=' + this.sort + '&c_id=' + this.c_id | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    jump(e) { | 
				
			|||
      var id = e.currentTarget.dataset.id; | 
				
			|||
      wx.navigateTo({ | 
				
			|||
        url: '/pages/store/detail/detail?id=' + id | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    classF() { | 
				
			|||
		wx.switchTab({ | 
				
			|||
		    url: '/pages/index/classification/classification' | 
				
			|||
		}); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    search() { | 
				
			|||
      wx.navigateTo({ | 
				
			|||
        url: '/pages/store/search/search' | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    cart() { | 
				
			|||
      wx.switchTab({ | 
				
			|||
        url: '/pages/store/cart/cart' | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    showFilterF() { | 
				
			|||
      if (this.c_id) { | 
				
			|||
        this.setData({ | 
				
			|||
          showFilter: true | 
				
			|||
        }); | 
				
			|||
        // var animation = new Animation('show'); | 
				
			|||
        // animation.Pullleft(); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    move() {}, | 
				
			|||
 | 
				
			|||
    loadMore() { | 
				
			|||
      this.$http.get({ | 
				
			|||
        api: "api/store/list?page=" + (this.page + 1) | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    // 查询商品列表 | 
				
			|||
    queryCommodityList(query = {}, page = 1) { | 
				
			|||
      var token = this.$cookieStorage.get('user_token') || ''; | 
				
			|||
      var params = Object.assign({}, query, { | 
				
			|||
        page | 
				
			|||
      }); | 
				
			|||
      wx.showLoading({ | 
				
			|||
        title: '加载中', | 
				
			|||
        mask: true | 
				
			|||
      }); | 
				
			|||
      this.$http.get({ | 
				
			|||
        api: 'api/store/list', | 
				
			|||
        data: params, | 
				
			|||
        header: { | 
				
			|||
          Authorization: token | 
				
			|||
        } | 
				
			|||
      }).then(res => { | 
				
			|||
        if (res.statusCode == 200) { | 
				
			|||
          res = res.data; | 
				
			|||
 | 
				
			|||
          if (res.status) { | 
				
			|||
            // 商品列表页赋值 | 
				
			|||
            this.setData({ | 
				
			|||
              [`storeList.${page - 1}`]: res.data, | 
				
			|||
              meta: res.meta | 
				
			|||
            }); // 右侧筛选赋值 | 
				
			|||
 | 
				
			|||
	 | 
				
			|||
            if (res.meta && res.meta.filter) { | 
				
			|||
              if (Array.isArray(res.meta.filter)) { | 
				
			|||
                this.setData({ | 
				
			|||
                  filter: null | 
				
			|||
                }); | 
				
			|||
              } else { | 
				
			|||
                let filter = res.meta.filter; | 
				
			|||
                let list = []; | 
				
			|||
 | 
				
			|||
                if (filter.attr && filter.attr.keys) { | 
				
			|||
                  let type = 'attr'; | 
				
			|||
                  filter.attr.keys.forEach(key => { | 
				
			|||
                    let arr = []; | 
				
			|||
                    let arrText = []; | 
				
			|||
 | 
				
			|||
                    for (let attr in filter.attr.values[key]) { | 
				
			|||
                      !!attr && arrText.push(filter.attr.values[key][attr]); | 
				
			|||
                      !!attr && arr.push(attr); | 
				
			|||
                    } | 
				
			|||
 | 
				
			|||
                    list.push({ | 
				
			|||
                      key, | 
				
			|||
                      values: arr.map((v, index) => { | 
				
			|||
                        return { | 
				
			|||
                          id: [type, key, v].join('-'), | 
				
			|||
                          key, | 
				
			|||
                          type, | 
				
			|||
                          value: v, | 
				
			|||
                          text: arrText[index] | 
				
			|||
                        }; | 
				
			|||
                      }) | 
				
			|||
                    }); | 
				
			|||
                  }); | 
				
			|||
                } | 
				
			|||
 | 
				
			|||
                if (filter.specs && filter.specs.keys) { | 
				
			|||
                  let type = 'specs'; | 
				
			|||
                  filter.specs.keys.forEach(key => { | 
				
			|||
                    let entries = key.split(':'); | 
				
			|||
                    let field = entries[1]; | 
				
			|||
                    key = entries[0]; | 
				
			|||
                    var newKey = key + ':' + field; | 
				
			|||
                    let specs = []; | 
				
			|||
                    let specsText = []; | 
				
			|||
 | 
				
			|||
                    for (let spec in filter.specs.values[newKey]) { | 
				
			|||
                      !!spec && specsText.push(filter.specs.values[newKey][spec]); | 
				
			|||
                      !!spec && specs.push(spec); | 
				
			|||
                    } | 
				
			|||
 | 
				
			|||
                    list.push({ | 
				
			|||
                      key, | 
				
			|||
                      values: specs.map((v, index) => { | 
				
			|||
                        return { | 
				
			|||
                          id: [type, key, v].join('-'), | 
				
			|||
                          key, | 
				
			|||
                          type, | 
				
			|||
                          field, | 
				
			|||
                          value: v, | 
				
			|||
                          text: specsText[index] | 
				
			|||
                        }; | 
				
			|||
                      }) | 
				
			|||
                    }); | 
				
			|||
                  }); | 
				
			|||
                } | 
				
			|||
 | 
				
			|||
                this.setData({ | 
				
			|||
                  filter: list | 
				
			|||
                }); | 
				
			|||
              } | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
            this.setData({ | 
				
			|||
              showFilter: false | 
				
			|||
            }); | 
				
			|||
          } else { | 
				
			|||
            wx.showModal({ | 
				
			|||
              title: '', | 
				
			|||
              content: res.message, | 
				
			|||
              showCancel: false | 
				
			|||
            }); | 
				
			|||
          } | 
				
			|||
        } else { | 
				
			|||
          wx.showModal({ | 
				
			|||
            title: '', | 
				
			|||
            content: "请求失败", | 
				
			|||
            showCancel: false | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        this.setData({ | 
				
			|||
          show: false | 
				
			|||
        }); | 
				
			|||
        wx.hideLoading(); | 
				
			|||
      }).catch(rej => { | 
				
			|||
        wx.showModal({ | 
				
			|||
          title: '', | 
				
			|||
          content: '请求失败', | 
				
			|||
          success: res => { | 
				
			|||
            if (res.confirm) {} | 
				
			|||
          } | 
				
			|||
        }); | 
				
			|||
        this.setData({ | 
				
			|||
          show: false | 
				
			|||
        }); | 
				
			|||
        wx.hideLoading(); | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    setData: function (obj) { | 
				
			|||
      let that = this; | 
				
			|||
      let keys = []; | 
				
			|||
      let val, data; | 
				
			|||
      Object.keys(obj).forEach(function (key) { | 
				
			|||
        keys = key.split('.'); | 
				
			|||
        val = obj[key]; | 
				
			|||
        data = that.$data; | 
				
			|||
        keys.forEach(function (key2, index) { | 
				
			|||
          if (index + 1 == keys.length) { | 
				
			|||
            that.$set(data, key2, val); | 
				
			|||
          } else { | 
				
			|||
            if (!data[key2]) { | 
				
			|||
              that.$set(data, key2, {}); | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
          data = data[key2]; | 
				
			|||
        }); | 
				
			|||
      }); | 
				
			|||
    } | 
				
			|||
  }, | 
				
			|||
  computed: {}, | 
				
			|||
  watch: {} | 
				
			|||
}; | 
				
			|||
</script> | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
    @import "list"; | 
				
			|||
</style> | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue