Browse Source

1. 优化

MONSTER-ygh 1 year ago
parent
commit
40a29a878d

+ 18 - 0
src/api/financeMr/InvoiceRecords.js

@@ -18,3 +18,21 @@ export function downOrderListXls(params) {
     params
   });
 }
+
+//  冲红
+export function orderInvoiceRed(params) {
+  return request({
+    url: '/order/orderInvoice/red',
+    method: 'post',
+    data: params
+  });
+}
+
+//  详情
+export function getInvoiceDetail(params) {
+  return request({
+    url: '/order/orderInvoice/getInvoiceDetail',
+    method: 'get',
+    params
+  });
+}

+ 11 - 1
src/views/finance/InvoiceRecords/dialog/details.vue

@@ -83,6 +83,7 @@
 </template>
 
 <script>
+import { getInvoiceDetail } from '@/api/financeMr/InvoiceRecords'
 export default {
   name: "detailsDia",
   dicts: ['Invoicing_type','lookup_type'],
@@ -109,7 +110,16 @@ export default {
      */
     openDialog(title, obj, type) {
       this.open = true;
-      this.form = obj;
+      this.getInvoiceDetailApi(obj);
+    },
+    /** 获取详情 */
+    getInvoiceDetailApi(row) {
+      const id = row.orderId
+      getInvoiceDetail({
+        orderId: row.orderId
+      }).then(response => {
+        this.form = response.data;
+      });
     },
     /**
      * 关闭弹框

+ 0 - 218
src/views/finance/InvoiceRecords/dialog/orderDetails.vue

@@ -1,218 +0,0 @@
-<!--
- * @Description: 详情弹框
- * @Author: Sugar.
- * @Date: 2023-11-24 13:55:00
- * @LastEditors: Sugar.
- * @LastEditTime: 2023-11-24 13:55:00
- * @FilePath: \cattle_webui\src\views\finance\refundMr\dialog\orderDetails.vue
- * @Copyright: Copyright (c) 2016~2023 by Sugar., All Rights Reserved.
--->
-<template>
-  <el-dialog
-    title="订单详情"
-    :visible.sync="open"
-    width="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>{{ 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 class="grid-content bg-purple item-class">购票渠道: <span>{{ sourceList[form.source] || '' }}</span></div> -->
-          <div class="grid-content bg-purple item-class" style="display: flex;">购票渠道: <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">
-          <div class="grid-content bg-purple item-class">购票数量: <span>{{ 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.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">支付方式: <span>{{ payList[form.payStatus] || '' }}</span></div> -->
-          <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">订单状态: <span>{{ statusList[form.status] || '' }}</span></div> -->
-          <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-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">
-                <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>
-        </el-col>
-      </el-row>
-    </div>
-
-    <span slot="footer" class="dialog-footer">
-      <el-button type="primary" @click="cancel">确定</el-button>
-    </span>
-
-  </el-dialog>
-</template>
-
-<script>
-import { getSelectById } from '@/api/order/orderMr'
-export default {
-  name: "orderDetails",
-  dicts: ['order_form_type','order_status_type','pay_way_type'],
-  data() {
-    return {
-      title: "编辑",
-      model: "EDIT",
-      open: false,
-      loading: false,
-      form: {
-        id: undefined,
-      },
-      performerVisible: false,
-      performerList: [],
-      refund: false,
-      statusList: {
-        0: '待支付',
-        2: '超时取消',
-        3: '待使用',
-        4: '退款中',
-        5: '己退款',
-        6: '退款失败',
-        7: '己使用',
-        8: '己超期',
-        9: '关闭',
-      },
-      payList: {
-        0: '未支付',
-        1: '已支付',
-        2: '支付中',
-        3: '支付失败',
-        4: '支付退款',
-      },
-      sourceList: {
-        1: '小程序',
-        2: '公众号',
-        3: '美团',
-        4: '携程',
-        5: '团购',
-      },
-      dataList: []
-    };
-  },
-  methods: {
-    /**
-     * 打开弹框
-     * @date 2023-11-22
-     * @param {any} obj
-     * @returns {any}
-     */
-    openDialog(title, obj, type) {
-      this.open = true;
-      this.getSelectByIdApi(obj);
-    },
-    /** 获取详情 */
-    getSelectByIdApi(row) {
-      const id = row.orderId
-      getSelectById(id).then(response => {
-        this.form = response.data;
-
-      });
-    },
-    /**
-     * 关闭弹框
-     * @date 2023-11-22
-     * @returns {any}
-     */
-    cancel() {
-      this.open = false;
-    },
-  },
-};
-</script>
-
-<style lang="scss" scoped>
-.dialog {
-  padding: 0 30px;
-  max-height: 65vh;
-  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{
-    font-size: 16px;
-    font-weight: bold;
-    color: black;
-    margin-bottom: 20px;
-    margin-top: 20px;
-  }
-  .item-class{
-    margin-bottom: 20px;
-  }
-}
-</style>

+ 19 - 7
src/views/finance/InvoiceRecords/index.vue

@@ -114,7 +114,7 @@
 
 <script>
 
