422 changed files with 33728 additions and 32334 deletions
@ -0,0 +1,2 @@ |
|||||||
|
@charset "UTF-8";.font-color-red{color:#73CBB6 !important}.bg-color-red{background-color:#73CBB6 !important}.icon-color{color:#73CBB6}.cart-color{color:#73CBB6 !important;border:1px solid #73CBB6 !important}.padding20{padding:20rpx}.pad20{padding:0 20rpx}.padding30{padding:30rpx}.pad30{padding:0 30rpx}.acea-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.acea-row.row-middle{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.acea-row.row-top{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.acea-row.row-bottom{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.acea-row.row-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.acea-row.row-right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.acea-row.row-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.acea-row.row-between{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.acea-row.row-around{-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.acea-row.row-column-around{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.acea-row.row-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.acea-row.row-column-between{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.acea-row.row-center-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.acea-row.row-between-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.slider-banner{position:relative;width:100%;overflow:hidden}.slider-banner .swiper-container{height:100%}.slider-banner image{display:block;width:100%;height:100%}.start{width:122rpx;height:30rpx;background-image:url("https://h5.dayouqiantu.cn/static/images/start.png");background-repeat:no-repeat;-webkit-background-size:122rpx auto;background-size:122rpx auto}.start.star5{background-position:0 3rpx}.start.star4{background-position:0 -30rpx}.start.star3{background-position:0 -70rpx}.start.star2{background-position:0 -105rpx}.start.star1{background-position:0 -140rpx}.start.star0{background-position:0 -175rpx}.checkbox-wrapper{position:relative}.checkbox-wrapper input{display:none}.checkbox-wrapper .icon{position:absolute;left:0;top:50%;display:inline-block;width:18px;height:18px;border:1px solid #cccccc;-webkit-border-radius:50%;border-radius:50%;-webkit-transform:translate(0, -50%);-ms-transform:translate(0, -50%);transform:translate(0, -50%)}.checkbox-wrapper input:checked+.icon{background-color:#e93323;border-color:#e93323;background-image:url("https://h5.dayouqiantu.cn/static/images/enter.png");-webkit-background-size:21rpx 15rpx;background-size:21rpx 15rpx;background-repeat:no-repeat;background-position:center center}.Loads{height:80rpx;font-size:25rpx;color:#000}.Loads .iconfont{font-size:30rpx;margin-right:10rpx;height:32rpx;line-height:32rpx}@-webkit-keyframes load{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.loadingpic{-webkit-animation:load 3s linear 1s infinite;animation:load 3s linear 1s infinite}.loading{-webkit-animation:load linear 1s infinite;animation:load linear 1s infinite} |
||||||
|
/*# sourceMappingURL=./base.css.map */ |
@ -0,0 +1 @@ |
|||||||
|
{"version":3,"sources":["base.less"],"names":[],"mappings":"AAAA,iBAIA,gBACE,wBAAA,CAEF,cACE,mCAAA,CAEF,YACE,aAAA,CAEF,YACE,yBACA,mCAAA,CAGF,WACE,aAAA,CAGF,OACE,eAAA,CAGF,WACE,aAAA,CAGF,OACE,eAAA,CAGF,UACE,oBACA,AADA,qBACA,AADA,oBACA,AADA,aACA,uBAAA,mBAAA,cAAA,CAGF,qBACE,yBAAA,2BAAA,sBAAA,kBAAA,CAEF,kBACE,wBAAA,+BAAA,qBAAA,sBAAA,CAEF,qBACE,sBAAA,6BAAA,mBAAA,oBAAA,CAEF,qBACE,wBAAA,+BAAA,qBAAA,sBAAA,CAEF,oBACE,qBAAA,iCAAA,kBAAA,wBAAA,CAEF,mBACE,uBAAA,mCAAA,oBAAA,0BAAA,CAEF,sBACE,yBAAA,sCAAA,sBAAA,6BAAA,CAEF,qBACE,qCAAA,yBAAA,4BAAA,CAEF,4BACE,4BACA,AADA,6BACA,AADA,8BACA,AADA,0BACA,AADA,sBACA,qCAAA,yBAAA,4BAAA,CAEF,qBACE,4BAAA,6BAAA,8BAAA,0BAAA,qBAAA,CAEF,6BACE,4BACA,AADA,6BACA,AADA,8BACA,AADA,0BACA,AADA,sBACA,yBAAA,sCAAA,sBAAA,6BAAA,CAGF,6BACE,yBACA,AADA,2BACA,AADA,sBACA,AADA,mBACA,wBAAA,+BAAA,qBAAA,sBAAA,CAGF,8BACE,yBACA,AADA,2BACA,AADA,sBACA,AADA,mBACA,yBAAA,sCAAA,sBAAA,6BAAA,CAIF,eACE,kBACA,WAEA,eAAA,CAKF,iCACE,WAAA,CAEF,qBACE,cACA,WACA,WAAA,CAEF,OACE,aACA,aACA,0EACA,4BACA,oCAAA,2BAAA,CAEF,aACE,0BAAA,CAEF,aACE,4BAAA,CAEF,aACE,4BAAA,CAEF,aACE,6BAAA,CAEF,aACE,6BAAA,CAEF,aACE,6BAAA,CAGF,kBACE,iBAAA,CAEF,wBACE,YAAA,CAEF,wBACE,kBACA,OACA,QACA,qBACA,WACA,YACA,yBACA,0BACA,AADA,kBACA,qCAAW,AAAX,iCAAW,AAAX,4BAAW,CAEb,sCACE,yBACA,qBACA,0EACA,oCACA,AADA,4BACA,4BACA,iCAAA,CAEF,OACE,aACA,gBACA,UAAA,CAEF,iBACE,gBACA,mBACA,aACA,iBAAA,CAGF,wBACE,KACE,+BAAW,AAAX,sBAAW,CAEb,GACE,iCAAW,AAAX,wBAAW,CAAA,CAGf,AARA,gBACE,KACE,+BAAW,AAAX,sBAAW,CAEb,GACE,iCAAW,AAAX,wBAAW,CAAA,CAGf,YACE,6CAAA,oCAAA,CAEF,SACE,0CAAA,iCAAA,CAAA","file":"to.css","sourcesContent":[null]} |
@ -0,0 +1,2 @@ |
|||||||
|
input{line-height:normal;-webkit-box-sizing:border-box;box-sizing:border-box}@font-face{font-family:'GuildfordProBook 5';src:url('https://h5.dayouqiantu.cn/static/iconfont/GuildfordProBook5.otf')}[v-cloak]{display:none}.iconfont{font-size:36rpx}@media (-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5){.border-1px::after{-webkit-transform:scaleY(.7);-ms-transform:scaleY(.7);transform:scaleY(.7)}.border-1px::before{-webkit-transform:scaleY(.7);-ms-transform:scaleY(.7);transform:scaleY(.7)}}@media (-webkit-min-device-pixel-ratio:2),(min-device-pixel-ratio:2){.border-1px::after{-webkit-transform:scaleY(.5);-ms-transform:scaleY(.5);transform:scaleY(.5)}.border-1px::before{-webkit-transform:scaleY(.5);-ms-transform:scaleY(.5);transform:scaleY(.5)}}@media (-webkit-min-device-pixel-ratio:3),(min-device-pixel-ratio:3){.border-1px::after{-webkit-transform:scaleY(.33);-ms-transform:scaleY(.33);transform:scaleY(.33)}.border-1px::before{-webkit-transform:scaleY(.33);-ms-transform:scaleY(.33);transform:scaleY(.33)}}.line1{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;width:100%}.line2{word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mask{position:fixed;top:0;left:0;right:0;bottom:0;z-index:55;background-color:rgba(0,0,0,0.5)} |
||||||
|
/*# sourceMappingURL=./reset.css.map */ |
@ -0,0 +1 @@ |
|||||||
|
{"version":3,"sources":["reset.less"],"names":[],"mappings":"AAAA,MAAM,mBAAqB,8BAAA,qBAAA,CAC3B,WACE,iCACA,0EAAS,CAEX,UACE,YAAA,CAEF,UACE,eAAA,CAGF,yEACE,mBACE,6BAAW,AAAX,yBAAW,AAAX,oBAAW,CAEb,oBACE,6BAAW,AAAX,yBAAW,AAAX,oBAAW,CAAA,CAGf,qEACE,mBACE,6BAAW,AAAX,yBAAW,AAAX,oBAAW,CAEb,oBACE,6BAAW,AAAX,yBAAW,AAAX,oBAAW,CAAA,CAGf,qEACE,mBACE,8BAAW,AAAX,0BAAW,AAAX,qBAAW,CAEb,oBACE,8BAAW,AAAX,0BAAW,AAAX,qBAAW,CAAA,CAGf,OAAO,gBAAgB,0BAAuB,AAAvB,uBAAuB,mBAAmB,UAAA,CACjE,OAAO,qBAAqB,oBAAoB,qBAAqB,4BAA4B,eAAA,CACjG,MAAM,eAAe,MAAM,OAAO,QAAQ,SAAS,WAAW,gCAAA,CAAA","file":"to.css","sourcesContent":[null]} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,80 +1,88 @@ |
|||||||
<template> |
<template> |
||||||
<div v-if="couponList.length > 0"> |
<view v-if="couponList.length > 0"> |
||||||
<div class="coupon-window" :class="value ? 'on' : ''"> |
<view class="coupon-window" :class="value ? 'on' : ''"> |
||||||
<div class="couponWinList"> |
<view class="couponWinList"> |
||||||
<div |
<view class="item acea-row row-between-wrapper" v-for="(item, couponwindiwIndex) in couponList" :key="couponwindiwIndex"> |
||||||
class="item acea-row row-between-wrapper" |
<view class="money font-color-red"> |
||||||
v-for="(item, couponwindiwIndex) in couponList" |
¥<text class="num">{{ item.coupon_price }}</text> |
||||||
:key="couponwindiwIndex" |
</view> |
||||||
> |
<view class="text"> |
||||||
<div class="money font-color-red"> |
<view class="name"> |
||||||
¥<span class="num">{{ item.coupon_price }}</span> |
购物买{{ item.use_min_price }}减{{ item.coupon_price }} |
||||||
</div> |
</view> |
||||||
<div class="text"> |
<view v-if="item.end_time"> |
||||||
<div class="name"> |
{{ item.start_time }}-{{ item.end_time }} |
||||||
购物买{{ item.use_min_price }}减{{ item.coupon_price }} |
</view> |
||||||
</div> |
</view> |
||||||
<div v-if="item.end_time"> |
</view> |
||||||
{{ item.start_time }}-{{ item.end_time }} |
<view style="height:1.2rem"></view> |
||||||
</div> |
</view> |
||||||
</div> |
<view class="lid"> |
||||||
</div> |
<view class="bnt font-color-red" @click="checked">立即领取</view> |
||||||
<div style="height:1.2rem"></div> |
<view class="iconfont icon-guanbi3" @click="close"></view> |
||||||
</div> |
</view> |
||||||
<div class="lid"> |
</view> |
||||||
<div class="bnt font-color-red" @click="checked">立即领取</div> |
<view class="mask" @touchmove.prevent :hidden="!value"></view> |
||||||
<div class="iconfont icon-guanbi3" @click="close"></div> |
</view> |
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="mask" @touchmove.prevent :hidden="!value"></div> |
|
||||||
</div> |
|
||||||
</template> |
</template> |
||||||
<script> |
<script> |
||||||
import { mapGetters } from "vuex"; |
import { |
||||||
import toLogin from "@/libs/login"; |
mapGetters |
||||||
import { couponReceiveBatch } from "@/api/user"; |
} from "vuex"; |
||||||
|
import toLogin from "@/libs/login"; |
||||||
|
import { |
||||||
|
couponReceiveBatch |
||||||
|
} from "@/api/user"; |
||||||
|
|
||||||
export default { |
export default { |
||||||
name: "CouponWindow", |
name: "CouponWindow", |
||||||
props: { |
props: { |
||||||
couponList: { |
couponList: { |
||||||
type: Array, |
type: Array, |
||||||
default: () => [] |
default: () => [] |
||||||
} |
} |
||||||
}, |
}, |
||||||
computed: mapGetters(["isLogin"]), |
computed: mapGetters(["isLogin"]), |
||||||
data: function() { |
data: function() { |
||||||
return { |
return { |
||||||
value: true |
value: true |
||||||
}; |
}; |
||||||
}, |
}, |
||||||
mounted: function() {}, |
mounted: function() {}, |
||||||
methods: { |
methods: { |
||||||
checked() { |
checked() { |
||||||
const isLogin = this.isLogin; |
const isLogin = this.isLogin; |
||||||
if (!isLogin) return toLogin(); |
if (!isLogin) return toLogin(); |
||||||
|
|
||||||
const ids = this.couponList.reduce((initial, coupon) => { |
const ids = this.couponList.reduce((initial, coupon) => { |
||||||
initial.push(coupon.id); |
initial.push(coupon.id); |
||||||
return initial; |
return initial; |
||||||
}, []); |
}, []); |
||||||
couponReceiveBatch(ids) |
couponReceiveBatch(ids) |
||||||
.then(() => { |
.then(() => { |
||||||
this.$emit("success"); |
this.$emit("success"); |
||||||
this.$dialog.toast({ mes: "领取成功" }); |
uni.showToast({ |
||||||
}) |
title: '领取成功', |
||||||
.catch(() => { |
icon: 'success', |
||||||
this.$dialog.toast({ mes: "已领取" }); |
duration: 2000 |
||||||
}); |
}); |
||||||
if (isLogin) { |
}) |
||||||
this.value = false; |
.catch(() => { |
||||||
this.$emit("checked"); |
uni.showToast({ |
||||||
} |
title: '已领取', |
||||||
}, |
icon: 'none', |
||||||
close: function() { |
duration: 2000 |
||||||
this.value = false; |
}); |
||||||
this.$emit("close"); |
}); |
||||||
} |
if (isLogin) { |
||||||
} |
this.value = false; |
||||||
}; |
this.$emit("checked"); |
||||||
|
} |
||||||
|
}, |
||||||
|
close: function() { |
||||||
|
this.value = false; |
||||||
|
this.$emit("close"); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
</script> |
</script> |
||||||
|
@ -1,59 +1,55 @@ |
|||||||
<template> |
<template> |
||||||
<div class="not-defined"> |
<view class="not-defined"> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/404.png'" /> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/404.png'" /> |
||||||
|
<view class="content"> |
||||||
<div class="content"> |
<h3 class="title">页面未找到</h3> |
||||||
<h3 class="title">页面未找到</h3> |
<text>抱歉!您访问的页面不存在,请返回上一级或点击下方按钮返回首页...</text> |
||||||
<span |
</view> |
||||||
>抱歉!您访问的页面不存在,请返回上一级或点击下方按钮返回首页...</span |
<view class="btn" @click="homeGo()"> |
||||||
> |
返回首页 |
||||||
</div> |
</view> |
||||||
|
</view> |
||||||
<div class="btn" @click="homeGo()"> |
|
||||||
返回首页 |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</template> |
</template> |
||||||
|
|
||||||
<script> |
<script> |
||||||
export default { |
export default { |
||||||
name: "NotDefined", |
name: "NotDefined", |
||||||
methods: { |
methods: { |
||||||
homeGo() { |
homeGo() { |
||||||
this.$yrouter.switchTab('/pages/home/index'); |
this.$yrouter.switchTab('/pages/home/index'); |
||||||
|
}, |
||||||
}, |
}, |
||||||
}, |
}; |
||||||
}; |
|
||||||
</script> |
</script> |
||||||
|
|
||||||
<style scoped> |
<style scoped> |
||||||
.not-defined img { |
.not-defined image{ |
||||||
width: 100%; |
width: 100%; |
||||||
margin-top: 18%; |
margin-top: 18%; |
||||||
} |
} |
||||||
|
|
||||||
.content { |
.content { |
||||||
padding: 0 1rem; |
padding: 0 1rem; |
||||||
text-align: center; |
text-align: center; |
||||||
color: #44405e; |
color: #44405e; |
||||||
font-size: 15px; |
font-size: 15px; |
||||||
} |
} |
||||||
|
|
||||||
.title { |
.title { |
||||||
margin-bottom: 0.6rem; |
margin-bottom: 0.6rem; |
||||||
color: #302c48; |
color: #302c48; |
||||||
font-size: 20px; |
font-size: 20px; |
||||||
} |
} |
||||||
|
|
||||||
.btn { |
.btn { |
||||||
color: #fff; |
color: #fff; |
||||||
background-color: #ef4c4c; |
background-color: #ef4c4c; |
||||||
font-size: 16px; |
font-size: 16px; |
||||||
padding: 0.16rem; |
padding: 0.16rem; |
||||||
border-radius: 25px; |
border-radius: 25px; |
||||||
text-align: center; |
text-align: center; |
||||||
width: 2.4rem; |
width: 2.4rem; |
||||||
margin: 0 auto; |
margin: 0 auto; |
||||||
margin-top: 1rem; |
margin-top: 1rem; |
||||||
} |
} |
||||||
</style> |
</style> |
||||||
|
@ -1,224 +1,220 @@ |
|||||||
<template> |
<template> |
||||||
<div class="group-con"> |
<view class="group-con"> |
||||||
<div class="header acea-row row-between-wrapper"> |
<view class="header acea-row row-between-wrapper"> |
||||||
<div class="pictrue"> |
<view class="pictrue"> |
||||||
<img :src="storeCombination.image" /> |
<image :src="storeCombination.image" /> |
||||||
</div> |
</view> |
||||||
<div class="text"> |
<view class="text"> |
||||||
<div class="line1" v-text="storeCombination.title"></div> |
<view class="line1" v-text="storeCombination.title"></view> |
||||||
<div class="money"> |
<view class="money"> |
||||||
¥ |
<text>¥</text> |
||||||
<span class="num" v-text="storeCombination.price"></span> |
<text class="num" v-text="storeCombination.price"></text> |
||||||
<span class="team cart-color" v-text="storeCombination.people + '人拼'"></span> |
<text class="team cart-color" v-text="storeCombination.people + '人拼'"></text> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
<div v-if="pinkBool === -1" class="iconfont icon-pintuanshibai"></div> |
<view v-if="pinkBool === -1" class="iconfont icon-pintuanshibai"></view> |
||||||
<div v-else-if="pinkBool === 1" class="iconfont icon-pintuanchenggong font-color-red"></div> |
<view v-else-if="pinkBool === 1" class="iconfont icon-pintuanchenggong font-color-red"></view> |
||||||
</div> |
</view> |
||||||
<div class="wrapper"> |
<view class="wrapper"> |
||||||
<div class="title acea-row row-center-wrapper"> |
<view class="title acea-row row-center-wrapper"> |
||||||
<div class="line"></div> |
<view class="line"></view> |
||||||
<div class="name acea-row row-center-wrapper"> |
<view class="name acea-row row-center-wrapper"> |
||||||
剩余 |
<text>剩余</text> |
||||||
<count-down |
<count-down :is-day="false" :tip-text="''" :day-text="''" :hour-text="' : '" :minute-text="' : '" :second-text="''" |
||||||
:is-day="false" |
:datatime="pinkT.stopTime"></count-down> |
||||||
:tip-text="''" |
<text>结束</text> |
||||||
:day-text="''" |
</view> |
||||||
:hour-text="' : '" |
<view class="line"></view> |
||||||
:minute-text="' : '" |
</view> |
||||||
:second-text="''" |
<text class="tips font-color-red" v-if="pinkBool === 1">恭喜您拼团成功</text> |
||||||
:datatime="pinkT.stopTime" |
<text class="tips" v-else-if="pinkBool === -1">还差{{ count }}人,拼团失败</text> |
||||||
></count-down>结束 |
<text class="tips font-color-red" v-else-if="pinkBool === 0">拼团中,还差{{ count }}人拼团成功</text> |
||||||
</div> |
<view class="list acea-row row-middle" :class="[pinkBool === 1 || pinkBool === -1 ? 'result' : '',iShidden ? 'on' : '']"> |
||||||
<div class="line"></div> |
<view class="pictrue"> |
||||||
</div> |
<image :src="pinkT.avatar" /> |
||||||
<div class="tips font-color-red" v-if="pinkBool === 1">恭喜您拼团成功</div> |
</view> |
||||||
<div class="tips" v-else-if="pinkBool === -1">还差{{ count }}人,拼团失败</div> |
<view class="acea-row row-middle" v-if="pinkAll.length > 0"> |
||||||
<div class="tips font-color-red" v-else-if="pinkBool === 0">拼团中,还差{{ count }}人拼团成功</div> |
<view class="pictrue" v-for="(item, pinkAllIndex) in pinkAll" :key="pinkAllIndex"> |
||||||
<div |
<image :src="item.avatar" /> |
||||||
class="list acea-row row-middle" |
</view> |
||||||
:class="[ |
</view> |
||||||
pinkBool === 1 || pinkBool === -1 ? 'result' : '', |
<view class="pictrue" v-for="countIndex in count" :key="countIndex"> |
||||||
iShidden ? 'on' : '' |
<image class="img-none" :src="$VUE_APP_RESOURCES_URL+'/images/vacancy.png'" /> |
||||||
]" |
</view> |
||||||
> |
</view> |
||||||
<div class="pictrue"> |
<view v-if="(pinkBool === 1 || pinkBool === -1) && count > 9" class="lookAll acea-row row-center-wrapper" @click="lookAll"> |
||||||
<img :src="pinkT.avatar" /> |
{{ iShidden ? "收起" : "查看全部" }} |
||||||
</div> |
<text class="iconfont" :class="iShidden ? 'icon-xiangshang' : 'icon-xiangxia'"></text> |
||||||
<div class="acea-row row-middle" v-if="pinkAll.length > 0"> |
</view> |
||||||
<div class="pictrue" v-for="(item, pinkAllIndex) in pinkAll" :key="pinkAllIndex"> |
<view class="teamBnt bg-color-red" v-if="userBool === 1 && isOk == 0 && pinkBool === 0" @click="goPoster">邀请好友参团</view> |
||||||
<img :src="item.avatar" /> |
<view class="teamBnt bg-color-red" v-else-if="userBool === 0 && pinkBool === 0 && count > 0" @click="pay">我要参团</view> |
||||||
</div> |
<view class="teamBnt bg-color-red" v-if="pinkBool === 1 || pinkBool === -1" @click="goDetail(storeCombination.id)">再次开团</view> |
||||||
</div> |
<view class="cancel" @click="getCombinationRemove" v-if="pinkBool === 0 && userBool === 1"> |
||||||
<div class="pictrue" v-for="countIndex in count" :key="countIndex"> |
<text class="iconfont icon-guanbi3"></text> |
||||||
<img class="img-none" :src="$VUE_APP_RESOURCES_URL+'/images/vacancy.png'" /> |
<text>取消开团</text> |
||||||
</div> |
</view> |
||||||
</div> |
<view class="lookOrder" v-if="pinkBool === 1" @click="goOrder"> |
||||||
<div |
<text>查看订单信息</text> |
||||||
v-if="(pinkBool === 1 || pinkBool === -1) && count > 9" |
<text class="iconfont icon-xiangyou"></text> |
||||||
class="lookAll acea-row row-center-wrapper" |
</view> |
||||||
@click="lookAll" |
</view> |
||||||
> |
</view> |
||||||
{{ iShidden ? "收起" : "查看全部" }} |
|
||||||
<span |
|
||||||
class="iconfont" |
|
||||||
:class="iShidden ? 'icon-xiangshang' : 'icon-xiangxia'" |
|
||||||
></span> |
|
||||||
</div> |
|
||||||
<div |
|
||||||
class="teamBnt bg-color-red" |
|
||||||
v-if="userBool === 1 && isOk == 0 && pinkBool === 0" |
|
||||||
@click="goPoster" |
|
||||||
>邀请好友参团</div> |
|
||||||
<div |
|
||||||
class="teamBnt bg-color-red" |
|
||||||
v-else-if="userBool === 0 && pinkBool === 0 && count > 0" |
|
||||||
@click="pay" |
|
||||||
>我要参团</div> |
|
||||||
<div |
|
||||||
class="teamBnt bg-color-red" |
|
||||||
v-if="pinkBool === 1 || pinkBool === -1" |
|
||||||
@click="goDetail(storeCombination.id)" |
|
||||||
>再次开团</div> |
|
||||||
<div class="cancel" @click="getCombinationRemove" v-if="pinkBool === 0 && userBool === 1"> |
|
||||||
<span class="iconfont icon-guanbi3"></span>取消开团 |
|
||||||
</div> |
|
||||||
<div class="lookOrder" v-if="pinkBool === 1" @click="goOrder"> |
|
||||||
查看订单信息 |
|
||||||
<span class="iconfont icon-xiangyou"></span> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</template> |
</template> |
||||||
<script> |
<script> |
||||||
import CountDown from "@/components/CountDown"; |
import CountDown from "@/components/CountDown"; |
||||||
import { getCombinationPink, getCombinationRemove } from "@/api/activity"; |
import { |
||||||
import { postCartAdd } from "@/api/store"; |
getCombinationPink, |
||||||
import { isWeixin, parseQuery, handleQrCode } from "@/utils/index"; |
getCombinationRemove |
||||||
|
} from "@/api/activity"; |
||||||
|
import { |
||||||
|
postCartAdd |
||||||
|
} from "@/api/store"; |
||||||
|
import { |
||||||
|
isWeixin, |
||||||
|
parseQuery, |
||||||
|
handleQrCode |
||||||
|
} from "@/utils/index"; |
||||||
|
|
||||||
const NAME = "GroupRule"; |
const NAME = "GroupRule"; |
||||||
export default { |
export default { |
||||||
name: NAME, |
name: NAME, |
||||||
components: { |
components: { |
||||||
CountDown |
CountDown |
||||||
}, |
}, |
||||||
props: {}, |
props: {}, |
||||||
data: function() { |
data: function() { |
||||||
return { |
return { |
||||||
currentPinkOrder: "", //当前拼团订单 |
currentPinkOrder: "", //当前拼团订单 |
||||||
isOk: 0, //判断拼团是否完成 |
isOk: 0, //判断拼团是否完成 |
||||||
pinkBool: 0, //判断拼团是否成功|0=失败,1=成功 |
pinkBool: 0, //判断拼团是否成功|0=失败,1=成功 |
||||||
userBool: 0, //判断当前用户是否在团内|0=未在,1=在 |
userBool: 0, //判断当前用户是否在团内|0=未在,1=在 |
||||||
pinkAll: [], //团员 |
pinkAll: [], //团员 |
||||||
pinkT: [], //团长信息 |
pinkT: [], //团长信息 |
||||||
storeCombination: [], //拼团产品 |
storeCombination: [], //拼团产品 |
||||||
pinkId: 0, |
pinkId: 0, |
||||||
count: 0, //拼团剩余人数 |
count: 0, //拼团剩余人数 |
||||||
iShidden: false |
iShidden: false |
||||||
}; |
}; |
||||||
}, |
}, |
||||||
watch: { |
watch: { |
||||||
$yroute(n) { |
$yroute(n) { |
||||||
var that = this; |
var that = this; |
||||||
if (n.name === NAME) { |
if (n.name === NAME) { |
||||||
that.pinkId = that.$yroute.query.id; |
that.pinkId = that.$yroute.query.id; |
||||||
that.getCombinationPink(); |
that.getCombinationPink(); |
||||||
} |
} |
||||||
} |
} |
||||||
}, |
}, |
||||||
mounted: function() { |
mounted: function() { |
||||||
var that = this; |
var that = this; |
||||||
let url = handleQrCode(); |
let url = handleQrCode(); |
||||||
if (url) { |
if (url) { |
||||||
that.pinkId = url.pinkId; |
that.pinkId = url.pinkId; |
||||||
} else { |
} else { |
||||||
that.pinkId = that.$yroute.query.id; |
that.pinkId = that.$yroute.query.id; |
||||||
} |
} |
||||||
that.getCombinationPink(); |
that.getCombinationPink(); |
||||||
}, |
}, |
||||||
methods: { |
methods: { |
||||||
pay: function() { |
pay: function() { |
||||||
var that = this; |
var that = this; |
||||||
var data = {}; |
var data = {}; |
||||||
data.productId = that.storeCombination.productId; |
data.productId = that.storeCombination.productId; |
||||||
data.cartNum = that.pinkT.totalNum; |
data.cartNum = that.pinkT.totalNum; |
||||||
data.uniqueId = ""; |
data.uniqueId = ""; |
||||||
data.combinationId = that.storeCombination.id; |
data.combinationId = that.storeCombination.id; |
||||||
data.new = 1; |
data.new = 1; |
||||||
postCartAdd(data) |
postCartAdd(data) |
||||||
.then(res => { |
.then(res => { |
||||||
that.$yrouter.push({ |
that.$yrouter.push({ |
||||||
path: "/pages/order/OrderSubmission/index", |
path: "/pages/order/OrderSubmission/index", |
||||||
query: { id: res.data.cartId, pinkid: that.pinkId } |
query: { |
||||||
}); |
id: res.data.cartId, |
||||||
}) |
pinkid: that.pinkId |
||||||
.catch(err => { |
} |
||||||
this.$dialog.error(err.msg||err.response.data.msg); |
}); |
||||||
}); |
}) |
||||||
}, |
.catch(err => { |
||||||
goPoster: function() { |
uni.showToast({ |
||||||
var that = this; |
title: err.msg || err.response.data.msg, |
||||||
this.$yrouter.push({ |
icon: 'none', |
||||||
path: "/pages/activity/Poster/index", |
duration: 2000 |
||||||
query: { id: that.pinkId, type: 1 } |
}); |
||||||
}); |
}); |
||||||
}, |
}, |
||||||
goOrder: function() { |
goPoster: function() { |
||||||
var that = this; |
var that = this; |
||||||
this.$yrouter.push({ |
this.$yrouter.push({ |
||||||
path: "/pages/order/OrderDetails/index", |
path: "/pages/activity/Poster/index", |
||||||
query: { id: that.currentPinkOrder } |
query: { |
||||||
}); |
id: that.pinkId, |
||||||
}, |
type: 1 |
||||||
//拼团列表 |
} |
||||||
goList: function() { |
}); |
||||||
this.$yrouter.push({ |
}, |
||||||
path: "/pages/activity/GoodsGroup/index" |
goOrder: function() { |
||||||
}); |
var that = this; |
||||||
}, |
this.$yrouter.push({ |
||||||
//拼团详情 |
path: "/pages/order/OrderDetails/index", |
||||||
goDetail: function(id) { |
query: { |
||||||
this.$yrouter.push({ |
id: that.currentPinkOrder |
||||||
path: "/pages/activity/GroupDetails/index", |
} |
||||||
query: { id } |
}); |
||||||
}); |
}, |
||||||
}, |
//拼团列表 |
||||||
//拼团信息 |
goList: function() { |
||||||
getCombinationPink: function() { |
this.$yrouter.push({ |
||||||
var that = this; |
path: "/pages/activity/GoodsGroup/index" |
||||||
getCombinationPink(that.pinkId).then(res => { |
}); |
||||||
that.$set(that, "storeCombination", res.data.storeCombination); |
}, |
||||||
that.$set(that, "pinkT", res.data.pinkT); |
//拼团详情 |
||||||
that.$set(that, "pinkAll", res.data.pinkAll); |
goDetail: function(id) { |
||||||
that.$set(that, "count", res.data.count); |
this.$yrouter.push({ |
||||||
that.$set(that, "userBool", res.data.userBool); |
path: "/pages/activity/GroupDetails/index", |
||||||
that.$set(that, "pinkBool", res.data.pinkBool); |
query: { |
||||||
that.$set(that, "isOk", res.data.isOk); |
id |
||||||
that.$set(that, "currentPinkOrder", res.data.currentPinkOrder); |
} |
||||||
}); |
}); |
||||||
}, |
}, |
||||||
//拼团取消 |
//拼团信息 |
||||||
getCombinationRemove: function() { |
getCombinationPink: function() { |
||||||
var that = this; |
var that = this; |
||||||
getCombinationRemove({ id: that.pinkId, cid: that.storeCombination.id }) |
getCombinationPink(that.pinkId).then(res => { |
||||||
.then(res => { |
that.$set(that, "storeCombination", res.data.storeCombination); |
||||||
uni.showToast({ |
that.$set(that, "pinkT", res.data.pinkT); |
||||||
title: res.msg, |
that.$set(that, "pinkAll", res.data.pinkAll); |
||||||
icon: "none", |
that.$set(that, "count", res.data.count); |
||||||
duration: 2000 |
that.$set(that, "userBool", res.data.userBool); |
||||||
}); |
that.$set(that, "pinkBool", res.data.pinkBool); |
||||||
}) |
that.$set(that, "isOk", res.data.isOk); |
||||||
.catch(res => { |
that.$set(that, "currentPinkOrder", res.data.currentPinkOrder); |
||||||
uni.showToast({ |
}); |
||||||
title: res.msg, |
}, |
||||||
icon: "none", |
//拼团取消 |
||||||
duration: 2000 |
getCombinationRemove: function() { |
||||||
}); |
var that = this; |
||||||
}); |
getCombinationRemove({ |
||||||
}, |
id: that.pinkId, |
||||||
lookAll: function() { |
cid: that.storeCombination.id |
||||||
this.iShidden = !this.iShidden; |
}) |
||||||
} |
.then(res => { |
||||||
} |
uni.showToast({ |
||||||
}; |
title: res.msg, |
||||||
|
icon: "none", |
||||||
|
duration: 2000 |
||||||
|
}); |
||||||
|
}) |
||||||
|
.catch(res => { |
||||||
|
uni.showToast({ |
||||||
|
title: res.msg, |
||||||
|
icon: "none", |
||||||
|
duration: 2000 |
||||||
|
}); |
||||||
|
}); |
||||||
|
}, |
||||||
|
lookAll: function() { |
||||||
|
this.iShidden = !this.iShidden; |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
</script> |
</script> |
||||||
|
@ -1,188 +1,201 @@ |
|||||||
<template> |
<template> |
||||||
<div class="container"> |
<view class="container"> |
||||||
<div v-if="!isAuthorization"> |
<view v-if="!isAuthorization"> |
||||||
<div class="getUserInfo"> |
<view class="getUserInfo"> |
||||||
<p>您还未允许微信登录授权,请点击下方按钮允许微信授权登录。</p> |
<view>您还未允许微信登录授权,请点击下方按钮允许微信授权登录。</text> |
||||||
<vant-button type="primary" open-type="getUserInfo" @getuserinfo="getUserInfo">允许微信登录授权</vant-button> |
<vant-button type="primary" open-type="getUserInfo" @getuserinfo="getUserInfo">允许微信登录授权</vant-button> |
||||||
<div class="sp-cell"></div> |
<view class="sp-cell"></view> |
||||||
<vant-button type="default" @click="back">取消微信登录授权</vant-button> |
<vant-button type="default" @click="back">取消微信登录授权</vant-button> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
|
</view> |
||||||
</template> |
</template> |
||||||
|
|
||||||
<script> |
<script> |
||||||
import { mapState, mapMutations, mapActions } from "vuex"; |
import { |
||||||
// 组件 |
mapState, |
||||||
// import request from "@//api/request"; |
mapMutations, |
||||||
import { wxappAuth, getUser } from "@/api/user"; |
mapActions |
||||||
import dayjs from "dayjs"; |
} from "vuex"; |
||||||
import cookie from "@/utils/store/cookie"; |
// 组件 |
||||||
import { login } from "@/utils"; |
// import request from "@//api/request"; |
||||||
|
import { |
||||||
export default { |
wxappAuth, |
||||||
data() { |
getUser |
||||||
return {}; |
} from "@/api/user"; |
||||||
}, |
import dayjs from "dayjs"; |
||||||
computed: { |
import cookie from "@/utils/store/cookie"; |
||||||
...mapState(["isAuthorization"]) |
import { |
||||||
}, |
login |
||||||
onShow() { |
} from "@/utils"; |
||||||
this.UPDATE_AUTHORIZATIONPAGE(false); |
|
||||||
}, |
export default { |
||||||
onHide() { |
data() { |
||||||
this.changeAuthorization(false); |
return {}; |
||||||
}, |
}, |
||||||
onUnload() { |
computed: { |
||||||
this.changeAuthorization(false); |
...mapState(["isAuthorization"]) |
||||||
}, |
}, |
||||||
methods: { |
onShow() { |
||||||
...mapActions(["changeAuthorization", "changeUserInfo"]), |
this.UPDATE_AUTHORIZATIONPAGE(false); |
||||||
...mapMutations(["UPDATE_AUTHORIZATIONPAGE", "CHANGE_TABTAR"]), |
}, |
||||||
back() { |
onHide() { |
||||||
// if (this.$yroute.query.redirect) { |
this.changeAuthorization(false); |
||||||
// this.$yrouter.replace({ |
}, |
||||||
// path: this.$yroute.query.redirect |
onUnload() { |
||||||
// }); |
this.changeAuthorization(false); |
||||||
// } else { |
}, |
||||||
// this.$yrouter.replace({ |
methods: { |
||||||
// path: "/pages/launch/index", |
...mapActions(["changeAuthorization", "changeUserInfo"]), |
||||||
// query: { type: 0 } |
...mapMutations(["UPDATE_AUTHORIZATIONPAGE", "CHANGE_TABTAR"]), |
||||||
// }); |
back() { |
||||||
// } |
// if (this.$yroute.query.redirect) { |
||||||
this.CHANGE_TABTAR(0); |
// this.$yrouter.replace({ |
||||||
this.$yrouter.replace({ |
// path: this.$yroute.query.redirect |
||||||
path: "/pages/home/index", |
// }); |
||||||
query: { type: 0 } |
// } else { |
||||||
}); |
// this.$yrouter.replace({ |
||||||
}, |
// path: "/pages/launch/index", |
||||||
getUserInfo(data) { |
// query: { type: 0 } |
||||||
uni.showLoading({ |
// }); |
||||||
title: "登录中" |
// } |
||||||
}); |
this.CHANGE_TABTAR(0); |
||||||
login(); |
this.$yrouter.replace({ |
||||||
} |
path: "/pages/home/index", |
||||||
}, |
query: { |
||||||
onUnload() {}, |
type: 0 |
||||||
mounted() {} |
} |
||||||
}; |
}); |
||||||
|
}, |
||||||
|
getUserInfo(data) { |
||||||
|
uni.showLoading({ |
||||||
|
title: "登录中" |
||||||
|
}); |
||||||
|
login(); |
||||||
|
} |
||||||
|
}, |
||||||
|
onUnload() {}, |
||||||
|
mounted() {} |
||||||
|
}; |
||||||
</script> |
</script> |
||||||
|
|
||||||
<style lang="less"> |
<style lang="less"> |
||||||
.sp-cell { |
.sp-cell { |
||||||
height: 20rpx; |
height: 20rpx; |
||||||
} |
} |
||||||
.getUserInfo { |
|
||||||
display: flex; |
.getUserInfo { |
||||||
align-items: center; |
display: flex; |
||||||
flex-direction: column; |
align-items: center; |
||||||
padding: 30px; |
flex-direction: column; |
||||||
|
padding: 30px; |
||||||
p { |
|
||||||
margin-bottom: 20px; |
p { |
||||||
} |
margin-bottom: 20px; |
||||||
} |
} |
||||||
.container { |
} |
||||||
flex: 1; |
|
||||||
display: flex; |
.container { |
||||||
flex-direction: column; |
flex: 1; |
||||||
justify-content: flex-start; |
display: flex; |
||||||
position: relative; |
flex-direction: column; |
||||||
} |
justify-content: flex-start; |
||||||
|
position: relative; |
||||||
.tab-bar { |
} |
||||||
font-size: 0; |
|
||||||
display: flex; |
.tab-bar { |
||||||
align-items: center; |
font-size: 0; |
||||||
background: rgba(255, 255, 255, 0.9); |
display: flex; |
||||||
position: fixed; |
align-items: center; |
||||||
bottom: 0; |
background: rgba(255, 255, 255, 0.9); |
||||||
left: 0; |
position: fixed; |
||||||
right: 0; |
bottom: 0; |
||||||
z-index: 99; |
left: 0; |
||||||
border-top: 1px solid rgba(248, 248, 248, 1); |
right: 0; |
||||||
|
z-index: 99; |
||||||
.tab-bar-item { |
border-top: 1px solid rgba(248, 248, 248, 1); |
||||||
flex: 1; |
|
||||||
height: 49px; |
.tab-bar-item { |
||||||
display: flex; |
flex: 1; |
||||||
justify-content: center; |
height: 49px; |
||||||
align-items: center; |
display: flex; |
||||||
flex-direction: column; |
justify-content: center; |
||||||
|
align-items: center; |
||||||
&.active { |
flex-direction: column; |
||||||
text { |
|
||||||
color: #ee7559; |
&.active { |
||||||
} |
text { |
||||||
|
color: #ee7559; |
||||||
.tab-bar-pic { |
} |
||||||
display: none; |
|
||||||
background: #f9f9f9; |
.tab-bar-pic { |
||||||
|
display: none; |
||||||
&.active { |
background: #f9f9f9; |
||||||
display: block; |
|
||||||
} |
&.active { |
||||||
} |
display: block; |
||||||
} |
} |
||||||
|
} |
||||||
.tab-bar-pic { |
} |
||||||
display: block; |
|
||||||
background: #f9f9f9; |
.tab-bar-pic { |
||||||
|
display: block; |
||||||
&.active { |
background: #f9f9f9; |
||||||
display: none; |
|
||||||
} |
&.active { |
||||||
} |
display: none; |
||||||
} |
} |
||||||
|
} |
||||||
.tab-bar-pic { |
} |
||||||
width: 25px; |
|
||||||
height: 25px; |
.tab-bar-pic { |
||||||
background: #f9f9f9; |
width: 25px; |
||||||
|
height: 25px; |
||||||
image { |
background: #f9f9f9; |
||||||
width: 25px; |
|
||||||
height: 25px; |
image { |
||||||
} |
width: 25px; |
||||||
} |
height: 25px; |
||||||
|
} |
||||||
.tab-bar-pic-active { |
} |
||||||
} |
|
||||||
|
.tab-bar-pic-active {} |
||||||
text { |
|
||||||
font-size: 10px; |
text { |
||||||
color: rgb(160, 160, 160); |
font-size: 10px; |
||||||
line-height: 10px; |
color: rgb(160, 160, 160); |
||||||
margin-top: 5px; |
line-height: 10px; |
||||||
} |
margin-top: 5px; |
||||||
} |
} |
||||||
|
} |
||||||
.tab-bar-bg { |
|
||||||
padding-top: 46px; |
.tab-bar-bg { |
||||||
width: 100%; |
padding-top: 46px; |
||||||
} |
width: 100%; |
||||||
|
} |
||||||
.view-item { |
|
||||||
display: none; |
.view-item { |
||||||
width: 100%; |
display: none; |
||||||
} |
width: 100%; |
||||||
|
} |
||||||
.view-item-active { |
|
||||||
display: block; |
.view-item-active { |
||||||
} |
display: block; |
||||||
|
} |
||||||
.getUserInfo { |
|
||||||
display: flex; |
.getUserInfo { |
||||||
align-items: center; |
display: flex; |
||||||
flex-direction: column; |
align-items: center; |
||||||
padding: 30px; |
flex-direction: column; |
||||||
|
padding: 30px; |
||||||
p { |
|
||||||
margin-bottom: 20px; |
p { |
||||||
} |
margin-bottom: 20px; |
||||||
} |
} |
||||||
|
} |
||||||
._van-dialog { |
|
||||||
z-index: 99999999999; |
._van-dialog { |
||||||
} |
z-index: 99999999999; |
||||||
|
} |
||||||
</style> |
</style> |
||||||
|
@ -1,124 +1,153 @@ |
|||||||
<template> |
<template> |
||||||
<div class="apply-return"> |
<view class="apply-return"> |
||||||
<div class="goodsStyle acea-row row-between" v-for="cart in orderInfo.cartInfo" :key="cart.id"> |
<view class="goodsStyle acea-row row-between" v-for="cart in orderInfo.cartInfo" :key="cart.id"> |
||||||
<div class="pictrue"> |
<view class="pictrue"> |
||||||
<img :src="cart.productInfo.image" class="image" /> |
<image :src="cart.productInfo.image" class="image" /> |
||||||
</div> |
</view> |
||||||
<div class="text acea-row row-between"> |
<view class="text acea-row row-between"> |
||||||
<div class="name line2">{{ cart.productInfo.storeName }}</div> |
<view class="name line2">{{ cart.productInfo.storeName }}</view> |
||||||
<div class="money"> |
<view class="money"> |
||||||
<div> |
<view> |
||||||
¥{{ |
¥{{ |
||||||
cart.productInfo.attrInfo |
cart.productInfo.attrInfo |
||||||
? cart.productInfo.attrInfo.price |
? cart.productInfo.attrInfo.price |
||||||
: cart.productInfo.price |
: cart.productInfo.price |
||||||
}} |
}} |
||||||
</div> |
</view> |
||||||
<div class="num">x{{ cart.cartNum }}</div> |
<view class="num">x{{ cart.cartNum }}</view> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
<div class="list"> |
<view class="list"> |
||||||
<div class="item acea-row row-between-wrapper"> |
<view class="item acea-row row-between-wrapper"> |
||||||
<div>退货件数</div> |
<view>退货件数</view> |
||||||
<div class="num">{{ orderInfo.totalNum }}</div> |
<view class="num">{{ orderInfo.totalNum }}</view> |
||||||
</div> |
</view> |
||||||
<div class="item acea-row row-between-wrapper"> |
<view class="item acea-row row-between-wrapper"> |
||||||
<div>退款金额</div> |
<view>退款金额</view> |
||||||
<div class="num">¥{{ orderInfo.payPrice }}</div> |
<view class="num">¥{{ orderInfo.payPrice }}</view> |
||||||
</div> |
</view> |
||||||
<picker :value="reason" :range="reasonList" @change="changeReason"> |
<picker :value="reason" :range="reasonList" @change="changeReason"> |
||||||
<div class="item acea-row row-between-wrapper"> |
<view class="item acea-row row-between-wrapper"> |
||||||
<div>退款原因</div> |
<view>退款原因</view> |
||||||
<div class="num">{{reason}}</div> |
<view class="num">{{reason}}</view> |
||||||
<span class="iconfont icon-jiantou"></span> |
<text class="iconfont icon-jiantou"></text> |
||||||
</div> |
</view> |
||||||
</picker> |
</picker> |
||||||
<div class="item textarea acea-row row-between"> |
<view class="item textarea acea-row row-between"> |
||||||
<div>备注说明</div> |
<view>备注说明</view> |
||||||
<textarea placeholder="填写备注信息,100字以内" class="num" v-model="refund_reason_wap_explain"></textarea> |
<textarea placeholder="填写备注信息,100字以内" class="num" v-model="refund_reason_wap_explain"></textarea> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
<div class="returnBnt bg-color-red" @click="submit">申请退款</div> |
<view class="returnBnt bg-color-red" @click="submit">申请退款</view> |
||||||
</div> |
</view> |
||||||
</template> |
</template> |
||||||
|
|
||||||
<script> |
<script> |
||||||
import { orderDetail, getRefundReason, postOrderRefund } from "@/api/order"; |
import { |
||||||
import { trim } from "@/utils"; |
orderDetail, |
||||||
import { VUE_APP_API_URL } from "@/config"; |
getRefundReason, |
||||||
|
postOrderRefund |
||||||
|
} from "@/api/order"; |
||||||
|
import { |
||||||
|
trim |
||||||
|
} from "@/utils"; |
||||||
|
import { |
||||||
|
VUE_APP_API_URL |
||||||
|
} from "@/config"; |
||||||
|
|
||||||
export default { |
export default { |
||||||
name: "goodsReturn", |
name: "goodsReturn", |
||||||
components: { |
components: { |
||||||
// VueCoreImageUpload |
// VueCoreImageUpload |
||||||
}, |
}, |
||||||
data() { |
data() { |
||||||
return { |
return { |
||||||
url: `${VUE_APP_API_URL}/upload/image`, |
url: `${VUE_APP_API_URL}/upload/image`, |
||||||
headers: { |
headers: { |
||||||
Authorization: "Bearer " + this.$store.state.token |
Authorization: "Bearer " + this.$store.state.token |
||||||
}, |
}, |
||||||
id: 0, |
id: 0, |
||||||
orderInfo: {}, |
orderInfo: {}, |
||||||
reasonList: [], |
reasonList: [], |
||||||
reason: "", |
reason: "", |
||||||
refund_reason_wap_explain: "", |
refund_reason_wap_explain: "", |
||||||
refund_reason_wap_img: [] |
refund_reason_wap_img: [] |
||||||
}; |
}; |
||||||
}, |
}, |
||||||
methods: { |
methods: { |
||||||
changeReason(e) { |
changeReason(e) { |
||||||
this.reason = this.reasonList[e.mp.detail.value]; |
this.reason = this.reasonList[e.mp.detail.value]; |
||||||
}, |
}, |
||||||
imageuploaded(res) { |
imageuploaded(res) { |
||||||
if (res.status !== 200) |
if (res.status !== 200) { |
||||||
return this.$dialog.error(res.msg || "上传图片失败"); |
uni.showToast({ |
||||||
this.refund_reason_wap_img.push(res.data.url); |
title: err.msg || err.response.data.msg, |
||||||
}, |
icon: 'none', |
||||||
getOrderDetail() { |
duration: 2000 |
||||||
orderDetail(this.id) |
}); |
||||||
.then(res => { |
return |
||||||
this.orderInfo = res.data; |
} |
||||||
}) |
this.refund_reason_wap_img.push(res.data.url); |
||||||
.catch(err => { |
}, |
||||||
this.$dialog.error(err.response.data.msg || "获取订单失败"); |
getOrderDetail() { |
||||||
}); |
orderDetail(this.id) |
||||||
}, |
.then(res => { |
||||||
getRefundReason() { |
this.orderInfo = res.data; |
||||||
getRefundReason().then(res => { |
}) |
||||||
this.reasonList = res.data; |
.catch(err => { |
||||||
}); |
uni.showToast({ |
||||||
}, |
title: err.msg || err.response.data.msg, |
||||||
submit() { |
icon: 'none', |
||||||
const refund_reason_wap_explain = trim(this.refund_reason_wap_explain), |
duration: 2000 |
||||||
text = this.reason; |
}); |
||||||
if (!text) return this.$dialog.toast({ mes: "请选择退款原因" }); |
}); |
||||||
postOrderRefund({ |
}, |
||||||
text, |
getRefundReason() { |
||||||
uni: this.orderInfo.orderId, |
getRefundReason().then(res => { |
||||||
refund_reason_wap_img: this.refund_reason_wap_img.join(","), |
this.reasonList = res.data; |
||||||
refund_reason_wap_explain |
}); |
||||||
}) |
}, |
||||||
.then(res => { |
submit() { |
||||||
uni.showToast({ |
const refund_reason_wap_explain = trim(this.refund_reason_wap_explain), |
||||||
title: res.msg, |
text = this.reason; |
||||||
icon: "success", |
if (!text) { |
||||||
duration: 2000 |
uni.showToast({ |
||||||
}); |
title: "请选择退款原因", |
||||||
setTimeout(() => { |
icon: 'none', |
||||||
this.$yrouter.back(); |
duration: 2000 |
||||||
}, 1500); |
}); |
||||||
}) |
return |
||||||
.catch(err => { |
} |
||||||
this.$dialog.error(err.msg||err.response.data.msg); |
postOrderRefund({ |
||||||
}); |
text, |
||||||
} |
uni: this.orderInfo.orderId, |
||||||
}, |
refund_reason_wap_img: this.refund_reason_wap_img.join(","), |
||||||
mounted() { |
refund_reason_wap_explain |
||||||
this.id = this.$yroute.query.id || 0; |
}) |
||||||
this.getOrderDetail(); |
.then(res => { |
||||||
this.getRefundReason(); |
uni.showToast({ |
||||||
} |
title: res.msg, |
||||||
}; |
icon: "success", |
||||||
|
duration: 2000 |
||||||
|
}); |
||||||
|
setTimeout(() => { |
||||||
|
this.$yrouter.back(); |
||||||
|
}, 1500); |
||||||
|
}) |
||||||
|
.catch(err => { |
||||||
|
uni.showToast({ |
||||||
|
title: err.msg || err.response.data.msg, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
this.id = this.$yroute.query.id || 0; |
||||||
|
this.getOrderDetail(); |
||||||
|
this.getRefundReason(); |
||||||
|
} |
||||||
|
}; |
||||||
</script> |
</script> |
||||||
|
@ -1,350 +1,381 @@ |
|||||||
<template> |
<template> |
||||||
<div class="logistics"> |
<view class="logistics"> |
||||||
<div class="header acea-row row-between row-top" v-for="cart in cartInfo" :key="cart.id"> |
<view class="header acea-row row-between row-top" v-for="cart in cartInfo" :key="cart.id"> |
||||||
<div class="pictrue"> |
<view class="pictrue"> |
||||||
<img :src="cart.productInfo.image" /> |
<image :src="cart.productInfo.image" /> |
||||||
</div> |
</view> |
||||||
<div class="text acea-row row-between"> |
<view class="text acea-row row-between"> |
||||||
<div class="name line2">{{ cart.productInfo.store_name }}</div> |
<view class="name line2">{{ cart.productInfo.store_name }}</view> |
||||||
<div class="money"> |
<view class="money"> |
||||||
<div>¥{{ cart.truePrice }}</div> |
<view>¥{{ cart.truePrice }}</view> |
||||||
<div>x{{ cart.cart_num }}</div> |
<view>x{{ cart.cart_num }}</view> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
<div class="logisticsCon" style="margin-bottom: 5px"> |
<view class="logisticsCon" style="margin-bottom: 5px"> |
||||||
<div class="company acea-row row-between-wrapper"> |
<view class="company acea-row row-between-wrapper"> |
||||||
<div class="picTxt acea-row row-between-wrapper"> |
<view class="picTxt acea-row row-between-wrapper"> |
||||||
<div class="iconfont icon-wuliu"></div> |
<view class="iconfont icon-wuliu"></view> |
||||||
<div class="text"> |
<view class="text"> |
||||||
<div> |
<view> |
||||||
<span class="name line1">物流公司:</span> |
<text class="name line1">物流公司:</text> |
||||||
{{ orderInfo.deliveryName }} |
{{ orderInfo.deliveryName }} |
||||||
</div> |
</view> |
||||||
<div class="express line1"> |
<view class="express line1"> |
||||||
<span class="name">快递单号:</span> |
<text class="name">快递单号:</text> |
||||||
{{ orderInfo.deliveryId }} |
{{ orderInfo.deliveryId }} |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
<div |
<view class="copy acea-row row-center-wrapper copy-data" @click="copyClipboard(orderInfo.deliveryId)">复制单号</view> |
||||||
class="copy acea-row row-center-wrapper copy-data" |
</view> |
||||||
@click="copyClipboard(orderInfo.deliveryId)" |
<view class="item" v-for="(express, expressListIndex) in expressList" :key="expressListIndex"> |
||||||
>复制单号</div> |
<view class="circular" :class="expressListIndex === 0 ? 'on' : ''"></view> |
||||||
</div> |
<view class="text"> |
||||||
<div class="item" v-for="(express, expressListIndex) in expressList" :key="expressListIndex"> |
<view :class="expressListIndex === 0 ? 'font-color-red' : ''">{{ express.status }}</view> |
||||||
<div class="circular" :class="expressListIndex === 0 ? 'on' : ''"></div> |
<view class="data">{{ express.time }}</view> |
||||||
<div class="text"> |
</view> |
||||||
<div :class="expressListIndex === 0 ? 'font-color-red' : ''">{{ express.status }}</div> |
</view> |
||||||
<div class="data">{{ express.time }}</div> |
</view> |
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<!-- 物流进度条 --> |
<!-- 物流进度条 --> |
||||||
<div class="div-bg bg-white" style="font-size:12px; background:#fff;"> |
<view class="div-bg bg-white" style="font-size:12px; background:#fff;"> |
||||||
<!--物流跟踪--> |
<!--物流跟踪--> |
||||||
<div style="margin-bottom:5px;"> |
<view style="margin-bottom:5px;"> |
||||||
<div |
<view class="bg-white" style="width: 92%; margin-left: 4%;margin: auto;padding-left: 15px;padding-right: 15px;padding-top: 10px"> |
||||||
class="bg-white" |
<view style="font-size: .26rem;color: #111111; margin: 5px 0"> |
||||||
style="width: 92%; margin-left: 4%;margin: auto;padding-left: 15px;padding-right: 15px;padding-top: 10px" |
物流跟踪 |
||||||
> |
<!--物流跟踪--> |
||||||
<div style="font-size: .26rem;color: #111111; margin: 5px 0"> |
</view> |
||||||
物流跟踪 |
<view> |
||||||
<!--物流跟踪--> |
<view class="track-rcol"> |
||||||
</div> |
<view class="track-list"> |
||||||
<div> |
<view> |
||||||
<div class="track-rcol"> |
<view v-for="(item,logisticsListindex) in logisticsList" :key="logisticsListindex"> |
||||||
<div class="track-list"> |
<view class="active" v-if="logisticsListindex===0"> |
||||||
<ul> |
<view></view> |
||||||
<div v-for="(item,logisticsListindex) in logisticsList" :key="logisticsListindex"> |
<i class="node-icon"></i> |
||||||
<li class="active" v-if="logisticsListindex===0"> |
<text class="txt">{{item.acceptStation}}</text> |
||||||
<div></div> |
<text class="time">{{item.acceptTime}}</text> |
||||||
<i class="node-icon"></i> |
</view> |
||||||
<span class="txt">{{item.acceptStation}}</span> |
<view v-if="logisticsListindex > 0 && logisticsListindex !== logisticsList.length-1"> |
||||||
<span class="time">{{item.acceptTime}}</span> |
<i class="node-icon"></i> |
||||||
</li> |
<text class="txt">{{item.acceptStation}}</text> |
||||||
<li |
<text class="time">{{item.acceptTime}}</text> |
||||||
v-if="logisticsListindex > 0 && logisticsListindex !== logisticsList.length-1" |
</view> |
||||||
> |
<view v-if="logisticsListindex === logisticsList.length-1" class="finall"> |
||||||
<i class="node-icon"></i> |
<i class="div-spilander"></i> |
||||||
<span class="txt">{{item.acceptStation}}</span> |
<i class="node-icon"></i> |
||||||
<span class="time">{{item.acceptTime}}</span> |
<text class="txt">{{item.acceptStation}}</text> |
||||||
</li> |
<text class="time">{{item.acceptTime}}</text> |
||||||
<li v-if="logisticsListindex === logisticsList.length-1" class="finall"> |
</view> |
||||||
<i class="div-spilander"></i> |
</view> |
||||||
<i class="node-icon"></i> |
</view> |
||||||
<span class="txt">{{item.acceptStation}}</span> |
</view> |
||||||
<span class="time">{{item.acceptTime}}</span> |
</view> |
||||||
</li> |
</view> |
||||||
</div> |
</view> |
||||||
</ul> |
</view> |
||||||
</div> |
</view> |
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="no-express" v-if="loaded && !expressList.length"> |
<view class="no-express" v-if="loaded && !expressList.length"> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/noExpress.png'" /> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/noExpress.png'" /> |
||||||
</div> |
</view> |
||||||
<Recommend></Recommend> |
<Recommend></Recommend> |
||||||
</div> |
</view> |
||||||
</template> |
</template> |
||||||
<script> |
<script> |
||||||
import Recommend from "@/components/Recommend"; |
import Recommend from "@/components/Recommend"; |
||||||
import { express, orderDetail } from "@/api/order"; |
import { |
||||||
import { copyClipboard } from "@/utils"; |
express, |
||||||
|
orderDetail |
||||||
|
} from "@/api/order"; |
||||||
|
import { |
||||||
|
copyClipboard |
||||||
|
} from "@/utils"; |
||||||
|
|
||||||
const NAME = "Logistics"; |
const NAME = "Logistics"; |
||||||
|
|
||||||
export default { |
export default { |
||||||
name: NAME, |
name: NAME, |
||||||
components: { |
components: { |
||||||
Recommend |
Recommend |
||||||
}, |
}, |
||||||
data: function() { |
data: function() { |
||||||
return { |
return { |
||||||
id: "", |
id: "", |
||||||
cartInfo: [], |
cartInfo: [], |
||||||
orderInfo: {}, |
orderInfo: {}, |
||||||
expressList: [], |
expressList: [], |
||||||
loaded: false, |
loaded: false, |
||||||
logisticsList: [ |
logisticsList: [{ |
||||||
{ |
message: "暂无数据", |
||||||
message: "暂无数据", |
messageDate: "" |
||||||
messageDate: "" |
}] |
||||||
} |
}; |
||||||
] |
}, |
||||||
}; |
watch: { |
||||||
}, |
$yroute(n) { |
||||||
watch: { |
if (n.name === NAME && this.$yroute.query.id !== this.id) { |
||||||
$yroute(n) { |
this.id = this.$yroute.query.id; |
||||||
if (n.name === NAME && this.$yroute.query.id !== this.id) { |
this.getExpress(); |
||||||
this.id = this.$yroute.query.id; |
} |
||||||
this.getExpress(); |
} |
||||||
} |
}, |
||||||
} |
mounted: function() { |
||||||
}, |
this.id = this.$yroute.query.id; |
||||||
mounted: function() { |
this.getExpress(); |
||||||
this.id = this.$yroute.query.id; |
}, |
||||||
this.getExpress(); |
methods: { |
||||||
}, |
copyClipboard, |
||||||
methods: { |
getExpressInfo() { |
||||||
copyClipboard, |
let params = { |
||||||
getExpressInfo() { |
orderCode: this.id, |
||||||
let params = { |
shipperCode: this.orderInfo.deliverySn, |
||||||
orderCode: this.id, |
logisticCode: this.orderInfo.deliveryId |
||||||
shipperCode: this.orderInfo.deliverySn, |
}; |
||||||
logisticCode: this.orderInfo.deliveryId |
express(params) |
||||||
}; |
.then(res => { |
||||||
express(params) |
this.logisticsList = res.data.traces.reverse(); |
||||||
.then(res => { |
}) |
||||||
this.logisticsList = res.data.traces.reverse(); |
.catch(err => { |
||||||
}) |
uni.showToast({ |
||||||
.catch(err => { |
title: err.msg || err.response.data.msg, |
||||||
this.$dialog.error(err.response.data.msg || "加载失败"); |
icon: 'none', |
||||||
}); |
duration: 2000 |
||||||
}, |
}); |
||||||
getExpress() { |
}); |
||||||
if (!this.id) return this.$dialog.error("订单不存在"); |
}, |
||||||
this.loaded = false; |
getExpress() { |
||||||
orderDetail(this.id) |
if (!this.id) { |
||||||
.then(res => { |
uni.showToast({ |
||||||
this.orderInfo = { |
title: err.msg || err.response.data.msg, |
||||||
deliveryId: res.data.deliveryId, |
icon: 'none', |
||||||
deliveryName: res.data.deliveryName, |
duration: 2000 |
||||||
deliverySn: res.data.deliverySn |
}); |
||||||
}; |
return |
||||||
this.getExpressInfo(); |
} |
||||||
// const result = res.data.express.result || {}; |
this.loaded = false; |
||||||
// this.cartInfo = res.data.order.cartInfo; |
orderDetail(this.id) |
||||||
// this.expressList = result.list || []; |
.then(res => { |
||||||
// this.loaded = true; |
this.orderInfo = { |
||||||
|
deliveryId: res.data.deliveryId, |
||||||
|
deliveryName: res.data.deliveryName, |
||||||
|
deliverySn: res.data.deliverySn |
||||||
|
}; |
||||||
|
this.getExpressInfo(); |
||||||
|
// const result = res.data.express.result || {}; |
||||||
|
// this.cartInfo = res.data.order.cartInfo; |
||||||
|
// this.expressList = result.list || []; |
||||||
|
// this.loaded = true; |
||||||
|
|
||||||
}) |
}) |
||||||
.catch(err => { |
.catch(err => { |
||||||
this.$dialog.error(err.response.data.msg || "加载失败"); |
uni.showToast({ |
||||||
}); |
title: err.msg || err.response.data.msg, |
||||||
} |
icon: 'none', |
||||||
} |
duration: 2000 |
||||||
}; |
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
</script> |
</script> |
||||||
|
|
||||||
<style scoped> |
<style scoped> |
||||||
.no-express { |
.no-express { |
||||||
margin: 1.5rem 0; |
margin: 1.5rem 0; |
||||||
} |
} |
||||||
|
|
||||||
.no-express img { |
.no-express image { |
||||||
width: 6rem; |
width: 6rem; |
||||||
margin: 0 auto; |
margin: 0 auto; |
||||||
display: block; |
display: block; |
||||||
} |
} |
||||||
.message-text { |
|
||||||
font-family: MicrosoftYaHei; |
|
||||||
font-size: 1rem; |
|
||||||
font-weight: normal; |
|
||||||
font-stretch: normal; |
|
||||||
line-height: 3rem; |
|
||||||
letter-spacing: 0rem; |
|
||||||
color: #333333; |
|
||||||
width: 50%; |
|
||||||
} |
|
||||||
.fontblack { |
|
||||||
color: #999999; |
|
||||||
} |
|
||||||
.img2 { |
|
||||||
width: 0.81rem; |
|
||||||
height: 0.8rem; |
|
||||||
float: right; |
|
||||||
} |
|
||||||
.addressshow2 { |
|
||||||
height: auto; |
|
||||||
overflow: hidden; |
|
||||||
text-overflow: ellipsis; |
|
||||||
display: -webkit-box; |
|
||||||
width: 75%; |
|
||||||
-webkit-line-clamp: 2; |
|
||||||
-webkit-box-orient: vertical; |
|
||||||
white-space: normal; |
|
||||||
word-wrap: break-word; |
|
||||||
word-break: break-all; |
|
||||||
font-size: 1rem; |
|
||||||
} |
|
||||||
.addressshow1 { |
|
||||||
height: auto; |
|
||||||
overflow: hidden; |
|
||||||
text-overflow: ellipsis; |
|
||||||
display: -webkit-box; |
|
||||||
width: 75%; |
|
||||||
-webkit-line-clamp: 1; |
|
||||||
-webkit-box-orient: vertical; |
|
||||||
white-space: normal; |
|
||||||
word-wrap: break-word; |
|
||||||
word-break: break-all; |
|
||||||
font-size: 1rem; |
|
||||||
} |
|
||||||
.orderTitle { |
|
||||||
font-size: 1rem; |
|
||||||
color: #333333; |
|
||||||
height: auto; |
|
||||||
overflow: hidden; |
|
||||||
text-overflow: ellipsis; |
|
||||||
display: -webkit-box; |
|
||||||
-webkit-line-clamp: 2; |
|
||||||
-webkit-box-orient: vertical; |
|
||||||
white-space: normal; |
|
||||||
word-wrap: break-word; |
|
||||||
word-break: break-all; |
|
||||||
height: 2.5rem; |
|
||||||
} |
|
||||||
.orderDetail { |
|
||||||
font-size: 0.26rem; |
|
||||||
color: #666666; |
|
||||||
text-align: left; |
|
||||||
} |
|
||||||
.border-ceter { |
|
||||||
width: 92%; |
|
||||||
padding-left: 15px; |
|
||||||
padding-right: 15px; |
|
||||||
} |
|
||||||
.pay-button { |
|
||||||
width: 88%; |
|
||||||
height: 2.6rem; |
|
||||||
position: relative; |
|
||||||
background-color: red; |
|
||||||
color: white; |
|
||||||
|
|
||||||
margin-left: 6%; |
.message-text { |
||||||
} |
font-family: MicrosoftYaHei; |
||||||
ul li { |
font-size: 1rem; |
||||||
list-style: none; |
font-weight: normal; |
||||||
font-size: 0.24rem; |
font-stretch: normal; |
||||||
} |
line-height: 3rem; |
||||||
ul { |
letter-spacing: 0rem; |
||||||
} |
color: #333333; |
||||||
.track-rcol { |
width: 50%; |
||||||
} |
} |
||||||
.track-list { |
|
||||||
position: relative; |
.fontblack { |
||||||
} |
color: #999999; |
||||||
.track-list li { |
} |
||||||
position: relative; |
|
||||||
padding: 0 0 0.5rem 5px; |
.img2 { |
||||||
line-height: 0.3rem; |
width: 0.81rem; |
||||||
border-left: 1px solid #d9d9d9; |
height: 0.8rem; |
||||||
color: #999; |
float: right; |
||||||
} |
} |
||||||
.track-list li.first { |
|
||||||
color: red; |
.addressshow2 { |
||||||
padding-top: 0; |
height: auto; |
||||||
width: 100%; |
overflow: hidden; |
||||||
text-align: left; |
text-overflow: ellipsis; |
||||||
border-left: 1px solid #d9d9d9; |
display: -webkit-box; |
||||||
} |
width: 75%; |
||||||
.track-list li .node-icon { |
-webkit-line-clamp: 2; |
||||||
position: absolute; |
-webkit-box-orient: vertical; |
||||||
left: -6.5px; |
white-space: normal; |
||||||
border-radius: 50%; |
word-wrap: break-word; |
||||||
width: 0.2rem; |
word-break: break-all; |
||||||
height: 0.2rem; |
font-size: 1rem; |
||||||
top: 4px; |
} |
||||||
background-color: #b2b2b2; |
|
||||||
} |
.addressshow1 { |
||||||
.track-list li.active .node-icon { |
height: auto; |
||||||
background-position: 0-72px; |
overflow: hidden; |
||||||
background-color: #ea7c0a; |
text-overflow: ellipsis; |
||||||
width: 0.3rem; |
display: -webkit-box; |
||||||
z-index: 2; |
width: 75%; |
||||||
height: 0.3rem; |
-webkit-line-clamp: 1; |
||||||
position: absolute; |
-webkit-box-orient: vertical; |
||||||
left: -0.19rem; |
white-space: normal; |
||||||
top: 0; |
word-wrap: break-word; |
||||||
border-radius: 50%; |
word-break: break-all; |
||||||
} |
font-size: 1rem; |
||||||
.track-list li .time { |
} |
||||||
margin-right: 20px; |
|
||||||
position: relative; |
.orderTitle { |
||||||
top: 4px; |
font-size: 1rem; |
||||||
display: inline-block; |
color: #333333; |
||||||
vertical-align: middle; |
height: auto; |
||||||
color: #999; |
overflow: hidden; |
||||||
width: 100%; |
text-overflow: ellipsis; |
||||||
text-align: left; |
display: -webkit-box; |
||||||
} |
-webkit-line-clamp: 2; |
||||||
.track-list li .txt { |
-webkit-box-orient: vertical; |
||||||
position: relative; |
white-space: normal; |
||||||
display: inline-block; |
word-wrap: break-word; |
||||||
vertical-align: top; |
word-break: break-all; |
||||||
color: #999; |
height: 2.5rem; |
||||||
left: 0.2rem; |
} |
||||||
top: 0.04rem; |
|
||||||
} |
.orderDetail { |
||||||
.track-list li.first .time { |
font-size: 0.26rem; |
||||||
text-align: left; |
color: #666666; |
||||||
width: 94%; |
text-align: left; |
||||||
color: red; |
} |
||||||
} |
|
||||||
.track-list li.first .txt { |
.border-ceter { |
||||||
color: red; |
width: 92%; |
||||||
text-align: left; |
padding-left: 15px; |
||||||
width: 94%; |
padding-right: 15px; |
||||||
} |
} |
||||||
.track-list li.finall { |
|
||||||
position: relative; |
.pay-button { |
||||||
padding: 0px 0 0.5rem 5px; |
width: 88%; |
||||||
line-height: 18px; |
height: 2.6rem; |
||||||
border-color: white; |
position: relative; |
||||||
border-left: 1px solid #ffffff; |
background-color: red; |
||||||
color: #999; |
color: white; |
||||||
} |
|
||||||
.track-list li.finall .div-spilander { |
margin-left: 6%; |
||||||
width: 1px; |
} |
||||||
position: absolute; |
|
||||||
left: -1.5px; |
ul view { |
||||||
height: 0.5rem; |
list-style: none; |
||||||
background-color: #d9d9d9; |
font-size: 0.24rem; |
||||||
} |
} |
||||||
|
|
||||||
|
ul {} |
||||||
|
|
||||||
|
.track-rcol {} |
||||||
|
|
||||||
|
.track-list { |
||||||
|
position: relative; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view { |
||||||
|
position: relative; |
||||||
|
padding: 0 0 0.5rem 5px; |
||||||
|
line-height: 0.3rem; |
||||||
|
border-left: 1px solid #d9d9d9; |
||||||
|
color: #999; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view.first { |
||||||
|
color: red; |
||||||
|
padding-top: 0; |
||||||
|
width: 100%; |
||||||
|
text-align: left; |
||||||
|
border-left: 1px solid #d9d9d9; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view.node-icon { |
||||||
|
position: absolute; |
||||||
|
left: -6.5px; |
||||||
|
border-radius: 50%; |
||||||
|
width: 0.2rem; |
||||||
|
height: 0.2rem; |
||||||
|
top: 4px; |
||||||
|
background-color: #b2b2b2; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view.active .node-icon { |
||||||
|
background-position: 0-72px; |
||||||
|
background-color: #ea7c0a; |
||||||
|
width: 0.3rem; |
||||||
|
z-index: 2; |
||||||
|
height: 0.3rem; |
||||||
|
position: absolute; |
||||||
|
left: -0.19rem; |
||||||
|
top: 0; |
||||||
|
border-radius: 50%; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view.time { |
||||||
|
margin-right: 20px; |
||||||
|
position: relative; |
||||||
|
top: 4px; |
||||||
|
display: inline-block; |
||||||
|
vertical-align: middle; |
||||||
|
color: #999; |
||||||
|
width: 100%; |
||||||
|
text-align: left; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view.txt { |
||||||
|
position: relative; |
||||||
|
display: inline-block; |
||||||
|
vertical-align: top; |
||||||
|
color: #999; |
||||||
|
left: 0.2rem; |
||||||
|
top: 0.04rem; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view.first .time { |
||||||
|
text-align: left; |
||||||
|
width: 94%; |
||||||
|
color: red; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view.first .txt { |
||||||
|
color: red; |
||||||
|
text-align: left; |
||||||
|
width: 94%; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view.finall { |
||||||
|
position: relative; |
||||||
|
padding: 0px 0 0.5rem 5px; |
||||||
|
line-height: 18px; |
||||||
|
border-color: white; |
||||||
|
border-left: 1px solid #ffffff; |
||||||
|
color: #999; |
||||||
|
} |
||||||
|
|
||||||
|
.track-list view.finall .div-spilander { |
||||||
|
width: 1px; |
||||||
|
position: absolute; |
||||||
|
left: -1.5px; |
||||||
|
height: 0.5rem; |
||||||
|
background-color: #d9d9d9; |
||||||
|
} |
||||||
</style> |
</style> |
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,34 +1,34 @@ |
|||||||
<template> |
<template> |
||||||
<div class="payment-status"> |
<view class="payment-status"> |
||||||
<!--失败时: 用icon-iconfontguanbi fail替换icon-duihao2 bg-color-red--> |
<!--失败时: 用icon-iconfontguanbi fail替换icon-duihao2 bg-color-red--> |
||||||
<div class="iconfont icon-duihao2 bg-color-red"></div> |
<view class="iconfont icon-duihao2 bg-color-red"></view> |
||||||
<!-- 失败时:订单支付失败 --> |
<!-- 失败时:订单支付失败 --> |
||||||
<div class="status">订单支付成功</div> |
<view class="status">订单支付成功</view> |
||||||
<div class="wrapper"> |
<view class="wrapper"> |
||||||
<div class="item acea-row row-between-wrapper"> |
<view class="item acea-row row-between-wrapper"> |
||||||
<div>订单编号</div> |
<view>订单编号</view> |
||||||
<div class="itemCom">wx3265361456134568</div> |
<view class="itemCom">wx3265361456134568</view> |
||||||
</div> |
</view> |
||||||
<div class="item acea-row row-between-wrapper"> |
<view class="item acea-row row-between-wrapper"> |
||||||
<div>下单时间</div> |
<view>下单时间</view> |
||||||
<div class="itemCom">2019-01-09 18:05</div> |
<view class="itemCom">2019-01-09 18:05</view> |
||||||
</div> |
</view> |
||||||
<div class="item acea-row row-between-wrapper"> |
<view class="item acea-row row-between-wrapper"> |
||||||
<div>支付方式</div> |
<view>支付方式</view> |
||||||
<div class="itemCom">微信支付</div> |
<view class="itemCom">微信支付</view> |
||||||
</div> |
</view> |
||||||
<div class="item acea-row row-between-wrapper"> |
<view class="item acea-row row-between-wrapper"> |
||||||
<div>支付金额</div> |
<view>支付金额</view> |
||||||
<div class="itemCom">2222.00</div> |
<view class="itemCom">2222.00</view> |
||||||
</div> |
</view> |
||||||
<!--失败时加上这个 --> |
<!--失败时加上这个 --> |
||||||
<!--<div class='item acea-row row-between-wrapper'>--> |
<!--<view class='item acea-row row-between-wrapper'>--> |
||||||
<!--<div>失败原因</div>--> |
<!--<view>失败原因</view>--> |
||||||
<!--<div class='itemCom'>账户余额不足</div>--> |
<!--<view class='itemCom'>账户余额不足</view>--> |
||||||
<!--</div>--> |
<!--</view>--> |
||||||
</div> |
</view> |
||||||
<!--失败时: 重新购买 --> |
<!--失败时: 重新购买 --> |
||||||
<div class="returnBnt bg-color-red">返回查看订单</div> |
<view class="returnBnt bg-color-red">返回查看订单</view> |
||||||
<div class="returnBnt cart-color">返回首页</div> |
<view class="returnBnt cart-color">返回首页</view> |
||||||
</div> |
</view> |
||||||
</template> |
</template> |
||||||
|
@ -1,161 +1,195 @@ |
|||||||
<template> |
<template> |
||||||
<div class="OrderCancellation"> |
<view class="OrderCancellation"> |
||||||
<div class="header"></div> |
<view class="header"></view> |
||||||
<div class="whiteBg"> |
<view class="whiteBg"> |
||||||
<div class="input"> |
<view class="input"> |
||||||
<input type="number" placeholder="0" v-model="verify_code" /> |
<input type="number" placeholder="0" v-model="verify_code" /> |
||||||
</div> |
</view> |
||||||
<div class="bnt" @click="storeCancellation">立即核销</div> |
<view class="bnt" @click="storeCancellation">立即核销</view> |
||||||
</div> |
</view> |
||||||
<div class="scan" v-if="iswechat"> |
<view class="scan" v-if="iswechat"> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/scan.gif'" @click="openQRCode" /> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/scan.gif'" @click="openQRCode" /> |
||||||
</div> |
</view> |
||||||
<WriteOff :iShidden="iShidden" :orderInfo="orderInfo" @cancel="cancel" @confirm="confirm"></WriteOff> |
<WriteOff :iShidden="iShidden" :orderInfo="orderInfo" @cancel="cancel" @confirm="confirm"></WriteOff> |
||||||
</div> |
</view> |
||||||
</template> |
</template> |
||||||
<style scoped> |
<style scoped> |
||||||
.OrderCancellation .header { |
.OrderCancellation .header { |
||||||
background: url("https://h5.dayouqiantu.cn/static/images/writeOffBg.jpg") no-repeat; |
background: url("https://h5.dayouqiantu.cn/static/images/writeOffBg.jpg") no-repeat; |
||||||
width: 100%; |
width: 100%; |
||||||
height: 3rem; |
height: 3rem; |
||||||
background-size: 100% 100%; |
background-size: 100% 100%; |
||||||
} |
} |
||||||
.OrderCancellation .whiteBg { |
|
||||||
width: 6.9rem; |
.OrderCancellation .whiteBg { |
||||||
background-color: #fff; |
width: 6.9rem; |
||||||
margin: -0.93rem auto 0 auto; |
background-color: #fff; |
||||||
padding-top: 0.8rem; |
margin: -0.93rem auto 0 auto; |
||||||
border-radius: 0.06rem 0.06rem 0 0; |
padding-top: 0.8rem; |
||||||
} |
border-radius: 0.06rem 0.06rem 0 0; |
||||||
.OrderCancellation .whiteBg .input { |
} |
||||||
width: 5.8rem; |
|
||||||
margin: 0 auto; |
.OrderCancellation .whiteBg .input { |
||||||
border-bottom: 0.01rem solid #eee; |
width: 5.8rem; |
||||||
} |
margin: 0 auto; |
||||||
.OrderCancellation .whiteBg .input input { |
border-bottom: 0.01rem solid #eee; |
||||||
padding-bottom: 0.25rem; |
} |
||||||
font-size: 0.6rem; |
|
||||||
color: #282828; |
.OrderCancellation .whiteBg .input input { |
||||||
width: 100%; |
padding-bottom: 0.25rem; |
||||||
text-align: center; |
font-size: 0.6rem; |
||||||
} |
color: #282828; |
||||||
.OrderCancellation .whiteBg .bnt { |
width: 100%; |
||||||
font-size: 0.32rem; |
text-align: center; |
||||||
color: #fff; |
} |
||||||
width: 5.8rem; |
|
||||||
height: 0.86rem; |
.OrderCancellation .whiteBg .bnt { |
||||||
border-radius: 0.43rem; |
font-size: 0.32rem; |
||||||
background-image: linear-gradient(to right, #f67a38 0%, #f11b09 100%); |
color: #fff; |
||||||
background-image: -webkit-linear-gradient(to right, #f67a38 0%, #f11b09 100%); |
width: 5.8rem; |
||||||
background-image: -moz-linear-gradient(to right, #f67a38 0%, #f11b09 100%); |
height: 0.86rem; |
||||||
text-align: center; |
border-radius: 0.43rem; |
||||||
line-height: 0.86rem; |
background-image: linear-gradient(to right, #f67a38 0%, #f11b09 100%); |
||||||
margin: 0.55rem auto 0 auto; |
background-image: -webkit-linear-gradient(to right, #f67a38 0%, #f11b09 100%); |
||||||
} |
background-image: -moz-linear-gradient(to right, #f67a38 0%, #f11b09 100%); |
||||||
.OrderCancellation .scan { |
text-align: center; |
||||||
width: 3rem; |
line-height: 0.86rem; |
||||||
height: 3rem; |
margin: 0.55rem auto 0 auto; |
||||||
margin: 1.1rem auto 0 auto; |
} |
||||||
} |
|
||||||
.OrderCancellation .scan img { |
.OrderCancellation .scan { |
||||||
width: 100%; |
width: 3rem; |
||||||
height: 100%; |
height: 3rem; |
||||||
display: block; |
margin: 1.1rem auto 0 auto; |
||||||
} |
} |
||||||
|
|
||||||
|
.OrderCancellation .scan image { |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
display: block; |
||||||
|
} |
||||||
</style> |
</style> |
||||||
<script> |
<script> |
||||||
import WriteOff from "@/components/WriteOff"; |
import WriteOff from "@/components/WriteOff"; |
||||||
import { isWeixin } from "@/utils"; |
import { |
||||||
// import { wechatEvevt } from "@/libs/wechat"; |
isWeixin |
||||||
import { orderVerific } from "@/api/order"; |
} from "@/utils"; |
||||||
const NAME = "OrderCancellation"; |
// import { wechatEvevt } from "@/libs/wechat"; |
||||||
|
import { |
||||||
|
orderVerific |
||||||
|
} from "@/api/order"; |
||||||
|
const NAME = "OrderCancellation"; |
||||||
|
|
||||||
|
export default { |
||||||
|
name: NAME, |
||||||
|
components: { |
||||||
|
WriteOff |
||||||
|
}, |
||||||
|
props: {}, |
||||||
|
data: function() { |
||||||
|
return { |
||||||
|
iShidden: true, |
||||||
|
iswechat: isWeixin(), |
||||||
|
orderInfo: {}, |
||||||
|
verify_code: "" |
||||||
|
}; |
||||||
|
}, |
||||||
|
mounted: function() {}, |
||||||
|
methods: { |
||||||
|
cancel: function(res) { |
||||||
|
this.iShidden = res; |
||||||
|
}, |
||||||
|
confirm: function() { |
||||||
|
orderVerific(this.verify_code, 1) |
||||||
|
.then(res => { |
||||||
|
this.iShidden = true; |
||||||
|
this.verify_code = ""; |
||||||
|
uni.showToast({ |
||||||
|
title: res.msg, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}); |
||||||
|
}) |
||||||
|
.catch(err => { |
||||||
|
uni.showToast({ |
||||||
|
title: err.msg || err.response.data.msg, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}); |
||||||
|
|
||||||
export default { |
}); |
||||||
name: NAME, |
}, |
||||||
components: { |
storeCancellation: function() { |
||||||
WriteOff |
let ref = /[0-9]{12}/; |
||||||
}, |
if (!this.verify_code) { |
||||||
props: {}, |
uni.showToast({ |
||||||
data: function() { |
title: "请输入核销码", |
||||||
return { |
icon: 'none', |
||||||
iShidden: true, |
duration: 2000 |
||||||
iswechat: isWeixin(), |
}); |
||||||
orderInfo: {}, |
return |
||||||
verify_code: "" |
} |
||||||
}; |
if (!ref.test(this.verify_code)) { |
||||||
}, |
uni.showToast({ |
||||||
mounted: function() {}, |
title: "请输入正确的核销码", |
||||||
methods: { |
icon: 'none', |
||||||
cancel: function(res) { |
duration: 2000 |
||||||
this.iShidden = res; |
}); |
||||||
}, |
return |
||||||
confirm: function() { |
} |
||||||
orderVerific(this.verify_code, 1) |
uni.showLoading({ |
||||||
.then(res => { |
title: "查询中" |
||||||
this.iShidden = true; |
}); |
||||||
this.verify_code = ""; |
orderVerific(this.verify_code, 0) |
||||||
this.$uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); |
.then(res => { |
||||||
}) |
uni.hideLoading(); |
||||||
.catch(res => { |
this.orderInfo = res.data; |
||||||
this.$dialog.error(res.msg); |
this.iShidden = false; |
||||||
}); |
}) |
||||||
}, |
.catch(() => { |
||||||
storeCancellation: function() { |
uni.hideLoading(); |
||||||
let ref = /[0-9]{12}/; |
}); |
||||||
if (!this.verify_code) return this.$dialog.error("请输入核销码"); |
}, |
||||||
if (!ref.test(this.verify_code)) |
openQRCode: function() { |
||||||
return this.$dialog.error("请输入正确的核销码"); |
let that = this; |
||||||
uni.showLoading({ title: "查询中" }); |
// wechatEvevt("scanQRCode", { |
||||||
orderVerific(this.verify_code, 0) |
// needResult: 1, |
||||||
.then(res => { |
// scanType: ["qrCode", "barCode"] |
||||||
uni.hideLoading(); |
// }) |
||||||
this.orderInfo = res.data; |
// .then(res => { |
||||||
this.iShidden = false; |
// if (res.resultStr) { |
||||||
}) |
// that.verify_code = res.resultStr; |
||||||
.catch(() => { |
// that.storeCancellation(); |
||||||
uni.hideLoading(); |
// } else { |
||||||
}); |
// uni.showToast({ |
||||||
}, |
// title: '没有扫描到什么!', |
||||||
openQRCode: function() { |
// icon: "none", |
||||||
let that = this; |
// duration: 2000 |
||||||
// wechatEvevt("scanQRCode", { |
// }); |
||||||
// needResult: 1, |
// } |
||||||
// scanType: ["qrCode", "barCode"] |
// }) |
||||||
// }) |
// .catch(res => { |
||||||
// .then(res => { |
// if (res.is_ready) { |
||||||
// if (res.resultStr) { |
// res.wx.scanQRCode({ |
||||||
// that.verify_code = res.resultStr; |
// needResult: 1, |
||||||
// that.storeCancellation(); |
// scanType: ["qrCode", "barCode"], |
||||||
// } else { |
// success: function(res) { |
||||||
// uni.showToast({ |
// that.verify_code = res.resultStr; |
||||||
// title: '没有扫描到什么!', |
// that.storeCancellation(); |
||||||
// icon: "none", |
// }, |
||||||
// duration: 2000 |
// fail: function(res) { |
||||||
// }); |
// if (res.errMsg == "scanQRCode:permission denied") { |
||||||
// } |
// uni.showToast({ |
||||||
// }) |
// title: '没有权限', |
||||||
// .catch(res => { |
// icon: "none", |
||||||
// if (res.is_ready) { |
// duration: 2000 |
||||||
// res.wx.scanQRCode({ |
// }); |
||||||
// needResult: 1, |
// } |
||||||
// scanType: ["qrCode", "barCode"], |
// } |
||||||
// success: function(res) { |
// }); |
||||||
// that.verify_code = res.resultStr; |
// } |
||||||
// that.storeCancellation(); |
// }); |
||||||
// }, |
} |
||||||
// fail: function(res) { |
} |
||||||
// if (res.errMsg == "scanQRCode:permission denied") { |
}; |
||||||
// uni.showToast({ |
|
||||||
// title: '没有权限', |
|
||||||
// icon: "none", |
|
||||||
// duration: 2000 |
|
||||||
// }); |
|
||||||
// } |
|
||||||
// } |
|
||||||
// }); |
|
||||||
// } |
|
||||||
// }); |
|
||||||
} |
|
||||||
} |
|
||||||
}; |
|
||||||
</script> |
</script> |
||||||
|
@ -1,72 +1,78 @@ |
|||||||
<template> |
<template> |
||||||
<div class="quality-recommend"> |
<view class="quality-recommend"> |
||||||
<div class="slider-banner swiper"> |
<view class="slider-banner swiper"> |
||||||
<swiper indicatorDots="true" v-if="banner.length > 0"> |
<swiper indicatorDots="true" v-if="banner.length > 0"> |
||||||
<block v-for="(item, imgUrlsIndex) in imgUrls" :key="imgUrlsIndex"> |
<block v-for="(item, imgUrlsIndex) in imgUrls" :key="imgUrlsIndex"> |
||||||
<swiper-item> |
<swiper-item> |
||||||
<img :src="item.img" class="slide-image" /> |
<image :src="item.img" class="slide-image" /> |
||||||
</swiper-item> |
</swiper-item> |
||||||
</block> |
</block> |
||||||
</swiper> |
</swiper> |
||||||
</div> |
</view> |
||||||
<div class="title acea-row row-center-wrapper"> |
<view class="title acea-row row-center-wrapper"> |
||||||
<div class="line"></div> |
<view class="line"></view> |
||||||
<div class="name"> |
<view class="name"> |
||||||
<span class="iconfont icon-cuxiaoguanli"></span>促销单品 |
<text class="iconfont icon-cuxiaoguanli"></text>促销单品 |
||||||
</div> |
</view> |
||||||
<div class="line"></div> |
<view class="line"></view> |
||||||
</div> |
</view> |
||||||
<Promotion-good :benefit="goodsList"></Promotion-good> |
<Promotion-good :benefit="goodsList"></Promotion-good> |
||||||
</div> |
</view> |
||||||
</template> |
</template> |
||||||
<script> |
<script> |
||||||
// import { swiper, swiperSlide } from "vue-awesome-swiper"; |
// import { swiper, swiperSlide } from "vue-awesome-swiper"; |
||||||
|
|
||||||
import PromotionGood from "@/components/PromotionGood"; |
import PromotionGood from "@/components/PromotionGood"; |
||||||
import { getGroomList } from "@/api/store"; |
import { |
||||||
export default { |
getGroomList |
||||||
name: "GoodsPromotion", |
} from "@/api/store"; |
||||||
components: { |
export default { |
||||||
// swiper, |
name: "GoodsPromotion", |
||||||
// swiperSlide, |
components: { |
||||||
PromotionGood |
// swiper, |
||||||
}, |
// swiperSlide, |
||||||
props: {}, |
PromotionGood |
||||||
data: function() { |
}, |
||||||
return { |
props: {}, |
||||||
imgUrls: [], |
data: function() { |
||||||
goodsList: [], |
return { |
||||||
RecommendSwiper: { |
imgUrls: [], |
||||||
pagination: { |
goodsList: [], |
||||||
el: ".swiper-pagination", |
RecommendSwiper: { |
||||||
clickable: true |
pagination: { |
||||||
}, |
el: ".swiper-pagination", |
||||||
autoplay: { |
clickable: true |
||||||
disableOnInteraction: false, |
}, |
||||||
delay: 2000 |
autoplay: { |
||||||
}, |
disableOnInteraction: false, |
||||||
loop: true, |
delay: 2000 |
||||||
speed: 1000, |
}, |
||||||
observer: true, |
loop: true, |
||||||
observeParents: true |
speed: 1000, |
||||||
} |
observer: true, |
||||||
}; |
observeParents: true |
||||||
}, |
} |
||||||
mounted: function() { |
}; |
||||||
this.getIndexGroomList(); |
}, |
||||||
}, |
mounted: function() { |
||||||
methods: { |
this.getIndexGroomList(); |
||||||
getIndexGroomList: function() { |
}, |
||||||
let that = this; |
methods: { |
||||||
getGroomList(4) |
getIndexGroomList: function() { |
||||||
.then(res => { |
let that = this; |
||||||
that.imgUrls = res.data.banner; |
getGroomList(4) |
||||||
that.goodsList = res.data.list; |
.then(res => { |
||||||
}) |
that.imgUrls = res.data.banner; |
||||||
.catch(function(res) { |
that.goodsList = res.data.list; |
||||||
this.$dialog.toast({ mes: res.msg }); |
}) |
||||||
}); |
.catch((err) => { |
||||||
} |
uni.showToast({ |
||||||
} |
title: err.msg || err.response.data.msg, |
||||||
}; |
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
</script> |
</script> |
||||||
|
@ -1,249 +1,242 @@ |
|||||||
<template> |
<template> |
||||||
<div class="promoter-list" ref="container"> |
<view class="promoter-list" ref="container"> |
||||||
<div class="header"> |
<view class="header"> |
||||||
<div class="promoterHeader bg-color-red"> |
<view class="promoterHeader bg-color-red"> |
||||||
<div class="headerCon acea-row row-between-wrapper"> |
<view class="headerCon acea-row row-between-wrapper"> |
||||||
<div> |
<view> |
||||||
<div class="name">推广人数</div> |
<view class="name">推广人数</view> |
||||||
<div> |
<view> |
||||||
<span class="num">{{ first + second }}</span |
<text class="num">{{ first + second }}</text> |
||||||
>人 |
<text>人</text> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
<div class="nav acea-row row-around"> |
<view class="nav acea-row row-around"> |
||||||
<div |
<view class="item" :class="screen.grade == 0 ? 'on' : ''" @click="checkGrade(0)"> |
||||||
class="item" |
一级({{ first }}) |
||||||
:class="screen.grade == 0 ? 'on' : ''" |
</view> |
||||||
@click="checkGrade(0)" |
<view class="item" :class="screen.grade == 1 ? 'on' : ''" @click="checkGrade(1)"> |
||||||
> |
二级({{ second }}) |
||||||
一级({{ first }}) |
</view> |
||||||
</div> |
</view> |
||||||
<div |
<view class="search acea-row row-between-wrapper"> |
||||||
class="item" |
<form @submit.prevent="submitForm"> |
||||||
:class="screen.grade == 1 ? 'on' : ''" |
<view class="input"> |
||||||
@click="checkGrade(1)" |
<input placeholder="点击搜索会员名称" v-model="screen.keyword" /> |
||||||
> |
<text class="iconfont icon-guanbi"></text> |
||||||
二级({{ second }}) |
</view> |
||||||
</div> |
</form> |
||||||
</div> |
<view class="iconfont icon-sousuo2"></view> |
||||||
<div class="search acea-row row-between-wrapper"> |
</view> |
||||||
<form @submit.prevent="submitForm"> |
</view> |
||||||
<div class="input"> |
<view class="list"> |
||||||
<input placeholder="点击搜索会员名称" v-model="screen.keyword" /> |
<view class="sortNav acea-row row-middle" :class="fixedState === true ? 'on' : ''"> |
||||||
<span class="iconfont icon-guanbi"></span> |
<view class="sortItem" @click="sort('childCount')"> |
||||||
</div> |
团队排序 |
||||||
</form> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/sort1.png'" v-if="childCount == 1" /> |
||||||
<div class="iconfont icon-sousuo2"></div> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/sort2.png'" v-if="childCount == 2" /> |
||||||
</div> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/sort3.png'" v-if="childCount == 3" /> |
||||||
</div> |
</view> |
||||||
<div class="list"> |
<view class="sortItem" @click="sort('numberCount')"> |
||||||
<div |
金额排序 |
||||||
class="sortNav acea-row row-middle" |
<image :src="$VUE_APP_RESOURCES_URL+'/images/sort1.png'" v-if="numberCount == 1" /> |
||||||
:class="fixedState === true ? 'on' : ''" |
<image :src="$VUE_APP_RESOURCES_URL+'/images/sort2.png'" v-if="numberCount == 2" /> |
||||||
> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/sort3.png'" v-if="numberCount == 3" /> |
||||||
<div class="sortItem" @click="sort('childCount')"> |
</view> |
||||||
团队排序 |
<view class="sortItem" @click="sort('orderCount')"> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/sort1.png'" v-if="childCount == 1" /> |
订单排序 |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/sort2.png'" v-if="childCount == 2" /> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/sort1.png'" v-if="orderCount == 1" /> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/sort3.png'" v-if="childCount == 3" /> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/sort2.png'" v-if="orderCount == 2" /> |
||||||
</div> |
<image :src="$VUE_APP_RESOURCES_URL+'/images/sort3.png'" v-if="orderCount == 3" /> |
||||||
<div class="sortItem" @click="sort('numberCount')"> |
</view> |
||||||
金额排序 |
</view> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/sort1.png'" v-if="numberCount == 1" /> |
<view :class="fixedState === true ? 'sortList' : ''"> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/sort2.png'" v-if="numberCount == 2" /> |
<view class="item acea-row row-between-wrapper" v-for="(val, spreadListIndex) in spreadList" :key="spreadListIndex"> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/sort3.png'" v-if="numberCount == 3" /> |
<view class="picTxt acea-row row-between-wrapper"> |
||||||
</div> |
<view class="pictrue"> |
||||||
<div class="sortItem" @click="sort('orderCount')"> |
<image :src="val.avatar" /> |
||||||
订单排序 |
</view> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/sort1.png'" v-if="orderCount == 1" /> |
<view class="text"> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/sort2.png'" v-if="orderCount == 2" /> |
<view class="name line1">{{ val.nickname }}</view> |
||||||
<img :src="$VUE_APP_RESOURCES_URL+'/images/sort3.png'" v-if="orderCount == 3" /> |
<view>加入时间: {{ val.time }}</view> |
||||||
</div> |
</view> |
||||||
</div> |
</view> |
||||||
<div :class="fixedState === true ? 'sortList' : ''"> |
<view class="right"> |
||||||
<div |
<view> |
||||||
class="item acea-row row-between-wrapper" |
<text class="font-color-red">{{ val.childCount }}</text> 人 |
||||||
v-for="(val, spreadListIndex) in spreadList" |
</view> |
||||||
:key="spreadListIndex" |
<view>{{ val.orderCount }} 单</view> |
||||||
> |
<view>{{ val.numberCount ? val.numberCount : 0 }} 元</view> |
||||||
<div class="picTxt acea-row row-between-wrapper"> |
</view> |
||||||
<div class="pictrue"><img :src="val.avatar" /></div> |
</view> |
||||||
<div class="text"> |
</view> |
||||||
<div class="name line1">{{ val.nickname }}</div> |
</view> |
||||||
<div>加入时间: {{ val.time }}</div> |
<Loading :loaded="loaded" :loading="loading"></Loading> |
||||||
</div> |
</view> |
||||||
</div> |
|
||||||
<div class="right"> |
|
||||||
<div> |
|
||||||
<span class="font-color-red">{{ val.childCount }}</span> 人 |
|
||||||
</div> |
|
||||||
<div>{{ val.orderCount }} 单</div> |
|
||||||
<div>{{ val.numberCount ? val.numberCount : 0 }} 元</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<Loading :loaded="loaded" :loading="loading"></Loading> |
|
||||||
</div> |
|
||||||
</template> |
</template> |
||||||
<script> |
<script> |
||||||
import { getSpreadUser } from "@/api/user"; |
import { |
||||||
import Loading from "@/components/Loading"; |
getSpreadUser |
||||||
export default { |
} from "@/api/user"; |
||||||
name: "PromoterList", |
import Loading from "@/components/Loading"; |
||||||
components: { |
export default { |
||||||
Loading |
name: "PromoterList", |
||||||
}, |
components: { |
||||||
props: {}, |
Loading |
||||||
data: function() { |
}, |
||||||
return { |
props: {}, |
||||||
fixedState: false, |
data: function() { |
||||||
screen: { |
return { |
||||||
page: 1, |
fixedState: false, |
||||||
limit: 15, |
screen: { |
||||||
grade: 0, |
page: 1, |
||||||
keyword: "", |
limit: 15, |
||||||
sort: "" |
grade: 0, |
||||||
}, |
keyword: "", |
||||||
childCount: 2, |
sort: "" |
||||||
numberCount: 2, |
}, |
||||||
orderCount: 2, |
childCount: 2, |
||||||
loaded: false, |
numberCount: 2, |
||||||
loading: false, |
orderCount: 2, |
||||||
spreadList: [], |
loaded: false, |
||||||
loadTitle: "", |
loading: false, |
||||||
first: "", |
spreadList: [], |
||||||
second: "" |
loadTitle: "", |
||||||
}; |
first: "", |
||||||
}, |
second: "" |
||||||
mounted: function() { |
}; |
||||||
this.getSpreadUsers(); |
}, |
||||||
}, |
mounted: function() { |
||||||
onReachBottom() { |
this.getSpreadUsers(); |
||||||
!this.loading && this.getSpreadUsers(); |
}, |
||||||
}, |
onReachBottom() { |
||||||
watch: { |
!this.loading && this.getSpreadUsers(); |
||||||
"screen.sort": function() { |
}, |
||||||
this.screen.page = 0; |
watch: { |
||||||
this.loaded = false; |
"screen.sort": function() { |
||||||
this.loading = false; |
this.screen.page = 0; |
||||||
this.spreadList = []; |
this.loaded = false; |
||||||
this.getSpreadUsers(); |
this.loading = false; |
||||||
} |
this.spreadList = []; |
||||||
}, |
this.getSpreadUsers(); |
||||||
methods: { |
} |
||||||
handleScroll: function() { |
}, |
||||||
// var scrollTop = |
methods: { |
||||||
// document.documentElement.scrollTop || document.body.scrollTop; |
handleScroll: function() { |
||||||
// var offsetTop = document.querySelector(".header").clientHeight; |
// var scrollTop = |
||||||
// if (scrollTop >= offsetTop) { |
// document.documentElement.scrollTop || document.body.scrollTop; |
||||||
// this.fixedState = true; |
// var offsetTop = document.querySelector(".header").clientHeight; |
||||||
// } else { |
// if (scrollTop >= offsetTop) { |
||||||
// this.fixedState = false; |
// this.fixedState = true; |
||||||
// } |
// } else { |
||||||
}, |
// this.fixedState = false; |
||||||
submitForm: function() { |
// } |
||||||
this.screen.page = 0; |
}, |
||||||
this.loaded = false; |
submitForm: function() { |
||||||
this.loading = false; |
this.screen.page = 0; |
||||||
this.spreadList = []; |
this.loaded = false; |
||||||
this.getSpreadUsers(); |
this.loading = false; |
||||||
}, |
this.spreadList = []; |
||||||
getSpreadUsers: function() { |
this.getSpreadUsers(); |
||||||
let that = this, |
}, |
||||||
screen = that.screen; |
getSpreadUsers: function() { |
||||||
if (that.loaded || that.loading) return; |
let that = this, |
||||||
that.loading = true; |
screen = that.screen; |
||||||
getSpreadUser(screen).then( |
if (that.loaded || that.loading) return; |
||||||
res => { |
that.loading = true; |
||||||
that.loading = false; |
getSpreadUser(screen).then( |
||||||
that.spreadList.push.apply(that.spreadList, res.data.list); |
res => { |
||||||
that.loaded = res.data.list.length < that.screen.limit; //判断所有数据是否加载完成; |
that.loading = false; |
||||||
that.loadTitle = that.loaded ? "人家是有底线的" : "上拉加载更多"; |
that.spreadList.push.apply(that.spreadList, res.data.list); |
||||||
that.screen.page = that.screen.page + 1; |
that.loaded = res.data.list.length < that.screen.limit; //判断所有数据是否加载完成; |
||||||
that.first = res.data.total; |
that.loadTitle = that.loaded ? "人家是有底线的" : "上拉加载更多"; |
||||||
that.second = res.data.totalLevel; |
that.screen.page = that.screen.page + 1; |
||||||
}, |
that.first = res.data.total; |
||||||
error => { |
that.second = res.data.totalLevel; |
||||||
that.$dialog.message(error.msg); |
}, |
||||||
}, |
err => { |
||||||
300 |
uni.showToast({ |
||||||
); |
title: err.msg || err.response.data.msg, |
||||||
}, |
icon: 'none', |
||||||
checkGrade: function(val) { |
duration: 2000 |
||||||
if (val == this.screen.grade) return; |
}); |
||||||
else { |
}, |
||||||
this.screen.page = 1; |
300 |
||||||
this.screen.grade = val; |
); |
||||||
this.loading = false; |
}, |
||||||
this.loaded = false; |
checkGrade: function(val) { |
||||||
this.spreadList = []; |
if (val == this.screen.grade) return; |
||||||
this.getSpreadUsers(); |
else { |
||||||
} |
this.screen.page = 1; |
||||||
}, |
this.screen.grade = val; |
||||||
sort: function(types) { |
this.loading = false; |
||||||
let that = this; |
this.loaded = false; |
||||||
switch (types) { |
this.spreadList = []; |
||||||
case "childCount": |
this.getSpreadUsers(); |
||||||
if (that.childCount == 2) { |
} |
||||||
that.childCount = 1; |
}, |
||||||
that.orderCount = 2; |
sort: function(types) { |
||||||
that.numberCount = 2; |
let that = this; |
||||||
that.screen.sort = "childCount DESC"; |
switch (types) { |
||||||
} else if (that.childCount == 1) { |
case "childCount": |
||||||
that.childCount = 3; |
if (that.childCount == 2) { |
||||||
that.orderCount = 2; |
that.childCount = 1; |
||||||
that.numberCount = 2; |
that.orderCount = 2; |
||||||
that.screen.sort = "childCount ASC"; |
that.numberCount = 2; |
||||||
} else if (that.childCount == 3) { |
that.screen.sort = "childCount DESC"; |
||||||
that.childCount = 2; |
} else if (that.childCount == 1) { |
||||||
that.orderCount = 2; |
that.childCount = 3; |
||||||
that.numberCount = 2; |
that.orderCount = 2; |
||||||
that.screen.sort = ""; |
that.numberCount = 2; |
||||||
} |
that.screen.sort = "childCount ASC"; |
||||||
break; |
} else if (that.childCount == 3) { |
||||||
case "numberCount": |
that.childCount = 2; |
||||||
if (that.numberCount == 2) { |
that.orderCount = 2; |
||||||
that.numberCount = 1; |
that.numberCount = 2; |
||||||
that.orderCount = 2; |
that.screen.sort = ""; |
||||||
that.childCount = 2; |
} |
||||||
that.screen.sort = "numberCount DESC"; |
break; |
||||||
} else if (that.numberCount == 1) { |
case "numberCount": |
||||||
that.numberCount = 3; |
if (that.numberCount == 2) { |
||||||
that.orderCount = 2; |
that.numberCount = 1; |
||||||
that.childCount = 2; |
that.orderCount = 2; |
||||||
that.screen.sort = "numberCount ASC"; |
that.childCount = 2; |
||||||
} else if (that.numberCount == 3) { |
that.screen.sort = "numberCount DESC"; |
||||||
that.numberCount = 2; |
} else if (that.numberCount == 1) { |
||||||
that.orderCount = 2; |
that.numberCount = 3; |
||||||
that.childCount = 2; |
that.orderCount = 2; |
||||||
that.screen.sort = ""; |
that.childCount = 2; |
||||||
} |
that.screen.sort = "numberCount ASC"; |
||||||
break; |
} else if (that.numberCount == 3) { |
||||||
case "orderCount": |
that.numberCount = 2; |
||||||
if (that.orderCount == 2) { |
that.orderCount = 2; |
||||||
that.orderCount = 1; |
that.childCount = 2; |
||||||
that.numberCount = 2; |
that.screen.sort = ""; |
||||||
that.childCount = 2; |
} |
||||||
that.screen.sort = "orderCount DESC"; |
break; |
||||||
} else if (that.orderCount == 1) { |
case "orderCount": |
||||||
that.orderCount = 3; |
if (that.orderCount == 2) { |
||||||
that.numberCount = 2; |
that.orderCount = 1; |
||||||
that.childCount = 2; |
that.numberCount = 2; |
||||||
that.screen.sort = "orderCount ASC"; |
that.childCount = 2; |
||||||
} else if (that.orderCount == 3) { |
that.screen.sort = "orderCount DESC"; |
||||||
that.orderCount = 2; |
} else if (that.orderCount == 1) { |
||||||
that.numberCount = 2; |
that.orderCount = 3; |
||||||
that.childCount = 2; |
that.numberCount = 2; |
||||||
that.screen.sort = ""; |
that.childCount = 2; |
||||||
} |
that.screen.sort = "orderCount ASC"; |
||||||
break; |
} else if (that.orderCount == 3) { |
||||||
default: |
that.orderCount = 2; |
||||||
that.screen.sort = ""; |
that.numberCount = 2; |
||||||
} |
that.childCount = 2; |
||||||
} |
that.screen.sort = ""; |
||||||
} |
} |
||||||
}; |
break; |
||||||
|
default: |
||||||
|
that.screen.sort = ""; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
</script> |
</script> |
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue