完成会员混合下单接口的页面逻辑

main
RogerWork 1 month ago
parent a69192c80e
commit 12b69adf6b
  1. 158
      src/components/ec_api/MapiLockBuySelector.vue
  2. 47
      src/components/ec_api/TabArea.vue

@ -0,0 +1,158 @@
<script setup>
import {ref, watch} from 'vue'
import {ElMessageBox} from "element-plus";
// props
const props = defineProps(['type'])
// emits
const emits = defineEmits(["getSaleType", "getPriceType"])
//
const selectSaleType = props.type === 'goods' ? ref('goods') : ref('ticket')
const selectPriceType = ref("cinema_price")
const ticketPrice = ref('20.00')
const haveServiceFee = ref(true)
const ticketQuanCheck = ref(false)
const ticketQuanNum = ref('0')
const ticketQuanValue = ref('0.00')
const goodsQuanCheck = ref(false)
const goodsQuanNum = ref('0')
const goodsQuanValue = ref('0.00')
const containTicket = ["ticket", "all"]
const containGoods = ["goods", "all"]
//
watch(() => selectSaleType.value, () => {
emits("getSaleType", selectSaleType.value)
})
watch(() => ticketQuanCheck.value, () => {
if (ticketQuanCheck.value) {
console.log("ticketQuanCheck.value", ticketQuanCheck.value, ticketQuanNum.value, ticketQuanValue.value)
if (ticketQuanNum.value === 0 || ticketQuanValue.value === 0) {
ElMessageBox.alert('请设置影票券数量和面值!', "影票券", {
confirmButtonText: '知道了',
callback: () => {
ticketQuanCheck.value = false
}
})
}
}
})
watch(() => goodsQuanCheck.value, () => {
if (goodsQuanCheck.value) {
console.log("goodsQuanCheck.value", goodsQuanCheck.value, goodsQuanNum.value, goodsQuanValue.value)
if (goodsQuanNum.value === 0 || goodsQuanValue.value === 0) {
ElMessageBox.alert('请设置卖品券数量和面值!', "卖品券", {
confirmButtonText: '知道了',
callback: () => {
goodsQuanCheck.value = false
}
})
}
}
})
//
watch(() => [selectPriceType.value, ticketPrice.value, ticketPrice.value, ticketQuanCheck.value, ticketQuanNum.value, ticketQuanValue.value, goodsQuanCheck.value, goodsQuanNum.value, goodsQuanValue.value], () => {
emits("getPriceType", {
select_price_type: selectPriceType.value,
ticket_info: {
ticket_price: ticketPrice.value,
have_service_fee: haveServiceFee.value,
},
ticketQuanCheck: ticketQuanCheck.value,
ticket_quan: {
ticket_quan_num: ticketQuanNum.value,
ticket_quan_value: ticketQuanValue.value,
},
goodsQuanCheck: goodsQuanCheck.value,
goods_quan: {
goods_quan_num: goodsQuanNum.value,
goods_quan_value: goodsQuanValue.value,
}
})
})
</script>
<template>
<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="6" class="col-left">
<el-radio-group v-model="selectSaleType">
<el-radio label="ticket" v-if="props['type'] === 'ticket'">单影票</el-radio>
<el-radio label="goods" v-if="props['type'] === 'goods'">单卖品</el-radio>
<el-radio label="all" v-if="props['type'] === 'ticket'">影票加卖品</el-radio>
</el-radio-group>
</el-col>
</el-row>
<el-row type="flex" justify="start" align="middle" style="margin: 0 0 10px 20px">
<el-col :span="1" style="font-size: 14px; font-weight: bold; color: #919399;" class="col-right">定价方式</el-col>
<el-col :span="7" class="col-left">
<el-radio-group v-model="selectPriceType">
<el-radio label="cinema_price">影院定价</el-radio>
<el-radio label="third_price">三方定价</el-radio>
</el-radio-group>
</el-col>
</el-row>
<el-row v-if="selectPriceType === 'third_price'" type="flex" justify="start" align="middle" style="margin: 0 0 0 20px">
<el-col :span="1" style="font-size: 14px; font-weight: bold; color: #919399;" class="col-right">三方定价</el-col>
<el-col :span="8" class="col-left">
<span style="font-size: 14px">单张影票结算价</span>
<el-input-number v-model="ticketPrice" :min="0.01" :max="99999.99" :step="0.01"
controls-position="right" size="small"></el-input-number>
<el-checkbox v-model="haveServiceFee" style="margin-left: 20px">是否包含服务费</el-checkbox>
</el-col>
</el-row>
<el-row v-if="selectPriceType === 'third_price' && containTicket.includes(selectSaleType)" type="flex" justify="start" align="middle" style="margin: 0 0 0 20px">
<el-col :span="1" style="font-size: 14px; font-weight: bold; color: #919399;" class="col-right"></el-col>
<el-col :span="10" class="col-left">
<span>影票券</span>
<el-input-number v-model="ticketQuanNum" :min="0" :max="10" :step="1"
controls-position="right" size="small"></el-input-number>
<span>&nbsp张抵值&nbsp</span>
<el-input-number v-model="ticketQuanValue" :min="0.00" :max="99999.99" :step="0.01"
controls-position="right" size="small"></el-input-number>
<span>&nbsp元</span>
<el-checkbox v-model="ticketQuanCheck" style="margin-left: 20px">使用影票券</el-checkbox>
</el-col>
</el-row>
<el-row v-if="selectPriceType === 'third_price' && containGoods.includes(selectSaleType)" 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="10" class="col-left">
<span>卖品券</span>
<el-input-number v-model="goodsQuanNum" :min="0" :max="10" :step="1"
controls-position="right" size="small"></el-input-number>
<span>&nbsp张抵值&nbsp</span>
<el-input-number v-model="goodsQuanValue" :min="0.00" :max="99999.99" :step="0.01"
controls-position="right" size="small"></el-input-number>
<span>&nbsp元</span>
<el-checkbox v-model="goodsQuanCheck" style="margin-left: 20px">使用卖品券</el-checkbox>
</el-col>
</el-row>
</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;
font-size: 14px;
}
</style>

