Commit 48c44dba4420db109ba7171cc8758990a177f673

Authored by wangfan
1 parent 680206b1

v2 book set

@@ -2,6 +2,18 @@ var uri_dc = require('utils/uri.js') @@ -2,6 +2,18 @@ var uri_dc = require('utils/uri.js')
2 global.regeneratorRuntime = require('lib/regenerator/runtime-module') 2 global.regeneratorRuntime = require('lib/regenerator/runtime-module')
3 3
4 const { regeneratorRuntime } = global 4 const { regeneratorRuntime } = global
  5 +Array.prototype.indexOf = function(val) {
  6 + for (var i = 0; i < this.length; i++) {
  7 + if (this[i] == val) return i;
  8 + }
  9 + return -1;
  10 +};
  11 +Array.prototype.remove = function(val) {
  12 + var index = this.indexOf(val);
  13 + if (index > -1) {
  14 + this.splice(index, 1);
  15 + }
  16 +};
5 App({ 17 App({
6 openid:"", 18 openid:"",
7 system:{}, 19 system:{},
1 // pages/book/b_addnew.js 1 // pages/book/b_addnew.js
2 import util from '../../utils/util'; 2 import util from '../../utils/util';
  3 +import comm from '../../utils/bookCommon';
3 import App from '../../utils/api'; 4 import App from '../../utils/api';
4 const {regeneratorRuntime} = global 5 const {regeneratorRuntime} = global
5 Page({ 6 Page({
@@ -14,9 +15,32 @@ Page({ @@ -14,9 +15,32 @@ Page({
14 date:0, 15 date:0,
15 time:0, 16 time:0,
16 pnum_str:'1-4', 17 pnum_str:'1-4',
17 - tid:0,  
18 - } 18 + tabid:0,
  19 +
  20 + rname:'',
  21 + phone:'',
  22 + sex:1,
  23 + cusdem:'',
  24 +
  25 + tid:[],
  26 +
  27 + },
  28 + tables:[],
  29 + grand:[
  30 + {
  31 + sex:1,
  32 + grand_title:'先生',
  33 + isselect:true
  34 + },
  35 + {
  36 + sex:2,
  37 + grand_title:'女士',
  38 + isselect:false
  39 + }
  40 + ],
  41 + buttonhide:true,
19 }, 42 },
  43 + tablesAll:[],
20 /** 44 /**
21 * 生命周期函数--监听页面加载 45 * 生命周期函数--监听页面加载
22 */ 46 */
@@ -29,7 +53,8 @@ Page({ @@ -29,7 +53,8 @@ Page({
29 this.setData({ 53 this.setData({
30 dateStr:dateStr, 54 dateStr:dateStr,
31 }) 55 })
32 - this.sellerid=util.cache('sellerid') 56 + this.sellerid=util.cache('sellerid');
  57 + this.getTables()
33 }, 58 },
34 59
35 /** 60 /**
@@ -81,29 +106,86 @@ Page({ @@ -81,29 +106,86 @@ Page({
81 106
82 }, 107 },
83 selectedValue(e){ 108 selectedValue(e){
84 - console.log(e); 109 + //console.log(e);
85 let key=util.attr(e,'key'); 110 let key=util.attr(e,'key');
86 - let val=util.attr(e,'value'); 111 + let val;
  112 + if(e.type=='input'){
  113 + val=util.val(e);
  114 + }else{
  115 + val=util.attr(e,'value');
  116 + }
  117 +
87 let form=this.data.form; 118 let form=this.data.form;
88 - form[key]=val;  
89 - this.setData({  
90 - form:form  
91 - }) 119 + let sobj={};
  120 + if(key=='tid'){
  121 + let ts=this.data.tables;
  122 + if(ts[val].isselect){
  123 + ts[val].isselect=false;
  124 + form.tid.remove(ts[val].id);
  125 + }else{
  126 + ts[val].isselect=true;
  127 + form.tid.push(ts[val].id);
  128 + }
  129 + sobj.tables=ts;
  130 + }else{
  131 + form[key]=val;
  132 + }
  133 + sobj.form=form;
  134 + sobj.buttonhide=true;
  135 + if(form.tid.length>0 && form.rname.length>0){
  136 + sobj.buttonhide=false;
  137 + }
  138 + this.setData(sobj)
92 139
93 - if('date,time,pnum_str,pid'.indexOf(key)>-1){ 140 + if('date,time,pnum_str,tabid'.indexOf(key)>-1){
94 this.getTables(); 141 this.getTables();
95 } 142 }
96 }, 143 },
97 - getTables(){ 144 + async getTables(){
98 let form=this.data.form; 145 let form=this.data.form;
99 - let rdate=[];  
100 - App.Reserve.GetTableList({  
101 - sid:this.sellerid,  
102 - pnum_str:form.pnum_str,  
103 - rdate:rdate.join('-'),  
104 - tid:form.tid,  
105 - }).then(res=>{  
106 -  
107 - }) 146 + try{
  147 + let rdate=await comm.getTimeSpace(this.data.dateStr[this.data.form.date],this.data.form.time);
  148 + console.log('rdate',rdate);
  149 + App.Reserve.GetTableList({
  150 + sid:this.sellerid,
  151 + pnum_str:form.pnum_str,
  152 + rdate:rdate,
  153 + tid:form.tabid,
  154 + }).then(res=>{
  155 + let tables=[];
  156 + res.data.forEach(p=>{
  157 + if(tables.length>=3) return true;
  158 + p.list.forEach(t=>{
  159 + if(tables.length>=3) return true;
  160 + tables.push(t);
  161 + })
  162 + })
  163 + this.tablesAll=res.data;
  164 + this.setData({
  165 + tables:tables
  166 + })
  167 + })
  168 + }catch (e){
  169 + this.setData({
  170 + tables:[]
  171 + })
  172 + }
  173 + },
  174 + async formsubmit(){
  175 + if(this.data.buttonhide) return;
  176 + try {
  177 + let rdate = await comm.getTimeSpace(this.data.dateStr[this.data.form.date], this.data.form.time);
  178 + console.log('rdate', rdate);
  179 + this.setData({
  180 + buttonhide: true,
  181 + })
  182 + let form = this.data.form;
  183 + form.tid = form.tid.toString();
  184 + form.sid = this.sellerid;
  185 + form.rdate =rdate
  186 + App.Reserve.SetReserveInfo(form).then(res => {
  187 +
  188 + })
  189 + }catch (e){}
108 }, 190 },
109 }) 191 })
1 <!--pages/book/b_addnew.wxml--> 1 <!--pages/book/b_addnew.wxml-->
2 <nav>录入订座信息</nav> 2 <nav>录入订座信息</nav>
3 <view class="page"> 3 <view class="page">
4 - <form bindsubmit="formSubmit" bindreset="formReset">  
5 - <view class="base-info">  
6 - <view class="section flex-lr date">  
7 - <view class="flex-rr" style="width:100%;">  
8 - <item class="date-item {{form.date==0?'checked':''}}"  
9 - bindtap="selectedValue" data-key="date" data-value="0">  
10 - <view class="date-item-text">{{dateStr[0]}} 今天</view>  
11 - </item>  
12 - <item class="date-item {{form.date==1?'checked':''}}"  
13 - bindtap="selectedValue" data-key="date" data-value="1">  
14 - <view class="date-item-text">{{dateStr[1]}} 明天</view>  
15 - </item>  
16 - </view>  
17 - <view class="more flex-ll">  
18 - <view></view>  
19 - <view></view>  
20 - <view></view>  
21 - </view> 4 + <view class="base-info">
  5 + <view class="section flex-lr date">
  6 + <view class="flex-rr" style="width:100%;">
  7 + <item class="date-item {{form.date==0?'checked':''}}"
  8 + bindtap="selectedValue" data-key="date" data-value="0">
  9 + <view class="date-item-text">{{dateStr[0]}} 今天</view>
  10 + </item>
  11 + <item class="date-item {{form.date==1?'checked':''}}"
  12 + bindtap="selectedValue" data-key="date" data-value="1">
  13 + <view class="date-item-text">{{dateStr[1]}} 明天</view>
  14 + </item>
22 </view> 15 </view>
23 - <view class="section flex-ll">  
24 - <view class="tab">  
25 - <item class="item {{form.date==0?'checked':''}}"  
26 - bindtap="selectedValue" data-key="time" data-value="0">  
27 - 早市  
28 - </item>  
29 - <item class="item {{form.date==1?'checked':''}}"  
30 - bindtap="selectedValue" data-key="time" data-value="1">  
31 - 午市  
32 - </item>  
33 - <item class="item {{form.date==2?'checked':''}}"  
34 - bindtap="selectedValue" data-key="time" data-value="2">  
35 - 晚市  
36 - </item>  
37 - </view> 16 + <view class="more flex-ll">
  17 + <view></view>
  18 + <view></view>
  19 + <view></view>
38 </view> 20 </view>
39 - <view class="section flex-ll">  
40 - <view class="tab">  
41 - <item class="item {{form.pnum_str=='1-4'?'checked':''}}"  
42 - bindtap="selectedValue" data-key="pnum_str" data-value="1-4">  
43 - 4人以下  
44 - </item>  
45 - <item class="item {{form.pnum_str=='5-9'?'checked':''}}"  
46 - bindtap="selectedValue" data-key="pnum_str" data-value="5-9">  
47 - 5~9人  
48 - </item>  
49 - <item class="item {{form.pnum_str=='10-99'?'checked':''}}"  
50 - bindtap="selectedValue" data-key="pnum_str" data-value="10-99">  
51 - 10人以上  
52 - </item>  
53 - </view> 21 + </view>
  22 + <view class="section flex-ll">
  23 + <view class="tab">
  24 + <item class="item {{form.time==0?'checked':''}}"
  25 + bindtap="selectedValue" data-key="time" data-value="0">
  26 + 早市
  27 + </item>
  28 + <item class="item {{form.time==1?'checked':''}}"
  29 + bindtap="selectedValue" data-key="time" data-value="1">
  30 + 午市
  31 + </item>
  32 + <item class="item {{form.time==2?'checked':''}}"
  33 + bindtap="selectedValue" data-key="time" data-value="2">
  34 + 晚市
  35 + </item>
54 </view> 36 </view>
55 - <view class="section flex-ll">  
56 - <view class="tab">  
57 - <item class="item {{form.pid=='1'?'checked':''}}"  
58 - bindtap="selectedValue" data-key="pid" data-value="1">  
59 - 包间  
60 - </item>  
61 - <item class="item {{form.pid=='2'?'checked':''}}"  
62 - bindtap="selectedValue" data-key="pid" data-value="2">  
63 - 散座  
64 - </item>  
65 - </view> 37 + </view>
  38 + <view class="section flex-ll">
  39 + <view class="tab">
  40 + <item class="item {{form.pnum_str=='1-4'?'checked':''}}"
  41 + bindtap="selectedValue" data-key="pnum_str" data-value="1-4">
  42 + 4人以下
  43 + </item>
  44 + <item class="item {{form.pnum_str=='5-9'?'checked':''}}"
  45 + bindtap="selectedValue" data-key="pnum_str" data-value="5-9">
  46 + 5~9人
  47 + </item>
  48 + <item class="item {{form.pnum_str=='10-99'?'checked':''}}"
  49 + bindtap="selectedValue" data-key="pnum_str" data-value="10-99">
  50 + 10人以上
  51 + </item>
66 </view> 52 </view>
67 </view> 53 </view>
68 -  
69 - <view class="page-full tables">  
70 - 54 + <view class="section flex-ll">
  55 + <view class="tab">
  56 + <item class="item {{form.tabid=='2'?'checked':''}}"
  57 + bindtap="selectedValue" data-key="tabid" data-value="2">
  58 + 包间
  59 + </item>
  60 + <item class="item {{form.tabid=='1'?'checked':''}}"
  61 + bindtap="selectedValue" data-key="tabid" data-value="1">
  62 + 散座
  63 + </item>
  64 + </view>
71 </view> 65 </view>
72 - <view class="book-info">  
73 - <view class="book-info-single flex-lr" style="align-items:flex-start;">  
74 - <input placeholder="请输入预订人姓名(必填)" placeholder-class="gray-font font34r" class="black-font font34r" maxlength="5" style="width:450rpx;" value="{{name}}" bindinput="changename" bindblur="ifAll"/>  
75 - <view class="book-info-grand flex-rr font28r gray-deep-font">  
76 - <block wx:for="{{grand}}">  
77 - <view class="book-grand flex-cc {{index==0 ? 'book-grand-border' : ''}} {{item.isselect==true ? 'book-grand-active white-font' : ''}}" bindtap="selectgrand" data-sex="{{item.sex}}">{{item.grand_title}}</view> 66 + </view>
  67 +
  68 + <view class="page-full tables">
  69 + <view class="page">
  70 + <view class="title">可订桌位</view>
  71 + <view class="advice-desk-detail flex-lr" wx:if="{{tables.length>0}}">
  72 + <view class="flex-ll">
  73 + <block wx:for="{{tables}}" wx:key="tables.key">
  74 + <view class="order-desk-info"
  75 + bindtap="selectedValue"
  76 + data-value="{{index}}"
  77 + data-key="tid">
  78 + <block wx:if="{{item.tid==2}}">
  79 + <view class="flex-vc order-desk-detail" style="margin-top: 24rpx;">
  80 + <view class="font28r black-font smooth">{{item.name}}</view>
  81 + <view class="font26r black-font" style="margin-top:6rpx;">{{item.table_pnum}}人</view>
  82 + </view>
  83 + <view class="order-desk-type flex-cc white-font">包间</view>
  84 + </block>
  85 + <block wx:else>
  86 + <view class="flex-vc order-desk-detail" style="height:100%;">
  87 + <view class="font28r black-font smooth">{{item.name}}</view>
  88 + <view class="font26r black-font" style="margin-top:6rpx;">6人</view>
  89 + </view>
  90 + </block>
  91 + <icon type="success" size="20" color="#199095" class="desk-active" wx:if="{{item.isselect==true}}"/>
  92 + </view>
78 </block> 93 </block>
79 </view> 94 </view>
  95 + <view class="flex-rr advice-more" bindtap="selectdesk">
  96 + <view style="padding-right:30rpx;" class="gray-deep-font font26r">更多</view>
  97 + <image src="../image/click.png" class="icon12-22"></image>
  98 + </view>
80 </view> 99 </view>
81 - <view class="book-info-single flex-lr" style="align-items:flex-start;">  
82 - <input placeholder="请输入预订人手机号码(必填)" placeholder-class="gray-font font34r" class="black-font font34r" type="number" maxlength="11" bindblur="condition" bindinput="changephone" value="{{phone}}" style="color:{{reminder ? '#E14553' : '#353535'}};width:{{reminder ? 400 : 680}}rpx;"/>  
83 - <block wx:if="{{reminder}}">  
84 - <view class="flex-rr" style="height:100rpx;">  
85 - <view style="color:#E14553;" class="font28r">{{reminder}}</view>  
86 - <image src="../image/name-have.png" class="phone-reminder"></image>  
87 - </view>  
88 - </block> 100 + <view class="advice-desk-detail flex-cc" wx:else="">
  101 + 没有符合条件的桌位!
89 </view> 102 </view>
90 - <view class="book-info-single">  
91 - <input placeholder="请输入顾客要求(25字以内,选填)" placeholder-class="gray-font font34r" class="black-font font34r" maxlength="25" value="{{remark}}" bindinput="changeremark"/> 103 + </view>
  104 + </view>
  105 + <view class="book-info">
  106 + <view class="book-info-single flex-lr" style="align-items:flex-start;">
  107 + <input placeholder="预订人电话" placeholder-class="gray-font font34r" class="black-font font34r" type="number" maxlength="11"
  108 + bindblur="selectedValue"
  109 + bindconfirm="selectedValue"
  110 + data-key="phone"
  111 + value="{{phone}}" style="color:{{reminder ? '#E14553' : '#353535'}};width:{{reminder ? 400 : 680}}rpx;"/>
  112 + <block wx:if="{{reminder}}">
  113 + <view class="flex-rr" style="height:100rpx;">
  114 + <view style="color:#E14553;" class="font28r">{{reminder}}</view>
  115 + <image src="../image/name-have.png" class="phone-reminder"></image>
  116 + </view>
  117 + </block>
  118 + </view>
  119 + <view class="book-info-single flex-lr" style="align-items:flex-start;">
  120 + <input placeholder="预订人姓名(必填)" placeholder-class="gray-font font34r" class="black-font font34r" maxlength="5" style="width:450rpx;" value="{{form.rname}}"
  121 + bindinput="selectedValue"
  122 + bindconfirm="selectedValue"
  123 + data-key="rname"/>
  124 + <view class="book-info-grand flex-rr font28r gray-deep-font">
  125 + <block wx:for="{{grand}}" wx:key="grand.key">
  126 + <view class="book-grand flex-cc {{index==0 ? 'book-grand-border' : ''}} {{form.sex==item.sex ? 'book-grand-active white-font' : ''}}"
  127 + bindtap="selectedValue"
  128 + data-value="{{item.sex}}"
  129 + data-key="sex">{{item.grand_title}}</view>
  130 + </block>
92 </view> 131 </view>
93 </view> 132 </view>
94 - <view class="page-full submit">  
95 - <view class="confirm-button white-font flex-vc font34r {{buttonhide==false ? 'confirm-button-active' : ''}}" bindtap="{{buttonhide==false ? 'formsubmit' : ''}}">确定</view> 133 +
  134 + <view class="book-info-single">
  135 + <input placeholder="顾客的要求(25字以内,选填)" placeholder-class="gray-font font34r" class="black-font font34r" maxlength="25" value="{{form.cusdem}}"
  136 + bindinput="selectedValue"
  137 + bindconfirm="selectedValue"
  138 + data-key="cusdem"/>
96 </view> 139 </view>
97 - </form> 140 + </view>
  141 + <view class="page-full submit">
  142 + <view class="confirm-button white-font flex-vc font34r {{buttonhide==false ? 'confirm-button-active' : ''}}" bindtap="{{buttonhide==false ? 'formsubmit' : ''}}">确定</view>
  143 + </view>
98 </view> 144 </view>
99 <tabBar></tabBar> 145 <tabBar></tabBar>
@@ -77,12 +77,61 @@ @@ -77,12 +77,61 @@
77 background-color: #F5F5F5; 77 background-color: #F5F5F5;
78 } 78 }
79 .tables{ 79 .tables{
80 -  
81 height: 314rpx; 80 height: 314rpx;
82 margin-top: 10rpx; 81 margin-top: 10rpx;
  82 + font-size: 30rpx;
  83 +}
  84 +.tables .title{
  85 + padding-top: 36rpx;
  86 +}
  87 +.advice-desk-detail{
  88 + height: 220rpx;
  89 + width:100%;
  90 +}
  91 +.order-desk-info{
  92 + width:160rpx;
  93 + min-width: 160rpx;
  94 + height:160rpx;
  95 + background:#EBF8F8;
  96 + border:1px solid #199095;
  97 + border-radius:10rpx;
  98 + position:relative;
  99 + overflow:hidden;
  100 + margin-left:22rpx;
  101 +}
  102 +.advice-desk-detail .order-desk-info:first-child{
  103 + margin-left:0;
  104 +}
  105 +.desk-active{
  106 + position: absolute;
  107 + top: -2rpx;
  108 + right: -2rpx;
83 } 109 }
  110 +.order-desk-type{
  111 + width:100%;
  112 + height:42rpx;
  113 + line-height: 42rpx;
  114 + background:#199095;
  115 + position:absolute;
  116 + left:0;
  117 + bottom:0;
  118 + font-size: 26rpx;
  119 +}
  120 +.advice-more{
  121 + padding:20rpx 0;
  122 + padding-left:30rpx;
  123 +}
  124 +.cut{
  125 + width:100%;
  126 + height:4px;
  127 + background:#efeef3;
  128 +}
  129 +
84 130
85 131
  132 +/**
  133 +预定人信息
  134 + */
86 .book-info{ 135 .book-info{
87 width:100%; 136 width:100%;
88 padding-top:20rpx; 137 padding-top:20rpx;
@@ -11,22 +11,30 @@ Page({ @@ -11,22 +11,30 @@ Page({
11 sort:null 11 sort:null
12 12
13 }, 13 },
  14 + sellerid:0,
14 onLoad:function(opt){ 15 onLoad:function(opt){
15 var radio=750/util.getsystem().windowWidth; 16 var radio=750/util.getsystem().windowWidth;
16 var contentHeight=util.getsystem().windowHeight-Math.ceil(165/radio) 17 var contentHeight=util.getsystem().windowHeight-Math.ceil(165/radio)
  18 + if(opt.seller_id){
  19 + this.sellerid=opt.seller_id;
  20 + util.cache('sellerid',opt.seller_id)
  21 + util.cache('enter_params',opt)
  22 + App.Reserve.SellerInfo(opt).then(res=>{
  23 + util.cache('sellerInfo',res.data)
  24 + })
  25 + }else{
  26 + this.sellerid=util.cache('sellerid');
  27 + }
  28 + //this.sellerid=opt.seller_id ? opt.seller_id : util.cache('sellerid');
17 this.setData({ 29 this.setData({
18 - sellerid:opt.seller_id ? opt.seller_id : util.cache('sellerid'), 30 + sellerid:this.sellerid,
19 systemInfo:util.getsystem(), 31 systemInfo:util.getsystem(),
20 contentHeight:contentHeight, 32 contentHeight:contentHeight,
21 listHeight:contentHeight-Math.ceil(140/radio) 33 listHeight:contentHeight-Math.ceil(140/radio)
22 }) 34 })
23 - util.cache('sellerid',opt.seller_id)  
24 - util.cache('enter_params',opt)  
25 console.log(this.data.sellerid) 35 console.log(this.data.sellerid)
26 util.setBarTitle('预定本'); 36 util.setBarTitle('预定本');
27 - App.Reserve.SellerInfo(opt).then(res=>{  
28 - util.cache('sellerInfo',res.data)  
29 - }) 37 +
30 }, 38 },
31 onShow:function(){ 39 onShow:function(){
32 var that=this; 40 var that=this;
  1 +import util from './util';
  2 +import App from './api';
  3 +const {regeneratorRuntime} = global
1 module.exports ={ 4 module.exports ={
2 //时间戳转化日期 5 //时间戳转化日期
3 changedate:function(timestamp){ 6 changedate:function(timestamp){
@@ -40,5 +43,30 @@ module.exports ={ @@ -40,5 +43,30 @@ module.exports ={
40 console.log() 43 console.log()
41 var timedate=thismonth+'月'+thisday+'日'; 44 var timedate=thismonth+'月'+thisday+'日';
42 return timedate; 45 return timedate;
  46 + },
  47 + //获得营业时段时间戳,用 - 链接
  48 + async getTimeSpace(mmdd='',timeIndex=0,sc=null){
  49 + try {
  50 + let d=new Date()/1000;
  51 + if(!mmdd){
  52 + mmdd=util.unixtoTime(d,'MM-DD');
  53 + }
  54 + if(!sc){
  55 + let res = await App.Reserve.SellerInfo(util.cache('enter_params'));
  56 + sc = res.data;
  57 + }
  58 + if (sc.daily){
  59 + let ti=['morning','noon','night'];
  60 + let ts=sc.daily[ti[timeIndex]].split('-');
  61 + console.log(ts);
  62 + let stime=util.unixtoTime(d,'YYYY-'+mmdd+' '+ts[0]+':00');
  63 + console.log(stime);
  64 + let etime=util.unixtoTime(d,'YYYY-'+mmdd+' '+ts[1]+':00');
  65 + return util.timetouUnix(stime)+'-'+util.timetouUnix(etime);
  66 + }
  67 + }catch (e){
  68 + console(e);
  69 + }
  70 + return false;
43 } 71 }
44 } 72 }