基本完成添加券的逻辑,准备开始完成锁座购票的逻辑

dev
RogerWork 5 months ago
parent e8e0b0860f
commit a74490afd8
  1. 47
      src/apis/ec_api.js
  2. 31
      src/components/ec_api/ApiLockBuySelector.vue
  3. 186
      src/components/ec_api/CheckQuan.vue
  4. 33
      src/components/ec_api/CinemaGoods.vue
  5. 47
      src/components/ec_api/GoodsDiscount.vue
  6. 6
      src/components/ec_api/PackageSelector.vue
  7. 50
      src/components/ec_api/SeatStatus.vue
  8. 95
      src/components/ec_api/TabArea.vue
  9. 48
      src/components/ec_api/TicketDiscount.vue

@ -1,7 +1,7 @@
import request from "@/request/index.js";
export const get_ec_api_env = () => {
return request({
return request({
url: 'ec/get_env',
method: 'get',
})
@ -67,7 +67,7 @@ export const get_ec_api_request_url = (req_data) => {
return request({
url: 'ec/get_url',
method: 'post',
data:{
data: {
env: req_data.env,
member_type: req_data.type,
api: req_data.api,
@ -80,7 +80,7 @@ export const ec_api_send_request = (req_data) => {
return request({
url: 'ec/send_request',
method: 'post',
data:{
data: {
env: req_data.env,
member_type: req_data.type,
api: req_data.api,
@ -89,25 +89,34 @@ export const ec_api_send_request = (req_data) => {
})
}
export const ec_api_get_suggest = (api_type, api) => {
export const ec_api_get_suggest = (api_type, api, options) => {
let req_params = {
member_type: api_type,
api: api
}
console.log('ec_api_get_suggest -- options', options)
if (options) {
req_params['options'] = options
}
return request({
url: 'ec/get_suggest_params',
method: 'get',
params: {
member_type: api_type,
api: api
}
params: req_params
})
}
export const ec_api_get_suggest_timestamp = (api_type, api) => {
export const ec_api_get_suggest_timestamp = (api_type, api, options=null) => {
let req_params = {
member_type: api_type,
api: api
}
if (options !== null) {
req_params['options'] = options
}
return request({
url: 'ec/get_suggest_params_timestamp',
method: 'get',
params: {
member_type: api_type,
api: api
}
params: req_params
})
}
@ -134,3 +143,15 @@ export const ec_api_clear_user_data = (req_data) => {
}
})
}
export const get_ec_api_get_quan = (cid, card) => {
return request({
url: 'ec/get_quan',
method: 'get',
params: {
cid: cid,
card_num: card
}
})
}

@ -0,0 +1,31 @@
<script setup>
</script>
<template>
<el-row type="flex" justify="start" align="middle" style="margin-left: 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-radio-group v-model="selectSaleType">
<el-radio label="ticket">单影票</el-radio>
<el-radio label="goods">单卖品</el-radio>
<el-radio label="all">影票加卖品</el-radio>
</el-radio-group>
</el-col>
</el-row>
<el-row type="flex" justify="start" align="middle" style="margin-left: 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-radio-group v-model="selectPayType">
<el-radio label="cash">普通支付</el-radio>
<el-radio label="ecard">联名卡</el-radio>
<el-radio label="yushouquan">扫码券</el-radio>
<el-radio label="equan">会员卡赠券</el-radio>
</el-radio-group>
</el-col>
</el-row>
</template>
<style scoped>
</style>

@ -0,0 +1,186 @@
<script setup>
import {ref, watch, onBeforeMount} from 'vue'
import {get_ec_api_get_quan} from "@/apis/ec_api.js";
// props
const props = defineProps(['cid'])
// emits
const emits = defineEmits(['getQuan', 'getSaleType'])
//
const quan_type = ref('yushouquan')
//
const quanArray = ref([])
const selectQuan = ref([])
//
const cardNum = ref('')
const cardQuanArray = ref([])
const selectCardQuan = ref()
const selectCardQuanArray = ref([])
const useCardQuanNum = ref(1)
const useCardQuanNumMax = ref(1)
const allSelectCardQuan = ref([])
//
const selectSaleType = ref('ticket')
//
async function get_quan() {
console.log('get_quan')
await get_ec_api_get_quan(props.cid, cardNum.value).then(
res => {
quanArray.value = res.quan
cardQuanArray.value = res.card_quan
cardQuanArray.value.forEach(item => {
item['label'] = item['cinema_quan_name'] + ' 可用数量' + item['quan_remain_nums']
})
console.log('quanArray.value', quanArray.value)
console.log('cardQuanArray.value', cardQuanArray.value)
}
).catch(
err => {
console.log(err)
}
)
}
//
function get_card_quan() {
if (cardNum.value === '') {
alert('请输入卡号后查询!')
return
}
get_quan()
}
//
function add_card_quan() {
cardQuanArray.value.forEach(item => {
if (item['card_quan_order_id'] === selectCardQuan.value) {
if (selectCardQuanArray.value.indexOf(selectCardQuan.value) < 0) {
allSelectCardQuan.value.push(
{
'card_num': cardNum.value,
'card_coupon_order_id': selectCardQuan.value,
'num': useCardQuanNum.value
}
)
selectCardQuanArray.value.push(selectCardQuan.value)
}else{
alert('此卡券已添加请选择其他卡券!')
}
}
})
console.log('allSelectCardQuan.value', allSelectCardQuan.value)
console.log('checkQuan-')
emits('getQuan', selectQuan.value, allSelectCardQuan.value, quan_type.value)
}
function clear_card_quan() {
allSelectCardQuan.value = []
selectCardQuanArray.value = []
emits('getQuan', selectQuan.value, allSelectCardQuan.value, quan_type.value)
}
onBeforeMount(() => {
get_quan()
})
//
watch(() => selectQuan.value, () => {
console.log('selectQuan', selectQuan.value)
console.log('selectSaleType.value', selectSaleType.value)
emits('getQuan', selectQuan.value, allSelectCardQuan.value, quan_type.value)
})
//
watch(() => selectCardQuan.value, () => {
cardQuanArray.value.forEach(item => {
if (item['card_quan_order_id'] === selectCardQuan.value) {
useCardQuanNumMax.value = item['quan_remain_nums']
}
})
})
watch( ()=>selectSaleType.value, () => {
emits('getSaleType', selectSaleType.value)
})
//
function test() {
console.log('selectCardQuan', selectCardQuan.value)
}
</script>
<template>
<div>
<el-row type="flex" justify="start" align="middle" style="margin-left: 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-radio-group v-model="selectSaleType">
<el-radio label="ticket">单影票</el-radio>
<el-radio label="goods">单卖品</el-radio>
<el-radio label="all">影票加卖品</el-radio>
</el-radio-group>
</el-col>
</el-row>
<el-row type="flex" justify="start" align="middle" style="margin: 20px 0 0 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-radio-group v-model="quan_type" @change="test">
<el-radio label="yushouquan">扫码券</el-radio>
<el-radio label="equan">会员卡赠券</el-radio>
</el-radio-group>
</el-col>
</el-row>
<el-row v-if="quan_type==='yushouquan'" style="margin: 20px 0 30px 100px">
<el-select-v2
v-model="selectQuan"
filterable
:options="quanArray"
placeholder="选择券,可多选"
multiple
clearable="clearable"
collapse-tags
collapse-tags-tooltip
:max-collapse-tags="2"
style="width: 460px"
/>
</el-row>
<el-row v-if="quan_type==='equan'" style="margin: 20px 0 30px 100px">
<el-input style="width: 240px; margin-right: 20px" v-model="cardNum"></el-input>
<el-button style="margin-right: 20px" @click="get_card_quan">查找</el-button>
<el-select v-model="selectCardQuan" placeholder="选择卡内赠券"
clearable="clearable" style="margin-right: 20px">
<el-option v-for="item in cardQuanArray" :key="item['card_quan_order_id']" :label="item['label']"
:value="item['card_quan_order_id']">
{{ item['label'] }}
</el-option>
</el-select>
<el-input-number v-model="useCardQuanNum" :min="1" :max="useCardQuanNumMax"
style="margin-right: 20px"></el-input-number>
<el-button @click="add_card_quan">追加</el-button>
<el-button @click="clear_card_quan">重选</el-button>
</el-row>
</div>
</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>

@ -1,8 +1,9 @@
<script setup>
import {defineProps, ref, reactive, computed, watch, onMounted, onBeforeMount} from 'vue'
import {ref, reactive, computed, watch, onMounted, onBeforeMount} from 'vue'
import {ec_api_set_user_data, ec_api_clear_user_data} from '@/apis/ec_api.js'
import {ElMessage} from "element-plus";
import PackageSelector from "@/components/ec_api/PackageSelector.vue";
import GoodsDiscount from "@/components/ec_api/GoodsDiscount.vue";
// TabArea
const props = defineProps(['goods', 'data'])
@ -15,6 +16,10 @@ const goodsList = reactive([])
const goodsDialogVisible = ref(false)
const optionalPackageInfo = ref({})
//
const discountDialogVisible = ref(false)
const discountDetail = ref({})
//
async function handle_set_user_data() {
let selectGoodsData = []
@ -108,6 +113,21 @@ const getOptionalPackageDetail = (select) => {
handle_set_user_data()
}
//
const getDiscountDetail = (discount) => {
console.log('getDiscountDetail', discount)
discountDialogVisible.value = false
discount.forEach((item) => {
selectGoods.value.forEach((select) => {
if (select.id === discount.id) {
select.discount1 = item.discount1
select.discount2 = item.discount2
}
})
})
console.log('getDiscountDetail-selectGoods.value', selectGoods.value)
handle_set_user_data()
}
onBeforeMount(() => {
//
@ -124,14 +144,20 @@ onBeforeMount(() => {
}
//
if (item.hasOwnProperty('partnerPrice') && item['partnerPrice'] !== null) {
item['final_price'] = parseFloat(item['partnerPrice']).toFixed(2)
item['show_price'] = '合作商价:' + item['partnerPrice']
} else {
item['final_price'] = parseFloat(item['onlinePrice']).toFixed(2)
item['show_price'] = '网售价:' + item['onlinePrice']
}
//
item['buy_num'] = 1
item['is_select'] = false
//
item['discount1'] = 0
item['discount2'] = 0
goodsList.push(item)
})
})
@ -146,7 +172,8 @@ watch(() => selectGoods.value, () => {
<template>
<hr id="break_line"/>
<div style="font-size: 16px; font-weight: bold; color: #909399; text-align: left; margin-bottom: 10px">选择场次
<div style="font-size: 16px; font-weight: bold; color: #909399; text-align: left; margin-bottom: 10px">选择卖品
<el-button size="small" type="primary" @click="discountDialogVisible=true">设置卖品折扣</el-button>
<el-tooltip
class="box-item"
effect="dark"
@ -179,6 +206,8 @@ watch(() => selectGoods.value, () => {
</el-form>
<PackageSelector v-if="goodsDialogVisible" @get_detail="getOptionalPackageDetail" :is_show="goodsDialogVisible"
:package="optionalPackageInfo"></PackageSelector>
<GoodsDiscount v-if="discountDialogVisible" @get_discount="getDiscountDetail" :is_show="discountDialogVisible"
:goods_array="selectGoods"></GoodsDiscount>
</template>
<style scoped>

@ -0,0 +1,47 @@
<script setup>
const props = defineProps(['is_show', 'goods_array'])
const emits = defineEmits(['get_discount'])
function finish() {
const discount_goods = []
props.goods_array.forEach((goods) => {
if (goods.discount1 !== 0 || goods.discount2 !== 0) {
discount_goods.push(goods)
}
})
emits('get_discount', discount_goods)
}
</script>
<template>
<el-dialog v-model="props.is_show" :width="900">
<div style="text-align: left; margin-left: 20px">
<span style="font-weight: bold;">输入卖品折扣</span>&nbsp&nbsp
<span style="font-size: 12px">如果不设置则表示没有三方折扣最多允许设置两组折扣</span>
</div>
<div>
<el-row v-for="goods in props.goods_array" :key="goods.id" style="margin: 10px 0 0 80px">
<el-col :span="9" style="text-align: left"><span>{{ goods.id }}</span>&nbsp&nbsp<span>{{ goods.name }}</span>&nbsp&nbsp<span>{{
goods.final_price
}}</span></el-col>
<el-col :span="12">输入卖品三方折扣&nbsp&nbsp
<el-input-number :min="0" :max="parseFloat(goods.final_price)" :precision="2" size="small" :step="0.01"
v-model="goods.discount1"></el-input-number>
&nbsp
<el-input-number :min="0" :max="parseFloat(goods.final_price)" :precision="2" size="small" :step="0.01"
v-model="goods.discount2"></el-input-number>
</el-col>
</el-row>
</div>
<div v-if="props.goods_array.length === 0" style="font-size: 20px; margin-top: 50px; color: #909399">暂无数据</div>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="finish">完成</el-button>
</div>
</template>
</el-dialog>
</template>
<style scoped>
</style>

@ -1,5 +1,5 @@
<script setup>
import {ref, onBeforeMount, computed, watch, defineEmits} from "vue";
import {ref, onBeforeMount, computed, watch} from "vue";
//
const groupArray = ref([]) //
@ -67,6 +67,10 @@ onBeforeMount(() => {
console.log('PackageSelector onBeforeMount')
//
packageDetail.forEach((group) => {
// jsonintxmlstring
group.index = typeof group.index === "string" ? parseInt(group.index) : group.index
group.gnum = typeof group.gnum === "string" ? parseInt(group.gnum) : group.gnum
//
groupArray.value.push(group)
selectGoods.value[group['index']] = {
'num': group['gnum'],

@ -2,6 +2,7 @@
import {ref, reactive, computed, watch, onMounted, onBeforeMount} from 'vue'
import {ec_api_set_user_data, ec_api_clear_user_data} from '@/apis/ec_api.js'
import {ElMessage} from "element-plus";
import TicketDiscount from "@/components/ec_api/TicketDiscount.vue";
// TabArea
const props = defineProps(['seat', 'data'])
@ -13,11 +14,16 @@ const row_x = ref(0)
const col_y = ref(0)
const req_timer = ref(null)
//
const discountDialogVisible = ref(false)
const discountDetail = ref([])
const discountSeat = ref([])
//
async function handle_set_user_data() {
console.log('selectSeats.value', selectSeats.value)
let selectSeatData = []
props.seat.forEach((item)=> {
props.seat.forEach((item) => {
if (selectSeats.value.indexOf(item['cineSeatId']) >= 0) {
selectSeatData.push(item)
}
@ -49,7 +55,7 @@ async function handle_set_user_data() {
function delay_handle_user_data() {
if (req_timer.value === null) {
req_timer.value = setTimeout(()=>handle_set_user_data(), 1000)
req_timer.value = setTimeout(() => handle_set_user_data(), 1000)
}
}
@ -92,6 +98,9 @@ function handleSeatData() {
props.seat.forEach((item) => {
item['key'] = item['cineSeatId']
item['disable'] = item['seatStatus'] !== 'ok' || item['type'] === 'road' //
// discount
item['ticketDiscount'] = 0
item['serviceDiscount'] = 0
//
if (item['type'] === 'road') {
item['label'] = ''
@ -128,10 +137,10 @@ function handleSeatData() {
if (pairValueShuangTemp === '') {
pairValueShuangTemp = item['pairValue']
item['name'] = item['name'] + '-' + q
}else{
} else {
if (item['pairValue'] === pairValueShuangTemp) {
item['name'] = item['name'] + '-' + q
}else{
} else {
q++
pairValueShuangTemp = item['pairValue']
item['name'] = item['name'] + '-' + q
@ -142,10 +151,10 @@ function handleSeatData() {
if (pairValueMultiTemp === '') {
pairValueMultiTemp = item['pairValue']
item['name'] = item['name'] + '-' + m
}else{
} else {
if (item['pairValue'] === pairValueMultiTemp) {
item['name'] = item['name'] + '-' + m
}else{
} else {
m++
pairValueMultiTemp = item['pairValue']
item['name'] = item['name'] + '-' + m
@ -162,8 +171,33 @@ function handleSeatData() {
console.log('seatList', seatList)
}
const getDiscountDetail = (discount) => {
console.log('getDiscountDetail', discount)
discountDialogVisible.value = false
discount.forEach((item) => {
selectSeats.value.forEach((seat) => {
if (seat.cineSeatId === item.cineSeatId) {
seat.ticketDiscount = item.ticketDiscount
seat.serviceDiscount = item.serviceDiscount
}
})
})
console.log('getDiscountDetail-selectSeats.value', selectSeats.value)
handle_set_user_data()
}
function getDiscountSeat() {
discountSeat.value = []
props.seat.forEach((item) => {
if (selectSeats.value.indexOf(item['cineSeatId']) >= 0) {
discountSeat.value.push(item)
}
})
}
watch(() => selectSeats.value, () => {
getDiscountSeat()
clearTimeout(req_timer.value)
req_timer.value = null
delay_handle_user_data()
@ -174,6 +208,7 @@ watch(() => selectSeats.value, () => {
<template>
<hr id="break_line"/>
<div style="font-size: 16px; font-weight: bold; color: #909399; text-align: left; margin-bottom: 10px">选择座位
<el-button size="small" type="primary" @click="discountDialogVisible=true">设置影票折扣</el-button>
<el-tooltip
class="box-item"
effect="dark"
@ -199,7 +234,8 @@ watch(() => selectSeats.value, () => {
</el-form-item>
</el-form>
</div>
<TicketDiscount v-if="discountDialogVisible" @get_discount="getDiscountDetail" :is_show="discountDialogVisible"
:ticket_data="discountSeat"></TicketDiscount>
</template>
<style scoped>

@ -17,6 +17,7 @@ import MovieShow from "@/components/ec_api/MovieShow.vue";
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";
// store
@ -38,6 +39,9 @@ const UserApiData = ref({api: {}, base_info: {}, tab: {}})
const req_loading = ref(false)
const send_btn = ref('发送')
//
const saleType = ref('ticket')
//
//
function handleParamsChange(newCheckedResult) {
@ -59,6 +63,8 @@ function markIsChecked() {
UserApiData.value.api[activeTab.value].params.forEach(item => {
if (item['is_checked'] === true) {
ApiTableRef.value[UserApiData.value.tab[activeTab.value]].toggleRowSelection(item, true)
}else{
ApiTableRef.value[UserApiData.value.tab[activeTab.value]].toggleRowSelection(item, false)
}
})
}
@ -242,11 +248,11 @@ function send_request() {
}
async function get_suggest() {
async function get_suggest(options={sale_type: saleType.value}) {
if (UserApiData.value.api[activeTab.value].reload === true) {
const api_type = UserApiData.value.api[activeTab.value].type
const api = UserApiData.value.api[activeTab.value].path
await ec_api_get_suggest(api_type, api).then(
await ec_api_get_suggest(api_type, api, options).then(
(res) => {
console.log('get_suggest', api, res)
let result = true
@ -289,6 +295,78 @@ 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'){
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 = false
}
})
}
if (saleType.value === 'goods'){
UserApiData.value.api[activeTab.value].params.forEach( param => {
if (["play_id", "price", "seat_num"].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
}
})
}
}
markIsChecked()
}
//
function get_quan_detail(quan, cardQuan, quanType) {
console.log('quanType', quanType)
if (quanType === 'yushouquan') {
console.log('yushouquan')
UserApiData.value.api[activeTab.value].params.forEach( param => {
if (param['param'] === 'coupons') {
console.log('coupons', quan)
param['value'] = quan.join(',')
param['is_checked'] = true
}
if (param['param'] === 'card_coupons') {
param['value'] = null
param['is_checked'] = false
}
})
} else {
UserApiData.value.api[activeTab.value].params.forEach( param => {
if (param['param'] === 'card_coupons') {
param['value'] = JSON.stringify(cardQuan)
param['is_checked'] = true
}
if (param['param'] === 'coupons') {
param['value'] = null
param['is_checked'] = false
}
})
}
console.log('get_quan_detail - saleType.value', saleType.value)
get_suggest()
markIsChecked()
}
//
function test() {
console.log('store.state.ecApiModule.ec_api_data', store.state.ecApiModule.ec_api_data)
@ -349,14 +427,24 @@ const goodsList = computed(() => {
if (api.format === 'json') {
if (api.response === '{"root": "root"}') {
return []
} else if (String(api.handled['res']['status']) !== '1') {
console.log("api.handled['res']['data'] else-if", api.handled['res']['data'])
console.log("api.handled['res']['status']", api.handled['res']['status'])
console.log("typeof api.handled['res']['status']", typeof api.handled['res']['status'])
return []
} else {
console.log("api.handled['res']['data']", api.handled['res']['data'])
return api.handled['res']['data']
}
}
if (api.format === 'xml' || api.format === 'html') {
if (api.response === '<root></root>') {
return []
} else if (String(api.handled['res']['status']) !== '1') {
console.log("api.handled['res']['status']", api.handled['res']['status'])
console.log("typeof api.handled['res']['status']", typeof api.handled['res']['status'])
return []
} else {
console.log("api.handled['res']['data']", api.handled['res']['data'])
return api.handled['res']['data']
@ -468,7 +556,6 @@ const ace_options = {
</script>
<template>
<el-tabs ref="tabsRef" v-model="activeTab" type="border-card">
<el-tab-pane
v-for="(api, index) in store.state.ecApiModule.ec_api_data.api"
@ -477,6 +564,8 @@ const ace_options = {
:name="api['id']"
:disabled="req_loading"
>
<CheckQuan v-if="api['path'] === 'seat/check-coupon'" @getQuan="get_quan_detail" @getSaleType="get_sale_type"
:cid="UserApiData['base_info']['cinema']"></CheckQuan>
<el-table
ref='ApiTableRef'
:data="UserApiData.api[api['id']].params"

@ -0,0 +1,48 @@
<script setup>
const props = defineProps(['is_show', 'ticket_data'])
const emits = defineEmits(['get_discount'])
function finish() {
const discount_seats = []
props.ticket_data.forEach((seat) => {
if (seat.ticketDiscount !==0 || seat.serviceDiscount !== 0) {
discount_seats.push(seat)
}
})
emits('get_discount', discount_seats)
}
</script>
<template>
<el-dialog v-model="props.is_show" :width="1000">
<div style="text-align: left; margin-left: 20px">
<span style="font-weight: bold;">输入影票折扣</span>&nbsp&nbsp
<span style="font-size: 12px">如果不输入则表示不使用三方折扣此处应小于票价和服务费</span>
</div>
<div>
<el-row v-for="seat in props.ticket_data" :key="seat.cineSeatId" style="margin: 10px 0 0 80px">
<el-col :span="3" style="text-align: left">
<span>{{ seat.rowValue }}-{{ seat.columnValue }}: {{ seat.name }}</span></el-col>
<el-col :span="8">输入影票折扣&nbsp&nbsp
<el-input-number :min="0" :precision="2" size="small" :step="0.01"
v-model="seat.ticketDiscount"></el-input-number>
</el-col>
<el-col :span="8">输入服务费折扣&nbsp&nbsp
<el-input-number :min="0" :precision="2" size="small" :step="0.01"
v-model="seat.serviceDiscount"></el-input-number>
</el-col>
</el-row>
</div>
<div v-if="props.ticket_data.length === 0" style="font-size: 20px; margin-top: 50px; color: #909399">暂无数据</div>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="finish">完成</el-button>
</div>
</template>
</el-dialog>
</template>
<style scoped>
</style>
Loading…
Cancel
Save