|
@@ -8,128 +8,178 @@
|
|
|
* @Copyright: Copyright (c) 2016~2023 by Sugar., All Rights Reserved.
|
|
|
-->
|
|
|
<template>
|
|
|
- <el-dialog
|
|
|
- title="订单详情"
|
|
|
- :visible.sync="open"
|
|
|
- width="80%"
|
|
|
- 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>{{ form.goodsName || ''}}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">订单号: <span>{{ form.id || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">购票人姓名: <span>{{ form.memberName || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">购票人手机号: <span>{{ form.memberMobile || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">购票人身份证号: <span>{{ form.memberCardId || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">剧名名称: <span>{{ form.performName || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">票务类型: <span>{{ form.seatTypeName || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">场次: <span>{{form.performDate}} {{ form.performTimeStart }} -- {{ form.performTimeEnd }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div style="display: flex;" class="grid-content bg-purple item-class">购票渠道: <span style="display: block;margin-left: 5px;"><dict-tag :options="dict.type.order_form_type" :value="form.source"/></span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12" v-if="form.sourceRemark">
|
|
|
- <div style="display: flex;" class="grid-content bg-purple item-class">来源备注: <span style="display: block;margin-left: 5px;"> {{ form.sourceRemark }} </span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12" v-if="form.orderIdOrQrCode">
|
|
|
- <div style="display: flex;" class="grid-content bg-purple item-class">核销码: <span style="display: block;margin-left: 5px;"><span>{{ form.orderIdOrQrCode }}</span></span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">购票数量: <span>{{ form.viewerNum || form.viewerNum == 0 ? form.viewerNum : '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <!-- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">支付总额: <span>¥{{ form.orderPrice || '' }}</span></div>
|
|
|
- </el-col> -->
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">应付金额: <span>¥{{ form.orderPrice || form.orderPrice == 0 ? form.orderPrice : '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">实付金额: <span>¥{{ form.realPrice || form.realPrice == 0 ? form.realPrice : '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">下单时间: <span>{{ form.createTime || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">优惠信息: <span>暂无</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class">支付时间: <span>{{ form.payTime || '' }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class" style="display: flex;">支付方式: <span style="display: block;margin-left: 5px;"><dict-tag :options="dict.type.pay_way_type" :value="form.payWay"/></span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class" style="display: flex;">订单状态: <span style="display: block;margin-left: 5px;"><dict-tag :options="dict.type.order_status_type" :value="form.status"/></span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class" style="display: flex;">订单备注: <span style="display: block;margin-left: 5px;">{{ form.remark }}</span></div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <div class="grid-content bg-purple item-class" style="display: flex;">是否成功开票: <span style="display: block;margin-left: 5px;">{{ form.ifSuccessInvoice=='1'?'是':'否' }}</span></div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
-
|
|
|
- <!-- 观影人员信息 -->
|
|
|
- <div class="title-class">观影人员信息</div>
|
|
|
- <el-row>
|
|
|
- <el-col :span="24">
|
|
|
- <el-table ref="tables" :data="form.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="idcard" />
|
|
|
- <el-table-column label="核销状态" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <dict-tag :options="dict.type.order_status_type" :value="scope.row.status"/>
|
|
|
- <!-- <el-tag v-if="scope.row.qrcodeStatus == 0">未使用</el-tag>
|
|
|
- <el-tag v-if="scope.row.qrcodeStatus == 1" type="success">已使用</el-tag>
|
|
|
- <el-tag v-if="scope.row.qrcodeStatus == 2" type="info">过期</el-tag> -->
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="核销时间" align="center" prop="qrcodeUseTime" />
|
|
|
- <el-table-column label="座位信息" align="center" prop="seatName" />
|
|
|
- <el-table-column label="人员类别" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <dict-tag :options="dict.type.personnel_type" :value="scope.row.identity"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="备注" align="center" prop="remark" />
|
|
|
- </el-table>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
+ <el-dialog title="订单详情" :visible.sync="open" width="95%" append-to-body :close-on-click-modal="false" @close="cancel">
|
|
|
+ <div v-loading="loading" class="dialog dialog-bbb" 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>{{ form.goodsName || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">订单号: <span>{{ form.id || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">购票人姓名: <span>{{ form.memberName || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">购票人手机号: <span>{{ form.memberMobile || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">购票人身份证号: <span>{{ form.memberCardId || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">剧名名称: <span>{{ form.performName || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">票务类型: <span>{{ form.seatTypeName || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">场次: <span>{{ form.performDate }} {{ form.performTimeStart }} --
|
|
|
+ {{ form.performTimeEnd }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div style="display: flex;" class="grid-content bg-purple item-class">购票渠道: <span
|
|
|
+ style="display: block;margin-left: 5px;"><dict-tag :options="dict.type.order_form_type"
|
|
|
+ :value="form.source" /></span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12" v-if="form.sourceRemark">
|
|
|
+ <div style="display: flex;" class="grid-content bg-purple item-class">来源备注: <span
|
|
|
+ style="display: block;margin-left: 5px;"> {{ form.sourceRemark }} </span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12" v-if="form.orderIdOrQrCode">
|
|
|
+ <div style="display: flex;" class="grid-content bg-purple item-class">核销码: <span
|
|
|
+ style="display: block;margin-left: 5px;"><span>{{ form.orderIdOrQrCode }}</span></span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">购票数量: <span>{{ form.viewerNum || form.viewerNum == 0 ?
|
|
|
+ form.viewerNum : '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <!-- <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">支付总额: <span>¥{{ form.orderPrice || '' }}</span></div>
|
|
|
+ </el-col> -->
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">应付金额: <span>¥{{ form.orderPrice || form.orderPrice == 0 ?
|
|
|
+ form.orderPrice : '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">实付金额: <span>¥{{ form.realPrice || form.realPrice == 0 ?
|
|
|
+ form.realPrice : '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">下单时间: <span>{{ form.createTime || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">优惠信息: <span>暂无</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class">支付时间: <span>{{ form.payTime || '' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class" style="display: flex;">支付方式: <span
|
|
|
+ style="display: block;margin-left: 5px;"><dict-tag :options="dict.type.pay_way_type"
|
|
|
+ :value="form.payWay" /></span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class" style="display: flex;">订单状态: <span
|
|
|
+ style="display: block;margin-left: 5px;"><dict-tag :options="dict.type.order_status_type"
|
|
|
+ :value="form.status" /></span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class" style="display: flex;">订单备注: <span
|
|
|
+ style="display: block;margin-left: 5px;">{{ form.remark }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="grid-content bg-purple item-class" style="display: flex;">是否成功开票: <span
|
|
|
+ style="display: block;margin-left: 5px;">{{ form.ifSuccessInvoice == '1' ? '是' : '否' }}</span></div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
|
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
- <el-button type="primary" @click="cancel">确定</el-button>
|
|
|
- </span>
|
|
|
+ <!-- 观影人员信息 -->
|
|
|
+ <div class="title-class">观影人员信息</div>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-table ref="tables" :data="form.viewersList" border size="mini">
|
|
|
+ <el-table-column label="序号" align="center" type="index" width="50"></el-table-column>
|
|
|
+ <el-table-column label="姓名" align="center" prop="name" />
|
|
|
+ <el-table-column label="身份证号码" align="center" prop="idcard" />
|
|
|
+ <el-table-column label="核销状态" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <dict-tag :options="dict.type.order_status_type" :value="scope.row.status" />
|
|
|
+ <!-- <el-tag v-if="scope.row.qrcodeStatus == 0">未使用</el-tag>
|
|
|
+ <el-tag v-if="scope.row.qrcodeStatus == 1" type="success">已使用</el-tag>
|
|
|
+ <el-tag v-if="scope.row.qrcodeStatus == 2" type="info">过期</el-tag> -->
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="核销时间" align="center" prop="qrcodeUseTime" />
|
|
|
+ <el-table-column label="座位信息" align="center" prop="seatName" />
|
|
|
+ <el-table-column label="人员类别" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <dict-tag :options="dict.type.personnel_type" :value="scope.row.identity" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="备注" align="center" prop="remark" />
|
|
|
+ </el-table>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div class="dialog-bbb_2">
|
|
|
+ <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>
|
|
|
</el-dialog>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import { getSelectById } from '@/api/order/orderMr'
|
|
|
+import { querySeatList } from '@/api/team/applicationMr'
|
|
|
+import { pageList as getSeatType } from '@/api/seatTypeMr/seatTypeMr'
|
|
|
export default {
|
|
|
name: "detailsDia",
|
|
|
- dicts: ['order_form_type','order_status_type','pay_way_type','personnel_type'],
|
|
|
+ dicts: ['order_form_type', 'order_status_type', 'pay_way_type', 'personnel_type'],
|
|
|
data() {
|
|
|
return {
|
|
|
title: "编辑",
|
|
@@ -142,9 +192,33 @@ export default {
|
|
|
performerVisible: false,
|
|
|
performerList: [],
|
|
|
refund: false,
|
|
|
- dataList: []
|
|
|
+ dataList: [],
|
|
|
+
|
|
|
+
|
|
|
+ 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: {
|
|
|
/**
|
|
|
* 打开弹框
|
|
@@ -158,12 +232,26 @@ export default {
|
|
|
this.getSelectByIdApi(obj);
|
|
|
},
|
|
|
/** 获取详情 */
|
|
|
- getSelectByIdApi(row) {
|
|
|
- const id = row.id
|
|
|
- getSelectById(id).then(response => {
|
|
|
- this.$set(this,"form",response.data)
|
|
|
- //this.form = response.data;
|
|
|
- });
|
|
|
+ async getSelectByIdApi(row) {
|
|
|
+ try {
|
|
|
+ const id = row.id
|
|
|
+ let res = await getSelectById(id)
|
|
|
+ this.seatSelectList = res.data.viewersList
|
|
|
+ this.$set(this, "form", res.data)
|
|
|
+ let res1 = await querySeatList({
|
|
|
+ auditoriumId: res.data.auditoriumId,
|
|
|
+ seatTypeId: res.data.seatTypeId,
|
|
|
+ timeId: res.data.performTimeId,
|
|
|
+ })
|
|
|
+ this.querySeatListS = res1.data;
|
|
|
+ this.setList = res1.data;
|
|
|
+ if (this.setList && this.setList.length > 0) {
|
|
|
+ this.setSeatMapListCopy(this.setList);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
},
|
|
|
/**
|
|
|
* 关闭弹框
|
|
@@ -173,44 +261,408 @@ export default {
|
|
|
cancel() {
|
|
|
this.open = false;
|
|
|
},
|
|
|
+ // 设置座位集合
|
|
|
+ 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.seatTypeId) {
|
|
|
+ flog = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return flog
|
|
|
+ },
|
|
|
+ /** 获取座位类型 说明 */
|
|
|
+ getSeatTypeList() {
|
|
|
+ getSeatType({
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 999,
|
|
|
+ })
|
|
|
+ .then(response => {
|
|
|
+ this.seatTypeList = response.data.rows;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 座位状态 展示 */
|
|
|
+ setSeatClass(item){
|
|
|
+ let srt =
|
|
|
+ this.setIsSelect(item)?'occupy-status-no':
|
|
|
+ item.occupyStatus == 0 ? 'occupy-status' :
|
|
|
+ item.occupyStatus == 1 ? 'occupy-status-no' :
|
|
|
+ item.isDisabled || item.status != 1 ? 'disabled-class' :
|
|
|
+ item.isSelect ? 'select-class' : ''
|
|
|
+ return srt
|
|
|
+ }
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.dialog {
|
|
|
- padding: 0 30px;
|
|
|
- max-height: 65vh;
|
|
|
+ width: 100%;
|
|
|
+ height: 70vh;
|
|
|
overflow-y: auto;
|
|
|
}
|
|
|
+
|
|
|
.dialog {
|
|
|
- padding: 0 30px;
|
|
|
.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{
|
|
|
+
|
|
|
+ .title-class {
|
|
|
font-size: 16px;
|
|
|
font-weight: bold;
|
|
|
color: black;
|
|
|
margin-bottom: 20px;
|
|
|
margin-top: 20px;
|
|
|
}
|
|
|
- .item-class{
|
|
|
+
|
|
|
+ .item-class {
|
|
|
margin-bottom: 20px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.dialog-bbb {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ --widdd: 700px;
|
|
|
+
|
|
|
+ >div:first-child {
|
|
|
+ width: var(--widdd);
|
|
|
+ flex-shrink: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .dialog-bbb_2 {
|
|
|
+ width: calc(100% - var(--widdd));
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.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>
|