|
@@ -123,7 +123,7 @@
|
|
>
|
|
>
|
|
<div
|
|
<div
|
|
class="seat-item-class"
|
|
class="seat-item-class"
|
|
- :class="item.occupyStatus==0?'occupy-status': item.occupyStatus==1?'occupy-status-no':item.isDisabled || item.status != 1 ? 'disabled-class' : item.isSelect ? 'select-class' : ''"
|
|
|
|
|
|
+ :class="item.occupyStatus==0?item.occupyStatus==0&&item.isSelect?'occupy-status-select occupy-status':'occupy-status': item.occupyStatus==1?'occupy-status-no':item.isDisabled || item.status != 1 ? 'disabled-class' : item.isSelect ? 'select-class' : ''"
|
|
v-for="(item, index) in seatMapList[item1.key]"
|
|
v-for="(item, index) in seatMapList[item1.key]"
|
|
:style="{backgroundColor: item.color ? item.color : 'none'}"
|
|
:style="{backgroundColor: item.color ? item.color : 'none'}"
|
|
@click.stop="seatClick(item)"
|
|
@click.stop="seatClick(item)"
|
|
@@ -145,12 +145,14 @@
|
|
</div>
|
|
</div>
|
|
<div style="margin-top: 5px; margin-left: 30px;display: flex;">
|
|
<div style="margin-top: 5px; margin-left: 30px;display: flex;">
|
|
<div style="flex-shrink: 0;">
|
|
<div style="flex-shrink: 0;">
|
|
- 已勾选:{{ seatSelectList.length }}个座位
|
|
|
|
|
|
+ <span>已勾选(需购买):{{ seatSelectList.length }}个座位</span>
|
|
|
|
+ ——
|
|
|
|
+ <span>已勾选(需解锁):{{ seatSelectListNo.length }}个座位</span>
|
|
<el-button size="mini" type="warning" @click="clearSeatSelectListAll">清空已选座位</el-button>
|
|
<el-button size="mini" type="warning" @click="clearSeatSelectListAll">清空已选座位</el-button>
|
|
</div>
|
|
</div>
|
|
<div style="width: 100%;display: flex;justify-content: center;height: 30px;">
|
|
<div style="width: 100%;display: flex;justify-content: center;height: 30px;">
|
|
- <el-button size="mini" type="warning" :loading="lockOrUnLockLoading" @click="lockOrUnLockFun(seatSelectList,0)">锁定</el-button>
|
|
|
|
- <el-button size="mini" type="primary" @click="increaseViewersFun">预约</el-button>
|
|
|
|
|
|
+ <el-button size="mini" type="warning" :loading="lockOrUnLockLoading" @click="lockOrUnLockFun(0)">{{ seatSelectListNo.length>0?'解锁':'锁定' }}</el-button>
|
|
|
|
+ <el-button size="mini" type="primary" @click="increaseViewersFun">购票</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@@ -199,6 +201,7 @@
|
|
lockOrUnLock,
|
|
lockOrUnLock,
|
|
merchantTheatreAuditoriumList,
|
|
merchantTheatreAuditoriumList,
|
|
goodsPageList,
|
|
goodsPageList,
|
|
|
|
+ getGoodsPerformApi
|
|
} from '@/api/windowTicketSales/ticketingSales'
|
|
} from '@/api/windowTicketSales/ticketingSales'
|
|
import increaseViewers from "./model/increaseViewers"
|
|
import increaseViewers from "./model/increaseViewers"
|
|
import moment from "moment"
|
|
import moment from "moment"
|
|
@@ -244,6 +247,7 @@
|
|
seatMapList: {},
|
|
seatMapList: {},
|
|
seatMapListKey: [], // key
|
|
seatMapListKey: [], // key
|
|
seatSelectList: [],
|
|
seatSelectList: [],
|
|
|
|
+ seatSelectListNo: [], // 锁定的座位
|
|
|
|
|
|
lockOrUnLockLoading: false,
|
|
lockOrUnLockLoading: false,
|
|
|
|
|
|
@@ -253,8 +257,13 @@
|
|
width: 0,
|
|
width: 0,
|
|
justifyContent: false,
|
|
justifyContent: false,
|
|
activeName: 'first',
|
|
activeName: 'first',
|
|
- seatTypeList: [],
|
|
|
|
|
|
+ seatTypeList: [],
|
|
|
|
|
|
|
|
+ // 限购条件
|
|
|
|
+ ifRealUser: 0,// 散客是否实名:0-否 1-是
|
|
|
|
+ ifRealTeam: 0,// 团购是否实名:0否 1-是
|
|
|
|
+ oneMany: 0,// 证件要求: 1一证一票,2一证多票
|
|
|
|
+ personnelNum: 0,// 人员要求:0-表示不限制 其他数字表示限制人数
|
|
};
|
|
};
|
|
},
|
|
},
|
|
created() {
|
|
created() {
|
|
@@ -323,8 +332,13 @@
|
|
}
|
|
}
|
|
},
|
|
},
|
|
/** 座位锁定/解锁 */
|
|
/** 座位锁定/解锁 */
|
|
- async lockOrUnLockFun(listS,type){
|
|
|
|
|
|
+ async lockOrUnLockFun(type){
|
|
try {
|
|
try {
|
|
|
|
+ let listS = this.seatSelectListNo.length>0 ? this.seatSelectListNo : this.seatSelectList
|
|
|
|
+ if(listS.length<=0) {
|
|
|
|
+ this.$message.error(`请选择锁定的座位!!!`);
|
|
|
|
+ return
|
|
|
|
+ }
|
|
this.lockOrUnLockLoading = true
|
|
this.lockOrUnLockLoading = true
|
|
let list = []
|
|
let list = []
|
|
listS.forEach((item,index)=>{
|
|
listS.forEach((item,index)=>{
|
|
@@ -368,6 +382,7 @@
|
|
this.scrollLeft = 0
|
|
this.scrollLeft = 0
|
|
if(type) { // 是否清除已选
|
|
if(type) { // 是否清除已选
|
|
this.seatSelectList = []
|
|
this.seatSelectList = []
|
|
|
|
+ this.seatSelectListNo = []
|
|
}
|
|
}
|
|
this.seatMapList = {}
|
|
this.seatMapList = {}
|
|
this.seatList = []
|
|
this.seatList = []
|
|
@@ -397,11 +412,11 @@
|
|
listNum[index]['num'] = 0
|
|
listNum[index]['num'] = 0
|
|
})
|
|
})
|
|
list.forEach(item => {
|
|
list.forEach(item => {
|
|
- item.isDisabled = (item.occupyStatus != null && (item.occupyStatus == 0 || item.occupyStatus == 1) ? true : false); // 座位是否已被选择
|
|
|
|
|
|
+ item.isDisabled = item.occupyStatus == 1 ? true : false //(item.occupyStatus != null && (item.occupyStatus == 0 || item.occupyStatus == 1) ? true : false); // 座位是否已被选择
|
|
item.isSelect = this.setIsSelect(item);
|
|
item.isSelect = this.setIsSelect(item);
|
|
if(item.rowNo){
|
|
if(item.rowNo){
|
|
listNum.forEach((item1,index)=>{
|
|
listNum.forEach((item1,index)=>{
|
|
- if(item1.id == item.seatTypeId && item.status ==1 && !item.occupyStatus && item.occupyStatus !=0) {
|
|
|
|
|
|
+ if(item1.id == item.seatTypeId && item.status ==1 && !item.occupyStatus && item.occupyStatus !=0 ) {
|
|
listNum[index]['num'] = listNum[index]['num'] + 1
|
|
listNum[index]['num'] = listNum[index]['num'] + 1
|
|
}
|
|
}
|
|
})
|
|
})
|
|
@@ -494,8 +509,6 @@
|
|
this.goodsPageListS = []
|
|
this.goodsPageListS = []
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
this.changeTimeCheck(value,type)
|
|
this.changeTimeCheck(value,type)
|
|
|
|
|
|
},
|
|
},
|
|
@@ -513,8 +526,17 @@
|
|
// 获取场次
|
|
// 获取场次
|
|
this.merchantPerformTimeListFun()
|
|
this.merchantPerformTimeListFun()
|
|
}
|
|
}
|
|
|
|
+ if(type == 'goodsId'){
|
|
|
|
+ this.getGoodsPerformFun(value)
|
|
|
|
+ }else {
|
|
|
|
+ this.ifRealUser = 0 // 散客是否实名:0-否 1-是
|
|
|
|
+ this.ifRealTeam = 0 // 团购是否实名:0否 1-是
|
|
|
|
+ this.oneMany = 1 // 证件要求: 1一证一票,2一证多票
|
|
|
|
+ this.personnelNum = 0 // 人员要求:0-表示不限制 其他数字表示限制人数
|
|
|
|
+ }
|
|
this.performId = ''
|
|
this.performId = ''
|
|
this.seatSelectList = []
|
|
this.seatSelectList = []
|
|
|
|
+ this.seatSelectListNo = []
|
|
this.seatMapList = {}
|
|
this.seatMapList = {}
|
|
this.seatList = []
|
|
this.seatList = []
|
|
this.handleQuery()
|
|
this.handleQuery()
|
|
@@ -547,6 +569,7 @@
|
|
this.$refs.queryForm.resetFields()
|
|
this.$refs.queryForm.resetFields()
|
|
this.performId = ''
|
|
this.performId = ''
|
|
this.seatSelectList = []
|
|
this.seatSelectList = []
|
|
|
|
+ this.seatSelectListNo = []
|
|
this.seatMapList = {}
|
|
this.seatMapList = {}
|
|
this.seatList = []
|
|
this.seatList = []
|
|
this.handleQuery();
|
|
this.handleQuery();
|
|
@@ -556,17 +579,39 @@
|
|
// 座位点击事件
|
|
// 座位点击事件
|
|
seatClick(row) {
|
|
seatClick(row) {
|
|
console.log("是的发给我大是个的风格====",row)
|
|
console.log("是的发给我大是个的风格====",row)
|
|
|
|
+ if(row.isDisabled || row.status == 2){
|
|
|
|
+ return false
|
|
|
|
+ }
|
|
|
|
+ if(this.seatSelectListNo.length>0 && row.occupyStatus != 0) {
|
|
|
|
+ this.$message.error('你已选择锁定座位,只能再选择被锁定的座位!!!');
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if(this.seatSelectList.length > 0 && row.occupyStatus == 0){
|
|
|
|
+ this.$message.error('此座已被锁定,请先解锁!!!');
|
|
|
|
+ return
|
|
|
|
+ }
|
|
if(row.occupyStatus == 0){
|
|
if(row.occupyStatus == 0){
|
|
- console.log("weqwrwerewrer")
|
|
|
|
- this.$confirm('此座已被锁定,请先解锁', '提示', {
|
|
|
|
- confirmButtonText: '确定',
|
|
|
|
- cancelButtonText: '取消',
|
|
|
|
- type: 'warning'
|
|
|
|
- }).then(() => {
|
|
|
|
- this.lockOrUnLockFun([row],1)
|
|
|
|
- }).catch((error) => {
|
|
|
|
- console.log("error====",error)
|
|
|
|
- });
|
|
|
|
|
|
+ // console.log("weqwrwerewrer")
|
|
|
|
+ // this.$confirm('此座已被锁定,请先解锁', '提示', {
|
|
|
|
+ // confirmButtonText: '确定',
|
|
|
|
+ // cancelButtonText: '取消',
|
|
|
|
+ // type: 'warning'
|
|
|
|
+ // }).then(() => {
|
|
|
|
+ // this.lockOrUnLockFun([row],1)
|
|
|
|
+ // }).catch((error) => {
|
|
|
|
+ // console.log("error====",error)
|
|
|
|
+ // });
|
|
|
|
+ row.isSelect = !row.isSelect
|
|
|
|
+ if(row.isSelect){
|
|
|
|
+ this.seatSelectListNo.push(JSON.parse(JSON.stringify(row)))
|
|
|
|
+ }else {
|
|
|
|
+ let list = JSON.parse(JSON.stringify(this.seatSelectListNo))
|
|
|
|
+ list.forEach((item,index)=>{
|
|
|
|
+ if(item.id == row.id) {
|
|
|
|
+ this.seatSelectListNo.splice(index, 1)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
}else if(row.isDisabled || row.status == 2){
|
|
}else if(row.isDisabled || row.status == 2){
|
|
return false
|
|
return false
|
|
}else {
|
|
}else {
|
|
@@ -626,10 +671,23 @@
|
|
},
|
|
},
|
|
increaseViewersFun(){
|
|
increaseViewersFun(){
|
|
if(this.seatSelectList.length>0){
|
|
if(this.seatSelectList.length>0){
|
|
|
|
+ if(this.ifRealUser != 0 || this.ifRealTeam != 0 ) {
|
|
|
|
+ if(this.personnelNum != 0) {
|
|
|
|
+ if( this.seatSelectList.length != this.personnelNum ) {
|
|
|
|
+ this.$message.error(`票务类型设置了实名要求,选择人数为${ this.personnelNum }人`);
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
this.changePerformId(this.queryParams.timeId)
|
|
this.changePerformId(this.queryParams.timeId)
|
|
this.$refs.increaseViewers.initData(this.seatSelectList,{
|
|
this.$refs.increaseViewers.initData(this.seatSelectList,{
|
|
...this.queryParams,
|
|
...this.queryParams,
|
|
- performId:this.performId
|
|
|
|
|
|
+ performId:this.performId,
|
|
|
|
+ ifRealUser: this.ifRealUser, // 散客是否实名:0-否 1-是
|
|
|
|
+ ifRealTeam: this.ifRealTeam, // 团购是否实名:0否 1-是
|
|
|
|
+ oneMany: this.oneMany, // 证件要求: 1一证一票,2一证多票
|
|
|
|
+ personnelNum: this.personnelNum, // 人员要求:0-表示不限制 其他数字表示限制人数
|
|
})
|
|
})
|
|
}else {
|
|
}else {
|
|
this.$alert('请先选择座位!!!', '提示', {
|
|
this.$alert('请先选择座位!!!', '提示', {
|
|
@@ -672,6 +730,32 @@
|
|
|
|
|
|
return srt
|
|
return srt
|
|
},
|
|
},
|
|
|
|
+
|
|
|
|
+ // 获取限购标准
|
|
|
|
+ async getGoodsPerformFun(id){
|
|
|
|
+ try {
|
|
|
|
+ let res = await getGoodsPerformApi({
|
|
|
|
+ goodsId: id
|
|
|
|
+ })
|
|
|
|
+ if(res.code == 200) {
|
|
|
|
+ this.ifRealUser = res.data.ifRealUser // 散客是否实名:0-否 1-是
|
|
|
|
+ this.ifRealTeam = res.data.ifRealTeam // 团购是否实名:0否 1-是
|
|
|
|
+ this.oneMany = res.data.oneMany // 证件要求: 1一证一票,2一证多票
|
|
|
|
+ this.personnelNum = res.data.personnelNum // 人员要求:0-表示不限制 其他数字表示限制人数
|
|
|
|
+ }else {
|
|
|
|
+ this.ifRealUser = 0 // 散客是否实名:0-否 1-是
|
|
|
|
+ this.ifRealTeam = 0 // 团购是否实名:0否 1-是
|
|
|
|
+ this.oneMany = 1 // 证件要求: 1一证一票,2一证多票
|
|
|
|
+ this.personnelNum = 0 // 人员要求:0-表示不限制 其他数字表示限制人数
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } catch (error) {
|
|
|
|
+ this.ifRealUser = 0 // 散客是否实名:0-否 1-是
|
|
|
|
+ this.ifRealTeam = 0 // 团购是否实名:0否 1-是
|
|
|
|
+ this.oneMany = 1 // 证件要求: 1一证一票,2一证多票
|
|
|
|
+ this.personnelNum = 0 // 人员要求:0-表示不限制 其他数字表示限制人数
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|
|
@@ -846,7 +930,7 @@
|
|
height:100%;
|
|
height:100%;
|
|
background-color:rgba(0,0,0,0.3);
|
|
background-color:rgba(0,0,0,0.3);
|
|
z-index:-1;
|
|
z-index:-1;
|
|
- background-image: url('../../assets/jinzhi.png');
|
|
|
|
|
|
+ background-image: url('../../assets/jinzhi_1.png');
|
|
background-size: 50% 50%;
|
|
background-size: 50% 50%;
|
|
background-position: 50% 50%;
|
|
background-position: 50% 50%;
|
|
background-repeat: no-repeat;
|
|
background-repeat: no-repeat;
|
|
@@ -855,12 +939,32 @@
|
|
.occupy-status {
|
|
.occupy-status {
|
|
//pointer-events: none;
|
|
//pointer-events: none;
|
|
}
|
|
}
|
|
|
|
+ .occupy-status-select {
|
|
|
|
+ border: 5px solid #ff182f !important;
|
|
|
|
+ }
|
|
.occupy-status-no {
|
|
.occupy-status-no {
|
|
- background-color: #f56c6c !important;
|
|
|
|
|
|
+ //background-color: #f56c6c !important;
|
|
user-select: none;
|
|
user-select: none;
|
|
// pointer-events: none;
|
|
// pointer-events: none;
|
|
cursor: not-allowed !important;
|
|
cursor: not-allowed !important;
|
|
|
|
+ position: relative;
|
|
}
|
|
}
|
|
|
|
+ .occupy-status-no:after{
|
|
|
|
+ content:"";
|
|
|
|
+ display:block;
|
|
|
|
+ position:absolute;
|
|
|
|
+ top:0;
|
|
|
|
+ left:0;
|
|
|
|
+ width:100%;
|
|
|
|
+ height:100%;
|
|
|
|
+ background-color:rgba(0,0,0,0.3);
|
|
|
|
+ z-index:-1;
|
|
|
|
+ background-image: url('../../assets/jinzhi.png');
|
|
|
|
+ background-size: 50% 50%;
|
|
|
|
+ background-position: 50% 50%;
|
|
|
|
+ background-repeat: no-repeat;
|
|
|
|
+ z-index: 99;
|
|
|
|
+ }
|
|
.seat-item-class-box {
|
|
.seat-item-class-box {
|
|
width: 100%;
|
|
width: 100%;
|
|
display: flex;
|
|
display: flex;
|