|
@@ -11,77 +11,142 @@
|
|
|
<el-dialog
|
|
|
:title="title"
|
|
|
:visible.sync="open"
|
|
|
- width="700px"
|
|
|
+ :width="detailsType?'95%':'800px'"
|
|
|
append-to-body
|
|
|
:close-on-click-modal="false"
|
|
|
@close="cancel"
|
|
|
>
|
|
|
- <div class="dialog" v-if="form">
|
|
|
- <!-- 基础信息 -->
|
|
|
- <div class="title-class" style="margin-top: 0">基础信息</div>
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">团队名称: <span>{{ details.teamName || ''}}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">团队类型: <span><dict-tag style="display: inline-block" :options="dict.type.team_type" :value="details.teamType"/></span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">预约场馆: <span>{{ details.theatreName || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">预约演出厅: <span>{{ details.auditoriumName || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">预约剧目: <span>{{ details.performName || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">票务名称: <span>{{ details.goodsName || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">座位类型: <span>{{ details.seatTypeName || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">团购单价: <span>¥{{ details.price || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">预约时间: <span>{{ details.performDate || '' }}日 {{ details.performTimeStart +' --' || '' }} {{ details.performTimeEnd || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">报名时间: <span>{{ details.createTime || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">负责人: <span>{{ details.teamContact || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">联系电话: <span>{{ details.teamMobile || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12" v-if="details.errReason">
|
|
|
- <div class="grid-content bg-purple item-class">驳回原因: <span style="color: red;">{{ details.errReason || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
+ <div v-loading="initLoading" class="dialog dialog-bbb" :style="{'--widdd': detailsType?'500px':'100%'}" v-if="form">
|
|
|
+ <div>
|
|
|
+ <!-- 基础信息 -->
|
|
|
+ <div class="title-class" style="margin-top: 0">基础信息</div>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">团队名称: <span>{{ details.teamName || ''}}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">团队类型: <span><dict-tag style="display: inline-block" :options="dict.type.team_type" :value="details.teamType"/></span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">预约场馆: <span>{{ details.theatreName || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">预约演出厅: <span>{{ details.auditoriumName || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">预约剧目: <span>{{ details.performName || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">票务名称: <span>{{ details.goodsName || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">座位类型: <span>{{ details.seatTypeName || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">团购单价: <span>¥{{ details.price || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">预约时间: <span>{{ details.performDate || '' }}日 {{ details.performTimeStart +' --' || '' }} {{ details.performTimeEnd || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">报名时间: <span>{{ details.createTime || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">负责人: <span>{{ details.teamContact || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">联系电话: <span>{{ details.teamMobile || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12" v-if="details.errReason">
|
|
|
+ <div class="grid-content bg-purple item-class">驳回原因: <span style="color: red;">{{ details.errReason || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
|
|
|
|
|
|
- <!-- 观影人员信息 -->
|
|
|
- <div class="title-class">观影人员信息</div>
|
|
|
- <el-row>
|
|
|
- <el-col :span="24">
|
|
|
- <el-table ref="tables" :data="details.viewersList" border>
|
|
|
- <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
|
|
|
- <el-table-column label="姓名" align="center" prop="name" />
|
|
|
- <el-table-column label="身份证号码" align="center" prop="cardId" />
|
|
|
- </el-table>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
+ <!-- 观影人员信息 -->
|
|
|
+ <div class="title-class">观影人员信息</div>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-table size="mini" ref="tables" :data="details.viewersList" border>
|
|
|
+ <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
|
|
|
+ <el-table-column label="姓名" align="center" prop="name" />
|
|
|
+ <el-table-column label="身份证号码" align="center" prop="cardId" />
|
|
|
+ </el-table>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div class="dialog-bbb_2" v-if="detailsType">
|
|
|
+ <div class="seat-tool-box">
|
|
|
+ <span class="demonstration">座位大小</span>
|
|
|
+ <div class="seat-tool-box-slider">
|
|
|
+ <el-slider v-model="scaleNum" :min="30" :max="100"></el-slider>
|
|
|
+ </div>
|
|
|
+ <div style="display: flex;margin-left: 20px;" v-if="seatMapList&&JSON.stringify(seatMapList) != '{}'">
|
|
|
+ <div>座位余量:</div>
|
|
|
+ <div
|
|
|
+ :key="index"
|
|
|
+ v-for="(item,index) in seatTypeList"
|
|
|
+ style="margin-left: 10px;align-items: center;"
|
|
|
+ >
|
|
|
+ <span :style="{color: item.color?item.color:'none'}">{{item.name ? (item.name+'(剩余:'+ (item.num||0) +')') : '暂未命名'}}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="seat-box" :style="{'--scaleNum': scaleNum/100}">
|
|
|
+ <!-- 选择座位 -->
|
|
|
+ <div class="seat-list-box">
|
|
|
+ <!-- 座位排版 -->
|
|
|
+ <div id="seatbox-me" ref="seatbox" class="dialogss">
|
|
|
+ <div class="dialogss-box" :style="{width: width*(scaleNum/100) + 'px', margin: justifyContent ? 'auto' : 'unset'}">
|
|
|
+ <div
|
|
|
+ style="width: 100%;position: absolute;"
|
|
|
+ class="seat-box-class clearfix" v-if="seatMapList"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+
|
|
|
+ class="seat-item-class-box"
|
|
|
+ v-for="(item1, index1) in seatMapListKey"
|
|
|
+ :key="item1.key"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ class="seat-item-class"
|
|
|
+ :class="setSeatClass(item)"
|
|
|
+ v-for="(item, index) in seatMapList[item1.key]"
|
|
|
+ :style="{backgroundColor: item.color ? item.color : 'none'}"
|
|
|
+ @click.stop="seatClick(item)"
|
|
|
+ :key="index">
|
|
|
+ <p class="text-class">{{ item.status != 1 ? '不可售':(item.name ? item.name : '暂未命名') }}</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 5px; margin-left: 30px;display: flex;">
|
|
|
+ <div style="flex-shrink: 0;">
|
|
|
+ 已勾选:{{ seatSelectList.length }}个座位
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
<span slot="footer" class="dialog-footer" v-if="!detailsType">
|
|
|
- <el-button type="primary" @click="cancel">确定</el-button>
|
|
|
+ <el-button type="primary" @click="cancel">关闭</el-button>
|
|
|
</span>
|
|
|
|
|
|
<span slot="footer" class="dialog-footer" v-if="detailsType">
|
|
|
- <el-button type="primary" @click="passOpenEven" style="margin-right: 20px">通过</el-button>
|
|
|
- <el-button type="danger" @click="setRejectOpen" >驳回</el-button>
|
|
|
+ <!-- <el-button type="primary" @click="passOpenEven" style="margin-right: 20px">通过</el-button> -->
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ @click="submitPass"
|
|
|
+ :loading="loading"
|
|
|
+ >
|
|
|
+ <span v-if="loading">提交中...</span>
|
|
|
+ <span v-else>通过</span>
|
|
|
+ </el-button>
|
|
|
+ <el-button type="danger" @click="setRejectOpen" >驳回</el-button>
|
|
|
</span>
|
|
|
|
|
|
|
|
@@ -135,7 +200,7 @@
|
|
|
>
|
|
|
<!-- 座位排版 -->
|
|
|
<div class="dialog">
|
|
|
- <div class="seat-box-class clearfix" v-if="seatMapList && seatMapList.length > 0">
|
|
|
+ <div class="seat-box-class1 clearfix" v-if="seatMapList && seatMapList.length > 0">
|
|
|
<div class="seat-item-class" :class="item.isDisabled ? 'disabled-class' : item.isSelect ? 'select-class' : ''" v-for="(item, index) in seatMapList" @click.stop="seatClick(item)" :key="index">
|
|
|
<p class="text-class">{{item.name ? item.name : (item.rowNo + '排' + item.columnNo + '座')}}</p>
|
|
|
</div>
|
|
@@ -164,6 +229,7 @@
|
|
|
<script>
|
|
|
import { getSelectById, teamApplyAudit, querySeatList } from '@/api/team/applicationMr'
|
|
|
import { updateStatus } from '@/api/team/ticketMr'
|
|
|
+import { pageList as getSeatType } from '@/api/seatTypeMr/seatTypeMr'
|
|
|
export default {
|
|
|
name: "applicationDetails",
|
|
|
props: {
|
|
@@ -179,6 +245,7 @@ export default {
|
|
|
open: false,
|
|
|
rejectOpen: false,
|
|
|
passOpen: false,
|
|
|
+ initLoading: false,
|
|
|
loading: false,
|
|
|
passLoading: false,
|
|
|
form: {
|
|
@@ -196,13 +263,36 @@ export default {
|
|
|
status: 2
|
|
|
},
|
|
|
detailsType: false,
|
|
|
- seatMapList: [], // 座位集合
|
|
|
+ //seatMapList: [], // 座位集合
|
|
|
applyId: '', // 申请单id
|
|
|
applyMap: {},
|
|
|
- setList: [],
|
|
|
- seatSelectList: []
|
|
|
+ //setList: [],
|
|
|
+ seatSelectList: [],
|
|
|
+
|
|
|
+ merchantTheatreAuditoriumListS: [], // 演出厅
|
|
|
+ merchantPerformTimeListS: [], // 场次
|
|
|
+ querySeatListS: [], // 座位
|
|
|
+ goodsPageListS: [], // 票务
|
|
|
+ goodsPageListSAll: [], // 票务全部
|
|
|
+ setList: [],
|
|
|
+ seatMapList: {},
|
|
|
+ seatMapListKey: [], // key
|
|
|
+ seatSelectList: [],
|
|
|
+
|
|
|
+ lockOrUnLockLoading: false,
|
|
|
+
|
|
|
+ performId: '',// 剧目ID
|
|
|
+ scaleNum: 30,
|
|
|
+
|
|
|
+ width: 0,
|
|
|
+ justifyContent: false,
|
|
|
+ activeName: 'first',
|
|
|
+ seatTypeList: [],
|
|
|
};
|
|
|
},
|
|
|
+ created() {
|
|
|
+ this.getSeatTypeList()
|
|
|
+ },
|
|
|
methods: {
|
|
|
/**
|
|
|
* 打开弹框
|
|
@@ -211,11 +301,15 @@ export default {
|
|
|
* @returns {any}
|
|
|
*/
|
|
|
openDialog(title, obj, type) {
|
|
|
+ this.initLoading = true
|
|
|
this.open = true;
|
|
|
this.rejectOpen = false;
|
|
|
this.passOpen = false;
|
|
|
this.applyId = obj.id;
|
|
|
this.applyMap = obj;
|
|
|
+ this.querySeatListS = [];
|
|
|
+ this.setList = [];
|
|
|
+ this.seatSelectList = [];
|
|
|
if(type) {
|
|
|
this.detailsType = true
|
|
|
this.title = '审核'
|
|
@@ -226,12 +320,27 @@ export default {
|
|
|
this.getSelectByIdApi(obj);
|
|
|
},
|
|
|
/** 获取详情 */
|
|
|
- getSelectByIdApi(row) {
|
|
|
- const id = row.id
|
|
|
- getSelectById(id).then(response => {
|
|
|
+ async getSelectByIdApi(row) {
|
|
|
+ try {
|
|
|
+ const id = row.id
|
|
|
+ let res = await getSelectById(id)
|
|
|
this.details = {}
|
|
|
- this.details = response.data;
|
|
|
- });
|
|
|
+ this.details = res.data;
|
|
|
+ let res1 = await querySeatList({
|
|
|
+ auditoriumId: this.applyMap.auditoriumId,
|
|
|
+ //seatTypeId: this.applyMap.seatTypeId,
|
|
|
+ timeId: this.applyMap.performTimeId,
|
|
|
+ })
|
|
|
+ this.querySeatListS = res1.data;
|
|
|
+ this.setList = res1.data;
|
|
|
+ if(this.setList && this.setList.length > 0) {
|
|
|
+ this.setSeatMapListCopy(this.setList);
|
|
|
+ }
|
|
|
+ this.initLoading = false
|
|
|
+ } catch (error) {
|
|
|
+ this.initLoading = false
|
|
|
+ }
|
|
|
+
|
|
|
},
|
|
|
/** 获取座位信息 */
|
|
|
getSeatApi(row) {
|
|
@@ -281,7 +390,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
// 座位点击事件
|
|
|
- seatClick(row) {
|
|
|
+ seatClickCopy(row) {
|
|
|
if(row.isDisabled){
|
|
|
return false
|
|
|
}
|
|
@@ -303,9 +412,56 @@ export default {
|
|
|
return false
|
|
|
}
|
|
|
row.isSelect = !row.isSelect
|
|
|
- this.seatSelectList = this.seatMapList.filter(item => item.isSelect);
|
|
|
+ this.seatSelectList.push(JSON.parse(JSON.stringify(row)))
|
|
|
+ //this.seatSelectList = this.setList.filter(item => item.isSelect);
|
|
|
+ console.log("this.seatSelectList===",this.seatSelectList)
|
|
|
this.$forceUpdate()
|
|
|
},
|
|
|
+ seatClick(row) {
|
|
|
+ console.log(row)
|
|
|
+ if(row.occupyStatus == 0){
|
|
|
+ console.log("weqwrwerewrer")
|
|
|
+ this.$confirm('此座已被锁定,请先解锁', '提示', {
|
|
|
+ confirmButtonText: '关闭',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ //this.lockOrUnLockFun([row],1)
|
|
|
+ }).catch((error) => {
|
|
|
+ console.log("error====",error)
|
|
|
+ });
|
|
|
+ }else if(row.isDisabled || row.status == 2){
|
|
|
+ return false
|
|
|
+ }else {
|
|
|
+ if(this.applyMap.seatTypeId != row.seatTypeId){
|
|
|
+ this.$message.error('只能选同一类型得座位');
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if(this.seatSelectList.length >= this.details.viewersList.length ){
|
|
|
+ if(row.isSelect) {
|
|
|
+ let indexs = null;
|
|
|
+ this.seatSelectList.forEach((item, index) =>{
|
|
|
+ if(item.id == row.id){
|
|
|
+ indexs = index;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if(indexs != null) {
|
|
|
+ row.isSelect = !row.isSelect;
|
|
|
+ this.seatSelectList.splice(indexs, 1)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$message.error("观影人数限制" + this.details.viewersList.length + "人!");
|
|
|
+ }
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ row.isSelect = !row.isSelect
|
|
|
+ this.seatSelectList.push(JSON.parse(JSON.stringify(row)))
|
|
|
+ //this.seatSelectList = this.setList.filter(item => item.isSelect);
|
|
|
+ console.log("this.seatSelectList===",this.seatSelectList)
|
|
|
+ this.$forceUpdate()
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
// 审核通过
|
|
|
passOpenEven() {
|
|
|
this.passOpen = true;
|
|
@@ -346,12 +502,11 @@ export default {
|
|
|
// 审核通过 - 座位选择保存
|
|
|
submitPass() {
|
|
|
try {
|
|
|
- this.passLoading = true;
|
|
|
- setTimeout(() => {
|
|
|
- this.passLoading = false;
|
|
|
- }, 3000)
|
|
|
- let seatList = this.seatMapList.filter(item => item.isSelect);
|
|
|
- if(seatList && seatList.length > 0) {
|
|
|
+ // this.passLoading = true;
|
|
|
+ //let seatList = this.setList.filter(item => item.isSelect);
|
|
|
+ let seatList = this.seatSelectList
|
|
|
+ if(seatList && seatList.length > 0 && this.seatSelectList.length == this.details.viewersList.length ) {
|
|
|
+ this.passLoading = true;
|
|
|
let postMap = {
|
|
|
applyId: this.details.id || this.applyId,
|
|
|
status: 1,
|
|
@@ -388,6 +543,102 @@ export default {
|
|
|
this.$nextTick(()=>{
|
|
|
this.$refs.refRejectForm.clearValidate('errReason')
|
|
|
})
|
|
|
+ },
|
|
|
+
|
|
|
+ // 设置座位集合
|
|
|
+ setSeatMapListCopy(list) {
|
|
|
+ if(list && list.length > 0) {
|
|
|
+ let listCopy = {}
|
|
|
+ let lisyCopy1 = {}
|
|
|
+ let listNum = JSON.parse(JSON.stringify(this.seatTypeList))
|
|
|
+ listNum.forEach((item,index)=>{
|
|
|
+ listNum[index]['num'] = 0
|
|
|
+ })
|
|
|
+ list.forEach(item => {
|
|
|
+ item.isDisabled = (item.occupyStatus != null && (item.occupyStatus == 0 || item.occupyStatus == 1) ? true : false); // 座位是否已被选择
|
|
|
+ item.isSelect = this.setIsSelect(item);
|
|
|
+ if(item.rowNo){
|
|
|
+ listNum.forEach((item1,index)=>{
|
|
|
+ if(item1.id == item.seatTypeId && item.status ==1 && !item.occupyStatus) {
|
|
|
+ listNum[index]['num'] = listNum[index]['num'] + 1
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if(listCopy['my'+item.rowNo]){
|
|
|
+ listCopy['my'+item.rowNo].push(item)
|
|
|
+ }else {
|
|
|
+ listCopy['my'+item.rowNo] = [item]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.seatTypeList = JSON.parse(JSON.stringify(listNum))
|
|
|
+ let width = 0
|
|
|
+ let flog = 0
|
|
|
+ let seatMapListKey = []
|
|
|
+ Object.keys(listCopy).forEach((item)=>{
|
|
|
+ if(listCopy[item].length>flog) {
|
|
|
+ flog = listCopy[item].length
|
|
|
+ }
|
|
|
+ seatMapListKey.push({
|
|
|
+ key: item,
|
|
|
+ sort: Number(item.replace('my',''))
|
|
|
+ })
|
|
|
+ })
|
|
|
+ seatMapListKey.sort((a,b)=>{
|
|
|
+ return a.sort - b.sort
|
|
|
+ })
|
|
|
+ this.seatMapListKey = seatMapListKey
|
|
|
+ console.log("seatMapListKey=====",seatMapListKey)
|
|
|
+ this.width = 70*flog
|
|
|
+ this.$nextTick(()=>{
|
|
|
+ if(this.$refs.seatbox) {
|
|
|
+ var ele = document.getElementById('seatbox-me');
|
|
|
+ console.log(ele.getBoundingClientRect().width); // 100
|
|
|
+ if(this.width<ele.getBoundingClientRect().width) {
|
|
|
+ this.justifyContent = true
|
|
|
+ }else {
|
|
|
+ //this.justifyContent = false
|
|
|
+ this.justifyContent = true
|
|
|
+ }
|
|
|
+ //this.$refs.seatbox.scrollTo(this.width/4,0)
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ console.log("list====",listCopy)
|
|
|
+ this.seatMapList = JSON.parse(JSON.stringify(listCopy))
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setIsSelect(item){
|
|
|
+ if(!this.seatSelectList||this.seatSelectList.length==0){
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ let flog = false
|
|
|
+ this.seatSelectList.forEach((item1,index1)=>{
|
|
|
+ if(item.id == item1.id){
|
|
|
+ flog = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return flog
|
|
|
+ },
|
|
|
+ /** 获取座位类型 说明 */
|
|
|
+ getSeatTypeList() {
|
|
|
+ getSeatType({
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 999,
|
|
|
+ })
|
|
|
+ .then(response => {
|
|
|
+ this.seatTypeList = response.data.rows;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 座位状态 展示 */
|
|
|
+ setSeatClass(item){
|
|
|
+ let srt =
|
|
|
+ item.seatTypeId != this.applyMap.seatTypeId?'disabled-class':
|
|
|
+ item.occupyStatus == 0 ? 'occupy-status' :
|
|
|
+ item.occupyStatus == 1 ? 'occupy-status-no' :
|
|
|
+ item.isDisabled || item.status != 1 ? 'disabled-class' :
|
|
|
+ item.isSelect ? 'select-class' : ''
|
|
|
+ console.log("srt=====",srt)
|
|
|
+ return srt
|
|
|
}
|
|
|
},
|
|
|
};
|
|
@@ -395,12 +646,28 @@ export default {
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.dialog {
|
|
|
- padding: 0 30px;
|
|
|
- max-height: 65vh;
|
|
|
- overflow-y: auto;
|
|
|
+ width: 100%;
|
|
|
+ height: 70vh;
|
|
|
}
|
|
|
+
|
|
|
+.dialog-bbb {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ >div:first-child {
|
|
|
+ width: var(--widdd);
|
|
|
+ flex-shrink: 0;
|
|
|
+ overflow-y: auto;
|
|
|
+ padding: 0 0 10px 0;
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
+ .dialog-bbb_2 {
|
|
|
+ width: calc( 100% - var(--widdd) );
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
.dialog {
|
|
|
- padding: 0 30px;
|
|
|
.upload-btn {
|
|
|
width: 100px;
|
|
|
height: 100px;
|
|
@@ -428,7 +695,7 @@ export default {
|
|
|
.item-class{
|
|
|
margin-bottom: 20px;
|
|
|
}
|
|
|
- .seat-box-class{
|
|
|
+ .seat-box-class1{
|
|
|
width: 800px;
|
|
|
height: auto;
|
|
|
padding: 5px;
|
|
@@ -464,4 +731,229 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.dialog-bbb_2 {
|
|
|
+ .seat-tool-box {
|
|
|
+ height: 20px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ white-space: nowrap;
|
|
|
+ span{
|
|
|
+ flex-shrink: 0;
|
|
|
+ font-size: 12px;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+ .seat-tool-box-slider {
|
|
|
+ width: 100px;
|
|
|
+ margin-left: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .seat-box {
|
|
|
+ width: 100%;
|
|
|
+ height: calc( 100% - 50px );
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ position: relative;
|
|
|
+ .seat-list-box {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ .seat-select-box {
|
|
|
+ width: 200px;
|
|
|
+ height: 100%;
|
|
|
+ flex-shrink: 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding: 0 5px;
|
|
|
+ margin-left: 10px;
|
|
|
+ border: 1px solid #ccc;
|
|
|
+ border-radius: 10px;
|
|
|
+ .seat-select-info {
|
|
|
+ width: 100%;
|
|
|
+ height: calc( 100% - 60px );
|
|
|
+ overflow: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+ .seat-select-item {
|
|
|
+ border: 1px solid #ccc;
|
|
|
+ margin-bottom: 5px;
|
|
|
+ padding: 5px;
|
|
|
+ border-radius: 5px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 12px;
|
|
|
+ >div:first-child {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ span:first-child {
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ >div:last-child {
|
|
|
+ span:first-child {
|
|
|
+ color: #f56c6c;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .seat-select-color-item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 5px;
|
|
|
+ >span:first-child {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ flex-shrink: 0;
|
|
|
+ }
|
|
|
+ >span:last-child {
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 600;
|
|
|
+ margin-left: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .seat-list-box::before {
|
|
|
+ content: "舞台";
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ width: 300px;
|
|
|
+ height: 30px;
|
|
|
+ background-color: rgb(204, 204, 204,0.5);
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 600;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ border-radius: 0 0 20px 20px;
|
|
|
+ z-index: 99;
|
|
|
+ }
|
|
|
+
|
|
|
+ .dialogss {
|
|
|
+ padding: 30px 10px 10px;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
+ overflow: auto;
|
|
|
+ border-radius: 10px;
|
|
|
+ border: 1px solid #323333;
|
|
|
+
|
|
|
+ .dialogss-box {
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ .upload-btn {
|
|
|
+ width: 100px;
|
|
|
+ height: 100px;
|
|
|
+ background-color: #fbfdff;
|
|
|
+ border: dashed 1px #c0ccda;
|
|
|
+ border-radius: 5px;
|
|
|
+ i {
|
|
|
+ font-size: 30px;
|
|
|
+ margin-top: 20px;
|
|
|
+ }
|
|
|
+ &-text {
|
|
|
+ margin-top: -10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .avatar {
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .title-class{
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: black;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ margin-top: 20px;
|
|
|
+ }
|
|
|
+ .item-class{
|
|
|
+ margin-bottom: 20px;
|
|
|
+ }
|
|
|
+ .seat-box-class{
|
|
|
+ padding: 5px;
|
|
|
+ transform-origin: 50% 0;
|
|
|
+ transform: scale(var(--scaleNum));
|
|
|
+ box-sizing: border-box;
|
|
|
+ .disabled-class{
|
|
|
+ background-color: #aaabad;
|
|
|
+ user-select: none;
|
|
|
+ // pointer-events: none;
|
|
|
+ cursor: not-allowed !important;
|
|
|
+ }
|
|
|
+ .select-class{
|
|
|
+ //background-color: #e85353 !important;
|
|
|
+ border: 5px solid #1890ff !important;
|
|
|
+ // color: #eceaea !important;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ .occupy-status: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;
|
|
|
+ }
|
|
|
+ .occupy-status {
|
|
|
+ //pointer-events: none;
|
|
|
+ }
|
|
|
+ .occupy-status-no {
|
|
|
+ background-color: #f56c6c !important;
|
|
|
+ user-select: none;
|
|
|
+ // pointer-events: none;
|
|
|
+ cursor: not-allowed !important;
|
|
|
+ }
|
|
|
+ .seat-item-class-box {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ justify-content: center;
|
|
|
+ margin: auto 0;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ .seat-item-class{
|
|
|
+ flex-shrink: 0;
|
|
|
+ display: block;
|
|
|
+ float: left;
|
|
|
+ width: 60px;
|
|
|
+ height: 60px;
|
|
|
+ margin: 5px;
|
|
|
+ border: 1px solid #4c4d4d;
|
|
|
+ border-radius: 3px;
|
|
|
+ cursor: pointer;
|
|
|
+ position: relative;
|
|
|
+ user-select: none;
|
|
|
+ // transform-origin: 50% 50%;
|
|
|
+ // transform: scale(var(--scaleNum));
|
|
|
+ &:hover{
|
|
|
+ opacity: 0.6;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text-class{
|
|
|
+ font-size: 12px;
|
|
|
+ padding: 5px;
|
|
|
+ line-height: 16px;
|
|
|
+ margin: 0;
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
</style>
|