// pages/make_order/choose_sit/choose_sit.js import { httpUtil, http } from '../../../utils/util' Page({ /** * 页面的初始数据 */ data: { select_grade: '', max_select: 6, onSelect(items) { }, }, select_grade(e) { if (e.currentTarget.dataset.num !== 0) { if (this.data.select_grade == e.currentTarget.dataset.select_grade) { this.setData({ select_grade: '' }) } else { this.setData({ select_grade: e.currentTarget.dataset.select_grade }) } } }, /** * 监听勾选事件 */ bindchange(e) { const values = e.detail.value const seats = this.data.obj.maps const sel_ticket = [] if (values.length > this.data.max_select) { values.splice(this.data.max_select) wx.showToast({ title: '单次最多选座6个', icon: 'error', duration: 1000 }) } seats.forEach((value, key) => { value.forEach((v, k) => { v.checked = !1 for (let i = 0; i < values.length; i++) { if (v.ticket_id == values[i]) { v.checked = !0 sel_ticket.push(v) break } } }) }) this.price_cac(sel_ticket) var obj = this.data.obj obj.maps = seats this.setData({ obj }) this.setData({ sel_ticket }) }, /** * 禁用 */ disabled(values) { const seats = this.data.obj.maps const len = values.length seats.forEach((value, key) => { value.forEach((v, k) => { for (let i = 0; i < len; i++) { console.log(v.ticket_status) if (v.ticket_id == values[i]) { v.ticket_status = !0 break } } }) }) var obj = this.data.obj obj.maps = seats this.setData({ obj }) }, // 计算票总价 '含多买折扣' price_cac(sel_ticket) { const p = [] const grade_price = [] grade_price.push(this.data.drama_seat_info.grade_price) // Object.prototype.fun = () => {}; // console.log(Object.values(grade_price[0])) for (var x in grade_price[0]) { let a = 0 let arr = [] for (let i of sel_ticket) { if (i.grade == x) { a++ arr.push({ row: i.row, col: i.col, floor: i.floor }) } } if (grade_price[0][x][a]) { p.push({ tkt_grade: x, tkt_num: a, tkt_pirce: grade_price[0][x][a], tkt_loc: arr }) } } let ii = 0 for (let i in p) { ii += parseInt(p[i].tkt_pirce) } this.setData({ total_price_list: p, total_price: ii }) }, // 点击取消所选位置 cancel_sel(e) { const ticket_id = e.currentTarget.dataset.ticket_id const seats = this.data.obj.maps const sel_ticket = this.data.sel_ticket console.log(ticket_id) console.log(this.data.sel_ticket) seats.forEach((value, key) => { value.forEach((v, k) => { for (let i = 0; i < value.length; i++) { if (v.ticket_id == ticket_id) { console.log(v, ticket_id) v.checked = !1 break } } }) }) sel_ticket.forEach((value, key) => { if (value.ticket_id == ticket_id) { sel_ticket.splice(sel_ticket.indexOf(value), 1) } }) this.price_cac(sel_ticket) var obj = this.data.obj obj.maps = seats this.setData({ obj, sel_ticket }) }, make_order() { var sel_ticket = this.data.sel_ticket var tid = "" sel_ticket.forEach((v, k) => { tid = tid + ',' + String(v.ticket_id) }) tid = tid.substring(1) wx.navigateTo({ url: '../make_order/make_order?tid=' + tid + '&drama_id=' + this.data.drama_id }) }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { //wx.createSelectorQuery().select("#c").boundingClientRect(function(rect){console.log(rect)}).exec() let drama_id = options.drama_id let that = this wx.getSystemInfo({ success(res) { //获取屏幕的宽成功 that.setData({ screenWidth: res.screenWidth, screenHeight: res.screenHeight }) } }) this.setData({ drama_id }) this.drama_list(drama_id) }, getdrama_list(e){ let drama_id=e.currentTarget.dataset.drama_id if(drama_id==0){ return } this.setData({ sel_ticket:[], total_price:'', select_grade:'', drama_id // obj:{} }) this.drama_list(drama_id) }, drama_list(drama_id) { httpUtil("/api/v1/seat-list", "get", { drama_id }).then(res => { // 暂时用css固定值 let seatWidth = 20 let seatHeight = 20 let seatMargin = 2 let seatSpace = seatWidth + seatMargin * 2 let scaleTimes = this.data.screenWidth / (res.max_x * seatSpace) this.setData({ drama_seat_info: res, seatWidth, seatHeight, seatMargin, scaleTimes }) const obj = { seats: [], maps: [] } for (let i = 0; i < res.max_y; i++) { obj.seats[i] = [] res.seat_list.forEach((v, k) => { if (i + 1 === v.y) { obj.seats[i].push(v) } }) } obj.seats.forEach((v, k) => { obj.maps[k] = [] for (let i = 0; i < res.max_x; i++) { for (let j = 0; j < v.length; j++) { if (i + 1 === v[j].x) { obj.maps[k].push(Object.assign({ space: !1 }, v[j])) break } } if (!obj.maps[k][i]) { obj.maps[k].push(Object.assign({ space: !0 })) } } }) this.setData({ obj }) }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } }) /** var _list = [] for (var x = 1; x <= res.max_x; x++) { for (var y = 1; y <= res.max_y; y++) { _list.push({x,y}) } } for(var ii of _list) for (var item of res.seat_list) { if (item.x == ii.x && item.y == ii.y) { ii['ticket_status']=item.ticket_status ii['row'] = item.row ii['col'] = item.col ii['grade'] = item.grade ii['price'] = item.price ii['floor'] = item.floor } } this.setData({_list}) **/