diff --git a/shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html b/shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html
index c450f7a..dad75d0 100644
--- a/shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html
+++ b/shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html
@@ -132,17 +132,19 @@
return;
}
- var mapData = map.map || (map.rooms && map.rooms[0] ? map.rooms[0].map : null);
+ // seat_map is nested inside the seatMap object
+ var seatMapData = map.seat_map || map;
+ var mapData = seatMapData.map || (seatMapData.rooms && seatMapData.rooms[0] ? seatMapData.rooms[0].map : null);
if (!mapData || mapData.length === 0) {
document.getElementById('seatRows').innerHTML = '
座位图加载失败
';
return;
}
// 从模板数据获取房间 ID(可能是 UUID 或 room_xxx 格式)
- var rooms = map.rooms || [];
+ var rooms = seatMapData.rooms || [];
var roomId = (rooms[0] && rooms[0].id) ? rooms[0].id : 'room_001';
- var seats = map.seats || (map.rooms && map.rooms[0] ? map.rooms[0].seats || {} : {});
- var sections = map.sections || (map.rooms && map.rooms[0] ? map.rooms[0].sections || [] : []);
+ var seats = seatMapData.seats || (seatMapData.rooms && seatMapData.rooms[0] ? seatMapData.rooms[0].seats || {} : {});
+ var sections = seatMapData.sections || (seatMapData.rooms && seatMapData.rooms[0] ? seatMapData.rooms[0].sections || [] : []);
// 渲染图例
var legendHtml = '';
@@ -247,19 +249,35 @@
updateSelectedUI: function() {
var count = this.selectedSeats.length;
- document.getElementById('selectedCount').textContent = count;
+ document.getElementById('selectedCount').textContent = '(' + count + ')';
+ document.getElementById('barCount').textContent = count;
if (count > 0) {
document.getElementById('selectedSection').style.display = 'block';
document.getElementById('attendeeSection').style.display = 'block';
var total = this.selectedSeats.reduce(function(sum, s) { return sum + s.price; }, 0);
- document.getElementById('totalPrice').textContent = total.toFixed(2);
+ document.getElementById('totalPrice').textContent = '¥' + total.toFixed(2);
+ document.getElementById('barPrice').textContent = '¥' + total.toFixed(2);
+
+ // 渲染已选座位列表
+ var listHtml = '';
+ this.selectedSeats.forEach(function(seat) {
+ var seatLabel = seat.rowLabel + seat.colNum + '座';
+ listHtml += '' +
+ '' + seatLabel + '' +
+ '¥' + seat.price.toFixed(2) + '' +
+ '
';
+ });
+ document.getElementById('selectedList').innerHTML = listHtml;
this.renderAttendeeForms();
+ document.getElementById('purchaseBtn').disabled = false;
} else {
document.getElementById('selectedSection').style.display = 'none';
document.getElementById('attendeeSection').style.display = 'none';
+ document.getElementById('selectedList').innerHTML = '';
+ document.getElementById('purchaseBtn').disabled = true;
}
},
diff --git a/sql/fix_spec_value.sql b/sql/fix_spec_value.sql
new file mode 100644
index 0000000..80d121c
--- /dev/null
+++ b/sql/fix_spec_value.sql
@@ -0,0 +1,88 @@
+-- Insert GoodsSpecValue for goods_id=118 with proper Chinese encoding
+-- Using latin1 to bypass terminal encoding issues
+
+SET NAMES latin1;
+
+-- A_1 through A_6 (VIP zone A)
+INSERT INTO vrt_goods_spec_value (goods_id, goods_spec_base_id, type, value, md5_key, add_time) VALUES
+(118, 9370, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9370, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9370, '$vr-座位号', '主厅-主厅-A-A1', MD5('主厅-主厅-A-A1'), UNIX_TIMESTAMP()),
+(118, 9370, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9371, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9371, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9371, '$vr-座位号', '主厅-主厅-A-A2', MD5('主厅-主厅-A-A2'), UNIX_TIMESTAMP()),
+(118, 9371, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9372, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9372, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9372, '$vr-座位号', '主厅-主厅-A-A3', MD5('主厅-主厅-A-A3'), UNIX_TIMESTAMP()),
+(118, 9372, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9373, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9373, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9373, '$vr-座位号', '主厅-主厅-A-A4', MD5('主厅-主厅-A-A4'), UNIX_TIMESTAMP()),
+(118, 9373, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9374, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9374, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9374, '$vr-座位号', '主厅-主厅-A-A5', MD5('主厅-主厅-A-A5'), UNIX_TIMESTAMP()),
+(118, 9374, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9375, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9375, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9375, '$vr-座位号', '主厅-主厅-A-A6', MD5('主厅-主厅-A-A6'), UNIX_TIMESTAMP()),
+(118, 9375, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+-- B_1, B_2, B_5, B_6 (VIP zone A)
+(118, 9376, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9376, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9376, '$vr-座位号', '主厅-主厅-A-B1', MD5('主厅-主厅-A-B1'), UNIX_TIMESTAMP()),
+(118, 9376, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9377, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9377, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9377, '$vr-座位号', '主厅-主厅-A-B2', MD5('主厅-主厅-A-B2'), UNIX_TIMESTAMP()),
+(118, 9377, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9378, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9378, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9378, '$vr-座位号', '主厅-主厅-A-B5', MD5('主厅-主厅-A-B5'), UNIX_TIMESTAMP()),
+(118, 9378, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9379, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9379, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9379, '$vr-座位号', '主厅-主厅-A-B6', MD5('主厅-主厅-A-B6'), UNIX_TIMESTAMP()),
+(118, 9379, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+-- C_1-C_5 (普通 zone B), C_6 (VIP zone A)
+(118, 9380, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9380, '$vr-分区', '主厅-主厅-B', MD5('主厅-主厅-B'), UNIX_TIMESTAMP()),
+(118, 9380, '$vr-座位号', '主厅-主厅-B-C1', MD5('主厅-主厅-B-C1'), UNIX_TIMESTAMP()),
+(118, 9380, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9381, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9381, '$vr-分区', '主厅-主厅-B', MD5('主厅-主厅-B'), UNIX_TIMESTAMP()),
+(118, 9381, '$vr-座位号', '主厅-主厅-B-C2', MD5('主厅-主厅-B-C2'), UNIX_TIMESTAMP()),
+(118, 9381, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9382, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9382, '$vr-分区', '主厅-主厅-B', MD5('主厅-主厅-B'), UNIX_TIMESTAMP()),
+(118, 9382, '$vr-座位号', '主厅-主厅-B-C3', MD5('主厅-主厅-B-C3'), UNIX_TIMESTAMP()),
+(118, 9382, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9383, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9383, '$vr-分区', '主厅-主厅-B', MD5('主厅-主厅-B'), UNIX_TIMESTAMP()),
+(118, 9383, '$vr-座位号', '主厅-主厅-B-C4', MD5('主厅-主厅-B-C4'), UNIX_TIMESTAMP()),
+(118, 9383, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9384, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9384, '$vr-分区', '主厅-主厅-B', MD5('主厅-主厅-B'), UNIX_TIMESTAMP()),
+(118, 9384, '$vr-座位号', '主厅-主厅-B-C5', MD5('主厅-主厅-B-C5'), UNIX_TIMESTAMP()),
+(118, 9384, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
+
+(118, 9385, '$vr-场馆', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
+(118, 9385, '$vr-分区', '主厅-主厅-A', MD5('主厅-主厅-A'), UNIX_TIMESTAMP()),
+(118, 9385, '$vr-座位号', '主厅-主厅-A-C6', MD5('主厅-主厅-A-C6'), UNIX_TIMESTAMP()),
+(118, 9385, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP());