// pages/menu/menu.js import { imgUrl } from "../api/request" import { baseUrl, request } from "../../../pages/api/canteen-request.js" const FormData = require('./formData.js') Page({ /** * 页面的初始数据 */ data: { imgUrl: imgUrl, baseUrl: baseUrl, selectTimeNode: 0, showModal: false, // 评分图片列表 starsList: ['{{imgUrl}}/icon/stars2.png', '{{imgUrl}}/icon/stars2.png', '{{imgUrl}}/icon/stars2.png', '{{imgUrl}}/icon/stars2.png', '{{imgUrl}}/icon/stars2.png'], // 评分 score: 0, // 评论 evaluation: '', // 评论图片列表 imgList: [], // 日期数据 dateStr: { 'startWeek': '', 'endWeek': '', 'weekList': [], 'nowDate': '' }, // 选择的日期索引 dateSelectIndex: 0, canteenId: '', // 菜单原始值 menuOrigin: [], // 4餐菜单 menuCanteen: { 'breakfastCanteen': [], 'lunchCanteen': [], 'dinnerCanteen': [], 'takeoutCanteen': [] }, // 点击评论详情 dishesDetails: {}, // 食堂名称 canteenName: '', isManager: false, timePeriodMeal: { name: "", icon: "", value: "" }, timePeriodMeals: [] }, // 自定义函数 openItem(e) { var details = e.currentTarget.dataset.item this.setData({ 'dishesDetails': details }) this.setData({ showModal: true, score: 0, evaluation: '', imgList: [] }) this.setStarsList(); }, clickLike(e) { var subIndex = e.currentTarget.dataset.index var parentIndex = e.currentTarget.dataset.parent var obj = e.currentTarget.dataset.item var params = { 'foodId': obj.id, 'canteenId': this.data.canteenId } request({ url: '/mini/canteen/click', method: 'GET', data: params }).then(res => { if (res.data.result) { switch (this.data.selectTimeNode) { case 0: { var canteen = this.data.menuCanteen canteen.breakfastCanteen[parentIndex].list[subIndex].liked = !canteen.breakfastCanteen[parentIndex].list[subIndex].liked this.setData({ 'menuCanteen': canteen }) }; break; case 1: { var canteen = this.data.menuCanteen canteen.lunchCanteen[parentIndex].list[subIndex].liked = !canteen.lunchCanteen[parentIndex].list[subIndex].liked this.setData({ 'menuCanteen': canteen }) }; break; case 2: { var canteen = this.data.menuCanteen canteen.dinnerCanteen[parentIndex].list[subIndex].liked = !canteen.dinnerCanteen[parentIndex].list[subIndex].liked this.setData({ 'menuCanteen': canteen }) }; break; case 3: { var canteen = this.data.menuCanteen canteen.takeoutCanteen[parentIndex].list[subIndex].liked = !canteen.takeoutCanteen[parentIndex].list[subIndex].liked this.setData({ 'menuCanteen': canteen }) }; break; } } }) }, // 关闭评论 closeItem(e) { this.setData({ showModal: false }) }, // 发布评论 postComment() { if (this.data.score === 0) { wx.showToast({ title: '评分不能为空', icon: 'none', duration: 2000 }) } else if (this.data.evaluation === '') { wx.showToast({ title: '评论不能为空', icon: 'none', duration: 2000 }) } else if (this.data.evaluation.length < 10) { wx.showToast({ title: '评论字数不能小于10', icon: 'none', duration: 2000 }) } else { var details = this.data.dishesDetails let userid = wx.getStorageSync('userid'); let formData = new FormData(); formData.append("score", this.data.score); formData.append("evaluation", this.data.evaluation); formData.append("userid", userid); formData.append("canteenid", this.data.canteenId); formData.append("dishesid", details.id); for (let i = 0; i < this.data.imgList.length; i++) { formData.appendFile("files", this.data.imgList[i]); } let data = formData.getData(); request({ url: '/mini/canteen/addEvaluation', method: 'POST', data: data.buffer, contentType: data.contentType }).then(res => { if (res.data.result) { wx.showToast({ title: '发布成功', icon: 'none', duration: 2000 }) } else { wx.showToast({ title: '发布失败', icon: 'none', duration: 2000 }) } }) this.setData({ showModal: false }) } }, // 输入评论 blurEvaluation(e) { this.setData({ evaluation: e.detail.value }) }, tapTimeNode(e) { this.setData({ selectTimeNode: e.currentTarget.dataset.item }) }, // 赋值评分 setStarsList() { let temp = []; for (let i = 0; i < 5; i++) { if (i < this.data.score) { temp.push('{{imgUrl}}/icon/stars1.png') } else { temp.push('{{imgUrl}}/icon/stars2.png') } } this.setData({ starsList: temp }) }, // 选择评分 chooseStars(e) { this.setData({ score: e.currentTarget.dataset.index + 1 }) this.setStarsList(); }, // 上传照片 choosePhoto() { var that = this wx.chooseMedia({ count: 4, mediaType: ['image'], sizeType: ["original", "compressed"], sourceType: ["album"], success: function (res) { for (let i = 0; i < res.tempFiles.length; i++) { let tempFilePaths = res.tempFiles[i]; if (that.data.imgList.length >= 4) { wx.showToast({ title: "只能上传4张图片", icon: "none", duration: 1500 }) break; } else if (tempFilePaths.size > 1024 * 1024 * 5) { wx.showToast({ title: "图片过大", icon: "none", duration: 1500 }) } else { let temp = that.data.imgList; temp.push(tempFilePaths.tempFilePath); that.setData({ imgList: temp }) } } } }) }, deleteFile(e) { let temp = this.data.imgList; temp.splice(e.currentTarget.dataset.index, 1); this.setData({ imgList: temp }) }, //格式化日期 formatDate: function (date) { let myYear = date.getFullYear(); let myMonth = date.getMonth() + 1; let myWeekDay = date.getDate(); return myYear + "年" + myMonth + "月" }, //格式化日期2 formatDateNumber: function (date) { let myYear = date.getFullYear(); let myMonth = date.getMonth() + 1; let myWeekDay = date.getDate(); return myYear + "-" + myMonth + "-" + myWeekDay }, initDate: function () { var now = new Date(); var nowYear = now.getFullYear(); //当前年 var nowMonth = now.getMonth(); //当前月 var nowDay = now.getDate(); //当前日 var nowDayOfWeek = now.getDay(); //今天是本周的第几天 this.setData({ dateSelectIndex: nowDayOfWeek - 1 }) var startWeek = this.formatDate(new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1)); var endWeek = this.formatDate(new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek + 1))); var nowDate = this.formatDate(now) // 一周的日期列表 var weeks = [] for (var i = 1; i <= 7; i++) { weeks.push(this.formatDateNumber(new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + i))) } this.setData({ dateStr: { 'startWeek': startWeek, 'endWeek': endWeek, 'weekList': weeks, 'nowDate': nowDate } }) }, // 切换日期 selectDate: function (e) { this.setData({ 'dateSelectIndex': e.currentTarget.dataset.item }) this.getMenuInfo() }, getMenuInfo() { var params = { 'date': this.data.dateStr.weekList[this.data.dateSelectIndex], 'canteenId': this.data.canteenId } request({ url: '/mini/canteen/getMenu', method: 'GET', data: params }).then(res => { if (!(res.data.data && res.data.data.length != 0)) { this.setData({ 'menuCanteen': { 'breakfastCanteen': [], 'lunchCanteen': [], 'dinnerCanteen': [], 'takeoutCanteen': [] } }) return } var jsonStr = res.data.data.dishesList var menuList = JSON.parse(jsonStr) this.setData({ 'menuOrigin': menuList }) var breakfast = [] var lunch = [] var dinner = [] var takeout = [] for (var i = 0; i < menuList.length; i++) { switch (menuList[i].timeName) { case '早餐': breakfast = menuList[i].foods break case '午餐': lunch = menuList[i].foods break case '晚餐': dinner = menuList[i].foods break case '外卖': takeout = menuList[i].foods break } } var breakfastCanteen = [] var lunchCanteen = [] var dinnerCanteen = [] var takeoutCanteen = [] for (var j = 0; j < breakfast.length; j++) { var index = -1; if (breakfastCanteen.length != 0) { index = breakfastCanteen.findIndex((item) => item.type == breakfast[j].typeName) } if (index == -1) { var tmpList = [] tmpList.push(breakfast[j]) breakfastCanteen.push({ 'type': breakfast[j].typeName, 'list': tmpList }) } else { breakfastCanteen[index].list.push(breakfast[j]) } } for (var j = 0; j < lunch.length; j++) { var index = -1; if (lunchCanteen.length != 0) { index = lunchCanteen.findIndex((item) => item.type == lunch[j].typeName) } if (index == -1) { var tmpList = [] tmpList.push(lunch[j]) lunchCanteen.push({ 'type': lunch[j].typeName, 'list': tmpList }) } else { lunchCanteen[index].list.push(lunch[j]) } } for (var j = 0; j < dinner.length; j++) { var index = -1; if (dinnerCanteen.length != 0) { index = dinnerCanteen.findIndex((item) => item.type == dinner[j].typeName) } if (index == -1) { var tmpList = [] tmpList.push(dinner[j]) dinnerCanteen.push({ 'type': dinner[j].typeName, 'list': tmpList }) } else { dinnerCanteen[index].list.push(dinner[j]) } } for (var j = 0; j < takeout.length; j++) { var index = -1; if (takeoutCanteen.length != 0) { index = takeoutCanteen.findIndex((item) => item.type == takeout[j].typeName) } if (index == -1) { var tmpList = [] tmpList.push(takeout[j]) takeoutCanteen.push({ 'type': takeout[j].typeName, 'list': tmpList }) } else { takeoutCanteen[index].list.push(takeout[j]) } } this.setData({ 'menuCanteen': { 'breakfastCanteen': breakfastCanteen, 'lunchCanteen': lunchCanteen, 'dinnerCanteen': dinnerCanteen, 'takeoutCanteen': takeoutCanteen } }) }) }, gotoComment(e) { wx.navigateTo({ url: '/pages/commentList/commentList?dishesId=' + e.currentTarget.dataset.id + '&canteenId=' + this.data.canteenId }) }, imageError(e) { let temp = this.data.menuCanteen; switch (e.currentTarget.dataset.name) { case "breakfastCanteen": temp.breakfastCanteen[e.currentTarget.dataset.index].list[e.currentTarget.dataset.subindex].imgurl = ''; this.setData({ menuCanteen: temp }) break; case "lunchCanteen": temp.lunchCanteen[e.currentTarget.dataset.index].list[e.currentTarget.dataset.subindex].imgurl = ''; this.setData({ menuCanteen: temp }) break; case "dinnerCanteen": temp.dinnerCanteen[e.currentTarget.dataset.index].list[e.currentTarget.dataset.subindex].imgurl = ''; this.setData({ menuCanteen: temp }) break; case "takeoutCanteen": temp.takeoutCanteen[e.currentTarget.dataset.index].list[e.currentTarget.dataset.subindex].imgurl = ''; this.setData({ menuCanteen: temp }) break; } }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { // 查询用户所属角色 request({ url: '/mini/worker/getUserType', method: 'GET', data: { userId: wx.getStorageSync('userid') } }).then(res => { if (res.result) { let userType = res.data; // 政府工作人员 if ("0" == userType || '2' == userType) { this.setData({ isManager: false }); } else if ('1' == userType) { this.setData({ isManager: true }); } else { wx.navigateBack(); } } else { wx.navigateBack(); } }); this.initDate() this.setData({ 'canteenId': options.canteenId, canteenName: options.canteenName }) let time = options.time let times = time.split("/") let timePeriodMealarr = [] // debugger for (let i = 0; i < times.length; i++) { const element = times[i]; let timePeriodMeal = { name: "", icon: "", value: "", timer: "", } switch (element) { case '早': timePeriodMeal.icon = this.data.imgUrl + 'breakfast.png' timePeriodMeal.value = 0 timePeriodMeal.name = '早餐' break case '中': timePeriodMeal.icon = this.data.imgUrl + 'lunch.png' timePeriodMeal.value = 1 timePeriodMeal.name = '午餐' break case '晚': timePeriodMeal.icon = this.data.imgUrl + 'lunch.png' timePeriodMeal.value = 2 timePeriodMeal.name = '晚餐' break case '外卖': timePeriodMeal.icon = this.data.imgUrl + 'take_out.png' timePeriodMeal.name = '外卖预告' timePeriodMeal.value = 3 // timePeriodMeal.timer = menuList[i].timeQuantum break } timePeriodMealarr.push(timePeriodMeal) } this.setData({ timePeriodMeals: timePeriodMealarr }) wx.setNavigationBarTitle({ title: options.canteenName }) this.getMenuInfo(); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { return { title: this.data.canteenName }; }, /** * 上传菜品图片 * @param {*} e */ photograph: function (e) { let that = this; wx.chooseMedia({ mediaType: ['image'], sourceType: ['camera'], success: function (res) { // console.info(res); if (res.errMsg == 'chooseMedia:ok') { wx.showLoading({ title: '加载中...', }); let formData = new FormData(); formData.append('id', e.currentTarget.dataset.id); formData.append('canteenId', that.data.canteenId); formData.append('date', that.data.dateStr.weekList[that.data.dateSelectIndex]); formData.append('userId', wx.getStorageSync('userid')); formData.appendFile('files', res.tempFiles[0].tempFilePath); let data = formData.getData(); // console.log(data); request({ url: '/mini/canteen/updateDishesPic', method: 'POST', data: data.buffer, contentType: data.contentType }).then(re => { // console.info(re) if (re.result) { wx.showToast({ title: '上传成功', icon: 'success', mask: true, }); that.getMenuInfo(); } else { wx.showToast({ title: '上传失败', icon: 'error', mask: true }); } wx.hideLoading(); }); } } }); } })