Commit 12c9a7d7f0bad14bdce011ded548889cb9222257
1 parent
079efa5d
新增商品详情页更多页面
Showing
3 changed files
with
280 additions
and
3 deletions
src/pages/morePoints/morePoints.less
0 → 100644
| 1 | +@charset "UTF-8"; | ||
| 2 | + | ||
| 3 | +.gift_zone_detail{ | ||
| 4 | + width: 100%; | ||
| 5 | + min-height: 100vh; | ||
| 6 | + // background: #B62128 url("https://wjj.ys1.cnliveimg.com/769/h5/H5activity/kapai/detail-top.png") no-repeat center top; | ||
| 7 | + background-size: 100%; | ||
| 8 | + overflow: hidden; | ||
| 9 | + .column-list-box{ | ||
| 10 | + margin-top:40px; | ||
| 11 | + } | ||
| 12 | + .no_more{ | ||
| 13 | + width:100%; | ||
| 14 | + height: 37px; | ||
| 15 | + font-size: 26px; | ||
| 16 | + font-weight: 400; | ||
| 17 | + color: #333; | ||
| 18 | + line-height: 37px; | ||
| 19 | + letter-spacing: 1px; | ||
| 20 | + text-align: center; | ||
| 21 | + margin-top:10px; | ||
| 22 | + // margin-bottom: 60px; | ||
| 23 | + } | ||
| 24 | +} | ||
| 0 | \ No newline at end of file | 25 | \ No newline at end of file |
src/pages/morePoints/morePoints.vue
0 → 100644
| 1 | +<template> | ||
| 2 | +<div class="gift_zone_detail"> | ||
| 3 | + <!-- <call-app-box | ||
| 4 | + class="call-app-box" | ||
| 5 | + :style="'padding-top: ' + $parent.top.value + 'px'" | ||
| 6 | + ref="callApp" | ||
| 7 | + v-if="!isCNLive.value" | ||
| 8 | + :callApps="$parent.callApps" | ||
| 9 | + > | ||
| 10 | + </call-app-box> --> | ||
| 11 | + <back-box | ||
| 12 | + v-if="isCNLive.value" | ||
| 13 | + :class="{'hide': $route.query.hideBack == true}" | ||
| 14 | + class="back-box" | ||
| 15 | + :style="'padding-top: ' + $parent.top.value + 'px'" | ||
| 16 | + @back="back" | ||
| 17 | + :backs="backs" | ||
| 18 | + > | ||
| 19 | + </back-box> | ||
| 20 | + <!-- pl --> | ||
| 21 | + <div class="pl" :style="'padding-top: ' + $parent.top.value + 'px'" :class="{'is-cnlive': isCNLive.value, 'is-open-app': $parent.isOpenApp.value, 'hide': $route.query.hideBack == true}"></div> | ||
| 22 | + <!-- 商品样式 7 列表 --> | ||
| 23 | + <div class="gift_main_box" v-if="phyicalGoods && phyicalGoods.list && phyicalGoods.list.length" infinite-scroll-immediate-check="true" v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" :infinite-scroll-distance="distance"> | ||
| 24 | + <column-list-box class="column-list-box" v-if="phyicalGoods && phyicalGoods.list && phyicalGoods.list.length" @jump="toDetail" | ||
| 25 | + :lists="phyicalGoods.list" | ||
| 26 | + :goodType="$route.query.type" | ||
| 27 | + com="7"> | ||
| 28 | + </column-list-box> | ||
| 29 | + </div> | ||
| 30 | + <!-- 没有更多了 --> | ||
| 31 | + <div v-if="isNoMore" class="no_more"> | ||
| 32 | + — 没有更多了 — | ||
| 33 | + </div> | ||
| 34 | +</div> | ||
| 35 | +</template> | ||
| 36 | + | ||
| 37 | +<script> | ||
| 38 | +// import callAppBox from "@/components/callAppBox/callAppBox"; | ||
| 39 | +import backBox from "@/components/backBox/backBox"; | ||
| 40 | +import { Toast, Indicator } from "mint-ui"; | ||
| 41 | +import columnListBox from "@/components/columnListBox/columnListBox"; | ||
| 42 | +export default { | ||
| 43 | + name: 'morePoints', | ||
| 44 | + data () { | ||
| 45 | + return { | ||
| 46 | + backs: null, // 后退按钮组 | ||
| 47 | + loading: true, | ||
| 48 | + distance: 50, | ||
| 49 | + phyicalGoods: { list: [] }, // 实物商品 | ||
| 50 | + page: 1, | ||
| 51 | + isNoMore: false | ||
| 52 | + } | ||
| 53 | + }, | ||
| 54 | + //部件 | ||
| 55 | + components: { | ||
| 56 | + backBox, | ||
| 57 | + columnListBox, | ||
| 58 | + // callAppBox | ||
| 59 | + }, | ||
| 60 | + //静态 | ||
| 61 | + props: [ | ||
| 62 | + ], | ||
| 63 | + //对象内部的属性监听,也叫深度监听 | ||
| 64 | + head: { | ||
| 65 | + title () { | ||
| 66 | + return { | ||
| 67 | + inner: this.title | ||
| 68 | + } | ||
| 69 | + } | ||
| 70 | + }, | ||
| 71 | + //属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用; | ||
| 72 | + computed: { | ||
| 73 | + }, | ||
| 74 | + //方法表示一个具体的操作,主要书写业务逻辑; | ||
| 75 | + methods: { | ||
| 76 | + /** | ||
| 77 | + * 上拉加载 | ||
| 78 | + */ | ||
| 79 | + loadMore () { | ||
| 80 | + this.$set(this, "page", ++this.page); | ||
| 81 | + this.getIntegralNewGoodsList(this.page); | ||
| 82 | + }, | ||
| 83 | + /** | ||
| 84 | + * 加载积分商城商品更多 | ||
| 85 | + * @param {int} page [页码] | ||
| 86 | + * @param {int}type [类型1为实物 2为虚拟物品 3为红包] | ||
| 87 | + */ | ||
| 88 | + getIntegralNewGoodsList (page) { | ||
| 89 | + | ||
| 90 | + // 判断必须参数 | ||
| 91 | + if (this.$route.query.type) { | ||
| 92 | + | ||
| 93 | + // 加载中 | ||
| 94 | + this.$set(this, "loading", true); | ||
| 95 | + | ||
| 96 | + // 加载中提示 | ||
| 97 | + Indicator.open("加载中..."); | ||
| 98 | + | ||
| 99 | + // 请求接口 | ||
| 100 | + this.http("/Api/" + (this.getApiVersion().LuckDraw) + "/integralNewGoodsList", { | ||
| 101 | + type: this.$route.query.type, | ||
| 102 | + // uid: this.getStore("uid"), | ||
| 103 | + page: page || 1 | ||
| 104 | + }, this.getIntegralNewGoodsListCallback, { | ||
| 105 | + method: "POST" | ||
| 106 | + }); | ||
| 107 | + } | ||
| 108 | + }, | ||
| 109 | + | ||
| 110 | + /** | ||
| 111 | + * 礼品专区详情页回调 | ||
| 112 | + * @param {object} res [服务器返回数据] | ||
| 113 | + * @param {object} ext [扩展参数] | ||
| 114 | + */ | ||
| 115 | + getIntegralNewGoodsListCallback (res, ext) { | ||
| 116 | + | ||
| 117 | + // 加载完成 | ||
| 118 | + Indicator.close(); | ||
| 119 | + | ||
| 120 | + // 返回处理 | ||
| 121 | + if (res.code == 200) { | ||
| 122 | + // 解构数据 | ||
| 123 | + let { data: datas } = res; | ||
| 124 | + /*设置标题 */ | ||
| 125 | + // this.$set(this, "title", datas.title); | ||
| 126 | + this.$set(this.backs, 'title', datas.title); | ||
| 127 | + /* 获取商品数据 开始 */ | ||
| 128 | + if (datas.goods && datas.goods.length) { | ||
| 129 | + // 设置列表 | ||
| 130 | + this.$set(this.phyicalGoods, "list", [...this.phyicalGoods.list, ...datas.goods]); | ||
| 131 | + // 设置还有需要加载的内容 | ||
| 132 | + this.$set(this, "loading", false); | ||
| 133 | + } else { | ||
| 134 | + this.isNoMore = true; // 没有更多了 | ||
| 135 | + // 没有需要加载的内容,停止上拉加载 | ||
| 136 | + this.$set(this, "loading", true); | ||
| 137 | + } | ||
| 138 | + /* 获取抽奖记录数据 结束 */ | ||
| 139 | + | ||
| 140 | + } else if (res.code == 400) { | ||
| 141 | + | ||
| 142 | + // 获取抽奖记录失败 | ||
| 143 | + Toast(res.message); | ||
| 144 | + } else { | ||
| 145 | + | ||
| 146 | + // 获取抽奖记录失败 | ||
| 147 | + Toast("获取专区礼包失败"); | ||
| 148 | + } | ||
| 149 | + }, | ||
| 150 | + | ||
| 151 | + /** | ||
| 152 | + * 跳转商品详情 | ||
| 153 | + * @param {Object} item [数据对象] | ||
| 154 | + */ | ||
| 155 | + toDetail (item) { | ||
| 156 | + if (this.isCNLive.value) { | ||
| 157 | + // this.$router.push({ | ||
| 158 | + // path: "/goodDetails", | ||
| 159 | + // query: { | ||
| 160 | + // goodsId: item.id, | ||
| 161 | + // uid: this.getStore("uid") | ||
| 162 | + // } | ||
| 163 | + // }) | ||
| 164 | + // 通用跳转跳转到商品详情页新打开webview | ||
| 165 | + if (typeof this.$parent.gotoDetail === 'function') { | ||
| 166 | + | ||
| 167 | + // 设置跳转参数 | ||
| 168 | + let params = { | ||
| 169 | + type: '5', | ||
| 170 | + to: window.location.origin + '/html/select_good/1/#/goodDetails?goodsId=' + item.id, | ||
| 171 | + shop_type: '' | ||
| 172 | + }; | ||
| 173 | + | ||
| 174 | + // 页面跳转 | ||
| 175 | + this.$parent.gotoDetail(params); | ||
| 176 | + } | ||
| 177 | + } else { | ||
| 178 | + this.$parent.callApp(); | ||
| 179 | + } | ||
| 180 | + }, | ||
| 181 | + | ||
| 182 | + /** | ||
| 183 | + * 后退 | ||
| 184 | + */ | ||
| 185 | + back () { | ||
| 186 | + // 返回先隐藏弹框 | ||
| 187 | + | ||
| 188 | + // 判断是否有处理函数 | ||
| 189 | + if (typeof this.$parent.back === 'function') { | ||
| 190 | + // 隐藏通用浮层 | ||
| 191 | + this.$parent.$refs.showModal.hideLayer(); | ||
| 192 | + // 后退 | ||
| 193 | + this.$parent.back(); | ||
| 194 | + } else { | ||
| 195 | + | ||
| 196 | + // 后退 | ||
| 197 | + window.history.go(-1); | ||
| 198 | + } | ||
| 199 | + }, | ||
| 200 | + | ||
| 201 | + /** | ||
| 202 | + * 分享 | ||
| 203 | + */ | ||
| 204 | + toShare () { | ||
| 205 | + // 判断分享 | ||
| 206 | + if (typeof this.$parent.toShare === 'function') { | ||
| 207 | + this.$parent.toShare(46, this.$route.query.goodsId, ""); | ||
| 208 | + } | ||
| 209 | + }, | ||
| 210 | + | ||
| 211 | + }, | ||
| 212 | + //请求数据 | ||
| 213 | + created () { | ||
| 214 | + // 抽奖记录 | ||
| 215 | + this.getIntegralNewGoodsList(this.page); | ||
| 216 | + | ||
| 217 | + // 判断是否在App内 | ||
| 218 | + if (this.isCNLive.value) { | ||
| 219 | + | ||
| 220 | + // 添加后退按钮组“后退”和“分享”按钮 | ||
| 221 | + this.$set(this, 'backs', { | ||
| 222 | + funcs: { | ||
| 223 | + back: { | ||
| 224 | + icon: "static/img/icon_back.png" | ||
| 225 | + }, | ||
| 226 | + funcArray: [ | ||
| 227 | + { | ||
| 228 | + icon: "static/img/icon_share.png", | ||
| 229 | + func: this.toShare | ||
| 230 | + } | ||
| 231 | + ] | ||
| 232 | + } | ||
| 233 | + }); | ||
| 234 | + } | ||
| 235 | + }, | ||
| 236 | + mounted () { | ||
| 237 | + } | ||
| 238 | +} | ||
| 239 | +</script> | ||
| 240 | + | ||
| 241 | +<style rel="stylesheet/less" lang="less" scoped> | ||
| 242 | +@import 'morePoints'; | ||
| 243 | +</style> | ||
| 244 | + |
src/router/index.js
| @@ -243,9 +243,7 @@ const router = new Router({ | @@ -243,9 +243,7 @@ const router = new Router({ | ||
| 243 | path: "/labourUnion", | 243 | path: "/labourUnion", |
| 244 | name: "labourUnion", | 244 | name: "labourUnion", |
| 245 | component: resolve => { | 245 | component: resolve => { |
| 246 | - require([ | ||
| 247 | - "@/pages/labourUnion/labourUnion" | ||
| 248 | - ], resolve); | 246 | + require(["@/pages/labourUnion/labourUnion"], resolve); |
| 249 | }, | 247 | }, |
| 250 | meta: { | 248 | meta: { |
| 251 | requireAuth: false | 249 | requireAuth: false |
| @@ -267,6 +265,17 @@ const router = new Router({ | @@ -267,6 +265,17 @@ const router = new Router({ | ||
| 267 | } | 265 | } |
| 268 | }, | 266 | }, |
| 269 | { | 267 | { |
| 268 | + // 积分商城商品数据更多页 | ||
| 269 | + path: "/morePoints", | ||
| 270 | + name: "morePoints", | ||
| 271 | + component: resolve => { | ||
| 272 | + require(["@/pages/morePoints/morePoints"], resolve); | ||
| 273 | + }, | ||
| 274 | + meta: { | ||
| 275 | + requireAuth: false | ||
| 276 | + } | ||
| 277 | + }, | ||
| 278 | + { | ||
| 270 | // 积分商城兑换记录与其他积分商城共用 | 279 | // 积分商城兑换记录与其他积分商城共用 |
| 271 | path: "/pointsExchangeRecords", | 280 | path: "/pointsExchangeRecords", |
| 272 | name: "pointsExchangeRecords", | 281 | name: "pointsExchangeRecords", |