index.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802
  1. let Parse = getApp().Parse
  2. const company = getApp().globalData.company
  3. import dataSource from '../../../service/data';
  4. import dateServ from '../../../service/date';
  5. const rechText = require('../../../../utils/rech-text')
  6. Page({
  7. /**
  8. * 页面的初始数据
  9. */
  10. data: {
  11. roomId:null,
  12. room: {},
  13. note: {
  14. "title":'订房必读',
  15. "desc":'防疫期间,请您在下单前与房东确认接待政策,以免影响您的入住。(提示有效期2022/03/18起)',
  16. "arrowtext":'查看全部'
  17. },
  18. date: '',// 入住时间
  19. defaultDate: [],// 日历默认时间
  20. startTime: null,// 入住开始时间
  21. endTime: null,// 入住结束时间
  22. count: 1,// 入住几晚
  23. columns: [],// 入住人数可选数组
  24. peopleNum: 1,// 入住人数
  25. showNote: false,
  26. showDate: false,
  27. showNumPicker: false,
  28. showPayment: false,
  29. customers:[],// 住客信息
  30. priceInfoArr: [],// 房费详细信息
  31. formatter:null,// 日历格式化
  32. // checkedFormatter: null,// 日历相关数据处理
  33. CountArray: [], // 房型可选日期及已订数量数组 [{date: '',count: 0}]
  34. CountObj: [], // 房型可选日期及已订数量对象 {date: count}
  35. },
  36. /**
  37. * 生命周期函数--监听页面加载
  38. */
  39. onLoad: function (options) {
  40. let roomId = options.id
  41. this.initData(roomId)
  42. },
  43. /**
  44. * 生命周期函数--监听页面显示
  45. */
  46. onShow: function () {
  47. this.setData({
  48. customers:this.data.customers
  49. })
  50. console.log(this.data.customers);
  51. },
  52. initData(roomId){
  53. dataSource.getRoomById(roomId).then(room =>{
  54. room.desc = room.tags.join(" ")// 标签
  55. this.data.note.detail = rechText.formatRichText((room.note || ''));// 订房必读
  56. let merber = room.merber;// 房间容纳人数
  57. let columns = [...new Array(merber+1).keys()]// 入住人数可选数组
  58. columns.shift(0)
  59. console.log(columns);
  60. // 日期相关数据初始化
  61. // let defaultDate = this.initDate()
  62. // 订单开始时间结束时间 默认下午两点 方便无房时间对比
  63. // let today = new Date();
  64. // let tommrrow = dateServ.getStrByTimeIncreaseDay(today,1)
  65. // let {startTime,endTime}=this.formatTimeArea(today,tommrrow)
  66. // console.log(startTime,endTime);
  67. // let priceInfoArr = dateServ.getDayAll(startTime,endTime)// 订单时间跨度数组
  68. // priceInfoArr.pop();// 最后一天为退房 不计入
  69. // console.log(priceInfoArr);
  70. // let count= priceInfoArr.length;
  71. this.setData({
  72. roomId,
  73. room,
  74. columns,
  75. // date:defaultDate,
  76. peopleNum:merber,
  77. // priceInfoArr,
  78. // count,
  79. // startTime,
  80. // endTime,
  81. })
  82. })
  83. },
  84. dayAddOne(time){
  85. time = new Date(time)
  86. let year = time.getFullYear()
  87. let month = time.getMonth() + 1
  88. let day = time.getDate()
  89. return new Date(`${year}-${month}-${day + 1} 14:00:00`);
  90. },
  91. formatTimeArea(start, end){
  92. start = new Date(start)
  93. end = new Date(end)
  94. console.log(start,end);
  95. let year = start.getFullYear()
  96. let month = start.getMonth() + 1
  97. let day = start.getDate()
  98. let year2 = end.getFullYear()
  99. let month2 = end.getMonth() + 1
  100. let day2 = end.getDate()
  101. console.log(year,month,day);
  102. let obj = {
  103. startTime: new Date(`${year}/${month}/${day} 14:00:00`),
  104. endTime: new Date(`${year2}/${month2}/${day2} 14:00:00`)
  105. }
  106. console.log(obj);
  107. return obj
  108. },
  109. navigate(event){
  110. console.log(event);
  111. let type = event.currentTarget.dataset.type;
  112. switch (type) {
  113. case 'room':
  114. wx.navigateTo({
  115. url: `/nova-tourism/pages/homestay/room-detail/index?id=${this.data.roomId}`
  116. })
  117. break;
  118. case 'customer':
  119. wx.navigateTo({
  120. url: `/nova-tourism/pages/homestay/customer/select-customer/index`
  121. })
  122. break;
  123. default:
  124. break;
  125. }
  126. },
  127. // 显示订房必读
  128. showNotePop(){
  129. this.setData({
  130. showNote:true
  131. })
  132. },
  133. closeModal() {
  134. this.setData({ showNote: false });
  135. },
  136. // 日期
  137. initDate(){
  138. let month = new Date().getMonth()+1;
  139. let start = new Date().getDate();
  140. let end = new Date().getDate() + 1;
  141. return `${month}月${start} 日 - ${month}月${end} 日`;
  142. },
  143. checkDate(){
  144. this.initCalenderData()
  145. this.setData({
  146. showDate:true
  147. })
  148. },
  149. closeDate(){
  150. this.setData({
  151. showDate:false
  152. })
  153. },
  154. enterDate(event){
  155. const [start, end] = event.detail;
  156. console.log(11111,event.detail)
  157. let {startTime,endTime} = this.formatTimeArea(start, end)
  158. console.log(startTime,endTime);
  159. var dataAll = dateServ.getDayAll(startTime,endTime);
  160. dataAll.pop();// 最后一天为退房,不算在内
  161. console.log(dataAll);
  162. console.log(this.formatDate(startTime), this.formatDate(endTime))
  163. let dateStr = this.formatDate(startTime) + '-' + this.formatDate(endTime)
  164. console.log(dateStr)
  165. this.setData({
  166. showDate:false,
  167. date: `${this.formatDate(startTime)} - ${this.formatDate(endTime)}`,
  168. startTime: new Date(startTime),
  169. endTime: new Date(endTime),
  170. priceInfoArr:dataAll,
  171. count:dataAll.length
  172. })
  173. console.log(this.data.priceInfoArr);
  174. },
  175. formatDate(date) {
  176. date = new Date(date);
  177. return `${date.getMonth() + 1}/${date.getDate()}`;
  178. },
  179. /*****
  180. * 已知:用户选择房型、时间段,房型的可用数量
  181. * 查询:范围内是否有空房
  182. *
  183. * 入住时间:当天占用房间
  184. * 离店时间:当天房间可用
  185. let CountArray = [
  186. {日期:20220419,数量:1},
  187. {date:20220419,count:1},
  188. ]
  189. function addOrdertoArray(currentDate){
  190. let currentIdx = CountArray.findIndex(item=>item.date == currentDate)
  191. if(currentIdx&&currentIdx>=0){
  192. CountArray[currentIdx].count += 1
  193. }else{
  194. CountArray.push({date:currentDate,count:1})
  195. }
  196. }
  197. function getDateByTime() // 同时获取14点校准时间
  198. RoomOrderList.forEach(order=>{
  199. let startDate = getDateByTime(order.get("startTime"));
  200. let endDate = getDateByTime(order.get("endTime"));
  201. let breakDate =
  202. for(currentDate; currentDate + 1day; currentDate=breakDate){
  203. addOrdertoArray(currentDate);
  204. }
  205. })
  206. */
  207. /*** 日期组件初始化
  208. * 1、获取日历可选时间区间内 所有已生成订单 生成日期对应订单数量对象 {date:count}
  209. * 1、设置默认日期 (组件默认时间为当前时间及后一天 需修改为非无房状态日期)
  210. * 2、无房状态显示禁点
  211. * 3、已选择开始日期时,日期往后推 无房日期之后均为禁点
  212. */
  213. async initCalenderData(){
  214. // 获取日历可选时间区间内 所有已生成订单
  215. console.log(111)
  216. let orders = await this.getRoomOrdersByRoomId(this.data.roomId)
  217. orders.forEach(order =>{
  218. let startDate = dateServ.getDateStrByTime(order.get("startTime"));
  219. let endDate = dateServ.getDateStrByTime(order.get("endTime"));
  220. let breakDate = dateServ.getStrByTimeIncreaseDay(order.get("endTime"),-1);
  221. console.log(startDate,endDate,breakDate);
  222. // 遍历单个订单下已订时间 将订单覆盖时间推入CountObject
  223. let dateArr = dateServ.getDayAll(startDate,breakDate)
  224. console.log(dateArr)
  225. for (let index = 0; index < dateArr.length; index++) {
  226. let datastr = dateArr[index];
  227. this.addOrdertoArray(datastr)
  228. }
  229. })
  230. console.log(this.data.CountArray,this.data.CountObj);
  231. this.setData({
  232. orders,
  233. defaultDate:[],// 默认日期
  234. CountArray:this.data.CountArray,
  235. CountObj:this.data.CountObj
  236. })
  237. this.checkedFormatter('init')
  238. },
  239. selectDay(date,type){
  240. let day = {
  241. date,
  242. text:'20',
  243. type:'',
  244. bottomInfo:undefined
  245. }
  246. console.log('ddddddd',type);
  247. this.formatter(day,type)
  248. },
  249. getOrderDate(date){
  250. console.log(this.data.CountObj[date] , this.data.room.total);
  251. if(!this.data.CountObj[date]){
  252. return date
  253. }
  254. if(this.data.CountObj[date] && this.data.CountObj[date] < this.data.room.total){
  255. return date
  256. }
  257. if(this.data.CountObj[date] && this.data.CountObj[date] >= this.data.room.total){
  258. return false
  259. }
  260. },
  261. addOrdertoArray(currentDate){
  262. // currentDate = new Date(currentDate)
  263. let currentIdx = this.data.CountArray.findIndex(item=>item.date == currentDate)
  264. if(currentIdx&&currentIdx>=0){
  265. this.data.CountArray[currentIdx].count += 1
  266. }else{
  267. this.data.CountArray.push({date:currentDate,count:1})// 日期,已订数量
  268. }
  269. this.data.CountObj[currentDate] ? this.data.CountObj[currentDate] += 1 : this.data.CountObj[currentDate] = 1;
  270. console.log(this.data.CountObj)
  271. },
  272. // 组件日期订单数量达到总数时,type设置为disabled
  273. // 组件默认start为当前日期,end为当前日期后一天 当前日期无房情况下需将最近的非disabled日期设为start
  274. // 当start 后一天为 无房日期时,该日期type改为'' ,无房日期 不可为start
  275. type :null,
  276. start:null,
  277. end:null,
  278. disabled:null,
  279. // start后的第一个无房日期
  280. checkedFormatter(type){
  281. if(this.end){
  282. this.disabled = null;
  283. }
  284. let that = this;
  285. this.status = null;
  286. let formatter = function (day,type) {//
  287. const month = day.date.getMonth() + 1;
  288. const date = day.date.getDate();
  289. if(month <7){
  290. if(date == 4 || date == 5 || date == 20 || date == 21 || date == 30){
  291. // console.log(day,day.date,day.type);
  292. }
  293. let CountObj = that.data.CountObj
  294. let datestr = dateServ.getDateStrByTime(day.date);
  295. let endstr = null;
  296. let disabledstr =null;
  297. let startstr =null;
  298. if(that.end){
  299. endstr = dateServ.getDateStrByTime(that.end);
  300. }
  301. if(that.disabled){
  302. disabledstr = dateServ.getDateStrByTime(that.disabled);
  303. }
  304. if(that.start){
  305. startstr = dateServ.getDateStrByTime(that.start);
  306. }
  307. // 1、该日期订单数量达到房间总量且非结束日期 显示无房 禁点
  308. if(CountObj[datestr] && CountObj[datestr]>= that.data.room.total &&endstr != datestr){
  309. day.bottomInfo = '无房';
  310. day.type = 'disabled';
  311. // that.disabled = day.date;
  312. // 4.1无房后日期禁点1 无离店日期时 入住日期后最近无房日期保存为disabled
  313. // console.log(startstr, datestr,that.disabled);
  314. if(startstr < datestr && !that.end && (!that.disabled || disabledstr > datestr)){
  315. // console.log(startstr, datestr,that.disabled);
  316. that.disabled = day.date
  317. }
  318. }
  319. // 已有end时,记录end
  320. if(day.type == 'end'){
  321. that.end = day.date;
  322. that.disabled = null;
  323. }
  324. // 4.2无房后日期禁点2 已选入住日期 无离店日期 时,离入住日期最近无房日期后所有日期type 设为 disabled
  325. // console.log(day.config,that.start,that.end,datestr,disabledstr,startstr);
  326. if(that.start && !that.end && (datestr > disabledstr) && (startstr < datestr) ){
  327. // console.log(datestr,disabledstr);
  328. day.type = 'disabled'
  329. }
  330. // 2、设置默认入住日期:无start时,最近一天非disabled日期设为start 设为默认日期
  331. if(day.type != 'disabled' && !that.start ){//&& !that.data.defaultDate[0]
  332. day.type = 'start'
  333. that.start = day.date;
  334. // that.data.defaultDate[0] = day.date.getTime()
  335. // console.log(that.data.defaultDate);
  336. // that.setData({
  337. // defaultDate:that.data.defaultDate
  338. // })
  339. }
  340. // 已有start时,记录start 原无房日期type为start时,不存
  341. if(day.type == 'start'){
  342. console.log(day,'start');
  343. that.type = 'start';
  344. that.start = day.date;
  345. if(CountObj[datestr] && CountObj[datestr]>= that.data.room.total){
  346. day.type = 'disabled';
  347. that.start = null;
  348. }
  349. }
  350. // 3.1、有start无end时,后一天如果为disabled,type设为''
  351. if(that.start && day.type =='disabled' && month <6 ){
  352. let leavSelect = dateServ.getStrByTimeIncreaseDay(that.start,1)
  353. // 日历day 时间为00:00:00,需把时间转换为 00:00:00 进行对比
  354. let isSame = dateServ.isSameDay(day.date,leavSelect)
  355. // console.log(startstr,CountObj[startstr] , that.data.room.total , !CountObj[startstr] || CountObj[startstr] <that.data.room.total);
  356. if(isSame && datestr != endstr && (!CountObj[startstr] || CountObj[startstr] < that.data.room.total)){
  357. // console.log(datestr,endstr);
  358. // console.log('ddddddddddddddddddddd');
  359. // console.log(day,day.date,day.type);
  360. day.type = ''
  361. }
  362. }
  363. // 3.2、如果离店日期为无房日期,点击该日期 不修改入住和离店日期
  364. if(datestr == endstr ){
  365. console.log(datestr,endstr);
  366. if(CountObj[datestr] && CountObj[datestr]>= that.data.room.total){
  367. day.type == 'end'
  368. }
  369. }
  370. if (day.type === 'start') {
  371. day.bottomInfo = '入住';
  372. } else if (day.type === 'end') {
  373. day.bottomInfo = '离店';
  374. }
  375. }
  376. return day;
  377. }
  378. // return formatter()
  379. // if(!this.defaultDate){
  380. // this.setData({
  381. // defaultDate:[this.start,this.end]
  382. // })
  383. // }
  384. this.setData({
  385. checkedFormatter:formatter
  386. })
  387. },
  388. unselectDate(event){
  389. console.log(event);
  390. },
  391. selectDate(event){
  392. console.log(event);
  393. let dates = event.detail;
  394. this.start = dates[0]
  395. this.end = dates[1]
  396. if(this.end){
  397. this.disabled = null;
  398. console.log(this.disabled);
  399. }
  400. this.checkedFormatter()
  401. },
  402. formatter(day,type){
  403. const month = day.date.getMonth() + 1;
  404. if(month <6){
  405. console.log(day,type);
  406. }
  407. let CountObj = this.data.CountObj
  408. let datestr = dateServ.getDateStrByTime(day.date);
  409. // 该日期已有订单 且数量达到房间总量 显示无房 禁点
  410. if(CountObj[datestr] && CountObj[datestr]>= this.data.room.total){
  411. day.bottomInfo = '无房';
  412. day.type = 'disabled'
  413. }
  414. if (day.type === 'start') {
  415. day.bottomInfo = '入住';
  416. } else if (day.type === 'end') {
  417. day.bottomInfo = '离店';
  418. }
  419. if(type){
  420. day.type = type;
  421. }
  422. return day;
  423. },
  424. select:{
  425. start:null,
  426. end:null
  427. },
  428. // defaultDate(){
  429. // // 已知: 有订单时间对象数组 this.CountObj this.CountArray 房间数量 this.room.total
  430. // // 求: 最近订单数量小于房间数量时间
  431. // let arr = this.getTimeArr()
  432. // console.log(arr);
  433. // return arr
  434. // // format(day,type){
  435. // // if(type){
  436. // // day.type == type
  437. // // }
  438. // },
  439. getTimeArr(){
  440. let arr = [...new Array(30).keys()]// 日期遍历以30天为周期遍历
  441. let date = new Date();
  442. for(let i=0;i<arr.length;i++){
  443. let startstr = new Date(dateServ.getStrByTimeIncreaseDay(date,0))
  444. let start = this.getOrderDate(startstr)
  445. date = new Date(dateServ.getStrByTimeIncreaseDay(date,1))
  446. if(start){// 最近可订的时间
  447. console.log(start);
  448. this.selectDay(start,'start')
  449. console.log(start);
  450. let end = new Date(dateServ.getStrByTimeIncreaseDay(start,1))
  451. let endstr = dateServ.getStrByTimeIncreaseDay(start,1)
  452. let select = this.getOrderDate(endstr)
  453. console.log(select);
  454. if(!select){// 处于禁用状态
  455. this.selectDay(end,'end')
  456. }
  457. return [start,end]
  458. }
  459. if(i+1 == arr.length){
  460. this.getTimeArr()
  461. }
  462. }
  463. },
  464. // formatter (day) {
  465. // const month = day.date.getMonth() + 1;
  466. // const date = day.date.getDate();
  467. // // console.log(month,date);
  468. // // if (month === 5) {
  469. // // if (date === 1) {
  470. // // day.topInfo = '劳动节';
  471. // // } else if (date === 4) {
  472. // // day.topInfo = '五四青年节';
  473. // // } else if (date === 11) {
  474. // // day.text = '今天';
  475. // // }
  476. // // }
  477. // if(month === 4){
  478. // if(date === 18 || date === 19 || date === 20 || date === 21){
  479. // console.log(day);
  480. // }
  481. // if(day.type == 'start'){
  482. // console.log('start');
  483. // this.type = 'start';
  484. // // type = 'start';
  485. // }
  486. // if (day.type === 'start') {
  487. // day.bottomInfo = '入住';
  488. // } else if (day.type === 'end') {
  489. // day.bottomInfo = '离店';
  490. // }
  491. // let CountObj = this.data.CountObj
  492. // let datestr = dateServ.getDateStrByTime(day.date);
  493. // if(CountObj[datestr] && CountObj[datestr]>= this.data.room.total){// 该日期已有订单 且数量达到房间总量 显示无房 禁点
  494. // day.bottomInfo = '无房';
  495. // day.type = 'disabled'
  496. // }
  497. // if(date === 18 || date === 19 || date === 20 || date === 21){
  498. // console.log(day);
  499. // }
  500. // }
  501. // return day;
  502. // },
  503. // 入住人数选择
  504. checkNum(){
  505. this.setData({
  506. showNumPicker:true
  507. })
  508. },
  509. numPickerChange(event){
  510. // console.log(event,event.detail);
  511. // this.setData({
  512. // peopleNum:event.detail
  513. // })
  514. },
  515. numPickerEnter(event) {
  516. const { picker, value, index } = event.detail;
  517. console.log(picker, value, index);
  518. console.log(`当前值:${value}, 当前索引:${index}`);
  519. this.setData({
  520. peopleNum:value,
  521. showNumPicker:false
  522. })
  523. },
  524. numPickerCancel() {
  525. console.log('取消');
  526. this.setData({
  527. showNumPicker:false
  528. })
  529. },
  530. async checkOrderCount(){
  531. // start1 end1 现在选择
  532. // start2 end2 已有订单时间
  533. // start1 < start2 end1 < end2
  534. // start1 > start2 end1 > end2
  535. // start1 = start2 end1 = end2
  536. let now = dateServ.changeDateTime(new Date(),'14:00:00')
  537. let Order = new Parse.Query("RoomOrder")
  538. Order.equalTo("room",this.data.roomId)
  539. Order.equalTo("company",company)
  540. Order.exists("status")
  541. Order.notEqualTo("status",100)
  542. Order.notEqualTo("status",400)
  543. Order.notEqualTo("status",601)
  544. Order.notEqualTo("status",700)
  545. Order.greaterThanOrEqualTo("startTime",this.data.endTime) //20 23 21 22
  546. Order.lessThanOrEqualTo("endTime",this.data.startTime)
  547. Order.select("startTime","endTime")
  548. let count = await Order.count()
  549. console.log(count);
  550. return count
  551. },
  552. async submit(){
  553. if(!this.data.startTime || !this.data.endTime){
  554. wx.showToast({
  555. title: '请选择入住时间',
  556. icon: 'none',
  557. })
  558. return
  559. }
  560. if(this.data.customers.length == 0){
  561. wx.showToast({
  562. title: '请选择入住人',
  563. icon: 'none',
  564. })
  565. return
  566. }
  567. let count = await this.checkOrderCount()
  568. if(count >=this.data.room.total){
  569. console.log(count);
  570. wx.showToast({
  571. title: '当前日期,已无剩余房间,请重新选择',
  572. icon: 'none',
  573. })
  574. return
  575. }
  576. let tradeNo = this.getTradeNo()
  577. let order = await this.setOrder(tradeNo)
  578. if(order){
  579. this.setData({
  580. activeOrder:order,
  581. tradeNo,
  582. showPayment:true,
  583. })
  584. }
  585. },
  586. async acceptResult(e) {
  587. let { activeOrder } = this.data
  588. let that = this
  589. let {
  590. params,
  591. no
  592. } = e.detail;
  593. that.setData({
  594. showPayment: false
  595. })
  596. try {
  597. if (params == "ok") {
  598. activeOrder.set("status", 100)
  599. activeOrder.set("isPay", true)
  600. await activeOrder.save()
  601. wx.showToast({
  602. title: '支付成功',
  603. icon: 'none',
  604. duration: 1500,
  605. mask: false,
  606. });
  607. wx.navigateBack({
  608. delta: 1,
  609. })
  610. } else {
  611. wx.showToast({
  612. title: '支付失败,取消订单',
  613. icon: 'none',
  614. duration: 1500,
  615. mask: false,
  616. });
  617. }
  618. } catch (error) {
  619. console.log(error)
  620. wx.showToast({
  621. title: "支付失败",
  622. icon: "error",
  623. duration: 1500,
  624. });
  625. wx.hideLoading()
  626. }
  627. },
  628. //生成订单号
  629. getTradeNo(){
  630. let now = new Date()
  631. let tradeNo = "C" +
  632. String(now.getFullYear()) +
  633. (now.getMonth() + 1) +
  634. now.getDate() +
  635. now.getHours() +
  636. now.getMinutes() +
  637. now.getSeconds() +
  638. Math.random().toString().slice(-6); //生成六位随机数
  639. return tradeNo
  640. },
  641. // 创建待支付订单
  642. async setOrder(tradeNo){
  643. let currentUser = Parse.User.current()
  644. let Order = Parse.Object.extend("RoomOrder");
  645. let order = new Order()
  646. try {
  647. order.set("details",this.data.room.details);
  648. order.set("user",{
  649. __type: 'Pointer',
  650. className: '_User',
  651. objectId: currentUser.id
  652. });
  653. order.set("orderNum",tradeNo);
  654. order.set("room",{
  655. __type: 'Pointer',
  656. className: 'ShopRoom',
  657. objectId: this.data.roomId
  658. });
  659. console.log(this.data.startTime,this.data.endTime);
  660. order.set("startTime",this.data.startTime);
  661. order.set("endTime",this.data.endTime);
  662. order.set("price",this.data.count * this.data.room.price);
  663. order.set("shopStore",{
  664. __type: 'Pointer',
  665. className: 'ShopStore',
  666. objectId: this.data.room.shop.objectId
  667. });
  668. order.set("company", {
  669. __type: 'Pointer',
  670. className: 'Company',
  671. objectId: company
  672. })
  673. order.set("name",this.data.customers[0]['realname']);
  674. order.set("mobile",this.data.customers[0]['mobile']);
  675. order.set("merber",this.data.peopleNum);
  676. order = await order.save()
  677. } catch (error) {
  678. console.log(error);
  679. wx.showToast({
  680. title: error.errMsg,
  681. icon: 'none'
  682. })
  683. }
  684. return order
  685. },
  686. /**
  687. * 生命周期函数--监听页面初次渲染完成
  688. */
  689. onReady: function () {
  690. },
  691. async getRoomOrdersByRoomId(roomId){
  692. let time1 = dateServ.changeDateTime(new Date(),'00:00:00');
  693. let time2 = this.timeaddsix(dateServ.changeDateTime(new Date(),'23:59:59'));
  694. console.log("time1",time1, "time2", time2)
  695. let Order = new Parse.Query("RoomOrder")
  696. Order.equalTo("room",roomId)
  697. Order.equalTo("company",company)
  698. Order.exists("status")
  699. Order.greaterThanOrEqualTo("startTime",time1)
  700. Order.lessThanOrEqualTo("startTime",time2)
  701. Order.select("startTime","endTime")
  702. let orders = await Order.find()
  703. console.log(orders);
  704. return orders
  705. },
  706. timeaddsix(str){
  707. // 创建日期对象,并初始化,完成文本转日期
  708. var date = new Date(str);
  709. //日期转文本方式一:
  710. // str = date.format("yyyy-MM-dd");
  711. var year= date.getFullYear();//年
  712. var month= date.getMonth() + 7;//月 +6个月 因为js里month从0开始,所以要加1
  713. if (month>12){
  714. year++;
  715. month -= 12;
  716. }
  717. if(month<10){
  718. month="0"+month;
  719. }
  720. var date2=new Date(year,month,0);//新的年月
  721. var day1=date.getDate();
  722. var day2=date2.getDate();
  723. if(day1>day2){ //防止+6月后没有31天
  724. day1=day2;
  725. }
  726. str = year + '/'
  727. + month + '/'
  728. + day1;
  729. return str
  730. },
  731. /**
  732. * 生命周期函数--监听页面隐藏
  733. */
  734. onHide: function () {
  735. },
  736. /**
  737. * 生命周期函数--监听页面卸载
  738. */
  739. onUnload: function () {
  740. },
  741. /**
  742. * 页面相关事件处理函数--监听用户下拉动作
  743. */
  744. onPullDownRefresh: function () {
  745. },
  746. /**
  747. * 页面上拉触底事件的处理函数
  748. */
  749. onReachBottom: function () {
  750. },
  751. /**
  752. * 用户点击右上角分享
  753. */
  754. onShareAppMessage: function () {
  755. },
  756. // getRoom(){
  757. // this.getRoom
  758. // }
  759. })