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