-import { pageList } from '@/api/financeMr/InvoiceRecords'
+import { pageList,orderInvoiceRed } from '@/api/financeMr/InvoiceRecords'
 import detailsDia from "./dialog/details.vue";
 export default {
   name: "InvoiceRecords",
@@ -188,16 +188,28 @@ export default {
     openDetails(row, type) {
       this.$refs["detailsDia"].openDialog("详情", row, type);
     },
-    openRedBlood(){
+    openRedBlood(row){
       this.$confirm('您即将进行冲红操作,是否继续?', '提示', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'warning'
-        }).then(() => {
-          this.$message({
-            type: 'success',
-            message: '冲红成功!'
-          });
+        }).then(async () => {
+          try {
+            let res = await orderInvoiceRed({
+              orderId: row.orderId
+            })
+            if(res.code == 200){
+              this.$message({
+                type: 'success',
+                message: '冲红成功!'
+              });
+            }else {
+              this.$message.error(res.msg);
+            }
+          } catch (error) {
+            this.$message.error('冲红失败!');
+          }
+          
         }).catch(() => {
           this.$message({
             type: 'info',

+ 6 - 6
src/views/venue/performanceHallMr/dialog/seatTemplateEdit.vue

@@ -135,12 +135,12 @@ export default {
       getSelectById(id).then(response => {
         const dataList = response.data;
         this.$nextTick(() =>{
-          dataList.forEach(item => {
-            if(item.status == 2){
-              item.color = '#7d7d7e';
-            }
-            this.$set(this.colSeatMap, item.sortId + '_', item);
-          })
+          // dataList.forEach(item => {
+          //   if(item.status == 2){
+          //     item.color = '#7d7d7e';
+          //   }
+          //   this.$set(this.colSeatMap, item.sortId + '_', item);
+          // })
           this.$refs.seatManagementTable.initData(row,dataList,'edit')
         })
       });

+ 2 - 2
src/views/venue/performanceHallMr/index.vue

@@ -130,8 +130,8 @@
 <script>
 
 import { merchantPageList, deleteById } from '@/api/performanceHallMr/performanceHallMr'
-import addAndEdit from "./dialog/addAndEdit.vue";
-//import seatTemplateEdit from "./dialog/seatTemplateEdit";
+import addAndEdit from "./dialog/addAndEdit";
+// import seatTemplateEdit from "./dialog/seatTemplateEdit";
 import seatTemplateEdit from "./dialog/seatTemplateEditOld";
 import programmeAddAndEdit from "./dialog/programmeAddAndEdit";
 

+ 168 - 0
src/views/venue/performanceHallMr/mixins/selectList.js

@@ -0,0 +1,168 @@
+export default {
+    data() {
+        return {
+            
+        }
+    },
+    methods: {
+        /**  当前选择  开始   */
+        /**  多选  */
+        dragSelectChange(e){
+            console.log("e===",e)
+            if(e && e.div) {
+                let  list = JSON.parse(JSON.stringify(e.div))
+                this.selectList = [...new Set(list)]
+                console.log("e===",this.selectList)
+                if(this.activeName=='select'){
+                    this.addSelectTabelList()
+                }
+            }
+            
+        },
+        dragLostItemChange(){},
+        reSelect() {
+
+        },
+        addSelectTabelList(){
+            if(this.selectList && this.selectList.length > 0) {
+                let listTabel = []
+                for(let i=0;i<this.selectList.length;i++){
+                    for(let j=0;j<this.tableDataAll.length;j++){
+
+                        if(this.selectList[i] == this.tableDataAll[j].styleCss.id){
+                            listTabel.push({
+                                ...this.tableDataAll[j],
+                            })
+                            break;
+                        }    
+                    }
+                }
+                console.log("listTabel=====",listTabel)
+                this.selectTabelList = JSON.parse(JSON.stringify(listTabel))
+            }else { 
+                this.selectTabelList = []
+            }
+        },
+        //  清除已选
+        delSelectTabelList(){
+            this.selectList = []
+            this.selectTabelList = []
+        },
+        /**  当前选择  结束   */
+
+        /**  批量修改   */
+
+        // 批量禁用
+        selectBatchDisable() {
+
+        },
+        //批量修改座位类型 
+        selectBatchSetaTypeFun() {
+            let color = ''
+            let seatLabel = ''
+            let listTabel = JSON.parse(JSON.stringify(this.tableDataAll))
+            this.seatTypeList.forEach((item,index)=>{
+                if(this.formAll.seatTypeId == item.id) {
+                    color = item.color
+                    seatLabel = item.name 
+                }
+            })
+            for(let i=0;i<this.selectTabelList.length;i++){
+                for(let j=0;j<this.tableDataAll.length;j++){
+                    if(this.selectTabelList[i].id == this.tableDataAll[j].id){
+                        listTabel[j] = {
+                            ...this.tableDataAll[j],
+                            seatLabel: seatLabel,
+                            color: color,// 座位类型对应的颜色
+                            seatTypeId: this.formAll.seatTypeId,
+                        }
+                        break;
+                    }    
+                }
+            }
+            this.tableDataAll = JSON.parse(JSON.stringify(listTabel))
+            console.log("this.tableDataAll=====",this.tableDataAll)
+            // this.batchTableList = JSON.parse(JSON.stringify(this.tableDataAll))
+            this.formDialogVisible = false
+            this.dataProcess()
+            this.addSelectTabelList()
+        },  
+        // 批量修改名称
+        selectBatchSetaNameFun() {
+            if(this.formAll.seatWay == 1){ // 相同的
+                let listTabel = JSON.parse(JSON.stringify(this.tableDataAll))
+                for(let i=0;i<this.selectTabelList.length;i++){
+                    for(let j=0;j<this.tableDataAll.length;j++){
+                        if(this.selectTabelList[i].id == this.tableDataAll[j].id){
+                            listTabel[j] = {
+                                ...this.tableDataAll[j],
+                                name: this.formAll.name
+                            }
+                            break;
+                        }    
+                    }
+                }
+                this.tableDataAll = JSON.parse(JSON.stringify(listTabel))
+            }else if(this.formAll.seatWay == 2){
+                let name = (this.formAll.name1?this.formAll.name1:'') + '${row}' + (this.formAll.name?this.formAll.name:'') + '${col}' + (this.formAll.name2?this.formAll.name2:'')
+                let listTabel = JSON.parse(JSON.stringify(this.tableDataAll))
+                for(let i=0;i<this.selectTabelList.length;i++){
+                    for(let j=0;j<this.tableDataAll.length;j++){
+                        if(this.selectTabelList[i].id == this.tableDataAll[j].id){
+                            listTabel[j] = {
+                                ...this.tableDataAll[j],
+                                name: name.replace('${row}',this.tableDataAll[j].rowNo).replace('${col}',this.tableDataAll[j].columnNo)
+                            }
+                            break;
+                        }    
+                    }
+                }
+                this.tableDataAll = JSON.parse(JSON.stringify(listTabel))
+            }
+            this.formDialogVisible = false
+            this.dataProcess()
+            this.addSelectTabelList()
+        },
+        // 批量修改优先级
+        selectBatchSetaPriorityFun(){
+            if(this.formAll.seatPriorityWay == 1){
+                let listTabel = JSON.parse(JSON.stringify(this.tableDataAll))
+                for(let i=0;i<this.selectTabelList.length;i++){
+                    for(let j=0;j<this.tableDataAll.length;j++){
+                        if(this.selectTabelList[i].id == this.tableDataAll[j].id){
+                            listTabel[j] = {
+                                ...this.tableDataAll[j],
+                                priority: this.formAll.setaPriorityNum
+                            }
+                            break;
+                        }    
+                    }
+                }
+                this.tableDataAll = JSON.parse(JSON.stringify(listTabel))
+            }else{
+                let listTabel = JSON.parse(JSON.stringify(this.tableDataAll))
+                let num = Number(this.formAll.setaPriorityNum)
+                for(let i=0;i<this.selectTabelList.length;i++){
+                    for(let j=0;j<this.tableDataAll.length;j++){
+                        if(this.selectTabelList[i].id == this.tableDataAll[j].id){
+                            listTabel[j] = {
+                                ...this.tableDataAll[j],
+                                priority: num
+                            }
+                            if(this.formAll.seatPriorityWay == 2){
+                                num = num + 1
+                            }else if(this.formAll.seatPriorityWay == 3){
+                                num = num - 1
+                            }
+                            break;
+                        }    
+                    }
+                }
+                this.tableDataAll = JSON.parse(JSON.stringify(listTabel))
+            }
+            this.formDialogVisible = false
+            this.dataProcess()
+            this.addSelectTabelList()
+        },
+    },
+}

+ 377 - 222
src/views/venue/performanceHallMr/model/seatManagementTable copy.vue

@@ -1,14 +1,20 @@
 <template>
     <div class="sm">
-        <div style="width: 1300px;">
+        <div class="sm-box-top-tool">
             <div style="display: flex;align-items: center;">
                 <span style="margin-right: 5px;font-size: 14px;">放大/缩小:</span> 
                 <div style="width: 100px;">
-                    <el-slider input-size="mini" v-model="whNum" :min="16" :max="60"></el-slider>
+                    <el-slider input-size="mini" v-model="whNum" :min="16" :max="100"></el-slider>
                 </div>
             </div>
-            <div>
-
+            <div class="sm-box-top-tool-legend">
+                <div 
+                :key="item.id" 
+                v-for="(item,index) in seatTypeList"
+                >
+                    <span :style="{backgroundColor: item.color}"></span>
+                    <span :style="{color: item.color}">{{ item.name }}</span>    
+                </div>
             </div>
         </div>
         <div class="sm-box">
@@ -27,8 +33,11 @@
                     row-key="id"
                     class="exchange_table"
                     :style="{
-                        '--row-w': whNum+'px',
-                        '--row-h': whNum+'px',
+                        '--row-scale': whNum/100,
+                        '--row-w': (width*(whNum/100))+'px',
+                        '--row-h':  (width*(whNum/100))+'px',
+                        '--row-w-i': width+'px',
+                        '--row-h-i':  height+'px',
                     }"
                     :data-source="ranking_goods"
                     :cell-class-name="tableCellClassName"
@@ -50,7 +59,7 @@
                         v-for="(item,index) in tableHeader"
                         :prop="item.key"
                         :label="item.title"
-                        :width="((whNum+7.5)*item.length)+'px'"
+                        :width="((width*(whNum/100)+7.5)*item.length)+'px'"
                         align="center"
                         >
                         <template slot-scope="scope">
@@ -58,14 +67,16 @@
                                 <div 
                                 class="row-item"
                                 v-for="(item1,index1) in scope.row[item.key]" 
-                                :key="item1.style.id"
+                                :key="item1.styleCss.id"
                                 dragSelectType="div"
-                                :dragSelectId="item1.style.id"
+                                :dragSelectId="item1.styleCss.id"
                                 :style="{backgroundColor: item1.delFlag !=0?'#ccc':item1.color}"
                                 >
-                                    <i style="line-height: 15px;">{{ item1.columnNo }}</i>
-                                    <i style="line-height: 15px;">{{ item1.name }}</i>
-                                    <i style="line-height: 15px;">vip</i>
+                                    <div>
+                                        <i style="line-height: 15px;">{{ item1.columnNo }}</i>
+                                        <i style="line-height: 15px;">{{ item1.name }}</i>
+                                        <i style="line-height: 15px;white-space: nowrap;">{{ item1.styleCss && item1.styleCss.sort }}</i>
+                                    </div>   
                                 </div>
                             </div>
                         </template>
@@ -88,11 +99,13 @@
                 v-if="activeName == 'first'"
                 class="qu-first-box">
                     <div class="qu-first-form">
-                        <el-form :model="ruleForm" size="mini" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+                        <el-form :model="ruleForm" size="mini" :rules="rules" ref="ruleFormRegion" label-width="110px" class="demo-ruleForm">
                             <el-form-item label="座位总排数">
                                 <el-input v-model="rowAll">
                                     <el-button slot="append" @click="createTableList">创建排数</el-button>
                                 </el-input>
+                            </el-form-item><el-form-item label="单排最大座位数">
+                                <span>{{ colsAll }}</span>
                             </el-form-item>
                             <el-form-item label="区域名称" prop="name">
                                 <el-input v-model="ruleForm.name"></el-input>
@@ -105,8 +118,8 @@
                                 </el-select>
                             </el-form-item>
                             <el-form-item>
-                                <el-button size="mini" type="primary" @click="submitForm('ruleForm')">创建区域</el-button>
-                                <el-button size="mini" @click="resetForm('ruleForm')">重置</el-button>
+                                <el-button size="mini" type="primary" @click="submitForm('ruleFormRegion')">创建区域</el-button>
+                                <el-button size="mini" @click="resetForm('ruleFormRegion')">重置</el-button>
                             </el-form-item>
                         </el-form>
                     </div>
@@ -150,10 +163,17 @@
                                     <el-radio :label="2">批量</el-radio>
                                 </el-radio-group>
                             </el-form-item>
+                            <el-form-item label="座位号" prop="seatParity">
+                                <el-radio-group v-model="ruleForm1.seatParity">
+                                    <el-radio :label="1">奇偶列</el-radio>
+                                    <el-radio :label="2">奇数列</el-radio>
+                                    <el-radio :label="3">偶数列</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
                             <el-form-item label="座位类型" prop="seatTypeId">
                                 <el-select 
                                 v-model="ruleForm1.seatTypeId"
-                                placeholder="请选择座位排练">
+                                placeholder="请选择座位类型">
                                     <el-option 
                                     v-for="(item,index) in seatTypeList"
                                     :key="item.id"
@@ -239,6 +259,7 @@
                     </div>
                     <div class="qu-batch-tool">
                         <el-button type="primary" size="mini" @click="openFormDialogVisible">修改区域</el-button>
+                        <el-button type="primary" size="mini" @click="openBatchSetaType">座位类型</el-button>
                         <el-button type="danger" size="mini" @click="batchDisable">批量禁用</el-button>
                         
                     </div>
@@ -259,12 +280,18 @@
                             prop="name"
                             align="center"
                             label="名称">
+                                <template slot-scope="scope">
+                                    <div>
+                                        <span>{{ scope.row.name ? scope.row.name : '暂未命名' }}</span>
+                                        <span>({{ scope.row.rowNo}}-{{ scope.row.columnNo}})</span>
+                                    </div> 
+                                </template>
                             </el-table-column>
                             <el-table-column
                             align="center"
                             label="区域">
                                 <template slot-scope="scope">
-                                    <span>{{ scope.row.style && scope.row.style.keyLabel }}</span>
+                                    <span>{{ scope.row.styleCss && scope.row.styleCss.keyLabel ? scope.row.styleCss.keyLabel : '暂未分区' }}</span>
                                 </template>
                             </el-table-column>
                         </el-table>
@@ -301,7 +328,7 @@
                 <div v-if="formAllType=='bindingregion'">
                     <el-form-item label="区域" prop="status">
                         <div style="display: flex;">
-                            <el-select v-model="queryParams.status" placeholder="区域" clearable>
+                            <el-select v-model="formAll.status" placeholder="区域" clearable>
                                 <el-option
                                     v-for="item in tableHeader"
                                     :key="item.key"
@@ -309,11 +336,22 @@
                                     :value="item.key"
                                 />
                             </el-select>
-                            <el-button style="margin-left: 5px;" type="primary" size="mini" @click="handleQuery">搜索</el-button>
-                            <el-button size="mini" @click="resetQuery">重置</el-button>
                         </div>
                     </el-form-item>
                 </div>
+                <div v-if="formAllType=='batchSetaType'">
+                    <el-form-item label="座位类型" prop="seatTypeId">
+                        <el-select 
+                        v-model="formAll.seatTypeId"
+                        placeholder="请选择座位类型">
+                            <el-option 
+                            v-for="(item,index) in seatTypeList"
+                            :key="item.id"
+                            :label="item.name" 
+                            :value="item.id"></el-option>
+                        </el-select>
+                    </el-form-item>
+                </div>
             </el-form>
             <span slot="footer" class="dialog-footer">
                 <el-button @click="formDialogVisible = false">取 消</el-button>
@@ -327,6 +365,7 @@
 <script>
 import Sortable from "sortablejs";
 import dragSelect from 'ty-drag-select';
+import { pageList as getSeatTypeList } from '@/api/seatTypeMr/seatTypeMr'
 export default {
     name: 'sysIndex',
     components: {},
@@ -334,133 +373,16 @@ export default {
         return {
             // 页面渲染的数据
             seatList: [],
-            seatTypeList: [
-                {
-                    "id": "899466154989936640",
-                    "createBy": "admin",
-                    "createTime": "2023-12-26 11:24:13",
-                    "updateBy": "admin",
-                    "updateTime": "2023-12-26 11:24:13",
-                    "delFlag": 0,
-                    "name": "贵宾席-OTA测试",
-                    "color": "#EB3286"
-                },
-                {
-                    "id": "899466065307328512",
-                    "createBy": "admin",
-                    "createTime": "2023-12-26 11:23:51",
-                    "updateBy": "admin",
-                    "updateTime": "2023-12-26 11:23:51",
-                    "delFlag": 0,
-                    "name": "普通席-OTA测试",
-                    "color": "#AE3BE7"
-                },
-                {
-                    "id": "898175951457316864",
-                    "createBy": "admin",
-                    "createTime": "2023-12-22 21:57:24",
-                    "updateBy": "admin",
-                    "updateTime": "2023-12-22 21:57:24",
-                    "delFlag": 0,
-                    "name": "VIP票",
-                    "color": "#FF0000"
-                },
-                {
-                    "id": "898175913469505536",
-                    "createBy": "admin",
-                    "createTime": "2023-12-22 21:57:15",
-                    "updateBy": "admin",
-                    "updateTime": "2023-12-22 21:57:15",
-                    "delFlag": 0,
-                    "name": "贵宾票",
-                    "color": "#FFD000"
-                },
-                {
-                    "id": "898175825946963968",
-                    "createBy": "admin",
-                    "createTime": "2023-12-22 21:56:54",
-                    "updateBy": "admin",
-                    "updateTime": "2023-12-22 21:56:54",
-                    "delFlag": 0,
-                    "name": "普通票",
-                    "color": "#0BB8B8"
-                },
-                {
-                    "id": "898175718375649280",
-                    "createBy": "admin",
-                    "createTime": "2023-12-22 21:56:29",
-                    "updateBy": "admin",
-                    "updateTime": "2023-12-26 11:23:02",
-                    "delFlag": 0,
-                    "name": "普通座位-测试",
-                    "color": "#DE5421"
-                },
-                {
-                    "id": "898175647802290176",
-                    "createBy": "admin",
-                    "createTime": "2023-12-22 21:56:12",
-                    "updateBy": "admin",
-                    "updateTime": "2023-12-22 21:56:35",
-                    "delFlag": 0,
-                    "name": "贵宾座位-测试",
-                    "color": "#2FBB60"
-                },
-                {
-                    "id": "898175609768341504",
-                    "createBy": "admin",
-                    "createTime": "2023-12-22 21:56:03",
-                    "updateBy": "admin",
-                    "updateTime": "2023-12-24 20:17:00",
-                    "delFlag": 0,
-                    "name": "VIP座位-测试",
-                    "color": "#002FFF"
-                }
-            ],
-            tableHeader: [
-                // { title: '左1',key: 'zuo',align: 'flex-end' },
-                // { title: '过道2',key: 'zuo11',align: 'center' },
-                // { title: '中3',key: 'zhong',align: 'center' },
-                // { title: '过道4',key: 'zuo22',align: 'center' },
-                // { title: '右5',key: 'you',align: 'flex-start' },
-                // { title: '右6',key: 'you',align: 'flex-start' },
-                // { title: '右7',key: 'you',align: 'flex-start' },
-
-                // { title: '右8',key: 'you',align: 'flex-start' },
-                // { title: '右9',key: 'you',align: 'flex-start' },
-            ],
-            tableData: [
-                // {
-                //     id: this.currentRow+"_"+this.currentProperty+"_"+i,
-                //     name: this.ruleForm1.name.replace('${row}',this.currentRow).replace('${col}',i),
-                //     status: this.ruleForm1.seatTypeId,
-                //     rowNo: this.currentRow,
-                //     colNo: i,
-                //     sort: i,
-                //     style: {key: this.currentProperty}
-                // }
-            ], // 全部的座位 表格形式
-            tableDataAll: [
-                // {
-                //     "id": "899524164202352651",
-                //     "delFlag": 0,
-                //     "auditoriumId": "899466305364123648",
-                //     "name": "",
-                //     "rowNo": 2,
-                //     "columnNo": 9,
-                //     "seatTypeId": "899466154989936640",
-                //     "seatLabel": "贵宾席-OTA测试",
-                //     "priority": 1,
-                //     "status": 1,
-                //     "sortId": 11,
-                //     "color": "#EB3286"
-                // }
-            ], // 全部的座位
+            seatTypeList: [],
+            tableHeader: [],
+            tableData: [], // 全部的座位 表格形式
+            tableDataAll: [], // 全部的座位
             widthAll: '100%',
             heightAll: '100%',
-            width: 26,
-            height: 26,
+            width: 60,
+            height: 60,
             spacing: 10,
-            whNum: 26,
+            whNum: 100,
 
 
             sortable: null,
@@ -469,6 +391,7 @@ export default {
             
             // tool
             rowAll: null,
+            colsAll: null,
             activeName: 'second',
             
             // 创建区域
@@ -494,8 +417,11 @@ export default {
                 name: [
                     { required: true, message: '请选择座位名称', trigger: ['blur','change'] }
                 ],
+                seatParity: [
+                    { required: true, message: '请选择座位号', trigger: ['blur','change'] }
+                ],
                 seatTypeId: [
-                    { required: true, message: '请输入座位类型', trigger: ['blur','change'] }
+                    { required: true, message: '请选择座位类型', trigger: ['blur','change'] }
                 ],
             },
             currentRow: null, // 当前选择的单元格行
@@ -537,6 +463,17 @@ export default {
 
     },
     methods: {
+        /** 获取座位类型  */
+        async getSeatTypeListFun(){
+            try {
+                let res = await getSeatTypeList({
+                    pageNum: 1, pageSize: 999
+                })
+                this.seatTypeList = res.data.rows
+            } catch (error) {
+                
+            }
+        },
         //初始化排序
         initSortTable() {
             let that = this;
@@ -557,9 +494,86 @@ export default {
         },
 
         /**  初始化数据  */
-        initData(){
+        async initData(row,list,type){
+            this.tableHeader = []
+            this.tableData = []
+            this.tableDataAll = []
+            this.rowAll = null
+            this.colsAll = null
+            await this.getSeatTypeListFun()
+            if(row.rows) {
+                if(row.styleCss) {
+                    this.tableHeader =  JSON.parse(row.styleCss).tableHeader
+                }
+                this.rowAll = row.rows
+                let listCopy = []
+                list.forEach((item,index) => {
+                    // if(item.styleCss) {
+                    //     item.styleCss = JSON.parse(item.styleCss)
+                    // }
+                    listCopy.push({
+                        ...item,
+                        styleCss: item.styleCss ? JSON.parse(JSON.parse(item.styleCss)): {}
+                    })
+                })
+                this.tableDataAll = JSON.parse(JSON.stringify(listCopy))
+                console.log("sfasdfasdfasd====",this.tableDataAll)
+                this.dataProcess() // 数据整理
+            }
+        },
+        /**  数组组装  */
+        dataProcess(){
+            let list = JSON.parse(JSON.stringify(this.tableDataAll))
+            let list1 = JSON.parse(JSON.stringify(this.tableData))
+            let obj = {}
+            for(let i = 0;i<this.rowAll;i++) {
+                if(this.tableHeader && this.tableHeader.length){
+                    let obj = {
+                        tableId: "row_"+i
+                    }
+                    this.tableHeader.forEach((item,index)=>{
+                        obj[item.key] = []
+                    })
+                    if(list1[i] && JSON.stringify(list1[i]) != '{}') {
+                        list1[i] = obj
+                    }else {
+                        list1.push(obj)
+                    }
+                }else if(!list1[i]){
+                    list1.push({})
+                }
+            }
+            //this.tableData = JSON.parse(JSON.stringify(list1))
+            list.forEach((item,index)=>{
+                if(item.styleCss) {
+                    obj = typeof item.styleCss == 'string' ? JSON.parse(item.styleCss) : item.styleCss
+                    if(obj.key && list1[item.rowNo-1][obj.key]) {
+                    
+                        list1[item.rowNo-1][obj.key].push({
+                            ...item,
+                            styleCss: obj
+                        })
+                    }
+                }
+               
+            })
+
+            //  排序
+            for(let j = 0; j < list1.length ; j++) {
+                for(let i = 0;i<this.tableHeader.length;i++) {
+                    list1[j][this.tableHeader[i].key].sort(this.sortFun)
+                }
+            }
             
+            this.tableData = JSON.parse(JSON.stringify(list1))
+            console.log("this.tableData===",this.tableData)
+            this.countRegionW()
+        },
+        /**  sort 排序函数  */
+        sortFun(a,b){
+            return  a.sortId - b.sortId;
         },
+
         /** tab 切换 右侧工具 */
         handleClickTab(item){
             console.log("item====",item,this.activeName)
@@ -579,7 +593,7 @@ export default {
                     length: 0,
                     width:0,
                 })
-                this.resetForm('ruleForm')
+                this.resetForm(formName)
                 if(this.rowAll) {
                     this.createTableList()
                 }
@@ -596,7 +610,7 @@ export default {
         delTableHeader(params,index){
             let flog = false
             this.tableDataAll.forEach((item,index)=>{
-                if(item.style && item.style.key == params.key) {
+                if(item.styleCss && item.styleCss.key == params.key) {
                     flog = true
                 }
             })
@@ -629,7 +643,10 @@ export default {
                     if(this.formAllType == 'region'){
                         this.submitFormAll()
                     }else if(this.formAllType == 'bindingregion'){
+                        console.log("sdfsdfsdfsdfds",this.formAll)
                         this.batchBindingArea()
+                    }else if(this.formAllType == 'batchSetaType') {
+                        this.batchSetaType()
                     }
                 } else {
                     console.log('error submit!!');
@@ -724,7 +741,7 @@ export default {
                 this.seatTypeList.forEach((item,index)=>{
                     if(this.ruleForm1.seatTypeId == item.id) {
                         color = item.color
-                        seatLabel = item.seatLabel
+                        seatLabel = item.name
                     }
                 })
                 if(this.ruleForm1.resource == 2){ // 批量
@@ -748,11 +765,17 @@ export default {
                         return
                     }
                     for(let i = min;i<=max;i++) {
+                        if(this.ruleForm1.seatParity == 2 && i%2 == 0) { // 排除偶数
+                            continue;
+                        }
+                        if(this.ruleForm1.seatParity == 3 && i%2 > 0) { // 排除奇数数
+                            continue;
+                        }
+
                         list.push({
-                            id: this.currentRow+"_"+this.currentProperty+"_"+i,
+                            tableId: this.currentRow+"_"+this.currentProperty+"_"+i,
                             name: this.ruleForm1.name.replace('${row}',this.currentRow).replace('${col}',i),
-                            status: this.ruleForm1.seatTypeId,
-                            style: {
+                            styleCss: {
                                 key: this.currentProperty, // 所属区域的key
                                 keyLabel: this.currentLabel, // 所属区域的名称
                                 sort: 0,
@@ -761,9 +784,12 @@ export default {
                             rowNo: this.currentRow,
                             columnNo: i,
                             seatTypeId: this.ruleForm1.seatTypeId,
+                            sortId: i, // 排序号码
                             seatLabel: seatLabel,
                             color: color,// 座位类型对应的颜色
-                            delFlag: 0,
+                            delFlag: 0, // 座位是否可用
+                            priority: 9999, // 座位出票顺序  数字越小越优先
+                            status: 0, //0-初始(该状态下不C端显示) 1-可用 2-不可用
                         })
                     }
                     this.tableDataAll = this.tableDataAll.concat(JSON.parse(JSON.stringify(list)))
@@ -774,13 +800,9 @@ export default {
                     console.log("this.tableData111=====",this.currentRow,this.currentProperty,this.tableData[this.currentRow-1][this.currentProperty])
                     let index = this.tableData[this.currentRow-1][this.currentProperty].length
                     let obj = {
-                        id: this.currentRow+"_"+this.currentProperty+"_"+(index+1),
+                        tableId: this.currentRow+"_"+this.currentProperty+"_"+(index+1),
                         name: this.ruleForm1.name,
-                        status: this.ruleForm1.seatTypeId,
-                        rowNo: this.currentRow,
-                        sort: index+1,
-
-                        style: {
+                        styleCss: {
                             key: this.currentProperty, // 所属区域的key
                             keyLabel: this.currentLabel, // 所属区域的名称
                             sort: 0,
@@ -788,10 +810,13 @@ export default {
                         },
                         rowNo: this.currentRow,
                         columnNo: index+1,
+                        sortId: i, // 排序号码
                         seatTypeId: this.ruleForm1.seatTypeId,
                         seatLabel: seatLabel,
                         color: color,// 座位类型对应的颜色
-                        delFlag: 0,
+                        delFlag: 0, // 座位是否可用
+                        priority: 9999, // 座位出票顺序  数字越小越优先
+                        status: 0, //0-初始(该状态下不C端显示) 1-可用 2-不可用
                     }
                     this.tableData[this.currentRow-1][this.currentProperty].push(obj)
                     this.tableDataAll.push(JSON.parse(JSON.stringify(obj)))
@@ -826,6 +851,7 @@ export default {
         countRegionW(){
             let list = JSON.parse(JSON.stringify(this.tableHeader))
             for(let i = 0; i < list.length; i++) {
+                list[i].length =  0
                 for(let j = 0;j < this.tableData.length; j++) {
                     if(this.tableData[j][list[i].key] && this.tableData[j][list[i].key].length){
                         if(list[i].length<this.tableData[j][list[i].key].length){
@@ -836,6 +862,13 @@ export default {
             }
             console.log("list=====111",list)
             this.tableHeader = [].concat(list)
+            let colsAll = 0
+            this.tableHeader.forEach((item,index) => {
+                if(item.length) {
+                    colsAll = colsAll + item.length
+                }
+            })
+            this.colsAll = colsAll
         },
         /**  创建座位  结束  */
 
@@ -876,6 +909,7 @@ export default {
 
         // 批量选择
         handleSelectionChange(val){
+            console.log('this.multipleSelection====',val)
             this.multipleSelection = val;
         },
         // 编辑区域
@@ -891,43 +925,89 @@ export default {
         batchBindingArea() {
             let list = []
             let currentLabel = ''
-            
+            let listTabel = JSON.parse(JSON.stringify(this.tableDataAll))
             this.tableHeader.forEach((item)=>{
                 if(item.key == this.formAll.status) {
                     currentLabel = item.title
                 }
             })
-            let listId = []
-            this.multipleSelection.forEach((item)=>{
-                listId.push(item.id)
-            })
-            this.multipleSelection.forEach((item)=>{
-                list.push({
-                    ...item,
-                    style: {
-                        ...item.style,
-                        key: this.formAll.status, // 所属区域的key
-                        keyLabel: currentLabel, // 所属区域的名称
-                    }
-                })
-            })
+            for(let i=0;i<this.multipleSelection.length;i++){
+                for(let j=0;j<this.tableDataAll.length;j++){
+                    if(this.multipleSelection[i].id == this.tableDataAll[j].id){
+                        listTabel[j] = {
+                        ...this.tableDataAll[j],
+                            styleCss: {
+                                ...this.tableDataAll[j].styleCss,
+                                key: this.formAll.status, // 所属区域的key
+                                keyLabel: currentLabel, // 所属区域的名称
+                            }
+                        }
+                        break;
+                    }    
+                }
+            }
+            this.tableDataAll = JSON.parse(JSON.stringify(listTabel))
+            console.log("this.tableDataAll=====",this.tableDataAll)
+            // this.batchTableList = JSON.parse(JSON.stringify(this.tableDataAll))
+            this.formDialogVisible = false
+            this.handleQuery()
+            this.dataProcess()
         },
         // 批量禁用
         batchDisable() {
 
         },
-
+        /**  打开 批量修改座位类型 弹窗   */
+        openBatchSetaType() {
+            this.formAllType = 'batchSetaType'
+            this.formDialogVisibleTitle = "批量修改座位类型"
+            this.formDialogVisible = true
+            this.$set(this,'formAll',JSON.parse(JSON.stringify({
+                seatTypeId: null,
+            })))
+        },
+        /**  批量修改座位类型   */
+        batchSetaType() {
+            let color = ''
+            let seatLabel = ''
+            let listTabel = JSON.parse(JSON.stringify(this.tableDataAll))
+            this.seatTypeList.forEach((item,index)=>{
+                if(this.formAll.seatTypeId == item.id) {
+                    color = item.color
+                    seatLabel = item.name 
+                }
+            })
+            for(let i=0;i<this.multipleSelection.length;i++){
+                for(let j=0;j<this.tableDataAll.length;j++){
+                    if(this.multipleSelection[i].id == this.tableDataAll[j].id){
+                        listTabel[j] = {
+                            ...this.tableDataAll[j],
+                            seatLabel: seatLabel,
+                            color: color,// 座位类型对应的颜色
+                            seatTypeId: this.formAll.seatTypeId,
+                        }
+                        break;
+                    }    
+                }
+            }
+            this.tableDataAll = JSON.parse(JSON.stringify(listTabel))
+            console.log("this.tableDataAll=====",this.tableDataAll)
+            // this.batchTableList = JSON.parse(JSON.stringify(this.tableDataAll))
+            this.formDialogVisible = false
+            this.handleQuery()
+            this.dataProcess()
+        },
         /** 删选 */
         handleQuery(){
            
             if(!this.queryParams.menuName&&!this.queryParams.status){
                 this.batchTableList = this.tableDataAll
-                console.log("list====",this.queryParams)
+                console.log("list====",this.queryParams,this.tableDataAll)
             }else {
                 let list = []
                 this.tableDataAll.forEach((item,index)=>{
                     if(this.queryParams.menuName&&this.queryParams.status) {
-                        if(item.rowNo==this.queryParams.menuName && item.style.key == this.queryParams.status) {
+                        if(item.rowNo==this.queryParams.menuName && item.styleCss.key == this.queryParams.status) {
                             list.push(item)
                         }
                     }else if(this.queryParams.menuName){
@@ -935,7 +1015,7 @@ export default {
                             list.push(item)
                         }
                     }else {
-                        if(item.style.key == this.queryParams.status) {
+                        if(item.styleCss.key == this.queryParams.status) {
                             list.push(item)
                         }
                     }
@@ -950,7 +1030,7 @@ export default {
 
         },
 
-        /** 座位排序  */
+        /** 点击座位排序 座位排序  */
         seatSortingFun(type){
             let list = JSON.parse(JSON.stringify(this.currentTabelList))
             if(type=='rise') { // 升序
@@ -995,6 +1075,46 @@ export default {
             }
             this.$set(this.tableData[this.currentRow-1],this.currentProperty,list)
             this.currentTabelList = JSON.parse(JSON.stringify(this.tableData[this.currentRow-1][this.currentProperty]))
+        },
+        /**  座位升序 赋值   */
+        setSetaSote(){
+            let list = []
+            for(let j = 0;j<this.tableData.length;j++) {
+                list[j] = []
+                for(let i = 0;i<this.tableHeader.length;i++) {
+                    list[j] = list[j].concat(this.tableData[j][this.tableHeader[i].key])
+                }
+            }
+            let listCopy = []
+            list.forEach((item,index)=>{
+                item.forEach((item1,index1)=>{
+                    list[index][index1].sortId = index1+1
+                    list[index][index1].styleCss.sort = index1+1
+                    listCopy.push(list[index][index1])
+                })
+            })
+            console.log("list======",list)
+            this.tableDataAll = JSON.parse(JSON.stringify(listCopy))
+        },
+        /**   保存座位   */
+        saveSeat() {
+            this.setSetaSote()
+            console.log('this.tableDataAll',this.tableDataAll)
+            let list = JSON.parse(JSON.stringify(this.tableDataAll))
+            list.forEach((item,index)=>{
+                if(item.styleCss) {
+                    list[index].styleCss = JSON.stringify(item.styleCss)
+                }
+            })
+            let styleCss = {
+                tableHeader: this.tableHeader
+            }
+            list.forEach((item,index)=>{
+                if(item.styleCss) {
+                    list[index].styleCss = JSON.stringify(item.styleCss)
+                }
+            })
+            this.$emit('saveSeat',this.rowAll,this.colsAll,list,JSON.stringify(styleCss))
         }
     }
 };
@@ -1006,71 +1126,106 @@ export default {
     width: 100%;
     height: 100%;
     box-sizing: border-box;
-    padding-top: 20px;
     display: flex;
     flex-direction: column;
     justify-content: center;
     align-items: center;
+    --top-tool-h: 60px;
+    --left-tool-w: 300px
+}
+.sm-box-top-tool {
+    width: 100%;
+    height: var(--top-tool-h);
+    box-sizing: border-box;
+    display: flex;
+    .sm-box-top-tool-legend {
+        width: 400px;
+        display: flex;
+        >div {
+            display: flex;
+            align-items: center;
+            margin-left: 10px;
+            >span:first-child {
+                display: block;
+                width: 10px;
+                height: 10px;
+                flex-shrink: 0;
+            }
+            >span:last-child {
+                white-space: nowrap;
+                margin-left: 5px;
+                font-size: 12px;
+            }
+        }
+    }
 }
-
 .sm-box {
-    width: 1300px;
-    height: 600px; 
+    width: 100%;
+    height: calc( 100% - var(--top-tool-h) ); 
     box-sizing: border-box;
     display: flex;
     justify-content: center;
     --row-w: 26px;
     --row-h: 26px;
+    --row-scale: 1;
 }
 .sm-scroll-box {
-    width: 1000px;
+    width: calc( 100% - var(--left-tool-w) );
     height: 100%;
     border: 1px solid #ccc;
     box-sizing: border-box;
     background-color: aqua;
-}
+    .row-item-box {
+        border: 1px dashed #ccc;
+        width: 100%;
+        height: 100%;
+        align-items: center;
+        padding: 5px;
+    }
 
-.row-item-box {
-    border: 1px dashed #ccc;
-    width: 100%;
-    height: 100%;
-    align-items: center;
-    padding: 5px;
-}
+    .row-item-box:hover {
+        background-color: rgba(64, 158, 255,0.3);
+    }
 
-.row-item-box:hover {
-    background-color: rgba(64, 158, 255,0.3);
-}
+    .row-item {
+        width: var(--row-w);
+        height: var(--row-h);
+        margin-left: 5px;
+        border: 1px solid #ccc;
+        display: flex;
+        flex-direction: column;
+        flex-shrink: 0;
+        font-size: 12px;
+        align-items: center;
+        box-sizing: border-box;
+        justify-content: center;
+        overflow: hidden;
+        > div {
+            width: var(--row-w-i);
+            height: var(--row-h-i);
+            transform: scale(var(--row-scale));
+            display: flex;
+            flex-direction: column;
+        }
+        i {
+            color: #fff;
+        }
+    }
 
-.row-item {
-    width: var(--row-w);
-    height: var(--row-h);
-    margin-left: 5px;
-    border: 1px solid #ccc;
-    display: flex;
-    flex-direction: column;
-    flex-shrink: 0;
-    font-size: 12px;
-    align-items: center;
-    box-sizing: border-box;
-    justify-content: center;
-    overflow: hidden;
-    i {
-        color: #fff;
+    .row-item:first-child {
+        margin-left: 0;
+    } 
+
+    .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf {
+        border-bottom: none !important;
     }
 }
 
-.row-item:first-child {
-    margin-left: 0;
-} 
 
-.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf {
-    border-bottom: none !important;
-}
 
 
 .table-tool {
-    width: calc( 100% - 1000px );
+    width: var(--left-tool-w);
     height: 100%;
     padding: 0 10px;
     box-sizing: border-box;
@@ -1090,7 +1245,7 @@ export default {
 
     .qu-first-form {
         width: 100%;
-        height: 200px;
+        height: 250px;
         overflow: hidden;
         padding-top: 10px;
         box-sizing: border-box;
@@ -1099,7 +1254,7 @@ export default {
 
     .qu-first-info {
         width: 100%;
-        height: calc( 100% - 200px );
+        height: calc( 100% - 250px );
         overflow: hidden;
         .qu-first-info-title {
             width: 100%;
@@ -1196,7 +1351,7 @@ export default {
 
     .qu-second-form {
         width: 100%;
-        height: 240px;
+        height: 300px;
         overflow: hidden;
         padding-top: 10px;
         box-sizing: border-box;
@@ -1205,7 +1360,7 @@ export default {
 
     .qu-second-info {
         width: 100%;
-        height: calc( 100% - 320px );
+        height: calc( 100% - 400px );
         overflow: hidden;
         .qu-second-info-title {
             width: 100%;

File diff suppressed because it is too large
+ 704 - 490
src/views/venue/performanceHallMr/model/seatManagementTable.vue