完成锁座购票的选择项逻辑

dev
RogerWork 2 months ago
parent a74490afd8
commit 0a370cd1d0
  1. 40
      src/components/ec_api/ApiLockBuySelector.vue
  2. 82
      src/components/ec_api/TabArea.vue

@ -1,11 +1,30 @@
<script setup>
import {ref, watch} from 'vue'
//
const selectSaleType = ref('ticket')
const selectPayType = ref('cash')
// emits
const emits = defineEmits(["getSaleType", "getPayType"])
//
watch( ()=>selectSaleType.value, ()=>{
emits("getSaleType", selectSaleType.value)
})
//
watch( ()=>selectPayType.value, ()=>{
emits("getPayType", selectPayType.value)
})
</script>
<template>
<el-row type="flex" justify="start" align="middle" style="margin-left: 20px">
<el-row type="flex" justify="start" align="middle" style="margin: 20px 0 10px 20px">
<el-col :span="1" style="font-size: 14px; font-weight: bold; color: #919399;" class="col-right">售卖类型</el-col>
<el-col :span="5" class="col-left">
<el-col :span="6" class="col-left">
<el-radio-group v-model="selectSaleType">
<el-radio label="ticket">单影票</el-radio>
<el-radio label="goods">单卖品</el-radio>
@ -13,9 +32,9 @@
</el-radio-group>
</el-col>
</el-row>
<el-row type="flex" justify="start" align="middle" style="margin-left: 20px">
<el-row type="flex" justify="start" align="middle" style="margin: 0 0 30px 20px">
<el-col :span="1" style="font-size: 14px; font-weight: bold; color: #919399;" class="col-right">支付方式</el-col>
<el-col :span="5" class="col-left">
<el-col :span="7" class="col-left">
<el-radio-group v-model="selectPayType">
<el-radio label="cash">普通支付</el-radio>
<el-radio label="ecard">联名卡</el-radio>
@ -27,5 +46,18 @@
</template>
<style scoped>
.col-right {
display: flex;
justify-content: end;
align-items: center;
height: 100%;
}
.col-left {
display: flex;
justify-content: start;
align-items: center;
height: 100%;
margin-left: 20px;
}
</style>

@ -18,6 +18,7 @@ import SeatStatus from "@/components/ec_api/SeatStatus.vue";
import CinemaGoods from "@/components/ec_api/CinemaGoods.vue";
import EcardLevel from "@/components/ec_api/EcardLevel.vue";
import CheckQuan from "@/components/ec_api/CheckQuan.vue";
import ApiLockBuySelector from "@/components/ec_api/ApiLockBuySelector.vue";
// store
@ -295,40 +296,46 @@ async function get_timestamp() {
})
}
//
function get_sale_type(sale_type) {
console.log('sale_type', sale_type)
saleType.value = sale_type
if (UserApiData.value.api[activeTab.value].path === "seat/check-coupon") {
if (saleType.value === 'ticket'){
//
function check_params(checked, unchecked) {
UserApiData.value.api[activeTab.value].params.forEach(param => {
if (["play_id", "price", "seat_num"].indexOf(param.param) >= 0) {
if (checked.indexOf(param.param) >= 0) {
param.is_checked = true
}
if (["goods"].indexOf(param.param) >= 0) {
param.is_checked = false
}
})
}
if (saleType.value === 'goods'){
UserApiData.value.api[activeTab.value].params.forEach( param => {
if (["play_id", "price", "seat_num"].indexOf(param.param) >= 0) {
if (unchecked.indexOf(param.param) >= 0) {
param.is_checked = false
}
if (["goods"].indexOf(param.param) >= 0) {
param.is_checked = true
}
})
}
if (saleType.value === 'all'){
UserApiData.value.api[activeTab.value].params.forEach( param => {
if (["play_id", "price", "seat_num"].indexOf(param.param) >= 0) {
param.is_checked = true
}
if (["goods"].indexOf(param.param) >= 0) {
param.is_checked = true
}
})
//
function get_sale_type(sale_type) {
console.log('sale_type', sale_type)
saleType.value = sale_type
if (UserApiData.value.api[activeTab.value].path === "seat/check-coupon") {
switch (saleType.value) {
case 'ticket':
check_params(["play_id", "price", "seat_num"], ["goods"]);
break;
case 'goods':
check_params(["goods"], ["play_id", "price", "seat_num"]);
break;
case 'all':
check_params(["play_id", "price", "seat_num", "goods"], []);
break;
}
}
if (UserApiData.value.api[activeTab.value].path === "seat/lock-buy") {
switch (saleType.value) {
case 'ticket':
check_params(["play_id", "play_update_time", "seat", "lock_flag"], ["goods"]);
break;
case 'goods':
check_params(["goods"], ["play_id", "play_update_time", "seat", "lock_flag"]);
break;
case 'all':
check_params(["play_id", "play_update_time", "seat", "lock_flag", "goods"], []);
break;
}
}
markIsChecked()
@ -367,6 +374,25 @@ function get_quan_detail(quan, cardQuan, quanType) {
markIsChecked()
}
function get_pay_type(pay_type) {
console.log('pay_type', pay_type)
switch (pay_type) {
case 'cash':
check_params(["cash"], ["ecard_number", "coupons", "card_coupons"]);
break;
case 'ecard':
check_params(["cash", "ecard_number"], ["coupons", "card_coupons"]);
break;
case 'yushouquan':
check_params(["cash", "coupons"], ["ecard_number", "card_coupons"]);
break;
case 'equan':
check_params(["cash", "card_coupons"], ["ecard_number", "coupons"]);
break;
}
markIsChecked()
}
//
function test() {
console.log('store.state.ecApiModule.ec_api_data', store.state.ecApiModule.ec_api_data)
@ -566,6 +592,8 @@ const ace_options = {
>
<CheckQuan v-if="api['path'] === 'seat/check-coupon'" @getQuan="get_quan_detail" @getSaleType="get_sale_type"
:cid="UserApiData['base_info']['cinema']"></CheckQuan>
<ApiLockBuySelector v-if="api['path'] === 'seat/lock-buy'" @getSaleType="get_sale_type"
@getPayType="get_pay_type"></ApiLockBuySelector>
<el-table
ref='ApiTableRef'
:data="UserApiData.api[api['id']].params"

Loading…
Cancel
Save