4a7f9634 by zhangmeng

Merge branch 'refs/heads/购票修改' into dev

2 parents dab5de01 d5cb2ae2
......@@ -133,6 +133,12 @@
form.extJson?.ticketDate?.ticketType == 1 ? '~' + dayjs(form?.extJson?.ticketDate?.ticketEnd).format('YYYY-MM-DD') : ''
}}
</el-col>
<el-col v-if="form?.extJson?.ticketDate?.isCountSale==1">
{{
language == 0 ? `满${form?.extJson?.ticketDate.counts}人优惠` : `Discount for up to ${form?.extJson?.ticketDate.counts} people`
}}<span v-if="language == 0">{{ form?.extJson?.ticketDate.discount }}</span>
<span v-else>{{ (10 - form?.extJson?.ticketDate.discount) * 10 + '%' }}off</span>
</el-col>
<!-- <el-col>-->
<!-- {{-->
<!-- language == 0 ? '原价票' : 'Cost Ticket'-->
......
......@@ -104,6 +104,21 @@
x {{ customerArr_b.length }}
{{ languageFormat(language, "张", "tickets") }}
</div>
<div v-if="tickType.isCountSale == 1" style="border-top: 1px solid #dcdfe6;margin-top: 20px">
<p>{{
language == 0 ? `满${tickType.counts}人优惠` : `Discount for up to ${tickType.counts} people`
}}</p>
<div class="ticket">
<div v-if="language==0" style="color: orange;font-weight: 600">
{{ tickType.discount }}
</div>
<div v-else style="color: orange;font-weight: 600">
{{ (10 - tickType.discount) * 10 + '%' }}off
</div>
</div>
</div>
</div>
<div class="detail_b">
<div class="sum_txt">
......@@ -114,6 +129,13 @@
{{
language == 0 ? (price.total_cn * 1).toFixed(2) : (price.total_en * 1).toFixed(2)
}}
<span v-if="tickType.isCountSale==1&&orderForm.message.length>=tickType.counts" class="total">
{{ language == 0 ? "¥" : "€" }}
{{
language == 0 ? (price.total_cnY * 1).toFixed(2) : (price.total_enY * 1).toFixed(2)
}}
</span>
</div>
</div>
</div>
......@@ -187,7 +209,9 @@ const orderForm = ref({
})
const price = ref({
total_en: 0,
total_cn: 0
total_cn: 0,
total_enY: 0,
total_cnY: 0,
})
const tickType = ref({})
const matchType = ref({})
......@@ -195,21 +219,21 @@ const rules = ref({
contacts: [
{
required: true,
message: languageFormat(language, "请输入联系人", "Please enter the contact person"),
message: languageFormat(language.value, "请输入联系人", "Please enter the contact person"),
trigger: "blur"
},
],
phone: [
{
required: true,
message: languageFormat(language, "请输入联系电话", "Please enter the contact phone number"),
message: languageFormat(language.value, "请输入联系电话", "Please enter the contact phone number"),
trigger: "blur"
},
],
message: [
{
required: true,
message: languageFormat(language, "请选择观众", "Please select the audience"),
message: languageFormat(language.value, "请选择观众", "Please select the audience"),
trigger: "blur"
},
],
......@@ -235,17 +259,26 @@ function changeGroup(e) {
// 计算价格
price.value = {
total_en: 0,
total_cn: 0
total_cn: 0,
total_enY: 0,
total_cnY: 0,
}
orderForm.value.message.forEach(v => {
if (v.discount) {
price.value.total_cn += (tickType.value.rebatePrice * 1)
price.value.total_en += (tickType.value.rebatePriceEn * 1)
price.value.total_cnY = price.value.total_cn += (tickType.value.rebatePrice * 1)
price.value.total_enY = price.value.total_en += (tickType.value.rebatePriceEn * 1)
} else {
price.value.total_cn += (tickType.value.price * 1)
price.value.total_en += (tickType.value.priceEn * 1)
price.value.total_cnY = price.value.total_cn += (tickType.value.price * 1)
price.value.total_enY = price.value.total_en += (tickType.value.priceEn * 1)
}
})
// 计算购票优惠
if (tickType.value.isCountSale == 1 && orderForm.value.message.length >= tickType.value.counts) {
price.value.total_cn = ((price.value.total_cn * (tickType.value.discount * 10)) / 100).toFixed(2)
price.value.total_en = ((price.value.total_en * (tickType.value.discount * 10)) / 100).toFixed(2)
}
}
console.log(orderForm.value.message)
......@@ -368,6 +401,12 @@ div {
box-sizing: border-box;
}
.total {
color: #9f9c9c;
font-size: 20px;
text-decoration: line-through
}
.qrcode {
width: 200px;
height: 200px;
......
......@@ -60,64 +60,94 @@
</van-count-down>
</div>
<div v-else>
<!-- 时间 -->
<!-- 票档 -->
<div class="select_item_box">
<div class="label">
{{ triggerLanguage(language, "场次", "Session") }}
{{ triggerLanguage(language, "票档", "Tickets") }} :
</div>
<div v-if="matchForm.ticketLayout">
<span style="color: #493ceb;cursor:pointer;font-weight:600;font-size: 14px"
@click="show=true"> <span style="color: red;font-size: 18px">*</span>
{{
language == 0 ? '点击查看场馆布局' : 'View Venue Layout'
}}
</span>
</div>
</div>
<div class="select_item_box">
<div class="select_item">
<div
v-for="(it, index) in tickList"
v-for="(it, index) in tickClass"
:key="index"
:class="[
it.id == selectForm.id ? 'tagActive' : 'tag',
it.isView==0?'forbid':''
it.id == selectForm.latId ? 'tagActive' : 'tag',
]"
@click="selectTick(it)"
@click="select(it)"
>
{{ it.name }} <span v-if="it.ticketType==1" class="tao">{{
language == 0 ? '套票' : 'Package ticket'
}}</span>
{{ it.name }}
</div>
</div>
</div>
<!-- 票档 -->
<!-- 时间 -->
<div class="select_item_box">
<div class="label">
{{ triggerLanguage(language, "票档", "Tickets") }}
{{ triggerLanguage(language, "场次", "Session") }} :
</div>
</div>
<div class="select_item_box">
<div class="select_item">
<div
v-for="(it, index) in tickClass"
v-for="(it, index) in tickList"
:key="index"
:class="[
it.id == selectForm.latId ? 'tagActive' : 'tag',
it.id == selectForm.id ? 'tagActive' : 'tag',
it.isView==0?'forbid':''
]"
@click="select(it)"
@click="selectTick(it)"
>
{{ it.name }}
{{ it.name }} <span v-if="it.ticketType==1" class="tao">{{
language == 0 ? '套票' : 'Package ticket'
}}</span>
</div>
</div>
</div>
<!-- 价格 -->
<div class="select_item_box">
<div class="label">
{{ triggerLanguage(language, '价格', "Price") }}
{{ triggerLanguage(language, '价格', "Price") }} :
</div>
</div>
<div class="select_item_box">
<div class="select_item">
<div class="tagActive" style="min-width: 80px">
{{ language == 0 ? '¥' : '€' }} {{ language == 0 ? selectForm.price : selectForm.priceEn }}
</div>
</div>
</div>
<!-- 购票备注-->
<div v-if="matchForm.ticketRemark" class="select_item_box">
<div class="label">
{{
triggerLanguage(language, '购票备注', "Ticket Purchase Note")
}} :
</div>
</div>
<div v-if="matchForm.ticketRemark" class="select_item_box">
<div class="select_item">
{{ matchForm.ticketRemark }}
</div>
</div>
<div v-if="endTime<=0" class="btn" style="margin-left: 40px;opacity: 0.5;cursor: not-allowed;"
<div v-if="endTime<=0" class="btn" style="margin-left: 40px;opacity: 0.5;cursor: not-allowed;margin-top: 10px"
@click="toSelectClosed">
{{
triggerLanguage(language, "售票结束", "Sale closed")
}}
</div>
<div v-else class="btn" style="margin-left: 40px" @click="toSelectSeat()">
<div v-else class="btn" style="margin-left: 40px;margin-top: 10px" @click="toSelectSeat()">
{{
triggerLanguage(language, "立即购票", "Buy tickets now")
}}
......@@ -135,6 +165,12 @@
</div>
<div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes"/>
<div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice"/>
<el-dialog v-model="show" title="" width="1000px">
<div>
<img :src="fillImgUrl(matchForm.ticketLayout)" alt="" style="width: 100%">
</div>
</el-dialog>
</div>
</div>
</template>
......@@ -157,6 +193,7 @@ const useStore = useUserStore()
const user = computed(() => useUserStore().user)
const route = useRoute();
const router = useRouter();
const show = ref(false)
const activeId = ref(route.params.activeId)
const flag = ref(false)
const active = ref(1)
......@@ -202,15 +239,21 @@ async function getTicketList() {
// 根据票档获取场次
async function getTicketListType() {
let arr = []
const res = await listApi({latId: selectForm.value.latId})
tickList.value = res.rows
flag.value = tickList.value.some((item) => {
return item.isView == 0
})
tickList.value.forEach(v => {
if (flag.value && v.ticketType == 1) v.isView = 0
})
for (const v of res.rows) {
if (v.isView == 0) arr.push(v)
}
for (const v of res.rows) {
if (arr.length > 0 && v.ticketType == 1) {
for (const c of arr) {
if ((c.ticketStart >= v.ticketStart) && (c.ticketStart <= v.ticketEnd)) {
v.isView = 0
}
}
}
}
}
function select(v) {
......@@ -314,7 +357,7 @@ function toSelectClosed() {
font-size: 28px;
color: #000000;
line-height: 1.6;
margin-bottom: 34px;
margin-bottom: 15px;
}
.time {
......@@ -330,12 +373,12 @@ function toSelectClosed() {
font-size: 16px;
color: #000;
line-height: 24px;
margin-bottom: 33px;
margin-bottom: 15px;
}
.select_item_box {
display: flex;
margin-bottom: 30px;
margin-bottom: 10px;
&:last-child {
margin-bottom: 0;
......@@ -468,9 +511,12 @@ function toSelectClosed() {
margin-right: 15px;
}
.info {padding: 0;
.info {
padding: 0;
.title {
font-size: 14px;margin: 0;
font-size: 14px;
margin: 0;
}
.time, .address, .label, .tip {
......@@ -501,7 +547,9 @@ function toSelectClosed() {
font-size: 12px;
}
}
.btn {display: inline-block;
.btn {
display: inline-block;
margin: 10px 0 0;
background: linear-gradient(270deg, #493ceb 0%, #8623fc 100%);
border-radius: 20px;
......
......@@ -38,6 +38,9 @@
<span v-if="b.status == '7'" class="bg-danger">{{
language == 0 ? '退款审核中' : 'Refund in review'
}}</span>
<span v-if="b.status == '-1'" class="bg-blue">{{
language == 0 ? '已核销' : 'Completed'
}}</span>
</div>
<el-row align="middle" class="pd20 mt10" justify="space-between">
......@@ -140,6 +143,7 @@
<el-button v-if="b.viewStatus==5" class="mb10" plain round size="small" type="" @click="unsubscribe(b)">
{{ language == 0 ? '退订' : 'Unsubscribe' }}
</el-button>
</div>
</el-col>
</el-row>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!