浏览代码

1. 优化

MONSTER-ygh 1 月之前
父节点
当前提交
cf3a2949dd

二进制
src/assets/jinxuan_1.png


+ 51 - 0
src/components/seatBox/index.vue

@@ -426,6 +426,13 @@
 
         /**  设置显示状态  */
         setShowStatus(item1,item) {
+            if(item.isSame) {
+                return 'seat_is_same'
+            }
+
+            if(item.channelType && item.channelType != 'window') {
+                return 'seat_channel_type'
+            }
             /**
              * key == my_column 序号位置
              * 
@@ -632,6 +639,50 @@
       transform-origin: 50% 0;
       transform: scale(var(--scaleNum));
       box-sizing: border-box;
+
+         /**  是否属于windown座位  */
+       .seat_is_same {
+        user-select: none;
+      }
+      .seat_is_same: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/jinxuan_1.png');
+        background-size: 50% 50%;
+        background-position: 50% 50%;
+        background-repeat: no-repeat;
+        z-index: 99;
+      }
+
+       /**  是否属于windown座位  */
+       .seat_channel_type {
+        user-select: none;
+      }
+      .seat_channel_type: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/jinxuan_1.png');
+        background-size: 50% 50%;
+        background-position: 50% 50%;
+        background-repeat: no-repeat;
+        z-index: 99;
+      }
+
+
       /**  不可售 座位  */
       .disabled-class{
         background-color: #ffffff;

+ 6 - 0
src/views/windowTicketSales/mixins/selectList.js

@@ -182,6 +182,12 @@ export default {
                     flog = true
                     break;
                 }
+
+                if(row.channelType && row.channelType != 'window'){
+                    this.$message.error(`不能选择非窗口出售的座位!!!`);
+                    flog = true
+                    break;
+                }
             }
             if(flog){
                 return

+ 37 - 59
src/views/windowTicketSales/model/rebookBox.vue

@@ -15,9 +15,6 @@
         <div class="rebook1_box" v-loading="loading">
             <div class="rebook1_from-box">
                 <div class="rebook1_from">
-                    <div class="tip-box">
-                        <p>温馨提示:每张票仅限改签一次,改签成功后原订单费用将原路返回退还给客户,请知悉。</p>
-                    </div>
                     <el-form :model="rebookForm" ref="rebookForm" label-width="100px" :rules="rules">
                         <el-form-item label="剧目名称:">
                             <span>{{ rebookForm.performName }}</span>
@@ -28,6 +25,9 @@
                         <el-form-item label="座位类型:">
                             <span>{{ rebookForm.seatTypeName }}</span>
                         </el-form-item>
+                        <el-form-item label="订单座位数:">
+                            <span>{{ rebookForm.touristNum }}个</span>
+                        </el-form-item>
 
                         <el-form-item label="选择日期:" prop="performDate">
                             <el-date-picker 
@@ -42,7 +42,7 @@
                                 v-model="rebookForm.performTimeId"
                                 placeholder="选择场次"
                                 style="width: 100%"
-                                @change="selectRegionFun"
+                                @change="querySeatListFun"
                                 >
                                     <el-option
                                     v-for="item in intervalList"
@@ -62,6 +62,9 @@
                             </el-radio-group>
                         </el-form-item>
                     </el-form>
+                    <div class="tip-box">
+                        <p>温馨提示:每张票仅限改签一次,改签成功后原订单费用将原路返回退还给客户,请知悉。</p>
+                    </div>
                 </div>
                 <div class="rebook1_seat" v-loading="seatLoading" :element-loading-text="seatLoadText">
                     <seatBox 
@@ -147,7 +150,7 @@
     </el-dialog>
 </template>
 <script>
-import { reSubmitPageList, getDateTimeAll, rebook } from '@/api/windowTicketSales/rebook'
+import {  getDateTimeAll } from '@/api/windowTicketSales/rebook'
 import { 
   orderInfoSubmit,
   gotoMicroPay,
@@ -160,7 +163,8 @@ import {
   orderInfoCancel,
   factorAuth,
   selectMarketTeamBySourceApi,
-  querySeatListNew
+  querySeatListNew,
+  querySeatList,
  } from '@/api/windowTicketSales/ticketingSales'
  import { pageList as getPrintListApi } from "@/api/device/pda";
  import { printApi } from '@/api/windowTicketSales/ticketingCollection'
@@ -168,9 +172,6 @@ import {
  import { countBySeatTyp } from '@/api/ticketMr/InventoryTemplate'
  import { pageList as getSeatType } from '@/api/seatTypeMr/seatTypeMr'
  import seatBox from '@/components/seatBox/index.vue';
- import { 
-  querySeatList,
- } from '@/api/windowTicketSales/ticketingSales'
  const mathM = require('mathjs')
  const https = require('https');
  const axios = require('axios');
@@ -236,7 +237,8 @@ export default {
                 performTimeId: undefined,
                 performId: row.performId,
                 auditoriumId: row.auditoriumId,
-                paymentType: "1", // 支付方式
+                paymentType: "1", // 支付方式'
+                touristNum: row.touristNum,
                 seatList: []
             }
             await this.countBySeatTypFun(row.auditoriumId)
@@ -261,8 +263,12 @@ export default {
                 orderId: this.rebookForm.orderId,
                 performId: this.rebookForm.performId,
                 auditoriumId: this.rebookForm.auditoriumId
-            }).then(response => {
-                this.intervalList = response.data.list || []
+            }).then(res => {
+                this.intervalList = res.data.list || []
+                if(this.intervalList.length == 0){
+                    this.$message.error('没有可售卖的场次!!!');
+                }
+               
                 this.intervalListLoading = false
             }).catch(()=>{
                 this.intervalListLoading = true
@@ -285,6 +291,10 @@ export default {
                         this.$message.error('请选择座位!!!');
                         return
                     }
+                    if( this.rebookForm.seatList.length < this.rebookForm.touristNum ) {
+                        this.$message.error(`请选择${ this.rebookForm.touristNum }座位!!!`);
+                        return
+                    }
                     this.orderInfoSubmitFun()
                 } else {
                     return false;
@@ -851,60 +861,23 @@ export default {
             }
         },
 
-
-
-         /**  获取票务信息  */
-         async selectRegionFun(){
-            try {
-                this.seatLoading = true
-                this.seatLoadText = "获取座位中..."
-                let res = await selectRegion({
-                    "auditoriumId": this.rebookForm.auditoriumId, // 演艺厅ID
-                    "goodsId": this.rebookForm.goodsId, // 商品ID
-                    "performId": this.rebookForm.performId, // 上一界面节目ID
-                    "performTimeId": this.rebookForm.timeId, // 时段ID
-                    "retailId": "" // 分销ID
-                })
-                if(res.code == 200) {
-                    if(res.data.regionPriceList &&res.data.regionPriceList.length>0){
-                        let obj = {}
-                        res.data.regionPriceList.forEach((item,index)=>{
-                            if(this.rebookForm.seatTypeId == item.seatTypeId) {
-                                obj = item
-                            }
-                        }) 
-                        if(JSON.stringify(obj) != '{}'){
-                            this.querySeatListFun()
-                        }else {
-                            this.$message.error('存在座位未设置价格,请选择其他票!!!');
-                            this.seatLoading = false
-                        }
-                        
-                    }else {
-                        this.$message.error('存在座位未设置价格,请选择其他票!!!');
-                        this.seatLoading = false
-                    }
-                    console.log("res====",res)
-                }else {
-                    this.$message.error(res.msg);
-                    this.seatLoading = false
-                }
-            } catch (error) {
-                console.error("error=====",error)
-                this.$message.error('价格查询出错');
-                this.seatLoading = false
-            }
-        },
         /**  获取座位  */
         async querySeatListFun(type){
             try {
-                let res = await querySeatList({
+                let res = await querySeatListNew({
                     auditoriumId: this.rebookForm.auditoriumId,
                     timeId: this.rebookForm.performTimeId,
                     goodsId: this.rebookForm.goodsId,
                 })
                 if(res.code == 200){
-                    this.setList = res.data;
+                    let list1 = []
+                    res.data.forEach((item,index)=>{
+                        list1.push({
+                            ...item,
+                            isSame: this.rebookForm.seatTypeId != item.seatTypeId
+                        })
+                    })
+                    this.setList = list1;
                     let list = []
                     let list3 = []
                     this.countBySeatTypList.forEach((item,index)=>{
@@ -943,7 +916,7 @@ export default {
                         isNoSelect: true,
                     }
                     if(item.seatTypeId == this.rebookForm.seatTypeId){
-                        obj['seatNum_'+item.seatTypeId].stockYes = item.stock-1
+                        obj['seatNum_'+item.seatTypeId].stockYes = item.stock-this.rebookForm.touristNum
                         obj['seatNum_'+item.seatTypeId].isNoSelect = false
                     }
                 })
@@ -1001,6 +974,11 @@ export default {
         padding: 0 20px 0 0;
         width: 400px;
         box-sizing: border-box;
+        .tip-box {
+            >p {
+                color: red;
+            }
+        }
     }
     .rebook1_seat {
         width: calc( 100% - 400px );

+ 5 - 1
src/views/windowTicketSales/rebook.vue

@@ -74,7 +74,11 @@
             </el-table-column>
             <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
               <template slot-scope="scope">
-                <el-button type="primary" @click="handleRebook(scope.row)">改签</el-button>
+                <el-button 
+                type="primary" 
+                @click="handleRebook(scope.row)"
+                v-if="scope.row.allowReSubmit == 1"
+                >改签</el-button>
               </template>
             </el-table-column>
           </el-table>

+ 18 - 1
src/views/windowTicketSales/ticketingSales.vue

@@ -235,6 +235,7 @@ import LockSeat from './model/lockSeat.vue'
         LockSeat
     },
     mixins: [selectListMixin],
+    dicts: ['channel_type'],
     data() {
       return {
         // 遮罩层
@@ -309,6 +310,16 @@ import LockSeat from './model/lockSeat.vue'
     },
     methods: {
         moment,
+
+        setChanneltype(key){
+            let srt = ''
+            this.dict.type.channel_type.forEach((item,index)=>{
+                if(key == item.value) {
+                    srt = item.label
+                }
+            })
+            return srt
+        },
         /**  票务信息  */
         async goodsPageListFun(){
             try {
@@ -634,10 +645,14 @@ import LockSeat from './model/lockSeat.vue'
 
         // 座位点击事件
         seatClick(row) {
-            console.log("是的发给我大是个的风格====",row)
             if(row.isDisabled || row.status == 2){
                 return false
             }
+            if(row.channelType && row.channelType != 'window'){
+                this.$message.error(`该座位仅限${ this.setChanneltype(row.channelType) }渠道购买!!!`);
+                return false
+            }
+
             if(this.seatSelectListNo.length>0 && row.occupyStatus != 0) {
                 this.$message.error('你已选择锁定座位,只能再选择被锁定的座位!!!');
                 return
@@ -1044,6 +1059,8 @@ import LockSeat from './model/lockSeat.vue'
       transform-origin: 50% 0;
       transform: scale(var(--scaleNum));
       box-sizing: border-box;
+
+      /**  是否属于windown座位  */
       .seat_channel_type {
         user-select: none;
       }