@ -29,6 +29,7 @@ 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";
import MapiLockBuySelector from "@/components/ec_api/MapiLockBuySelector.vue";
// store
@ -261,7 +262,6 @@ function send_request() {
send_btn.value = '发送'
ElMessage.error('获取请求结果失败!')
})
}
async function get_suggest(options = {sale_type: saleType.value, pay_type: payType.value}) {
@ -423,6 +423,36 @@ function get_pay_type(pay_type) {
markIsChecked()
}
function get_sale_type_member(sale_type) {
console.log('sale_type', sale_type)
saleType.value = sale_type
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", "goods_card_balance_pay", "goods_cash"]);
break;
case 'goods':
check_params(["goods", "goods_card_balance_pay", "goods_cash"], ["play_id", "play_update_time", "seat", "lock_flag"]);
break;
case 'all':
check_params(["play_id", "play_update_time", "seat", "lock_flag", "goods", "goods_card_balance_pay", "goods_cash"], []);
break;
}
}
get_timestamp()
get_suggest()
markIsChecked()
}
function get_price_type_member(price_type) {
console.log('price_type', price_type)
payType.value = price_type
get_timestamp()
get_suggest()
markIsChecked()
}
//
function test() {
console.log('store.state.ecApiModule.ec_api_data', store.state.ecApiModule.ec_api_data)
@ -628,10 +658,15 @@ 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"
<ApiLockBuySelector v-if="api['path'] === 'seat/lock-buy' && api['type'] === 'nonmember'"
@getSaleType="get_sale_type"
@getPayType="get_pay_type" type="ticket"></ApiLockBuySelector>
<ApiLockBuySelector v-if="api['path'] === 'order/buy-goods'" @getSaleType="get_sale_type"
<ApiLockBuySelector v-if="api['path'] === 'order/buy-goods' && api['type'] === 'nonmember'"
@getSaleType="get_sale_type"
@getPayType="get_pay_type" type="goods"></ApiLockBuySelector>
<MapiLockBuySelector v-if="api['path'] === 'seat/lock-buy' && api['type'] === 'member'"
@getSaleType="get_sale_type_member"
@getPriceType="get_price_type_member" type="ticket"></MapiLockBuySelector>
<el-table
ref='ApiTableRef'
:data="UserApiData.api[api['id']].params"
@ -683,9 +718,9 @@ const ace_options = {
<el-button type="primary" @click="send_request" :loading="req_loading" :disabled="req_loading">
{{ send_btn }}
</el-button>
<!-- <el-button @click="test" >-->
<!-- 测试-->
<!-- </el-button>-->
<!-- <el-button @click="test" >-->
<!-- 测试-->
<!-- </el-button>-->
</el-col>
<el-col :span="8">
</el-col>

Loading…
Cancel
Save