Commit b48247a7032c5202e77dfd68d02267e2102f01b1
1 parent
e96627e8
积分商城
Showing
34 changed files
with
1788 additions
and
263 deletions
src/components/cardTabs/cardTabs.less
0 → 100644
| 1 | +.tab_cart_box{ | ||
| 2 | + margin: 20px auto; | ||
| 3 | +} | ||
| 4 | +.van-tabs{ | ||
| 5 | + margin:0 10px; | ||
| 6 | +} | ||
| 7 | +.van-tabs--card>.van-tabs__wrap{ | ||
| 8 | + height:auto; | ||
| 9 | +} | ||
| 10 | +.van-tabs__nav--card{ | ||
| 11 | + height:auto; | ||
| 12 | + border:none; | ||
| 13 | +} | ||
| 14 | +.van-tab{ | ||
| 15 | + flex: none; | ||
| 16 | + width: 158px; | ||
| 17 | + height: 52px; | ||
| 18 | + line-height: 52px; | ||
| 19 | + background-color: #F8F8F8; | ||
| 20 | + border-radius: 29px; | ||
| 21 | + border-right:none !important; | ||
| 22 | + font-size: 26px; | ||
| 23 | + font-weight: 400; | ||
| 24 | + color: #999999 !important; | ||
| 25 | + margin-right: 20px; | ||
| 26 | +} | ||
| 27 | +.van-tabs__nav--card .van-tab.van-tab--active{ | ||
| 28 | + background: linear-gradient(132deg, #FFEDD8 0%, #EBCAB3 100%) !important; | ||
| 29 | + font-weight: 500; | ||
| 30 | + color: #70624C !important; | ||
| 31 | +} | ||
| 32 | +.gift_main_box{ | ||
| 33 | + margin: 30px auto; | ||
| 34 | + min-height: 520px; | ||
| 35 | + // 暂无记录提示 | ||
| 36 | + .no_gift_tip{ | ||
| 37 | + width: 100%; | ||
| 38 | + img{ | ||
| 39 | + display: block; | ||
| 40 | + width: 500px; | ||
| 41 | + height: 285px; | ||
| 42 | + margin: 160px 125px 0 125px; | ||
| 43 | + } | ||
| 44 | + .text{ | ||
| 45 | + font-size: 30px; | ||
| 46 | + font-weight: 400; | ||
| 47 | + color: #999999; | ||
| 48 | + line-height: 60px; | ||
| 49 | + margin-top: 19px; | ||
| 50 | + text-align: center; | ||
| 51 | + margin-bottom: 160px; | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + .is_more{ | ||
| 55 | + width:100%; | ||
| 56 | + height: 37px; | ||
| 57 | + font-size: 26px; | ||
| 58 | + font-weight: 400; | ||
| 59 | + color: #999999; | ||
| 60 | + line-height: 37px; | ||
| 61 | + letter-spacing: 1px; | ||
| 62 | + text-align: center; | ||
| 63 | + margin-top:10px; | ||
| 64 | + margin-bottom: 60px; | ||
| 65 | + } | ||
| 66 | +} |
src/components/cardTabs/cardTabs.vue
0 → 100644
| 1 | +<template> | ||
| 2 | +<div class="tab_cart_box"> | ||
| 3 | +<van-tabs @change="change" type="card" v-model="active" animated swipeable> | ||
| 4 | + <van-tab v-for="(item, index) in tags.list" :key="'t'+index" :title="item.key"> | ||
| 5 | + <!-- 实物商品裂变 --> | ||
| 6 | + <div :key="'c' + index" class="gift_main_box"> | ||
| 7 | + <!-- 商品样式 7 列表 goodType=1为积分商城实物商品--> | ||
| 8 | + <div infinite-scroll-immediate-check="true" v-infinite-scroll="loadMore" :infinite-scroll-disabled="phyicalGoods[active].loading" :infinite-scroll-distance="phyicalGoods[active].distance"> | ||
| 9 | + <column-list-box class="column-list-box" @jump="toDetail" | ||
| 10 | + :lists="phyicalGoods[active]" | ||
| 11 | + com="7" goodType="1" company="1"> | ||
| 12 | + </column-list-box> | ||
| 13 | + </div> | ||
| 14 | + <!-- 没有更多了 --> | ||
| 15 | + <div v-show="phyicalGoods[active].list && phyicalGoods[active].list.length == 0 && phyicalGoods[active].isCall" class="no_gift_tip"> | ||
| 16 | + <img src="static/img/no_gift_tip.png" alt=""/> | ||
| 17 | + <div class="text">暂无商品</div> | ||
| 18 | + </div> | ||
| 19 | + <div v-show="phyicalGoods[active].list && phyicalGoods[active].list.length>0 && phyicalGoods[active].isMore" class="is_more"> | ||
| 20 | + 没有更多了 | ||
| 21 | + </div> | ||
| 22 | + </div> | ||
| 23 | + </van-tab> | ||
| 24 | +</van-tabs> | ||
| 25 | +</div> | ||
| 26 | +</template> | ||
| 27 | + | ||
| 28 | +<script> | ||
| 29 | +import columnListBox from "@/components/columnListBox/columnListBox"; | ||
| 30 | +export default { | ||
| 31 | +data () { | ||
| 32 | + return { | ||
| 33 | + active: 0, | ||
| 34 | + } | ||
| 35 | +}, | ||
| 36 | +//部件 | ||
| 37 | + components: { | ||
| 38 | + columnListBox | ||
| 39 | + }, | ||
| 40 | +//静态 | ||
| 41 | + props: ["tags","phyicalGoods"], | ||
| 42 | +//对象内部的属性监听,也叫深度监听 | ||
| 43 | + watch: { | ||
| 44 | + }, | ||
| 45 | +//属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用; | ||
| 46 | + computed: { | ||
| 47 | + }, | ||
| 48 | +//方法表示一个具体的操作,主要书写业务逻辑; | ||
| 49 | + methods: { | ||
| 50 | + change(index,key){ | ||
| 51 | + this.$set(this.tags, "value", this.tags.list[index].value); | ||
| 52 | + this.$emit("tabChange",index); | ||
| 53 | + }, | ||
| 54 | + // 商品详情页 | ||
| 55 | + toDetail(item){ | ||
| 56 | + this.$emit("toDetail",item); | ||
| 57 | + }, | ||
| 58 | + // 下拉加载 | ||
| 59 | + loadMore(){ | ||
| 60 | + this.$emit("loadMore"); | ||
| 61 | + } | ||
| 62 | + }, | ||
| 63 | +//请求数据 | ||
| 64 | + created() { | ||
| 65 | +}, | ||
| 66 | + mounted() { | ||
| 67 | +} | ||
| 68 | +} | ||
| 69 | +</script> | ||
| 70 | + | ||
| 71 | +<style rel="stylesheet/less" lang="less"> | ||
| 72 | +@import './cardTabs'; | ||
| 73 | +</style> | ||
| 74 | + |
src/components/goodsItem_2/goodsItem_2.vue
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | <div class="content-box"> | 9 | <div class="content-box"> |
| 10 | 10 | ||
| 11 | <!-- 因积分商城需要显示白色灰色字体标示 --> | 11 | <!-- 因积分商城需要显示白色灰色字体标示 --> |
| 12 | - <div class="title" :class="{'grey': item.num, 'align-center': pid == '5' || item.num}" v-if="pid == undefined || pid == '1' || pid == '3' || pid == '4' || pid == '5'">{{item.title}}</div> | 12 | + <div class="title" :class="{'grey': item.num, 'align-center': pid == '5' || item.num}" v-if="pid == undefined || pid == '1' || pid == '3' || pid == '4' || (pid == '5' && item.title)">{{item.title}}</div> |
| 13 | 13 | ||
| 14 | <!-- 因积分商城不价格所有加上 !item.grade判断 --> | 14 | <!-- 因积分商城不价格所有加上 !item.grade判断 --> |
| 15 | <div class="price-box" v-if="pid != '5'"> | 15 | <div class="price-box" v-if="pid != '5'"> |
src/components/goodsItem_8/goodsItem_8.vue
| @@ -19,8 +19,11 @@ | @@ -19,8 +19,11 @@ | ||
| 19 | </div> | 19 | </div> |
| 20 | <div class="bottom-box"> | 20 | <div class="bottom-box"> |
| 21 | <div class="price-box"> | 21 | <div class="price-box"> |
| 22 | - <div class="symbol">¥ </div> | 22 | + <!-- shop_type==1为积分实物商品展示积分加价格 --> |
| 23 | + <div v-if="isIntegral" class="integer">{{item.num}}积分 + </div> | ||
| 24 | + <div v-else class="symbol">¥ </div> | ||
| 23 | <div class="integer">{{item.price}}</div> | 25 | <div class="integer">{{item.price}}</div> |
| 26 | + <div class="symbol">元</div> | ||
| 24 | <div class="decimal"></div> | 27 | <div class="decimal"></div> |
| 25 | <div class="prices" v-if="sty && item.prices && parseFloat(item.prices) > 0 && parseFloat(item.prices) > parseFloat(item.price)">¥{{item.prices}}</div> | 28 | <div class="prices" v-if="sty && item.prices && parseFloat(item.prices) > 0 && parseFloat(item.prices) > parseFloat(item.price)">¥{{item.prices}}</div> |
| 26 | </div> | 29 | </div> |
| @@ -47,7 +50,7 @@ | @@ -47,7 +50,7 @@ | ||
| 47 | 50 | ||
| 48 | } | 51 | } |
| 49 | }, | 52 | }, |
| 50 | - props: ["item", "sty", "discountType"], | 53 | + props: ["item", "sty", "discountType", "isIntegral"], |
| 51 | computed: { | 54 | computed: { |
| 52 | 55 | ||
| 53 | /** | 56 | /** |
src/components/shareItem/shareItem.less
0 → 100644
| 1 | +@charset "UTF-8"; | ||
| 2 | +.share_item_box{ | ||
| 3 | + margin:30px; | ||
| 4 | + display: flex; | ||
| 5 | + justify-content: space-between; | ||
| 6 | + .share_item{ | ||
| 7 | + padding: 18px 26px; | ||
| 8 | + background: #fff; | ||
| 9 | + border-radius: 10px; | ||
| 10 | + display: flex; | ||
| 11 | + align-items: center; | ||
| 12 | + .left{ | ||
| 13 | + display: block; | ||
| 14 | + width:28px; | ||
| 15 | + height:28px; | ||
| 16 | + } | ||
| 17 | + .title{ | ||
| 18 | + font-size: 24px; | ||
| 19 | + font-weight: 400; | ||
| 20 | + color: #333333; | ||
| 21 | + margin:0 10px; | ||
| 22 | + } | ||
| 23 | + .right{ | ||
| 24 | + display: block; | ||
| 25 | + width: 20px; | ||
| 26 | + height: 20px; | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | +} | ||
| 0 | \ No newline at end of file | 30 | \ No newline at end of file |
src/components/shareItem/shareItem.vue
0 → 100644
| 1 | +<template> | ||
| 2 | +<div> | ||
| 3 | + <div class="share_item_box"> | ||
| 4 | + <div v-for="(item,index) in shareItems" :key="index" @click="func(item)" class="share_item"> | ||
| 5 | + <img class="left" :src="item.simg" alt=""/> | ||
| 6 | + <div class="title">{{item.title}}</div> | ||
| 7 | + <img class="right" :src="item.icon" alt=""/> | ||
| 8 | + </div> | ||
| 9 | + </div> | ||
| 10 | +</div> | ||
| 11 | +</template> | ||
| 12 | + | ||
| 13 | +<script> | ||
| 14 | +export default { | ||
| 15 | +data () { | ||
| 16 | + return { | ||
| 17 | + } | ||
| 18 | +}, | ||
| 19 | +//部件 | ||
| 20 | + components: { | ||
| 21 | + }, | ||
| 22 | +//静态 | ||
| 23 | + props: ["shareItems"], | ||
| 24 | +//对象内部的属性监听,也叫深度监听 | ||
| 25 | + watch: { | ||
| 26 | + }, | ||
| 27 | +//属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用; | ||
| 28 | + computed: { | ||
| 29 | + }, | ||
| 30 | +//方法表示一个具体的操作,主要书写业务逻辑; | ||
| 31 | + methods: { | ||
| 32 | + /** | ||
| 33 | + * 功能按钮 | ||
| 34 | + * @param {object} shareItems [props对象] | ||
| 35 | + * @param {int} index [索引] | ||
| 36 | + */ | ||
| 37 | + func(item) { | ||
| 38 | + if (typeof item.func === "function") { | ||
| 39 | + item.func(item); | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | + }, | ||
| 43 | +//请求数据 | ||
| 44 | + created() { | ||
| 45 | +}, | ||
| 46 | + mounted() { | ||
| 47 | +} | ||
| 48 | +} | ||
| 49 | +</script> | ||
| 50 | + | ||
| 51 | +<style rel="stylesheet/less" lang="less" scoped> | ||
| 52 | +@import "shareItem"; | ||
| 53 | +</style> | ||
| 54 | + |
src/pages/common/common.vue
| @@ -410,13 +410,10 @@ | @@ -410,13 +410,10 @@ | ||
| 410 | * @param {object} ext [分享扩展参数,可选参数] | 410 | * @param {object} ext [分享扩展参数,可选参数] |
| 411 | */ | 411 | */ |
| 412 | toShare(type, id, ext = null) { | 412 | toShare(type, id, ext = null) { |
| 413 | - | ||
| 414 | // 判断APP内 | 413 | // 判断APP内 |
| 415 | if (this.isCNLive.value) { | 414 | if (this.isCNLive.value) { |
| 416 | - | ||
| 417 | // 调用分享(新方法) | 415 | // 调用分享(新方法) |
| 418 | if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.toShare) { | 416 | if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.toShare) { |
| 419 | - | ||
| 420 | // 分享 | 417 | // 分享 |
| 421 | if (ext) { | 418 | if (ext) { |
| 422 | window.webkit.messageHandlers.toShare.postMessage({body: {type: type, id: id, ext: JSON.stringify(ext)}}); | 419 | window.webkit.messageHandlers.toShare.postMessage({body: {type: type, id: id, ext: JSON.stringify(ext)}}); |
src/pages/exchangeRanking/exchangeRanking.less
0 → 100644
| 1 | +@charset "UTF-8"; | ||
| 2 | + | ||
| 3 | +.hot-sale-list-page { | ||
| 4 | + background-color: #F6F6F6; | ||
| 5 | + min-height: 100vh; | ||
| 6 | + .call-app-box { | ||
| 7 | + position: fixed; | ||
| 8 | + top: 0; | ||
| 9 | + z-index: 100; | ||
| 10 | + } | ||
| 11 | + .back-box { | ||
| 12 | + position: fixed; | ||
| 13 | + top: 0; | ||
| 14 | + z-index: 100; | ||
| 15 | + background-color: #ffffff; | ||
| 16 | + } | ||
| 17 | + .pl { | ||
| 18 | + background-color: transparent; | ||
| 19 | + width: 100%; | ||
| 20 | + &.is-open-app { | ||
| 21 | + height: 122px; | ||
| 22 | + } | ||
| 23 | + &.is-cnlive { | ||
| 24 | + height: 93px; | ||
| 25 | + } | ||
| 26 | + } | ||
| 27 | + .main-box { | ||
| 28 | + min-height: 480px; | ||
| 29 | + background-repeat: no-repeat; | ||
| 30 | + background-size: 100%; | ||
| 31 | + min-height: 64vw; | ||
| 32 | + background-position-y: top; | ||
| 33 | + background-color: #F6F6F6; | ||
| 34 | + .section { | ||
| 35 | + margin: 0 auto; | ||
| 36 | + width: 690px; | ||
| 37 | + height: auto; | ||
| 38 | + border-radius: 24px; | ||
| 39 | + overflow: hidden; | ||
| 40 | + &:last-child { | ||
| 41 | + margin-bottom: 0; | ||
| 42 | + } | ||
| 43 | + &.goods-list { | ||
| 44 | + padding-top: 220px; | ||
| 45 | + /deep/ .goods-item-8-box { | ||
| 46 | + background-color: #ffffff; | ||
| 47 | + margin-bottom: 30px; | ||
| 48 | + border-radius: 24px; | ||
| 49 | + } | ||
| 50 | + .discount-flag { | ||
| 51 | + position: absolute; | ||
| 52 | + top: 10px; | ||
| 53 | + left: 10px; | ||
| 54 | + z-index: 1; | ||
| 55 | + background: linear-gradient(90deg, #F9EE7A 0%, #FAD844 100%); | ||
| 56 | + padding: 1px 8px; | ||
| 57 | + color: #945A08; | ||
| 58 | + font-size: 20px; | ||
| 59 | + font-weight: 400; | ||
| 60 | + border-radius: 6px; | ||
| 61 | + } | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | + } | ||
| 65 | +} | ||
| 0 | \ No newline at end of file | 66 | \ No newline at end of file |
src/pages/exchangeRanking/exchangeRanking.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div class="hot-sale-list-page"> | ||
| 3 | + | ||
| 4 | + <!-- H5唤起App组件 --> | ||
| 5 | + <call-app-box class="call-app-box" ref="callApp" v-if="!isCNLive.value && $parent.isOpenApp.value" | ||
| 6 | + :callApps="$parent.callApps"> | ||
| 7 | + </call-app-box> | ||
| 8 | + | ||
| 9 | + <!-- 后退导航 --> | ||
| 10 | + <back-box class="back-box" :class="{'hide': $route.query.hideBack == true}" :style="'padding-top: ' + $parent.top.value + 'px'" v-if="isCNLive.value" @back="back" | ||
| 11 | + :backs="backs"> | ||
| 12 | + </back-box> | ||
| 13 | + | ||
| 14 | + <!-- pl --> | ||
| 15 | + <div class="pl" :class="{'is-cnlive': isCNLive.value, 'is-open-app': $parent.isOpenApp.value, 'hide': $route.query.hideBack == true}" :style="'padding-top: ' + $parent.top.value + 'px'"></div> | ||
| 16 | + | ||
| 17 | + <!-- 主区域 --> | ||
| 18 | + <div class="main-box" :style="{backgroundImage: 'url(' + headerImg + ')'}"> | ||
| 19 | + | ||
| 20 | + <!-- 商品列表 --> | ||
| 21 | + <div class="section goods-list"> | ||
| 22 | + | ||
| 23 | + <!-- 商品列表 --> | ||
| 24 | + <goods-item-8 v-for="(item, index) in goodsLists" :key="index" @jump="toDetail" @primary="primary" | ||
| 25 | + :item="item" | ||
| 26 | + sty="2" | ||
| 27 | + isIntegral="true"> | ||
| 28 | + | ||
| 29 | + <!-- 添加flag --> | ||
| 30 | + <flag slot="flag" v-if="flags && flags.icon && flags.icon[index]" | ||
| 31 | + :flag="flags.icon[index]" | ||
| 32 | + :position="flags.position" | ||
| 33 | + :width="flags.width"> | ||
| 34 | + </flag> | ||
| 35 | + </goods-item-8> | ||
| 36 | + </div> | ||
| 37 | + <div style="clear: both;"></div> | ||
| 38 | + </div> | ||
| 39 | + | ||
| 40 | + <!-- 回到顶部按钮 --> | ||
| 41 | + <goto-top | ||
| 42 | + :top="parseInt(150)"> | ||
| 43 | + </goto-top> | ||
| 44 | + </div> | ||
| 45 | +</template> | ||
| 46 | + | ||
| 47 | +<script> | ||
| 48 | + | ||
| 49 | + // 引入组件 | ||
| 50 | + import { Toast, Indicator } from "mint-ui"; | ||
| 51 | + import callAppBox from "@/components/callAppBox/callAppBox"; | ||
| 52 | + import backBox from "@/components/backBox/backBox"; | ||
| 53 | + import goodsItem8 from "@/components/goodsItem_8/goodsItem_8"; | ||
| 54 | + import flag from "@/components/flag/flag"; | ||
| 55 | + import gotoTop from "@/components/gotoTop/gotoTop"; | ||
| 56 | + | ||
| 57 | + export default { | ||
| 58 | + name: 'hotSaleListPage', | ||
| 59 | + data () { | ||
| 60 | + return { | ||
| 61 | + title: "", // 标题 | ||
| 62 | + backs: null, // 后退按钮组 | ||
| 63 | + headerImg: '', // 头部图片 | ||
| 64 | + goodsLists: null, // 商品列表 | ||
| 65 | + flags: null // 产品排名flag | ||
| 66 | + } | ||
| 67 | + }, | ||
| 68 | + components: { | ||
| 69 | + callAppBox, | ||
| 70 | + backBox, | ||
| 71 | + goodsItem8, | ||
| 72 | + flag, | ||
| 73 | + gotoTop | ||
| 74 | + }, | ||
| 75 | + created() { | ||
| 76 | + | ||
| 77 | + // 设置标题 | ||
| 78 | + this.$set(this, "title", "兑换排行榜"); | ||
| 79 | + | ||
| 80 | + // 判断是否在App内 | ||
| 81 | + if (this.isCNLive.value) { | ||
| 82 | + | ||
| 83 | + // 添加后退按钮组“后退”和“分享”按钮 | ||
| 84 | + this.$set(this, 'backs', { | ||
| 85 | + funcs: { | ||
| 86 | + back: { | ||
| 87 | + icon: "static/img/icon_back.png" | ||
| 88 | + }, | ||
| 89 | + funcArray: [ | ||
| 90 | + { | ||
| 91 | + icon: "static/img/icon_share.png", | ||
| 92 | + func: this.toShare | ||
| 93 | + } | ||
| 94 | + ] | ||
| 95 | + } | ||
| 96 | + }); | ||
| 97 | + | ||
| 98 | + // 设置标题 | ||
| 99 | + this.$set(this.backs, 'title', '兑换排行榜'); | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + // 兑换排行榜新接口 | ||
| 103 | + this.getIntegralNewGoodsList(); | ||
| 104 | + | ||
| 105 | + // 设置头部图片地址 | ||
| 106 | + this.$set(this, 'headerImg', 'static/img/pointsMall/header_hot.png'); | ||
| 107 | + | ||
| 108 | + // 设置产品排名flag对象 | ||
| 109 | + this.$set(this, 'flags', { | ||
| 110 | + icon: [ | ||
| 111 | + 'static/img/icon_n1.png', | ||
| 112 | + 'static/img/icon_n2.png', | ||
| 113 | + 'static/img/icon_n3.png' | ||
| 114 | + ], | ||
| 115 | + position: { | ||
| 116 | + top: -6, | ||
| 117 | + left: 20 | ||
| 118 | + } | ||
| 119 | + }); | ||
| 120 | + }, | ||
| 121 | + methods: { | ||
| 122 | + | ||
| 123 | + /** | ||
| 124 | + * 兑换排行榜新接口 | ||
| 125 | + */ | ||
| 126 | + getIntegralNewGoodsList() { | ||
| 127 | + | ||
| 128 | + // 加载中提示 | ||
| 129 | + Indicator.open("加载中..."); | ||
| 130 | + | ||
| 131 | + // 获取证书请求接口 | ||
| 132 | + this.http("/Api/" + (this.getApiVersion().LuckDraw) + "/integralNewGoodsList", { | ||
| 133 | + type: 4, | ||
| 134 | + // uid: this.getStore("uid"), | ||
| 135 | + page: 1, | ||
| 136 | + }, this.getIntegralNewGoodsListCallback, { | ||
| 137 | + method: "POST" | ||
| 138 | + }); | ||
| 139 | + }, | ||
| 140 | + | ||
| 141 | + /** | ||
| 142 | + * 兑换排行榜新接口回调 | ||
| 143 | + * @param {Object} res [服务器返回数据] | ||
| 144 | + * @param {Object} ext [扩展参数] | ||
| 145 | + */ | ||
| 146 | + getIntegralNewGoodsListCallback(res, ext) { | ||
| 147 | + | ||
| 148 | + // 加载完成 | ||
| 149 | + Indicator.close(); | ||
| 150 | + | ||
| 151 | + // 返回处理 | ||
| 152 | + if (res.code == 200) { | ||
| 153 | + | ||
| 154 | + // 解构数据 | ||
| 155 | + let { data: datas } = res; | ||
| 156 | + | ||
| 157 | + /* 获取库“”数据 开始 */ | ||
| 158 | + | ||
| 159 | + this.$set(this, 'goodsLists', datas.goods); | ||
| 160 | + | ||
| 161 | + /* 获取库“”数据 结束 */ | ||
| 162 | + | ||
| 163 | + } else if (res.code == 400) { | ||
| 164 | + | ||
| 165 | + // 获取失败 | ||
| 166 | + Toast(res.message); | ||
| 167 | + } else { | ||
| 168 | + | ||
| 169 | + // 获取失败 | ||
| 170 | + Toast("获取数据失败"); | ||
| 171 | + } | ||
| 172 | + }, | ||
| 173 | + | ||
| 174 | + /** | ||
| 175 | + * 跳转商品详情 | ||
| 176 | + * @param {Object} item [数据对象] | ||
| 177 | + */ | ||
| 178 | + toDetail (item) { | ||
| 179 | + if (this.isCNLive.value) { | ||
| 180 | + // 校验登录 | ||
| 181 | + if (this.$parent.checkLogin()) { | ||
| 182 | + // 通用跳转跳转到商品详情页新打开webview | ||
| 183 | + if (typeof this.$parent.gotoDetail === 'function') { | ||
| 184 | + | ||
| 185 | + // 设置跳转参数 | ||
| 186 | + let params = { | ||
| 187 | + type: '5', | ||
| 188 | + to: window.location.origin + '/html/select_good/1/#/goodDetails?goodsId=' + item.id, | ||
| 189 | + shop_type: '' | ||
| 190 | + }; | ||
| 191 | + | ||
| 192 | + // 页面跳转 | ||
| 193 | + this.$parent.gotoDetail(params); | ||
| 194 | + } | ||
| 195 | + } | ||
| 196 | + } else { | ||
| 197 | + this.$parent.callApp(); | ||
| 198 | + } | ||
| 199 | + }, | ||
| 200 | + | ||
| 201 | + /** | ||
| 202 | + * 唤起App封装 | ||
| 203 | + */ | ||
| 204 | + openApp() { | ||
| 205 | + | ||
| 206 | + this.$nextTick(() => { | ||
| 207 | + | ||
| 208 | + // 唤起App | ||
| 209 | + if (typeof this.$parent.callAppModal === 'function' && typeof this.$refs.callApp === 'object') { | ||
| 210 | + | ||
| 211 | + // 设置唤起参数 | ||
| 212 | + let options = { | ||
| 213 | + success: this.$refs.callApp.callApp | ||
| 214 | + } | ||
| 215 | + | ||
| 216 | + // 唤起App | ||
| 217 | + this.$parent.callAppModal(options); | ||
| 218 | + } | ||
| 219 | + }); | ||
| 220 | + }, | ||
| 221 | + | ||
| 222 | + /** | ||
| 223 | + * 项目按钮事件 | ||
| 224 | + * @param {Object} item [数据对象] | ||
| 225 | + */ | ||
| 226 | + primary(item) { | ||
| 227 | + | ||
| 228 | + // 跳转商品详情 | ||
| 229 | + this.toDetail(item); | ||
| 230 | + }, | ||
| 231 | + | ||
| 232 | + /** | ||
| 233 | + * 分享 | ||
| 234 | + */ | ||
| 235 | + toShare() { | ||
| 236 | + | ||
| 237 | + // 判断分享 | ||
| 238 | + if (typeof this.$parent.toShare === 'function') { | ||
| 239 | + this.$parent.toShare(70, this.$route.query.id || 1); | ||
| 240 | + } | ||
| 241 | + }, | ||
| 242 | + | ||
| 243 | + /** | ||
| 244 | + * 后退 | ||
| 245 | + */ | ||
| 246 | + back() { | ||
| 247 | + | ||
| 248 | + // 判断是否有处理函数 | ||
| 249 | + if (typeof this.$parent.back === 'function') { | ||
| 250 | + | ||
| 251 | + // 后退 | ||
| 252 | + this.$parent.back(); | ||
| 253 | + } else { | ||
| 254 | + | ||
| 255 | + // 后退 | ||
| 256 | + window.history.go(-1); | ||
| 257 | + } | ||
| 258 | + } | ||
| 259 | + }, | ||
| 260 | + head: { | ||
| 261 | + title () { | ||
| 262 | + return { | ||
| 263 | + inner: this.title | ||
| 264 | + } | ||
| 265 | + } | ||
| 266 | + }, | ||
| 267 | + watch: { | ||
| 268 | + | ||
| 269 | + // 设置页面标题 | ||
| 270 | + title(newVal) { | ||
| 271 | + if (this.$store.state.browser.toLowerCase() == "qq" && this.$store.state.deviceType.toLowerCase() == "iphone") { | ||
| 272 | + this.$iFrame.insertIFrame(newVal); | ||
| 273 | + } else { | ||
| 274 | + this.$emit("updateHead"); | ||
| 275 | + } | ||
| 276 | + } | ||
| 277 | + }, | ||
| 278 | + mounted() { | ||
| 279 | + | ||
| 280 | + // 如果是App外,设置唤起App和微信内分享参数 | ||
| 281 | + if (!this.isCNLive.value) { | ||
| 282 | + | ||
| 283 | + // 唤起详情页 | ||
| 284 | + if (typeof this.$parent.getOpenApp === "function") { | ||
| 285 | + this.$parent.getOpenApp({ | ||
| 286 | + type: 70, | ||
| 287 | + id: this.$route.query.id || 1, | ||
| 288 | + url: "" | ||
| 289 | + }); | ||
| 290 | + } | ||
| 291 | + | ||
| 292 | + // 分享详情页 | ||
| 293 | + if (typeof this.$parent.getShareData === "function") { | ||
| 294 | + this.$parent.getShareData({ | ||
| 295 | + type: 70, | ||
| 296 | + id: this.$route.query.id || 1, | ||
| 297 | + url: "" | ||
| 298 | + }); | ||
| 299 | + } | ||
| 300 | + } | ||
| 301 | + } | ||
| 302 | + } | ||
| 303 | +</script> | ||
| 304 | + | ||
| 305 | +<!-- Add "scoped" attribute to limit CSS to this component only --> | ||
| 306 | +<style rel="stylesheet/less" lang='less' scoped> | ||
| 307 | + @import "exchangeRanking"; | ||
| 308 | +</style> | ||
| 0 | \ No newline at end of file | 309 | \ No newline at end of file |
src/pages/goodDetails/goodDetails.less
| @@ -28,6 +28,9 @@ | @@ -28,6 +28,9 @@ | ||
| 28 | height:750px | 28 | height:750px |
| 29 | } | 29 | } |
| 30 | .main-box{ | 30 | .main-box{ |
| 31 | + padding-bottom: 0; | ||
| 32 | + padding-bottom: constant(safe-area-inset-bottom); | ||
| 33 | + padding-bottom: env(safe-area-inset-bottom); | ||
| 31 | .title{ | 34 | .title{ |
| 32 | // width: 414px; | 35 | // width: 414px; |
| 33 | font-size: 34px; | 36 | font-size: 34px; |
| @@ -232,6 +235,30 @@ | @@ -232,6 +235,30 @@ | ||
| 232 | line-height: 130px; | 235 | line-height: 130px; |
| 233 | margin: 0 30px; | 236 | margin: 0 30px; |
| 234 | } | 237 | } |
| 238 | + .line{ | ||
| 239 | + width: 1px; | ||
| 240 | + height: 40px; | ||
| 241 | + background-color: #C8C8C8; | ||
| 242 | + margin: 0 30px 0 10px | ||
| 243 | + } | ||
| 244 | + .collection_box{ | ||
| 245 | + &.mar_left20{ | ||
| 246 | + margin-left: 40px; | ||
| 247 | + } | ||
| 248 | + img{ | ||
| 249 | + display: block; | ||
| 250 | + width: 40px; | ||
| 251 | + height: 40px; | ||
| 252 | + } | ||
| 253 | + div{ | ||
| 254 | + font-size: 18px; | ||
| 255 | + font-weight: 400; | ||
| 256 | + color: #333333; | ||
| 257 | + line-height: 25px; | ||
| 258 | + text-align: center; | ||
| 259 | + margin-top: 10px; | ||
| 260 | + } | ||
| 261 | + } | ||
| 235 | .btn{ | 262 | .btn{ |
| 236 | flex: 1; | 263 | flex: 1; |
| 237 | margin: 20px 30px; | 264 | margin: 20px 30px; |
| @@ -326,12 +353,17 @@ | @@ -326,12 +353,17 @@ | ||
| 326 | padding:70px 0; | 353 | padding:70px 0; |
| 327 | border-bottom: solid 1px #E4E4E4; | 354 | border-bottom: solid 1px #E4E4E4; |
| 328 | .num_tip{ | 355 | .num_tip{ |
| 329 | - width: 128px; | 356 | + width: 350px; |
| 330 | height: 40px; | 357 | height: 40px; |
| 331 | font-size: 28px; | 358 | font-size: 28px; |
| 332 | font-weight: 500; | 359 | font-weight: 500; |
| 333 | color: #707070; | 360 | color: #707070; |
| 334 | line-height: 40px; | 361 | line-height: 40px; |
| 362 | + display: flex; | ||
| 363 | + span{ | ||
| 364 | + color: #FC1541; | ||
| 365 | + margin-left: 20px; | ||
| 366 | + } | ||
| 335 | } | 367 | } |
| 336 | .right{ | 368 | .right{ |
| 337 | display: flex; | 369 | display: flex; |
src/pages/goodDetails/goodDetails.vue
| @@ -49,7 +49,7 @@ | @@ -49,7 +49,7 @@ | ||
| 49 | </div> | 49 | </div> |
| 50 | <div> | 50 | <div> |
| 51 | <!-- <span v-if="goodsInfo && goodsInfo.price" class="price">¥{{goodsInfo.price}}</span> --> | 51 | <!-- <span v-if="goodsInfo && goodsInfo.price" class="price">¥{{goodsInfo.price}}</span> --> |
| 52 | - <span v-if="goodsInfo && goodsInfo.num" class="integral">{{parseInt(goodsInfo.num)>9999?this.formatDecimal((parseInt(goodsInfo.num) / 10000), 0) +"万":goodsInfo.num}}积分<span v-show="goodsInfo.price>0"> +{{goodsInfo.price}}元</span></span> | 52 | + <span v-if="goodsInfo && goodsInfo.num" class="integral">{{parseInt(goodsInfo.num)>9999?this.formatDecimal((parseInt(goodsInfo.num) / 10000), 0) +"万":goodsInfo.num}}积分<span v-show="goodsInfo.price>0"> + {{goodsInfo.price}}元</span></span> |
| 53 | <!-- <span class="integral-in">积分</span> --> | 53 | <!-- <span class="integral-in">积分</span> --> |
| 54 | </div> | 54 | </div> |
| 55 | </div> | 55 | </div> |
| @@ -142,13 +142,24 @@ | @@ -142,13 +142,24 @@ | ||
| 142 | <div v-if="goodsInfo && goodsInfo.stock != 0"> | 142 | <div v-if="goodsInfo && goodsInfo.stock != 0"> |
| 143 | <!-- 积分充足 --> | 143 | <!-- 积分充足 --> |
| 144 | <div v-if="parseInt(goodsInfo.grade || 0)>parseInt(goodsInfo.num) || parseInt(goodsInfo.grade || 0) == parseInt(goodsInfo.num)" class="footer"> | 144 | <div v-if="parseInt(goodsInfo.grade || 0)>parseInt(goodsInfo.num) || parseInt(goodsInfo.grade || 0) == parseInt(goodsInfo.num)" class="footer"> |
| 145 | + <div class="collection_box mar_left20" @click="onCell"> | ||
| 146 | + <img v-if="goodsInfo.is_cell == 1" src="static/img/pointsMall/collection2.png" alt="" /> | ||
| 147 | + <img v-else src="static/img/pointsMall/collection.png" alt="" /> | ||
| 148 | + <div>收藏</div> | ||
| 149 | + </div> | ||
| 145 | <div class="btn" @click="exchange"> | 150 | <div class="btn" @click="exchange"> |
| 146 | 立即兑换 | 151 | 立即兑换 |
| 147 | </div> | 152 | </div> |
| 148 | </div> | 153 | </div> |
| 149 | <!-- 积分不足页脚显示 --> | 154 | <!-- 积分不足页脚显示 --> |
| 150 | - <div v-if="parseInt(goodsInfo.grade || 0)<parseInt(goodsInfo.num)" class="footer"> | 155 | + <div v-if="parseInt(goodsInfo.grade || 0) < parseInt(goodsInfo.num)" class="footer"> |
| 151 | <div class="desc">还差{{parseInt(goodsInfo.num)-parseInt(goodsInfo.grade || 0)}}积分</div> | 156 | <div class="desc">还差{{parseInt(goodsInfo.num)-parseInt(goodsInfo.grade || 0)}}积分</div> |
| 157 | + <div class="line"></div> | ||
| 158 | + <div class="collection_box" @click="onCell"> | ||
| 159 | + <img v-if="goodsInfo.is_cell == 1" src="static/img/pointsMall/collection2.png" alt="" /> | ||
| 160 | + <img v-else src="static/img/pointsMall/collection.png" alt="" /> | ||
| 161 | + <div>收藏</div> | ||
| 162 | + </div> | ||
| 152 | <div class="btn" @click="jumpClientIntegralList"> | 163 | <div class="btn" @click="jumpClientIntegralList"> |
| 153 | 获取积分 | 164 | 获取积分 |
| 154 | </div> | 165 | </div> |
| @@ -156,6 +167,11 @@ | @@ -156,6 +167,11 @@ | ||
| 156 | </div> | 167 | </div> |
| 157 | <!-- 有积分商品售罄 --> | 168 | <!-- 有积分商品售罄 --> |
| 158 | <div v-else-if="goodsInfo && goodsInfo.stock == 0" class="footer"> | 169 | <div v-else-if="goodsInfo && goodsInfo.stock == 0" class="footer"> |
| 170 | + <div class="collection_box mar_left20" @click="onCell"> | ||
| 171 | + <img v-if="goodsInfo.is_cell == 1" src="static/img/pointsMall/collection2.png" alt="" /> | ||
| 172 | + <img v-else src="static/img/pointsMall/collection.png" alt="" /> | ||
| 173 | + <div>收藏</div> | ||
| 174 | + </div> | ||
| 159 | <div class="btn grey"> | 175 | <div class="btn grey"> |
| 160 | 补货中 | 176 | 补货中 |
| 161 | </div> | 177 | </div> |
| @@ -185,9 +201,9 @@ | @@ -185,9 +201,9 @@ | ||
| 185 | </div> | 201 | </div> |
| 186 | <!--购买数量--> | 202 | <!--购买数量--> |
| 187 | <div class="num_box"> | 203 | <div class="num_box"> |
| 188 | - <div class="num_tip">购买数量</div> | 204 | + <div class="num_tip">购买数量<span v-if="goodsInfo && goodsInfo.min_buy_num">(起购数量{{goodsInfo.min_buy_num}}件)</span></div> |
| 189 | <div class="right"> | 205 | <div class="right"> |
| 190 | - <van-stepper theme="round" input-width="40px" input-size="32px" button-size="32px" v-model="stepperValue" min="1" :max="(goodsInfo && goodsInfo.stock > -1) ?goodsInfo.stock :'999'" integer async-change @change="onChange"/> | 206 | + <van-stepper theme="round" input-width="40px" input-size="32px" button-size="32px" v-model="stepperValue" :min="goodsInfo && goodsInfo.min_buy_num" :max="(goodsInfo && goodsInfo.stock > -1) ?goodsInfo.stock :'999'" integer async-change @change="onChange"/> |
| 191 | <!-- <img src="static/img/reduce.png" alt="" /> | 207 | <!-- <img src="static/img/reduce.png" alt="" /> |
| 192 | <div class="num">1</div> | 208 | <div class="num">1</div> |
| 193 | <img src="static/img/plus.png" alt="" /> --> | 209 | <img src="static/img/plus.png" alt="" /> --> |
| @@ -226,7 +242,7 @@ export default { | @@ -226,7 +242,7 @@ export default { | ||
| 226 | show: false, // 是否显示底部支付模块 | 242 | show: false, // 是否显示底部支付模块 |
| 227 | stepperValue: 1, // 进步器 | 243 | stepperValue: 1, // 进步器 |
| 228 | version: this.$route.query.version, //长版本号(ios) | 244 | version: this.$route.query.version, //长版本号(ios) |
| 229 | - ver: this.$route.query.version //短版本号(Android) | 245 | + ver: this.$route.query.version, //短版本号(Android) |
| 230 | } | 246 | } |
| 231 | }, | 247 | }, |
| 232 | //部件 | 248 | //部件 |
| @@ -460,7 +476,7 @@ export default { | @@ -460,7 +476,7 @@ export default { | ||
| 460 | // 实物商品不提示用积分 | 476 | // 实物商品不提示用积分 |
| 461 | if (this.goodsInfo.shop_type == 1) { | 477 | if (this.goodsInfo.shop_type == 1) { |
| 462 | // 判断安卓版本1.7.3.3展示ios1.9.0显示实物弹出底部数量填写 | 478 | // 判断安卓版本1.7.3.3展示ios1.9.0显示实物弹出底部数量填写 |
| 463 | - this.versionJudgment() | 479 | + this.versionJudgment(); |
| 464 | // 弹出填写地址 | 480 | // 弹出填写地址 |
| 465 | // this.addAddressCallback() | 481 | // this.addAddressCallback() |
| 466 | } else { | 482 | } else { |
| @@ -494,15 +510,15 @@ export default { | @@ -494,15 +510,15 @@ export default { | ||
| 494 | /** | 510 | /** |
| 495 | * 分享 | 511 | * 分享 |
| 496 | */ | 512 | */ |
| 497 | - // toShare () { | ||
| 498 | - // // 判断分享 | ||
| 499 | - // if (typeof this.$parent.toShare === 'function') { | ||
| 500 | - // this.$parent.toShare(45, "1", ""); | ||
| 501 | - // } | ||
| 502 | - // }, | 513 | + toShare () { |
| 514 | + // 判断分享 | ||
| 515 | + if (typeof this.$parent.toShare === 'function') { | ||
| 516 | + this.$parent.toShare(71, "1",(this.$route.query.goodsId? {"goodsId":this.$route.query.goodsId} : "")); | ||
| 517 | + } | ||
| 518 | + }, | ||
| 503 | /** | 519 | /** |
| 504 | - * 积分兑换接口 | ||
| 505 | - */ | 520 | + * 积分兑换接口 |
| 521 | + */ | ||
| 506 | addIntegralOrder () { | 522 | addIntegralOrder () { |
| 507 | // 加载中提示 | 523 | // 加载中提示 |
| 508 | Indicator.open("加载中..."); | 524 | Indicator.open("加载中..."); |
| @@ -540,18 +556,20 @@ export default { | @@ -540,18 +556,20 @@ export default { | ||
| 540 | // 提示语判断 | 556 | // 提示语判断 |
| 541 | let tipMessage; | 557 | let tipMessage; |
| 542 | if (datas.shop_type == 2) { | 558 | if (datas.shop_type == 2) { |
| 543 | - tipMessage = "红包已存入您的账户,可前往“我的”—“我的卡券查看”" | 559 | + tipMessage = "红包已存入您的账户,前往“我的”—“我的卡券查看”" |
| 544 | } else if (datas.shop_type == 3) { | 560 | } else if (datas.shop_type == 3) { |
| 545 | - tipMessage = "付费音频已存入您的账户,可前往“我的”—“我的付费内容”—“已购内容收听”" | 561 | + tipMessage = "付费音频已存入您的账户,前往“我的”—“我的付费内容”—“已购内容收听”" |
| 546 | } | 562 | } |
| 547 | // 显示查看地址弹框 | 563 | // 显示查看地址弹框 |
| 548 | let options = { | 564 | let options = { |
| 549 | message: tipMessage, | 565 | message: tipMessage, |
| 550 | messageAlign: "center", | 566 | messageAlign: "center", |
| 551 | - confirmButtonText: "我知道了", | ||
| 552 | - confirmButtonCallback: (this.$route.query.AppJump?this.$parent.destroy:"") | 567 | + confirmButtonText: "确定", |
| 568 | + showCancelButton: true, | ||
| 569 | + cancelButtonText: "取消", | ||
| 570 | + confirmButtonCallback: (this.$route.query.AppJump?this.$parent.destroy:this.jumpType), | ||
| 553 | // confirmButtonCallback: this.addAddressCallback, | 571 | // confirmButtonCallback: this.addAddressCallback, |
| 554 | - // params: { shopType: datas.shop_type, id: datas.id } | 572 | + params: datas.shop_type |
| 555 | }; | 573 | }; |
| 556 | this.$set(this.$parent, "showOptions", options); | 574 | this.$set(this.$parent, "showOptions", options); |
| 557 | // 显示通用浮层 | 575 | // 显示通用浮层 |
| @@ -576,6 +594,31 @@ export default { | @@ -576,6 +594,31 @@ export default { | ||
| 576 | Toast(res.message); | 594 | Toast(res.message); |
| 577 | } | 595 | } |
| 578 | }, | 596 | }, |
| 597 | + // type=2跳转原生优惠券列表3跳转原生购买内容列表 | ||
| 598 | + jumpType(type){ | ||
| 599 | + // 判断APP内 | ||
| 600 | + if (this.isCNLive.value) { | ||
| 601 | + if(type == 2){ | ||
| 602 | + // (判断app内是否有该方法) | ||
| 603 | + if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.jumpCoupon) { | ||
| 604 | + // 跳转到优惠券列表 | ||
| 605 | + window.webkit.messageHandlers.jumpCoupon.postMessage({ body: {} }); | ||
| 606 | + } else if (window.obj && window.obj.jumpCoupon) { | ||
| 607 | + // 跳转到优惠券列表 | ||
| 608 | + window.obj.jumpCoupon(); | ||
| 609 | + } | ||
| 610 | + }else if(type == 3){ | ||
| 611 | + // (判断app内是否有该方法) | ||
| 612 | + if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.JumpToPaidContent) { | ||
| 613 | + // 跳转到付费内容 | ||
| 614 | + window.webkit.messageHandlers.JumpToPaidContent.postMessage({ body: {} }); | ||
| 615 | + } else if (window.obj && window.obj.JumpToPaidContent) { | ||
| 616 | + // 跳转到付费内容 | ||
| 617 | + window.obj.JumpToPaidContent(); | ||
| 618 | + } | ||
| 619 | + } | ||
| 620 | + } | ||
| 621 | + }, | ||
| 579 | // 填写地址 | 622 | // 填写地址 |
| 580 | // addAddressCallback () { | 623 | // addAddressCallback () { |
| 581 | // this.pointsToast_control = true; | 624 | // this.pointsToast_control = true; |
| @@ -597,6 +640,8 @@ export default { | @@ -597,6 +640,8 @@ export default { | ||
| 597 | // 跳转到原生的任务列表 | 640 | // 跳转到原生的任务列表 |
| 598 | window.obj.jumpClientIntegralList(); | 641 | window.obj.jumpClientIntegralList(); |
| 599 | } | 642 | } |
| 643 | + }else{ | ||
| 644 | + this.$parent.callApp(); | ||
| 600 | } | 645 | } |
| 601 | }, | 646 | }, |
| 602 | /** | 647 | /** |
| @@ -643,6 +688,49 @@ export default { | @@ -643,6 +688,49 @@ export default { | ||
| 643 | Toast("获取积分商品详情页失败"); | 688 | Toast("获取积分商品详情页失败"); |
| 644 | } | 689 | } |
| 645 | }, | 690 | }, |
| 691 | + /** | ||
| 692 | + * 商品收藏 | ||
| 693 | + */ | ||
| 694 | + onCell () { | ||
| 695 | + if(this.isCNLive.value){ | ||
| 696 | + // 加载中提示 | ||
| 697 | + Indicator.open("加载中..."); | ||
| 698 | + // 获取证书请求接口 | ||
| 699 | + this.http("/Api/" + this.getApiVersion().LuckDraw + "/cell", { | ||
| 700 | + pid: this.$route.query.goodsId, // 商品ID | ||
| 701 | + uid: this.getStore("uid") // 用户ID | ||
| 702 | + }, this.onCellCallback, { | ||
| 703 | + method: "POST" | ||
| 704 | + }); | ||
| 705 | + }else{ | ||
| 706 | + this.$parent.callApp(); | ||
| 707 | + } | ||
| 708 | + }, | ||
| 709 | + /** | ||
| 710 | + * 商品收藏接口回调 | ||
| 711 | + * @param {Object} res [服务器返回数据] | ||
| 712 | + * @param {Object} ext [扩展参数] | ||
| 713 | + */ | ||
| 714 | + onCellCallback (res, ext) { | ||
| 715 | + // 加载完成 | ||
| 716 | + Indicator.close(); | ||
| 717 | + // 返回处理 | ||
| 718 | + if (res.code == 200) { | ||
| 719 | + if(this.goodsInfo.is_cell == 0){ | ||
| 720 | + this.$set(this.goodsInfo, "is_cell",1) | ||
| 721 | + Toast("已收藏"); | ||
| 722 | + }else if(this.goodsInfo.is_cell == 1){ | ||
| 723 | + this.$set(this.goodsInfo, "is_cell",0) | ||
| 724 | + Toast("已取消"); | ||
| 725 | + }; | ||
| 726 | + } else if (res.code == 400) { | ||
| 727 | + // 获取积分商品详情页失败 | ||
| 728 | + Toast(res.message); | ||
| 729 | + } else { | ||
| 730 | + // 获取积分商品详情页失败 | ||
| 731 | + Toast("获取积分商品详情页失败"); | ||
| 732 | + } | ||
| 733 | + }, | ||
| 646 | /** | 734 | /** |
| 647 | * app选中地址回选 | 735 | * app选中地址回选 |
| 648 | * @param {Object} addressInfo [服务器返回数据] | 736 | * @param {Object} addressInfo [服务器返回数据] |
| @@ -672,7 +760,7 @@ export default { | @@ -672,7 +760,7 @@ export default { | ||
| 672 | // 获取商品ID | 760 | // 获取商品ID |
| 673 | let goodsId = this.$route.query.goodsId; | 761 | let goodsId = this.$route.query.goodsId; |
| 674 | if (goodsId) { | 762 | if (goodsId) { |
| 675 | - // 获取商品信息 | 763 | + // 获取商品信息 |
| 676 | this.getGoodsInfo(goodsId); | 764 | this.getGoodsInfo(goodsId); |
| 677 | } | 765 | } |
| 678 | // ios从url获取安卓localStorage | 766 | // ios从url获取安卓localStorage |
| @@ -694,13 +782,13 @@ export default { | @@ -694,13 +782,13 @@ export default { | ||
| 694 | funcs: { | 782 | funcs: { |
| 695 | back: { | 783 | back: { |
| 696 | icon: "static/img/icon_back.png" | 784 | icon: "static/img/icon_back.png" |
| 697 | - } | ||
| 698 | - // funcArray: [ | ||
| 699 | - // { | ||
| 700 | - // icon: "static/img/icon_share.png", | ||
| 701 | - // func: this.toShare | ||
| 702 | - // } | ||
| 703 | - // ] | 785 | + }, |
| 786 | + funcArray: [ | ||
| 787 | + { | ||
| 788 | + icon: "static/img/icon_share.png", | ||
| 789 | + func: this.toShare | ||
| 790 | + } | ||
| 791 | + ] | ||
| 704 | } | 792 | } |
| 705 | }); | 793 | }); |
| 706 | 794 | ||
| @@ -728,16 +816,25 @@ export default { | @@ -728,16 +816,25 @@ export default { | ||
| 728 | // that.show = false; | 816 | // that.show = false; |
| 729 | // }; | 817 | // }; |
| 730 | // 如果是App外,设置唤起App和微信内分享参数 | 818 | // 如果是App外,设置唤起App和微信内分享参数 |
| 731 | - // if (!this.isCNLive.value) { | ||
| 732 | - // // 设置积分首页唤起app参数 | ||
| 733 | - // if (typeof this.$parent.getOpenApp === "function") { | ||
| 734 | - // this.$parent.getOpenApp({ | ||
| 735 | - // type: 45, | ||
| 736 | - // id: 1, | ||
| 737 | - // url: "" | ||
| 738 | - // }); | ||
| 739 | - // } | ||
| 740 | - // } | 819 | + if (!this.isCNLive.value) { |
| 820 | + // 设置积分首页唤起app参数 | ||
| 821 | + if (typeof this.$parent.getOpenApp === "function") { | ||
| 822 | + this.$parent.getOpenApp({ | ||
| 823 | + type: 71, | ||
| 824 | + id: "1", | ||
| 825 | + url: "", | ||
| 826 | + ext: this.$route.query.goodsId ? {"goodsId":this.$route.query.goodsId} : "" | ||
| 827 | + }); | ||
| 828 | + } | ||
| 829 | + if (typeof this.$parent.getShareData === "function") { | ||
| 830 | + this.$parent.getShareData({ | ||
| 831 | + type: 71, | ||
| 832 | + id: 1, | ||
| 833 | + url: "", | ||
| 834 | + ext: this.$route.query.goodsId ? {"goodsId":this.$route.query.goodsId} : "" | ||
| 835 | + }); | ||
| 836 | + } | ||
| 837 | + } | ||
| 741 | // // 地址回选原生回调 | 838 | // // 地址回选原生回调 |
| 742 | // if (this.isiPhone.value || this.isiPad.value) { | 839 | // if (this.isiPhone.value || this.isiPad.value) { |
| 743 | // var that = this; | 840 | // var that = this; |
src/pages/partyBuildingPointsMall/partyBuildingPointsMall.vue
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | <div class="gift_zone_detail"> | 2 | <div class="gift_zone_detail"> |
| 3 | 3 | ||
| 4 | <!-- 导航栏 --> | 4 | <!-- 导航栏 --> |
| 5 | - <div class="nav"> | 5 | + <div class="nav" :style="'padding-top: ' + $parent.top.value + 'px'"> |
| 6 | 6 | ||
| 7 | <!-- navBar --> | 7 | <!-- navBar --> |
| 8 | <nav-bar @back="back" | 8 | <nav-bar @back="back" |
| @@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
| 10 | </nav-bar> | 10 | </nav-bar> |
| 11 | </div> | 11 | </div> |
| 12 | 12 | ||
| 13 | - <div class="pl"></div> | 13 | + <div class="pl" :style="'padding-top: ' + $parent.top.value + 'px'"></div> |
| 14 | <!-- 商品样式 7 列表 --> | 14 | <!-- 商品样式 7 列表 --> |
| 15 | <div class="top_main"> | 15 | <div class="top_main"> |
| 16 | <!-- 头部 --> | 16 | <!-- 头部 --> |
src/pages/pointsExchangeRecords/pointsExchangeRecords.less
| 1 | .records_back{ | 1 | .records_back{ |
| 2 | - background: #F6F6F6; | 2 | + // background: #F6F6F6; |
| 3 | min-height: 100vh; | 3 | min-height: 100vh; |
| 4 | margin-bottom: 10px; | 4 | margin-bottom: 10px; |
| 5 | .com_box{ | 5 | .com_box{ |
| @@ -7,24 +7,25 @@ | @@ -7,24 +7,25 @@ | ||
| 7 | background: #FFFFFF; | 7 | background: #FFFFFF; |
| 8 | border-radius: 24px; | 8 | border-radius: 24px; |
| 9 | .item_box{ | 9 | .item_box{ |
| 10 | - margin: 0 30px; | 10 | + // margin: 0 30px; |
| 11 | border-bottom: solid 2px #EAEAEA; | 11 | border-bottom: solid 2px #EAEAEA; |
| 12 | display: flex; | 12 | display: flex; |
| 13 | padding: 30px 0; | 13 | padding: 30px 0; |
| 14 | img{ | 14 | img{ |
| 15 | display: flex; | 15 | display: flex; |
| 16 | - width: 190px; | ||
| 17 | - height: 190px; | 16 | + width: 180px; |
| 17 | + height: 180px; | ||
| 18 | } | 18 | } |
| 19 | .right{ | 19 | .right{ |
| 20 | flex: 1; | 20 | flex: 1; |
| 21 | margin-left: 32px; | 21 | margin-left: 32px; |
| 22 | .name{ | 22 | .name{ |
| 23 | height: 40px; | 23 | height: 40px; |
| 24 | - font-size: 28px; | 24 | + font-size: 30px; |
| 25 | font-weight: 400; | 25 | font-weight: 400; |
| 26 | - color: #333333; | 26 | + color: #666666; |
| 27 | line-height: 40px; | 27 | line-height: 40px; |
| 28 | + font-weight: 500; | ||
| 28 | display: -webkit-box; | 29 | display: -webkit-box; |
| 29 | -webkit-line-clamp: 1; | 30 | -webkit-line-clamp: 1; |
| 30 | /*! autoprefixer: off */ | 31 | /*! autoprefixer: off */ |
| @@ -57,15 +58,15 @@ | @@ -57,15 +58,15 @@ | ||
| 57 | color: #FC1541; | 58 | color: #FC1541; |
| 58 | line-height: 40px; | 59 | line-height: 40px; |
| 59 | text-align: left; | 60 | text-align: left; |
| 60 | - margin-top: 24px; | 61 | + margin-top: 42px; |
| 61 | } | 62 | } |
| 62 | .exchange_time{ | 63 | .exchange_time{ |
| 63 | margin-top: 10px; | 64 | margin-top: 10px; |
| 64 | height: 33px; | 65 | height: 33px; |
| 65 | - font-size: 24px; | 66 | + font-size: 28px; |
| 66 | font-weight: 400; | 67 | font-weight: 400; |
| 67 | color: #9B9B9B; | 68 | color: #9B9B9B; |
| 68 | - line-height: 33px; | 69 | + margin-top: 10px; |
| 69 | } | 70 | } |
| 70 | .btn-box{ | 71 | .btn-box{ |
| 71 | display: flex; | 72 | display: flex; |
| @@ -148,6 +149,7 @@ | @@ -148,6 +149,7 @@ | ||
| 148 | .title{ | 149 | .title{ |
| 149 | display: flex; | 150 | display: flex; |
| 150 | position: relative; | 151 | position: relative; |
| 152 | + border-bottom: 1px solid #E6E6E6; | ||
| 151 | .goback{ | 153 | .goback{ |
| 152 | display: block; | 154 | display: block; |
| 153 | width: 38px; | 155 | width: 38px; |
| @@ -164,7 +166,6 @@ | @@ -164,7 +166,6 @@ | ||
| 164 | } | 166 | } |
| 165 | // 占位 | 167 | // 占位 |
| 166 | .title_box_lh{ | 168 | .title_box_lh{ |
| 167 | - background-color: transparent; | ||
| 168 | height: 93px; | 169 | height: 93px; |
| 169 | } | 170 | } |
| 170 | } | 171 | } |
| 171 | \ No newline at end of file | 172 | \ No newline at end of file |
src/pages/pointsExchangeRecords/pointsExchangeRecords.vue
| @@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
| 7 | 7 | ||
| 8 | <!--返回按钮--> | 8 | <!--返回按钮--> |
| 9 | <img @click="goback" class="goback" src="static/img/icon_back.png" /> | 9 | <img @click="goback" class="goback" src="static/img/icon_back.png" /> |
| 10 | - <div class="text">兑换记录</div> | 10 | + <div class="text">我的订单</div> |
| 11 | </div> | 11 | </div> |
| 12 | </div> | 12 | </div> |
| 13 | 13 | ||
| @@ -21,12 +21,12 @@ | @@ -21,12 +21,12 @@ | ||
| 21 | <div class="right"> | 21 | <div class="right"> |
| 22 | <div class="name">{{item.title}}</div> | 22 | <div class="name">{{item.title}}</div> |
| 23 | <div v-show="item.address_name && item.address_address && item.address_phone" class="address_name"> | 23 | <div v-show="item.address_name && item.address_address && item.address_phone" class="address_name"> |
| 24 | - 收货人: <span> {{item.address_name}}</span> <span> {{item.address_phone}}</span> <span> {{item.address_address}}</span> | 24 | + 收货人: <span> {{item.address_name}}</span> <span> {{resetPhone(item.address_phone)}}</span> <span> {{item.address_address}}</span> |
| 25 | </div> | 25 | </div> |
| 26 | <div v-show="item.price || item.total" class="exchange_type"> | 26 | <div v-show="item.price || item.total" class="exchange_type"> |
| 27 | <span v-show="item.total && $route.query.type==3">{{item.total}}积分</span> | 27 | <span v-show="item.total && $route.query.type==3">{{item.total}}积分</span> |
| 28 | <span class="灰色" v-show="item.total && $route.query.type==7">{{item.total}}健康值</span> | 28 | <span class="灰色" v-show="item.total && $route.query.type==7">{{item.total}}健康值</span> |
| 29 | - <span v-show="parseInt(item.price)>0">+{{item.price}}元</span> | 29 | + <span v-show="item.price>0"> + {{item.price}}元</span> |
| 30 | </div> | 30 | </div> |
| 31 | <div class="exchange_time"> | 31 | <div class="exchange_time"> |
| 32 | 兑换时间 {{item.create_time*1000 | datetime('yyyy-MM-dd hh:mm:ss')}} | 32 | 兑换时间 {{item.create_time*1000 | datetime('yyyy-MM-dd hh:mm:ss')}} |
| @@ -49,7 +49,7 @@ | @@ -49,7 +49,7 @@ | ||
| 49 | <!-- 暂无记录展示 --> | 49 | <!-- 暂无记录展示 --> |
| 50 | <div v-show="list.length == 0 && isCall" class="no_gift_tip"> | 50 | <div v-show="list.length == 0 && isCall" class="no_gift_tip"> |
| 51 | <img src="static/img/no_gift_tip.png" alt=""/> | 51 | <img src="static/img/no_gift_tip.png" alt=""/> |
| 52 | - <div class="text">暂无兑换记录</div> | 52 | + <div class="text">暂无我的订单</div> |
| 53 | </div> | 53 | </div> |
| 54 | <div v-show="list.length>0 && isMore ==0" class="is_more"> | 54 | <div v-show="list.length>0 && isMore ==0" class="is_more"> |
| 55 | 没有更多了 | 55 | 没有更多了 |
| @@ -63,7 +63,7 @@ | @@ -63,7 +63,7 @@ | ||
| 63 | <script> | 63 | <script> |
| 64 | // 引入组件 | 64 | // 引入组件 |
| 65 | import { Toast, Indicator } from "mint-ui"; | 65 | import { Toast, Indicator } from "mint-ui"; |
| 66 | -// import appAddressToast from "@/components/appAddressToast/appAddressToast"; | 66 | +// import appAddressToast from "@/components/appAddressToast/appAddressToast"; |
| 67 | export default { | 67 | export default { |
| 68 | data () { | 68 | data () { |
| 69 | return { | 69 | return { |
| @@ -92,16 +92,16 @@ export default { | @@ -92,16 +92,16 @@ export default { | ||
| 92 | methods: { | 92 | methods: { |
| 93 | // 跳转原生商品详情页 | 93 | // 跳转原生商品详情页 |
| 94 | jumpOrderDes (item) { | 94 | jumpOrderDes (item) { |
| 95 | - if (item.shop_type == 1 && item.address_name && item.address_phone && item.address_address) { // 1实物 2是虚拟商品 3红包 | 95 | + if (item.shop_type == 1) { // 1实物 2是虚拟商品 3红包 && item.address_name && item.address_phone && item.address_address |
| 96 | // 判断APP内 | 96 | // 判断APP内 |
| 97 | if (this.isCNLive.value) { | 97 | if (this.isCNLive.value) { |
| 98 | // (判断app内是否有该方法) | 98 | // (判断app内是否有该方法) |
| 99 | if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.jumpOrderDes) { | 99 | if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.jumpOrderDes) { |
| 100 | // 跳转到原生的任务列表 | 100 | // 跳转到原生的任务列表 |
| 101 | - window.webkit.messageHandlers.jumpOrderDes.postMessage({ body: { orderId: parseInt(item.price)>0?item.order_id:item.id, type: parseInt(item.price)>0? 4 :1 } }) | 101 | + window.webkit.messageHandlers.jumpOrderDes.postMessage({ body: { orderId: item.price>0?item.order_id:item.id, type: item.price>0? 4 :1 } }) |
| 102 | } else if (window.obj && window.obj.jumpOrderDes) { | 102 | } else if (window.obj && window.obj.jumpOrderDes) { |
| 103 | // 跳转到原生的任务列表 | 103 | // 跳转到原生的任务列表 |
| 104 | - window.obj.jumpOrderDes(JSON.stringify({ orderId: parseInt(item.price)>0?item.order_id:item.id, type: parseInt(item.price)>0? 4 :1})); | 104 | + window.obj.jumpOrderDes(JSON.stringify({ orderId:item.price>0?item.order_id:item.id, type: item.price>0? 4 :1})); |
| 105 | } | 105 | } |
| 106 | } | 106 | } |
| 107 | } else if (item.shop_type == 3) { | 107 | } else if (item.shop_type == 3) { |
| @@ -112,6 +112,8 @@ export default { | @@ -112,6 +112,8 @@ export default { | ||
| 112 | messageAlign: "center", | 112 | messageAlign: "center", |
| 113 | confirmButtonText: "我知道了", | 113 | confirmButtonText: "我知道了", |
| 114 | confirmButtonCallback: null, | 114 | confirmButtonCallback: null, |
| 115 | + confirmButtonCallback: this.jumpType, | ||
| 116 | + params:item.shop_type | ||
| 115 | }; | 117 | }; |
| 116 | this.$set(this.$parent, "showOptions", options); | 118 | this.$set(this.$parent, "showOptions", options); |
| 117 | // 显示通用浮层 | 119 | // 显示通用浮层 |
| @@ -151,6 +153,31 @@ export default { | @@ -151,6 +153,31 @@ export default { | ||
| 151 | // } | 153 | // } |
| 152 | // }); | 154 | // }); |
| 153 | // }, | 155 | // }, |
| 156 | + // type=2跳转原生优惠券列表3跳转原生购买内容列表 | ||
| 157 | + jumpType(type){ | ||
| 158 | + // 判断APP内 | ||
| 159 | + if (this.isCNLive.value) { | ||
| 160 | + if(type == 2){ | ||
| 161 | + // (判断app内是否有该方法) | ||
| 162 | + if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.jumpCoupon) { | ||
| 163 | + // 跳转到优惠券列表 | ||
| 164 | + window.webkit.messageHandlers.jumpCoupon.postMessage({ body: {} }); | ||
| 165 | + } else if (window.obj && window.obj.jumpCoupon) { | ||
| 166 | + // 跳转到优惠券列表 | ||
| 167 | + window.obj.jumpCoupon(); | ||
| 168 | + } | ||
| 169 | + }else if(type == 3){ | ||
| 170 | + // (判断app内是否有该方法) | ||
| 171 | + if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.JumpToPaidContent) { | ||
| 172 | + // 跳转到付费内容 | ||
| 173 | + window.webkit.messageHandlers.JumpToPaidContent.postMessage({ body: {} }); | ||
| 174 | + } else if (window.obj && window.obj.JumpToPaidContent) { | ||
| 175 | + // 跳转到付费内容 | ||
| 176 | + window.obj.JumpToPaidContent(); | ||
| 177 | + } | ||
| 178 | + } | ||
| 179 | + } | ||
| 180 | + }, | ||
| 154 | // 下拉刷新 | 181 | // 下拉刷新 |
| 155 | loadMore () { | 182 | loadMore () { |
| 156 | this.loading = true; | 183 | this.loading = true; |
| @@ -244,6 +271,19 @@ export default { | @@ -244,6 +271,19 @@ export default { | ||
| 244 | } | 271 | } |
| 245 | } | 272 | } |
| 246 | }, | 273 | }, |
| 274 | + // 隐藏号码中间四位 | ||
| 275 | + resetPhone(phone) { | ||
| 276 | + var str = String(phone) | ||
| 277 | + var len = str.length; | ||
| 278 | + if (len >= 7) { | ||
| 279 | + var reg = str.slice(-7, -3) | ||
| 280 | + return str.replace(reg, "****") | ||
| 281 | + } else if (len < 7 && len >= 6) { | ||
| 282 | + //1234567 | ||
| 283 | + var reg = str.slice(-4, -2) | ||
| 284 | + return str.replace(reg, "**") | ||
| 285 | + } | ||
| 286 | + } | ||
| 247 | }, | 287 | }, |
| 248 | //请求数据 | 288 | //请求数据 |
| 249 | created () { | 289 | created () { |
| @@ -279,13 +319,14 @@ export default { | @@ -279,13 +319,14 @@ export default { | ||
| 279 | // } else if (this.plat == "a") { | 319 | // } else if (this.plat == "a") { |
| 280 | 320 | ||
| 281 | // } | 321 | // } |
| 282 | - // 页面显示监听 | 322 | + // 页面显示监听 |
| 283 | document.addEventListener('visibilitychange', () => { | 323 | document.addEventListener('visibilitychange', () => { |
| 284 | // 页面显示出来了 | 324 | // 页面显示出来了 |
| 285 | if (document.hidden === false) { | 325 | if (document.hidden === false) { |
| 286 | this.list = []; // 中奖记录列表 | 326 | this.list = []; // 中奖记录列表 |
| 287 | this.page = 0; | 327 | this.page = 0; |
| 288 | - this.isMore =1; // 0没有更多1有更多 | 328 | + this.isMore = 1; // 0没有更多1有更多 |
| 329 | + this.isCall = false; | ||
| 289 | this.loadMore(); | 330 | this.loadMore(); |
| 290 | } | 331 | } |
| 291 | }); | 332 | }); |
src/pages/pointsMall/pointsMall.less
| @@ -9,6 +9,9 @@ | @@ -9,6 +9,9 @@ | ||
| 9 | &.is-cnlive { | 9 | &.is-cnlive { |
| 10 | height: 93px; | 10 | height: 93px; |
| 11 | } | 11 | } |
| 12 | + &.shareItems-box{ | ||
| 13 | + height: 215px; | ||
| 14 | + } | ||
| 12 | } | 15 | } |
| 13 | // 列表 | 16 | // 列表 |
| 14 | .column-list-box{ | 17 | .column-list-box{ |
| @@ -22,12 +25,13 @@ | @@ -22,12 +25,13 @@ | ||
| 22 | position: fixed; | 25 | position: fixed; |
| 23 | z-index: 2; | 26 | z-index: 2; |
| 24 | } | 27 | } |
| 25 | -.back-box{ | 28 | +.share_back-box{ |
| 29 | + width: 100%; | ||
| 26 | background-color: transparent; | 30 | background-color: transparent; |
| 27 | position: fixed; | 31 | position: fixed; |
| 28 | top: 0; | 32 | top: 0; |
| 29 | left:0; | 33 | left:0; |
| 30 | - z-index: 2; | 34 | + z-index: 30; |
| 31 | } | 35 | } |
| 32 | .main_box{ | 36 | .main_box{ |
| 33 | width: 100%; | 37 | width: 100%; |
| @@ -38,52 +42,32 @@ | @@ -38,52 +42,32 @@ | ||
| 38 | overflow: hidden; | 42 | overflow: hidden; |
| 39 | // 头部 | 43 | // 头部 |
| 40 | .top_main{ | 44 | .top_main{ |
| 41 | - margin:40px 30px; | ||
| 42 | - padding: 30px; | ||
| 43 | - height: 394px; | ||
| 44 | - background: #FFFFFF; | ||
| 45 | - box-shadow: 0px 0px 24px 0px rgba(0, 0, 0, 0.06); | ||
| 46 | - border-radius: 24px; | ||
| 47 | - .top{ | ||
| 48 | - display: flex; | ||
| 49 | - justify-content: space-between; | ||
| 50 | - .left{ | ||
| 51 | - height: 40px; | ||
| 52 | - font-size: 28px; | ||
| 53 | - font-weight: 400; | ||
| 54 | - color: #45270D; | ||
| 55 | - line-height: 40px; | ||
| 56 | - span{ | ||
| 57 | - margin-left: 8px; | ||
| 58 | - height: 40px; | ||
| 59 | - font-size: 28px; | ||
| 60 | - font-weight: 500; | ||
| 61 | - color: #F5A623; | ||
| 62 | - line-height: 40px; | ||
| 63 | - } | ||
| 64 | - } | ||
| 65 | - .right{ | ||
| 66 | - height: 33px; | 45 | + margin:27px 40px 47px 40px; |
| 46 | + background: transparent; | ||
| 47 | + display: flex; | ||
| 48 | + justify-content: space-between; | ||
| 49 | + .left{ | ||
| 50 | + width:335px; | ||
| 51 | + text-align: left; | ||
| 52 | + .title_t{ | ||
| 67 | font-size: 24px; | 53 | font-size: 24px; |
| 68 | font-weight: 400; | 54 | font-weight: 400; |
| 69 | - color: #999999; | ||
| 70 | - line-height: 33px; | ||
| 71 | - display: flex; | ||
| 72 | - justify-content: center; | ||
| 73 | - align-items: center; | ||
| 74 | - .back_right_iocn{ | ||
| 75 | - display: block; | ||
| 76 | - width: 20px; | ||
| 77 | - height:20px; | ||
| 78 | - margin-left: 10px; | ||
| 79 | - } | 55 | + color: #57391D; |
| 56 | + } | ||
| 57 | + .number{ | ||
| 58 | + font-size: 60px; | ||
| 59 | + font-weight: bold; | ||
| 60 | + color: #57391D; | ||
| 61 | + max-width: 360px; | ||
| 62 | + overflow: hidden; | ||
| 63 | + text-overflow: ellipsis; | ||
| 80 | } | 64 | } |
| 81 | } | 65 | } |
| 82 | // 商品类型 | 66 | // 商品类型 |
| 83 | .item_box{ | 67 | .item_box{ |
| 68 | + width:335px; | ||
| 84 | display: flex; | 69 | display: flex; |
| 85 | justify-content: space-between; | 70 | justify-content: space-between; |
| 86 | - margin: 40px 80px 30px 80px; | ||
| 87 | .item{ | 71 | .item{ |
| 88 | img{ | 72 | img{ |
| 89 | display: block; | 73 | display: block; |
| @@ -97,48 +81,10 @@ | @@ -97,48 +81,10 @@ | ||
| 97 | color: #666666; | 81 | color: #666666; |
| 98 | line-height: 33px; | 82 | line-height: 33px; |
| 99 | margin-top: 12px; | 83 | margin-top: 12px; |
| 84 | + text-align: center; | ||
| 100 | } | 85 | } |
| 101 | } | 86 | } |
| 102 | } | 87 | } |
| 103 | - //赚取积分 | ||
| 104 | - .earn_points_box{ | ||
| 105 | - height: 90px; | ||
| 106 | - background: #FFF8E8; | ||
| 107 | - border-radius: 12px; | ||
| 108 | - display:flex; | ||
| 109 | - justify-content: space-between; | ||
| 110 | - align-items: center; | ||
| 111 | - padding: 20px 20px; | ||
| 112 | - .earn_icon{ | ||
| 113 | - display: block; | ||
| 114 | - width: 36px; | ||
| 115 | - height:36px; | ||
| 116 | - } | ||
| 117 | - .desc{ | ||
| 118 | - height: 90px; | ||
| 119 | - font-size: 26px; | ||
| 120 | - font-weight: 400; | ||
| 121 | - color: #746037; | ||
| 122 | - line-height: 90px; | ||
| 123 | - } | ||
| 124 | - .btn{ | ||
| 125 | - font-size: 24px; | ||
| 126 | - padding: 0 20px; | ||
| 127 | - height: 50px; | ||
| 128 | - background: #DAB277; | ||
| 129 | - border-radius: 26px; | ||
| 130 | - color: #fff; | ||
| 131 | - text-align: center; | ||
| 132 | - display: flex; | ||
| 133 | - align-items: center; | ||
| 134 | - .earn_right_back{ | ||
| 135 | - display: block; | ||
| 136 | - width: 9px; | ||
| 137 | - height: 18px; | ||
| 138 | - margin-left: 8px; | ||
| 139 | - } | ||
| 140 | - } | ||
| 141 | - } | ||
| 142 | } | 88 | } |
| 143 | // 内容区域 | 89 | // 内容区域 |
| 144 | .tab_item_box{ | 90 | .tab_item_box{ |
| @@ -157,7 +103,7 @@ | @@ -157,7 +103,7 @@ | ||
| 157 | height: 48px; | 103 | height: 48px; |
| 158 | font-size: 34px; | 104 | font-size: 34px; |
| 159 | font-weight: 600; | 105 | font-weight: 600; |
| 160 | - color: #373737; | 106 | + color: #57391D; |
| 161 | line-height: 48px; | 107 | line-height: 48px; |
| 162 | } | 108 | } |
| 163 | .line{ | 109 | .line{ |
| @@ -182,9 +128,13 @@ | @@ -182,9 +128,13 @@ | ||
| 182 | } | 128 | } |
| 183 | // 为你推荐 | 129 | // 为你推荐 |
| 184 | .list-box { | 130 | .list-box { |
| 185 | - display: flex; | ||
| 186 | - justify-content: space-between; | ||
| 187 | - align-items: center; | 131 | + min-height: 487px; |
| 132 | + background:#fff url("../../../static/img/pointsMall/phb_bacb.png") no-repeat | ||
| 133 | + center top; | ||
| 134 | + background-size: 100%; | ||
| 135 | + overflow: hidden; | ||
| 136 | + position: relative; | ||
| 137 | + margin: 0 30px 40px 30px; | ||
| 188 | .discount-flag { | 138 | .discount-flag { |
| 189 | position: absolute; | 139 | position: absolute; |
| 190 | top: 4px; | 140 | top: 4px; |
| @@ -197,5 +147,47 @@ | @@ -197,5 +147,47 @@ | ||
| 197 | font-weight: 400; | 147 | font-weight: 400; |
| 198 | border-radius: 6px; | 148 | border-radius: 6px; |
| 199 | } | 149 | } |
| 150 | + .ranking_desc{ | ||
| 151 | + display:flex; | ||
| 152 | + align-items: center; | ||
| 153 | + font-size: 24px; | ||
| 154 | + font-weight: 400; | ||
| 155 | + color: #FFFFFF; | ||
| 156 | + position: absolute; | ||
| 157 | + right: 40px; | ||
| 158 | + top: 127px; | ||
| 159 | + img{ | ||
| 160 | + display:block; | ||
| 161 | + width: 22px; | ||
| 162 | + height: 22px; | ||
| 163 | + border-radius: 22px; | ||
| 164 | + margin-left: 10px; | ||
| 165 | + } | ||
| 166 | + } | ||
| 167 | + .ranking_box{ | ||
| 168 | + display: flex; | ||
| 169 | + justify-content: space-between; | ||
| 170 | + align-items: center; | ||
| 171 | + position: absolute; | ||
| 172 | + bottom: 0; | ||
| 173 | + left: 0; | ||
| 174 | + margin: 0 15px; | ||
| 175 | + width: calc(100% - 30px); | ||
| 176 | + .item{ | ||
| 177 | + background-color: transparent; | ||
| 178 | + .top-box{ | ||
| 179 | + .img-box{ | ||
| 180 | + width: 190px; | ||
| 181 | + height: 190px; | ||
| 182 | + } | ||
| 183 | + } | ||
| 184 | + } | ||
| 185 | + } | ||
| 186 | + } | ||
| 187 | + // 弹窗 | ||
| 188 | + .popup_box{ | ||
| 189 | + width:100%; | ||
| 190 | + background:#FFE9EA; | ||
| 191 | + position: fixed; | ||
| 200 | } | 192 | } |
| 201 | } | 193 | } |
| 202 | \ No newline at end of file | 194 | \ No newline at end of file |
src/pages/pointsMall/pointsMall.vue
| 1 | <template> | 1 | <template> |
| 2 | -<div> | 2 | +<div rel="pointsMall"> |
| 3 | <!-- H5唤起App组件 --> | 3 | <!-- H5唤起App组件 --> |
| 4 | <call-app-box | 4 | <call-app-box |
| 5 | class="call-app-box" | 5 | class="call-app-box" |
| @@ -12,89 +12,57 @@ | @@ -12,89 +12,57 @@ | ||
| 12 | <div class="main_box"> | 12 | <div class="main_box"> |
| 13 | <!-- pl --> | 13 | <!-- pl --> |
| 14 | <div class="pl" :style="'padding-top: ' + $parent.top.value + 'px'" :class="{'is-open-app': $parent.isOpenApp.value,'is-cnlive': isCNLive.value, 'hide': $route.query.hideBack == true}"></div> | 14 | <div class="pl" :style="'padding-top: ' + $parent.top.value + 'px'" :class="{'is-open-app': $parent.isOpenApp.value,'is-cnlive': isCNLive.value, 'hide': $route.query.hideBack == true}"></div> |
| 15 | - <back-box | ||
| 16 | - v-if="isCNLive.value" | ||
| 17 | - :class="{'hide': $route.query.hideBack == true}" | ||
| 18 | - class="back-box" | ||
| 19 | - :style="'padding-top: ' + $parent.top.value + 'px; background-color: rgba(255, 255, 255, ' + opacity + ')'" ref="navBox" | ||
| 20 | - @back="back" | ||
| 21 | - :backs="backs"> | ||
| 22 | - </back-box> | 15 | + <div class="share_back-box" :style="'background-color: rgba(255, 233, 234,' + opacity + ')'"> |
| 16 | + <back-box | ||
| 17 | + v-if="isCNLive.value" | ||
| 18 | + :class="{'hide': $route.query.hideBack == true}" | ||
| 19 | + :style="'padding-top: ' + $parent.top.value + 'px;'" ref="navBox" | ||
| 20 | + @back="back" | ||
| 21 | + :backs="backs"> | ||
| 22 | + </back-box> | ||
| 23 | + <!-- 分享下拉选择项 --> | ||
| 24 | + <van-popup class="popup_box" v-model="isCNLive.value && showShareItems" @click-overlay="onShowShareItems" :overlay-style="{ top:(parseInt($parent.top.value) + 109)+ 'px' }" :style="'top: ' + (parseInt($parent.top.value) + 76)+ 'px'"> | ||
| 25 | + <share-item | ||
| 26 | + :class="{'hide': $route.query.hideBack == true}" | ||
| 27 | + @back="back" | ||
| 28 | + :backs="backs" | ||
| 29 | + :shareItems="shareItems"></share-item> | ||
| 30 | + </van-popup> | ||
| 31 | + </div> | ||
| 23 | <div class="top_main"> | 32 | <div class="top_main"> |
| 24 | - <!-- 头部 --> | ||
| 25 | - <div class="top"> | ||
| 26 | - <div class="left"> | ||
| 27 | - 我的积分: <span>{{myGrade || 0}}</span> | ||
| 28 | - </div> | ||
| 29 | - <div @click="toExchangeRecord" class="right"> | ||
| 30 | - 兑换记录 | ||
| 31 | - <!-- 返回图标 --> | ||
| 32 | - <img class="back_right_iocn" src="static/img/points_icon_grey_right.png" alt=""/> | ||
| 33 | - </div> | 33 | + <!-- 积分 --> |
| 34 | + <div class="left"> | ||
| 35 | + <div class="title_t">我的积分</div> | ||
| 36 | + <div class="number">{{myGrade || 0}}</div> | ||
| 34 | </div> | 37 | </div> |
| 35 | <!-- 商品类型 --> | 38 | <!-- 商品类型 --> |
| 36 | <div class="item_box" v-if="navs && navs.length"> | 39 | <div class="item_box" v-if="navs && navs.length"> |
| 37 | - <div class="item" v-for="(item, index) in navs" :key="index" @click="anchor(item)"> | 40 | + <div class="item" v-for="(item, index) in navs" :key="index" @click="jumpApp(index+1)"> |
| 38 | <img :src="item.simg" alt=""/> | 41 | <img :src="item.simg" alt=""/> |
| 39 | <div class="text">{{item.title}}</div> | 42 | <div class="text">{{item.title}}</div> |
| 40 | </div> | 43 | </div> |
| 41 | </div> | 44 | </div> |
| 42 | - <!--积分赚取 --> | ||
| 43 | - <div class="earn_points_box"> | ||
| 44 | - <img class="earn_icon" src="static/img/points_icon_pice.png" alt=""> | ||
| 45 | - <div class="desc">赚取更多积分,兑换精美礼品~</div> | ||
| 46 | - <div @click="jumpClientIntegralList" class="btn">赚积分 <img class="earn_right_back" src="static/img/points_icon_white_right.png" alt=""/></div> | ||
| 47 | - </div> | ||
| 48 | - </div> | ||
| 49 | - <!-- 为你推荐 --> | ||
| 50 | - <div class="tab_item_box"> | ||
| 51 | - <div class="item active">为你推荐</div> | ||
| 52 | - <!-- 分割线 --> | ||
| 53 | - <div class="line"> </div> | ||
| 54 | - <div class="item">满减红包 精品推荐</div> | ||
| 55 | </div> | 45 | </div> |
| 56 | <!-- 为你推荐商品列表 --> | 46 | <!-- 为你推荐商品列表 --> |
| 57 | <div class="list-box"> | 47 | <div class="list-box"> |
| 58 | - <!-- 商品展示样式 2 --> | ||
| 59 | - <goods-item-2 class="item" v-for="(item, index) in goodsLists" :key="index" @jump="toDetail(item)" | ||
| 60 | - :item="item" | ||
| 61 | - pid="5"> | ||
| 62 | - </goods-item-2> | ||
| 63 | - </div> | ||
| 64 | - | ||
| 65 | - | ||
| 66 | - <!-- 实物商品 --> | ||
| 67 | - <div v-if="phyicalGoods && phyicalGoods.list && phyicalGoods.list.length" ref="physicalGoodsBox"> | ||
| 68 | - <div class="tab_item_box"> | ||
| 69 | - <div class="item active">实物商品</div> | ||
| 70 | - <!-- 分割线 --> | ||
| 71 | - <div class="line"> </div> | ||
| 72 | - <div class="item">热门商品 精品推荐</div> | ||
| 73 | - <div @click="toMore(1)" class="more">更多<img src="static/img/icon_more_arrow_right.png" alt=""/></div> | 48 | + <!-- 排行榜描述 --> |
| 49 | + <div class="ranking_desc" @click="jumpApp(4)"> | ||
| 50 | + <div>品质优选 好物随心兑</div> | ||
| 51 | + <img src="static/img/pointsMall/right_icon2.png" alt=""/> | ||
| 74 | </div> | 52 | </div> |
| 75 | - <!-- 实物商品裂变 --> | ||
| 76 | - <!-- 商品样式 7 列表 goodType=1为积分商城实物商品--> | ||
| 77 | - <column-list-box class="column-list-box" @jump="toDetail" | ||
| 78 | - :lists="phyicalGoods" | ||
| 79 | - com="7" goodType="1" company="1"> | ||
| 80 | - </column-list-box> | ||
| 81 | - </div> | ||
| 82 | - | ||
| 83 | - | ||
| 84 | - <!-- 虚拟商品 --> | ||
| 85 | - <div v-if="virtualGoods && virtualGoods.list && virtualGoods.list.length" ref="virtualGoodsBox"> | ||
| 86 | - <div class="tab_item_box"> | ||
| 87 | - <div class="item active">虚拟商品</div> | ||
| 88 | - <!-- 分割线 --> | ||
| 89 | - <div class="line"> </div> | ||
| 90 | - <div class="item">虚拟商品 精品推荐</div> | ||
| 91 | - <div @click="toMore(3)" class="more">更多<img src="static/img/icon_more_arrow_right.png" alt=""/></div> | 53 | + <!-- 商品展示样式 2 --> |
| 54 | + <div class="ranking_box"> | ||
| 55 | + <goods-item-2 class="item" v-for="(item, index) in goodsLists" :key="index" @jump="toDetail" | ||
| 56 | + :item="item" | ||
| 57 | + pid="5"> | ||
| 58 | + <!-- 添加flag --> | ||
| 59 | + <flag slot="flag" v-if="flags && flags.icon && flags.icon[index]" | ||
| 60 | + :flag="flags.icon[index]" | ||
| 61 | + :position="flags.position" | ||
| 62 | + :width="flags.width"> | ||
| 63 | + </flag> | ||
| 64 | + </goods-item-2> | ||
| 92 | </div> | 65 | </div> |
| 93 | - <!-- 商品样式 7 列表 --> | ||
| 94 | - <column-list-box class="column-list-box" @jump="toDetail" | ||
| 95 | - :lists="virtualGoods" | ||
| 96 | - com="7" company="1"> | ||
| 97 | - </column-list-box> | ||
| 98 | </div> | 66 | </div> |
| 99 | 67 | ||
| 100 | <!-- 满减红包 --> | 68 | <!-- 满减红包 --> |
| @@ -107,12 +75,36 @@ | @@ -107,12 +75,36 @@ | ||
| 107 | <div @click="toMore(2)" class="more">更多<img src="static/img/icon_more_arrow_right.png" class="" alt=""/></div> | 75 | <div @click="toMore(2)" class="more">更多<img src="static/img/icon_more_arrow_right.png" class="" alt=""/></div> |
| 108 | </div> | 76 | </div> |
| 109 | <!-- 商品样式 7 列表 --> | 77 | <!-- 商品样式 7 列表 --> |
| 110 | - <column-list-box class="column-list-box" @jump="toDetail" | 78 | + <goods-item-2 class="item" v-for="(item, index) in redEnvelopeFull.list" :key="index" @jump="toDetail" |
| 79 | + :item="item" | ||
| 80 | + pid="5"> | ||
| 81 | + </goods-item-2> | ||
| 82 | + <!-- <column-list-box class="column-list-box" @jump="toDetail" | ||
| 111 | :lists="redEnvelopeFull" | 83 | :lists="redEnvelopeFull" |
| 112 | com="7" company="1"> | 84 | com="7" company="1"> |
| 113 | - </column-list-box> | 85 | + </column-list-box> --> |
| 86 | + </div> | ||
| 87 | + | ||
| 88 | + | ||
| 89 | + <!-- 实物商品 --> | ||
| 90 | + <div> | ||
| 91 | + <div class="tab_item_box"> | ||
| 92 | + <div class="item active">好物兑换</div> | ||
| 93 | + <!-- 分割线 --> | ||
| 94 | + <div class="line"> </div> | ||
| 95 | + <div class="item">实物商品 分值浏览</div> | ||
| 96 | + <!-- <div @click="toMore(1)" class="more">更多<img src="static/img/icon_more_arrow_right.png" alt=""/></div> --> | ||
| 97 | + </div> | ||
| 98 | + <!-- 筛选按钮 --> | ||
| 99 | + <card-tabs :tags="tags" :phyicalGoods="phyicalGoods" @tabChange="tabChange" @loadMore="loadMore" @toDetail="toDetail"> | ||
| 100 | + </card-tabs> | ||
| 114 | </div> | 101 | </div> |
| 115 | </div> | 102 | </div> |
| 103 | + <!-- 回到顶部按钮 --> | ||
| 104 | + <goto-top | ||
| 105 | + class="goto_top_box" | ||
| 106 | + :top="parseInt(150)"> | ||
| 107 | + </goto-top> | ||
| 116 | </div> | 108 | </div> |
| 117 | </template> | 109 | </template> |
| 118 | 110 | ||
| @@ -122,6 +114,10 @@ import callAppBox from "@/components/callAppBox/callAppBox"; | @@ -122,6 +114,10 @@ import callAppBox from "@/components/callAppBox/callAppBox"; | ||
| 122 | import backBox from "@/components/backBox/backBox"; | 114 | import backBox from "@/components/backBox/backBox"; |
| 123 | import goodsItem2 from "@/components/goodsItem_2/goodsItem_2"; | 115 | import goodsItem2 from "@/components/goodsItem_2/goodsItem_2"; |
| 124 | import columnListBox from "@/components/columnListBox/columnListBox"; | 116 | import columnListBox from "@/components/columnListBox/columnListBox"; |
| 117 | +import shareItem from "@/components/shareItem/shareItem"; | ||
| 118 | +import flag from "@/components/flag/flag"; | ||
| 119 | +import cardTabs from "@/components/cardTabs/cardTabs"; | ||
| 120 | +import gotoTop from "@/components/gotoTop/gotoTop"; | ||
| 125 | export default { | 121 | export default { |
| 126 | name: 'pointsmall', | 122 | name: 'pointsmall', |
| 127 | data () { | 123 | data () { |
| @@ -132,9 +128,20 @@ export default { | @@ -132,9 +128,20 @@ export default { | ||
| 132 | navs: null, // 导航 | 128 | navs: null, // 导航 |
| 133 | myGrade: 0, // 我的积分 | 129 | myGrade: 0, // 我的积分 |
| 134 | goodsLists: null, // 为你推荐商品 | 130 | goodsLists: null, // 为你推荐商品 |
| 135 | - phyicalGoods: { list: null }, // 实物商品 | 131 | + phyicalGoods: [], // 实物商品 |
| 132 | + tabIndex: 0, // tab点击的位置 | ||
| 136 | virtualGoods: { list: null }, // 虚拟商品 | 133 | virtualGoods: { list: null }, // 虚拟商品 |
| 137 | - redEnvelopeFull: { list: null } // 满减红包 | 134 | + redEnvelopeFull: { list: null }, // 满减红包 |
| 135 | + shareItems: null, // 分享下拉菜单 | ||
| 136 | + showShareItems: false, // 非向下拉菜单显示隐藏 | ||
| 137 | + flags: null, // 产品排名flag | ||
| 138 | + tags:{ | ||
| 139 | + list:null, | ||
| 140 | + value:null, | ||
| 141 | + }, // tabs数据 | ||
| 142 | + refreshGrade:false, // 是否刷新积分 | ||
| 143 | + version: this.$route.query.version, //长版本号(ios) | ||
| 144 | + ver: this.$route.query.version //短版本号(Android) | ||
| 138 | } | 145 | } |
| 139 | }, | 146 | }, |
| 140 | //部件 | 147 | //部件 |
| @@ -142,7 +149,11 @@ export default { | @@ -142,7 +149,11 @@ export default { | ||
| 142 | callAppBox, | 149 | callAppBox, |
| 143 | backBox, | 150 | backBox, |
| 144 | goodsItem2, | 151 | goodsItem2, |
| 145 | - columnListBox | 152 | + columnListBox, |
| 153 | + shareItem, | ||
| 154 | + flag, | ||
| 155 | + cardTabs, | ||
| 156 | + gotoTop | ||
| 146 | }, | 157 | }, |
| 147 | //静态 | 158 | //静态 |
| 148 | props: [ | 159 | props: [ |
| @@ -155,6 +166,217 @@ export default { | @@ -155,6 +166,217 @@ export default { | ||
| 155 | }, | 166 | }, |
| 156 | //方法表示一个具体的操作,主要书写业务逻辑; | 167 | //方法表示一个具体的操作,主要书写业务逻辑; |
| 157 | methods: { | 168 | methods: { |
| 169 | + /** | ||
| 170 | + * tab切换筛选 | ||
| 171 | + */ | ||
| 172 | + tabChange(index){ | ||
| 173 | + if (this.isCNLive.value) { | ||
| 174 | + this.tabIndex = index; | ||
| 175 | + // 获取商品列表数据tab切换只获取一次数据 | ||
| 176 | + if(!this.phyicalGoods[this.tabIndex].isCall){ | ||
| 177 | + this.getIntegralNewGoodsList(this.phyicalGoods[index].page); | ||
| 178 | + } | ||
| 179 | + }else{ | ||
| 180 | + this.$parent.callApp(); | ||
| 181 | + } | ||
| 182 | + }, | ||
| 183 | + /** | ||
| 184 | + * 上拉加载 | ||
| 185 | + */ | ||
| 186 | + loadMore () { | ||
| 187 | + if (this.phyicalGoods[this.tabIndex].loading === false && this.phyicalGoods[this.tabIndex].isMore === false){ | ||
| 188 | + this.$set(this.phyicalGoods[this.tabIndex], "page" , ++ this.phyicalGoods[this.tabIndex].page); | ||
| 189 | + this.getIntegralNewGoodsList(this.phyicalGoods[this.tabIndex].page); | ||
| 190 | + } | ||
| 191 | + }, | ||
| 192 | + /** | ||
| 193 | + * 加载积分商城商品更多 | ||
| 194 | + * @param {int} page [页码] | ||
| 195 | + * @param {int}type [类型1为实物 2为虚拟物品 3为红包] | ||
| 196 | + */ | ||
| 197 | + getIntegralNewGoodsList (page) { | ||
| 198 | + // 加载中 | ||
| 199 | + this.$set(this.phyicalGoods[this.tabIndex], "loading", true); | ||
| 200 | + | ||
| 201 | + // 加载中提示 | ||
| 202 | + // Indicator.open("加载中..."); | ||
| 203 | + | ||
| 204 | + // 请求接口 | ||
| 205 | + this.http("/Api/" + (this.getApiVersion().LuckDraw) + "/integralNewGoodsList", { | ||
| 206 | + type: 1, | ||
| 207 | + // uid: this.getStore("uid"), | ||
| 208 | + page: page || 1, | ||
| 209 | + tags_value: this.tags.value // 筛选 | ||
| 210 | + }, this.getIntegralNewGoodsListCallback, { | ||
| 211 | + method: "POST" | ||
| 212 | + }); | ||
| 213 | + }, | ||
| 214 | + | ||
| 215 | + /** | ||
| 216 | + * 礼品专区详情页回调 | ||
| 217 | + * @param {object} res [服务器返回数据] | ||
| 218 | + * @param {object} ext [扩展参数] | ||
| 219 | + */ | ||
| 220 | + getIntegralNewGoodsListCallback (res, ext) { | ||
| 221 | + | ||
| 222 | + // 加载完成 | ||
| 223 | + // Indicator.close(); | ||
| 224 | + // 证明调用过接口 | ||
| 225 | + this.phyicalGoods[this.tabIndex].isCall = true; | ||
| 226 | + // 返回处理 | ||
| 227 | + if (res.code == 200) { | ||
| 228 | + // 解构数据 | ||
| 229 | + let { data: datas } = res; | ||
| 230 | + /*设置标题 */ | ||
| 231 | + // this.$set(this, "title", datas.title); | ||
| 232 | + // this.$set(this.backs, 'title', datas.title); | ||
| 233 | + /* 获取商品数据 开始 */ | ||
| 234 | + if (datas.goods && datas.goods.length) { | ||
| 235 | + // 设置列表 | ||
| 236 | + this.$set(this.phyicalGoods[this.tabIndex], "list", [...this.phyicalGoods[this.tabIndex].list, ...datas.goods]); | ||
| 237 | + // 设置还有需要加载的内容 | ||
| 238 | + this.$set(this.phyicalGoods[this.tabIndex], "loading", false); | ||
| 239 | + } else { | ||
| 240 | + this.phyicalGoods[this.tabIndex].isMore = true; // 没有更多了 | ||
| 241 | + // 没有需要加载的内容,停止上拉加载 | ||
| 242 | + this.$set(this.phyicalGoods[this.tabIndex], "loading", true); | ||
| 243 | + } | ||
| 244 | + /* 获取抽奖记录数据 结束 */ | ||
| 245 | + // let item = { | ||
| 246 | + // ref: 'physicalGoodsBox', | ||
| 247 | + // simg: 'static/img/pointsMall/icon01.png', | ||
| 248 | + // title: '赚积分' | ||
| 249 | + // } | ||
| 250 | + // let _this = this; | ||
| 251 | + // // 定位到好物兑换标题栏 | ||
| 252 | + // this.$nextTick(() =>{ | ||
| 253 | + // _this.anchor(item); | ||
| 254 | + // }) | ||
| 255 | + } else if (res.code == 400) { | ||
| 256 | + | ||
| 257 | + // 获取抽奖记录失败 | ||
| 258 | + Toast(res.message); | ||
| 259 | + } else { | ||
| 260 | + | ||
| 261 | + // 获取抽奖记录失败 | ||
| 262 | + Toast("获取专区礼包失败"); | ||
| 263 | + } | ||
| 264 | + }, | ||
| 265 | + /** | ||
| 266 | + * @param {Object} type [数据类型] | ||
| 267 | + * 1赚取积分2我的收藏3我的订单4兑换排行榜 | ||
| 268 | + */ | ||
| 269 | + jumpApp(type){ | ||
| 270 | + if (this.isCNLive.value){ | ||
| 271 | + if(type == 1){ | ||
| 272 | + this.jumpClientIntegralList(); | ||
| 273 | + }else if(type == 2){ | ||
| 274 | + this.toExchangeOrder(1) | ||
| 275 | + }else if(type == 3){ | ||
| 276 | + this.toExchangeOrder(2); | ||
| 277 | + }else if(type == 4){ | ||
| 278 | + this.toExchangeOrder(3); | ||
| 279 | + } | ||
| 280 | + }else{ | ||
| 281 | + this.$parent.callApp(); | ||
| 282 | + } | ||
| 283 | + }, | ||
| 284 | + /** | ||
| 285 | + * @param {Object} type [数据类型] | ||
| 286 | + * 1平台客服2分享好友3积分规则 | ||
| 287 | + */ | ||
| 288 | + jumpType(item){ | ||
| 289 | + this.showShareItems = false; | ||
| 290 | + if(item.params == 1){ | ||
| 291 | + if (this.isCNLive.value) { | ||
| 292 | + let options; | ||
| 293 | + if (this.isAndroid.value) { | ||
| 294 | + if (this.ver != "") { | ||
| 295 | + var ver = this.ver ? this.ver.replace(/\.*/g, "") : ""; | ||
| 296 | + } | ||
| 297 | + var isVer = 1909; | ||
| 298 | + if (ver > isVer) { | ||
| 299 | + // (判断app内是否有该方法) | ||
| 300 | + if (window.obj && window.obj.jumpCustomerService) { | ||
| 301 | + // 跳转到原生的客服页面 | ||
| 302 | + window.obj.jumpCustomerService(); | ||
| 303 | + } | ||
| 304 | + } else { | ||
| 305 | + // 提示用积分兑换兑换 | ||
| 306 | + options = { | ||
| 307 | + message: "当前版本过旧,请升级最新版本", | ||
| 308 | + messageAlign: "center", | ||
| 309 | + confirmButtonText: "去更新", | ||
| 310 | + confirmButtonCallback: this.appUpdate, | ||
| 311 | + showCancelButton: true, | ||
| 312 | + cancelButtonText: "取消" | ||
| 313 | + }; | ||
| 314 | + } | ||
| 315 | + } else if (this.isiPhone.value || this.isiPad.value) { | ||
| 316 | + if (this.version != "") { | ||
| 317 | + var version = this.version ? this.version.replace(/\.*/g, "") : ""; | ||
| 318 | + } | ||
| 319 | + if (this.mode == "prod") { | ||
| 320 | + var isVer = 205; | ||
| 321 | + } else { | ||
| 322 | + var isVer = 205; | ||
| 323 | + } | ||
| 324 | + if (version > isVer) { | ||
| 325 | + // (判断app内是否有该方法) | ||
| 326 | + if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.jumpCustomerService) { | ||
| 327 | + // 跳转到原生的客服页面 | ||
| 328 | + window.webkit.messageHandlers.jumpCustomerService.postMessage({ body: {} }); | ||
| 329 | + } | ||
| 330 | + } else { | ||
| 331 | + // 提示用积分兑换兑换 | ||
| 332 | + options = { | ||
| 333 | + message: "当前版本过旧,请升级最新版本", | ||
| 334 | + messageAlign: "center", | ||
| 335 | + confirmButtonText: "去更新", | ||
| 336 | + confirmButtonCallback: this.appUpdate, | ||
| 337 | + showCancelButton: true, | ||
| 338 | + cancelButtonText: "取消" | ||
| 339 | + }; | ||
| 340 | + } | ||
| 341 | + } | ||
| 342 | + // 调用showModal层参数 | ||
| 343 | + this.$set(this.$parent, "showOptions", options); | ||
| 344 | + // 显示通用浮层 | ||
| 345 | + this.$parent.$refs.showModal.showLayer(); | ||
| 346 | + } | ||
| 347 | + }else if(item.params == 2){ | ||
| 348 | + // 判断分享 | ||
| 349 | + if (typeof this.$parent.toShare === 'function') { | ||
| 350 | + this.$parent.toShare(45, "1", ""); | ||
| 351 | + } | ||
| 352 | + }else if(item.params == 3){ | ||
| 353 | + // 通用跳转跳转到商品详情页新打开webview | ||
| 354 | + if (typeof this.$parent.gotoDetail === 'function') { | ||
| 355 | + // 设置跳转参数 | ||
| 356 | + let params = { | ||
| 357 | + type: '34', | ||
| 358 | + to: 'http://wjjh5'+(this.mode == 'prod'?'':'test') + '.cnlive.com/integralRules.html?type=web', | ||
| 359 | + shop_type: '' | ||
| 360 | + }; | ||
| 361 | + // 页面跳转 | ||
| 362 | + this.$parent.gotoDetail(params); | ||
| 363 | + } | ||
| 364 | + } | ||
| 365 | + }, | ||
| 366 | + // App升级跳转 | ||
| 367 | + appUpdate () { | ||
| 368 | + if (this.isiPhone.value || this.isiPad.value) { | ||
| 369 | + window.location.href = "http://itunes.apple.com/cn/app/id1337575478?mt=8"; | ||
| 370 | + } else if (this.isAndroid.value) { | ||
| 371 | + window.location.href = "http://wjj.ys1.cnliveimg.com/download/ac/1910/strike-1.9.1.0-release.apk"; | ||
| 372 | + } | ||
| 373 | + }, | ||
| 374 | + /** | ||
| 375 | + * 显示分享弹框 | ||
| 376 | + */ | ||
| 377 | + onShowShareItems(){ | ||
| 378 | + this.showShareItems = !this.showShareItems; | ||
| 379 | + }, | ||
| 158 | /** | 380 | /** |
| 159 | * 锚点定位 | 381 | * 锚点定位 |
| 160 | * @param {Object} item [数据对象] | 382 | * @param {Object} item [数据对象] |
| @@ -186,18 +408,36 @@ export default { | @@ -186,18 +408,36 @@ export default { | ||
| 186 | /** | 408 | /** |
| 187 | * 跳转到兑换记录详情页 | 409 | * 跳转到兑换记录详情页 |
| 188 | * @param {Object} item [数据对象] | 410 | * @param {Object} item [数据对象] |
| 411 | + * type 1我的收藏 2我的订单3兑换排行榜 | ||
| 189 | */ | 412 | */ |
| 190 | - toExchangeRecord () { | 413 | + toExchangeOrder (type) { |
| 191 | if (this.isCNLive.value) { | 414 | if (this.isCNLive.value) { |
| 192 | // 校验登录 | 415 | // 校验登录 |
| 193 | if (this.$parent.checkLogin()) { | 416 | if (this.$parent.checkLogin()) { |
| 417 | + if(type ==1){ | ||
| 194 | this.$router.push({ | 418 | this.$router.push({ |
| 195 | - path: '/pointsExchangeRecords', | ||
| 196 | - query: { | ||
| 197 | - uid: this.getStore("uid"), | ||
| 198 | - type: 3 // 1亲子嘉年华 2 康疫健步 3 积分商城 4 脐橙 7 健康商城 | ||
| 199 | - } | ||
| 200 | - }) | 419 | + path: '/pointsMyCollection', |
| 420 | + query: { | ||
| 421 | + uid: this.getStore("uid"), | ||
| 422 | + type: 3 // 1亲子嘉年华 2 康疫健步 3 积分商城 4 脐橙 7 健康商城 | ||
| 423 | + } | ||
| 424 | + }); | ||
| 425 | + }else if(type ==2){ | ||
| 426 | + this.$router.push({ | ||
| 427 | + path: '/pointsExchangeRecords', | ||
| 428 | + query: { | ||
| 429 | + uid: this.getStore("uid"), | ||
| 430 | + type: 3 // 1亲子嘉年华 2 康疫健步 3 积分商城 4 脐橙 7 健康商城 | ||
| 431 | + } | ||
| 432 | + }); | ||
| 433 | + }else if(type == 3){ | ||
| 434 | + this.$router.push({ | ||
| 435 | + path: '/exchangeRanking', | ||
| 436 | + query: { | ||
| 437 | + uid: this.getStore("uid") | ||
| 438 | + } | ||
| 439 | + }); | ||
| 440 | + } | ||
| 201 | } | 441 | } |
| 202 | } else { | 442 | } else { |
| 203 | this.$parent.callApp(); | 443 | this.$parent.callApp(); |
| @@ -282,17 +522,6 @@ export default { | @@ -282,17 +522,6 @@ export default { | ||
| 282 | } | 522 | } |
| 283 | }, | 523 | }, |
| 284 | /** | 524 | /** |
| 285 | - * 分享 | ||
| 286 | - */ | ||
| 287 | - toShare () { | ||
| 288 | - | ||
| 289 | - // 判断分享 | ||
| 290 | - if (typeof this.$parent.toShare === 'function') { | ||
| 291 | - this.$parent.toShare(45, "1", ""); | ||
| 292 | - } | ||
| 293 | - }, | ||
| 294 | - | ||
| 295 | - /** | ||
| 296 | * 后退 | 525 | * 后退 |
| 297 | */ | 526 | */ |
| 298 | back () { | 527 | back () { |
| @@ -339,21 +568,38 @@ export default { | @@ -339,21 +568,38 @@ export default { | ||
| 339 | 568 | ||
| 340 | // 返回处理 | 569 | // 返回处理 |
| 341 | if (res.code == 200) { | 570 | if (res.code == 200) { |
| 342 | - | ||
| 343 | // 解构数据 | 571 | // 解构数据 |
| 344 | let { data: datas } = res; | 572 | let { data: datas } = res; |
| 345 | this.info = datas | 573 | this.info = datas |
| 346 | /* 积分商场首页信息 开始 */ | 574 | /* 积分商场首页信息 开始 */ |
| 347 | - /*用户信息 */ | ||
| 348 | - this.$set(this, "myGrade", datas.grade); | ||
| 349 | - /*为你推荐 */ | ||
| 350 | - this.$set(this, "goodsLists", datas.hot_goods); | ||
| 351 | - /*实物商品 */ | ||
| 352 | - this.$set(this.phyicalGoods, "list", datas.goods1); | ||
| 353 | - /*满减红包商品 */ | ||
| 354 | - this.$set(this.redEnvelopeFull, "list", datas.goods2); | ||
| 355 | - /*虚拟商品 */ | ||
| 356 | - this.$set(this.virtualGoods, "list", datas.goods3); | 575 | + if(this.refreshGrade == true){ |
| 576 | + /*用户信息 */ | ||
| 577 | + this.$set(this, "myGrade", datas.grade); | ||
| 578 | + }else{ | ||
| 579 | + /*用户信息 */ | ||
| 580 | + this.$set(this, "myGrade", datas.grade); | ||
| 581 | + /*为你推荐 */ | ||
| 582 | + this.$set(this, "goodsLists", datas.hot_goods); | ||
| 583 | + /*tabs数据 */ | ||
| 584 | + this.$set(this.tags, "list", datas.tags); | ||
| 585 | + for(var i=0; i<= this.tags.list.length; i++){ | ||
| 586 | + this.$set(this.phyicalGoods, i, | ||
| 587 | + { | ||
| 588 | + loading: true, | ||
| 589 | + distance: 50, | ||
| 590 | + page: 1, | ||
| 591 | + isCall: false, // 是否调用接口 | ||
| 592 | + isMore: false, | ||
| 593 | + list: [], | ||
| 594 | + }); | ||
| 595 | + } | ||
| 596 | + // 获取商品列表全部商品数据 | ||
| 597 | + this.getIntegralNewGoodsList(this.phyicalGoods[0].page); | ||
| 598 | + /*满减红包商品 */ | ||
| 599 | + this.$set(this.redEnvelopeFull, "list", datas.goods2); | ||
| 600 | + /*虚拟商品 */ | ||
| 601 | + this.$set(this.virtualGoods, "list", datas.goods3); | ||
| 602 | + } | ||
| 357 | } else if (res.code == 400) { | 603 | } else if (res.code == 400) { |
| 358 | 604 | ||
| 359 | // 获取积分商场首页信息失败 | 605 | // 获取积分商场首页信息失败 |
| @@ -432,20 +678,33 @@ export default { | @@ -432,20 +678,33 @@ export default { | ||
| 432 | this.$set(this, 'navs', [ | 678 | this.$set(this, 'navs', [ |
| 433 | { | 679 | { |
| 434 | ref: 'physicalGoodsBox', | 680 | ref: 'physicalGoodsBox', |
| 435 | - simg: 'static/img/points_item01.png', | ||
| 436 | - title: '实物商品' | 681 | + simg: 'static/img/pointsMall/icon01.png', |
| 682 | + title: '赚积分' | ||
| 437 | }, | 683 | }, |
| 438 | { | 684 | { |
| 439 | ref: 'virtualGoodsBox', | 685 | ref: 'virtualGoodsBox', |
| 440 | - simg: 'static/img/points_item02.png', | ||
| 441 | - title: '虚拟商品' | 686 | + simg: 'static/img/pointsMall/icon02.png', |
| 687 | + title: '我的收藏' | ||
| 442 | }, | 688 | }, |
| 443 | { | 689 | { |
| 444 | ref: 'fullReductionBox', | 690 | ref: 'fullReductionBox', |
| 445 | - simg: 'static/img/points_item03.png', | ||
| 446 | - title: '满减红包' | 691 | + simg: 'static/img/pointsMall/icon03.png', |
| 692 | + title: '我的订单' | ||
| 447 | } | 693 | } |
| 448 | ]); | 694 | ]); |
| 695 | + | ||
| 696 | + // 设置产品排名flag对象 | ||
| 697 | + this.$set(this, 'flags', { | ||
| 698 | + icon: [ | ||
| 699 | + 'static/img/icon_n1.png', | ||
| 700 | + 'static/img/icon_n2.png', | ||
| 701 | + 'static/img/icon_n3.png' | ||
| 702 | + ], | ||
| 703 | + position: { | ||
| 704 | + top: -6, | ||
| 705 | + left: 20 | ||
| 706 | + } | ||
| 707 | + }); | ||
| 449 | // 判断是否在App内 | 708 | // 判断是否在App内 |
| 450 | if (this.isCNLive.value) { | 709 | if (this.isCNLive.value) { |
| 451 | 710 | ||
| @@ -457,8 +716,8 @@ export default { | @@ -457,8 +716,8 @@ export default { | ||
| 457 | }, | 716 | }, |
| 458 | funcArray: [ | 717 | funcArray: [ |
| 459 | { | 718 | { |
| 460 | - icon: "static/img/icon_share.png", | ||
| 461 | - func: this.toShare | 719 | + icon: "static/img/pointsMall/share_icon.png", |
| 720 | + func: this.onShowShareItems | ||
| 462 | } | 721 | } |
| 463 | ] | 722 | ] |
| 464 | } | 723 | } |
| @@ -466,9 +725,43 @@ export default { | @@ -466,9 +725,43 @@ export default { | ||
| 466 | 725 | ||
| 467 | // 设置标题 | 726 | // 设置标题 |
| 468 | this.$set(this.backs, 'title', '积分商城'); | 727 | this.$set(this.backs, 'title', '积分商城'); |
| 728 | + // 右上角三个点下拉菜单 | ||
| 729 | + this.$set(this, 'shareItems', [ | ||
| 730 | + { | ||
| 731 | + simg: 'static/img/pointsMall/share01.png', | ||
| 732 | + title: '平台客服', | ||
| 733 | + icon: 'static/img/pointsMall/right_icon.png', | ||
| 734 | + func: this.jumpType, | ||
| 735 | + params: 1, | ||
| 736 | + }, | ||
| 737 | + { | ||
| 738 | + simg: 'static/img/pointsMall/share02.png', | ||
| 739 | + title: '分享好友', | ||
| 740 | + icon: 'static/img/pointsMall/right_icon.png', | ||
| 741 | + func: this.jumpType, | ||
| 742 | + params: 2, | ||
| 743 | + }, | ||
| 744 | + { | ||
| 745 | + simg: 'static/img/pointsMall/share03.png', | ||
| 746 | + title: '积分规则', | ||
| 747 | + icon: 'static/img/pointsMall/right_icon.png', | ||
| 748 | + func: this.jumpType, | ||
| 749 | + params: 3, | ||
| 750 | + } | ||
| 751 | + ]); | ||
| 469 | } | 752 | } |
| 470 | // 获取积分商城商品信息接口 | 753 | // 获取积分商城商品信息接口 |
| 471 | this.integralMallIndex(); | 754 | this.integralMallIndex(); |
| 755 | + // 获取商品列表数据 | ||
| 756 | + // this.$set(this.phyicalGoods, 0, { | ||
| 757 | + // loading: true, | ||
| 758 | + // distance: 50, | ||
| 759 | + // page: 1, | ||
| 760 | + // isCall: false, // 是否调用接口 | ||
| 761 | + // isMore: false, | ||
| 762 | + // list: [], | ||
| 763 | + // }); | ||
| 764 | + // this.getIntegralNewGoodsList(this.phyicalGoods[0].page); | ||
| 472 | }, | 765 | }, |
| 473 | mounted () { | 766 | mounted () { |
| 474 | // 如果是App外,设置唤起App和微信内分享参数 | 767 | // 如果是App外,设置唤起App和微信内分享参数 |
| @@ -499,7 +792,8 @@ export default { | @@ -499,7 +792,8 @@ export default { | ||
| 499 | 792 | ||
| 500 | // 页面显示出来了 | 793 | // 页面显示出来了 |
| 501 | if (document.hidden === false) { | 794 | if (document.hidden === false) { |
| 502 | - | 795 | + // 只刷新积分 |
| 796 | + this.refreshGrade = true; | ||
| 503 | // 获取积分商城商品信息接口 | 797 | // 获取积分商城商品信息接口 |
| 504 | this.integralMallIndex(); | 798 | this.integralMallIndex(); |
| 505 | } | 799 | } |
| @@ -511,4 +805,9 @@ export default { | @@ -511,4 +805,9 @@ export default { | ||
| 511 | <style rel="stylesheet/less" lang='less' scoped> | 805 | <style rel="stylesheet/less" lang='less' scoped> |
| 512 | @import 'pointsMall'; | 806 | @import 'pointsMall'; |
| 513 | </style> | 807 | </style> |
| 808 | +<style> | ||
| 809 | +.goto_top_box{ | ||
| 810 | + z-index:2 !important; | ||
| 811 | +} | ||
| 812 | +</style> | ||
| 514 | 813 |
src/pages/pointsMyCollection/pointsMyCollection.less
0 → 100644
| 1 | +.records_back{ | ||
| 2 | + // background: #F6F6F6; | ||
| 3 | + min-height: 100vh; | ||
| 4 | + margin-bottom: 10px; | ||
| 5 | + .com_box{ | ||
| 6 | + margin: 30px 30px 0 30px; | ||
| 7 | + background: #FFFFFF; | ||
| 8 | + border-radius: 24px; | ||
| 9 | + .item_box{ | ||
| 10 | + // margin: 0 30px; | ||
| 11 | + border-bottom: solid 2px #EAEAEA; | ||
| 12 | + display: flex; | ||
| 13 | + padding: 30px 0; | ||
| 14 | + img{ | ||
| 15 | + display: flex; | ||
| 16 | + width: 180px; | ||
| 17 | + height: 180px; | ||
| 18 | + } | ||
| 19 | + .right{ | ||
| 20 | + flex: 1; | ||
| 21 | + margin-left: 32px; | ||
| 22 | + .name{ | ||
| 23 | + height: 40px; | ||
| 24 | + font-size: 30px; | ||
| 25 | + font-weight: 400; | ||
| 26 | + color: #666666; | ||
| 27 | + line-height: 40px; | ||
| 28 | + font-weight: 500; | ||
| 29 | + display: -webkit-box; | ||
| 30 | + -webkit-line-clamp: 1; | ||
| 31 | + /*! autoprefixer: off */ | ||
| 32 | + -webkit-box-orient: vertical; | ||
| 33 | + /*! autoprefixer: on */ | ||
| 34 | + text-overflow: ellipsis; | ||
| 35 | + overflow: hidden; | ||
| 36 | + } | ||
| 37 | + .address_name{ | ||
| 38 | + margin-top: 10px; | ||
| 39 | + font-size: 24px; | ||
| 40 | + font-weight: 400; | ||
| 41 | + color: #9B9B9B; | ||
| 42 | + display: -webkit-box; | ||
| 43 | + -webkit-line-clamp: 2; | ||
| 44 | + /*! autoprefixer: off */ | ||
| 45 | + -webkit-box-orient: vertical; | ||
| 46 | + /*! autoprefixer: on */ | ||
| 47 | + text-overflow: ellipsis; | ||
| 48 | + overflow: hidden; | ||
| 49 | + word-break: break-all; | ||
| 50 | + span{ | ||
| 51 | + margin-left: 10px; | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + .exchange_type{ | ||
| 55 | + height: 40px; | ||
| 56 | + font-size: 28px; | ||
| 57 | + font-weight: 400; | ||
| 58 | + color: #FC1541; | ||
| 59 | + line-height: 40px; | ||
| 60 | + text-align: left; | ||
| 61 | + margin-top: 42px; | ||
| 62 | + } | ||
| 63 | + .exchange_time{ | ||
| 64 | + margin-top: 10px; | ||
| 65 | + height: 33px; | ||
| 66 | + font-size: 28px; | ||
| 67 | + font-weight: 400; | ||
| 68 | + color: #9B9B9B; | ||
| 69 | + margin-top: 10px; | ||
| 70 | + } | ||
| 71 | + .btn-box{ | ||
| 72 | + display: flex; | ||
| 73 | + justify-content: flex-end; | ||
| 74 | + margin-top: 30px; | ||
| 75 | + .btn{ | ||
| 76 | + width: 157px; | ||
| 77 | + height: 50px; | ||
| 78 | + border-radius: 26px; | ||
| 79 | + border: 1px solid #FC1541; | ||
| 80 | + padding:10px 20px; | ||
| 81 | + font-size: 24px; | ||
| 82 | + color: #FF415F; | ||
| 83 | + text-align: center; | ||
| 84 | + display: flex; | ||
| 85 | + align-items: center; | ||
| 86 | + justify-content: center; | ||
| 87 | + } | ||
| 88 | + .look_logistics{ | ||
| 89 | + width: 160px; | ||
| 90 | + height: 60px; | ||
| 91 | + border: 1px solid #3EB781; | ||
| 92 | + border-radius: 30px; | ||
| 93 | + font-size: 30px; | ||
| 94 | + font-weight: 400; | ||
| 95 | + color: #3EB781; | ||
| 96 | + line-height: 60px; | ||
| 97 | + text-align: center; | ||
| 98 | + } | ||
| 99 | + img{ | ||
| 100 | + display: block; | ||
| 101 | + width: 22px; | ||
| 102 | + height: 22px; | ||
| 103 | + margin-left: 4px; | ||
| 104 | + } | ||
| 105 | + } | ||
| 106 | + } | ||
| 107 | + } | ||
| 108 | + } | ||
| 109 | + // 没有更多 | ||
| 110 | + .is_more{ | ||
| 111 | + text-align: center; | ||
| 112 | + color: #6D7278; | ||
| 113 | + font-size: 32px; | ||
| 114 | + font-weight: 500; | ||
| 115 | + height: 100px; | ||
| 116 | + line-height: 100px; | ||
| 117 | + } | ||
| 118 | + // 暂无记录提示 | ||
| 119 | + .no_gift_tip{ | ||
| 120 | + width: 100%; | ||
| 121 | + img{ | ||
| 122 | + display: block; | ||
| 123 | + width: 500px; | ||
| 124 | + height: 285px; | ||
| 125 | + margin:366px 125px 0 125px; | ||
| 126 | + } | ||
| 127 | + .text{ | ||
| 128 | + font-size: 30px; | ||
| 129 | + font-weight: 400; | ||
| 130 | + color: #333333; | ||
| 131 | + line-height: 60px; | ||
| 132 | + margin-top: 19px; | ||
| 133 | + text-align: center; | ||
| 134 | + } | ||
| 135 | + } | ||
| 136 | + // 返回按钮 | ||
| 137 | + .title_box{ | ||
| 138 | + width: 100%; | ||
| 139 | + position: fixed; | ||
| 140 | + left: 0; | ||
| 141 | + font-size: 36px; | ||
| 142 | + font-weight: 400; | ||
| 143 | + color: #000000; | ||
| 144 | + height: 93px; | ||
| 145 | + line-height: 93px; | ||
| 146 | + top: 0; | ||
| 147 | + text-align: center; | ||
| 148 | + background-color: #fff; | ||
| 149 | + .title{ | ||
| 150 | + display: flex; | ||
| 151 | + position: relative; | ||
| 152 | + border-bottom: 1px solid #E6E6E6; | ||
| 153 | + .goback{ | ||
| 154 | + display: block; | ||
| 155 | + width: 38px; | ||
| 156 | + height: 38px; | ||
| 157 | + position: absolute; | ||
| 158 | + left: 20px; | ||
| 159 | + top: 27px; | ||
| 160 | + } | ||
| 161 | + .text{ | ||
| 162 | + flex: 1; | ||
| 163 | + text-align: center; | ||
| 164 | + } | ||
| 165 | + } | ||
| 166 | + } | ||
| 167 | + // 占位 | ||
| 168 | + .title_box_lh{ | ||
| 169 | + height: 93px; | ||
| 170 | + } | ||
| 171 | +} | ||
| 0 | \ No newline at end of file | 172 | \ No newline at end of file |
src/pages/pointsMyCollection/pointsMyCollection.vue
0 → 100644
| 1 | +<template> | ||
| 2 | +<div class="records_back"> | ||
| 3 | + <!-- 占位 --> | ||
| 4 | + <div class="title_box_lh" :style="'padding-top: ' + (($parent.top.value)+8) + 'px'"> | ||
| 5 | + | ||
| 6 | + </div> | ||
| 7 | + <!--返回按钮--> | ||
| 8 | + <div class="title_box" :style="'padding-top: ' + (($parent.top.value)+8) + 'px'" > | ||
| 9 | + <div class="title"> <!--返回按钮--> | ||
| 10 | + <img @click="goback" | ||
| 11 | + class="goback" src="static/img/icon_back.png" /> | ||
| 12 | + <div class="text">我的收藏</div> | ||
| 13 | + </div> | ||
| 14 | + </div> | ||
| 15 | + <div class="com_box" | ||
| 16 | + v-infinite-scroll="loadMore" | ||
| 17 | + infinite-scroll-disabled="loading" | ||
| 18 | + :infinite-scroll-distance="list.length"> | ||
| 19 | + <div @click="jumpOrderDes(item)" class="item_box" v-for="(item, index) in list" :key="index"> | ||
| 20 | + <img v-lazy="item.simg" src="item" alt=""/> | ||
| 21 | + <div class="right"> | ||
| 22 | + <div class="name"> | ||
| 23 | + {{item.title}} | ||
| 24 | + </div> | ||
| 25 | + <div v-if="item.ads" class="exchange_time"> | ||
| 26 | + {{item.ads}} | ||
| 27 | + </div> | ||
| 28 | + <div class="exchange_type"> | ||
| 29 | + <span >{{item.num}}积分</span> | ||
| 30 | + <span v-show="item.price>0"> + {{item.price}}元</span> | ||
| 31 | + </div> | ||
| 32 | + </div> | ||
| 33 | + </div> | ||
| 34 | + </div> | ||
| 35 | + <!-- 暂无记录展示 --> | ||
| 36 | + <div v-show="list.length == 0 && isCall" class="no_gift_tip"> | ||
| 37 | + <img src="static/img/no_gift_tip.png" alt=""/> | ||
| 38 | + <div class="text">暂无收藏商品</div> | ||
| 39 | + </div> | ||
| 40 | + <div v-show="list.length>0 && isMore ==0" class="is_more"> | ||
| 41 | + 没有更多了 | ||
| 42 | + </div> | ||
| 43 | + <!-- 地址信息组件 --> | ||
| 44 | + <!-- <app-address-toast ref="itemsInfo" @toUpdate="updateAddressInfo" v-show="pointsToast_control"></app-address-toast> --> | ||
| 45 | +</div> | ||
| 46 | +</template> | ||
| 47 | + | ||
| 48 | +<script> | ||
| 49 | +// 引入组件 | ||
| 50 | +import { Toast, Indicator } from "mint-ui"; | ||
| 51 | +// import appAddressToast from "@/components/appAddressToast/appAddressToast"; | ||
| 52 | +export default { | ||
| 53 | + data () { | ||
| 54 | + return { | ||
| 55 | + list: [], // 中奖记录列表 | ||
| 56 | + page: 0, | ||
| 57 | + isMore: 1, // 0没有更多1有更多 | ||
| 58 | + addressInfo: null, // 暂存已选商品发货地址信息 | ||
| 59 | + isCall: false, // 是否调用接口 | ||
| 60 | + // pointsToast_control: this.$route.query.pointsToast_control, | ||
| 61 | + } | ||
| 62 | + }, | ||
| 63 | + //部件 | ||
| 64 | + components: { | ||
| 65 | + // appAddressToast | ||
| 66 | + }, | ||
| 67 | + //静态 | ||
| 68 | + props: [ | ||
| 69 | + ], | ||
| 70 | + //对象内部的属性监听,也叫深度监听 | ||
| 71 | + watch: { | ||
| 72 | + }, | ||
| 73 | + //属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用; | ||
| 74 | + computed: { | ||
| 75 | + }, | ||
| 76 | + //方法表示一个具体的操作,主要书写业务逻辑; | ||
| 77 | + methods: { | ||
| 78 | + // 跳转原生商品详情页 | ||
| 79 | + jumpOrderDes (item) { | ||
| 80 | + /** | ||
| 81 | + * 跳转商品详情 | ||
| 82 | + * @param {Object} item [数据对象] | ||
| 83 | + */ | ||
| 84 | + if (this.isCNLive.value) { | ||
| 85 | + // 校验登录 | ||
| 86 | + if (this.$parent.checkLogin()) { | ||
| 87 | + // 通用跳转跳转到商品详情页新打开webview | ||
| 88 | + if (typeof this.$parent.gotoDetail === 'function') { | ||
| 89 | + | ||
| 90 | + // 设置跳转参数 | ||
| 91 | + let params = { | ||
| 92 | + type: '5', | ||
| 93 | + to: window.location.origin + '/html/select_good/1/#/goodDetails?goodsId=' + item.id, | ||
| 94 | + shop_type: '' | ||
| 95 | + }; | ||
| 96 | + | ||
| 97 | + // 页面跳转 | ||
| 98 | + this.$parent.gotoDetail(params); | ||
| 99 | + } | ||
| 100 | + } | ||
| 101 | + } else { | ||
| 102 | + this.$parent.callApp(); | ||
| 103 | + } | ||
| 104 | + }, | ||
| 105 | + // 填写地址 | ||
| 106 | + // addAddressInfo (item) { | ||
| 107 | + // // 如果是实物弹起填写地址弹窗 | ||
| 108 | + // this.pointsToast_control = true; | ||
| 109 | + // // 礼品兑换弹框派发 | ||
| 110 | + // this.$refs.itemsInfo.getItemInfo(item, item.id); | ||
| 111 | + // }, | ||
| 112 | + // 填写完地址回调 | ||
| 113 | + // updateAddressInfo (orderInfo, addressInfo) { | ||
| 114 | + // console.log(orderInfo); | ||
| 115 | + // this.list.forEach(item => { | ||
| 116 | + // let obj = item; | ||
| 117 | + // for (let key in obj) { | ||
| 118 | + // if (item.id == orderInfo.id) { | ||
| 119 | + // this.$set(item, "address_name", addressInfo.name); | ||
| 120 | + // this.$set(item, "address_phone", addressInfo.phone); | ||
| 121 | + // this.$set(item, "address_address", addressInfo.address); | ||
| 122 | + // } | ||
| 123 | + // } | ||
| 124 | + // }); | ||
| 125 | + // }, | ||
| 126 | + // 下拉刷新 | ||
| 127 | + loadMore () { | ||
| 128 | + this.loading = true; | ||
| 129 | + this.page++; | ||
| 130 | + this.getCellGoodsList(this.page); | ||
| 131 | + }, | ||
| 132 | + // 积分商城收藏列表 | ||
| 133 | + /** | ||
| 134 | + * 获取活动详情页信息 | ||
| 135 | + * @param {string} id [活动id] | ||
| 136 | + * * @param {string} uid [用户id] | ||
| 137 | + */ | ||
| 138 | + getCellGoodsList (page) { | ||
| 139 | + if (this.isMore == 1) { | ||
| 140 | + // 加载中提示 | ||
| 141 | + Indicator.open("加载中..."); | ||
| 142 | + // 请求接口 | ||
| 143 | + this.http( | ||
| 144 | + "/Api/" + this.getApiVersion().LuckDraw + "/cellGoodsList", | ||
| 145 | + { | ||
| 146 | + uid: this.getStore("uid"), | ||
| 147 | + page: page | ||
| 148 | + }, | ||
| 149 | + this.getCellGoodsListCallback, | ||
| 150 | + { | ||
| 151 | + method: "POST" | ||
| 152 | + } | ||
| 153 | + ); | ||
| 154 | + } | ||
| 155 | + }, | ||
| 156 | + /** | ||
| 157 | + * 获取积分商城收藏列表信息回调 | ||
| 158 | + * @param {object} res [服务器返回数据] | ||
| 159 | + * @param {object} ext [扩展参数] | ||
| 160 | + */ | ||
| 161 | + getCellGoodsListCallback (res, ext) { | ||
| 162 | + this.loading = false; | ||
| 163 | + // 加载完成 | ||
| 164 | + Indicator.close(); | ||
| 165 | + this.isCall = true; | ||
| 166 | + // 返回处理 | ||
| 167 | + if (res.code == 200) { | ||
| 168 | + // 解构数据 | ||
| 169 | + let { data: datas } = res; | ||
| 170 | + if (datas.length == 0) { | ||
| 171 | + this.isMore = 0; | ||
| 172 | + } else { | ||
| 173 | + /* 获取活动详情页数据 开始 */ | ||
| 174 | + for (let i = 1; i <= datas.length; i++) { | ||
| 175 | + this.list.push(datas[i - 1]); | ||
| 176 | + } | ||
| 177 | + } | ||
| 178 | + /* 获取积分商城收藏列表 结束 */ | ||
| 179 | + } else if (res.code == 400) { | ||
| 180 | + // 获取积分商城收藏列表失败 | ||
| 181 | + Toast(res.message); | ||
| 182 | + } else { | ||
| 183 | + // 获取积分商城收藏列表失败 | ||
| 184 | + Toast("获取积分商城收藏列表失败"); | ||
| 185 | + } | ||
| 186 | + }, | ||
| 187 | + /** | ||
| 188 | + * 后退 | ||
| 189 | + */ | ||
| 190 | + goback () { | ||
| 191 | + | ||
| 192 | + // 判断是否有处理函数 | ||
| 193 | + if (typeof this.$parent.back === 'function') { | ||
| 194 | + | ||
| 195 | + // 后退 | ||
| 196 | + this.$parent.back(); | ||
| 197 | + } else { | ||
| 198 | + | ||
| 199 | + // 后退 | ||
| 200 | + window.history.go(-1); | ||
| 201 | + } | ||
| 202 | + }, | ||
| 203 | + /** | ||
| 204 | + * app选中地址回选 | ||
| 205 | + * @param {Object} addressInfo [服务器返回数据] | ||
| 206 | + */ | ||
| 207 | + appSelectAddressCallback (addressInfo) { | ||
| 208 | + if (this.isAndroid.value) { | ||
| 209 | + this.$refs.itemsInfo.getAppAddressInfo(addressInfo); | ||
| 210 | + } else { | ||
| 211 | + if (addressInfo) { | ||
| 212 | + this.$refs.itemsInfo.getAppAddressInfo(JSON.parse(addressInfo)); | ||
| 213 | + } else { | ||
| 214 | + this.$refs.itemsInfo.getAppAddressInfo(); | ||
| 215 | + } | ||
| 216 | + } | ||
| 217 | + }, | ||
| 218 | + }, | ||
| 219 | + //请求数据 | ||
| 220 | + created () { | ||
| 221 | + if (this.isiPhone.value || this.isiPad.value) { | ||
| 222 | + this.pointsToast_control = this.$route.query.pointsToast_control; | ||
| 223 | + } else { | ||
| 224 | + let ext = window.localStorage.getItem("ext"); | ||
| 225 | + this.pointsToast_control = this.getParameterByName( | ||
| 226 | + "pointsToast_control", | ||
| 227 | + ext | ||
| 228 | + ); | ||
| 229 | + } | ||
| 230 | + }, | ||
| 231 | + mounted () { | ||
| 232 | + // 地址回选原生回调 | ||
| 233 | + var that = this; | ||
| 234 | + window["appSelectAddressCallback"] = function (result) { | ||
| 235 | + that.appSelectAddressCallback(result); | ||
| 236 | + }; | ||
| 237 | + // if (this.plat == "i") { | ||
| 238 | + // var that = this; | ||
| 239 | + // function resolution (data) { | ||
| 240 | + // that.appSelectAddressCallback(); | ||
| 241 | + // } | ||
| 242 | + // this.$bridge.registerHandler("appSelectAddressCallback", function ( | ||
| 243 | + // data, | ||
| 244 | + // responseCallback | ||
| 245 | + // ) { | ||
| 246 | + // resolution(data); | ||
| 247 | + | ||
| 248 | + // responseCallback(data); | ||
| 249 | + // }); | ||
| 250 | + // } else if (this.plat == "a") { | ||
| 251 | + | ||
| 252 | + // } | ||
| 253 | + // 页面显示监听 | ||
| 254 | + // document.addEventListener('visibilitychange', () => { | ||
| 255 | + // // 页面显示出来了 | ||
| 256 | + // if (document.hidden === false) { | ||
| 257 | + // this.list = []; // 中奖记录列表 | ||
| 258 | + // this.page = 0; | ||
| 259 | + // this.isMore =1; // 0没有更多1有更多 | ||
| 260 | + // this.loadMore(); | ||
| 261 | + // } | ||
| 262 | + // }); | ||
| 263 | + } | ||
| 264 | +} | ||
| 265 | +</script> | ||
| 266 | + | ||
| 267 | +<style rel="stylesheet/less" scoped lang="less"> | ||
| 268 | +@import 'pointsMyCollection'; | ||
| 269 | +</style> | ||
| 270 | + |
src/router/index.js
| @@ -354,6 +354,32 @@ const router = new Router({ | @@ -354,6 +354,32 @@ const router = new Router({ | ||
| 354 | requireAuth: false | 354 | requireAuth: false |
| 355 | } | 355 | } |
| 356 | }, | 356 | }, |
| 357 | + { | ||
| 358 | + // 兑换排行榜 | ||
| 359 | + path: "/exchangeRanking", | ||
| 360 | + name: "exchangeRanking", | ||
| 361 | + component: resolve => { | ||
| 362 | + require([ | ||
| 363 | + "@/pages/exchangeRanking/exchangeRanking" | ||
| 364 | + ], resolve); | ||
| 365 | + }, | ||
| 366 | + meta: { | ||
| 367 | + requireAuth: false | ||
| 368 | + } | ||
| 369 | + }, | ||
| 370 | + { | ||
| 371 | + // 积分商城我的收藏 | ||
| 372 | + path: "/pointsMyCollection", | ||
| 373 | + name: "pointsMyCollection", | ||
| 374 | + component: resolve => { | ||
| 375 | + require([ | ||
| 376 | + "@/pages/pointsMyCollection/pointsMyCollection" | ||
| 377 | + ], resolve); | ||
| 378 | + }, | ||
| 379 | + meta: { | ||
| 380 | + requireAuth: false | ||
| 381 | + } | ||
| 382 | + }, | ||
| 357 | /* 积分商城结束 */ | 383 | /* 积分商城结束 */ |
| 358 | 384 | ||
| 359 | /* 健步走健康值商城开始 */ | 385 | /* 健步走健康值商城开始 */ |
static/img/pointsBack.png
100755 → 100644
static/img/pointsMall/collection.png
0 → 100644
5.59 KB
static/img/pointsMall/collection2.png
0 → 100644
2.98 KB
static/img/pointsMall/header_hot.png
0 → 100644
124 KB
static/img/pointsMall/icon01.png
0 → 100755
6.84 KB
static/img/pointsMall/icon02.png
0 → 100755
5.92 KB
static/img/pointsMall/icon03.png
0 → 100755
4.33 KB
static/img/pointsMall/phb_bacb.png
0 → 100644
87.3 KB
static/img/pointsMall/right_icon.png
0 → 100755
423 Bytes
static/img/pointsMall/right_icon2.png
0 → 100644
767 Bytes
static/img/pointsMall/share01.png
0 → 100755
3.11 KB
static/img/pointsMall/share02.png
0 → 100755
2.47 KB
static/img/pointsMall/share03.png
0 → 100755
2.28 KB
static/img/pointsMall/share_icon.png
0 → 100755
679 Bytes
static/img/pointsMall/top.png
0 → 100755
3.55 KB