index.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. // pages/reserve/index.js
  2. import moment, { parseTwoDigitYear } from '../../utils/moment.min';
  3. moment.locale('en', {
  4. longDateFormat: {
  5. l: "YYYY-MM-DD",
  6. L: "YYYY-MM-DD HH:mm:ss",
  7. },
  8. })
  9. const app = getApp()
  10. Page({
  11. /**
  12. * 页面的初始数据
  13. */
  14. data: {
  15. height: app.globalData.height * 2 + 25,
  16. windowHeight: app.globalData.windowHeight,
  17. navbarData: {
  18. name: '报餐'
  19. },
  20. tenant: '',
  21. logo: '',
  22. today: '',
  23. // 点餐
  24. currentTab: 0,
  25. // 早餐,午餐,晚餐
  26. infoTab: 0,
  27. // 餐列表
  28. breakfastList: [],
  29. lunchList: [],
  30. dinnerList: [],
  31. // 餐数量
  32. oneStepper: 0,
  33. twoStepper: 0,
  34. thrStepper: 0,
  35. // 选餐表单
  36. form: {
  37. breakfast: { reserve: 0, list: [], },
  38. lunch: { reserve: 0, list: [], },
  39. dinner: { reserve: 0, list: [], },
  40. },
  41. },
  42. // 选择日期
  43. bindDateChange: function (e) {
  44. console.log('picker发送选择改变,携带值为', e.detail.value)
  45. this.setData({ today: e.detail.value })
  46. this.searchDate();
  47. this.searchOrder();
  48. },
  49. // 禁止左右滑动
  50. stopTab: function (e) {
  51. return false
  52. },
  53. //点击切换
  54. clickTab: function (e) {
  55. var that = this;
  56. if (this.data.currentTab === e.target.dataset.current) {
  57. return false;
  58. } else {
  59. that.setData({
  60. currentTab: e.target.dataset.current
  61. })
  62. }
  63. },
  64. // 点击选择餐食
  65. infoClickTab: function (e) {
  66. var that = this;
  67. let data = e.target.dataset.current;
  68. if (this.data.infoTab === data) return false;
  69. else that.setData({ infoTab: data });
  70. },
  71. // 选择餐数量
  72. // 早餐,午餐,晚餐
  73. oneChange: function (e) {
  74. console.log(e);
  75. const { data, type } = e.target.dataset
  76. const { detail } = e;
  77. this.menuNumOpera(type, detail, data._id)
  78. },
  79. // 增加
  80. onePlus: function (e) {
  81. console.log('增加');
  82. let data = e.target.dataset.data;
  83. let type = this.data.infoTab;
  84. let meal;
  85. let mw;
  86. if (type == 0) {//早餐
  87. mw = 'breakfast';
  88. meal = this.data.form.breakfast;
  89. // 计算卡路里
  90. let reserve = meal.reserve + data.reserve;
  91. this.setData({ 'form.breakfast.reserve': reserve })
  92. } else if (type == 1) {//午餐
  93. mw = 'lunch';
  94. meal = this.data.form.lunch;
  95. // 计算卡路里
  96. let reserve = meal.reserve + data.reserve;
  97. this.setData({ 'form.lunch.reserve': reserve })
  98. } else if (type == 2) {//晚餐
  99. mw = 'dinner';
  100. meal = this.data.form.dinner;
  101. // 计算卡路里
  102. let reserve = meal.reserve + data.reserve;
  103. this.setData({ 'form.dinner.reserve': reserve })
  104. }
  105. // 查询下标
  106. let res = meal.list.findIndex(i => i.id === data.id);
  107. // 查询数据
  108. let arr = meal.list.find(i => i.id === data.id);
  109. let onum = 0;
  110. if (arr) {//已有值
  111. onum = arr.num + 1;
  112. let qwe = { ...arr, num: onum } //id: arr.id, title: arr.title
  113. meal.list.splice(res, 1, qwe)
  114. } else {//没有值
  115. console.log(data)
  116. let onum = 1;
  117. let arr = { ...data, num: onum } //id: data.id, title: data.title
  118. meal.list.push(arr)
  119. }
  120. },
  121. /**
  122. * 更新菜单的数量
  123. * @param {String} type 三餐的类型
  124. * @param {Number} num 当前的数量
  125. * @param {String} id 指定菜品
  126. */
  127. menuNumOpera(type, num, id) {
  128. let list = this.data[`${type}List`];
  129. const li = list.findIndex(f => f._id === id)
  130. const ld = list.find(f => f._id === id)
  131. if (ld) {
  132. ld.num = num;
  133. list.splice(li, 1, ld)
  134. this.setData({
  135. [`${type}List`]: list
  136. })
  137. }
  138. },
  139. // 减少
  140. oneMinus: function (e) {
  141. console.log('减少');
  142. let data = e.target.dataset.data;
  143. let type = this.data.infoTab;
  144. let meal;
  145. let mw;
  146. if (type == 0) {//早餐
  147. mw = 'breakfast';
  148. meal = this.data.form.breakfast;
  149. // 计算减少卡路里
  150. let reserve = meal.reserve - data.reserve;
  151. this.setData({ 'form.breakfast.reserve': reserve })
  152. } else if (type == 1) {//午餐
  153. mw = 'lunch';
  154. meal = this.data.form.lunch;
  155. // 计算减少卡路里
  156. let reserve = meal.reserve - data.reserve;
  157. this.setData({ 'form.lunch.reserve': reserve })
  158. } else if (type == 2) {//晚餐
  159. mw = 'dinner';
  160. meal = this.data.form.dinner;
  161. // 计算减少卡路里
  162. let reserve = meal.reserve - data.reserve;
  163. this.setData({ 'form.dinner.reserve': reserve })
  164. }
  165. // 查询下标
  166. let res = meal.list.findIndex(i => i.id === data.id);
  167. // 查询数据
  168. let arr = meal.list.find(i => i.id === data.id);
  169. if (arr) {
  170. if (arr.num - 1 <= 0) meal.list.splice(res, 1)
  171. else {
  172. let qwe = { ...arr, num: arr.num - 1 }
  173. meal.list.splice(res, 1, qwe)
  174. }
  175. }
  176. // this.menuNumOpera(mw, onum, data._id)
  177. },
  178. // 提交
  179. onSubmit: function () {
  180. const data = JSON.parse(JSON.stringify(this.data.form))
  181. if (app.globalData.wxInfo) data.openid = app.globalData.wxInfo.openid;
  182. if (this.data.today) data.date = this.data.today;
  183. let url;
  184. if (data._id) url = `${app.globalData.publicUrl}/api/st/dining/order/update/${data._id}`
  185. else url = `${app.globalData.publicUrl}/api/st/dining/order`;
  186. wx.request({
  187. url,
  188. method: "post",
  189. header: {
  190. 'x-tenant': app.globalData.tenant
  191. },
  192. data,
  193. success: res => {
  194. if (res.data.errcode == 0) {
  195. wx.showToast({
  196. title: '完成点餐',
  197. })
  198. }
  199. },
  200. error: err => {
  201. wx.showToast({
  202. title: err.msg,
  203. icon: 'error'
  204. })
  205. }
  206. })
  207. },
  208. /**
  209. * 生命周期函数--监听页面加载
  210. */
  211. onLoad: function (options) {
  212. this.searchST();
  213. let today = moment().format('YYYY-MM-DD');
  214. this.setData({ today: today })
  215. this.searchDate();
  216. this.searchOrder();
  217. },
  218. // 查询时间
  219. searchDate: function () {
  220. let today = this.data.today;
  221. wx.request({
  222. url: `${app.globalData.publicUrl}/api/st/dining/arrange/getByDate?date=` + today,
  223. method: "get",
  224. header: {
  225. 'x-tenant': app.globalData.tenant
  226. },
  227. success: res => {
  228. const { arrange } = res.data.data;
  229. if (!arrange) return;
  230. let { breakfast, lunch, dinner } = arrange
  231. breakfast = this.dealImg(breakfast)
  232. lunch = this.dealImg(lunch)
  233. dinner = this.dealImg(dinner)
  234. this.setData({
  235. breakfastList: breakfast,
  236. lunchList: lunch,
  237. dinnerList: dinner
  238. })
  239. },
  240. error: err => {
  241. wx.showToast({
  242. title: err.msg,
  243. icon: 'error'
  244. })
  245. }
  246. })
  247. },
  248. dealImg(list) {
  249. for (let i of list) {
  250. if (i.img && i.img.length > 0 && i.img[0]) i.url = `${app.globalData.fileUrl}${i.img[0].url}`;
  251. else i.url = this.data.logo;
  252. }
  253. return list;
  254. },
  255. searchST: function () {
  256. wx.request({
  257. url: `${app.globalData.publicUrl}/api/st/system/tenant/getTenant/${app.globalData.tenant}`,
  258. method: "get",
  259. header: { 'x-tenant': app.globalData.tenant },
  260. data: {},
  261. success: res => {
  262. const { data } = res.data;
  263. this.setData({ tenant: data.name });
  264. this.setData({ logo: `${app.globalData.fileUrl}` + data.img.logo })
  265. },
  266. error: err => {
  267. wx.showToast({
  268. title: err.msg,
  269. icon: 'error'
  270. })
  271. }
  272. })
  273. },
  274. // 查订单
  275. searchOrder() {
  276. let today = this.data.today;
  277. let openid = app.globalData.wxInfo.openid;
  278. wx.request({
  279. url: `${app.globalData.publicUrl}/api/st/dining/order/getByOpenid?date=${today}&openid=${openid}`,
  280. method: "get",
  281. header: {
  282. 'x-tenant': app.globalData.tenant
  283. },
  284. success: res => {
  285. const { data } = res.data
  286. if (!data) return
  287. this.setData({
  288. form: res.data.data,
  289. })
  290. const robj = res.data.data
  291. if (robj.breakfast && robj.breakfast.list && robj.breakfast.list.length > 0) this.dealOrderToMenu('breakfast', robj.breakfast.list)
  292. if (robj.lunch && robj.lunch.list && robj.lunch.list.length > 0) this.dealOrderToMenu('lunch',robj.lunch.list)
  293. if (robj.dinner && robj.dinner.list && robj.dinner.list.length > 0) this.dealOrderToMenu('dinner', robj.dinner.list)
  294. },
  295. error: err => {
  296. wx.showToast({
  297. title: err.msg,
  298. icon: 'error'
  299. })
  300. }
  301. })
  302. },
  303. /**
  304. * 将点过的单还原,继续修改
  305. * @param {String} type 三餐类型
  306. * @param {Array} list 某餐的内容
  307. */
  308. dealOrderToMenu(type, list) {
  309. console.log(type, list)
  310. if (list.length <= 0) return;
  311. const menu = this.data[`${type}List`]
  312. if (!menu) return;
  313. for (const o of list) {
  314. const { num, _id } = o
  315. this.menuNumOpera(type, num, _id)
  316. }
  317. },
  318. /**
  319. * 生命周期函数--监听页面初次渲染完成
  320. */
  321. onReady: function () {
  322. },
  323. /**
  324. * 生命周期函数--监听页面显示
  325. */
  326. onShow: function () {
  327. if (typeof this.getTabBar === 'function' &&
  328. this.getTabBar()) {
  329. this.getTabBar().setData({
  330. selected: 1
  331. })
  332. }
  333. },
  334. /**
  335. * 生命周期函数--监听页面隐藏
  336. */
  337. onHide: function () {
  338. },
  339. /**
  340. * 生命周期函数--监听页面卸载
  341. */
  342. onUnload: function () {
  343. },
  344. /**
  345. * 页面相关事件处理函数--监听用户下拉动作
  346. */
  347. onPullDownRefresh: function () {
  348. },
  349. /**
  350. * 页面上拉触底事件的处理函数
  351. */
  352. onReachBottom: function () {
  353. },
  354. /**
  355. * 用户点击右上角分享
  356. */
  357. onShareAppMessage: function () {
  358. }
  359. })