Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
杨炀
/
dance-pc
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
19522552
authored
2025-05-29 10:45:35 +0800
by
华明祺
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge branch 'dev' of
https://code.itechtop.cn/yangyang/dance-pc
into dev
2 parents
6332ec8d
36649f49
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
496 additions
and
247 deletions
public/img/code.jpg
src/apiPc/match.js
src/plugins/modal.js
src/viewsPc/booking/component/choosePerson.vue
src/viewsPc/booking/pay.vue
src/viewsPc/booking/ticket/confirmOrder.vue
src/viewsPc/booking/ticket/index.vue
src/viewsPc/booking/travelDetail.vue
src/viewsPc/booking/travelOrder.vue
src/viewsPc/center/myReservation.vue
src/viewsPc/components/homeQuick.vue
src/viewsPc/components/querybackNumber.vue
src/viewsPc/index.vue
src/viewsPc/index_en.vue
src/viewsPc/match/components/allSportsmanListForPersonal.vue
src/viewsPc/match/detail_en.vue
src/viewsPc/saiC/index.vue
vite.config.js
public/img/code.jpg
View file @
1952255
159 KB
|
W:
|
H:
75.6 KB
|
W:
|
H:
2-up
Swipe
Onion skin
src/apiPc/match.js
View file @
1952255
...
...
@@ -344,6 +344,15 @@ export function getPerPersonList(query, userId) {
})
}
// 选择队友
export
function
getMate
(
data
)
{
return
request
({
url
:
`/systemj/personInfo/getMate`
,
method
:
'post'
,
data
})
}
// 获取团队报名时已选人员
export
function
getChooseDoneGroupCoachs
(
cptId
,
groupId
)
{
...
...
@@ -789,10 +798,11 @@ export function getZNList(params) {
}
// 团体报名校验
export
function
preCheckForGroup
(
groupId
)
{
export
function
preCheckForGroup
(
groupId
,
type
)
{
return
request
({
url
:
`/systemj/personInfo/preCheckForGroup/
${
groupId
}
`
,
method
:
'get'
method
:
'get'
,
params
:
{
type
}
})
}
...
...
src/plugins/modal.js
View file @
1952255
import
{
ElMessage
,
ElMessageBox
,
ElNotification
,
ElLoading
}
from
'element-plus'
import
{
useStorage
}
from
"@vueuse/core/index"
;
import
{
useStorage
}
from
'@vueuse/core/index'
const
language
=
useStorage
(
'language'
,
0
)
const
language
=
useStorage
(
'language'
,
0
)
let
loadingInstance
export
default
{
...
...
@@ -23,19 +23,19 @@ export default {
},
// 弹出提示
alert
(
content
)
{
return
ElMessageBox
.
alert
(
content
,
language
.
value
==
0
?
language
.
value
==
0
?
'系统提示'
:
'Tips'
:
'Tips'
)
return
ElMessageBox
.
alert
(
content
,
language
.
value
==
0
?
language
.
value
==
0
?
'系统提示'
:
'Tips'
:
'Tips'
)
},
// 错误提示
alertError
(
content
)
{
return
ElMessageBox
.
alert
(
content
,
language
.
value
==
0
?
language
.
value
==
0
?
'系统提示'
:
'Tips'
:
'Tips'
,
{
type
:
'error'
})
return
ElMessageBox
.
alert
(
content
,
language
.
value
==
0
?
language
.
value
==
0
?
'系统提示'
:
'Tips'
:
'Tips'
,
{
type
:
'error'
})
},
// 成功提示
alertSuccess
(
content
)
{
return
ElMessageBox
.
alert
(
content
,
language
.
value
==
0
?
'系统提示'
:
'Tips'
,
{
type
:
'success'
})
return
ElMessageBox
.
alert
(
content
,
language
.
value
==
0
?
'系统提示'
:
'Tips'
,
{
type
:
'success'
})
},
// 警告提示
alertWarning
(
content
)
{
return
ElMessageBox
.
alert
(
content
,
language
.
value
==
0
?
'系统提示'
:
'Tips'
,
{
type
:
'warning'
})
return
ElMessageBox
.
alert
(
content
,
language
.
value
==
0
?
'系统提示'
:
'Tips'
,
{
type
:
'warning'
})
},
// 通知提示
notify
(
content
)
{
...
...
@@ -55,17 +55,17 @@ export default {
},
// 确认窗体
confirm
(
content
)
{
return
ElMessageBox
.
confirm
(
content
,
language
.
value
==
0
?
'系统提示'
:
'Tips'
,
{
confirmButtonText
:
language
.
value
==
0
?
'确定'
:
'OK'
,
cancelButtonText
:
language
.
value
==
0
?
'取消'
:
'Cancel'
,
return
ElMessageBox
.
confirm
(
content
,
language
.
value
==
0
?
'系统提示'
:
'Tips'
,
{
confirmButtonText
:
language
.
value
==
0
?
'确定'
:
'OK'
,
cancelButtonText
:
language
.
value
==
0
?
'取消'
:
'Cancel'
,
type
:
'warning'
})
},
// 提交内容
prompt
(
content
)
{
return
ElMessageBox
.
prompt
(
content
,
language
.
value
==
0
?
'系统提示'
:
'Tips'
,
{
confirmButtonText
:
language
.
value
==
0
?
'确定'
:
'OK'
,
cancelButtonText
:
language
.
value
==
0
?
'取消'
:
'Cancel'
,
return
ElMessageBox
.
prompt
(
content
,
language
.
value
==
0
?
'系统提示'
:
'Tips'
,
{
confirmButtonText
:
language
.
value
==
0
?
'确定'
:
'OK'
,
cancelButtonText
:
language
.
value
==
0
?
'取消'
:
'Cancel'
,
type
:
'warning'
})
},
...
...
src/viewsPc/booking/component/choosePerson.vue
View file @
1952255
<
template
>
<el-dialog
v-model=
"show"
title=
"出行人信息
"
center
append-to-body
>
<el-dialog
v-model=
"show"
width=
"500"
:title=
"languageFormat(language, '出行人信息', 'Travelers')
"
center
append-to-body
>
<el-button
type=
"primary"
plain
@
click=
"addPeopl"
>
{{
languageFormat
(
language
,
"新增"
,
"Add"
)
}}
</el-button>
<el-radio-group
v-model=
"personId"
>
<div
v-for=
"(it, index) in personList"
:key=
"index"
class=
"e_item"
>
<el-radio
border
:value=
"it.id"
:disabled=
"hasPersonIds?.indexOf(it.id)!=-1"
>
<el-form>
<el-form-item
prop=
"message"
>
<div
class=
"p_box"
>
<div
class=
"people"
>
<el-radio-group
v-model=
"personId"
>
<div
v-for=
"(it, index) in personList"
:key=
"index"
class=
"e_item"
>
<el-radio
border
:value=
"it.id"
:disabled=
"hasPersonIds?.indexOf(it.id)!=-1"
>
<div>
{{
it
.
name
}}
{{
it
.
idCard
}}
</div>
</el-radio>
</div>
</el-radio-group>
<div
class=
"name"
>
{{
it
.
name
}}
</div>
<div
class=
"code"
>
<span
v-if=
"it.idcType==0"
>
{{
language
==
0
?
'身份证'
:
'ID number'
}}
</span>
<span
v-if=
"it.idcType==1"
>
{{
language
==
0
?
'护照'
:
'Passport'
}}
</span>
<span
v-if=
"it.idcType==2"
>
{{
language
==
0
?
'其他'
:
'Other'
}}
</span>
{{
it
.
idCard
}}
</div>
</div>
</el-form-item>
</el-form>
</el-radio>
</div>
</el-radio-group>
<template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"show = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"addPerson"
>
完成
</el-button>
<el-button
@
click=
"show = false"
>
{{
languageFormat
(
language
,
"取 消"
,
"Cancel"
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"addPerson"
>
{{
languageFormat
(
language
,
"完 成"
,
"Ok"
)
}}
</el-button>
</div>
</
template
>
</el-dialog>
...
...
@@ -32,21 +28,21 @@
<el-dialog
v-model=
"showAdd"
title=
"新增出行人"
center
append-to-body
>
<el-form
ref=
"formRef"
:model=
"form"
label-width=
"100px"
size=
"large"
style=
"margin: 80px"
ref=
"formRef"
:model=
"form"
label-width=
"100px"
size=
"large"
style=
"margin: 80px"
>
<el-form-item
:label=
"language==0?'姓名':'name'"
prop=
"name"
required
:show-message=
"false"
>
<el-input
v-model=
"form.name"
:placeholder=
"language==0?'请输入':'Please input'"
/>
<el-input
v-model=
"form.name"
:placeholder=
"language==0?'请输入':'Please input'"
/>
</el-form-item>
<el-form-item
:label=
"language==0?'证件类型':'ID Type'"
prop=
"idcType"
required
:show-message=
"false"
>
<el-select
v-model=
"form.idcType"
:placeholder=
"language==0?'请选择':'Please choose'"
>
<el-option
:label=
"language==0?'身份证':'Identity card'"
value=
"0"
/>
<el-option
:label=
"language==0?'护照':'Passport'"
value=
"1"
/>
<el-option
:label=
"language==0?'其他':'Other'"
value=
"2"
/>
<el-option
:label=
"language==0?'身份证':'Identity card'"
value=
"0"
/>
<el-option
:label=
"language==0?'护照':'Passport'"
value=
"1"
/>
<el-option
:label=
"language==0?'其他':'Other'"
value=
"2"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"language==0?'证件号':'ID number'"
prop=
"idCard"
required
:show-message=
"false"
>
<el-input
v-model=
"form.idCard"
:placeholder=
"language==0?'请输入证件号':'Please enter the ID after ah'"
/>
<el-input
v-model=
"form.idCard"
:placeholder=
"language==0?'请输入证件号':'Please enter the ID after ah'"
/>
</el-form-item>
</el-form>
...
...
@@ -61,15 +57,15 @@
</template>
<
script
setup
>
import
{
aadSceneCustomer
,
checkSceneCustomer
,
getMyFriends
}
from
'/@/apiPc/booking'
import
{
languageFormat
}
from
'/@/viewsPc/seat/utils/language'
import
{
onMounted
,
ref
}
from
'vue'
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
aadSceneCustomer
,
checkSceneCustomer
,
getMyFriends
}
from
'/@/apiPc/booking'
import
{
languageFormat
}
from
'/@/viewsPc/seat/utils/language'
import
{
onMounted
,
ref
}
from
'vue'
import
{
useStorage
}
from
'@vueuse/core/index'
import
_
from
'lodash'
import
{
getCurrentInstance
}
from
'@vue/runtime-core'
import
{
getCurrentInstance
}
from
'@vue/runtime-core'
const
emit
=
defineEmits
([
'addPerson'
])
const
{
proxy
}
=
getCurrentInstance
()
const
{
proxy
}
=
getCurrentInstance
()
const
show
=
ref
(
false
)
const
showAdd
=
ref
(
false
)
...
...
@@ -104,11 +100,11 @@ const addPerson = () => {
gateType
:
currParams
.
gateType
}).
then
((
res
)
=>
{
if
(
res
.
data
==
201
)
{
proxy
.
$modal
.
msgError
(
'护照只能购买成人票
'
)
proxy
.
$modal
.
msgError
(
language
.
value
==
0
?
'护照只能购买成人票'
:
'Passport can only buy adult tickets
'
)
}
else
if
(
res
.
data
==
202
)
{
proxy
.
$modal
.
msgError
(
'此身份证不能购买老人票
'
)
proxy
.
$modal
.
msgError
(
language
.
value
==
0
?
'此身份证不能购买老人票'
:
'This ID cannot buy senior tickets
'
)
}
else
if
(
res
.
data
==
203
)
{
proxy
.
$modal
.
msgError
(
'此身份证不能购买儿童票
'
)
proxy
.
$modal
.
msgError
(
language
.
value
==
0
?
'此身份证不能购买儿童票'
:
'This ID cannot buy child tickets
'
)
}
else
{
show
.
value
=
false
emit
(
'addPerson'
,
Object
.
assign
(
currParams
,
{
...
...
@@ -155,5 +151,28 @@ defineExpose({
</
script
>
<
style
scoped
lang=
"scss"
>
.e_item
{
margin
:
20px
20px
0
0
;}
.el-radio-group
{
display
:
block
;
}
.e_item
{
margin
:
20px
0
0
0
;
width
:
100%
;
.el-radio
{
width
:
100%
;
height
:
auto
;
padding
:
10px
;
}
.name
{
font-size
:
16px
;
}
.code
{
font-size
:
14px
;
margin
:
4px
0
0
;
color
:
#999
;
}
}
</
style
>
...
...
src/viewsPc/booking/pay.vue
View file @
1952255
This diff is collapsed.
Click to expand it.
src/viewsPc/booking/ticket/confirmOrder.vue
View file @
1952255
...
...
@@ -14,63 +14,80 @@
<div
class=
"info"
>
<div
class=
"name"
>
{{
TickForm2
.
ticketTypeName
}}
</div>
<div
class=
"address"
>
{{
TickForm2
.
stadiumName
}}
</div>
<div
class=
"address"
>
{{
TickForm2
.
sessionType
==
'1000'
?
'日间场'
:
'夜间场'
}}
</div>
<div
class=
"address"
>
{{
TickForm2
.
ticketName
}}
</div>
<div
class=
"address"
>
{{
TickForm2
.
stadiumName
}}
|
<span
v-if=
"TickForm2.sessionType=='1000'"
>
{{
language
==
0
?
'日间场'
:
'Day'
}}
</span>
<span
v-else
>
{{
language
==
0
?
'夜间场'
:
'Night'
}}
</span>
|
{{
TickForm2
.
ticketName
}}
</div>
<div
v-if=
"TickForm2.ticketType=='0'"
class=
"address"
>
剩余数量
:
{{
leftCount
}}
</div>
<div
v-if=
"TickForm2.ticketType=='0'"
class=
"address"
>
{{
language
==
0
?
'剩余数量'
:
'Remaining Quantity'
}}
:
{{
leftCount
}}
</div>
</div>
<div
class=
"ticket_info mb20"
>
<div
class=
"tit_box"
>
<div
class=
"line"
/>
<div
class=
"line"
/>
<div
class=
"txt"
>
{{
languageFormat
(
language
,
"订票信息"
,
"Ticket Info"
)
}}
</div>
</div>
<div
class=
"form"
>
<el-form
ref=
"formRef"
:model=
"orderForm"
:rules=
"rules"
label-width=
"1
2
0px"
>
<el-form
ref=
"formRef"
:model=
"orderForm"
:rules=
"rules"
label-width=
"1
4
0px"
>
<div
v-if=
"TickForm2.ticketType == '1'"
>
<el-form-item
:label=
"language == 0 ? '桌号' : 'zuohao'"
>
<el-form-item
:label=
"language == 0 ? '桌号' : 'Table'"
>
<el-popover
placement=
"right"
:width=
"400"
trigger=
"hover"
>
<template
#
reference
>
<div
class=
"text-primary underline pointer"
@
click=
"showImg"
>
{{
language
==
0
?
'查看区域布局'
:
' View Area Layout'
}}
</div>
</
template
>
<el-image
:src=
"fillImgUrl(tickImg)"
style=
"width: 100%;"
:preview-src-list=
"[fillImgUrl(tickImg)]"
/>
</el-popover>
<el-radio-group
v-model=
"currDesk"
>
<el-radio-button
v-for=
"(it, index) in deskList"
:key=
"index"
:label=
"it.deskNo"
:value=
"it"
:disabled=
"it.status!=0"
/>
<el-radio-button
v-for=
"(it, index) in deskList"
:key=
"index"
:label=
"it.deskNo"
:value=
"it"
:disabled=
"it.status!=0"
/>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"language == 0 ? '座位号' : '
zuoweihao
'"
>
<el-form-item
:label=
"language == 0 ? '座位号' : '
Seat
'"
>
<el-checkbox-group
v-model=
"currSeat"
>
<el-checkbox-button
v-for=
"(it, index) in currDesk?.seatList"
:key=
"index"
:label=
"it.seatNo"
:value=
"it"
:disabled=
"it.status!=0"
/>
<el-checkbox-button
v-for=
"(it, index) in currDesk?.seatList"
:key=
"index"
:label=
"it.seatNo"
:value=
"it"
:disabled=
"it.status!=0"
/>
</el-checkbox-group>
</el-form-item>
<el-form-item
label=
"已选座位号"
>
<el-tag
v-for=
"s in currSeat"
:key=
"s.id"
>
{{
s
.
deskNo
}}
-
{{
s
.
seatNo
}}
</el-tag>
<el-form-item
:label=
"language == 0 ?'已选座位号':'Selected Seat'"
>
<el-tag
class=
"mr10"
v-for=
"(s,index) in currSeat"
:key=
"s.id"
closable
@
close=
"delSeat(s,index)"
>
{{ s.deskNo }} - {{ s.seatNo }}
</el-tag>
</el-form-item>
</div>
<el-form-item
:label=
"language == 0 ? '联系人' : 'contact person'"
prop=
"contacts"
:label=
"language == 0 ? '联系人' : 'contact person'"
prop=
"contacts"
>
<el-input
v-model=
"orderForm.contacts"
:placeholder=
" language == 0 ? '请输入联系人' : 'Please enter the contact person'"
style=
"width: 320px"
v-model=
"orderForm.contacts"
:placeholder=
" language == 0 ? '请输入联系人' : 'Please enter the contact person'"
style=
"width: 320px"
/>
</el-form-item>
<el-form-item
:label=
"language == 0 ? '联系电话' : 'contact phone'"
prop=
"phone"
:label=
"language == 0 ? '联系电话' : 'contact phone'"
prop=
"phone"
>
<el-input
v-model=
"orderForm.phone"
:placeholder=
" language == 0 ? '请输入联系电话' : 'Please enter the contact phone number'"
style=
"width: 320px"
v-model=
"orderForm.phone"
:placeholder=
" language == 0 ? '请输入联系电话' : 'Please enter the contact phone number'"
style=
"width: 320px"
/>
</el-form-item>
<el-form-item
:label=
"language == 0 ? '观看人' : 'Viewer'"
prop=
"customerIds"
>
<div
class=
"p_box"
>
<div
class=
"people"
>
<el-checkbox-group
v-model=
"orderForm.customerIds"
@
change=
"changeGroup"
>
<div
v-for=
"(it, index) in personnelList"
:key=
"index"
class=
"prople_item"
>
<div
v-for=
"(it, index) in personnelList"
:key=
"index"
class=
"prople_item"
>
<div>
<div
class=
"name"
>
{{ it.name }}
<!-- <span v-if="it.discount" class="tag_t p-right">{{-->
...
...
@@ -79,10 +96,7 @@
</div>
<div
class=
"idcard"
>
{{ it.idCard }}
</div>
</div>
<el-checkbox
:value=
"it.id"
:disabled=
"!!it.disabled"
/>
<el-checkbox
:value=
"it.id"
:disabled=
"!!it.disabled"
/>
</div>
</el-checkbox-group>
</div>
...
...
@@ -98,7 +112,7 @@
<el-col
:lg=
"8"
class=
"right"
>
<div
class=
"tit_box"
>
<div
class=
"line"
/>
<div
class=
"line"
/>
<div
class=
"txt"
>
{{ languageFormat(language, "订单明细", "Order summary") }}
</div>
...
...
@@ -109,7 +123,7 @@
<div
class=
"time"
>
{{ language == 0 ? '票价' : 'Cost Ticket' }}
</div>
<p
/>
<p/>
<div
class=
"ticket"
>
{{ language == 0 ? TickForm2.price : TickForm2.priceEn }}
<span>
{{ language == 0 ? '元' : 'Euro' }}
</span>
...
...
@@ -123,7 +137,9 @@
</div>
<div
class=
"price_num"
>
<span>
{{ language == 0 ? "¥" : "€" }}
</span>
{{
((
language
==
0
?
TickForm2
.
price
:
TickForm2
.
priceEn
)
*
orderForm
.
customerIds
.
length
).
toFixed
(
2
)
}}
{{
((language == 0 ? TickForm2.price : TickForm2.priceEn) * orderForm.customerIds.length).toFixed(2)
}}
</div>
</div>
</div>
...
...
@@ -137,7 +153,7 @@
</span>
<span
class=
"value"
>
<span>
{{ language == 0 ? "¥" : "€" }}
</span>
{{
((
language
==
0
?
TickForm2
.
price
:
TickForm2
.
priceEn
)
*
orderForm
.
customerIds
.
length
).
toFixed
(
2
)
}}
{{ ((language == 0 ?
TickForm2.price :
TickForm2.priceEn) * orderForm.customerIds.length).toFixed(2) }}
</span>
</div>
<div
class=
"pay"
@
click=
"paymentHandle"
>
...
...
@@ -150,7 +166,7 @@
</template>
<
script
setup
>
import
{
ref
,
computed
,
onMounted
}
from
'vue'
import
{
ref
,
computed
,
onMounted
}
from
'vue'
import
{
customerListApi
,
submitOrderTicket
,
...
...
@@ -160,12 +176,12 @@ import {
checkPurchasedCustomers
,
getDeskInfo
}
from
'@/apiPc/booking'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
languageFormat
}
from
'@/viewsPc/seat/utils/language.js'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
languageFormat
}
from
'@/viewsPc/seat/utils/language.js'
import
useUserStore
from
'/@/store/modules/user'
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
useStorage
}
from
'@vueuse/core/index'
import
_
from
'lodash'
import
{
useRoute
,
useRouter
}
from
'vue-router'
import
{
useRoute
,
useRouter
}
from
'vue-router'
const
useStore
=
useUserStore
()
...
...
@@ -211,8 +227,9 @@ const leftCount = ref({})
const
deskList
=
ref
([])
const
currDesk
=
ref
(
null
)
const
currSeat
=
ref
([])
const
tickImg
=
ref
()
onMounted
(()
=>
{
tickImg
.
value
=
route
.
query
.
tickImg
customerList
()
getDetail
()
...
...
@@ -241,6 +258,10 @@ onMounted(() => {
})
})
function
delSeat
(
item
,
index
)
{
currSeat
.
value
.
splice
(
index
,
1
)
}
function
changeGroup
(
e
)
{
if
(
e
.
length
>
0
)
{
checkPurchasedCustomers
({
...
...
@@ -300,7 +321,7 @@ async function paymentHandle() {
confirmButtonText
:
language
.
value
==
0
?
'确定'
:
'Confirm'
,
cancelButtonText
:
language
.
value
==
0
?
'取消'
:
'Cancel'
,
type
:
'warning'
}).
then
(
async
()
=>
{
}).
then
(
async
()
=>
{
try
{
const
orderCustomerList
=
[]
_
.
each
(
orderForm
.
value
.
customerIds
,
(
id
,
index
)
=>
{
...
...
@@ -369,7 +390,7 @@ async function paymentHandle() {
}
async
function
getDetail
()
{
const
res
=
await
getTicketInfoByActivityId
({
activityId
:
orderForm
.
value
.
activeId
})
const
res
=
await
getTicketInfoByActivityId
({
activityId
:
orderForm
.
value
.
activeId
})
TickForm
.
value
=
res
.
data
}
...
...
@@ -379,6 +400,10 @@ function addPeopl() {
path
:
'/booking/ticket/peopleManage'
})
}
const
showImg
=
()
=>
{
}
</
script
>
...
...
@@ -503,7 +528,7 @@ div {
.name
{
font-size
:
16px
;
color
:
#929aa0
;
//
color
:
#929aa0
;
margin-bottom
:
20px
;
.tag_t
{
...
...
src/viewsPc/booking/ticket/index.vue
View file @
1952255
...
...
@@ -221,8 +221,8 @@
<div
class=
"container bottom"
>
<div
style=
"display: flex"
>
<div
:class=
"{'bg':active==1}"
class=
"buBg"
@
click=
"active=1"
>
购票说明
</div>
<div
:class=
"{'bg' :active==2}"
class=
"buBg"
@
click=
"active=2"
>
购票须知
</div>
<div
:class=
"{'bg':active==1}"
class=
"buBg"
@
click=
"active=1"
>
{{ language==0?'购票说明':'Notice' }}
</div>
<div
:class=
"{'bg' :active==2}"
class=
"buBg"
@
click=
"active=2"
>
{{ language==0?'购票须知':'Instructions' }}
</div>
</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"
/>
...
...
@@ -394,6 +394,9 @@ function toSelectSeat() {
params
:
{
activeId
:
activeId
.
value
,
latstId
:
selectForm
.
value
.
latstId
},
query
:
{
tickImg
:
currTick
.
value
.
images
}
})
}
else
{
...
...
src/viewsPc/booking/travelDetail.vue
View file @
1952255
...
...
@@ -126,10 +126,11 @@
<div
class=
"text-center mt30"
>
<el-button
style=
"color: #fff"
:disabled=
"btnDisable"
size=
"large"
style=
"color: #fff"
size=
"large"
class=
"w200px btn-lineG"
:class=
"{'forbid':!(!hotTime[0])}"
round
@
click=
"goOrder"
>
{{ language==0?'立即预订':'BOOK NOW' }}
<span
v-if=
"btnDisable"
>
{{ language==0?'不在预定时间内':'OUT OF ORDER TIME' }}
</span>
<span
v-else
>
{{ language==0?'立即预订':'BOOK NOW' }}
</span>
</el-button>
</div>
</el-card>
...
...
@@ -191,6 +192,7 @@ function dateChange() {
}
function
selectDate
(
date
)
{
query
.
value
.
currentDate
=
date
currentDate1
.
value
=
currentDate
.
value
=
dayjs
(
date
).
toDate
()
console
.
log
(
date
)
}
...
...
@@ -209,7 +211,10 @@ const btnDisable = computed(() => {
})
function
goOrder
(
room
)
{
function
goOrder
()
{
if
(
btnDisable
.
value
){
return
}
ElMessageBox
.
confirm
(
language
.
value
==
0
?
`你当前选择的出行日期为
${
dayjs
(
currentDate
.
value
).
format
(
'YYYY-MM-DD'
)}
是否确定?`
:
`Your current check-in time is
${
dayjs
(
currentDate
.
value
).
format
(
'YYYY-MM-DD'
)}
Are you sure?`
,
{
type
:
'warning'
}).
then
({}).
then
(()
=>
{
checkOrderPay
(
6
).
then
(
res
=>
{
if
(
res
.
data
==
-
100
)
{
...
...
src/viewsPc/booking/travelOrder.vue
View file @
1952255
...
...
@@ -58,22 +58,25 @@
<!-- :picker-options="pickerOptions"-->
</el-form-item>
<el-form-item
v-for=
"(n,i) in gateList"
:key=
"i"
:label=
"language==0? n.name:
'Rooms'
"
prop=
"count"
>
<el-form-item
v-for=
"(n,i) in gateList"
:key=
"i"
:label=
"language==0? n.name:
n.name
"
prop=
"count"
>
<el-input-number
v-model=
"n.count"
:min=
"0"
:max=
"n.leftNum"
@
change=
"changeNum(n)"
/>
<div
class=
"red ml20"
>
<span
v-if=
"language == 0"
>
单价:
{{
n
.
price
}}
</span>
<span
v-else
>
{{
n
.
priceEn
}}
</span>
<span
v-if=
"language == 0"
>
单价:
¥
{{
n
.
price
}}
</span>
<span
v-else
>
€
{{
n
.
priceEn
}}
/ Ticket
</span>
</div>
<div
class=
"red ml20"
>
<span
v-if=
"language == 0"
>
剩余票数:
{{
n
.
leftNum
}}
</span>
<span
v-else
>
{{
n
.
leftNum
}}
Remaining rooms
</span>
<span
v-else
>
{{
n
.
leftNum
}}
sheet remaining
</span>
</div>
</el-form-item>
<div
v-if=
"needPersonNum>0"
class=
"fakeFormItem"
>
<label>
需填写
{{
needPersonNum
}}
位游客
</label>
<label
v-if=
"language == 0"
>
需填写
{{
needPersonNum
}}
位游客
</label>
<label
v-else
>
Need
{{
needPersonNum
}}
visitors
</label>
<div>
<label
class=
"text-warning"
v-show=
"needPersonNum > hasPersonNum"
>
还需填写
{{
needPersonNum
-
hasPersonNum
}}
位游客
</label>
<label
class=
"text-warning"
v-show=
"needPersonNum > hasPersonNum && language==0"
>
还需填写
{{
needPersonNum
-
hasPersonNum
}}
位游客
</label>
</div>
</div>
<div
v-for=
"(n,i) in gateList"
:key=
"i"
>
...
...
@@ -84,9 +87,12 @@
</label>
<div
v-if=
"p.name"
class=
"mation"
>
<div>
{{
p
.
name
}}
</div>
身份证:
{{
p
.
idCard
}}
<span
v-if=
"p.idcType==0"
>
{{
language
==
0
?
'身份证'
:
'ID number'
}}
</span>
<span
v-if=
"p.idcType==1"
>
{{
language
==
0
?
'护照'
:
'Passport'
}}
</span>
<span
v-if=
"p.idcType==2"
>
{{
language
==
0
?
'其他'
:
'Other'
}}
</span>
:
{{
p
.
idCard
}}
</div>
<el-icon
@
click=
"showAddPerson(n, j,p)"
><Edit
/></el-icon>
<el-icon
@
click=
"showAddPerson(n, j,p)"
color=
"#453DEA"
><Edit
/></el-icon>
</div>
</div>
...
...
@@ -107,13 +113,13 @@
<div
v-for=
"(c, index) in gateList"
v-show=
"c.count>0"
:key=
"index"
class=
"ccitem"
>
{{
c
.
name
}}
<span
v-if=
"language==0"
>
{{
c
.
count
}}
*
{{
'¥'
}}{{
c
.
price
}}
</span>
<span
v-else
>
{{
c
.
count
}}
*
{{
'€'
}}
{{
c
.
priceEn
}}
</span>
<span
v-if=
"language==0"
>
{{
c
.
count
}}
*
{{
'¥'
}}{{
c
.
price
}}
</span>
<span
v-else
>
{{
c
.
count
}}
*
{{
'€'
}}
{{
c
.
priceEn
}}
</span>
</div>
<label>
{{
language
==
0
?
'共计'
:
'Total'
}}
<span
class=
"fr bigMoney"
>
{{
language
==
0
?
'¥'
:
'€'
}}{{
money
}}
</span></label>
>
{{
language
==
0
?
'¥'
:
'€'
}}
{{
money
}}
</span></label>
</div>
</el-col>
...
...
@@ -457,7 +463,7 @@ function submit() {
line-height
:
32px
;
flex
:
0
0
auto
;
display
:
inline-flex
;
justify-content
:
flex-end
;
align-items
:
center
;
gap
:
10px
;}
align-items
:
center
;
gap
:
10px
;
white-space
:
nowrap
;
}
}
.tip
{
font-size
:
14px
;
color
:
#666
;
padding
:
0
10px
;}
.personIt
{
display
:
flex
;
align-items
:
center
;
...
...
src/viewsPc/center/myReservation.vue
View file @
1952255
...
...
@@ -8,17 +8,17 @@
<!--
<el-button
class=
"fr"
type=
"primary"
plain
@
click=
"toInvoice"
>
{{
language
==
0
?
'发票开具'
:
'Invoice'
}}
</el-button>
-->
<!--
<el-button
class=
"fr"
type=
"primary"
plain
@
click=
"toInvoice"
>
{{
language
==
0
?
'我的发票'
:
'My Invoice'
}}
</el-button>
-->
</div>
<el-empty
v-if=
"list?.length == 0"
:image=
"`/img/order_no.png`"
:image-size=
"228"
/>
<el-empty
v-if=
"list?.length == 0"
:image=
"`/img/order_no.png`"
:image-size=
"228"
/>
<div
class=
"pd20"
>
<div
v-for=
"b in list"
class=
"item"
>
<div
class=
"title"
>
<label
v-if=
"b.orderType == 0"
class=
"blueTag"
>
{{
language
==
0
?
'酒店'
:
'HOTEL'
}}
</label>
<label
v-if=
"b.orderType == 1"
class=
"purpleTag"
>
{{
language
==
0
?
'车辆'
:
'TRANSPORTATION'
}}
</label>
<label
v-if=
"b.orderType == 2"
class=
"
orang
eTag"
>
{{
language
==
0
?
'餐饮'
:
'DINING'
}}
</label>
<label
v-if=
"b.orderType == 3"
class=
"
orang
eTag"
>
{{
language
==
0
?
'化妆'
:
'MakeUp'
}}
</label>
<label
v-if=
"b.orderType == 2"
class=
"
blu
eTag"
>
{{
language
==
0
?
'餐饮'
:
'DINING'
}}
</label>
<label
v-if=
"b.orderType == 3"
class=
"
purpl
eTag"
>
{{
language
==
0
?
'化妆'
:
'MakeUp'
}}
</label>
<label
v-if=
"b.orderType == 4"
class=
"orangeTag"
>
{{
language
==
0
?
'拍摄'
:
'Shooting '
}}
</label>
<label
v-if=
"b.orderType == 5"
class=
"
orange
Tag"
>
{{
language
==
0
?
'票务'
:
'TICKETING '
}}
</label>
<label
v-if=
"b.orderType == 5"
class=
"
green
Tag"
>
{{
language
==
0
?
'票务'
:
'TICKETING '
}}
</label>
<label
v-if=
"b.orderType == 6"
class=
"orangeTag"
>
{{
language
==
0
?
'旅游'
:
'Travel '
}}
</label>
<span>
{{
language
==
0
?
'订单编号:'
:
'No.'
}}
{{
b
.
id
}}
</span>
...
...
@@ -28,20 +28,17 @@
<span
v-if=
"b.status == '0'&&b.surplus!='0,0'&&b.surplus!='0'"
class=
"bg-warning"
>
{{
language
==
0
?
'待支付'
:
'Unpaid'
}}
</span>
<span
v-if=
"b.status == '0'&&(b.surplus=='0,0'||b.surplus=='0')"
class=
"bg-warning"
>
{{
language
==
0
?
'已取消'
:
'Canceled'
}}
</span>
<span
v-if=
"b.status == '0'&&(b.surplus=='0,0'||b.surplus=='0')"
class=
"bg-warning"
>
{{
language
==
0
?
'已取消'
:
'Canceled'
}}
</span>
<span
v-if=
"b.status == '1'"
class=
"bg-blue"
>
{{
language
==
0
?
'支付成功'
:
'successful'
}}
</span>
<span
v-if=
"b.status == '2'"
class=
"bg-warning"
>
{{
language
==
0
?
'已取消'
:
'Canceled'
}}
</span>
<span
v-if=
"b.status == '3'||b.status == '4'"
class=
"bg-danger"
>
{{
language
==
0
?
'已退订'
:
'Refunded'
}}
</span>
language
==
0
?
'已退订'
:
'Refunded'
}}
</span>
<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>
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"
>
...
...
@@ -56,7 +53,7 @@
<div
v-if=
"b.orderType == 1"
>
<h3
class=
"name"
>
{{
b
.
name
}}
</h3>
<div>
<p>
{{
b
.
extJsonObj
.
pickUpBo
.
count
}}
人
</p>
<p>
{{
b
.
extJsonObj
.
pickUpBo
.
count
}}
{{
language
==
0
?
'人'
:
'people'
}}
</p>
<p>
{{
b
.
extJsonObj
.
pickUpBo
.
revTime
}}
</p>
</div>
<!--
<p>
{{
b
.
messageObj
}}
</p>
-->
...
...
@@ -84,16 +81,18 @@
<div
v-if=
"b.orderType==5"
>
<h3
class=
"name"
>
{{
b
.
name
}}
</h3>
<p>
<!--
{{
-->
<!--
dayjs
(
b
.
deliveryTime
).
format
(
'YYYY-MM-DD'
)
+
' '
+
b
.
extJsonObj
.
timePeriod
?.
split
(
'-'
)[
0
]
+
'-'
+
dayjs
(
b
.
deliveryTime
).
format
(
'YYYY-MM-DD'
)
+
' '
+
b
.
extJsonObj
.
timePeriod
?.
split
(
'-'
)[
1
]
-->
<!--
}}
-->
<p
v-if=
"b.extJsonObj.ticketDate.name"
>
{{
b
.
extJsonObj
.
ticketDate
.
name
}}
</p>
<p>
{{
b
.
extJsonObj
.
atName
}}
|
{{
b
.
extJsonObj
.
atsName
}}
|
{{
b
.
extJsonObj
.
atstName
}}
</p>
<p
v-for=
"p in b.extJsonObj?.orderCustomerList"
>
<el-tag
class=
"mr10"
v-if=
"p.deskNo"
>
{{
p
.
deskNo
}}
-
{{
p
.
seatNo
}}
</el-tag>
{{
p
.
name
}}
-
{{
p
.
paymentType
==
'3'
?
'€'
:
'¥'
}}{{
b
.
extJsonObj
.
price
}}
</p>
</div>
<div
v-if=
"b.orderType == 6"
>
<h3
class=
"name"
>
{{
b
.
name
}}
</h3>
<p>
出行时间
:
{{
b
.
extJsonObj
.
dcStart
}}
</p>
<p>
{{
language
==
0
?
'出行时间'
:
'Travel Time'
}}
:
{{
b
.
extJsonObj
.
dcStart
}}
</p>
<p
v-for=
"t in b.extJsonObj.touristList"
>
{{
t
.
gateName
}}
:
{{
t
.
name
}}
</p>
</div>
</el-col>
...
...
@@ -102,8 +101,8 @@
<p>
{{
b
.
messageObj
?.
roomName
}}
</p>
<p>
{{
b
.
messageObj
?.
roomInfo
}}
</p>
</div>
<div
v-if=
"b.orderType == 1"
/>
<div
v-if=
"b.orderType == 2"
/>
<div
v-if=
"b.orderType == 1"
/>
<div
v-if=
"b.orderType == 2"
/>
<div
v-if=
"b.orderType == 3||b.orderType == 4"
>
<p>
{{
b
.
extJsonObj
.
packageName
}}
</p>
</div>
...
...
@@ -119,44 +118,44 @@
<el-col
:lg=
"6"
:md=
"16"
:sm=
"16"
:xs=
"16"
>
<div
class=
"text-right mb20 text-danger"
>
<el-countdown
v-if=
"b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')"
:value=
"b.countdown"
format=
"mm:ss"
value-style=
"color:#E60012;font-size:16px;"
@
finish=
"finish(b)"
v-if=
"b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')"
:value=
"b.countdown"
format=
"mm:ss"
value-style=
"color:#E60012;font-size:16px;"
@
finish=
"finish(b)"
/>
</div>
<div
class=
"text-right"
>
<el-button
v-if=
"(b.orderType == 0||b.orderType == 5)&&b.viewStatus!=0"
class=
"mb10"
plain
round
size=
"small"
type=
"success"
@
click=
"Rebook(b)"
v-if=
"(b.orderType == 0||b.orderType == 5)&&b.viewStatus!=0"
class=
"mb10"
plain
round
size=
"small"
type=
"success"
@
click=
"Rebook(b)"
>
{{
language
==
0
?
'再次预订'
:
'Rebook'
}}
</el-button>
<el-button
class=
"mb10"
plain
round
size=
"small"
type=
"primary"
@
click=
"goDetail(b)"
class=
"mb10"
plain
round
size=
"small"
type=
"primary"
@
click=
"goDetail(b)"
>
{{
language
==
0
?
'详情'
:
'Detail'
}}
</el-button>
<el-button
v-if=
"b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')"
class=
"mb10"
plain
round
size=
"small"
type=
"primary"
@
click=
"goDetail(b)"
v-if=
"b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')"
class=
"mb10"
plain
round
size=
"small"
type=
"primary"
@
click=
"goDetail(b)"
>
{{
language
==
0
?
'支付'
:
'Pay'
}}
</el-button>
<el-button
v-if=
"b.viewStatus==0"
class=
"mb10"
plain
round
size=
"small"
type=
"warning"
@
click=
"cancel(b)"
v-if=
"b.viewStatus==0"
class=
"mb10"
plain
round
size=
"small"
type=
"warning"
@
click=
"cancel(b)"
>
{{
language
==
0
?
'取消订单'
:
'Cancel Order'
}}
</el-button>
<el-button
v-if=
"b.viewStatus==5"
class=
"mb10"
plain
round
size=
"small"
type=
""
@
click=
"unsubscribe(b)"
v-if=
"b.viewStatus==5"
class=
"mb10"
plain
round
size=
"small"
type=
""
@
click=
"unsubscribe(b)"
>
{{
language
==
0
?
'退订'
:
'Unsubscribe'
}}
</el-button>
...
...
@@ -167,26 +166,26 @@
</div>
</div>
</el-card>
<div
class=
"pd20"
/>
<div
class=
"pd20"
/>
</div>
</
template
>
<
script
setup
>
import
{
onMounted
,
getCurrentInstance
}
from
'@vue/runtime-core'
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
newbilllist
}
from
'@/apiPc/common'
import
{
onMounted
,
getCurrentInstance
}
from
'@vue/runtime-core'
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
newbilllist
}
from
'@/apiPc/common'
import
useUserStore
from
'@/store/modules/user'
import
dayjs
from
'dayjs'
import
{
cancelOrder2
,
cancelOrder
}
from
'/@/apiPc/booking'
import
{
cancelOrder2
,
cancelOrder
}
from
'/@/apiPc/booking'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
const
router
=
useRouter
()
const
language
=
useStorage
(
'language'
,
0
)
const
list
=
ref
([])
const
user
=
useUserStore
().
user
const
{
proxy
}
=
getCurrentInstance
()
const
{
proxy
}
=
getCurrentInstance
()
onMounted
(()
=>
{
getList
()
...
...
@@ -198,7 +197,7 @@ function finish(bill) {
}
function
getList
()
{
newbilllist
({
createById
:
user
.
userId
}).
then
(
res
=>
{
newbilllist
({
createById
:
user
.
userId
}).
then
(
res
=>
{
list
.
value
=
res
.
rows
||
[]
for
(
const
b
of
list
.
value
)
{
b
.
messageObj
=
JSON
.
parse
(
b
.
message
)
||
{}
...
...
@@ -386,6 +385,10 @@ function toInvoice() {
}
.blueTag
{
background-color
:
#1e62c8
;
}
.greenTag
{
background-color
:
#1EC886
;
}
...
...
src/viewsPc/components/homeQuick.vue
View file @
1952255
...
...
@@ -36,9 +36,14 @@
<p>
TRANSPORTATION RESERVATION
</p>
</div>
</el-col>
<!--
<el-col
:sm=
"12"
:lg=
"8"
:xs=
"12"
>
-->
<!--
<div
class=
"item_en"
@
click=
"popRemark(3)"
><img
src=
"@/assets/dance/btn03.png"
>
-->
<!--
<p>
DINING RESERVATION
</p>
-->
<!--
</div>
-->
<!--
</el-col>
-->
<el-col
:sm=
"12"
:lg=
"8"
:xs=
"12"
>
<div
class=
"item_en"
@
click=
"popRemark(
3)"
><img
src=
"@/assets/dance/btn03
.png"
>
<p>
DINING RESERVATION
</p>
<div
class=
"item_en"
@
click=
"popRemark(
8)"
><img
src=
"@/assets/dance/btn08
.png"
>
<p>
TRAVEL SERVICE
</p>
</div>
</el-col>
<el-col
:sm=
"12"
:lg=
"8"
:xs=
"12"
>
...
...
src/viewsPc/components/querybackNumber.vue
View file @
1952255
...
...
@@ -8,13 +8,14 @@
<div
style=
"min-height: 300px"
v-loading=
"loading"
>
<div
v-if=
"!type||type==''"
>
<div
@
click=
"type='0'"
class=
"rItem"
>
{{
language
==
0
?
'个人查询'
:
'Personal Query'
}}
</div>
<div
@
click=
"type='1'"
class=
"rItem"
>
{{
language
==
0
?
'团队查询'
:
'Team Query'
}}
</div>
<div
@
click=
"type='0'"
class=
"rItem"
>
{{
language
==
0
?
'个人查询'
:
'Personal Query'
}}
</div>
<div
@
click=
"type='1'"
class=
"rItem"
>
{{
language
==
0
?
'团队查询'
:
'Team Query'
}}
</div>
</div>
<div
v-if=
"type=='0'"
>
<div
class=
"flex mt30"
>
<el-input
:placeholder=
"language==0?'输入会员号 / 姓名查询':'Enter WDSF MIN / Name to Query'"
v-model=
"query"
clearable
<el-input
:placeholder=
"language==0?'输入会员号 / 姓名查询':'Enter WDSF MIN / Name to Query'"
v-model=
"query"
clearable
@
enter=
"search"
@
blur=
"search"
@
empty=
"search"
/>
<el-button
@
click=
"search"
class=
"btn-lineG"
style=
"color: #fff"
>
{{
language
==
0
?
'查询'
:
'Search'
...
...
@@ -29,19 +30,19 @@
<span
class=
"text-primary"
>
{{
form
.
number
}}
</span>
</div>
<div>
<label>
{{
language
==
0
?
'选手1'
:
'Name1'
}}
:
</label>
{{
form
.
maleName
}}
<label>
{{
language
==
0
?
'选手1'
:
'Name1'
}}
:
</label>
{{
form
.
maleName
}}
<span
v-if=
"form.maleWdsf"
>
-
{{
form
.
maleWdsf
}}
</span>
</div>
<div>
<label>
{{
language
==
0
?
'选手2'
:
'Name2'
}}
:
</label>
{{
form
.
femaleName
}}
<label>
{{
language
==
0
?
'选手2'
:
'Name2'
}}
:
</label>
{{
form
.
femaleName
}}
<span
v-if=
"form.femaleWdsf"
>
-
{{
form
.
femaleWdsf
}}
</span>
</div>
<div>
<label>
{{
language
==
0
?
'代表队'
:
'Represent'
}}
:
</label>
<label>
{{
language
==
0
?
'代表队'
:
'Represent'
}}
:
</label>
{{
form
.
groupName
}}
</div>
<div
v-if=
"form.zuInfo"
>
<label>
{{
language
==
0
?
'组别'
:
'Event'
}}
:
</label>
{{
form
.
zuInfo
}}
<label>
{{
language
==
0
?
'组别'
:
'Event'
}}
:
</label>
{{
form
.
zuInfo
}}
</div>
</div>
</div>
...
...
@@ -52,19 +53,24 @@
</div>
<div
v-if=
"type=='1'"
>
<div
class=
"flex mt20"
>
<el-input
:placeholder=
"language==0?'请输入代表队名称至少两字符':'Enter the representing team name,At least two characters'"
v-model=
"query2"
clearable
@
enter=
"searchTeam"
@
blur=
"searchTeam"
@
empty=
"searchTeam"
/>
<el-input
:placeholder=
"language==0?'请输入代表队名称至少两字符':'Enter the representing team name,At least two characters'"
v-model=
"query2"
clearable
@
enter=
"searchTeam"
@
blur=
"searchTeam"
@
empty=
"searchTeam"
/>
<el-button
@
click=
"searchTeam"
class=
"btn-lineG"
style=
"color: #fff"
>
{{
language
==
0
?
'查询'
:
'Search'
}}
{{
language
==
0
?
'查询'
:
'Search'
}}
</el-button>
</div>
<span
class=
"tip"
>
*
{{
language
==
0
?
'模糊查询'
:
'Fuzzy query'
}}
</span>
<div
class=
"text-danger text-center"
v-if=
"showGroupList"
>
{{
language
==
0
?
'找到多个团体'
:
'Found multiple teams'
}}
</div>
<span
class=
"tip"
>
*
{{
language
==
0
?
'模糊查询'
:
'Fuzzy query'
}}
</span>
<div
class=
"text-danger text-center"
v-if=
"showGroupList"
>
{{
language
==
0
?
'找到多个团体'
:
'Found multiple teams'
}}
</div>
<div
class=
"groupList"
v-if=
"showGroupList"
>
<ul>
<li
v-for=
"(item, index) in groupList"
@
click=
"showDetail(item)"
:key=
"index"
>
{{
item
}}
<el-icon
class=
"fr"
><ArrowRight
/></el-icon>
<li
v-for=
"(item, index) in groupList"
@
click=
"showDetail(item)"
:key=
"index"
>
{{
item
}}
<el-icon
class=
"fr"
>
<ArrowRight/>
</el-icon>
</li>
</ul>
</div>
...
...
@@ -72,11 +78,11 @@
<el-collapse
v-model=
"activeNames"
accordion
>
<el-collapse-item
:name=
"index"
:title=
"team[0][0].groupName"
v-for=
"(team,index) in teamlist"
:key=
"index"
>
<div
class=
"nowteamItem"
v-for=
"(p,jndex) in team"
:key=
"jndex"
>
<div
class=
"fontSize14 text-bold"
>
{{
p
[
0
].
zuInfo
}}
</div>
<div
class=
"fontSize14 text-bold"
>
{{
p
[
0
].
zuInfo
}}
</div>
<div
v-for=
"f in p"
:key=
"f.id"
>
<span
class=
"nowName text-primary"
>
{{
f
.
number
}}
</span>
<span
class=
"mr10"
>
{{
language
==
0
?
'选手1'
:
'Name1'
}}
:
{{
f
.
maleName
}}
</span>
<span>
{{
language
==
0
?
'选手2'
:
'Name2'
}}
:
{{
f
.
femaleName
}}
</span>
<span
class=
"nowName text-primary"
>
{{
f
.
number
}}
</span>
<span
class=
"mr10"
>
{{
language
==
0
?
'选手1'
:
'Name1'
}}
:
{{
f
.
maleName
}}
</span>
<span>
{{
language
==
0
?
'选手2'
:
'Name2'
}}
:
{{
f
.
femaleName
}}
</span>
</div>
</div>
</el-collapse-item>
...
...
@@ -111,7 +117,7 @@ const search = () => {
return
}
getBackNumber
({
query
:
query
.
value
}).
then
(
res
=>
{
if
(
!
res
.
data
||
res
.
data
.
length
==
0
)
{
if
(
!
res
.
data
||
res
.
data
.
length
==
0
)
{
list
.
value
=
[]
//提示 '未找到结果,请重新查询'
ElMessage
.
warning
(
language
.
value
==
0
?
'未找到结果,请重新查询'
:
'No result'
)
...
...
@@ -123,24 +129,24 @@ const search = () => {
}
const
searchTeam
=
()
=>
{
teamlist
.
value
=
[]
if
(
!
query2
.
value
||
query2
.
value
.
length
<
2
)
{
if
(
!
query2
.
value
||
query2
.
value
.
length
<
2
)
{
ElMessage
.
warning
(
language
.
value
==
0
?
'请输入代表队名称至少两字符'
:
'Enter the representing team name,At least two characters'
)
return
}
loading
.
value
=
true
getTeamBackNumberPre
({
query
:
query2
.
value
}).
then
(
res
=>
{
loading
.
value
=
false
if
(
!
res
.
data
||
res
.
data
.
length
==
0
)
{
if
(
!
res
.
data
||
res
.
data
.
length
==
0
)
{
groupList
.
value
=
[]
//提示 '未找到结果,请重新查询'
ElMessage
.
warning
(
language
.
value
==
0
?
'未找到结果,请重新查询'
:
'No result'
)
return
}
groupList
.
value
=
res
.
data
if
(
groupList
.
value
.
length
==
1
)
{
if
(
groupList
.
value
.
length
==
1
)
{
showDetail
(
groupList
.
value
[
0
])
}
if
(
groupList
.
value
.
length
>
1
)
{
if
(
groupList
.
value
.
length
>
1
)
{
showGroupList
.
value
=
true
}
...
...
@@ -157,6 +163,7 @@ const open = (param) => {
defineExpose
({
open
})
function
showDetail
(
name
)
{
query2
.
value
=
name
showGroupList
.
value
=
false
...
...
@@ -169,21 +176,40 @@ function showDetail(name) {
</
script
>
<
style
scoped
lang=
"scss"
>
.tip
{
font-size
:
12px
;
margin
:
4px
0
0
;
display
:
inline-block
;}
.rItem
{
.tip
{
font-size
:
12px
;
margin
:
4px
0
0
;
display
:
inline-block
;
}
.rItem
{
height
:
130px
;
cursor
:
pointer
;
border
:
1px
solid
#e1e1e1
;
border-radius
:
4px
;
width
:
350px
;
text-align
:
center
;
line-height
:
130px
;
padding
:
1px
;
font-size
:
30px
;
color
:
#fff
;
margin
:
20px
auto
;
background
:
linear-gradient
(
90deg
,
#8623FC
,
#453DEA
);
&:hover{
background
:
linear-gradient
(
90deg
,
#453DEA
,
#8623FC
);
box-shadow
:
0
4px
10px
#453DEA
;
border
:
none
;
cursor
:
pointer
;
border
:
1px
solid
#e1e1e1
;
border-radius
:
4px
;
width
:
350px
;
text-align
:
center
;
line-height
:
130px
;
padding
:
1px
;
font-size
:
30px
;
color
:
#fff
;
margin
:
20px
auto
;
background
:
linear-gradient
(
90deg
,
#8623FC
,
#453DEA
);
&:hover
{
background
:
linear-gradient
(
90deg
,
#453DEA
,
#8623FC
);
box-shadow
:
0
4px
10px
#453DEA
;
border
:
none
;
}
}
.nowteamItem
{
width
:
100%
;
border
:
1px
solid
#c8c5ff
;
margin-top
:
20px
;
position
:
relative
;
border-radius
:
4px
;
padding
:
0
0
20px
;
width
:
100%
;
border
:
1px
solid
#c8c5ff
;
margin-top
:
20px
;
position
:
relative
;
border-radius
:
4px
;
padding
:
0
0
20px
;
background
:
#FFFFFF
;
box-sizing
:
border-box
;
...
...
@@ -210,14 +236,38 @@ function showDetail(name) {
}
}
}
.temell
{
.nowteamItem{
padding
:
10px
;
margin
:
0
0
10px
;
.nowName{
font-size
:
15px
;
font-weight
:
bold
;
margin-right
:
10px
}
.text-bold
{
font-weight
:
bold
;}
.fontsize14
{
font-size
:
14px
;}
.nowteamItem
{
padding
:
10px
;
margin
:
0
0
10px
;
.nowName
{
font-size
:
15px
;
font-weight
:
bold
;
margin-right
:
10px
}
.text-bold
{
font-weight
:
bold
;
}
.fontsize14
{
font-size
:
14px
;
}
}
}
.groupList
{
max-height
:
70vh
;
overflow
:
auto
;
border
:
1px
solid
#e1e1e1
;
margin-top
:
10px
;
li{
padding
:
10px
;
border-bottom
:
1px
solid
#e1e1e1
;
cursor
:
pointer
;}
.groupList
{
max-height
:
70vh
;
overflow
:
auto
;
border
:
1px
solid
#e1e1e1
;
margin-top
:
10px
;
li
{
padding
:
10px
;
border-bottom
:
1px
solid
#e1e1e1
;
cursor
:
pointer
;
}
}
</
style
>
...
...
src/viewsPc/index.vue
View file @
1952255
...
...
@@ -412,6 +412,14 @@
</el-col>
</el-row>
</div>
<!-- 邀请函-->
<div
v-if=
"matchData.leagueId==0"
class=
"fixed_gg_l yaoQing"
@
click=
"applyInvitation"
>
<img
v-if=
"language==0"
src=
"@/assets/logo/Invitation_c.png"
>
<img
v-else
src=
"@/assets/logo/Invitation_e.png"
>
</div>
<affix-invitation
ref=
"dialogInvitationRef"
/>
</div>
</template>
<
script
setup
>
...
...
@@ -430,6 +438,11 @@ import { dayjs } from 'element-plus'
import
*
as
match
from
'@/apiPc/match'
import
{
getAboutUs
,
getppInfo
,
getZNList
}
from
'@/apiPc/match'
import
AffixInvitation
from
'/@/viewsPc/match/components/affix-invitation.vue'
import
{
useStorage
}
from
'@vueuse/core/index'
const
language
=
useStorage
(
'language'
,
0
)
const
modules
=
[
Autoplay
,
Navigation
]
const
navigationPic
=
ref
({
nextEl
:
'.picnext'
,
...
...
@@ -605,6 +618,15 @@ const handlePickup = () => {
emit
(
'pickup'
,
params
)
}
function
applyInvitation
()
{
var
obj
=
{
title
:
language
.
value
==
0
?
'邀请函申请'
:
'Visa Invitation Letter '
,
cptId
:
matchData
.
value
.
id
}
console
.
log
(
matchData
.
value
.
id
)
proxy
.
$refs
[
'dialogInvitationRef'
].
open
(
obj
)
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -1195,4 +1217,11 @@ const handlePickup = () => {
width
:
192px
;
text-align
:
center
;
}
.yaoQing
{
width
:
160px
;
left
:
5px
;
top
:
40%
;
}
</
style
>
...
...
src/viewsPc/index_en.vue
View file @
1952255
...
...
@@ -391,8 +391,14 @@
</el-col>
</el-row>
</div>
<!-- 邀请函-->
<div
v-if=
"matchData.leagueId==0"
class=
"fixed_gg_l yaoQing"
@
click=
"applyInvitation"
>
<img
v-if=
"language==0"
src=
"@/assets/logo/Invitation_c.png"
>
<img
v-else
src=
"@/assets/logo/Invitation_e.png"
>
</div>
<affix-invitation
ref=
"dialogInvitationRef"
/>
</div>
</template>
<
script
setup
>
...
...
@@ -409,7 +415,10 @@ import 'swiper/css'
import
{
dayjs
,
ElMessage
}
from
'element-plus'
import
*
as
match
from
'@/apiPc/match'
import
{
rankList
}
from
'@/assets/js/data'
import
AffixInvitation
from
'/@/viewsPc/match/components/affix-invitation.vue'
import
{
useStorage
}
from
'@vueuse/core/index'
const
language
=
useStorage
(
'language'
,
0
)
const
modules
=
[
Autoplay
,
Navigation
]
const
navigationPic
=
ref
({
nextEl
:
'.picnext'
,
...
...
@@ -580,6 +589,15 @@ const handlePickup = () => {
}
emit
(
'pickup'
,
params
)
}
function
applyInvitation
()
{
var
obj
=
{
title
:
language
.
value
==
0
?
'邀请函申请'
:
'Visa Invitation Letter '
,
cptId
:
matchData
.
value
.
id
}
console
.
log
(
matchData
.
value
.
id
)
proxy
.
$refs
[
'dialogInvitationRef'
].
open
(
obj
)
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -1321,4 +1339,11 @@ const handlePickup = () => {
height
:
60px
;
}
}
.yaoQing
{
width
:
160px
;
left
:
5px
;
top
:
40%
;
}
</
style
>
...
...
src/viewsPc/match/components/allSportsmanListForPersonal.vue
View file @
1952255
...
...
@@ -144,11 +144,12 @@ import AddCoach from '../components/addCoach'
import
AddWdsf
from
'../components/addWdsf'
import
Import
from
'../components/import'
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
delPersonForPersonal
,
getPerPersonList
}
from
'@/apiPc/match'
import
{
delPersonForPersonal
,
getPerPersonList
,
getMate
}
from
'@/apiPc/match'
import
useUserStore
from
'@/store/modules/user'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
_
from
'lodash'
const
dancing
=
ref
(
null
)
// 舞伴
const
language
=
useStorage
(
'language'
,
0
)
const
user
=
useUserStore
().
user
const
{
proxy
}
=
getCurrentInstance
()
...
...
@@ -194,6 +195,7 @@ const open = (params) => {
show
.
value
=
true
isNational
.
value
=
params
.
isNational
choosedList
=
params
.
choosedList
tableData
.
value
=
[]
getList
()
}
defineExpose
({
...
...
@@ -225,6 +227,7 @@ const selectable = (row) => {
}
}
const
getList
=
()
=>
{
console
.
log
(
user
.
userId
)
loading
.
value
=
true
getPerPersonList
(
query
.
value
,
user
.
userId
).
then
(
res
=>
{
total
.
value
=
res
.
total
...
...
@@ -245,6 +248,10 @@ function handleSelectionChange(val) {
for
(
const
p
of
val
)
{
choosedIds
.
push
(
p
.
id
)
}
if
(
val
.
length
==
1
)
{
handelTeammate
(
val
[
0
].
id
)
}
if
(
val
.
length
==
0
)
getList
()
// 判断是否队友
if
(
val
.
length
==
2
)
{
if
(
val
[
0
].
sex
!=
val
[
1
].
sex
)
{
...
...
@@ -266,6 +273,27 @@ function handleSelectionChange(val) {
}
}
async
function
handelTeammate
(
id
)
{
const
res
=
await
getMate
({
type
:
'1'
,
id
})
dancing
.
value
=
res
.
data
const
arr
=
[]
for
(
const
v
of
tableData
.
value
)
{
if
(
v
.
id
==
id
||
v
.
id
==
dancing
.
value
)
{
arr
.
push
(
v
)
}
}
tableData
.
value
=
arr
nextTick
(()
=>
{
reSetChoosed
()
})
console
.
log
(
res
)
console
.
log
(
tableData
.
value
)
}
function
checkTwo
(
a
,
b
)
{
match
.
checkMate
({
per1Id
:
a
.
id
,
per2Id
:
b
.
id
,
cptId
:
matchId
}).
then
(
res
=>
{
if
(
!
res
.
data
)
{
...
...
src/viewsPc/match/detail_en.vue
View file @
1952255
...
...
@@ -588,16 +588,19 @@ function goTeamSign() {
)
return
}
router
.
push
({
path
:
`
${
route
.
params
.
id
}
/teamSignCn`
,
query
:
{
matchId
:
matchId
.
value
,
groupId
:
groupId
.
value
,
signType
:
matchData
.
value
.
signType
,
languageSource
:
matchData
.
value
.
languageSource
,
isNational
:
false
}
})
handelPreCheckForGroup
(
router
.
push
({
path
:
`
${
route
.
params
.
id
}
/teamSignCn`
,
query
:
{
matchId
:
matchId
.
value
,
groupId
:
groupId
.
value
,
signType
:
matchData
.
value
.
signType
,
languageSource
:
matchData
.
value
.
languageSource
,
isNational
:
false
}
})
)
}
else
{
// 国际赛
if
(
group
?.
type
!=
'4'
&&
matchData
.
value
.
countryLimit
==
'1'
)
{
...
...
@@ -612,16 +615,18 @@ function goTeamSign() {
)
return
}
router
.
push
({
path
:
`
${
route
.
params
.
id
}
/teamSign`
,
query
:
{
matchId
:
matchId
.
value
,
groupId
:
groupId
.
value
,
signType
:
matchData
.
value
.
signType
,
isNational
:
true
,
languageSource
:
matchData
.
value
.
languageSource
}
})
handelPreCheckForGroup
(
router
.
push
({
path
:
`
${
route
.
params
.
id
}
/teamSign`
,
query
:
{
matchId
:
matchId
.
value
,
groupId
:
groupId
.
value
,
signType
:
matchData
.
value
.
signType
,
isNational
:
true
,
languageSource
:
matchData
.
value
.
languageSource
}
})
)
}
}
...
...
@@ -754,17 +759,7 @@ function switchSignType() {
switch
(
matchData
.
value
.
signType
)
{
case
'0'
:
// 个人
if
(
user
.
utype
==
'1'
)
{
match
.
preCheckForPerson
().
then
(
res
=>
{
if
(
res
.
data
==
1
)
{
goPersonalSign
()
}
else
{
return
proxy
.
$modal
.
msgError
(
language
.
value
==
0
?
'您绑定的WDSF会员号已过期,请先到WDSF官网激活您的会员号。'
:
'Your bound WDSF Number has expired. Please activate your WDSF Number on the WDSF official website first.'
)
}
})
handelGeRenNext
()
}
if
(
user
.
utype
==
'2'
)
{
ElMessageBox
.
confirm
(
...
...
@@ -796,7 +791,9 @@ function switchSignType() {
)
}
if
(
user
.
utype
==
'2'
)
{
match
.
preCheckForGroup
(
groupId
.
value
).
then
(
goTeamSign
)
// match.preCheckForGroup(groupId.value).then(goTeamSign)
// handelPreCheckForGroup(goTeamSign)
goTeamSign
()
}
if
(
user
.
utype
==
'3'
)
{
// 团队活动 且 游客
...
...
@@ -805,12 +802,14 @@ function switchSignType() {
break
case
'2'
:
// 团体队伍
if
(
user
.
utype
==
'1'
)
{
match
.
preCheckForGroup
(
groupId
.
value
).
then
(
goPersonalSign
)
//
match.preCheckForGroup(groupId.value).then(goPersonalSign)
// goPersonalSign()
handelPreCheckForGroup
(
goPersonalSign
)
}
if
(
user
.
utype
==
'2'
)
{
match
.
preCheckForGroup
(
groupId
.
value
).
then
(
goTeamSign
)
// goTeamSign()
// handelPreCheckForGroup(goTeamSign)
// match.preCheckForGroup(groupId.value).then(goTeamSign)
goTeamSign
()
}
if
(
user
.
utype
==
'3'
)
{
// 游客
...
...
@@ -820,8 +819,35 @@ function switchSignType() {
}
}
async
function
handelGeRenNext
()
{
const
res
=
await
match
.
preCheckForPerson
({
type
:
'1'
})
// 不给报名
if
(
res
.
data
==
0
)
{
await
proxy
.
$modal
.
confirm
(
language
.
value
==
0
?
'您绑定的WDSF会员号已过期,请先到WDSF官网激活您的会员号。'
:
'Your bound WDSF Number has expired. Please activate your WDSF Number on the WDSF official website first.'
)
return
}
// 正常报名
if
(
res
.
data
==
1
)
{
goPersonalSign
()
}
// 提示
if
(
res
.
data
==
2
)
{
await
proxy
.
$modal
.
confirm
(
language
.
value
==
0
?
'运动员的WDSF会员号已变更,是否更新?'
:
'The athlete`s WDSF membership number has been changed. Should it be updated?'
)
await
match
.
preCheckForPerson
({
type
:
'2'
})
await
goPersonalSign
()
}
}
function
applyInvitation
()
{
var
obj
=
{
const
obj
=
{
title
:
language
.
value
==
0
?
'邀请函申请'
:
'Visa Invitation Letter '
,
cptId
:
matchId
.
value
}
...
...
@@ -835,6 +861,21 @@ const openPickup = () => {
}
proxy
.
$refs
[
'pickupRef'
].
open
(
obj
)
}
async
function
handelPreCheckForGroup
(
fn
)
{
const
res
=
await
match
.
preCheckForGroup
(
groupId
.
value
,
'1'
)
if
(
res
.
data
==
1
||
res
.
data
==
0
)
{
await
fn
()
}
if
(
res
.
data
==
2
)
{
await
proxy
.
$modal
.
confirm
(
language
.
value
==
0
?
'运动员的WDSF会员号已变更,是否更新?'
:
'The athlete`s WDSF membership number has been changed. Should it be updated?'
)
await
match
.
preCheckForGroup
(
groupId
.
value
,
'2'
)
await
fn
()
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/viewsPc/saiC/index.vue
View file @
1952255
...
...
@@ -38,7 +38,7 @@
</el-card>
<el-card
class=
"mt20 mb20"
>
<el-table
:data=
"rank"
stripe
>
<el-table-column
align=
"center"
label=
"名次
"
type=
"index"
width=
"100"
>
<el-table-column
align=
"center"
:label=
"language==0?'名次':'Rank'
"
type=
"index"
width=
"100"
>
<
template
#
default=
"scope"
>
<span
v-if=
"scope.row.mingCi == 1"
style=
"color:#F8A617"
>
{{
scope
.
row
.
mingCi
}}
</span>
<span
v-else-if=
"scope.row.mingCi == 2"
style=
"color:#778B92"
>
{{
scope
.
row
.
mingCi
}}
</span>
...
...
@@ -47,15 +47,15 @@
</
template
>
</el-table-column>
<el-table-column
label=
"国家
"
prop=
"name"
>
<el-table-column
:label=
"language==0?'国家':'Country'
"
prop=
"name"
>
<
template
#
default=
"scope"
>
<div>
<span
:class=
"`flag-icon flag-icon-$
{scope.row.code}`" />
{{
scope
.
row
.
country
Name
}}
{{
language
==
0
?
scope
.
row
.
countryName
:
scope
.
row
.
countryShort
Name
}}
</div>
</
template
>
</el-table-column>
<el-table-column
align=
"center"
label=
"组合
"
>
<el-table-column
align=
"center"
:label=
"language==0?'组合':'Couple'"
min-width=
"200
"
>
<
template
#
default=
"scope"
>
<div
class=
"text-primary esp"
>
{{
scope
.
row
.
zuHe
}}
</div>
</
template
>
...
...
vite.config.js
View file @
1952255
...
...
@@ -64,32 +64,32 @@ export default defineConfig(({ mode, command }) => {
proxy
:
{
// https://cn.vitejs.dev/config/#server-proxy
'/dev-api/ztx-train'
:
{
target
:
'http://192.168.1.24
3
:1896/stage-api'
,
target
:
'http://192.168.1.24
2
:1896/stage-api'
,
// target: 'https://jijin.wtwuxicenter.com/stage-api',
changeOrigin
:
true
,
rewrite
:
(
p
)
=>
p
.
replace
(
/^
\/
dev-api
\/
ztx-train/
,
''
)
},
'/dev-api/ztx-match'
:
{
target
:
'http://192.168.1.24
3
:8081'
,
target
:
'http://192.168.1.24
2
:8081'
,
// target: 'https://wdsfwuxicenter.com/stage-api/',
changeOrigin
:
true
,
rewrite
:
(
p
)
=>
p
.
replace
(
/^
\/
dev-api
\/
ztx-match/
,
''
)
},
'/dev-api/ztx-webSite'
:
{
target
:
'http://192.168.1.24
3
:8081'
,
target
:
'http://192.168.1.24
2
:8081'
,
changeOrigin
:
true
,
rewrite
:
(
p
)
=>
p
.
replace
(
/^
\/
dev-api
\/
ztx-webSite/
,
''
)
},
'/dev-api'
:
{
target
:
'http://192.168.1.118:8081/'
,
// target: 'http://192.168.1.24
3
:8081',
// target: 'http://192.168.1.24
2
:8081',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'https://wdsfwuxicenter.com/stage-api/',
changeOrigin
:
true
,
rewrite
:
(
p
)
=>
p
.
replace
(
/^
\/
dev-api/
,
''
)
},
'/ticket'
:
{
target
:
'http://192.168.1.24
3
:8081/'
,
target
:
'http://192.168.1.24
2
:8081/'
,
// target: 'https://jijin.wtwuxicenter.com/h5/',
// target: 'https://ticketh5.wdsfwuxicenter.com/h5/',
changeOrigin
:
true
,
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment