Commit 4c5e0044c56b3736e275f3695512194f3561e519

Authored by 王强
1 parent a5bfdb55

折扣专区添加未开始、进行中、已结束状态判断及处理~

src/pages/common/common.vue
@@ -29,8 +29,11 @@ @@ -29,8 +29,11 @@
29 29
30 // 读取文件属性 30 // 读取文件属性
31 import Exif from 'exif-js'; 31 import Exif from 'exif-js';
  32 +
  33 + // 公用组件
32 import maskLayer from "@/components/maskLayer/maskLayer"; 34 import maskLayer from "@/components/maskLayer/maskLayer";
33 import showModal from "@/components/showModal/showModal"; 35 import showModal from "@/components/showModal/showModal";
  36 +
34 export default { 37 export default {
35 name: "common", 38 name: "common",
36 data () { 39 data () {
src/pages/discountList/discountList.less
@@ -41,10 +41,23 @@ @@ -41,10 +41,23 @@
41 margin: 0 auto; 41 margin: 0 auto;
42 width: 630px; 42 width: 630px;
43 height: auto; 43 height: auto;
44 - .text {  
45 - color: #633531;  
46 - font-size: 24px;  
47 - font-weight: 400; 44 + .state {
  45 + display: flex;
  46 + justify-content: flex-start;
  47 + align-items: center;
  48 + .icon-tips-img {
  49 + display: block;
  50 + width: 22px;
  51 + height: 22px;
  52 + & + .text {
  53 + margin-left: 13px;
  54 + }
  55 + }
  56 + .text {
  57 + color: #633531;
  58 + font-size: 24px;
  59 + font-weight: 400;
  60 + }
48 } 61 }
49 } 62 }
50 .section { 63 .section {
src/pages/discountList/discountList.vue
1 <template> 1 <template>
2 - <div class="discount-list-page" :style="{'backgroundColor': datas && datas.discount_color ? datas.discount_color : ''}"> 2 + <div class="discount-list-page" :style="{'backgroundColor': discountColor}">
3 3
4 <!-- H5唤起App组件 --> 4 <!-- H5唤起App组件 -->
5 <call-app-box class="call-app-box" ref="callApp" v-if="!isCNLive.value && $parent.isOpenApp.value" 5 <call-app-box class="call-app-box" ref="callApp" v-if="!isCNLive.value && $parent.isOpenApp.value"
@@ -18,39 +18,35 @@ @@ -18,39 +18,35 @@
18 <div class="main-box"> 18 <div class="main-box">
19 19
20 <!-- 头图 --> 20 <!-- 头图 -->
21 - <div class="header-box" v-if="datas && datas.discount_img">  
22 - <img :src="datas.discount_img + SIGN.BIG" class="header-img" /> 21 + <div class="header-box" v-if="discountImg">
  22 + <img :src="discountImg + SIGN.BIG" class="header-img" />
23 </div> 23 </div>
24 24
25 <!-- 倒计时 --> 25 <!-- 倒计时 -->
26 - <div class="count-down-box" v-if="datas && datas.discount_time && datas.discount_time > 0">  
27 - <div class="text">  
28 - 距离活动结束仅剩 26 + <div class="count-down-box">
  27 + <div class="state" v-if="discountType == '0'">
  28 + <div class="text">距离活动开始仅剩</div>
29 </div> 29 </div>
30 -  
31 - <!-- 倒计时组件 -->  
32 - <count-down-com slot="extend"  
33 - :time="parseInt(datas.discount_time) * 1000"  
34 - sty="5">  
35 - </count-down-com>  
36 - </div>  
37 - <div class="count-down-box" v-if="datas && (!datas.discount_time || datas.discount_time <= 0)">  
38 - <div class="text">  
39 - 活动已结束 30 + <div class="state" v-if="discountType == '1'">
  31 + <div class="text">距离活动结束仅剩</div>
  32 + </div>
  33 + <div class="state" v-if="discountType === '2'">
  34 + <img src="/static/img/icon_tips_book.png" class="icon-tips-img" />
  35 + <div class="text">本次活动已结束,敬请期待下次折扣活动~</div>
40 </div> 36 </div>
41 37
42 <!-- 倒计时组件 --> 38 <!-- 倒计时组件 -->
43 - <count-down-com slot="extend"  
44 - :time="-1" 39 + <count-down-com slot="extend" v-if="discountTime && discountTime > 0 && (discountType == '0' || discountType == '1')"
  40 + :time="parseInt(discountTime) * 1000"
45 sty="5"> 41 sty="5">
46 </count-down-com> 42 </count-down-com>
47 </div> 43 </div>
48 44
49 <!-- 商品列表 --> 45 <!-- 商品列表 -->
50 - <div class="section goods-list" v-if="goodsLists && goodsLists.length"> 46 + <div class="section goods-list" v-if="discountLists && discountLists.length">
51 47
52 <!-- 商品列表 --> 48 <!-- 商品列表 -->
53 - <goods-item-8 v-for="(item, index) in goodsLists" :key="index" @jump="toDetail" @primary="primary" 49 + <goods-item-8 v-for="(item, index) in discountLists" :key="index" @jump="toDetail" @primary="primary"
54 :item="item" 50 :item="item"
55 sty="1"> 51 sty="1">
56 52
@@ -93,10 +89,14 @@ @@ -93,10 +89,14 @@
93 name: 'discountListPage', 89 name: 'discountListPage',
94 data () { 90 data () {
95 return { 91 return {
96 - title: "", // 标题  
97 - backs: null, // 后退按钮组  
98 - datas: null, // 接口数据  
99 - goodsLists: null // 商品列表 92 + title: "", // 标题
  93 + backs: null, // 后退按钮组
  94 + discountColor: null, // 背景颜色
  95 + discountImg: null, // 头图
  96 + discountType: null, // 折扣专区状态,0:未开始;1:进行中;2:已结束
  97 + discountTimeout: 0, // 倒计时超时时间计数
  98 + discountTime: null, // 倒计时时间
  99 + discountLists: null // 折扣专区数据
100 } 100 }
101 }, 101 },
102 computed: { 102 computed: {
@@ -185,20 +185,43 @@ @@ -185,20 +185,43 @@
185 185
186 /* 获取折扣专区列表数据 开始 */ 186 /* 获取折扣专区列表数据 开始 */
187 187
188 - // 判断接口是否有数据  
189 - if (datas) { 188 + // 设置折扣商品状态
  189 + this.$set(this, 'discountType', datas.discount_type);
190 190
191 - // 设置接口数据  
192 - this.$set(this, 'datas', datas); 191 + // 设置背景色
  192 + this.$set(this, 'discountColor', datas.discount_color);
  193 +
  194 + // 头图
  195 + this.$set(this, 'discountImg', datas.discount_img);
193 196
194 - // 判断是否有列表数据  
195 - if (datas.list && datas.list.length) { 197 + // 设置折扣专区数据
  198 + if (datas.discount_time > 0 && datas.list && datas.list.length) {
196 199
197 - // 设置商品列表数据  
198 - this.$set(this, 'goodsLists', datas.list);  
199 - } 200 + // 设置倒计时时间
  201 + this.$set(this, 'discountTime', datas.discount_time);
  202 +
  203 + // 设置倒计时超时轮训
  204 + let timeoutInterval = setInterval(() => {
  205 +
  206 + // 判断是否超时
  207 + if (this.discountTimeout > this.discountTime) {
  208 +
  209 + // 停止倒计时
  210 + clearInterval(timeoutInterval);
  211 +
  212 + // 刷新页面
  213 + window.location.reload();
  214 + } else {
  215 +
  216 + // 倒计时超时时间计数
  217 + this.discountTimeout++;
  218 + }
  219 + }, 1000);
200 } 220 }
201 221
  222 + // 设置折扣专区列表数据
  223 + this.$set(this, 'discountLists', datas.list);
  224 +
202 /* 获取折扣专区列表数据 结束 */ 225 /* 获取折扣专区列表数据 结束 */
203 226
204 } else if (res.code == 400) { 227 } else if (res.code == 400) {
@@ -221,6 +244,14 @@ @@ -221,6 +244,14 @@
221 // 判断App内 244 // 判断App内
222 if (this.isCNLive.value) { 245 if (this.isCNLive.value) {
223 246
  247 + // 判断是活动未开始状态,弹窗提示活动未开始
  248 + if (this.discountType == '0') {
  249 +
  250 + // 通用弹窗提示
  251 + this.showModal();
  252 + return false;
  253 + }
  254 +
224 // 已抢光,不跳转 255 // 已抢光,不跳转
225 if (item.num == '2' || (item.num == '1' && item.stock == '0')) { 256 if (item.num == '2' || (item.num == '1' && item.stock == '0')) {
226 return false; 257 return false;
@@ -256,6 +287,24 @@ @@ -256,6 +287,24 @@
256 this.toDetail(item); 287 this.toDetail(item);
257 }, 288 },
258 289
  290 + showModal() {
  291 +
  292 + // 判断通用弹窗是否存在
  293 + if (typeof this.$parent.showModal === 'function') {
  294 +
  295 + // 设置通用弹窗参数
  296 + let options = {
  297 + title: "提示",
  298 + message: "当前活动未开始,请耐心等待",
  299 + confirmButtonText: "我知道了",
  300 + closeOnClickModal: true
  301 + };
  302 +
  303 + // 调用函数,显示通用弹窗
  304 + this.$parent.showModal(options);
  305 + }
  306 + },
  307 +
259 /** 308 /**
260 * 唤起App封装 309 * 唤起App封装
261 */ 310 */
src/pages/newDaren/newDaren.vue
@@ -308,11 +308,11 @@ @@ -308,11 +308,11 @@
308 }else if (res.statusCode === 200 && res.data.code == 400) { 308 }else if (res.statusCode === 200 && res.data.code == 400) {
309 309
310 // 关注失败 310 // 关注失败
311 - this.showToast(res.data.message); 311 + Toast(res.data.message);
312 } else { 312 } else {
313 313
314 // 关注失败 314 // 关注失败
315 - this.showToast("关注失败"); 315 + Toast("关注失败");
316 } 316 }
317 }, 317 },
318 /** 318 /**
src/pages/optimization2/optimization2.vue
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 <div class="main-box"> 18 <div class="main-box">
19 19
20 <!-- 折扣专区 --> 20 <!-- 折扣专区 -->
21 - <div class="section shop-list" v-if="discountTime && discountTime > 0"> 21 + <div class="section shop-list" v-if="discountLists && discountLists.length">
22 22
23 <!-- 标题 --> 23 <!-- 标题 -->
24 <text-bg-title-com @more="toDiscountList" 24 <text-bg-title-com @more="toDiscountList"
@@ -28,8 +28,8 @@ @@ -28,8 +28,8 @@
28 }"> 28 }">
29 29
30 <!-- 倒计时组件 --> 30 <!-- 倒计时组件 -->
31 - <count-down-com slot="extend"  
32 - :time="discountTime * 1000" 31 + <count-down-com slot="extend" v-if="discountTime && discountTime > 0 && discountType == '1'"
  32 + :time="parseInt(discountTime) * 1000"
33 sty="4"> 33 sty="4">
34 </count-down-com> 34 </count-down-com>
35 </text-bg-title-com> 35 </text-bg-title-com>
@@ -168,6 +168,7 @@ @@ -168,6 +168,7 @@
168 title: "", // 标题 168 title: "", // 标题
169 backs: null, // 后退按钮组 169 backs: null, // 后退按钮组
170 navs: null, // 导航 170 navs: null, // 导航
  171 + discountType: null, // 折扣专区状态,0:未开始;1:进行中;2:已结束
171 discountTimeout: 0, // 倒计时超时时间计数 172 discountTimeout: 0, // 倒计时超时时间计数
172 discountTime: null, // 倒计时时间 173 discountTime: null, // 倒计时时间
173 discountLists: null, // 折扣专区数据 174 discountLists: null, // 折扣专区数据
@@ -313,6 +314,9 @@ @@ -313,6 +314,9 @@
313 314
314 /* 获取优选库“优选”数据 开始 */ 315 /* 获取优选库“优选”数据 开始 */
315 316
  317 + // 设置折扣商品状态
  318 + this.$set(this, 'discountType', datas.discount_type);
  319 +
316 // 设置折扣专区数据 320 // 设置折扣专区数据
317 if (datas.discount_time > 0 && datas.discount && datas.discount.length) { 321 if (datas.discount_time > 0 && datas.discount && datas.discount.length) {
318 322
@@ -328,17 +332,19 @@ @@ -328,17 +332,19 @@
328 // 停止倒计时 332 // 停止倒计时
329 clearInterval(timeoutInterval); 333 clearInterval(timeoutInterval);
330 334
331 - // 设置倒计时时间为负数,隐藏“折扣专区”区块  
332 - this.$set(this, 'discountTime', '-1'); 335 + // 刷新页面
  336 + window.location.reload();
333 } else { 337 } else {
  338 +
  339 + // 倒计时超时时间计数
334 this.discountTimeout++; 340 this.discountTimeout++;
335 } 341 }
336 }, 1000); 342 }, 1000);
337 -  
338 - // 设置折扣专区数据  
339 - this.$set(this, 'discountLists', datas.discount);  
340 } 343 }
341 344
  345 + // 设置折扣专区列表数据
  346 + this.$set(this, 'discountLists', datas.discount);
  347 +
342 // 判断品质优选是否有数据 348 // 判断品质优选是否有数据
343 if (datas.quality && datas.quality.length) { 349 if (datas.quality && datas.quality.length) {
344 350
src/pages/recommendMore/recommendMore.vue
@@ -168,11 +168,11 @@ @@ -168,11 +168,11 @@
168 }else if (res.statusCode === 200 && res.data.code == 400) { 168 }else if (res.statusCode === 200 && res.data.code == 400) {
169 169
170 // 关注失败 170 // 关注失败
171 - this.showToast(res.data.message); 171 + Toast(res.data.message);
172 } else { 172 } else {
173 173
174 // 关注失败 174 // 关注失败
175 - this.showToast("关注失败"); 175 + Toast("关注失败");
176 } 176 }
177 }, 177 },
178 /** 178 /**
static/img/icon_tips_book.png 0 → 100644

653 Bytes