123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- // pages/reserve/index.js
- import moment, { parseTwoDigitYear } from '../../utils/moment.min';
- moment.locale('en', {
- longDateFormat: {
- l: 'YYYY-MM-DD',
- L: 'YYYY-MM-DD HH:mm:ss',
- },
- });
- const app = getApp();
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- height: app.globalData.height * 2 + 25,
- windowHeight: app.globalData.windowHeight,
- navbarData: {
- name: '报餐',
- },
- tenant: '',
- logo: '',
- today: '',
- // 点餐
- currentTab: 0,
- // 早餐,午餐,晚餐
- infoTab: '0',
- // 餐列表
- breakfastList: [],
- lunchList: [],
- dinnerList: [],
- // 餐数量
- oneStepper: 0,
- twoStepper: 0,
- thrStepper: 0,
- // 选餐表单
- form: {
- breakfast: { reserve: 0, list: [] },
- lunch: { reserve: 0, list: [] },
- dinner: { reserve: 0, list: [] },
- },
- // 时间选择范围
- picker: {},
- },
- // 选择日期
- bindDateChange: async function (e) {
- this.setData({ today: e.detail.value });
- await this.searchDate();
- await this.searchOrder();
- },
- // 禁止左右滑动
- stopTab: function (e) {
- return false;
- },
- //点击切换
- clickTab: function (e) {
- var that = this;
- if (this.data.currentTab === e.target.dataset.current) {
- return false;
- } else {
- that.setData({
- currentTab: e.target.dataset.current,
- });
- }
- },
- // 点击选择餐食
- infoClickTab: function (e) {
- var that = this;
- let data = e.target.dataset.current;
- if (this.data.infoTab === data) return false;
- else that.setData({ infoTab: data });
- },
- // 选择餐数量
- // 早餐,午餐,晚餐
- oneChange: function (e) {
- const { data, type } = e.target.dataset;
- const { detail } = e;
- this.menuNumOpera(type, detail, data._id);
- },
- // 增加
- onePlus: function (e) {
- let data = e.target.dataset.data;
- let type = this.data.infoTab;
- let initMealData = { list: [], reserve: 0 };
- let meal;
- let mw;
- switch (type) {
- case '0':
- mw = 'breakfast';
- meal = this.data.form.breakfast;
- break;
- case '1':
- mw = 'lunch';
- meal = this.data.form.lunch;
- break;
- case '2':
- mw = 'dinner';
- meal = this.data.form.dinner;
- break;
- default:
- break;
- }
- if (!meal) meal = initMealData;
- // 计算卡路里
- meal.reserve = meal.reserve + data.reserve;
- // 查询下标
- let res = meal.list.findIndex((i) => i._id === data._id);
- // 查询数据
- let arr = meal.list.find((i) => i._id === data._id);
- let onum = 0;
- if (arr) {
- //已有值
- onum = arr.num + 1;
- let qwe = { ...arr, num: onum }; //id: arr.id, title: arr.title
- meal.list.splice(res, 1, qwe);
- } else {
- //没有值
- let onum = 1;
- let arr = { ...data, num: onum }; //id: data.id, title: data.title
- meal.list.push(arr);
- }
- const key = `form.${mw}`;
- this.setData({ [key]: meal });
- this.computedTotalReserve();
- },
- /**
- * 更新菜单的数量
- * @param {String} type 三餐的类型
- * @param {Number} num 当前的数量
- * @param {String} id 指定菜品
- */
- menuNumOpera(type, num, id) {
- let list = this.data[`${type}List`];
- const li = list.findIndex((f) => f._id === id);
- const ld = list.find((f) => f._id === id);
- if (ld) {
- ld.num = num;
- list.splice(li, 1, ld);
- this.setData({
- [`${type}List`]: list,
- });
- }
- },
- // 减少
- oneMinus: function (e) {
- let data = e.target.dataset.data;
- let type = this.data.infoTab;
- let initMealData = { list: [], reserve: 0 };
- let meal;
- let mw;
- switch (type) {
- case '0':
- mw = 'breakfast';
- meal = this.data.form.breakfast;
- break;
- case '1':
- mw = 'lunch';
- meal = this.data.form.lunch;
- break;
- case '2':
- mw = 'dinner';
- meal = this.data.form.dinner;
- break;
- default:
- break;
- }
- if (!meal) meal = initMealData;
- // 计算卡路里
- meal.reserve = meal.reserve - data.reserve;
- // 查询下标
- let res = meal.list.findIndex((i) => i._id === data._id);
- // 查询数据
- let arr = meal.list.find((i) => i._id === data._id);
- if (arr) {
- if (arr.num - 1 <= 0) meal.list.splice(res, 1);
- else {
- let qwe = { ...arr, num: arr.num - 1 };
- meal.list.splice(res, 1, qwe);
- }
- }
- const key = `form.${mw}`;
- this.setData({ [key]: meal });
- this.computedTotalReserve();
- },
- computedTotalReserve() {
- const form = this.data.form;
- const br = form.breakfast && form.breakfast.reserve ? form.breakfast.reserve : 0;
- const lr = form.lunch && form.lunch.reserve ? form.lunch.reserve : 0;
- const dr = form.dinner && form.dinner.reserve ? form.dinner.reserve : 0;
- const total = br + lr + dr;
- this.setData({ totalReserve: total });
- },
- // 提交
- onSubmit: async function () {
- const data = JSON.parse(JSON.stringify(this.data.form));
- if (app.globalData.wxInfo) data.openid = app.globalData.wxInfo.openid;
- if (this.data.today) data.date = this.data.today;
- let url;
- if (data._id) url = `/order/update/${data._id}`;
- else url = `/order`;
- const res = await app.$post(url, data);
- if (res.errcode === 0) wx.showToast({ title: '点餐成功', icon: 'success' });
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: async function (options) {
- this.searchST();
- let today = moment().add(1, 'days').format('YYYY-MM-DD');
- let endday = moment().add(1, 'months').format('YYYY-MM-DD');
- this.setData({ today: today, picker: { start: today, end: endday } });
- await this.searchDate();
- await this.searchOrder();
- },
- // 查询时间
- searchDate: async function () {
- let today = this.data.today;
- const res = await app.$get(`/arrange/getByDate?date=${today}`);
- const { arrange } = res.data;
- if (!arrange) return;
- let { breakfast, lunch, dinner } = arrange;
- breakfast = this.dealImg(breakfast);
- lunch = this.dealImg(lunch);
- dinner = this.dealImg(dinner);
- this.setData({
- breakfastList: breakfast,
- lunchList: lunch,
- dinnerList: dinner,
- });
- },
- dealImg(list) {
- for (let i of list) {
- if (i.img && i.img.length > 0 && i.img[0]) i.url = `${i.img[0].url}`;
- else i.url = this.data.logo;
- }
- return list;
- },
- searchST: async function () {
- const res = await app.$get('/config');
- const logo = `${res.data.logo[0].url || ''}`;
- this.setData({ logo });
- // wx.request({
- // url: `${app.globalData.publicUrl}/api/st/system/tenant/getTenant/${app.globalData.tenant}`,
- // method: "get",
- // data: {},
- // success: res => {
- // const { data } = res.data;
- // this.setData({ tenant: data.name });
- // this.setData({ logo: `${app.globalData.fileUrl}` + data.img.logo })
- // },
- // error: err => {
- // wx.showToast({
- // title: err.msg,
- // icon: 'error'
- // })
- // }
- // })
- },
- // 查订单
- async searchOrder() {
- let today = this.data.today;
- let openid = app.globalData.wxInfo.openid;
- const res = await app.$get(`/order/getByOpenid?date=${today}&openid=${openid}`);
- const { data } = res;
- if (!data) return;
- this.setData({
- form: res.data,
- });
- const robj = res.data;
- if (robj.breakfast && robj.breakfast.list && robj.breakfast.list.length > 0) this.dealOrderToMenu('breakfast', robj.breakfast.list);
- if (robj.lunch && robj.lunch.list && robj.lunch.list.length > 0) this.dealOrderToMenu('lunch', robj.lunch.list);
- if (robj.dinner && robj.dinner.list && robj.dinner.list.length > 0) this.dealOrderToMenu('dinner', robj.dinner.list);
- this.computedTotalReserve();
- },
- /**
- * 将点过的单还原,继续修改
- * @param {String} type 三餐类型
- * @param {Array} list 某餐的内容
- */
- dealOrderToMenu(type, list) {
- if (list.length <= 0) return;
- const menu = this.data[`${type}List`];
- if (!menu) {
- console.error('没找到菜单');
- return;
- }
- for (const o of list) {
- const { num, _id } = o;
- this.menuNumOpera(type, num, _id);
- }
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {},
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- if (typeof this.getTabBar === 'function' && this.getTabBar()) {
- this.getTabBar().setData({
- selected: 1,
- });
- }
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {},
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {},
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {},
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {},
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {},
- });
|