提交 2b3d0550 编写于 作者: G gongfuxiang

小程序开发

上级 8e8db350
......@@ -113,7 +113,18 @@ class Goods extends Common
'common_order_is_booking' => (int) MyC('common_order_is_booking', 0),
'common_app_is_use_mobile_detail' => $is_use_mobile_detail,
'common_app_is_online_service' => (int) MyC('common_app_is_online_service', 0),
'common_app_is_limitedtimediscount' => (int) MyC('common_app_is_limitedtimediscount'),
];
// 秒杀
if($result['common_app_is_limitedtimediscount'] == 1)
{
$ret = CallPluginsServiceMethod('limitedtimediscount', 'Service', 'GoodsDetailCountdown');
if($ret['code'] == 0)
{
$result['plugins_limitedtimediscount_data'] = $ret['data'];
}
}
return DataReturn('success', 0, $result);
}
......
......@@ -64,7 +64,7 @@ class Index extends Common
// 秒杀
if($common_app_is_limitedtimediscount == 1)
{
$ret = CallPluginsMethod('app\plugins\limitedtimediscount\service\Service', 'ApiHomeAd');
$ret = CallPluginsServiceMethod('limitedtimediscount', 'Service', 'ApiHomeAd');
if($ret['code'] == 0)
{
$result['plugins_limitedtimediscount_data'] = $ret['data'];
......
......@@ -17,11 +17,13 @@
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-07-10T22:03:48+0800
* @param [string] $plugins_class [类命名空间]
* @param [string] $method [方法名称]
* @param [string] $plugins [插件名称]
* @param [string] $service [服务层名称]
* @param [string] $method [方法名称]
*/
function CallPluginsMethod($plugins_class, $method)
function CallPluginsServiceMethod($plugins, $service, $method)
{
$plugins_class = 'app\plugins\\'.$plugins.'\service\\'.$service;
if(class_exists($plugins_class))
{
return $plugins_class::$method();
......
......@@ -62,7 +62,7 @@ App({
// 请求地址
request_url: "{{request_url}}",
request_url: 'http://tp5-dev.com/',
request_url: 'http://test.shopxo.net/',
//request_url: 'http://test.shopxo.net/',
// 基础信息
application_title: "{{application_title}}",
......
{
"pages": [
"pages": ["pages/goods-detail/goods-detail",
"pages/index/index",
"pages/goods-category/goods-category",
"pages/cart/cart",
......@@ -8,7 +8,7 @@
"pages/login/login",
"pages/paytips/paytips",
"pages/goods-search/goods-search",
"pages/goods-detail/goods-detail",
"pages/goods-comment/goods-comment",
"pages/goods-attribute/goods-attribute",
"pages/buy/buy",
......
......@@ -162,7 +162,12 @@
}
.goods-buy-nav .collect { border-left: 1px solid #e1e1e1; }
.goods-buy-nav .fl image { width: 25px; height: 25px; margin: 0 auto; }
.goods-title {
font-size: 32rpx;
line-height: 44rpx;
font-weight: 500;
padding: 15rpx 10rpx;
}
.goods-base {
padding: 15rpx 10rpx;
}
......@@ -171,11 +176,6 @@
top: 0;
right: 0;
}
.goods-base .goods-title {
font-size: 32rpx;
line-height: 44rpx;
font-weight: 500;
}
.goods-base .goods-share {
position: absolute;
top: 0;
......@@ -229,4 +229,43 @@
padding:2px 5px;
line-height:20px;
border-radius:1px;
}
/*
* 限时秒杀
*/
.limitedtimediscount {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQIAAAAgAQMAAADDkuSaAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAGUExUReQ5POlVO+6K1q8AAACiSURBVDjLhZK7EYMwEETlISCkBJUCnUEplOISXIJDQgcEHg9o/Vt5ZOZu9eKXvL0LIbOECg3OFSMiVYwRWKVwwouLMtq3gUkY/cfYhIEvi2gls9+aEa3kLlqJndwVBga/lSTRSm6i1U2OByNNfivZRCu5Wnf9Z/BbyS5ajfUb0ygfO9pGkTzaBh6i9bB+6xr5sXvf2EUrWUVrsX6UBkTrL/kJzQQAijmza5AAAAAASUVORK5CYII=) right top no-repeat #f23030;
background-size: cover;
padding: 10rpx;
height: 56rpx;
overflow: hidden;
margin-top: 10rpx;
}
.limitedtimediscount .icon {
width: 50rpx;
height: 50rpx;
vertical-align: top;
margin-right: 10rpx;
}
.limitedtimediscount .countdown {
color: #fff;
line-height: 56rpx;
}
.limitedtimediscount .countdown .timer-title {
margin-right: 10rpx;
}
.limitedtimediscount .countdown .timer-hours {
padding: 0 6rpx;
-moz-border-radius: 8rpx;
border-radius: 8rpx;
color: #ffe500;
min-width: 35rpx;
text-align: center;
font-weight: bold;
font-size: 32rpx;
}
.limitedtimediscount .countdown .ds {
padding: 0 4rpx;
}
\ No newline at end of file
......@@ -15,9 +15,17 @@
</block>
</swiper>
<!-- 标题 -->
<view class="goods-title multi-text" style="color:{{goods.title_color}}">{{goods.title}}</view>
<!-- 限时秒杀 -->
<view a:if="{{common_app_is_limitedtimediscount == 1}}">
<import src="/pages/lib/limitedtimediscount/goods-detail.axml" />
<template is="limitedtimediscount" data="{{plugins_limitedtimediscount_data: plugins_limitedtimediscount_data, plugins_limitedtimediscount_is_show_time: plugins_limitedtimediscount_is_show_time, plugins_limitedtimediscount_time_millisecond: plugins_limitedtimediscount_time_millisecond}}"></template>
</view>
<!-- 基础信息 -->
<view class="goods-base bg-white">
<view class="goods-title multi-text" style="color:{{goods.title_color}}">{{goods.title}}</view>
<view class="goods-price single-text">
<view class="goods-share tc">
<button type="default" size="mini" open-type="share" hover-class="none">
......
......@@ -32,10 +32,16 @@ Page({
show_field_price_text: null,
common_app_is_use_mobile_detail: 1,
// 限时秒杀插件
common_app_is_limitedtimediscount: 0,
plugins_limitedtimediscount_data: null,
plugins_limitedtimediscount_is_show_time: true,
plugins_limitedtimediscount_time_millisecond: 0,
},
onLoad(params) {
//params['goods_id']=12;
params['goods_id']=2;
this.setData({params: params});
this.init();
},
......@@ -102,8 +108,16 @@ Page({
show_field_price_text: (data.goods.show_field_price_text == '销售价') ? null : (data.goods.show_field_price_text.replace(/<[^>]+>/g, "") || null),
common_app_is_use_mobile_detail: data.common_app_is_use_mobile_detail || 0,
common_app_is_limitedtimediscount: data.common_app_is_limitedtimediscount || 0,
plugins_limitedtimediscount_data: data.plugins_limitedtimediscount_data || null,
});
// 限时秒杀倒计时
if (this.data.common_app_is_limitedtimediscount == 1 && this.data.plugins_limitedtimediscount_data != null) {
this.plugins_limitedtimediscount_countdown();
}
// 标题
my.setNavigationBar({title: data.goods.title});
......@@ -661,6 +675,67 @@ Page({
});
},
// 显示秒杀插件-倒计时
plugins_limitedtimediscount_countdown() {
var hours = this.data.plugins_limitedtimediscount_data.time.hours || 0;
var minutes = this.data.plugins_limitedtimediscount_data.time.minutes || 0;
var seconds = this.data.plugins_limitedtimediscount_data.time.seconds || 0;
var self = this;
if (hours > 0 || minutes > 0 || seconds > 0) {
// 秒
var timer = setInterval(function () {
if (seconds <= 0) {
if (minutes > 0) {
minutes--;
seconds = 59;
} else if (hours > 0) {
hours--;
minutes = 59;
seconds = 59;
}
} else {
seconds--;
}
self.setData({
'plugins_limitedtimediscount_data.time.hours': (hours < 10 && hours.length == 1) ? '0' + hours : hours,
'plugins_limitedtimediscount_data.time.minutes': (minutes < 10 && minutes.length == 1) ? '0' + minutes : minutes,
'plugins_limitedtimediscount_data.time.seconds': (seconds < 10 && seconds.length == 1) ? '0' + seconds : seconds,
});
if (hours <= 0 && minutes <= 0 && seconds <= 0) {
// 停止时间
clearInterval(timer);
// 活动已结束
self.setData({
'plugins_limitedtimediscount_data.desc': '活动已结束',
plugins_limitedtimediscount_is_show_time: false,
});
}
}, 1000);
// 毫秒
var count = 0;
var timers = setInterval(function () {
count++;
self.setData({ plugins_limitedtimediscount_time_millisecond: count});
if(count > 9) {
count = 0;
}
if(self.data.plugins_limitedtimediscount_data.time.hours <= 0 && self.data.plugins_limitedtimediscount_data.time.minutes <= 0 && self.data.plugins_limitedtimediscount_data.time.seconds <= 0) {
clearInterval(timers);
}
}, 100);
} else {
// 活动已结束
self.setData({
'plugins_limitedtimediscount_data.desc': '活动已结束',
plugins_limitedtimediscount_is_show_time: false,
});
}
},
// 自定义分享
onShareAppMessage() {
return {
......
......@@ -134,9 +134,9 @@ Page({
}
self.setData({
'plugins_limitedtimediscount_data.time.hours': (hours < 10) ? 0 + hours : hours,
'plugins_limitedtimediscount_data.time.minutes': (minutes < 10) ? 0 + minutes : minutes,
'plugins_limitedtimediscount_data.time.seconds': (seconds < 10) ? 0 + seconds : seconds,
'plugins_limitedtimediscount_data.time.hours': (hours < 10 && hours.length == 1) ? 0 + hours : hours,
'plugins_limitedtimediscount_data.time.minutes': (minutes < 10 && minutes.length == 1) ? 0 + minutes : minutes,
'plugins_limitedtimediscount_data.time.seconds': (seconds < 10 && seconds.length == 1) ? 0 + seconds : seconds,
});
if (hours <= 0 && minutes <= 0 && seconds <= 0) {
......
<template name="limitedtimediscount">
<view class="limitedtimediscount">
<view class="countdown">
<image class="icon" src="/pages/lib/limitedtimediscount/detail-icon.png" mode="aspectFit"></image>
<text class="text-title"> {{plugins_limitedtimediscount_data.title || '限时秒杀'}}</text>
<view class="time-right fr">
<block a:if="{{plugins_limitedtimediscount_is_show_time}}">
<view class="timer-hours millisecond fr">{{plugins_limitedtimediscount_time_millisecond}}</view>
<view class="ds fr">秒</view>
<view class="timer-hours seconds fr">{{plugins_limitedtimediscount_data.time.seconds}}</view>
<view class="ds fr">分</view>
<view class="timer-hours minutes fr">{{plugins_limitedtimediscount_data.time.minutes}}</view>
<view class="ds fr">时</view>
<view class="timer-hours hours fr">{{plugins_limitedtimediscount_data.time.hours}}</view>
</block>
<view class="timer-title fr">{{plugins_limitedtimediscount_data.desc || '距离结束还有'}}</view>
</view>
</view>
</view>
</template>
\ No newline at end of file
......@@ -62,7 +62,7 @@ App({
// 请求地址
// request_url: "{{request_url}}",
request_url: 'http://tp5-dev.com/',
request_url: 'https://test.shopxo.net/',
//request_url: 'https://test.shopxo.net/',
// 基础信息
application_title: "{{application_title}}",
......
......@@ -35,8 +35,13 @@ Page({
common_app_is_use_mobile_detail: 1,
popup_share_status: false,
common_app_is_online_service: 0,
// 限时秒杀插件
common_app_is_limitedtimediscount: 0,
plugins_limitedtimediscount_data: null,
plugins_limitedtimediscount_is_show_time: true,
plugins_limitedtimediscount_time_millisecond: 0,
},
onLoad(params) {
......@@ -108,8 +113,16 @@ Page({
show_field_price_text: (data.goods.show_field_price_text == '销售价') ? null : (data.goods.show_field_price_text.replace(/<[^>]+>/g, "") || null),
common_app_is_use_mobile_detail: data.common_app_is_use_mobile_detail || 0,
common_app_is_online_service: data.common_app_is_online_service || 0,
common_app_is_limitedtimediscount: data.common_app_is_limitedtimediscount || 0,
plugins_limitedtimediscount_data: data.plugins_limitedtimediscount_data || null,
});
// 限时秒杀倒计时
if (this.data.common_app_is_limitedtimediscount == 1 && this.data.plugins_limitedtimediscount_data != null) {
this.plugins_limitedtimediscount_countdown();
}
// 标题
wx.setNavigationBarTitle({ title: data.goods.title });
......@@ -625,6 +638,67 @@ Page({
this.setData({ popup_share_status: false });
},
// 显示秒杀插件-倒计时
plugins_limitedtimediscount_countdown() {
var hours = this.data.plugins_limitedtimediscount_data.time.hours || 0;
var minutes = this.data.plugins_limitedtimediscount_data.time.minutes || 0;
var seconds = this.data.plugins_limitedtimediscount_data.time.seconds || 0;
var self = this;
if (hours > 0 || minutes > 0 || seconds > 0) {
// 秒
var timer = setInterval(function () {
if (seconds <= 0) {
if (minutes > 0) {
minutes--;
seconds = 59;
} else if (hours > 0) {
hours--;
minutes = 59;
seconds = 59;
}
} else {
seconds--;
}
self.setData({
'plugins_limitedtimediscount_data.time.hours': (hours < 10 && hours.length == 1) ? '0' + hours : hours,
'plugins_limitedtimediscount_data.time.minutes': (minutes < 10 && minutes.length == 1) ? '0' + minutes : minutes,
'plugins_limitedtimediscount_data.time.seconds': (seconds < 10 && seconds.length == 1) ? '0' + seconds : seconds,
});
if (hours <= 0 && minutes <= 0 && seconds <= 0) {
// 停止时间
clearInterval(timer);
// 活动已结束
self.setData({
'plugins_limitedtimediscount_data.desc': '活动已结束',
plugins_limitedtimediscount_is_show_time: false,
});
}
}, 1000);
// 毫秒
var count = 0;
var timers = setInterval(function () {
count++;
self.setData({ plugins_limitedtimediscount_time_millisecond: count});
if(count > 9) {
count = 0;
}
if(self.data.plugins_limitedtimediscount_data.time.hours <= 0 && self.data.plugins_limitedtimediscount_data.time.minutes <= 0 && self.data.plugins_limitedtimediscount_data.time.seconds <= 0) {
clearInterval(timers);
}
}, 100);
} else {
// 活动已结束
self.setData({
'plugins_limitedtimediscount_data.desc': '活动已结束',
plugins_limitedtimediscount_is_show_time: false,
});
}
},
// 自定义分享
onShareAppMessage() {
return {
......
......@@ -29,21 +29,10 @@
<!-- 标题 -->
<view class="goods-title multi-text" style="color:{{goods.title_color}}">{{goods.title}}</view>
<!-- 秒杀 -->
<view class="limitedtimediscount">
<view class="countdown">
<text class="text-title"> 限时秒杀</text>
<view class="time-right fr">
<view class="timer-hours minutes fr">14</view>
<view class="ds fr">秒</view>
<view class="timer-hours millisecond fr">7</view>
<view class="ds fr">分</view>
<view class="timer-hours seconds fr">08</view>
<view class="ds fr">时</view>
<view class="timer-hours hours fr">650</view>
<view class="timer-title fr">距离结束还有</view>
</view>
</view>
<!-- 限时秒杀 -->
<view wx:if="{{common_app_is_limitedtimediscount == 1}}">
<import src="/pages/lib/limitedtimediscount/goods-detail.wxml" />
<template is="limitedtimediscount" data="{{plugins_limitedtimediscount_data: plugins_limitedtimediscount_data, plugins_limitedtimediscount_is_show_time: plugins_limitedtimediscount_is_show_time, plugins_limitedtimediscount_time_millisecond: plugins_limitedtimediscount_time_millisecond}}"></template>
</view>
<!-- 基础信息 -->
......
......@@ -172,6 +172,7 @@
font-size: 32rpx;
line-height: 44rpx;
font-weight: 500;
padding: 15rpx 10rpx;
}
.goods-base {
padding: 15rpx 10rpx;
......@@ -266,6 +267,12 @@
overflow: hidden;
margin-top: 10rpx;
}
.limitedtimediscount .icon {
width: 50rpx;
height: 50rpx;
vertical-align: top;
margin-right: 5rpx;
}
.limitedtimediscount .countdown {
color: #fff;
line-height: 56rpx;
......
......@@ -129,9 +129,9 @@ Page({
}
self.setData({
'plugins_limitedtimediscount_data.time.hours': (hours < 10) ? 0 + hours : hours,
'plugins_limitedtimediscount_data.time.minutes': (minutes < 10) ? 0 + minutes : minutes,
'plugins_limitedtimediscount_data.time.seconds': (seconds < 10) ? 0 + seconds : seconds,
'plugins_limitedtimediscount_data.time.hours': (hours < 10 && hours.length == 1) ? 0 + hours : hours,
'plugins_limitedtimediscount_data.time.minutes': (minutes < 10 && minutes.length == 1) ? 0 + minutes : minutes,
'plugins_limitedtimediscount_data.time.seconds': (seconds < 10 && seconds.length == 1) ? 0 + seconds : seconds,
});
if (hours <= 0 && minutes <= 0 && seconds <= 0) {
......
<template name="limitedtimediscount">
<view class="limitedtimediscount">
<view class="countdown">
<image class="icon" src="/pages/lib/limitedtimediscount/detail-icon.png" mode="aspectFit"></image>
<text class="text-title"> {{plugins_limitedtimediscount_data.title || '限时秒杀'}}</text>
<view class="time-right fr">
<block wx:if="{{plugins_limitedtimediscount_is_show_time}}">
<view class="timer-hours millisecond fr">{{plugins_limitedtimediscount_time_millisecond}}</view>
<view class="ds fr">秒</view>
<view class="timer-hours seconds fr">{{plugins_limitedtimediscount_data.time.seconds}}</view>
<view class="ds fr">分</view>
<view class="timer-hours minutes fr">{{plugins_limitedtimediscount_data.time.minutes}}</view>
<view class="ds fr">时</view>
<view class="timer-hours hours fr">{{plugins_limitedtimediscount_data.time.hours}}</view>
</block>
<view class="timer-title fr">{{plugins_limitedtimediscount_data.desc || '距离结束还有'}}</view>
</view>
</view>
</view>
</template>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册