5a7ee012 by 杨炀

no message

1 parent da86e13e
Showing 45 changed files with 973 additions and 347 deletions
...@@ -117,6 +117,15 @@ export function createPalPay(data) { ...@@ -117,6 +117,15 @@ export function createPalPay(data) {
117 data:data 117 data:data
118 }) 118 })
119 } 119 }
120 export function callbackPalPay(tradeNo) {
121 return request({
122 url: `/ota/norder/palPay/callback`,
123 method: 'post',
124 data:{
125 tradeNo:tradeNo
126 }
127 })
128 }
120 export function getInvoiceByActiveId(query) { 129 export function getInvoiceByActiveId(query) {
121 return request({ 130 return request({
122 url: `/ota/invoice/list`, 131 url: `/ota/invoice/list`,
...@@ -156,6 +165,12 @@ export function addressList(userId) { ...@@ -156,6 +165,12 @@ export function addressList(userId) {
156 } 165 }
157 }) 166 })
158 } 167 }
168 export function getBaseInfoByActiveId(id) {
169 return request({
170 url: `/ota/activity/${id}`,
171 method: 'get'
172 })
173 }
159 174
160 export function submitInvoice(form) { 175 export function submitInvoice(form) {
161 return request({ 176 return request({
......
...@@ -47,3 +47,24 @@ export function newbilllist(query) { ...@@ -47,3 +47,24 @@ export function newbilllist(query) {
47 params: query 47 params: query
48 }) 48 })
49 } 49 }
50 export function vistorRegister(data) {
51 return request({
52 url: `/pcSimpleRegister`,
53 method: 'post',
54 data: data
55 })
56 }
57 export function upgradePersonal(data) {
58 return request({
59 url: `/upgradeAccountToSingle`,
60 method: 'post',
61 data: data
62 })
63 }
64 export function upgradeTeam(data) {
65 return request({
66 url: `/upgradeAccountToTeam`,
67 method: 'post',
68 data: data
69 })
70 }
......
...@@ -252,7 +252,8 @@ img{display: block;} ...@@ -252,7 +252,8 @@ img{display: block;}
252 .text-navy { 252 .text-navy {
253 color: #1ab394; 253 color: #1ab394;
254 } 254 }
255 255 .underline{ text-decoration: underline;}
256 .pointer{cursor: pointer}
256 .text-primary { 257 .text-primary {
257 color: var(--el-color-primary); 258 color: var(--el-color-primary);
258 } 259 }
......
...@@ -74,30 +74,57 @@ ...@@ -74,30 +74,57 @@
74 </div> 74 </div>
75 </div> 75 </div>
76 <div class="fixed-right"> 76 <div class="fixed-right">
77 <a v-if="language==0" href="#" target="_blank" 77 <div class="mlb" v-if="language==0">
78 onclick="javascript:window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=6c500b60-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=ZHCN','_blank','height=700px,width=700px,top=50,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="客服" > 78 <div href="#" target="_blank"
79 <img class="kf" src="@/assets/logo/kf_c.png"/> 79 onclick="javascript:window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=6c500b60-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=ZHCN','_blank','height=700px,width=700px,top=50,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="客服" >
80 </a> 80 <img class="kf" src="@/assets/logo/btn01.png"/>
81 81 <div class="text-center mt10 gradient-text">在线客服</div>
82 <a v-else target="_blank" href="#" 82 </div>
83 onclick="javascript:window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=707daf80-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=EN','_blank','height=700px,width=700px,top=100,left=150,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="Live Chat"> 83 <div @click="goHelp">
84 <img class="kf" src="@/assets/logo/kf_e.png"/> 84 <img class="kf" src="@/assets/logo/btn02.png"/>
85 </a> 85 <div class="text-center mt10 gradient-text">帮助中心</div>
86 </div>
87 </div>
88 <div class="mlb" v-else>
89 <div target="_blank" href="#"
90 onclick="javascript:window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=707daf80-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=EN','_blank','height=700px,width=700px,top=100,left=150,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="Live Chat">
91 <img class="kf" src="@/assets/logo/btn01.png"/>
92 <div class="text-center gradient-text">Live Chat</div>
93 </div>
94 <div @click="goHelp">
95 <img class="kf" src="@/assets/logo/btn02.png"/>
96 <div class="text-center gradient-text">Demo Video</div>
97 </div>
98 </div>
86 </div> 99 </div>
87 </template> 100 </template>
88 101
89 <script setup> 102 <script setup>
90 import {useStorage} from "@vueuse/core/index"; 103 import {useStorage} from "@vueuse/core/index";
91 104 import {useRouter} from "vue-router";
105 const router = useRouter()
92 const language = useStorage('language', 0) 106 const language = useStorage('language', 0)
93 107 const goHelp = () => {
108 router.push({
109 path: `/news/list/20000100`,
110 query:{
111 kindName: language.value==0?'帮助中心':'Demo Video'
112 }
113 })
114 }
94 </script> 115 </script>
95 116
96 <style lang="scss" scoped> 117 <style lang="scss" scoped>
97 .kf{width: 90px;cursor: pointer; 118 .kf{width: 45px;margin: auto;height: auto;
98 //animation: pop 2s infinite; 119 //animation: pop 2s infinite;
99 } 120 }
100 .fixed-right{position: fixed;right: 0;bottom: 200px;} 121 .fixed-right{position: fixed;right: 0;bottom: 200px;
122 .mlb{background: #fff;border-radius: 10px 0 0 10px;box-shadow: 0 2px 8px #aaa;
123 padding: 10px 8px;text-align: center;cursor: pointer;
124 div:first-child{border-bottom: 0.5px solid #eee;padding: 0 0 10px;margin-bottom: 10px}
125 div:hover{.gradient-text{font-weight: bold;}}
126 }
127 }
101 .copyright{ font-size: 14px; 128 .copyright{ font-size: 14px;
102 opacity: 0.88; 129 opacity: 0.88;
103 color: #4C5359;} 130 color: #4C5359;}
...@@ -117,6 +144,13 @@ const language = useStorage('language', 0) ...@@ -117,6 +144,13 @@ const language = useStorage('language', 0)
117 } 144 }
118 img{height: 80px;} 145 img{height: 80px;}
119 } 146 }
147 .gradient-text {font-family: FZJunHeiS-B-GB;
148 font-weight: 600;
149 font-size: 17px;
150 background: linear-gradient(0deg, #8226FC 0%, #483BEB 100%);
151 -webkit-background-clip: text;
152 -webkit-text-fill-color: transparent;
153 }
120 @media (max-width: 500px) { 154 @media (max-width: 500px) {
121 .forWei{display: none;} 155 .forWei{display: none;}
122 } 156 }
......
...@@ -135,6 +135,7 @@ ...@@ -135,6 +135,7 @@
135 </el-menu> 135 </el-menu>
136 </el-drawer> 136 </el-drawer>
137 <LoginDialog ref="pcloginDialog" @submitForm="reFlash" /> 137 <LoginDialog ref="pcloginDialog" @submitForm="reFlash" />
138 <VisitorLogin ref="visitorDialog" @submitForm="reFlash" />
138 <SearchPop v-if="language==0" ref="searchDialog" /> 139 <SearchPop v-if="language==0" ref="searchDialog" />
139 <SearchPop_en v-if="language==1" ref="searchDialog" /> 140 <SearchPop_en v-if="language==1" ref="searchDialog" />
140 </template> 141 </template>
...@@ -147,6 +148,7 @@ import { Search,UserFilled } from '@element-plus/icons-vue' ...@@ -147,6 +148,7 @@ import { Search,UserFilled } from '@element-plus/icons-vue'
147 import { getCurrentInstance, onMounted } from '@vue/runtime-core' 148 import { getCurrentInstance, onMounted } from '@vue/runtime-core'
148 import _ from 'lodash' 149 import _ from 'lodash'
149 import LoginDialog from '@/viewsPc/login' 150 import LoginDialog from '@/viewsPc/login'
151 import VisitorLogin from '@/viewsPc/register/components/utype3'
150 import SearchPop from './indexSearch' 152 import SearchPop from './indexSearch'
151 import SearchPop_en from './indexSearch_en' 153 import SearchPop_en from './indexSearch_en'
152 import Captcha from './captcha' 154 import Captcha from './captcha'
...@@ -236,7 +238,12 @@ watch(() => useUserStore().reLogin, (val) => { ...@@ -236,7 +238,12 @@ watch(() => useUserStore().reLogin, (val) => {
236 goLogin(val.query) 238 goLogin(val.query)
237 } 239 }
238 }) 240 })
239 241 watch(() => useUserStore().visitor, (val) => {
242 if (val) {
243 console.log(val)
244 proxy.$refs['visitorDialog'].open()
245 }
246 })
240 function searchNews() { 247 function searchNews() {
241 proxy.$refs['searchDialog'].open() 248 proxy.$refs['searchDialog'].open()
242 } 249 }
......
...@@ -31,6 +31,7 @@ const useUserStore = defineStore( ...@@ -31,6 +31,7 @@ const useUserStore = defineStore(
31 genFlag: '', // 是否是自动的协会 31 genFlag: '', // 是否是自动的协会
32 badge: {}, 32 badge: {},
33 reLogin: {show:false,query:{}}, 33 reLogin: {show:false,query:{}},
34 visitor: false,
34 language: 0 35 language: 0
35 }), 36 }),
36 actions: { 37 actions: {
...@@ -138,6 +139,12 @@ const useUserStore = defineStore( ...@@ -138,6 +139,12 @@ const useUserStore = defineStore(
138 this.badge = res.data 139 this.badge = res.data
139 }) 140 })
140 }, 141 },
142 setVisitor() {
143 this.visitor = true
144 setTimeout(() => {
145 this.visitor = false
146 }, 1000)
147 },
141 setReLogin(query) { 148 setReLogin(query) {
142 console.log(query) 149 console.log(query)
143 this.reLogin = {show:true,query:query} 150 this.reLogin = {show:true,query:query}
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
8 <div class="leftNav"> 8 <div class="leftNav">
9 <ul> 9 <ul>
10 <li :class="activeIndex==0?'active':''" @click="activeIndex=0">{{ language==0?'组织机构':'Organizer' }}</li> 10 <li :class="activeIndex==0?'active':''" @click="activeIndex=0">{{ language==0?'组织机构':'Organizer' }}</li>
11 <li :class="activeIndex==1?'active':''" @click="activeIndex=1">{{ language==0?'WDSF亚洲体育舞蹈节':'WDSF Asian Dancesport Festival' }}</li> 11 <li :class="activeIndex==1?'active':''" @click="activeIndex=1">{{ language==0?'无锡WDSF亚洲体育舞蹈节':'WUXI WDSF ASIAN DANCESPORT FESTIVAL' }}</li>
12 <!-- <li :class="activeIndex==2?'active':''" @click="activeIndex=2">{{ language==0?'体育舞蹈项目':'About Sports Dance' }}</li>--> 12 <!-- <li :class="activeIndex==2?'active':''" @click="activeIndex=2">{{ language==0?'体育舞蹈项目':'About Sports Dance' }}</li>-->
13 </ul> 13 </ul>
14 </div> 14 </div>
...@@ -59,45 +59,45 @@ ...@@ -59,45 +59,45 @@
59 59
60 <div class="infoPart pd20" v-if="activeIndex==1"> 60 <div class="infoPart pd20" v-if="activeIndex==1">
61 <h3 class="leftboderTT">{{ language==0?'无锡WDSF亚洲体育舞蹈节':'WUXI WDSF ASIAN DANCESPORT FESTIVAL' }}</h3> 61 <h3 class="leftboderTT">{{ language==0?'无锡WDSF亚洲体育舞蹈节':'WUXI WDSF ASIAN DANCESPORT FESTIVAL' }}</h3>
62 <div class="content" v-if="language==0"> 62 <!-- <div class="content" v-if="language==0">-->
63 无锡WDSF亚洲体育舞蹈节是由世界体育舞蹈(无锡)中心(世界体育舞蹈联合、亚洲体育舞蹈联合、中国体育舞蹈联合会和无锡市人民政府共建)打造面向全球的、长期落户的、城市自主的品牌赛事。 63 <!-- 无锡WDSF亚洲体育舞蹈节是由世界体育舞蹈(无锡)中心(世界体育舞蹈联合、亚洲体育舞蹈联合、中国体育舞蹈联合会和无锡市人民政府共建)打造面向全球的、长期落户的、城市自主的品牌赛事。-->
64 <br/> 64 <!-- <br/>-->
65 65
66 &ensp;&ensp;&ensp;&ensp;2023年7月首次举办无锡2023年WDSF亚洲体育舞蹈节,包括2023年WDSF世界标准舞锦标赛、2023年WDSF世界体育舞蹈大奖赛(中国无锡)、2023年全国体育舞蹈公开系列赛(无锡站),共吸引来自全球39个国家及地区的1,716名顶级舞者参与。同时,并将世界体育舞蹈(无锡)中心成功落户中国无锡,以“节日有竞赛、竞赛节日化”为发展指导原则,“四方”共同努力服务全球舞者。 66 <!-- &ensp;&ensp;&ensp;&ensp;2023年7月首次举办无锡2023年WDSF亚洲体育舞蹈节,包括2023年WDSF世界标准舞锦标赛、2023年WDSF世界体育舞蹈大奖赛(中国无锡)、2023年全国体育舞蹈公开系列赛(无锡站),共吸引来自全球39个国家及地区的1,716名顶级舞者参与。同时,并将世界体育舞蹈(无锡)中心成功落户中国无锡,以“节日有竞赛、竞赛节日化”为发展指导原则,“四方”共同努力服务全球舞者。-->
67 <br/> 67 <!-- <br/>-->
68 68
69 &ensp;&ensp;&ensp;&ensp;2024年7月17日至21日将继续举办第二届无锡2024年WDSF亚洲体育舞蹈节,包括2024年WDSF世界拉丁舞锦标赛、2024年WDSF世界青年标准舞锦标赛、2024年WDSF世界少年Ⅱ拉丁舞锦标赛、2024年WDSF大奖赛(标准舞、拉丁舞)、 69 <!-- &ensp;&ensp;&ensp;&ensp;2024年7月17日至21日将继续举办第二届无锡2024年WDSF亚洲体育舞蹈节,包括2024年WDSF世界拉丁舞锦标赛、2024年WDSF世界青年标准舞锦标赛、2024年WDSF世界少年Ⅱ拉丁舞锦标赛、2024年WDSF大奖赛(标准舞、拉丁舞)、-->
70 2024年WDSF职业标准舞/拉丁舞世界杯、2024年WDSF公开赛(标准舞/拉丁舞)以及2024年全国青少年体育舞蹈锦标赛等一系列重点赛事。 70 <!-- 2024年WDSF职业标准舞/拉丁舞世界杯、2024年WDSF公开赛(标准舞/拉丁舞)以及2024年全国青少年体育舞蹈锦标赛等一系列重点赛事。-->
71 预计届时会吸引约40个国家和地区的3000名优秀体育舞蹈选手参赛,将为全球体育舞蹈爱好者呈现一场精彩绝伦的视觉盛宴。 71 <!-- 预计届时会吸引约40个国家和地区的3000名优秀体育舞蹈选手参赛,将为全球体育舞蹈爱好者呈现一场精彩绝伦的视觉盛宴。-->
72 72
73 <div class="imgbox"> 73 <!-- <div class="imgbox">-->
74 <img src="/img/123.png"/> 74 <!-- <img src="/img/123.png"/>-->
75 </div> 75 <!-- </div>-->
76 </div> 76 <!-- </div>-->
77 <div class="content" v-else> 77 <!-- <div class="content" v-else>-->
78 Wuxi WDSF Asian DanceSport Festival is a globally oriented, permanently settled, 78 <!-- Wuxi WDSF Asian DanceSport Festival is a globally oriented, permanently settled,-->
79 city-owned brand event created by the World DanceSport (Wuxi) Center (jointly 79 <!-- city-owned brand event created by the World DanceSport (Wuxi) Center (jointly-->
80 established by the World DanceSport Federation, DanceSport Asia, Chinese 80 <!-- established by the World DanceSport Federation, DanceSport Asia, Chinese-->
81 DanceSport Federation, and Wuxi Municipal People’s Government). 81 <!-- DanceSport Federation, and Wuxi Municipal People’s Government).-->
82 <br/><br/> 82 <!-- <br/><br/>-->
83 &ensp;&ensp;&ensp;&ensp;In July 2023, the WDSF Asian DanceSport Festival·Wuxi 2023 was held for the first 83 <!-- &ensp;&ensp;&ensp;&ensp;In July 2023, the WDSF Asian DanceSport Festival·Wuxi 2023 was held for the first-->
84 time, including the 2023 WDSF World Championship Standard, 2023 WDSF 84 <!-- time, including the 2023 WDSF World Championship Standard, 2023 WDSF-->
85 DanceSport Grand Slam (Wuxi), 2023 China DanceSport Open Series (Wuxi), which 85 <!-- DanceSport Grand Slam (Wuxi), 2023 China DanceSport Open Series (Wuxi), which-->
86 attracted a total of 1,716 top-level dancers from 39 countries and regions around the 86 <!-- attracted a total of 1,716 top-level dancers from 39 countries and regions around the-->
87 globe. Meanwhile, the WDSF World DanceSport (Wuxi) Center was successfully 87 <!-- globe. Meanwhile, the WDSF World DanceSport (Wuxi) Center was successfully-->
88 established in Wuxi, China, with the guiding principle of "festivals with competitions 88 <!-- established in Wuxi, China, with the guiding principle of "festivals with competitions-->
89 and competitions becoming festivals", and the "four parties" working together to serve 89 <!-- and competitions becoming festivals", and the "four parties" working together to serve-->
90 dancers from all over the world. 90 <!-- dancers from all over the world.-->
91 <br/><br/> 91 <!-- <br/><br/>-->
92 &ensp;&ensp;&ensp;&ensp;The 2nd WDSF Asian DanceSport Festival·Wuxi 2024 will be organized from 17th to 92 <!-- &ensp;&ensp;&ensp;&ensp;The 2nd WDSF Asian DanceSport Festival·Wuxi 2024 will be organized from 17th to-->
93 21st July 2024, including a series of key events such as the WDSF World 93 <!-- 21st July 2024, including a series of key events such as the WDSF World-->
94 Championship Latin 2024, WDSF World Championship Youth Standard 2024, WDSF 94 <!-- Championship Latin 2024, WDSF World Championship Youth Standard 2024, WDSF-->
95 World Championship Junior II Latin 2024, WDSF Grand Slam Latin & Standard 2024, 95 <!-- World Championship Junior II Latin 2024, WDSF Grand Slam Latin & Standard 2024,-->
96 WDSF PD World Cup Latin & Standard 2024, WDSF Open Latin & Standard 2024 96 <!-- WDSF PD World Cup Latin & Standard 2024, WDSF Open Latin & Standard 2024-->
97 and 2024 National Youth DanceSport Championships etc. It is expected to attract 97 <!-- and 2024 National Youth DanceSport Championships etc. It is expected to attract-->
98 3,000 outstanding dancers from about 40 countries and regions to participate in the 98 <!-- 3,000 outstanding dancers from about 40 countries and regions to participate in the-->
99 event, which will present a wonderful visual feast for global DanceSport fans. 99 <!-- event, which will present a wonderful visual feast for global DanceSport fans.-->
100 </div> 100 <!-- </div>-->
101 101
102 <!-- </div>--> 102 <!-- </div>-->
103 103
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
18 <template #title> 18 <template #title>
19 <el-row align="middle" :gutter="20" class="w100"> 19 <el-row align="middle" :gutter="20" class="w100">
20 <el-col :span="4"> 20 <el-col :span="4">
21 <div class="index">路线{{index+1}} 21 <div class="index">{{ language==0?'路线':'Route' }}{{index+1}}
22 <img src="@/assets/booking/arrow.png"/> 22 <img src="@/assets/booking/arrow.png"/>
23 </div> 23 </div>
24 </el-col> 24 </el-col>
...@@ -43,17 +43,18 @@ ...@@ -43,17 +43,18 @@
43 </div> 43 </div>
44 </el-col> 44 </el-col>
45 <el-col :span="14"> 45 <el-col :span="14">
46 <h3 class="name">{{ r.carType }} 46 <h3 class="name flex">{{ r.carType }}
47 <div class="tagbox"> 47 <div class="tagbox">
48 <span class="tag">{{r.carColor}}</span> 48 <span class="tag">{{r.carColor}}</span>
49 <span class="tag" v-show="r.checkOut==1">可送车</span> 49 <span class="tag" v-show="r.checkOut==1">可送车</span>
50 <span class="tag" v-show="r.checkIn==1">可接车</span> 50 <span class="tag" v-show="r.checkIn==1">可接车</span>
51 </div> 51 </div>
52 </h3> 52 </h3>
53 <el-row :gutter="10"> 53 <div class="text-gray mt20">
54 <el-col :span="8">{{ language==0?'座位数':'Seats' }}: {{r.carSeat}}</el-col> 54 <span class="mr20">{{ language==0?'座位数':'Seats' }}: {{r.carSeat}}</span>
55 <el-col :span="8">{{ language==0?'运营时间':'Servers Time' }}: {{r.operStart}} ~ {{r.operEnd}}</el-col> 55 <span class="mr20">|</span>
56 </el-row> 56 <span :span="8">{{ language==0?'运营时间':'Servers Time' }}: {{r.operStart}} ~ {{r.operEnd}}</span>
57 </div>
57 </el-col> 58 </el-col>
58 <el-col :span="3"> 59 <el-col :span="3">
59 <div class="price" v-if="language==0">¥ 60 <div class="price" v-if="language==0">¥
...@@ -181,6 +182,8 @@ function goOrder(item,car) { ...@@ -181,6 +182,8 @@ function goOrder(item,car) {
181 span:nth-child(4n+2){background: rgba(0, 160, 233, 0.2);color: rgba(0, 160, 233, 1);} 182 span:nth-child(4n+2){background: rgba(0, 160, 233, 0.2);color: rgba(0, 160, 233, 1);}
182 span:nth-child(4n+3){background: rgba(247, 64, 166, 0.2);color:rgba(247, 64, 166, 1);} 183 span:nth-child(4n+3){background: rgba(247, 64, 166, 0.2);color:rgba(247, 64, 166, 1);}
183 } 184 }
185 .name.flex{align-items: center;}
186 .name .tagbox{margin: 0 0 0 15px;}
184 .room { 187 .room {
185 background: #FAFBFD;margin: 20px 0 0;padding: 20px; 188 background: #FAFBFD;margin: 20px 0 0;padding: 20px;
186 border: 1px solid #E5E5E5; 189 border: 1px solid #E5E5E5;
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
17 <h3 class="esp">{{ item.checkOut }}</h3> 17 <h3 class="esp">{{ item.checkOut }}</h3>
18 </div> 18 </div>
19 <div class="flex"> 19 <div class="flex">
20 <img class="w150px br10 as16_9" :src="fillImgUrl(car.photos?.split(',')[0])"/> 20 <el-image class="w150px br10 as16_9" fit="cover" :src="fillImgUrl(car.photos?.split(',')[0])"/>
21 <div class="ml20"> 21 <div class="ml20">
22 <div class="roomType">{{ car.carType }}</div> 22 <div class="roomType">{{ car.carType }}</div>
23 <div class="tagbox"> 23 <div class="tagbox">
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
64 <el-form-item :label="language==0?'用车时间':'Time'" required> 64 <el-form-item :label="language==0?'用车时间':'Time'" required>
65 <el-time-picker 65 <el-time-picker
66 v-model="revTime1" :start="car.operStart" :end="car.operEnd" 66 v-model="revTime1" :start="car.operStart" :end="car.operEnd"
67 placeholder="Arbitrary time" format="HH:mm" value-format="HH:mm" @change="bindTimeChange" 67 format="HH:mm" value-format="HH:mm" @change="bindTimeChange"
68 /> 68 />
69 </el-form-item> 69 </el-form-item>
70 <el-form-item :label="language==0?'联系人':'Contacts'" required> 70 <el-form-item :label="language==0?'联系人':'Contacts'" required>
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
101 <el-form-item :label="language==0?'用车时间':'Time'" required> 101 <el-form-item :label="language==0?'用车时间':'Time'" required>
102 <el-time-picker 102 <el-time-picker
103 v-model="revTime2" :start="car.operStart" :end="car.operEnd" 103 v-model="revTime2" :start="car.operStart" :end="car.operEnd"
104 placeholder="Arbitrary time" format="HH:mm" value-format="HH:mm" @change="bindTimeChange2" 104 format="HH:mm" value-format="HH:mm" @change="bindTimeChange2"
105 /> 105 />
106 </el-form-item> 106 </el-form-item>
107 <el-form-item :label="language==0?'联系人':'Contacts'" required> 107 <el-form-item :label="language==0?'联系人':'Contacts'" required>
...@@ -158,12 +158,11 @@ ...@@ -158,12 +158,11 @@
158 </label> 158 </label>
159 </el-col> 159 </el-col>
160 <el-col :span="12" class="text-right"> 160 <el-col :span="12" class="text-right">
161 <el-button type="primary" class="btn-lineG" @click="submit" round :loading="payLoading">确认付款</el-button> 161 <el-button type="primary" class="btn-lineG w200px" @click="submit" round :loading="payLoading">{{ language == 0 ?'确认付款':'Pay' }}</el-button>
162 </el-col> 162 </el-col>
163 </el-row> 163 </el-row>
164 </el-card> 164 </el-card>
165 <div style="height: 60px;"></div> 165 <div style="height: 60px;"></div>
166
167 </div> 166 </div>
168 </div> 167 </div>
169 </template> 168 </template>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 <div class="searchBar"> 7 <div class="searchBar">
8 <el-input :placeholder="language==0?'请输入关键字搜索':'Search'" v-model="query.name" class="no-border"> 8 <el-input :placeholder="language==0?'请输入关键字搜索':'Search'" v-model="query.name" class="no-border">
9 </el-input> 9 </el-input>
10 <el-button size="large" type="primary" class="btn-lineG" icon="search">{{ language==0?'搜索':'Search' }}</el-button> 10 <el-button size="large" type="primary" class="btn-lineG" icon="search" @click="getList">{{ language==0?'搜索':'Search' }}</el-button>
11 </div> 11 </div>
12 </div> 12 </div>
13 13
...@@ -17,16 +17,16 @@ ...@@ -17,16 +17,16 @@
17 <el-card> 17 <el-card>
18 <el-row class="hotel" align="middle" :gutter="20"> 18 <el-row class="hotel" align="middle" :gutter="20">
19 <el-col :span="12"> 19 <el-col :span="12">
20 <img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])"/> 20 <el-image class="w100 as16_9" fit="cover" :src="fillImgUrl(h.photos?.split(',')[0])"/>
21 </el-col> 21 </el-col>
22 <el-col :span="12"> 22 <el-col :span="12">
23 <h3 class="esp m0">{{h.name}}</h3> 23 <h3 class="esp m0">{{h.name}}</h3>
24 <p class="esp_2 addr"> 24 <p class="esp addr">
25 <el-icon color="#929AA0"><LocationFilled /></el-icon> 25 <el-icon color="#929AA0"><LocationFilled /></el-icon>
26 {{h.addName}} 26 {{h.addName}}
27 </p> 27 </p>
28 <div class="price mb20" v-if="language==0"><i class="text-warning">¥</i><span class="text-warning">{{ h.price }}</span></div> 28 <div class="price mb10" v-if="language==0"><i class="text-warning">¥</i><span class="text-warning">{{ h.price || 0 }}</span></div>
29 <div class="price mb20" v-else><i class="text-warning"></i><span class="text-warning">{{ h.price }}</span>start</div> 29 <div class="price mb10" v-else><i class="text-warning"></i><span class="text-warning">{{ h.price || 0 }}</span>start</div>
30 <el-button class="btn-lineG" round type="primary" size="large" @click="goDetail(h)">{{ language==0?'立即预约':'Select' }}</el-button> 30 <el-button class="btn-lineG" round type="primary" size="large" @click="goDetail(h)">{{ language==0?'立即预约':'Select' }}</el-button>
31 31
32 </el-col> 32 </el-col>
...@@ -43,10 +43,11 @@ ...@@ -43,10 +43,11 @@
43 <script setup> 43 <script setup>
44 import {onMounted} from "@vue/runtime-core" 44 import {onMounted} from "@vue/runtime-core"
45 import * as booking from "@/apiPc/booking" 45 import * as booking from "@/apiPc/booking"
46 import {useRoute, useRouter} from "vue-router"
47 const route = useRoute()
46 const router = useRouter() 48 const router = useRouter()
47 const language = useStorage('language', 0) 49 const language = useStorage('language', 0)
48 import {getActivityRestaurantList} from "@/apiPc/booking"; 50 import {getActivityRestaurantList} from "@/apiPc/booking";
49 import {useRouter} from "vue-router";
50 import {useStorage} from "@vueuse/core/index"; 51 import {useStorage} from "@vueuse/core/index";
51 const query = ref({ 52 const query = ref({
52 name:'' 53 name:''
...@@ -57,7 +58,8 @@ onMounted(()=>{ ...@@ -57,7 +58,8 @@ onMounted(()=>{
57 }) 58 })
58 59
59 function getList() { 60 function getList() {
60 booking.getActivityRestaurantList(query.value).then(res=>{ 61 query.value.activityId = route.params.cptId
62 getActivityRestaurantList(query.value).then(res=>{
61 list.value = res.rows 63 list.value = res.rows
62 }) 64 })
63 } 65 }
......
...@@ -24,11 +24,18 @@ ...@@ -24,11 +24,18 @@
24 24
25 <div class="mt30"> 25 <div class="mt30">
26 <el-row :gutter="20"> 26 <el-row :gutter="20">
27 <el-col v-for="(p,index) in form?.photos?.split(',')" :span="index==0?12:6"> 27 <el-col :span="10">
28 <div class="imgbox hotelImg"> 28 <div class="imgbox hotelImg">
29 <img :src="fillImgUrl(p)"> 29 <el-image :src="fillImgUrl(form?.photos?.split(',')[0])" fit="cover" :preview-src-list="form?.photos?.split(',')"/>
30 </div> 30 </div>
31 </el-col> 31 </el-col>
32 <el-col :span="14">
33 <el-row class="h100" :gutter="20">
34 <el-col :span="8" v-for="(p,index) in form?.photos?.split(',').slice(1,7)" style="height: calc(50% - 10px)">
35 <div class="imgbox hotelImg"><el-image :src="fillImgUrl(p)" fit="cover" :preview-src-list="form?.photos?.split(',')"/></div>
36 </el-col>
37 </el-row>
38 </el-col>
32 </el-row> 39 </el-row>
33 </div> 40 </div>
34 41
......
...@@ -31,23 +31,27 @@ ...@@ -31,23 +31,27 @@
31 <!-- :picker-options="pickerOptions"--> 31 <!-- :picker-options="pickerOptions"-->
32 </el-form-item> 32 </el-form-item>
33 33
34 <el-form-item :label="`联系人`" required> 34 <el-form-item :label="language==0?'联系人':'Contacts'" required>
35 <el-input v-model="form.contacts"/> 35 <el-input v-model="form.contacts"/>
36 </el-form-item> 36 </el-form-item>
37 <el-form-item :label="language==0?'联系电话':'Contact phone'" required prop="phone"> 37 <el-form-item :label="language==0?'联系电话':'Contact phone'" required prop="phone">
38 <el-input v-model="form.phone"/> 38 <el-input v-model="form.phone"/>
39 </el-form-item> 39 </el-form-item>
40 <el-form-item :label="language==0?'送餐时间':'Contact phone'" required prop="phone"> 40 <el-form-item :label="language==0?'送餐时间':'Delivery time'" required prop="phone">
41 <div style="line-height: 36px;">{{food.psStart}} - {{food.psEnd}}</div> 41 <div style="line-height: 36px;">{{food.psStart}} - {{food.psEnd}}</div>
42 </el-form-item> 42 </el-form-item>
43 <el-form-item label="配送地址"> 43 <el-form-item :label="language==0?'配送地址':'Delivery address'">
44 <div style="line-height: 36px;">{{food.address}}</div> 44 <div style="line-height: 36px;">{{food.address}}</div>
45 </el-form-item> 45 </el-form-item>
46 <el-form-item> 46 <el-form-item :label="language==0?'说明':'Instructions'">
47 <div class="tip"> 47 <div class="tip" v-if="language==0">
48 *如预定多天的餐饮,将分多天进行配送。<br/> 48 *如预定多天的餐饮,将分多天进行配送。<br/>
49 *每日送餐时间只配送当日预定的餐饮。 49 *每日送餐时间只配送当日预定的餐饮。
50 </div> 50 </div>
51 <div class="tip" v-else>1.If you have ordered food for multiple days, it will be delivered in multiple days.
52 <br/>
53 2.Only the meals ordered on the day of delivery will be delivered during the daily delivery time.
54 </div>
51 </el-form-item> 55 </el-form-item>
52 <el-form-item :label="language==0?'备注':'Remarks'"> 56 <el-form-item :label="language==0?'备注':'Remarks'">
53 <el-input type="textarea" rows="3" v-model="form.remarks"/> 57 <el-input type="textarea" rows="3" v-model="form.remarks"/>
...@@ -80,7 +84,7 @@ ...@@ -80,7 +84,7 @@
80 </label> 84 </label>
81 </el-col> 85 </el-col>
82 <el-col :span="12" class="text-right"> 86 <el-col :span="12" class="text-right">
83 <el-button type="primary" class="btn-lineG" @click="submit">确认付款</el-button> 87 <el-button type="primary" size="large" class="btn-lineG w200px" @click="submit" round>{{ language == 0 ?'确认付款':'Pay' }}</el-button>
84 </el-col> 88 </el-col>
85 </el-row> 89 </el-row>
86 </el-card> 90 </el-card>
......
...@@ -13,32 +13,35 @@ ...@@ -13,32 +13,35 @@
13 </div> 13 </div>
14 14
15 <div class="box" v-loading="loading"> 15 <div class="box" v-loading="loading">
16 <el-card v-for="(h,index) in list" class="mb20" @click="goDetail(h)"> 16 <el-row :gutter="20">
17 <!-- 酒店列表--> 17 <el-col :lg="12" :md="24" :sm="24" xs="24" :xl="12" v-for="(h,index) in list" class="mb20">
18 <el-row class="hotel" align="middle" :gutter="20"> 18 <el-card @click="goDetail(h)">
19 <el-col :span="6"> 19 <!-- 酒店列表-->
20 <img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])"/> 20 <el-row class="hotel" align="middle" :gutter="20">
21 </el-col> 21 <el-col :span="12">
22 <el-col :span="10"> 22 <img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])"/>
23 <h3 class="esp">{{h.name}}</h3> 23 </el-col>
24 <div class="starBox"> 24 <el-col :span="12">
25 <img v-for="i in Number(h.starLevel||0)" src="@/assets/booking/star.png"> 25 <h3 class="esp flex">{{h.name}}
26 </div> 26 <div class="starBox ml10">
27 <div class="tagbox"> 27 <img v-for="i in Number(h.starLevel||0)" src="@/assets/booking/star.png">
28 <span v-for="(t,index) in h.label?.split(',')" v-show="index<4">{{t}}</span> 28 </div>
29 <a v-show="h.label?.split(',').length>4">{{ language==0?'更多':'MORE' }} ></a> 29 </h3>
30 </div> 30 <div class="tagbox">
31 <p class="esp addr"> 31 <span v-for="(t,index) in h.label?.split(',')" v-show="index<3">{{t}}</span>
32 <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"><LocationFilled /></el-icon> 32 <a v-show="h.label?.split(',').length>4">{{ language==0?'更多':'MORE' }} ></a>
33 {{h.address}} 33 </div>
34 </p> 34 <p class="esp addr">
35 </el-col> 35 <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"><LocationFilled /></el-icon>
36 <el-col :span="8" class="text-right"> 36 {{h.address}}
37 <div class="price">¥<span>{{ h.price }}</span><i v-if="language==0"></i></div> 37 </p>
38 <el-button class="btn-lineG w200px" round type="primary" size="large">{{ language==0?'立即预约':'Select' }}</el-button> 38 <div class="price">¥<span>{{ h.price }}</span><i v-if="language==0"></i></div>
39 </el-col> 39 <el-button class="btn-lineG w200px" round type="primary" >{{ language==0?'立即预约':'Select' }}</el-button>
40 </el-row> 40 </el-col>
41 </el-card> 41 </el-row>
42 </el-card>
43 </el-col>
44 </el-row>
42 <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description="" /> 45 <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description="" />
43 <div style="height: 50px"></div> 46 <div style="height: 50px"></div>
44 </div> 47 </div>
...@@ -90,10 +93,10 @@ ...@@ -90,10 +93,10 @@
90 93
91 <style scoped lang="scss"> 94 <style scoped lang="scss">
92 .hotel{ 95 .hotel{
93 h3{margin: 0 0 20px;} 96 h3{margin: 0 0 10px;}
94 img.w100{object-fit: cover;aspect-ratio: 16/9} 97 img.w100{object-fit: cover;aspect-ratio: 16/9}
95 .addr{font-size: 16px;color: #929AA0;font-weight: 400;} 98 .addr{font-size: 14px;color: #929AA0;font-weight: 400;margin: 0 0 10px;}
96 .price{margin: 0 0 25px; 99 .price{margin: 0 0 8px;
97 color: #FF8124;font-size: 18px; 100 color: #FF8124;font-size: 18px;
98 span{font-size: 24px;margin: 0 8px;font-family: 'DINAlternate-Bold';font-weight: 600;} 101 span{font-size: 24px;margin: 0 8px;font-family: 'DINAlternate-Bold';font-weight: 600;}
99 i{font-style: normal;color: #929AA0;} 102 i{font-style: normal;color: #929AA0;}
...@@ -113,9 +116,9 @@ ...@@ -113,9 +116,9 @@
113 .starBox{ 116 .starBox{
114 img{display: inline-block;margin-right: 4px} 117 img{display: inline-block;margin-right: 4px}
115 } 118 }
116 .tagbox{margin: 15px 0; 119 .tagbox{margin: 10px 0;
117 a{color: #AFB5B9;font-size: 12px;} 120 a{color: #AFB5B9;font-size: 12px;}
118 span{border-radius: 13px;font-size: 12px;padding: 4px 10px;margin-right:10px;font-weight: 400;} 121 span{border-radius: 13px;font-size: 12px;padding: 3px 10px;margin-right:10px;font-weight: 400;}
119 span:nth-child(4n){background: rgba(50, 177, 108, 0.2);color: rgba(50, 177, 108, 1);} 122 span:nth-child(4n){background: rgba(50, 177, 108, 0.2);color: rgba(50, 177, 108, 1);}
120 span:nth-child(4n+1){background:rgba(243, 152, 0, 0.2);color: rgba(243, 152, 0, 1);} 123 span:nth-child(4n+1){background:rgba(243, 152, 0, 0.2);color: rgba(243, 152, 0, 1);}
121 span:nth-child(4n+2){background: rgba(0, 160, 233, 0.2);color: rgba(0, 160, 233, 1);} 124 span:nth-child(4n+2){background: rgba(0, 160, 233, 0.2);color: rgba(0, 160, 233, 1);}
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
6 <!-- <el-col :span="6">--> 6 <!-- <el-col :span="6">-->
7 <!-- <img class="w100" :src="fillImgUrl(form.photos?.split(',')[0])"/>--> 7 <!-- <img class="w100" :src="fillImgUrl(form.photos?.split(',')[0])"/>-->
8 <!-- </el-col>--> 8 <!-- </el-col>-->
9 <el-col :span="16"> 9 <el-col :span="language == 0?16:24">
10 <h3 class="esp flex">{{ form?.name }} 10 <h3 class="esp flex">{{ form?.name }}
11 <div class="starBox ml20"> 11 <div class="starBox ml20">
12 <img v-for="i in Number(form?.starLevel||0)" src="@/assets/booking/star.png"> 12 <img v-for="i in Number(form?.starLevel||0)" src="@/assets/booking/star.png">
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
30 <div :class="showAll?'':'esp_2'" @click="showAll=!showAll" v-html="form.introduction.toString()"></div> 30 <div :class="showAll?'':'esp_2'" @click="showAll=!showAll" v-html="form.introduction.toString()"></div>
31 </div> 31 </div>
32 </el-col> 32 </el-col>
33 <el-col :span="8" class="text-right"> 33 <el-col :span="8" class="text-right" v-if="language == 0">
34 <div class="mapBox" @click="goMap"> 34 <div class="mapBox" @click="goMap">
35 <div id="map"></div> 35 <div id="map"></div>
36 </div> 36 </div>
...@@ -41,11 +41,18 @@ ...@@ -41,11 +41,18 @@
41 41
42 <div class="mt30"> 42 <div class="mt30">
43 <el-row :gutter="20"> 43 <el-row :gutter="20">
44 <el-col v-for="(p,index) in form?.photos?.split(',')" :span="index==0?9:5" v-show="index<7"> 44 <el-col :span="10">
45 <div class="imgbox hotelImg"> 45 <div class="imgbox hotelImg">
46 <el-image :src="fillImgUrl(p)" fit="cover" :preview-src-list="form?.photos?.split(',')"/> 46 <el-image :src="fillImgUrl(form?.photos?.split(',')[0])" fit="cover" :preview-src-list="form?.photos?.split(',')"/>
47 </div> 47 </div>
48 </el-col> 48 </el-col>
49 <el-col :span="14">
50 <el-row class="h100" :gutter="20">
51 <el-col :span="8" class="oddmb" v-for="(p,index) in form?.photos?.split(',').slice(1,7)">
52 <div class="imgbox hotelImg"><el-image :src="fillImgUrl(p)" fit="cover"/></div>
53 </el-col>
54 </el-row>
55 </el-col>
49 </el-row> 56 </el-row>
50 </div> 57 </div>
51 58
...@@ -186,10 +193,6 @@ function initMap() { ...@@ -186,10 +193,6 @@ function initMap() {
186 } 193 }
187 194
188 function goOrder(room) { 195 function goOrder(room) {
189 if(!user){
190 useUserStore().setReLogin()
191 return
192 }
193 router.push({ 196 router.push({
194 name:'hotelOrder', 197 name:'hotelOrder',
195 params:{ 198 params:{
...@@ -330,4 +333,5 @@ function goMap() { ...@@ -330,4 +333,5 @@ function goMap() {
330 color: #929AA0; 333 color: #929AA0;
331 .el-icon{margin-right: 5px;} 334 .el-icon{margin-right: 5px;}
332 } 335 }
336 .oddmb:nth-child(2){margin-bottom: 20px;}
333 </style> 337 </style>
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
31 <el-form-item :label="language==0?'入住日期':'Check-in date'" required> 31 <el-form-item :label="language==0?'入住日期':'Check-in date'" required>
32 <el-date-picker @change="getDaysBetween" 32 <el-date-picker @change="getDaysBetween"
33 v-model="rzRange" 33 v-model="rzRange"
34 type="daterange" 34 type="daterange" :disabled-date="disabledDateRZ"
35 :placeholder="language==0?'选择日期':'Select date'" format="YYYY-MM-DD" 35 :placeholder="language==0?'选择日期':'Select date'" format="YYYY-MM-DD"
36 value-format="YYYY-MM-DD"/> 36 value-format="YYYY-MM-DD"/>
37 <!-- :picker-options="pickerOptions"--> 37 <!-- :picker-options="pickerOptions"-->
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
43 <span v-else>{{ canOrderNum }} Remaining rooms</span> 43 <span v-else>{{ canOrderNum }} Remaining rooms</span>
44 </div> 44 </div>
45 </el-form-item> 45 </el-form-item>
46 <el-form-item v-for="(n,index) in form.roomNum" :key="index" :label="`入住人${index+1}`" required> 46 <el-form-item v-for="(n,index) in form.roomNum" :key="index" :label="language==0?'Name':'入住人'`${index+1}`" required>
47 <el-input v-model="rzUserArr[index]" :placeholder="language==0?'每间填一位住客姓名':'Each room fill in one name of the guest'"/> 47 <el-input v-model="rzUserArr[index]" :placeholder="language==0?'每间填一位住客姓名':'Each room fill in one name of the guest'"/>
48 </el-form-item> 48 </el-form-item>
49 <el-form-item :label="language==0?'预计到店':'Expected check-in'" required> 49 <el-form-item :label="language==0?'预计到店':'Expected check-in'" required>
...@@ -64,11 +64,11 @@ ...@@ -64,11 +64,11 @@
64 <div v-if="room.addBedFlag=='1'"> 64 <div v-if="room.addBedFlag=='1'">
65 <el-form-item :label="language==0?'是否加床':'Extra bed'" required> 65 <el-form-item :label="language==0?'是否加床':'Extra bed'" required>
66 <el-radio-group v-model="form.isAddbed"> 66 <el-radio-group v-model="form.isAddbed">
67 <el-radio label="1">{{ language == 0 ? '是' : 'Yes' }}</el-radio> 67 <el-radio value="1">{{ language == 0 ? '是' : 'Yes' }}</el-radio>
68 <el-radio label="0">{{ language == 0 ? '否' : 'No' }}</el-radio> 68 <el-radio value="0">{{ language == 0 ? '否' : 'No' }}</el-radio>
69 </el-radio-group> 69 </el-radio-group>
70 </el-form-item> 70 </el-form-item>
71 <el-form-item :label="language==0?'加床张数':'Extra bed num'" required> 71 <el-form-item v-if="form.isAddbed=='1'" :label="language==0?'加床张数':'Extra bed num'" required>
72 <el-input-number v-model="form.addNum" :min="0" :max="1" @change="changeBed"/> 72 <el-input-number v-model="form.addNum" :min="0" :max="1" @change="changeBed"/>
73 73
74 <div class="tip" v-if="form.isAddbed=='1'">* 74 <div class="tip" v-if="form.isAddbed=='1'">*
...@@ -128,7 +128,7 @@ ...@@ -128,7 +128,7 @@
128 </label> 128 </label>
129 </el-col> 129 </el-col>
130 <el-col :span="12" class="text-right"> 130 <el-col :span="12" class="text-right">
131 <el-button type="primary" class="btn-lineG" @click="submit">确认付款</el-button> 131 <el-button type="primary" class="btn-lineG w200px" size="large" round @click="submit">确认付款</el-button>
132 </el-col> 132 </el-col>
133 </el-row> 133 </el-row>
134 </el-card> 134 </el-card>
...@@ -142,7 +142,7 @@ ...@@ -142,7 +142,7 @@
142 import {useRouter, useRoute} from "vue-router"; 142 import {useRouter, useRoute} from "vue-router";
143 import {ref, reactive, onMounted} from "vue"; 143 import {ref, reactive, onMounted} from "vue";
144 import {useStorage} from "@vueuse/core/index"; 144 import {useStorage} from "@vueuse/core/index";
145 import {checkResidueRoom, newsSubmitOrderHotel} from "@/apiPc/booking" 145 import {checkResidueRoom, getBaseInfoByActiveId, newsSubmitOrderHotel} from "@/apiPc/booking"
146 import dayjs from 'dayjs' 146 import dayjs from 'dayjs'
147 import {ElMessage,ElMessageBox} from "element-plus"; 147 import {ElMessage,ElMessageBox} from "element-plus";
148 import useUserStore from "@/store/modules/user"; 148 import useUserStore from "@/store/modules/user";
...@@ -152,8 +152,8 @@ const router = useRouter() ...@@ -152,8 +152,8 @@ const router = useRouter()
152 const route = useRoute() 152 const route = useRoute()
153 const room = ref({}) 153 const room = ref({})
154 const hotelName = ref('') 154 const hotelName = ref('')
155 const canOrderStart = ref('')
156 const canOrderNum = ref(0) 155 const canOrderNum = ref(0)
156 const lform = ref({})
157 const form = ref({ 157 const form = ref({
158 isAddbed: '0', 158 isAddbed: '0',
159 roomNum: 0, 159 roomNum: 0,
...@@ -167,6 +167,10 @@ const money = ref(0) ...@@ -167,6 +167,10 @@ const money = ref(0)
167 const choseRooms = ref([]) 167 const choseRooms = ref([])
168 const ddDateArr = ref([ 168 const ddDateArr = ref([
169 { 169 {
170 value: '07:00',
171 label: '07:00'
172 },
173 {
170 value: '08:00', 174 value: '08:00',
171 label: '08:00' 175 label: '08:00'
172 }, 176 },
...@@ -233,6 +237,14 @@ const ddDateArr = ref([ ...@@ -233,6 +237,14 @@ const ddDateArr = ref([
233 { 237 {
234 value: '00:00', 238 value: '00:00',
235 label: '00:00' 239 label: '00:00'
240 },
241 {
242 value: '01:00',
243 label: '01:00'
244 },
245 {
246 value: '02:00',
247 label: '02:00'
236 } 248 }
237 ]) 249 ])
238 const rules = ref({}) 250 const rules = ref({})
...@@ -241,15 +253,31 @@ let usedays = 0 ...@@ -241,15 +253,31 @@ let usedays = 0
241 onMounted(() => { 253 onMounted(() => {
242 console.log(route.query) 254 console.log(route.query)
243 room.value = JSON.parse(decodeURIComponent(route.query.room)) 255 room.value = JSON.parse(decodeURIComponent(route.query.room))
256 console.log(room.value)
244 hotelName.value = route.query.hotelName 257 hotelName.value = route.query.hotelName
245 money.value = 0 258 money.value = 0
246 const today = dayjs() 259 const today = dayjs()
247 canOrderStart.value = today 260 initDays()
248 if (room.value.hqNewStart < canOrderStart.value) {
249 room.value.hqNewStart = canOrderStart.value
250 }
251 }) 261 })
252 262 function initDays() {
263 getBaseInfoByActiveId(route.params.cptId).then(res=>{
264 lform.value = res.data
265 }).catch(err=>{
266 console.log(err)
267 })
268 }
269 function disabledDateRZ(date) {
270 //判读今天大与form.value.hqStart
271 if (lform.value.hqStart) {
272 const today = dayjs().format('YYYY-MM-DD')
273 if (lform.value.hqStart < today) {
274 return !((date.getTime() >= dayjs(today).valueOf())&&(date.getTime() <= dayjs(lform.value.hqEnd).valueOf()))
275 } else {
276 return !((date.getTime() >= dayjs(lform.value.hqStart).valueOf())&&(date.getTime() <= dayjs(lform.value.hqEnd).valueOf()))
277 }
278 }
279 return true
280 }
253 function changeRoomNum(e) { 281 function changeRoomNum(e) {
254 if (form.value.addNum > e) { 282 if (form.value.addNum > e) {
255 form.value.addNum = e 283 form.value.addNum = e
...@@ -360,20 +388,38 @@ function submit() { ...@@ -360,20 +388,38 @@ function submit() {
360 form.value.ahrId = room.value.id 388 form.value.ahrId = room.value.id
361 form.value.orderName = hotelName.value 389 form.value.orderName = hotelName.value
362 form.value.roomName = room.value.roomType 390 form.value.roomName = room.value.roomType
391 form.value.roomPhoto = room.value.photo
363 var str = '' 392 var str = ''
364 var str2 = '' 393 var str2 = ''
365 if (form.value.addNum && form.value.addNum > 0) { 394 if(language.value==0){
366 str = `加床${form.value.addNum}张` 395 if (form.value.addNum && form.value.addNum > 0) {
367 } else { 396 str = `加床${form.value.addNum}张`
368 str = `未加床` 397 } else {
398 str = `未加床`
399 }
400 if (room.value.breakfastNum && room.value.breakfastNum > 0) {
401 str2 = `${room.value.breakfastNum}份早餐`
402 } else {
403 str2 = `无早餐`
404 }
405 form.value.room = `${form.value.roomNum} 间 · ${usedays}晚 · ${str} · ${str2}`
406 console.log(form.value.room)
369 } 407 }
370 if (room.value.breakfastNum && room.value.breakfastNum > 0) { 408 if(language.value==1){
371 str2 = `${room.value.breakfastNum}份早餐` 409 if (form.value.addNum && form.value.addNum > 0) {
372 } else { 410 str = `have ${form.value.addNum} extra bed`
373 str2 = `无早餐` 411 } else {
412 str = `No extra bed`
413 }
414 if (room.value.breakfastNum && room.value.breakfastNum > 0) {
415 str2 = `${room.value.breakfastNum} breakfast`
416 } else {
417 str2 = `No breakfast`
418 }
419 form.value.room = `${form.value.roomNum} rooms · ${usedays} night·${str}·${str2}`
420 console.log(form.value.room)
374 } 421 }
375 form.value.room = `${form.value.roomNum} 间·${usedays}晚·${str}·${str2}` 422
376 console.log(form.value.room)
377 423
378 // 提交确认 424 // 提交确认
379 ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', { 425 ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', {
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
21 import {ref} from "vue"; 21 import {ref} from "vue";
22 import {useRoute, useRouter} from "vue-router"; 22 import {useRoute, useRouter} from "vue-router";
23 import {onMounted} from "@vue/runtime-core"; 23 import {onMounted} from "@vue/runtime-core";
24 import {callbackPalPay} from "@/apiPc/match"; 24 import {callbackPalPay} from "@/apiPc/booking";
25 import {useStorage} from "@vueuse/core/index"; 25 import {useStorage} from "@vueuse/core/index";
26 26
27 const route = useRoute() 27 const route = useRoute()
......
...@@ -28,6 +28,18 @@ ...@@ -28,6 +28,18 @@
28 </a> 28 </a>
29 </li> 29 </li>
30 </ul> 30 </ul>
31 <ul v-if="user.utype=='3'">
32 <li
33 v-for="(m, i) in menus3"
34 :key="i"
35 :class="{ active: m.isActive }"
36 >
37 <a href="javascript:void(0)" @click="toInfo(m,menus3)">
38 <img :src="m.isActive ? m.picUrl2 : m.picUrl1">
39 {{ m.name }}
40 </a>
41 </li>
42 </ul>
31 </div> 43 </div>
32 </el-card> 44 </el-card>
33 </el-col> 45 </el-col>
...@@ -103,6 +115,29 @@ const menus = ref([ ...@@ -103,6 +115,29 @@ const menus = ref([
103 isActive: false 115 isActive: false
104 } 116 }
105 ]) 117 ])
118 const menus3 = ref([
119 {
120 name: language.value==0?'基础信息':'Basic Information',
121 routeName: 'myInfo',
122 picUrl1: '/img/nav_26.png',
123 picUrl2: '/img/nav_26_dwn.png',
124 isActive: false
125 },
126 {
127 name: language.value==0?'修改密码':'Change Password',
128 routeName: 'myPassword',
129 picUrl1: '/img/nav_27.png',
130 picUrl2: '/img/nav_27_dwn.png',
131 isActive: false
132 },
133 {
134 name: language.value==0?'我的预定':'My Reservation',
135 routeName: 'myReservation',
136 picUrl1: '/img/nav_29.png',
137 picUrl2: '/img/nav_29_dwn.png',
138 isActive: false
139 }
140 ])
106 const menusPersonal = ref([ 141 const menusPersonal = ref([
107 { 142 {
108 name: language.value==0?'基础信息':'Basic Information', 143 name: language.value==0?'基础信息':'Basic Information',
...@@ -160,6 +195,12 @@ onMounted(() => { ...@@ -160,6 +195,12 @@ onMounted(() => {
160 }) 195 })
161 currMenu.isActive = true 196 currMenu.isActive = true
162 } 197 }
198 if(user.utype=='3'){
199 currMenu = _.find(menus3.value, (m) => {
200 return m.routeName === route.name
201 })
202 currMenu.isActive = true
203 }
163 204
164 }) 205 })
165 206
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
18 <el-form-item :label="language==0?'用户名':'Account'"> 18 <el-form-item :label="language==0?'用户名':'Account'">
19 {{ user.userName }} 19 {{ user.userName }}
20 </el-form-item> 20 </el-form-item>
21 <el-form-item :label="language==0?'姓名':'Real Name'" required prop="realName"> 21 <el-form-item :label="language==0?'姓名':'Real Name'" required prop="realName" v-if="user.utype=='1'">
22 <el-input v-model="myform.realName" disabled/> 22 <el-input v-model="myform.realName" disabled/>
23 </el-form-item> 23 </el-form-item>
24 <el-form-item :label="language==0?'性别':'Gender'" required > 24 <el-form-item :label="language==0?'性别':'Gender'" required >
...@@ -34,25 +34,25 @@ ...@@ -34,25 +34,25 @@
34 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 34 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
35 /> 35 />
36 </el-form-item> 36 </el-form-item>
37 <el-form-item :label="language==0?'代表':'Representing'" required> 37 <el-form-item :label="language==0?'代表':'Representing'" required v-if="user.utype=='1'">
38 <el-input v-model="myform.representing" disabled/> 38 <el-input v-model="myform.representing" disabled/>
39 </el-form-item> 39 </el-form-item>
40 <el-form-item :label="language==1?'Age group':'年龄组'" required> 40 <el-form-item :label="language==1?'Age group':'年龄组'" required v-if="user.utype=='1'">
41 <el-input v-model="myform.ageGroup" disabled/> 41 <el-input v-model="myform.ageGroup" disabled/>
42 </el-form-item> 42 </el-form-item>
43 <el-form-item :label="language==0?'舞种':'Division'" required> 43 <el-form-item :label="language==0?'舞种':'Division'" required v-if="user.utype=='1'">
44 <el-input v-model="myform.division" disabled/> 44 <el-input v-model="myform.division" disabled/>
45 </el-form-item> 45 </el-form-item>
46 <el-form-item :label="language==0?'状态':'Status'" required> 46 <el-form-item :label="language==0?'状态':'Status'" required v-if="user.utype=='1'">
47 <el-input v-model="myform.wdsfStatus" disabled/> 47 <el-input v-model="myform.wdsfStatus" disabled/>
48 </el-form-item> 48 </el-form-item>
49 <el-form-item :label="language==0?'证件号':'Passport number'"> 49 <el-form-item :label="language==0?'证件号':'Passport number'" v-if="user.utype=='1'">
50 <el-input v-model="myform.passportNumber"/> 50 <el-input v-model="myform.passportNumber"/>
51 </el-form-item> 51 </el-form-item>
52 <el-form-item :label="language==0?'有效证件':'Valid Passport'" required> 52 <el-form-item :label="language==0?'有效证件':'Valid Passport'" required v-if="user.utype=='1'">
53 <file-upload v-model="myform.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/> 53 <file-upload v-model="myform.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/>
54 </el-form-item> 54 </el-form-item>
55 <el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" prop="wdsfMin"> 55 <el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" prop="wdsfMin" v-if="user.utype=='1'">
56 {{myform.wdsfMin}} 56 {{myform.wdsfMin}}
57 </el-form-item> 57 </el-form-item>
58 <!-- <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">--> 58 <!-- <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">-->
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
22 </el-form> 22 </el-form>
23 </div> 23 </div>
24 <el-row justify="center"> 24 <el-row justify="center">
25 <el-button type="primary" class="btn-lineG" @click="submit">{{ language==0?'保存':'Save' }}</el-button> 25 <el-button type="primary" class="btn-lineG" round @click="submit">{{ language==0?'保存':'Save' }}</el-button>
26 </el-row> 26 </el-row>
27 </div> 27 </div>
28 </el-card> 28 </el-card>
......
...@@ -14,46 +14,67 @@ ...@@ -14,46 +14,67 @@
14 <label class="blueTag" v-if="b.orderType == 0"> {{ language==0?'酒店':'HOTEL' }} </label> 14 <label class="blueTag" v-if="b.orderType == 0"> {{ language==0?'酒店':'HOTEL' }} </label>
15 <label class="purpleTag" v-if="b.orderType == 1"> {{ language==0?'车辆':'TRANSPORTATION' }} </label> 15 <label class="purpleTag" v-if="b.orderType == 1"> {{ language==0?'车辆':'TRANSPORTATION' }} </label>
16 <label class="orangeTag" v-if="b.orderType == 2"> {{ language==0?'餐饮':'DINING' }} </label> 16 <label class="orangeTag" v-if="b.orderType == 2"> {{ language==0?'餐饮':'DINING' }} </label>
17 {{ language==0?'订单编号:':'No.' }} {{ b.id }} 17 <span>{{ language==0?'订单编号:':'No.' }} {{ b.id }}</span>
18 </div> 18 </div>
19
19 <div class="status-po"> 20 <div class="status-po">
20 <span class="bg-warning" v-if="b.status == '0'&&b.surplus!='0,0'&&b.surplus!='0'"> 待支付 21 <span class="bg-warning" v-if="b.status == '0'&&b.surplus!='0,0'&&b.surplus!='0'">
22 {{ language == 0 ?'待支付':'Unpaid' }}
21 </span> 23 </span>
22 <span class="bg-warning" v-if="b.status == '0'&&(b.surplus=='0,0'||b.surplus=='0')">已取消</span> 24 <span class="bg-warning" v-if="b.status == '0'&&(b.surplus=='0,0'||b.surplus=='0')">{{ language == 0 ? '已取消' : 'Canceled' }}</span>
23 <span class="bg-blue" v-if="b.status == '1'">支付成功</span> 25 <span class="bg-blue" v-if="b.status == '1'">{{ language == 0 ?'支付成功':'successful' }}</span>
24 <span class="bg-warning" v-if="b.status == '2'">已取消</span> 26 <span class="bg-warning" v-if="b.status == '2'">{{ language == 0 ? '已取消' : 'Canceled' }}</span>
25 <span class="bg-danger" v-if="b.status == '3'||b.status == '4'">已退订</span> 27 <span class="bg-danger" v-if="b.status == '3'||b.status == '4'">{{ language == 0 ? '已退订' : 'Refunded' }}</span>
26 </div> 28 </div>
27 <div class="plr20" v-if="b.orderType == 0">
28 <h3 class="name">{{b.name}}</h3>
29 <p>{{b.messageObj?.roomStayDate}}</p>
30 <p>{{b.messageObj?.roomName}}</p>
31 <p>{{b.messageObj?.roomInfo}}</p>
32 29
33 </div> 30 <el-row class="pd20 mt10" justify="space-between" align="middle">
34 <div class="plr20" v-if="b.orderType == 1"> 31 <el-col :lg="10">
35 <h3 class="name">{{b.name}}</h3> 32 <div v-if="b.orderType == 0">
36 <div v-for="(car,index) in b.messageObj.carsList" :key="index"> 33 <h3 class="name">{{b.name}}</h3>
37 <div v-if="car.num>0">{{car.name}}{{car.num}}</div> 34 <p>{{b.messageObj?.roomStayDate}}</p>
38 </div> 35
39 <div>{{b.handleDate}}</div> 36 <p>{{b.messageObj?.roomInfo}}</p>
40 </div> 37
41 <div class="plr20" v-if="b.orderType == 2">
42 <h3 class="name">{{b.name}}</h3>
43 <div v-for="(n,index) in b.messageObj.foodsList" :key="index">
44 <div v-if="n.num > 0">
45 {{n.name}}({{n.categoryName}}) * <span>{{n.num}}</span>
46 </div> 38 </div>
47 </div> 39 <div v-if="b.orderType == 1">
48 </div> 40 <h3 class="name">{{b.name}}</h3>
49 <el-row class="plr20 mt10" justify="space-between"> 41 <div v-for="(car,index) in b.messageObj.carsList" :key="index">
50 <el-col :lg="8"> 42 <p v-if="car.num>0">{{car.name}}{{car.num}}</p>
43 </div>
44 <p>{{b.handleDate}}</p>
45 </div>
46 <div v-if="b.orderType == 2">
47 <h3 class="name">{{b.name}}</h3>
48 <div v-for="(n,index) in b.messageObj.foodsList" :key="index">
49 <p v-if="n.num > 0">
50 {{n.name}}({{n.categoryName}}) * <span>{{n.num}} {{language==0?'份':'pcs'}}</span>
51 </p>
52 </div>
53 </div>
54 </el-col>
55 <el-col :lg="6">
56 <div v-if="b.orderType == 0">
57 <p>{{b.messageObj?.roomName}}</p>
58 <p>{{b.messageObj?.roomInfo}}</p>
59 </div>
60 <div v-if="b.orderType == 1">
61
62 </div>
63 <div v-if="b.orderType == 2">
64 <div v-for="(n,index) in b.messageObj.foodsList" :key="index">
65 <p v-if="n.num > 0">
66 {{n.name}}({{n.categoryName}}) * <span>{{n.num}} {{language==0?'份':'pcs'}}</span>
67 </p>
68 </div>
69 </div>
70 </el-col>
71 <el-col :lg="4">
51 <span class="text-warning"> {{ language==0?'¥':'€' }} 72 <span class="text-warning"> {{ language==0?'¥':'€' }}
52 <span class="bigMoney">{{b.total}}</span> 73 <span class="bigMoney">{{language==0?b.total:b.totalEn}}</span>
53 </span> 74 </span>
54 </el-col> 75 </el-col>
55 76
56 <el-col :lg="8"> 77 <el-col :lg="4">
57 <div class="text-right"> 78 <div class="text-right">
58 <el-button class="mb10" plain round type="primary" @click="goDetail(b)"> 79 <el-button class="mb10" plain round type="primary" @click="goDetail(b)">
59 {{ language==0?'详情':'Detail' }}</el-button> 80 {{ language==0?'详情':'Detail' }}</el-button>
...@@ -64,7 +85,6 @@ ...@@ -64,7 +85,6 @@
64 </el-col> 85 </el-col>
65 </el-row> 86 </el-row>
66 </div> 87 </div>
67
68 </div> 88 </div>
69 </el-card> 89 </el-card>
70 <div class="pd20"></div> 90 <div class="pd20"></div>
...@@ -89,6 +109,7 @@ function getList() { ...@@ -89,6 +109,7 @@ function getList() {
89 for (var b of list.value) { 109 for (var b of list.value) {
90 b.messageObj = JSON.parse(b.message) 110 b.messageObj = JSON.parse(b.message)
91 } 111 }
112 list.value = [...list.value]
92 }) 113 })
93 } 114 }
94 function goDetail(b) { 115 function goDetail(b) {
...@@ -110,7 +131,7 @@ function toInvoice(){ ...@@ -110,7 +131,7 @@ function toInvoice(){
110 131
111 <style scoped lang="scss"> 132 <style scoped lang="scss">
112 .bigMoney{font-size: 24px;font-family: "DIN Alternate";} 133 .bigMoney{font-size: 24px;font-family: "DIN Alternate";}
113 .name{font-size: 18px;margin: 15px 0 0;} 134 .name{font-size: 18px;margin: 0;}
114 .status-po{position: absolute;right: 0;top: 0;font-size: 12px; 135 .status-po{position: absolute;right: 0;top: 0;font-size: 12px;
115 color: #FFFFFF; 136 color: #FFFFFF;
116 span{border-radius: 0px 10px 0px 10px;padding: 4px 10px;} 137 span{border-radius: 0px 10px 0px 10px;padding: 4px 10px;}
...@@ -131,13 +152,17 @@ function toInvoice(){ ...@@ -131,13 +152,17 @@ function toInvoice(){
131 } 152 }
132 } 153 }
133 .item{ 154 .item{
134 margin: 0 0 20px; 155 p{margin: 10px 0;}
135 background: #FBFCFD; 156
136 border-radius: 2px; 157 margin: 0 0 20px;border: 1px solid #E5E5E5;
158 border-radius: 10px;
137 position: relative; 159 position: relative;
138 .bbody{padding: 0 15px 20px;} 160 .bbody{padding: 0 15px 20px;}
139 .title label{border-radius: 5px 0 5px 0; color: #fff; padding:4px 10px;margin-right: 10px;} 161 .title{background: #F7F7F7;border-bottom: 1px solid #E5E5E5;
140 p{margin: 5px 0;} 162 span{font-size: 14px;
163 color: #4C5359;}
164 }
165 .title label{border-radius: 5px 0 5px 0; font-size: 12px; color: #fff; padding:4px 10px;margin-right: 10px;}
141 .blueTag{ 166 .blueTag{
142 background-color: #1EC886;} 167 background-color: #1EC886;}
143 .purpleTag { 168 .purpleTag {
......
...@@ -2,64 +2,70 @@ ...@@ -2,64 +2,70 @@
2 <div class="itemBox" v-if="language == 0"> 2 <div class="itemBox" v-if="language == 0">
3 <el-row :gutter="20"> 3 <el-row :gutter="20">
4 <el-col :sm="12" :lg="8"> 4 <el-col :sm="12" :lg="8">
5 <div class="item" @click="goBooking(1)"><img src="@/assets/dance/btn01.png">酒店预订</div> 5 <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn01.png">酒店预订</div>
6 </el-col> 6 </el-col>
7 <el-col :sm="12" :lg="8"> 7 <el-col :sm="12" :lg="8">
8 <div class="item" @click="goBooking(2)"><img src="@/assets/dance/btn02.png">车辆预约</div> 8 <div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn02.png">车辆预订</div>
9 </el-col> 9 </el-col>
10 <el-col :sm="12" :lg="8"> 10 <el-col :sm="12" :lg="8">
11 <div class="item" @click="goBooking(3)"><img src="@/assets/dance/btn03.png">餐饮预约</div> 11 <div class="item" @click="popRemark(3)"><img src="@/assets/dance/btn03.png">餐饮预订</div>
12 </el-col> 12 </el-col>
13 <el-col :sm="12" :lg="8"> 13 <el-col :sm="12" :lg="8">
14 <div class="item" @click="goBooking(0)"><img src="@/assets/dance/btn04.png">票务预订</div> 14 <div class="item" @click="popRemark(0)"><img src="@/assets/dance/btn04.png">票务预订</div>
15 </el-col> 15 </el-col>
16 <el-col :sm="12" :lg="8"> 16 <el-col :sm="12" :lg="8">
17 <div class="item" @click="goBooking(4)"><img src="@/assets/dance/btn05.png">化妆预约</div> 17 <div class="item" @click="popRemark(4)"><img src="@/assets/dance/btn05.png">化妆预约</div>
18 </el-col> 18 </el-col>
19 <el-col :sm="12" :lg="8"> 19 <el-col :sm="12" :lg="8">
20 <div class="item" @click="goBooking(5)"><img src="@/assets/dance/btn06.png">拍照预约</div> 20 <div class="item" @click="popRemark(5)"><img src="@/assets/dance/btn06.png">拍照预约</div>
21 </el-col> 21 </el-col>
22 </el-row> 22 </el-row>
23 </div> 23 </div>
24 <div class="itemBox_en" v-else> 24 <div class="itemBox_en" v-else>
25 <el-row :gutter="20"> 25 <el-row :gutter="20">
26 <el-col :sm="12" :lg="8"> 26 <el-col :sm="12" :lg="8">
27 <div class="item_en" @click="goBooking(1)"><img src="@/assets/dance/btn01.png"> 27 <div class="item_en" @click="popRemark(1)"><img src="@/assets/dance/btn01.png">
28 <p>HOTEL RESERVATION</p> 28 <p>HOTEL RESERVATION</p>
29 </div></el-col> 29 </div></el-col>
30 <el-col :sm="12" :lg="8"> 30 <el-col :sm="12" :lg="8">
31 <div class="item_en" @click="goBooking(2)"><img src="@/assets/dance/btn02.png"> 31 <div class="item_en" @click="popRemark(2)"><img src="@/assets/dance/btn02.png">
32 <p>TRANSPORTATION RESERVATION</p> 32 <p>TRANSPORTATION RESERVATION</p>
33 </div></el-col> 33 </div></el-col>
34 <el-col :sm="12" :lg="8"> 34 <el-col :sm="12" :lg="8">
35 <div class="item_en" @click="goBooking(3)"><img src="@/assets/dance/btn03.png"> 35 <div class="item_en" @click="popRemark(3)"><img src="@/assets/dance/btn03.png">
36 <p>DINING RESERVATION</p> 36 <p>DINING RESERVATION</p>
37 </div> 37 </div>
38 </el-col> 38 </el-col>
39 <el-col :sm="12" :lg="8"> 39 <el-col :sm="12" :lg="8">
40 <div class="item_en" @click="goBooking(0)"> 40 <div class="item_en" @click="popRemark(0)">
41 <img src="@/assets/dance/btn04.png"> 41 <img src="@/assets/dance/btn04.png">
42 <p>TICKET BOOKING</p> 42 <p>TICKET BOOKING</p>
43 </div> 43 </div>
44 </el-col> 44 </el-col>
45 <el-col :sm="12" :lg="8"> 45 <el-col :sm="12" :lg="8">
46 <div class="item_en" @click="goBooking(4)"><img src="@/assets/dance/btn05.png"> 46 <div class="item_en" @click="popRemark(4)"><img src="@/assets/dance/btn05.png">
47 <p>MAKEUP APPOINTMENT</p> 47 <p>MAKEUP APPOINTMENT</p>
48 </div></el-col> 48 </div></el-col>
49 <el-col :sm="12" :lg="8"> 49 <el-col :sm="12" :lg="8">
50 <div class="item_en" @click="goBooking(5)"><img src="@/assets/dance/btn06.png"> 50 <div class="item_en" @click="popRemark(5)"><img src="@/assets/dance/btn06.png">
51 <p>PHOTOGRAPHY APPOINTMENT</p> 51 <p>PHOTOGRAPHY APPOINTMENT</p>
52 </div></el-col> 52 </div></el-col>
53 </el-row> 53 </el-row>
54 </div> 54 </div>
55 <order-remark ref="orderRemarkRef" @submit="goBooking"/>
56
55 </template> 57 </template>
56 58
57 <script setup> 59 <script setup>
58 import {useRouter} from "vue-router"; 60 import {useRouter} from "vue-router";
59 61
60 const router = useRouter() 62 const router = useRouter()
63 import OrderRemark from '@/viewsPc/components/orderRemark'
64 const {proxy} = getCurrentInstance()
61 import {useStorage} from "@vueuse/core/index"; 65 import {useStorage} from "@vueuse/core/index";
62 import {ElMessage} from "element-plus"; 66 import {ElMessage} from "element-plus";
67 import {getCurrentInstance} from "@vue/runtime-core";
68 import {onMounted} from "vue";
63 const props = defineProps({ 69 const props = defineProps({
64 matchId: { 70 matchId: {
65 type: String, 71 type: String,
...@@ -68,13 +74,23 @@ const props = defineProps({ ...@@ -68,13 +74,23 @@ const props = defineProps({
68 } 74 }
69 }) 75 })
70 const language= useStorage('language',0) 76 const language= useStorage('language',0)
77
78 onMounted(()=>{
79
80 })
81 function popRemark(type){
82 const params = {
83 matchId: props.matchId,
84 title: language.value == 0 ?'预定说明':'Booking Instructions',
85 type: type
86 }
87 proxy.$refs['orderRemarkRef'].open(params)
88 }
71 function goBooking(n) { 89 function goBooking(n) {
72 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!')
73 return
74 switch (n) { 90 switch (n) {
75 case 0: 91 case 0:
76 // 票务 92 // 票务
77 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') 93 ElMessage.warning(language.value==0?'暂无可预订的信息':'There is no information available for booking')
78 return 94 return
79 router.push({path: `/booking/ticket/${props.matchId}`}) 95 router.push({path: `/booking/ticket/${props.matchId}`})
80 break; 96 break;
...@@ -92,14 +108,14 @@ function goBooking(n) { ...@@ -92,14 +108,14 @@ function goBooking(n) {
92 break; 108 break;
93 case 4: 109 case 4:
94 //化妆 110 //化妆
95 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') 111 ElMessage.warning(language.value==0?'暂无可预订的信息':'Building!')
96 return 112 return
97 113
98 router.push({path: `/booking/makeup/${props.matchId}`}) 114 router.push({path: `/booking/makeup/${props.matchId}`})
99 break; 115 break;
100 case 5: 116 case 5:
101 //拍照 117 //拍照
102 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') 118 ElMessage.warning(language.value==0?'暂无可预订的信息':'Building!')
103 return 119 return
104 120
105 router.push({path: `/booking/photography/${props.matchId}`}) 121 router.push({path: `/booking/photography/${props.matchId}`})
......
1 <template>
2 <el-dialog :title="title" v-model="show" width="30%" @close="close">
3 <div>
4 <div class="pd20" v-html="form.reserveDes"></div>
5 </div>
6 <template #footer>
7 <div class="dialog-footer text-center">
8 <el-button type="primary" class="btn-lineG w200px" round @click="ok">{{language==0?'确定':'Confirm'}}</el-button>
9 </div>
10 </template>
11 </el-dialog>
12 </template>
13
14 <script setup>
15 import {getBaseInfoByActiveId} from "@/apiPc/booking";
16 import {getCurrentInstance} from "@vue/runtime-core";
17 import {useStorage} from "@vueuse/core/index";
18 const emit = defineEmits([ 'submit'])
19 const {proxy} = getCurrentInstance()
20 const language= useStorage('language',0)
21 import useUserStore from "@/store/modules/user";
22 const user = useUserStore().user
23 const title = ref('')
24 const show = ref(false)
25 const form = ref({})
26 let matchId = ''
27 let type = ''
28 const open = (params) => {
29 title.value = params.title
30 matchId = params.matchId
31 type = params.type
32 show.value = true
33 getData()
34 }
35 defineExpose({
36 open
37 })
38
39 function getData() {
40 console.log(matchId)
41 getBaseInfoByActiveId(matchId).then(res=>{
42 form.value = res.data || {}
43 }).catch(err=>{
44 console.log(err)
45 })
46 }
47 function close() {
48 show.value = false
49 }
50 function ok() {
51 // type
52 show.value = false
53
54 if(!user){
55 useUserStore().setVisitor()
56 } else {
57 emit('submit', type)
58 }
59 }
60 </script>
61
62 <style scoped lang="scss">
63
64 </style>
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
48 <el-row style="align-items: center"> 48 <el-row style="align-items: center">
49 <el-col :sm="24" :lg="10"> 49 <el-col :sm="24" :lg="10">
50 <div class="bgbg"> 50 <div class="bgbg">
51 <img src="@/assets/dance/text.png"> 51 <h1 style="color: #fff">{{matchData?.name}}</h1>
52 <a class="zn-btn" @click="goGuide" target="_blank">参赛指南 52 <a class="zn-btn" @click="goGuide" target="_blank">参赛指南
53 <el-icon> 53 <el-icon>
54 <download/> 54 <download/>
...@@ -418,7 +418,7 @@ const init = () => { ...@@ -418,7 +418,7 @@ const init = () => {
418 }) 418 })
419 } 419 }
420 const carouselChange = (e) => { 420 const carouselChange = (e) => {
421 console.log(e) 421 console.log(e.name)
422 matchData.value = maList.value[e] 422 matchData.value = maList.value[e]
423 } 423 }
424 const goDetail = (n) => { 424 const goDetail = (n) => {
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="banner"> 3 <div class="banner">
4 <el-carousel height="450px" :autoplay="false" arrow="hover"> 4 <el-carousel height="450px" :autoplay="false" arrow="hover" @change="carouselChange">
5 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id"> 5 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id">
6 <div class="bannerItem"> 6 <div class="bannerItem">
7 <div class="h100"> 7 <div class="h100">
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
45 <el-row> 45 <el-row>
46 <el-col :sm="24" :lg="10"> 46 <el-col :sm="24" :lg="10">
47 <div class="bgbg"> 47 <div class="bgbg">
48 <h1 style="color: #fff">WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024</h1> 48 <h1 style="color: #fff">{{matchData?.name}}</h1>
49 <a class="zn-btn" @click="goGuide"> 49 <a class="zn-btn" @click="goGuide">
50 GUIDELINE 50 GUIDELINE
51 <el-icon><download /></el-icon> 51 <el-icon><download /></el-icon>
...@@ -412,7 +412,10 @@ const init = () => { ...@@ -412,7 +412,10 @@ const init = () => {
412 }) 412 })
413 } 413 }
414 414
415 415 const carouselChange = (e) => {
416 console.log(e.name)
417 matchData.value = maList.value[e]
418 }
416 const gosaiC = () => { 419 const gosaiC = () => {
417 router.push({ 420 router.push({
418 path: `/saiC/index` 421 path: `/saiC/index`
......
...@@ -215,14 +215,15 @@ const data = reactive({ ...@@ -215,14 +215,15 @@ const data = reactive({
215 groupId: '0', 215 groupId: '0',
216 signType: '', 216 signType: '',
217 activeStep: 1, 217 activeStep: 1,
218 isNational:false 218 isNational:false,
219 languageSource:''
219 }) 220 })
220 const {loading, 221 const {loading,
221 form,personAllList, 222 form,personAllList,
222 rules, 223 rules,
223 signType, 224 signType,
224 groupId, 225 groupId,
225 hasChooseObj,activeStep,isNational 226 hasChooseObj,activeStep,isNational,languageSource
226 } = toRefs(data) 227 } = toRefs(data)
227 let matchId = '' 228 let matchId = ''
228 const user = useUserStore().user 229 const user = useUserStore().user
...@@ -232,6 +233,7 @@ onMounted(() => { ...@@ -232,6 +233,7 @@ onMounted(() => {
232 groupId.value = group.id 233 groupId.value = group.id
233 signType.value = route.query.signType || '' 234 signType.value = route.query.signType || ''
234 isNational.value = route.query.isNational 235 isNational.value = route.query.isNational
236 languageSource.value = route.query.languageSource
235 if(!user){ 237 if(!user){
236 router.push({name: 'home'}) 238 router.push({name: 'home'})
237 return 239 return
...@@ -359,22 +361,22 @@ function goNext() { ...@@ -359,22 +361,22 @@ function goNext() {
359 } 361 }
360 362
361 function goPrev() { 363 function goPrev() {
362 if(isNational.value){ 364 if(languageSource.value=='100'){
363 router.push({ 365 router.push({
364 name: `teamSign`, 366 name: `teamSignCn`,
365 query: { 367 query: {
366 matchId: matchId, 368 matchId: matchId,
367 groupId: groupId.value, 369 groupId: groupId.value,
368 isNational:isNational.value 370 isNational: false
369 } 371 }
370 }) 372 })
371 } else { 373 } else {
372 router.push({ 374 router.push({
373 name: `teamSignCn`, 375 name: `teamSign`,
374 query: { 376 query: {
375 matchId: matchId, 377 matchId: matchId,
376 groupId: groupId.value, 378 groupId: groupId.value,
377 isNational: false 379 isNational:isNational.value
378 } 380 }
379 }) 381 })
380 } 382 }
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
19 </div> 19 </div>
20 <div class="panel-body" style="padding: 10px"> 20 <div class="panel-body" style="padding: 10px">
21 <div style="margin: 0 4px 10px;display: flex"> 21 <div style="margin: 0 4px 10px;display: flex">
22 <!-- 可通过选手管理,增加和编辑运动员-->
23
22 <el-select multiple v-model="choosedchoosed" collapse-tags-tooltip filterable 24 <el-select multiple v-model="choosedchoosed" collapse-tags-tooltip filterable
23 @change="changechoosed"> 25 @change="changechoosed">
24 <el-option v-for="c in athletesList" :key="c.id" :label="c.xing + c.ming" :value="c.id"> 26 <el-option v-for="c in athletesList" :key="c.id" :label="c.xing + c.ming" :value="c.id">
......
...@@ -326,7 +326,7 @@ function codeSuccess(msg) { ...@@ -326,7 +326,7 @@ function codeSuccess(msg) {
326 isCodeTrue.value = true 326 isCodeTrue.value = true
327 checkWdsfAthletes({card: card.value,groupId:groupId}).then(res => { 327 checkWdsfAthletes({card: card.value,groupId:groupId}).then(res => {
328 if (res.data.wdsfFlag==-1) { 328 if (res.data.wdsfFlag==-1) {
329 ElMessage.warning(language.value == 0 ?'您添加的运动员代表国家/地区,与团体账号注册的国家/地区不符,无法添加':'The athlete you added represents a country/region that does not match the country/region registered for the group account, and cannot be added') 329 ElMessage.warning(language.value == 0 ?'您添加的运动员代表国家/地区,与团体账号注册的国家/地区不符,无法添加':'The athlete \'s representing, does not match the group account‘s country/region and cannot be added.')
330 isCodeTrue.value = false 330 isCodeTrue.value = false
331 return 331 return
332 } 332 }
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
53 <el-input v-model="form.passportNo"/> 53 <el-input v-model="form.passportNo"/>
54 </el-form-item> 54 </el-form-item>
55 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy"> 55 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy">
56 <file-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false" 56 <image-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false"
57 :button-text="language==0?'上传':'Upload'"/> 57 :button-text="language==0?'上传':'Upload'"/>
58 </el-form-item> 58 </el-form-item>
59 <el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival"> 59 <el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">
...@@ -91,6 +91,7 @@ import {getCurrentInstance, watch} from "vue"; ...@@ -91,6 +91,7 @@ import {getCurrentInstance, watch} from "vue";
91 import {nextTick} from "@vue/runtime-core"; 91 import {nextTick} from "@vue/runtime-core";
92 import {ElMessage, ElMessageBox} from "element-plus"; 92 import {ElMessage, ElMessageBox} from "element-plus";
93 import {addInvitation, countryList} from "@/apiPc/match"; 93 import {addInvitation, countryList} from "@/apiPc/match";
94 import ImageUpload from "@/components/ImageUpload";
94 95
95 const {proxy} = getCurrentInstance() 96 const {proxy} = getCurrentInstance()
96 const language = useStorage('language', 0) 97 const language = useStorage('language', 0)
......
1 <template> 1 <template>
2 <div class="collapsebox"> 2 <div class="collapsebox">
3 <div class="pd20"> 3 <div class="pd20">
4 <table class="table" cellspacing="0" cellpadding="0" v-if="list.length > 0"> 4 <el-table :data="list" border>
5 <tr v-if="language==0"> 5 <el-table-column :label="language==0?'组别编号':'Event Code'" prop="code" align="center"></el-table-column>
6 <th>组别编号</th> 6 <el-table-column :label="language==0?'组别名称':'Event'" prop="name" align="center"></el-table-column>
7 <th>组别名称</th> 7 <el-table-column :label="language==0?'舞种':'Dance Type'" align="center">
8 <th>舞种</th> 8 <template #default="scope">
9 <th>舞种明细</th> 9 <span v-if="scope.row.danceTypeDetailStr">{{ scope.row.danceTypeDetailStr }}</span>
10 <th>参赛性别</th> 10 <span v-else>{{ scope.row.danceType }}</span>
11 <th>参赛年龄</th> 11 </template>
12 <th>服务费(元)</th> 12 </el-table-column>
13 </tr> 13 <el-table-column :label="language==0?'参赛性别':'Sex'" align="center">
14 <tr v-else> 14 <template #default="scope">
15 <th>EVENT code</th> 15 <span v-if="scope.row.playTypeStr">{{ scope.row.playTypeStr }}</span>
16 <th>Group</th> 16 <span v-else>{{ scope.row.playType }}</span>
17 <th>DISCIPLINE</th> 17 </template>
18 <th>Dance Detail</th> 18 </el-table-column>
19 <th>Sex</th> 19 <el-table-column :label="language==0?'参赛年龄':'Age'" align="center" min-width="100">
20 <th>Age</th> 20 <template #default="scope">
21 <th>Registration Fee</th>
22 </tr>
23 <tr v-for="(p,index) in list" :key="index">
24 <td>{{ p.code }}</td>
25 <td>{{ p.name }}</td>
26 <td>{{ p.danceType }}</td>
27 <td>{{ p.danceTypeDetailStr }}</td>
28 <td>{{ p.playTypeStr }}</td>
29 <td>
30 <!-- {{ isNational }}-->
31 <div v-if="isNational"> 21 <div v-if="isNational">
32 <span v-if="p.ageGroup == '0'" >{{ language==0?'不限制':'Unlimited' }}</span> 22 <span v-if="scope.row.ageGroup == '0'" >{{ language==0?'不限制':'Unlimited' }}</span>
33 <span v-if="p.ageGroup == '1'" >Juvenile I</span> 23 <span v-if="scope.row.ageGroup == '1'" >Juvenile I</span>
34 <span v-if="p.ageGroup == '2'" >Juvenile II</span> 24 <span v-if="scope.row.ageGroup == '2'" >Juvenile II</span>
35 <span v-if="p.ageGroup == '3'" >Juv1& II (comb.)</span> 25 <span v-if="scope.row.ageGroup == '3'" >Juv1& II (comb.)</span>
36 <span v-if="p.ageGroup == '4'" >Junior I</span> 26 <span v-if="scope.row.ageGroup == '4'" >Junior I</span>
37 <span v-if="p.ageGroup == '5'" >Junior II</span> 27 <span v-if="scope.row.ageGroup == '5'" >Junior II</span>
38 <span v-if="p.ageGroup == '6'" >Juv I & II (comb.)</span> 28 <span v-if="scope.row.ageGroup == '6'" >Juv I & II (comb.)</span>
39 <span v-if="p.ageGroup == '7'" >Youth</span> 29 <span v-if="scope.row.ageGroup == '7'" >Youth</span>
40 <span v-if="p.ageGroup == '8'" >Under 21</span> 30 <span v-if="scope.row.ageGroup == '8'" >Under 21</span>
41 <span v-if="p.ageGroup == '9'" >Adult</span> 31 <span v-if="scope.row.ageGroup == '9'" >Adult</span>
42 <span v-if="p.ageGroup == '10'" >Senior I</span> 32 <span v-if="scope.row.ageGroup == '10'" >Senior I</span>
43 <span v-if="p.ageGroup == '11'" >Senior II</span> 33 <span v-if="scope.row.ageGroup == '11'" >Senior II</span>
44 <span v-if="p.ageGroup == '12'" >Senior III</span> 34 <span v-if="scope.row.ageGroup == '12'" >Senior III</span>
45 <span v-if="p.ageGroup == '13'" >Senior IV</span> 35 <span v-if="scope.row.ageGroup == '13'" >Senior IV</span>
46 <span v-if="p.ageGroup == '14'" >Senior V</span> 36 <span v-if="scope.row.ageGroup == '14'" >Senior V</span>
47 </div> 37 </div>
48 <div v-else> 38 <div v-else>
49 <div>{{ p.birthPeriod }}</div> 39 <div>{{ scope.row.birthPeriod }}</div>
50 <div>{{p.birthPeriodSecond}}</div> 40 <div>{{scope.row.birthPeriodSecond}}</div>
51 </div> 41 </div>
42 </template>
43 </el-table-column>
44 <el-table-column :label="language==0?'服务费':'Registration Fee'" width="160" align="center">
45 <template #default="scope">
46 <div class="text-primary">{{ language==0?'¥':'€' }}{{ scope.row.serviceFee }}</div>
47 </template>
48 </el-table-column>
49 </el-table>
52 50
53 <!-- <div>{{ p.birthAgeGroup }};{{p.birthAgeSecondGroup}}</div>--> 51 <!-- <table class="table" cellspacing="0" cellpadding="0" v-if="list.length > 0">-->
54 </td> 52 <!-- <tr v-if="language==0">-->
55 <td>{{ language==0?'¥':'€' }}{{ p.serviceFee }}</td> 53 <!-- <th>组别编号</th>-->
56 </tr> 54 <!-- <th>组别名称</th>-->
57 </table> 55 <!-- <th>舞种</th>-->
56 <!-- <th>舞种明细</th>-->
57 <!-- <th>参赛性别</th>-->
58 <!-- <th>参赛年龄</th>-->
59 <!-- <th>服务费(元)</th>-->
60 <!-- </tr>-->
61 <!-- <tr v-else>-->
62 <!-- <th>EVENT code</th>-->
63 <!-- <th>EVENT</th>-->
64 <!-- <th>DISCIPLINE</th>-->
65 <!-- <th>Dance Detail</th>-->
66 <!-- <th>Sex</th>-->
67 <!-- <th>Age</th>-->
68 <!-- <th>Registration Fee</th>-->
69 <!-- </tr>-->
70 <!-- <tr v-for="(p,index) in list" :key="index">-->
71 <!-- <td>{{ p.code }}</td>-->
72 <!-- <td>{{ p.name }}</td>-->
73 <!-- <td>{{ p.danceType }}</td>-->
74 <!-- <td>{{ p.danceTypeDetailStr }}</td>-->
75 <!-- <td>{{ p.playTypeStr }}</td>-->
76 <!-- <td>-->
77 <!--&lt;!&ndash; {{ isNational }}&ndash;&gt;-->
78 <!-- <div v-if="isNational">-->
79 <!-- <span v-if="p.ageGroup == '0'" >{{ language==0?'不限制':'Unlimited' }}</span>-->
80 <!-- <span v-if="p.ageGroup == '1'" >Juvenile I</span>-->
81 <!-- <span v-if="p.ageGroup == '2'" >Juvenile II</span>-->
82 <!-- <span v-if="p.ageGroup == '3'" >Juv1& II (comb.)</span>-->
83 <!-- <span v-if="p.ageGroup == '4'" >Junior I</span>-->
84 <!-- <span v-if="p.ageGroup == '5'" >Junior II</span>-->
85 <!-- <span v-if="p.ageGroup == '6'" >Juv I & II (comb.)</span>-->
86 <!-- <span v-if="p.ageGroup == '7'" >Youth</span>-->
87 <!-- <span v-if="p.ageGroup == '8'" >Under 21</span>-->
88 <!-- <span v-if="p.ageGroup == '9'" >Adult</span>-->
89 <!-- <span v-if="p.ageGroup == '10'" >Senior I</span>-->
90 <!-- <span v-if="p.ageGroup == '11'" >Senior II</span>-->
91 <!-- <span v-if="p.ageGroup == '12'" >Senior III</span>-->
92 <!-- <span v-if="p.ageGroup == '13'" >Senior IV</span>-->
93 <!-- <span v-if="p.ageGroup == '14'" >Senior V</span>-->
94 <!-- </div>-->
95 <!-- <div v-else>-->
96 <!-- <div>{{ p.birthPeriod }}</div>-->
97 <!-- <div>{{p.birthPeriodSecond}}</div>-->
98 <!-- </div>-->
99
100 <!-- &lt;!&ndash; <div>{{ p.birthAgeGroup }};{{p.birthAgeSecondGroup}}</div>&ndash;&gt;-->
101 <!-- </td>-->
102 <!-- <td>{{ language==0?'¥':'€' }}{{ p.serviceFee }}</td>-->
103 <!-- </tr>-->
104 <!-- </table>-->
58 105
59 </div> 106 </div>
60 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list.length == 0" description=""/> 107 <!-- <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list.length == 0" description=""/>-->
61 </div> 108 </div>
62 </template> 109 </template>
63 110
...@@ -81,7 +128,7 @@ const props = defineProps({ ...@@ -81,7 +128,7 @@ const props = defineProps({
81 128
82 <style scoped lang="scss"> 129 <style scoped lang="scss">
83 .table{width: 100%;border-left: 1px solid #e1e1e1;border-top:1px solid #e1e1e1; 130 .table{width: 100%;border-left: 1px solid #e1e1e1;border-top:1px solid #e1e1e1;
84 th{background: #eee;padding: 6px 10px; 131 th{background: #eee;padding: 6px 10px;text-transform: uppercase;
85 border-right: 1px solid #e1e1e1; 132 border-right: 1px solid #e1e1e1;
86 border-bottom:1px solid #e1e1e1; 133 border-bottom:1px solid #e1e1e1;
87 font-size: 15px; 134 font-size: 15px;
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
6 </div> 6 </div>
7 <div class="xzbox" v-html="form.ocOrganizer"> 7 <div class="xzbox" v-html="form.ocOrganizer">
8 </div> 8 </div>
9 <div class="indexTitle"><h3 class="leftboderTT">报名须知</h3></div> 9 <div class="indexTitle" v-if="form.languageSource!='100'"><h3 class="leftboderTT">报名须知</h3></div>
10 <div class="xzbox"> 10 <div class="xzbox" v-if="form.languageSource!='100'">
11 <div v-html="form.signKnow"></div> 11 <div v-html="form.signKnow"></div>
12 <el-link v-if="form.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(form.signKnowUrl)[0]?.url)" target="_blank"> 12 <el-link v-if="form.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(form.signKnowUrl)[0]?.url)" target="_blank">
13 <el-icon :size="20"> 13 <el-icon :size="20">
...@@ -25,20 +25,20 @@ ...@@ -25,20 +25,20 @@
25 <!-- {{ JSON.parse(form.disclaimerUrl)[0]?.name }}--> 25 <!-- {{ JSON.parse(form.disclaimerUrl)[0]?.name }}-->
26 <!-- </el-link>--> 26 <!-- </el-link>-->
27 <!-- </div>--> 27 <!-- </div>-->
28 <!-- <div class="indexTitle"><h3 class="leftboderTT">赛事规程</h3></div>--> 28 <div class="indexTitle" v-if="form.languageSource=='100'"><h3 class="leftboderTT">赛事规程</h3></div>
29 <!-- <div class="xzbox">--> 29 <div class="xzbox" v-if="form.languageSource=='100'">
30 <div v-html="form.ruleContent"></div>
31 <el-link v-if="form.ruleUrl" type="primary" :href="fillImgUrl(JSON.parse(form.ruleUrl)[0]?.url)" target="_blank">
32 <el-icon :size="20">
33 <Download />
34 </el-icon>
35 {{ JSON.parse(form.ruleUrl)[0]?.name }}
36 </el-link>
37 </div>
38 <!-- <div class="indexTitle" v-if="form.type==1&&form.cptProjectList?.length > 0"><h3 class="leftboderTT">竞赛项目</h3></div>-->
39 <!-- <div v-if="form.type==1&&form.cptProjectList?.length > 0">-->
30 40
31 <!-- <el-link v-if="form.ruleUrl" type="primary" :href="fillImgUrl(JSON.parse(form.ruleUrl)[0]?.url)" target="_blank">-->
32 <!-- <el-icon :size="20">-->
33 <!-- <Download />-->
34 <!-- </el-icon>-->
35 <!-- {{ JSON.parse(form.ruleUrl)[0]?.name }}-->
36 <!-- </el-link>-->
37 <!-- </div>--> 41 <!-- </div>-->
38 <div class="indexTitle" v-if="form.type==1&&form.cptProjectList?.length > 0"><h3 class="leftboderTT">竞赛项目</h3></div>
39 <div v-if="form.type==1&&form.cptProjectList?.length > 0">
40
41 </div>
42 42
43 </div> 43 </div>
44 <div style="padding: 0 20px 20px" v-else> 44 <div style="padding: 0 20px 20px" v-else>
......
...@@ -2,37 +2,37 @@ ...@@ -2,37 +2,37 @@
2 <div style="filter: opacity(1)"> 2 <div style="filter: opacity(1)">
3 <el-row :gutter="14" v-if="language==0"> 3 <el-row :gutter="14" v-if="language==0">
4 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 4 <el-col :lg="4" :md="8" :sm="12" :xs="12">
5 <div class="funcBtn" @click="goBooking(0)"> 5 <div class="funcBtn" @click="popRemark(0)">
6 <img src="@/assets/dance/btn04.png"/> 6 <img src="@/assets/dance/btn04.png"/>
7 <h4>票务预订</h4> 7 <h4>票务预订</h4>
8 </div> 8 </div>
9 </el-col> 9 </el-col>
10 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 10 <el-col :lg="4" :md="8" :sm="12" :xs="12">
11 <div class="funcBtn" @click="goBooking(1)"> 11 <div class="funcBtn" @click="popRemark(1)">
12 <img src="@/assets/dance/btn01.png"/> 12 <img src="@/assets/dance/btn01.png"/>
13 <h4>酒店预</h4> 13 <h4>酒店预</h4>
14 </div> 14 </div>
15 </el-col> 15 </el-col>
16 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 16 <el-col :lg="4" :md="8" :sm="12" :xs="12">
17 <div class="funcBtn" @click="goBooking(2)"> 17 <div class="funcBtn" @click="popRemark(2)">
18 <img src="@/assets/dance/btn02.png"/> 18 <img src="@/assets/dance/btn02.png"/>
19 <h4>车辆预</h4> 19 <h4>车辆预</h4>
20 </div> 20 </div>
21 </el-col> 21 </el-col>
22 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 22 <el-col :lg="4" :md="8" :sm="12" :xs="12">
23 <div class="funcBtn" @click="goBooking(3)"> 23 <div class="funcBtn" @click="popRemark(3)">
24 <img src="@/assets/dance/btn03.png"/> 24 <img src="@/assets/dance/btn03.png"/>
25 <h4>餐饮预订</h4> 25 <h4>餐饮预订</h4>
26 </div> 26 </div>
27 </el-col> 27 </el-col>
28 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 28 <el-col :lg="4" :md="8" :sm="12" :xs="12">
29 <div class="funcBtn" @click="goBooking(4)"> 29 <div class="funcBtn" @click="popRemark(4)">
30 <img src="@/assets/dance/btn05.png"/> 30 <img src="@/assets/dance/btn05.png"/>
31 <h4>化妆预约</h4> 31 <h4>化妆预约</h4>
32 </div> 32 </div>
33 </el-col> 33 </el-col>
34 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 34 <el-col :lg="4" :md="8" :sm="12" :xs="12">
35 <div class="funcBtn" @click="goBooking(5)"> 35 <div class="funcBtn" @click="popRemark(5)">
36 <img src="@/assets/dance/btn06.png"/> 36 <img src="@/assets/dance/btn06.png"/>
37 <h4>拍照预约</h4> 37 <h4>拍照预约</h4>
38 </div> 38 </div>
...@@ -40,49 +40,57 @@ ...@@ -40,49 +40,57 @@
40 </el-row> 40 </el-row>
41 <el-row :gutter="14" v-else> 41 <el-row :gutter="14" v-else>
42 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 42 <el-col :lg="4" :md="8" :sm="12" :xs="12">
43 <div class="funcBtn" @click="goBooking(0)"> 43 <div class="funcBtn" @click="popRemark(0)">
44 <img src="@/assets/dance/btn04.png"/> 44 <img src="@/assets/dance/btn04.png"/>
45 <h4>TICKET BOOKING</h4> 45 <h4>TICKET BOOKING</h4>
46 </div> 46 </div>
47 </el-col> 47 </el-col>
48 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 48 <el-col :lg="4" :md="8" :sm="12" :xs="12">
49 <div class="funcBtn" @click="goBooking(1)"> 49 <div class="funcBtn" @click="popRemark(1)">
50 <img src="@/assets/dance/btn01.png"/> 50 <img src="@/assets/dance/btn01.png"/>
51 <h4>HOTEL RESERVATION</h4> 51 <h4>HOTEL RESERVATION</h4>
52 </div> 52 </div>
53 </el-col> 53 </el-col>
54 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 54 <el-col :lg="4" :md="8" :sm="12" :xs="12">
55 <div class="funcBtn" @click="goBooking(2)"> 55 <div class="funcBtn" @click="popRemark(2)">
56 <img src="@/assets/dance/btn02.png"/> 56 <img src="@/assets/dance/btn02.png"/>
57 <h4>TRANSPORTATION RESERVATION</h4> 57 <h4>TRANSPORTATION RESERVATION</h4>
58 </div> 58 </div>
59 </el-col> 59 </el-col>
60 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 60 <el-col :lg="4" :md="8" :sm="12" :xs="12">
61 <div class="funcBtn" @click="goBooking(3)"> 61 <div class="funcBtn" @click="popRemark(3)">
62 <img src="@/assets/dance/btn03.png"/> 62 <img src="@/assets/dance/btn03.png"/>
63 <h4>DINING RESERVATION</h4> 63 <h4>DINING RESERVATION</h4>
64 </div> 64 </div>
65 </el-col> 65 </el-col>
66 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 66 <el-col :lg="4" :md="8" :sm="12" :xs="12">
67 <div class="funcBtn" @click="goBooking(4)"> 67 <div class="funcBtn" @click="popRemark(4)">
68 <img src="@/assets/dance/btn05.png"/> 68 <img src="@/assets/dance/btn05.png"/>
69 <h4>MAKEUP APPOINTMENT</h4> 69 <h4>MAKEUP APPOINTMENT</h4>
70 </div> 70 </div>
71 </el-col> 71 </el-col>
72 <el-col :lg="4" :md="8" :sm="12" :xs="12"> 72 <el-col :lg="4" :md="8" :sm="12" :xs="12">
73 <div class="funcBtn" @click="goBooking(5)"> 73 <div class="funcBtn" @click="popRemark(5)">
74 <img src="@/assets/dance/btn06.png"/> 74 <img src="@/assets/dance/btn06.png"/>
75 <h4>PHOTOGRAPHY APPOINTMENT</h4> 75 <h4>PHOTOGRAPHY APPOINTMENT</h4>
76 </div> 76 </div>
77 </el-col> 77 </el-col>
78 </el-row> 78 </el-row>
79 </div> 79 </div>
80
81 <order-remark ref="orderRemarkRef" @submit="goBooking"/>
80 </template> 82 </template>
81 83
82 <script setup> 84 <script setup>
83 import {ElMessage} from "element-plus"; 85 import {ElMessage} from "element-plus";
84 import {useRouter} from "vue-router"; 86 import {useRouter} from "vue-router";
85 import {useStorage} from "@vueuse/core/index"; 87 import {useStorage} from "@vueuse/core/index";
88 import OrderRemark from '@/viewsPc/components/orderRemark'
89 import {getBaseInfoByActiveId} from "@/apiPc/booking";
90 import {getCurrentInstance} from "@vue/runtime-core";
91 import {onMounted} from "vue";
92 const {proxy} = getCurrentInstance()
93
86 const router = useRouter() 94 const router = useRouter()
87 const language= useStorage('language',0) 95 const language= useStorage('language',0)
88 const props = defineProps({ 96 const props = defineProps({
...@@ -92,16 +100,35 @@ const props = defineProps({ ...@@ -92,16 +100,35 @@ const props = defineProps({
92 default: '0' 100 default: '0'
93 } 101 }
94 }) 102 })
103 const form = ref({})
104 onMounted(()=>{
105 getBaseInfoByActiveId(props.matchId).then(res=>{
106 form.value = res.data || {}
107 }).catch(err=>{
108 console.log(err)
109 })
110 })
111
95 function building() { 112 function building() {
96 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') 113 ElMessage.warning(language.value==0?'暂无可预订的信息':'There is no information available for booking')
114 }
115 function popRemark(type){
116 // if((form.value.isJdView == 0&&type=='1') || (form.value.isCarView == 0&&type=='2') || (form.value.isFoodView == 0&&type=='3') || type=='0' || type=='4' || type=='5'){
117 // building()
118 // return
119 // }
120 const params = {
121 matchId: props.matchId,
122 title: language.value == 0 ?'预定说明':'Booking Instructions',
123 type: type
124 }
125 proxy.$refs['orderRemarkRef'].open(params)
97 } 126 }
98 function goBooking(n) { 127 function goBooking(n) {
99 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!')
100 return
101 switch (n) { 128 switch (n) {
102 case 0: 129 case 0:
103 // 票务 130 // 票务
104 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') 131 ElMessage.warning(language.value==0?'暂无可预订的信息':'There is no information available for booking')
105 return 132 return
106 router.push({path: `/booking/ticket/${props.matchId}`}) 133 router.push({path: `/booking/ticket/${props.matchId}`})
107 break; 134 break;
...@@ -119,14 +146,14 @@ function goBooking(n) { ...@@ -119,14 +146,14 @@ function goBooking(n) {
119 break; 146 break;
120 case 4: 147 case 4:
121 //化妆 148 //化妆
122 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') 149 ElMessage.warning(language.value==0?'暂无可预订的信息':'There is no information available for booking')
123 return 150 return
124 151
125 router.push({path: `/booking/makeup/${props.matchId}`}) 152 router.push({path: `/booking/makeup/${props.matchId}`})
126 break; 153 break;
127 case 5: 154 case 5:
128 //拍照 155 //拍照
129 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') 156 ElMessage.warning(language.value==0?'暂无可预订的信息':'There is no information available for booking')
130 return 157 return
131 158
132 router.push({path: `/booking/photography/${props.matchId}`}) 159 router.push({path: `/booking/photography/${props.matchId}`})
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
3 <el-table :data="list" border style="width: 100%"> 3 <el-table :data="list" border style="width: 100%">
4 <el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/> 4 <el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/>
5 <el-table-column :label="language==0?'组别代码':'EVENT code'" width="120px" prop="project.code"/> 5 <el-table-column :label="language==0?'组别代码':'EVENT code'" width="120px" prop="project.code"/>
6 <el-table-column :label="language==0?'组别':'Group'" prop="project.name"/> 6 <el-table-column :label="language==0?'组别':'EVENT'" prop="project.name"/>
7 <el-table-column :label="language==0?'舞种':'Dance Style'" width="120px" prop="project.danceType"/> 7 <el-table-column :label="language==0?'舞种':'DISCIPLINE'" width="120px" prop="project.danceType"/>
8 <el-table-column :label="language==0?'参赛说明':'Participation Instructions'" min-width="160px"> 8 <el-table-column :label="language==0?'参赛说明':'Participation Instructions'" min-width="160px">
9 <template #default="scope"> 9 <template #default="scope">
10 <div v-html="scope.row.project.remarks"></div> 10 <div v-html="scope.row.project.remarks"></div>
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
16 <img :src="fillImgUrl_webSite(n.picUrl)"> 16 <img :src="fillImgUrl_webSite(n.picUrl)">
17 </div> 17 </div>
18 <div class="item-body"> 18 <div class="item-body">
19 <h3 v-html="n.name" /> 19 <h3 class="esp_2" v-html="n.name" />
20 <p v-html="n.subName"/> 20 <p v-html="n.subName"/>
21 <a class="go">{{ language==0?'查看详情':'Detail' }} 21 <a class="go">{{ language==0?'查看详情':'Detail' }}
22 <el-icon class="rotate90_180"><sort-down/></el-icon> 22 <el-icon class="rotate90_180"><sort-down/></el-icon>
......
1 <template>
2 <el-dialog v-model="show" :title="language==0?'游客登录':'Visitor Login'" close-icon="CircleClose"
3 width="600" :append-to-body="true" destroy-on-close @close="close">
4 <div class="pt30">
5 <el-form class="d-form" size="large" :label-width="language==0?120:150" style="max-width: 500px;margin: auto">
6 <el-form-item :label="language==0?'邮箱':'E-mail'" required>
7 <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"
8 />
9 <div class="tip" v-if="language==0">
10 (请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。
11 该邮箱后续会作为您登录的账户,
12 并接收报名审核结果、支付账单、签证邀请函等相关信息。)
13 </div>
14 <div v-else class="tip">
15 Please fill in the correct email, which cannot be changed after the registration is completed. The email will be used as your login account and to receive relevant information including results of registration review, payment bills, visa invitation letters, etc.
16 </div>
17 </el-form-item>
18 <el-form-item :label="language==0?'验证码':'Code'" required>
19 <el-input v-model="form.code">
20 <template #append>
21 <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
22 <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
23 {{ totalSeconds }} {{ language == 0 ? '秒' : 's' }}
24 </count-down>
25 <span v-else>
26 {{ language == 0 ? '发送验证码' : 'Send' }}
27 </span>
28 </el-button>
29 </template>
30 </el-input>
31 <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">
32 <Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText"
33 type="inside" @success="codeSuccess"></Vcode>
34 </div>
35 </el-form-item>
36 <el-form-item :label="language==0?'密码':'Password'" required>
37 <el-input type="password" show-password v-model="form.password"
38 :placeholder="language==0?'6-16位密码。区分大小写':''"/>
39 </el-form-item>
40 <el-form-item :label="language==0?'确认密码':'Confirm Password'" required>
41 <el-input type="password" show-password v-model="form.password2" @blur="vconfirmPassword"
42 :placeholder="language==0?'再次输入密码':''"/>
43 </el-form-item>
44 </el-form>
45
46 </div>
47 <template #footer>
48 <div class="dialog-footer text-center">
49 <el-button type="primary" class="btn-lineG w200px" round @click="register">{{language==0?'登录':'Confirm'}}</el-button>
50 <div class="text-primary underline mt20 pointer" @click="goLogin">{{language==0?'已有账号去登录':'Already have an account? Login'}}</div>
51
52 </div>
53 </template>
54 </el-dialog>
55 </template>
56
57 <script setup>
58 import {reactive, toRefs} from 'vue'
59 import Vcode from "vue3-puzzle-vcode"
60 import {ElMessage} from 'element-plus'
61 import CountDown from '@chenfengyuan/vue-countdown'
62 import {getCaptchaSms} from "@/apiPc/match";
63 import {onMounted} from "@vue/runtime-core";
64 import {useStorage} from "@vueuse/core/index";
65 import {vistorRegister} from "@/apiPc/common";
66 import {setToken} from "@/utils/auth";
67 import useUserStore from "@/store/modules/user";
68
69 const language = useStorage('language', 0)
70
71 const data = reactive({
72 isShow: false,
73 isCodeTrue: false,
74 counting: false,
75 form: {},
76 activeStep: 0,
77 failVcode: '验证失败,请重试',
78 successVcode: '验证通过!',
79 sliderText: '拖动滑块完成拼图',
80 show:false
81 })
82 const {isShow, isCodeTrue, counting, form, activeStep, failVcode, successVcode, sliderText,show} = toRefs(data)
83 const emit = defineEmits(['submit'])
84 onMounted(() => {
85 if (language.value == 1) {
86 failVcode.value = 'Error!'
87 successVcode.value = 'Success!'
88 sliderText.value = 'Drag the slider to complete the puzzle'
89 }
90 })
91 const open = (params) => {
92 show.value = true
93 }
94 defineExpose({
95 open
96 })
97
98 function sendsmsMsg() {
99 if (!form.value.account) {
100 if (language.value == 0) {
101 ElMessage.warning('请填写邮箱')
102 } else {
103 ElMessage.warning('Please fill in your email address')
104 }
105 return
106 }
107 if (form.value.account.indexOf('@') == -1) {
108 if (language.value == 0) {
109 ElMessage.warning('请填写正确的邮箱')
110 } else {
111 ElMessage.warning('Please fill in the correct email')
112 }
113 return
114 }
115 if (counting.value) {
116 return
117 } else {
118 isShow.value = true
119 }
120 }
121
122 function verifyCode() {
123 if (!form.value.account) {
124 return
125 }
126 if (form.value.account.indexOf('@') > -1) {
127 //邮箱
128 }
129 }
130
131 function codeSuccess(msg) {
132 console.log('验证通过' + msg);
133 isShow.value = false
134 getCaptchaSms({account: form.value.account}).then(res => {
135 counting.value = true
136 isCodeTrue.value = true
137 ElMessage.success(language.value == 0 ? '发送成功,请关注邮箱邮件' :'Send success, please check your email')
138 })
139 }
140
141 function resetCode() {
142 isCodeTrue.value = false
143 }
144 function goLogin() {
145 show.value = false
146 useUserStore().setReLogin()
147 }
148 function register() {
149 //游客注册
150 if (!form.value.account) {
151 if (language.value == 0) {
152 ElMessage.warning('请填写邮箱')
153 } else {
154 ElMessage.warning('Please fill in your email address')
155 }
156 return
157 }
158 if (!form.value.code) {
159 if (language.value == 0) {
160 ElMessage.warning('请填写验证码')
161 } else {
162 ElMessage.warning('Please fill in Code')
163 }
164 return
165 }
166 if (!form.value.password) {
167 ElMessage.warning(language.value == 0?'请输入密码':'Please enter password')
168 return
169 }
170 if (!form.value.password2) {
171 ElMessage.warning(language.value == 0?'请再次输入密码':'Please enter password')
172 return
173 }
174 delete form.value.password2
175 vistorRegister(form.value).then(res=>{
176 setToken(res.data.token)
177 emit('submitForm')
178 })
179 }
180 const vconfirmPassword = () => {
181 if (form.value.password !== form.value.password2) {
182 ElMessage.warning(language.value == 0 ? '两次输入的密码不一致' :'The two passwords entered are inconsistent')
183 }
184 }
185 function close() {
186 show.value = false
187 }
188 </script>
189
190 <style scoped lang="scss">
191 .tip{line-height: 1.6}
192 </style>
...@@ -78,9 +78,9 @@ onMounted(() => { ...@@ -78,9 +78,9 @@ onMounted(() => {
78 function sendsmsMsg() { 78 function sendsmsMsg() {
79 if (!form.value.account) { 79 if (!form.value.account) {
80 if (language.value == 0) { 80 if (language.value == 0) {
81 ElMessage.warning('请填写手机/邮箱') 81 ElMessage.warning('请填写邮箱')
82 } else { 82 } else {
83 ElMessage.warning('Please fill in your phone/email address') 83 ElMessage.warning('Please fill in your email address')
84 } 84 }
85 return 85 return
86 } 86 }
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
5 <label>{{ language == 0 ? '登录账号' : 'Account' }}</label> {{ accont }} 5 <label>{{ language == 0 ? '登录账号' : 'Account' }}</label> {{ accont }}
6 </div> 6 </div>
7 </div> 7 </div>
8 <div class="leftboderTT">{{ language == 0 ? '登录密码' : 'Password' }} <span 8 <div class="leftboderTT" v-if="!user">{{ language == 0 ? '登录密码' : 'Password' }} <span
9 v-if="language==0">(登录时需要验证,保护账户信息)</span></div> 9 v-if="language==0">(登录时需要验证,保护账户信息)</span></div>
10 <div class="d-form-border"> 10 <div class="d-form-border" v-if="!user">
11 <el-form class="d-form" size="large" label-width="120" 11 <el-form class="d-form" size="large" label-width="120"
12 :label-position="language==0?'left':'top'" style="max-width: 500px;margin: auto"> 12 :label-position="language==0?'left':'top'" style="max-width: 500px;margin: auto">
13 <el-form-item :label="language==0?'密码':'Password'" required> 13 <el-form-item :label="language==0?'密码':'Password'" required>
...@@ -109,7 +109,10 @@ ...@@ -109,7 +109,10 @@
109 109
110 <div class="text-center"> 110 <div class="text-center">
111 <!-- <el-button class="primary-kx" @click="goStep1">上一步</el-button>--> 111 <!-- <el-button class="primary-kx" @click="goStep1">上一步</el-button>-->
112 <el-button type="primary" round class="btn-lineG w200px" @click.prevent="goStep3" :loading="loading"> 112 <el-button v-if="user.utype=='3'" type="primary" round class="btn-lineG w200px" @click.prevent="upgrade" :loading="loading">
113 {{ language == 0 ? '升级账号' : 'Submit' }}
114 </el-button>
115 <el-button v-else type="primary" round class="btn-lineG w200px" @click.prevent="goStep3" :loading="loading">
113 {{ language == 0 ? '立即注册' : 'Register Now!' }} 116 {{ language == 0 ? '立即注册' : 'Register Now!' }}
114 </el-button> 117 </el-button>
115 </div> 118 </div>
...@@ -123,11 +126,17 @@ import * as match from "@/apiPc/match"; ...@@ -123,11 +126,17 @@ import * as match from "@/apiPc/match";
123 import {ElMessage} from "element-plus"; 126 import {ElMessage} from "element-plus";
124 import {setToken} from "@/utils/auth"; 127 import {setToken} from "@/utils/auth";
125 import {useStorage} from "@vueuse/core/index"; 128 import {useStorage} from "@vueuse/core/index";
126 import {useRouter} from "vue-router"; 129 import {useRoute, useRouter} from "vue-router";
130 import useUserStore from "@/store/modules/user";
131 import {upgradeTeam} from "@/apiPc/common";
132
127 const router = useRouter() 133 const router = useRouter()
134 const route = useRoute()
128 const {proxy} = getCurrentInstance() 135 const {proxy} = getCurrentInstance()
129 const emit = defineEmits(['submit', 'prev']) 136 const emit = defineEmits(['submit', 'prev'])
130 const language= useStorage('language',0) 137 const language= useStorage('language',0)
138 const userStore = useUserStore()
139 const user = useUserStore().user
131 const props = defineProps({ 140 const props = defineProps({
132 accont: { 141 accont: {
133 type: String, 142 type: String,
...@@ -182,7 +191,11 @@ const vconfirmPassword = () => { ...@@ -182,7 +191,11 @@ const vconfirmPassword = () => {
182 ElMessage.warning(language.value == 0 ? '两次输入的密码不一致' :'The two passwords entered are inconsistent') 191 ElMessage.warning(language.value == 0 ? '两次输入的密码不一致' :'The two passwords entered are inconsistent')
183 } 192 }
184 } 193 }
194 const matchId = ref('')
185 onMounted(() => { 195 onMounted(() => {
196 if(route.query.matchId){
197 matchId.value = route.query.matchId
198 }
186 getCountryList() 199 getCountryList()
187 getRegionsList() 200 getRegionsList()
188 }) 201 })
...@@ -202,10 +215,49 @@ function getRegionsList() { ...@@ -202,10 +215,49 @@ function getRegionsList() {
202 const goStep1 = () => { 215 const goStep1 = () => {
203 emit('prev') 216 emit('prev')
204 } 217 }
218 const upgrade = () => {
219 proxy.$refs.registerRef.validate(valid => {
220 if (valid) {
221 if(language.value==0){
222 var pattern = /^1[3456789]\d{9}$/
223 if (!pattern.test(form.value.contactTel)) {
224 ElMessage.warning(language.value == 0 ?'请输入正确的手机号':'Please enter the correct mobile phone number')
225 return
226 }
227 }
228 if (!isAgree.value) {
229 ElMessage.warning(language.value == 0?'请勾选接受':'Please check the acceptance')
230 return
231 }
232 loading.value = true
233 form.value.regionId = regionArr.value.pop()
234 form.value.userId = user.userId
235 console.log('upgrade')
236 upgradeTeam(form.value).then(res => {
237 loading.value = false
238 console.log(matchId.value,res.data)
239 if(res.data){
240 userStore.getInfo().then(()=>{
241 router.push({
242 name: 'matchDetail',
243 params: {
244 id: matchId.value
245 }
246 })
247 })
248 } else {
249 ElMessage.success(language.value == 0?'升级成功':'Upgrade successful')
250 router.push({name: 'home'})
251 }
252 }).catch(()=>{
253 loading.value = false
254 })
255 }
256 })
257 }
205 const goStep3 = () => { 258 const goStep3 = () => {
206 proxy.$refs.registerRef.validate(valid => { 259 proxy.$refs.registerRef.validate(valid => {
207 if (valid) { 260 if (valid) {
208
209 if(language.value==0){ 261 if(language.value==0){
210 var pattern = /^1[3456789]\d{9}$/ 262 var pattern = /^1[3456789]\d{9}$/
211 if (!pattern.test(form.value.contactTel)) { 263 if (!pattern.test(form.value.contactTel)) {
...@@ -213,9 +265,7 @@ const goStep3 = () => { ...@@ -213,9 +265,7 @@ const goStep3 = () => {
213 return 265 return
214 } 266 }
215 } 267 }
216 268 if (!isAgree.value) {
217
218 if (!isAgree.value) {
219 ElMessage.warning(language.value == 0?'请勾选接受':'Please check the acceptance') 269 ElMessage.warning(language.value == 0?'请勾选接受':'Please check the acceptance')
220 return 270 return
221 } 271 }
...@@ -241,8 +291,6 @@ const goStep3 = () => { ...@@ -241,8 +291,6 @@ const goStep3 = () => {
241 }) 291 })
242 } 292 }
243 }) 293 })
244
245
246 } 294 }
247 const showAgreeMent = () => { 295 const showAgreeMent = () => {
248 const routeLocation = router.resolve({ 296 const routeLocation = router.resolve({
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="mt30 mb60"> 3 <div class="mt30 mb60">
4 <div class="box"> 4 <div class="box">
5 <!--机构注册--> 5 <!--机构注册-->
6 <el-card> 6 <el-card v-if="!user">
7 <el-steps :active="activeStep" align-center> 7 <el-steps :active="activeStep" align-center>
8 <el-step :title="language==0?'创建账号':'create an account'" /> 8 <el-step :title="language==0?'创建账号':'create an account'"/>
9 <el-step :title="language==0?'账号信息':'account information'" /> 9 <el-step :title="language==0?'账号信息':'account information'"/>
10 <el-step :title="language==0?'注册完成':'stered successfully'" /> 10 <el-step :title="language==0?'注册完成':'stered successfully'"/>
11 </el-steps> 11 </el-steps>
12 </el-card> 12 </el-card>
13 <div class="mt20"></div> 13 <div class="mt20"></div>
14 <Step1 v-if="activeStep==0" @submit="toStep2" @userName="getUserName" /> 14 <Step1 v-if="activeStep==0" @submit="toStep2" @userName="getUserName"/>
15 <Step2 v-if="activeStep==1" @submit="toStep3" @prev="toStep1" :accont="form.userName"/> 15 <Step2 v-if="activeStep==1" @submit="toStep3" @prev="toStep1" :accont="form.userName"/>
16 <Step3 v-if="activeStep==2" :accont="form.userName"/> 16 <Step3 v-if="activeStep==2" :accont="form.userName"/>
17 </div> 17 </div>
18 </div> 18 </div>
19 </div> 19 </div>
20 </template> 20 </template>
21 21
...@@ -23,26 +23,31 @@ ...@@ -23,26 +23,31 @@
23 import Step1 from "./step1"; 23 import Step1 from "./step1";
24 import Step2 from "./step2"; 24 import Step2 from "./step2";
25 import Step3 from "./step3"; 25 import Step3 from "./step3";
26 import {onMounted,toRefs,reactive} from "vue" 26 import {onMounted, toRefs, reactive} from "vue"
27 import {useStorage} from "@vueuse/core/index"; 27 import {useStorage} from "@vueuse/core/index";
28 import {useRoute} from "vue-router"; 28 import {useRoute} from "vue-router";
29 const language= useStorage('language',0) 29 import useUserStore from "@/store/modules/user";
30
31 const language = useStorage('language', 0)
30 const route = useRoute() 32 const route = useRoute()
31 const data = reactive({ 33 const data = reactive({
32 isShow:false, 34 isShow: false,
33 isCodeTrue:false, 35 isCodeTrue: false,
34 counting:false, 36 counting: false,
35 form:{ 37 form: {
36 userName:'' 38 userName: ''
37 }, 39 },
38 activeStep: 0 40 activeStep: 0
39 }) 41 })
40 const {isShow,isCodeTrue,counting,form,activeStep} = toRefs(data) 42 const {isShow, isCodeTrue, counting, form, activeStep} = toRefs(data)
41 43 const user = useUserStore().user
42 onMounted(() => { 44 onMounted(() => {
43 if(route.query.step){ 45 if (route.query.step) {
44 activeStep.value = Number(route.query.step) 46 activeStep.value = Number(route.query.step)
45 } 47 }
48 if (user) {
49 form.value.userName = user.userName
50 }
46 }) 51 })
47 const toStep1 = () => { 52 const toStep1 = () => {
48 activeStep.value = 0 53 activeStep.value = 0
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!