Commit 1603bcef1c192888f7d241ee98dcb23499d2da0d

Authored by pengye
1 parent a97ee325

小程序多时段预订(在线预订)

... ... @@ -37,8 +37,8 @@
<view class="flex-treble flex flex-direction">
<view class="txt-26-h text-bold" style="margin-bottom: 6rpx;">{{post.sellerinfo.sellername}}</view>
<view class="flex txt-24-h text-gray">
<view>{{post.sellerinfo.name}}</view>
<view>{{post.sellerinfo.c_info}}</view>
<view wx:if="{{post.sellerinfo.name}}">{{post.sellerinfo.name}}</view>
<view wx:if="{{post.sellerinfo.c_info}}">{{post.sellerinfo.c_info}}</view>
<view wx:if="{{post.sellerinfo.average>0}}">¥{{post.sellerinfo.average}}/人</view>
</view>
</view>
... ...
// components/2.0/reserve/card.js
import util from '../../../utils/util';
import RS from '../../../utils/reserveStatus'
import App from '../../../utils/api';
Component({
/**
* 组件的属性列表
... ... @@ -14,7 +15,7 @@ Component({
* 组件的初始数据
*/
data: {
ddate_Str:'',
},
attached(){
//this.init()
... ... @@ -38,9 +39,58 @@ Component({
})
detail.ddateStr=util.unixtoTime(detail.ddate,'MM月DD日,`DAY/周WW`')
console.log('detail.init',detail)
this.getLocalLunchTime(detail.sid,detail.date,detail.section)
this.setData({
reserve:detail,
})
}
},
//获取日期对应的多时段
getLocalLunchTime(sid,date,section){
App.Seller.getMealSectionByDay({
sellerid: sid,
day: date,
}).then(res => {
let data = res.data;
let lunchDinnerList = [];
if (data.length <= 3 && !data[0].ddate_solt) {
data.forEach(i => {
if (i.mname == '早餐') {
lunchDinnerList.push({
mname: "早餐",
mdate: i.mdate,
ddate_solt: 1,
})
}
if (i.mname == '午餐') {
lunchDinnerList.push({
mname: "午餐",
mdate: i.mdate,
ddate_solt: 2,
})
}
if (i.mname == '晚餐') {
lunchDinnerList.push({
mname: "晚餐",
mdate: i.mdate,
ddate_solt: 3,
})
}
})
} else {
lunchDinnerList = data;
}
lunchDinnerList.forEach((item,index)=>{
item.section = 'ket'+index
})
let obj=lunchDinnerList.filter(item=>{return item.section == section})
if(obj && obj.length>0){
this.setData({
ddate_Str:obj[0].mname
})
}
}).catch(res => {
console.log(res, '获取多时段失败');
})
},
}
})
... ...
... ... @@ -16,7 +16,7 @@
<view class="view flex align-center" style="margin-bottom: 44rpx;">
<view class="view flex-sub bg-white Medium">预订时间</view>
<view class="view flex-treble text-bold" style="font-size: 36rpx;">
<view class="value">{{reserve.ddateStr}},{{util.reserveTimeSpace(reserve.section)}}</view>
<view class="value">{{reserve.ddateStr}},{{ddate_Str}}</view>
</view>
</view>
<view class="view flex align-center">
... ...
... ... @@ -15,7 +15,7 @@ Component({
* 组件的初始数据
*/
data: {
ddate_Str:'',
},
attached(){
//this.init()
... ... @@ -53,12 +53,65 @@ Component({
reserve:detail,
})
console.log('666666',detail);
this.getLocalLunchTime(detail)
if(this.data.tabType==6){
this.remark('auto');
}
},
//获取日期对应的多时段
getLocalLunchTime(detail){
let ddateStr = new Date(detail.ddate * 1000)
let year = ddateStr.getFullYear();
let month = ddateStr.getMonth() + 1;
let day = ddateStr.getDate();
let day1 = year + '-' + (month < 10 ? '0' + month : month) + '-' + day;
App.Seller.getMealSectionByDay({
sellerid: detail.seller.id,
day: day1,
}).then(res => {
let data = res.data;
let lunchDinnerList = [];
if (data.length <= 3 && !data[0].ddate_solt) {
data.forEach(i => {
if (i.mname == '早餐') {
lunchDinnerList.push({
mname: "早餐",
mdate: i.mdate,
ddate_solt: 1,
})
}
if (i.mname == '午餐') {
lunchDinnerList.push({
mname: "午餐",
mdate: i.mdate,
ddate_solt: 2,
})
}
if (i.mname == '晚餐') {
lunchDinnerList.push({
mname: "晚餐",
mdate: i.mdate,
ddate_solt: 3,
})
}
})
} else {
lunchDinnerList = data;
}
lunchDinnerList.forEach((item,index)=>{
item.section = 'ket'+index
})
let obj=lunchDinnerList.filter(item=>{return item.ddate_solt == detail.ddate_solt})
if(obj && obj.length>0){
this.setData({
ddate_Str:obj[0].mname
})
}
}).catch(res => {
console.log(res, '获取多时段失败');
})
},
openlocation(){
console.log('6666666')
wx.openLocation({
... ...
... ... @@ -25,7 +25,7 @@
<view class="view flex-sub bg-white Medium">预订时间</view>
<view class="view flex-treble text-bold" style="font-size: 36rpx;">
<view class="value" wx:if="{{reserve.hasOnlineReserve || reserve.hasUpdateDate || reserve.type==0}}">
<text wx:if="{{reserve.ddate>0}}">{{util.unixtoTime(reserve.ddate||'','MM月DD日')}} {{reserve.soltName}}</text>
<text wx:if="{{reserve.ddate>0}}">{{util.unixtoTime(reserve.ddate||'','MM月DD日')}} {{ddate_Str}}</text>
</view>
<view class="value" wx:else="">{{reserve.rdateStr}}</view>
</view>
... ...
// components/2.0/reserve/card.js
import util from '../../../../utils/util';
import RS from '../../../../utils/reserveStatus'
import App from '../../../../utils/api';
Component({
/**
* 组件的属性列表
... ... @@ -13,7 +14,7 @@ Component({
* 组件的初始数据
*/
data: {
ddate_Str:''
},
attached(){
//this.init()
... ... @@ -47,6 +48,7 @@ Component({
}
detail.tableFirst=tableFirst
detail.tableSubInfo=tableSubInfo
this.getLocalLunchTime(detail)
this.setData({
reserve:detail,
})
... ... @@ -54,5 +56,58 @@ Component({
asPhone(){
this.selectComponent('#as-phone').show(this.data.reserve.seller);
},
//获取日期对应的多时段
getLocalLunchTime(detail){
let ddateStr = new Date(detail.ddate * 1000)
let year = ddateStr.getFullYear();
let month = ddateStr.getMonth() + 1;
let day = ddateStr.getDate();
let day1 = year + '-' + (month < 10 ? '0' + month : month) + '-' + day;
App.Seller.getMealSectionByDay({
sellerid: detail.sid,
day: day1,
}).then(res => {
let data = res.data;
let lunchDinnerList = [];
if (data.length <= 3 && !data[0].ddate_solt) {
data.forEach(i => {
if (i.mname == '早餐') {
lunchDinnerList.push({
mname: "早餐",
mdate: i.mdate,
ddate_solt: 1,
})
}
if (i.mname == '午餐') {
lunchDinnerList.push({
mname: "午餐",
mdate: i.mdate,
ddate_solt: 2,
})
}
if (i.mname == '晚餐') {
lunchDinnerList.push({
mname: "晚餐",
mdate: i.mdate,
ddate_solt: 3,
})
}
})
} else {
lunchDinnerList = data;
}
lunchDinnerList.forEach((item,index)=>{
item.section = 'ket'+index
})
let obj=lunchDinnerList.filter(item=>{return item.ddate_solt == detail.ddate_solt})
if(obj && obj.length>0){
this.setData({
ddate_Str:obj[0].mname
})
}
}).catch(res => {
console.log(res, '获取多时段失败');
})
},
}
})
... ...
... ... @@ -20,7 +20,7 @@
<view class="view flex-sub bg-white Medium" style="min-width: 172rpx;">预订时间</view>
<view class="view flex-treble text-bold text-lg">
<view class="value" wx:if="{{reserve.hasOnlineReserve || reserve.hasUpdateDate || reserve.type==0}}">
<text wx:if="{{reserve.ddate>0}}">{{util.unixtoTime(reserve.ddate||'','MM月DD日')}} {{reserve.soltName}}</text>
<text wx:if="{{reserve.ddate>0}}">{{util.unixtoTime(reserve.ddate||'','MM月DD日')}} {{ddate_Str}}</text>
</view>
<view class="value" wx:else="">{{reserve.rdateStr}}</view>
</view>
... ...
... ... @@ -14,12 +14,12 @@ Component({
attached(){
},
observers: {
'date'(newdate){
'date': async function(newdate) {
console.log('section',this.data.date,newdate,this.data.section)
//今天日期
if(newdate){
let today=util.unixtoTime(new Date()/1000,'YYYY-MM-DD');
this.getsectionlist();
await this.getsectionlist();
if(today==newdate){
this.markoversection();
}else{
... ... @@ -57,30 +57,62 @@ Component({
},
methods:{
getsectionlist(){
let section={'morning':'早餐','noon':'午餐','night':'晚餐','midnight':'夜宵'};
let sectionlist=[];
for(let key in this.data.seller.daily){
if(this.data.seller.daily[key]!=""){
sectionlist.push({
section:key,
sectiondur:this.data.seller.daily[key],
showmark:section[key],
overdate:false,
isselected:false
})
}
}
this.setData({
sectionlist:sectionlist
})
console.log(sectionlist)
return new Promise((resolve) => {
App.Seller.getMealSectionByDay({
sellerid: this.data.seller.id,
day: this.data.date,
}).then(res => {
let data = res.data;
let lunchDinnerList = [];
if (data.length <= 3 && !data[0].ddate_solt) {
data.forEach(i => {
if (i.mname == '早餐') {
lunchDinnerList.push({
mname: "早餐",
mdate: i.mdate,
ddate_solt: 1,
})
}
if (i.mname == '午餐') {
lunchDinnerList.push({
mname: "午餐",
mdate: i.mdate,
ddate_solt: 2,
})
}
if (i.mname == '晚餐') {
lunchDinnerList.push({
mname: "晚餐",
mdate: i.mdate,
ddate_solt: 3,
})
}
})
} else {
lunchDinnerList = data;
}
lunchDinnerList.forEach((item,index)=>{
item.sectiondur = item.mdate;
item.showmark = item.mname;
item.section = 'ket'+index
item.overdate = false;
item.isselected = false;
})
this.setData({
sectionlist:lunchDinnerList
})
resolve();
}).catch(res => {
console.log(res, '获取多时段失败');
})
})
},
markoversection(){
let sectionlist=this.data.sectionlist;
//今天日期
let today=util.unixtoTime(new Date()/1000,'YYYY-MM-DD');
let curtimestamp=Math.ceil(new Date()/1000);
let interval=[],flag=false;
let interval=[],flag=false;
sectionlist.forEach((v,i)=>{
let sectionarr=v.sectiondur.split('-');
if(curtimestamp>Number(util.timetouUnix(today+' '+sectionarr[1]+':00'))){
... ... @@ -128,11 +160,10 @@ Component({
selectsection(e){
let _target=e.currentTarget.dataset;
this.changesectionstyle(_target.section);
this.tellsection(_target.section,'click',_target.index);
console.log(_target.index);
this.tellsection(_target.section,'click',_target.index,_target.ddate_solt);
},
//通知时段
tellsection(selectsection,action,index){
tellsection(selectsection,action,index,ddate_solt){
console.log(index);
//2019-12-13修改
// let today=util.unixtoTime(new Date()/1000,'YYYY-MM-DD');
... ... @@ -142,7 +173,8 @@ Component({
let endtimestamp=Number(util.timetouUnix(this.data.date+' '+sectionarr[1]+':00'));
let obj={
section:selectsection,
action:action
action:action,
ddate_solt,
}
console.log(curtimestamp,starttimestamp)
if(curtimestamp<starttimestamp){
... ...
... ... @@ -16,4 +16,25 @@
.section-single.bg-yellow{
background: #F4FAFF;
border: 2rpx solid #42A5FF;
}
.Semibold {
overflow: hidden;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
height: 40rpx;
height: 40rpx;
}
.blue-font {
overflow: hidden;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
height: 40rpx;
height: 40rpx;
}
\ No newline at end of file
... ...
... ... @@ -14,6 +14,7 @@ Page({
loading:0,
seller:null,
hasFullHouse:false,//满房
lunchDinnerList:[],//日期所对应的餐段
},
/**
... ... @@ -27,6 +28,7 @@ Page({
console.log('初次进入详情页---小米8测试',this.data.reserveDate ? this.data.reserveDate : '没有日期','openid:',getApp().openid)
this.options=options
this.downloadImages()
this.getLocalLunchTime()
if(options.activeTab && options.activeTab!='detail'){
this.setData({
activeTab:options.activeTab||'detail',
... ... @@ -46,6 +48,52 @@ Page({
this.reserve.time=options.time;
}
},
//获取日期对应的多时段
getLocalLunchTime(){
let options=this.options
App.Seller.getMealSectionByDay({
sellerid: options.id,
day: this.reserve.date,
}).then(res => {
let data = res.data;
let lunchDinnerList = [];
if (data.length <= 3 && !data[0].ddate_solt) {
data.forEach(i => {
if (i.mname == '早餐') {
lunchDinnerList.push({
mname: "早餐",
mdate: i.mdate,
ddate_solt: 1,
})
}
if (i.mname == '午餐') {
lunchDinnerList.push({
mname: "午餐",
mdate: i.mdate,
ddate_solt: 2,
})
}
if (i.mname == '晚餐') {
lunchDinnerList.push({
mname: "晚餐",
mdate: i.mdate,
ddate_solt: 3,
})
}
})
} else {
lunchDinnerList = data;
}
lunchDinnerList.forEach((item,index)=>{
item.section = 'ket'+index
})
this.setData({
lunchDinnerList
})
}).catch(res => {
console.log(res, '获取多时段失败');
})
},
GetSellerDetail(){
let options=this.options
App.Customer.GetSellerDetail({
... ... @@ -162,7 +210,7 @@ Page({
},
//时段改变
selectsection(e){
console.log(e);
this.getLocalLunchTime()
setTimeout(()=>{
this.setData({
reserveSection:e.detail.section!='' ? e.detail.section : null,
... ... @@ -199,8 +247,13 @@ Page({
}else{
this.reserve.pnum = num;
}
App.Reserve.GetReserveIsExits({sid:this.reserve.sid,ddate_solt:slots[this.reserve.section],ddate:this.reserve.ddate}).then((json)=>{
let ddate_solt = '';
let obj=this.data.lunchDinnerList.filter(item=>{return item.section == this.reserve.section})
if(obj && obj[0]){
ddate_solt = obj[0].ddate_solt;
}
this.reserve.ddate_solt = ddate_solt
App.Reserve.GetReserveIsExits({sid:this.reserve.sid,ddate_solt,ddate:this.reserve.ddate}).then((json)=>{
console.log(json)
if(json.ret==200){
if(json.data==1){
... ... @@ -231,6 +284,7 @@ Page({
},
selecttime(e){//时间改变
console.log(e);
this.getLocalLunchTime()
if(!e.detail.time){//满房
this.setData({
hasFullHouse:true,
... ...
... ... @@ -2,7 +2,7 @@
<nav hasHome class="navhome" backgroundColor="#0143a3" color="#fff" place="{{true}}">{{seller.sellName}}</nav>
<view>
<view class="flex-vc {{home.image?'sellBox':'sellBox sellBox1'}}">
<image wx:if="{{home.image}}" class="imgs" src="{{home.image}}" mode="scaleToFill" />
<image wx:if="{{home.image}}" class="imgs" src="{{home.image}}" mode="widthFix" />
<view class="info flex-vl" style="background:#fff;">
<view class="flex-lr">
<view class="colorText font32r">{{seller.sellName}}</view>
... ...
/* pages/reserve/shopHome.wxss */
.imgs {
width: 100%;
height: 562rpx;
position: absolute;
left: 0;
top: 0;
... ... @@ -47,7 +46,8 @@
height: 38rpx;
margin-left: 10rpx;
position: relative;
top: 8rpx;
top: 8rpx;
flex-shrink: 0;
}
.colorText {
... ... @@ -63,7 +63,15 @@
}
.colorFive {
color: #515151;
color: #515151;
display: flex;
align-items: baseline;
}
.colorFive text {
display: flex;
flex-wrap: wrap;
word-break: break-all;
}
.introduce {
... ...
... ... @@ -142,7 +142,7 @@ Page({
this.options.room_demand.forEach((v,i)=>{
roomids.push(v.id)
})
console.log('ceshi',roomids);
console.log('ceshi',roomids);
App.Customer.SetReserveInfo({
sid:this.options.sid,
ddate:this.options.ddate,
... ... @@ -151,8 +151,8 @@ Page({
sex:this.user.sex,
phone:this.user.phone,
cusdem:this.user.remark||'',
ddate_solt:dur.indexOf(this.options.section)+1,
roomids:roomids.toString(),
ddate_solt:this.options.ddate_solt,
roomids:roomids.toString(),
pnum: this.options.pnum ? this.options.pnum : 4,
}).then(res=>{
console.log('ceshi',this.hasSubmit,res);
... ...