You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

331 lines
6.9 KiB

// 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:'',
// 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})
**/