4a7f9634 by zhangmeng

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

2 parents dab5de01 d5cb2ae2
...@@ -133,6 +133,12 @@ ...@@ -133,6 +133,12 @@
133 form.extJson?.ticketDate?.ticketType == 1 ? '~' + dayjs(form?.extJson?.ticketDate?.ticketEnd).format('YYYY-MM-DD') : '' 133 form.extJson?.ticketDate?.ticketType == 1 ? '~' + dayjs(form?.extJson?.ticketDate?.ticketEnd).format('YYYY-MM-DD') : ''
134 }} 134 }}
135 </el-col> 135 </el-col>
136 <el-col v-if="form?.extJson?.ticketDate?.isCountSale==1">
137 {{
138 language == 0 ? `满${form?.extJson?.ticketDate.counts}人优惠` : `Discount for up to ${form?.extJson?.ticketDate.counts} people`
139 }}<span v-if="language == 0">{{ form?.extJson?.ticketDate.discount }}</span>
140 <span v-else>{{ (10 - form?.extJson?.ticketDate.discount) * 10 + '%' }}off</span>
141 </el-col>
136 <!-- <el-col>--> 142 <!-- <el-col>-->
137 <!-- {{--> 143 <!-- {{-->
138 <!-- language == 0 ? '原价票' : 'Cost Ticket'--> 144 <!-- language == 0 ? '原价票' : 'Cost Ticket'-->
......
...@@ -104,6 +104,21 @@ ...@@ -104,6 +104,21 @@
104 x {{ customerArr_b.length }} 104 x {{ customerArr_b.length }}
105 {{ languageFormat(language, "张", "tickets") }} 105 {{ languageFormat(language, "张", "tickets") }}
106 </div> 106 </div>
107 <div v-if="tickType.isCountSale == 1" style="border-top: 1px solid #dcdfe6;margin-top: 20px">
108 <p>{{
109 language == 0 ? `满${tickType.counts}人优惠` : `Discount for up to ${tickType.counts} people`
110 }}</p>
111 <div class="ticket">
112 <div v-if="language==0" style="color: orange;font-weight: 600">
113 {{ tickType.discount }}
114 </div>
115 <div v-else style="color: orange;font-weight: 600">
116 {{ (10 - tickType.discount) * 10 + '%' }}off
117 </div>
118 </div>
119 </div>
120
121
107 </div> 122 </div>
108 <div class="detail_b"> 123 <div class="detail_b">
109 <div class="sum_txt"> 124 <div class="sum_txt">
...@@ -114,6 +129,13 @@ ...@@ -114,6 +129,13 @@
114 {{ 129 {{
115 language == 0 ? (price.total_cn * 1).toFixed(2) : (price.total_en * 1).toFixed(2) 130 language == 0 ? (price.total_cn * 1).toFixed(2) : (price.total_en * 1).toFixed(2)
116 }} 131 }}
132
133 <span v-if="tickType.isCountSale==1&&orderForm.message.length>=tickType.counts" class="total">
134 {{ language == 0 ? "¥" : "€" }}
135 {{
136 language == 0 ? (price.total_cnY * 1).toFixed(2) : (price.total_enY * 1).toFixed(2)
137 }}
138 </span>
117 </div> 139 </div>
118 </div> 140 </div>
119 </div> 141 </div>
...@@ -187,7 +209,9 @@ const orderForm = ref({ ...@@ -187,7 +209,9 @@ const orderForm = ref({
187 }) 209 })
188 const price = ref({ 210 const price = ref({
189 total_en: 0, 211 total_en: 0,
190 total_cn: 0 212 total_cn: 0,
213 total_enY: 0,
214 total_cnY: 0,
191 }) 215 })
192 const tickType = ref({}) 216 const tickType = ref({})
193 const matchType = ref({}) 217 const matchType = ref({})
...@@ -195,21 +219,21 @@ const rules = ref({ ...@@ -195,21 +219,21 @@ const rules = ref({
195 contacts: [ 219 contacts: [
196 { 220 {
197 required: true, 221 required: true,
198 message: languageFormat(language, "请输入联系人", "Please enter the contact person"), 222 message: languageFormat(language.value, "请输入联系人", "Please enter the contact person"),
199 trigger: "blur" 223 trigger: "blur"
200 }, 224 },
201 ], 225 ],
202 phone: [ 226 phone: [
203 { 227 {
204 required: true, 228 required: true,
205 message: languageFormat(language, "请输入联系电话", "Please enter the contact phone number"), 229 message: languageFormat(language.value, "请输入联系电话", "Please enter the contact phone number"),
206 trigger: "blur" 230 trigger: "blur"
207 }, 231 },
208 ], 232 ],
209 message: [ 233 message: [
210 { 234 {
211 required: true, 235 required: true,
212 message: languageFormat(language, "请选择观众", "Please select the audience"), 236 message: languageFormat(language.value, "请选择观众", "Please select the audience"),
213 trigger: "blur" 237 trigger: "blur"
214 }, 238 },
215 ], 239 ],
...@@ -235,17 +259,26 @@ function changeGroup(e) { ...@@ -235,17 +259,26 @@ function changeGroup(e) {
235 // 计算价格 259 // 计算价格
236 price.value = { 260 price.value = {
237 total_en: 0, 261 total_en: 0,
238 total_cn: 0 262 total_cn: 0,
263 total_enY: 0,
264 total_cnY: 0,
239 } 265 }
240 orderForm.value.message.forEach(v => { 266 orderForm.value.message.forEach(v => {
241 if (v.discount) { 267 if (v.discount) {
242 price.value.total_cn += (tickType.value.rebatePrice * 1) 268 price.value.total_cnY = price.value.total_cn += (tickType.value.rebatePrice * 1)
243 price.value.total_en += (tickType.value.rebatePriceEn * 1) 269 price.value.total_enY = price.value.total_en += (tickType.value.rebatePriceEn * 1)
270
244 } else { 271 } else {
245 price.value.total_cn += (tickType.value.price * 1) 272 price.value.total_cnY = price.value.total_cn += (tickType.value.price * 1)
246 price.value.total_en += (tickType.value.priceEn * 1) 273 price.value.total_enY = price.value.total_en += (tickType.value.priceEn * 1)
247 } 274 }
248 }) 275 })
276
277 // 计算购票优惠
278 if (tickType.value.isCountSale == 1 && orderForm.value.message.length >= tickType.value.counts) {
279 price.value.total_cn = ((price.value.total_cn * (tickType.value.discount * 10)) / 100).toFixed(2)
280 price.value.total_en = ((price.value.total_en * (tickType.value.discount * 10)) / 100).toFixed(2)
281 }
249 } 282 }
250 console.log(orderForm.value.message) 283 console.log(orderForm.value.message)
251 284
...@@ -368,6 +401,12 @@ div { ...@@ -368,6 +401,12 @@ div {
368 box-sizing: border-box; 401 box-sizing: border-box;
369 } 402 }
370 403
404 .total {
405 color: #9f9c9c;
406 font-size: 20px;
407 text-decoration: line-through
408 }
409
371 .qrcode { 410 .qrcode {
372 width: 200px; 411 width: 200px;
373 height: 200px; 412 height: 200px;
......
...@@ -60,64 +60,94 @@ ...@@ -60,64 +60,94 @@
60 </van-count-down> 60 </van-count-down>
61 </div> 61 </div>
62 <div v-else> 62 <div v-else>
63 <!-- 时间 --> 63
64 <!-- 票档 -->
64 <div class="select_item_box"> 65 <div class="select_item_box">
65 <div class="label"> 66 <div class="label">
66 {{ triggerLanguage(language, "场次", "Session") }} 67 {{ triggerLanguage(language, "票档", "Tickets") }} :
68 </div>
69 <div v-if="matchForm.ticketLayout">
70 <span style="color: #493ceb;cursor:pointer;font-weight:600;font-size: 14px"
71 @click="show=true"> <span style="color: red;font-size: 18px">*</span>
72 {{
73 language == 0 ? '点击查看场馆布局' : 'View Venue Layout'
74 }}
75 </span>
67 </div> 76 </div>
77 </div>
78 <div class="select_item_box">
68 <div class="select_item"> 79 <div class="select_item">
69 <div 80 <div
70 v-for="(it, index) in tickList" 81 v-for="(it, index) in tickClass"
71 :key="index" 82 :key="index"
72 :class="[ 83 :class="[
73 it.id == selectForm.id ? 'tagActive' : 'tag', 84 it.id == selectForm.latId ? 'tagActive' : 'tag',
74 it.isView==0?'forbid':''
75 ]" 85 ]"
76 @click="selectTick(it)" 86 @click="select(it)"
77 > 87 >
78 {{ it.name }} <span v-if="it.ticketType==1" class="tao">{{ 88 {{ it.name }}
79 language == 0 ? '套票' : 'Package ticket'
80 }}</span>
81 </div> 89 </div>
82 </div> 90 </div>
83 </div> 91 </div>
84 <!-- 票档 --> 92
93 <!-- 时间 -->
85 <div class="select_item_box"> 94 <div class="select_item_box">
86 <div class="label"> 95 <div class="label">
87 {{ triggerLanguage(language, "票档", "Tickets") }} 96 {{ triggerLanguage(language, "场次", "Session") }} :
88 </div> 97 </div>
98 </div>
99 <div class="select_item_box">
89 <div class="select_item"> 100 <div class="select_item">
90 <div 101 <div
91 v-for="(it, index) in tickClass" 102 v-for="(it, index) in tickList"
92 :key="index" 103 :key="index"
93 :class="[ 104 :class="[
94 it.id == selectForm.latId ? 'tagActive' : 'tag', 105 it.id == selectForm.id ? 'tagActive' : 'tag',
106 it.isView==0?'forbid':''
95 ]" 107 ]"
96 @click="select(it)" 108 @click="selectTick(it)"
97 > 109 >
98 {{ it.name }} 110 {{ it.name }} <span v-if="it.ticketType==1" class="tao">{{
111 language == 0 ? '套票' : 'Package ticket'
112 }}</span>
99 </div> 113 </div>
100 </div> 114 </div>
101 </div> 115 </div>
116
102 <!-- 价格 --> 117 <!-- 价格 -->
103 <div class="select_item_box"> 118 <div class="select_item_box">
104 <div class="label"> 119 <div class="label">
105 {{ triggerLanguage(language, '价格', "Price") }} 120 {{ triggerLanguage(language, '价格', "Price") }} :
106 </div> 121 </div>
122 </div>
123 <div class="select_item_box">
107 <div class="select_item"> 124 <div class="select_item">
108 <div class="tagActive" style="min-width: 80px"> 125 <div class="tagActive" style="min-width: 80px">
109 {{ language == 0 ? '¥' : '€' }} {{ language == 0 ? selectForm.price : selectForm.priceEn }} 126 {{ language == 0 ? '¥' : '€' }} {{ language == 0 ? selectForm.price : selectForm.priceEn }}
110 </div> 127 </div>
111 </div> 128 </div>
112 </div> 129 </div>
130 <!-- 购票备注-->
131 <div v-if="matchForm.ticketRemark" class="select_item_box">
132 <div class="label">
133 {{
134 triggerLanguage(language, '购票备注', "Ticket Purchase Note")
135 }} :
136 </div>
137 </div>
138 <div v-if="matchForm.ticketRemark" class="select_item_box">
139 <div class="select_item">
140 {{ matchForm.ticketRemark }}
141 </div>
142 </div>
113 143
114 <div v-if="endTime<=0" class="btn" style="margin-left: 40px;opacity: 0.5;cursor: not-allowed;" 144 <div v-if="endTime<=0" class="btn" style="margin-left: 40px;opacity: 0.5;cursor: not-allowed;margin-top: 10px"
115 @click="toSelectClosed"> 145 @click="toSelectClosed">
116 {{ 146 {{
117 triggerLanguage(language, "售票结束", "Sale closed") 147 triggerLanguage(language, "售票结束", "Sale closed")
118 }} 148 }}
119 </div> 149 </div>
120 <div v-else class="btn" style="margin-left: 40px" @click="toSelectSeat()"> 150 <div v-else class="btn" style="margin-left: 40px;margin-top: 10px" @click="toSelectSeat()">
121 {{ 151 {{
122 triggerLanguage(language, "立即购票", "Buy tickets now") 152 triggerLanguage(language, "立即购票", "Buy tickets now")
123 }} 153 }}
...@@ -135,6 +165,12 @@ ...@@ -135,6 +165,12 @@
135 </div> 165 </div>
136 <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes"/> 166 <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes"/>
137 <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice"/> 167 <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice"/>
168
169 <el-dialog v-model="show" title="" width="1000px">
170 <div>
171 <img :src="fillImgUrl(matchForm.ticketLayout)" alt="" style="width: 100%">
172 </div>
173 </el-dialog>
138 </div> 174 </div>
139 </div> 175 </div>
140 </template> 176 </template>
...@@ -157,6 +193,7 @@ const useStore = useUserStore() ...@@ -157,6 +193,7 @@ const useStore = useUserStore()
157 const user = computed(() => useUserStore().user) 193 const user = computed(() => useUserStore().user)
158 const route = useRoute(); 194 const route = useRoute();
159 const router = useRouter(); 195 const router = useRouter();
196 const show = ref(false)
160 const activeId = ref(route.params.activeId) 197 const activeId = ref(route.params.activeId)
161 const flag = ref(false) 198 const flag = ref(false)
162 const active = ref(1) 199 const active = ref(1)
...@@ -202,15 +239,21 @@ async function getTicketList() { ...@@ -202,15 +239,21 @@ async function getTicketList() {
202 239
203 // 根据票档获取场次 240 // 根据票档获取场次
204 async function getTicketListType() { 241 async function getTicketListType() {
242 let arr = []
205 const res = await listApi({latId: selectForm.value.latId}) 243 const res = await listApi({latId: selectForm.value.latId})
206 tickList.value = res.rows 244 tickList.value = res.rows
207 flag.value = tickList.value.some((item) => { 245 for (const v of res.rows) {
208 return item.isView == 0 246 if (v.isView == 0) arr.push(v)
209 }) 247 }
210 tickList.value.forEach(v => { 248 for (const v of res.rows) {
211 if (flag.value && v.ticketType == 1) v.isView = 0 249 if (arr.length > 0 && v.ticketType == 1) {
212 }) 250 for (const c of arr) {
213 251 if ((c.ticketStart >= v.ticketStart) && (c.ticketStart <= v.ticketEnd)) {
252 v.isView = 0
253 }
254 }
255 }
256 }
214 } 257 }
215 258
216 function select(v) { 259 function select(v) {
...@@ -314,7 +357,7 @@ function toSelectClosed() { ...@@ -314,7 +357,7 @@ function toSelectClosed() {
314 font-size: 28px; 357 font-size: 28px;
315 color: #000000; 358 color: #000000;
316 line-height: 1.6; 359 line-height: 1.6;
317 margin-bottom: 34px; 360 margin-bottom: 15px;
318 } 361 }
319 362
320 .time { 363 .time {
...@@ -330,12 +373,12 @@ function toSelectClosed() { ...@@ -330,12 +373,12 @@ function toSelectClosed() {
330 font-size: 16px; 373 font-size: 16px;
331 color: #000; 374 color: #000;
332 line-height: 24px; 375 line-height: 24px;
333 margin-bottom: 33px; 376 margin-bottom: 15px;
334 } 377 }
335 378
336 .select_item_box { 379 .select_item_box {
337 display: flex; 380 display: flex;
338 margin-bottom: 30px; 381 margin-bottom: 10px;
339 382
340 &:last-child { 383 &:last-child {
341 margin-bottom: 0; 384 margin-bottom: 0;
...@@ -468,9 +511,12 @@ function toSelectClosed() { ...@@ -468,9 +511,12 @@ function toSelectClosed() {
468 margin-right: 15px; 511 margin-right: 15px;
469 } 512 }
470 513
471 .info {padding: 0; 514 .info {
515 padding: 0;
516
472 .title { 517 .title {
473 font-size: 14px;margin: 0; 518 font-size: 14px;
519 margin: 0;
474 } 520 }
475 521
476 .time, .address, .label, .tip { 522 .time, .address, .label, .tip {
...@@ -501,7 +547,9 @@ function toSelectClosed() { ...@@ -501,7 +547,9 @@ function toSelectClosed() {
501 font-size: 12px; 547 font-size: 12px;
502 } 548 }
503 } 549 }
504 .btn {display: inline-block; 550
551 .btn {
552 display: inline-block;
505 margin: 10px 0 0; 553 margin: 10px 0 0;
506 background: linear-gradient(270deg, #493ceb 0%, #8623fc 100%); 554 background: linear-gradient(270deg, #493ceb 0%, #8623fc 100%);
507 border-radius: 20px; 555 border-radius: 20px;
......
...@@ -38,6 +38,9 @@ ...@@ -38,6 +38,9 @@
38 <span v-if="b.status == '7'" class="bg-danger">{{ 38 <span v-if="b.status == '7'" class="bg-danger">{{
39 language == 0 ? '退款审核中' : 'Refund in review' 39 language == 0 ? '退款审核中' : 'Refund in review'
40 }}</span> 40 }}</span>
41 <span v-if="b.status == '-1'" class="bg-blue">{{
42 language == 0 ? '已核销' : 'Completed'
43 }}</span>
41 </div> 44 </div>
42 45
43 <el-row align="middle" class="pd20 mt10" justify="space-between"> 46 <el-row align="middle" class="pd20 mt10" justify="space-between">
...@@ -140,6 +143,7 @@ ...@@ -140,6 +143,7 @@
140 <el-button v-if="b.viewStatus==5" class="mb10" plain round size="small" type="" @click="unsubscribe(b)"> 143 <el-button v-if="b.viewStatus==5" class="mb10" plain round size="small" type="" @click="unsubscribe(b)">
141 {{ language == 0 ? '退订' : 'Unsubscribe' }} 144 {{ language == 0 ? '退订' : 'Unsubscribe' }}
142 </el-button> 145 </el-button>
146
143 </div> 147 </div>
144 </el-col> 148 </el-col>
145 </el-row> 149 </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!