no message
Showing
5 changed files
with
524 additions
and
432 deletions
| ... | @@ -8,6 +8,14 @@ export function getHotelList(params) { | ... | @@ -8,6 +8,14 @@ export function getHotelList(params) { |
| 8 | }) | 8 | }) |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | export function getScenicList(params) { | ||
| 12 | return request({ | ||
| 13 | url: `/ota/activityScenic/getScenicList`, | ||
| 14 | method: 'get', | ||
| 15 | params: params | ||
| 16 | }) | ||
| 17 | } | ||
| 18 | |||
| 11 | export function getStudioList(params) { | 19 | export function getStudioList(params) { |
| 12 | return request({ | 20 | return request({ |
| 13 | url: `/ota/studio/list`, | 21 | url: `/ota/studio/list`, |
| ... | @@ -23,6 +31,16 @@ export function getHotelById(id) { | ... | @@ -23,6 +31,16 @@ export function getHotelById(id) { |
| 23 | }) | 31 | }) |
| 24 | } | 32 | } |
| 25 | 33 | ||
| 34 | export function getScenicById(id) { | ||
| 35 | return request({ | ||
| 36 | url: `/ota/scenic/getScenicInfo`, | ||
| 37 | method: 'get', | ||
| 38 | params: { | ||
| 39 | id | ||
| 40 | } | ||
| 41 | }) | ||
| 42 | } | ||
| 43 | |||
| 26 | export function getStudioById(id) { | 44 | export function getStudioById(id) { |
| 27 | return request({ | 45 | return request({ |
| 28 | url: `/ota/studio/${id}`, | 46 | url: `/ota/studio/${id}`, |
| ... | @@ -221,6 +239,18 @@ export function checkRoomPayByUserId(id) { | ... | @@ -221,6 +239,18 @@ export function checkRoomPayByUserId(id) { |
| 221 | }) | 239 | }) |
| 222 | } | 240 | } |
| 223 | 241 | ||
| 242 | |||
| 243 | export function checkOrderPay(orderType) { | ||
| 244 | return request({ | ||
| 245 | url: `/ota/norder/checkNonPayment`, | ||
| 246 | method: 'get', | ||
| 247 | params: { | ||
| 248 | orderType | ||
| 249 | } | ||
| 250 | }) | ||
| 251 | } | ||
| 252 | |||
| 253 | |||
| 224 | export function submitInvoice(form) { | 254 | export function submitInvoice(form) { |
| 225 | return request({ | 255 | return request({ |
| 226 | url: `/ota/invoice`, | 256 | url: `/ota/invoice`, |
| ... | @@ -471,7 +501,7 @@ export function checkNonPayment() { | ... | @@ -471,7 +501,7 @@ export function checkNonPayment() { |
| 471 | return request({ | 501 | return request({ |
| 472 | url: `/ota/norder/checkNonPayment`, | 502 | url: `/ota/norder/checkNonPayment`, |
| 473 | method: 'get', | 503 | method: 'get', |
| 474 | params: {orderType: 5} | 504 | params: { orderType: 5 } |
| 475 | }) | 505 | }) |
| 476 | } | 506 | } |
| 477 | 507 | ||
| ... | @@ -507,7 +537,7 @@ export function aadCustomer(data) { | ... | @@ -507,7 +537,7 @@ export function aadCustomer(data) { |
| 507 | export function delCustomer(id) { | 537 | export function delCustomer(id) { |
| 508 | return request({ | 538 | return request({ |
| 509 | url: `/ota/customer/${id}`, | 539 | url: `/ota/customer/${id}`, |
| 510 | method: 'delete', | 540 | method: 'delete' |
| 511 | }) | 541 | }) |
| 512 | } | 542 | } |
| 513 | 543 | ||
| ... | @@ -537,3 +567,11 @@ export function getTicketOrderInfo(params) { | ... | @@ -537,3 +567,11 @@ export function getTicketOrderInfo(params) { |
| 537 | params | 567 | params |
| 538 | }) | 568 | }) |
| 539 | } | 569 | } |
| 570 | |||
| 571 | export function getGateListByLasId(params) { | ||
| 572 | return request({ | ||
| 573 | url: `/ota/scenicConfig/getGateListByLasId`, | ||
| 574 | method: 'get', | ||
| 575 | params | ||
| 576 | }) | ||
| 577 | } | ... | ... |
| ... | @@ -6,12 +6,12 @@ import { | ... | @@ -6,12 +6,12 @@ import { |
| 6 | /* Layout */ | 6 | /* Layout */ |
| 7 | import Layout from '@/layoutPc' | 7 | import Layout from '@/layoutPc' |
| 8 | import Empty from '@/layoutPc/empty' | 8 | import Empty from '@/layoutPc/empty' |
| 9 | import NProgress from "nprogress"; | 9 | import NProgress from 'nprogress' |
| 10 | import {getToken} from "@/utils/auth"; | 10 | import { getToken } from '@/utils/auth' |
| 11 | import useUserStore from "@/store/modules/user"; | 11 | import useUserStore from '@/store/modules/user' |
| 12 | import {isRelogin} from "@/utils/request"; | 12 | import { isRelogin } from '@/utils/request' |
| 13 | import {ElMessage} from "element-plus"; | 13 | import { ElMessage } from 'element-plus' |
| 14 | import Layout2 from "@/layoutPc/index2"; | 14 | import Layout2 from '@/layoutPc/index2' |
| 15 | // import useUserStore from '@/store/modules/user' | 15 | // import useUserStore from '@/store/modules/user' |
| 16 | 16 | ||
| 17 | /** | 17 | /** |
| ... | @@ -64,7 +64,7 @@ export const constantRoutes = [ | ... | @@ -64,7 +64,7 @@ export const constantRoutes = [ |
| 64 | path: '/ticketSearch', | 64 | path: '/ticketSearch', |
| 65 | component: () => import('@/viewsPc/booking/ticketSearch'), | 65 | component: () => import('@/viewsPc/booking/ticketSearch'), |
| 66 | name: 'ticketSearch', | 66 | name: 'ticketSearch', |
| 67 | meta: {title: '票务订单查询'} | 67 | meta: { title: '票务订单查询' } |
| 68 | }, | 68 | }, |
| 69 | { | 69 | { |
| 70 | path: '/index', | 70 | path: '/index', |
| ... | @@ -98,37 +98,37 @@ export const constantRoutes = [ | ... | @@ -98,37 +98,37 @@ export const constantRoutes = [ |
| 98 | path: 'wudao', | 98 | path: 'wudao', |
| 99 | component: () => import('@/viewsPc/about/wudao'), | 99 | component: () => import('@/viewsPc/about/wudao'), |
| 100 | name: 'dangNews', | 100 | name: 'dangNews', |
| 101 | meta: {title: '舞蹈节'} | 101 | meta: { title: '舞蹈节' } |
| 102 | }, | 102 | }, |
| 103 | { | 103 | { |
| 104 | path: 'culture', | 104 | path: 'culture', |
| 105 | component: () => import('@/viewsPc/about/culture'), | 105 | component: () => import('@/viewsPc/about/culture'), |
| 106 | name: 'culture', | 106 | name: 'culture', |
| 107 | meta: {title: '地方文化'} | 107 | meta: { title: '地方文化' } |
| 108 | }, | 108 | }, |
| 109 | { | 109 | { |
| 110 | path: 'leaderInfo/:id', | 110 | path: 'leaderInfo/:id', |
| 111 | component: () => import('@/viewsPc/about/leaderInfo'), | 111 | component: () => import('@/viewsPc/about/leaderInfo'), |
| 112 | name: 'leaderInfo', | 112 | name: 'leaderInfo', |
| 113 | meta: {title: '评委详情'} | 113 | meta: { title: '评委详情' } |
| 114 | }, | 114 | }, |
| 115 | { | 115 | { |
| 116 | path: 'wudaoEn', | 116 | path: 'wudaoEn', |
| 117 | component: () => import('@/viewsPc/about/wudao'), | 117 | component: () => import('@/viewsPc/about/wudao'), |
| 118 | name: 'dangNewsEn', | 118 | name: 'dangNewsEn', |
| 119 | meta: {title: 'about us'} | 119 | meta: { title: 'about us' } |
| 120 | }, | 120 | }, |
| 121 | { | 121 | { |
| 122 | path: 'cultureEn', | 122 | path: 'cultureEn', |
| 123 | component: () => import('@/viewsPc/about/culture_en'), | 123 | component: () => import('@/viewsPc/about/culture_en'), |
| 124 | name: 'cultureEn', | 124 | name: 'cultureEn', |
| 125 | meta: {title: 'culture'} | 125 | meta: { title: 'culture' } |
| 126 | }, | 126 | }, |
| 127 | { | 127 | { |
| 128 | path: 'regulations', | 128 | path: 'regulations', |
| 129 | component: () => import('@/viewsPc/about/fileList'), | 129 | component: () => import('@/viewsPc/about/fileList'), |
| 130 | name: 'regulations', | 130 | name: 'regulations', |
| 131 | meta: {title: 'rules and regulations'} | 131 | meta: { title: 'rules and regulations' } |
| 132 | } | 132 | } |
| 133 | ] | 133 | ] |
| 134 | }, | 134 | }, |
| ... | @@ -141,31 +141,31 @@ export const constantRoutes = [ | ... | @@ -141,31 +141,31 @@ export const constantRoutes = [ |
| 141 | path: 'index', | 141 | path: 'index', |
| 142 | component: () => import('@/viewsPc/notice/index'), | 142 | component: () => import('@/viewsPc/notice/index'), |
| 143 | name: 'notice', | 143 | name: 'notice', |
| 144 | meta: {title: 'NOTICEBOARD'} | 144 | meta: { title: 'NOTICEBOARD' } |
| 145 | }, | 145 | }, |
| 146 | { | 146 | { |
| 147 | path: 'index/list', | 147 | path: 'index/list', |
| 148 | component: () => import('@/viewsPc/notice/list'), | 148 | component: () => import('@/viewsPc/notice/list'), |
| 149 | name: 'noticeList', | 149 | name: 'noticeList', |
| 150 | meta: {title: '资讯列表'} | 150 | meta: { title: '资讯列表' } |
| 151 | }, | 151 | }, |
| 152 | { | 152 | { |
| 153 | path: 'index/coverlist', | 153 | path: 'index/coverlist', |
| 154 | component: () => import('@/viewsPc/notice/coverlist'), | 154 | component: () => import('@/viewsPc/notice/coverlist'), |
| 155 | name: 'coverList', | 155 | name: 'coverList', |
| 156 | meta: {title: '图文列表'} | 156 | meta: { title: '图文列表' } |
| 157 | }, | 157 | }, |
| 158 | { | 158 | { |
| 159 | path: 'index/fileList', | 159 | path: 'index/fileList', |
| 160 | component: () => import('@/viewsPc/notice/fileList'), | 160 | component: () => import('@/viewsPc/notice/fileList'), |
| 161 | name: 'fileList', | 161 | name: 'fileList', |
| 162 | meta: {title: '文件列表'} | 162 | meta: { title: '文件列表' } |
| 163 | }, | 163 | }, |
| 164 | { | 164 | { |
| 165 | path: 'index/personList', | 165 | path: 'index/personList', |
| 166 | component: () => import('@/viewsPc/notice/personList'), | 166 | component: () => import('@/viewsPc/notice/personList'), |
| 167 | name: 'personList', | 167 | name: 'personList', |
| 168 | meta: {title: '人员列表'} | 168 | meta: { title: '人员列表' } |
| 169 | } | 169 | } |
| 170 | ] | 170 | ] |
| 171 | }, | 171 | }, |
| ... | @@ -178,19 +178,19 @@ export const constantRoutes = [ | ... | @@ -178,19 +178,19 @@ export const constantRoutes = [ |
| 178 | path: 'index', | 178 | path: 'index', |
| 179 | component: () => import('@/viewsPc/news/index'), | 179 | component: () => import('@/viewsPc/news/index'), |
| 180 | name: 'news', | 180 | name: 'news', |
| 181 | meta: {title: 'NEWS'} | 181 | meta: { title: 'NEWS' } |
| 182 | }, | 182 | }, |
| 183 | { | 183 | { |
| 184 | path: 'list/:id', | 184 | path: 'list/:id', |
| 185 | component: () => import('@/viewsPc/news/list'), | 185 | component: () => import('@/viewsPc/news/list'), |
| 186 | name: 'newsList', | 186 | name: 'newsList', |
| 187 | meta: {title: '新闻列表'} | 187 | meta: { title: '新闻列表' } |
| 188 | }, | 188 | }, |
| 189 | { | 189 | { |
| 190 | path: 'detail/:id', | 190 | path: 'detail/:id', |
| 191 | component: () => import('@/viewsPc/news/detail'), | 191 | component: () => import('@/viewsPc/news/detail'), |
| 192 | name: 'newsDetail', | 192 | name: 'newsDetail', |
| 193 | meta: {title: '新闻详情'} | 193 | meta: { title: '新闻详情' } |
| 194 | } | 194 | } |
| 195 | ] | 195 | ] |
| 196 | }, | 196 | }, |
| ... | @@ -203,13 +203,13 @@ export const constantRoutes = [ | ... | @@ -203,13 +203,13 @@ export const constantRoutes = [ |
| 203 | path: 'index', | 203 | path: 'index', |
| 204 | component: () => import('@/viewsPc/nationalTeam/index'), | 204 | component: () => import('@/viewsPc/nationalTeam/index'), |
| 205 | name: 'nationalTeam', | 205 | name: 'nationalTeam', |
| 206 | meta: {title: '新闻'} | 206 | meta: { title: '新闻' } |
| 207 | }, | 207 | }, |
| 208 | { | 208 | { |
| 209 | path: 'index/personList', | 209 | path: 'index/personList', |
| 210 | component: () => import('@/viewsPc/nationalTeam/components/member'), | 210 | component: () => import('@/viewsPc/nationalTeam/components/member'), |
| 211 | name: 'personListHasKind', | 211 | name: 'personListHasKind', |
| 212 | meta: {title: '人员列表'} | 212 | meta: { title: '人员列表' } |
| 213 | } | 213 | } |
| 214 | 214 | ||
| 215 | ] | 215 | ] |
| ... | @@ -223,7 +223,7 @@ export const constantRoutes = [ | ... | @@ -223,7 +223,7 @@ export const constantRoutes = [ |
| 223 | path: 'index', | 223 | path: 'index', |
| 224 | component: () => import('@/viewsPc/meta/index'), | 224 | component: () => import('@/viewsPc/meta/index'), |
| 225 | name: 'meta', | 225 | name: 'meta', |
| 226 | meta: {title: 'MEDIA'} | 226 | meta: { title: 'MEDIA' } |
| 227 | } | 227 | } |
| 228 | ] | 228 | ] |
| 229 | }, | 229 | }, |
| ... | @@ -236,7 +236,7 @@ export const constantRoutes = [ | ... | @@ -236,7 +236,7 @@ export const constantRoutes = [ |
| 236 | path: 'index', | 236 | path: 'index', |
| 237 | component: () => import('@/viewsPc/saiC/index'), | 237 | component: () => import('@/viewsPc/saiC/index'), |
| 238 | name: 'saiC', | 238 | name: 'saiC', |
| 239 | meta: {title: 'COMPETITIONS'} | 239 | meta: { title: 'COMPETITIONS' } |
| 240 | } | 240 | } |
| 241 | ] | 241 | ] |
| 242 | }, | 242 | }, |
| ... | @@ -249,7 +249,7 @@ export const constantRoutes = [ | ... | @@ -249,7 +249,7 @@ export const constantRoutes = [ |
| 249 | path: 'index', | 249 | path: 'index', |
| 250 | component: () => import('@/viewsPc/guide/index'), | 250 | component: () => import('@/viewsPc/guide/index'), |
| 251 | name: 'guide', | 251 | name: 'guide', |
| 252 | meta: {title: 'GUIDELINE'} | 252 | meta: { title: 'GUIDELINE' } |
| 253 | } | 253 | } |
| 254 | ] | 254 | ] |
| 255 | }, | 255 | }, |
| ... | @@ -262,7 +262,7 @@ export const constantRoutes = [ | ... | @@ -262,7 +262,7 @@ export const constantRoutes = [ |
| 262 | path: '', | 262 | path: '', |
| 263 | component: () => import('@/viewsPc/searchList'), | 263 | component: () => import('@/viewsPc/searchList'), |
| 264 | name: 'searchList', | 264 | name: 'searchList', |
| 265 | meta: {title: '搜索结果'} | 265 | meta: { title: '搜索结果' } |
| 266 | } | 266 | } |
| 267 | ] | 267 | ] |
| 268 | }, | 268 | }, |
| ... | @@ -275,25 +275,25 @@ export const constantRoutes = [ | ... | @@ -275,25 +275,25 @@ export const constantRoutes = [ |
| 275 | path: 'index', | 275 | path: 'index', |
| 276 | component: () => import('@/viewsPc/competition/index'), | 276 | component: () => import('@/viewsPc/competition/index'), |
| 277 | name: 'competition', | 277 | name: 'competition', |
| 278 | meta: {title: '竞赛服务'} | 278 | meta: { title: '竞赛服务' } |
| 279 | }, | 279 | }, |
| 280 | { | 280 | { |
| 281 | path: 'coach/:kind', | 281 | path: 'coach/:kind', |
| 282 | component: () => import('@/viewsPc/competition/coach'), | 282 | component: () => import('@/viewsPc/competition/coach'), |
| 283 | name: 'competitionCoach', | 283 | name: 'competitionCoach', |
| 284 | meta: {title: '竞赛服务'} | 284 | meta: { title: '竞赛服务' } |
| 285 | }, | 285 | }, |
| 286 | { | 286 | { |
| 287 | path: 'calendar', | 287 | path: 'calendar', |
| 288 | component: () => import('@/viewsPc/competition/calendar'), | 288 | component: () => import('@/viewsPc/competition/calendar'), |
| 289 | name: 'calendar', | 289 | name: 'calendar', |
| 290 | meta: {title: '竞赛日程'} | 290 | meta: { title: '竞赛日程' } |
| 291 | }, | 291 | }, |
| 292 | { | 292 | { |
| 293 | path: 'domesticRanking', | 293 | path: 'domesticRanking', |
| 294 | component: () => import('@/viewsPc/competition/domesticRanking'), | 294 | component: () => import('@/viewsPc/competition/domesticRanking'), |
| 295 | name: 'domesticRanking', | 295 | name: 'domesticRanking', |
| 296 | meta: {title: '国内排名'} | 296 | meta: { title: '国内排名' } |
| 297 | } | 297 | } |
| 298 | ] | 298 | ] |
| 299 | }, | 299 | }, |
| ... | @@ -306,19 +306,19 @@ export const constantRoutes = [ | ... | @@ -306,19 +306,19 @@ export const constantRoutes = [ |
| 306 | path: 'list', | 306 | path: 'list', |
| 307 | component: () => import('@/viewsPc/match/index'), | 307 | component: () => import('@/viewsPc/match/index'), |
| 308 | name: 'matchList', | 308 | name: 'matchList', |
| 309 | meta: {title: '赛事'} | 309 | meta: { title: '赛事' } |
| 310 | }, | 310 | }, |
| 311 | { | 311 | { |
| 312 | path: 'list/:id', | 312 | path: 'list/:id', |
| 313 | component: () => import('@/viewsPc/match/detail_en'), | 313 | component: () => import('@/viewsPc/match/detail_en'), |
| 314 | name: 'matchDetail', | 314 | name: 'matchDetail', |
| 315 | meta: {title: '赛事详情'} | 315 | meta: { title: '赛事详情' } |
| 316 | }, | 316 | }, |
| 317 | { | 317 | { |
| 318 | path: 'list/reservationSearch', | 318 | path: 'list/reservationSearch', |
| 319 | component: () => import('@/viewsPc/match/reservationSearch.vue'), | 319 | component: () => import('@/viewsPc/match/reservationSearch.vue'), |
| 320 | name: 'reservationSearch', | 320 | name: 'reservationSearch', |
| 321 | meta: {title: '预订查询'} | 321 | meta: { title: '预订查询' } |
| 322 | } | 322 | } |
| 323 | ] | 323 | ] |
| 324 | }, | 324 | }, |
| ... | @@ -331,22 +331,22 @@ export const constantRoutes = [ | ... | @@ -331,22 +331,22 @@ export const constantRoutes = [ |
| 331 | path: '0', | 331 | path: '0', |
| 332 | component: () => import('@/viewsPc/register/personal'), | 332 | component: () => import('@/viewsPc/register/personal'), |
| 333 | name: 'personalRegister', | 333 | name: 'personalRegister', |
| 334 | meta: {title: 'Register'} | 334 | meta: { title: 'Register' } |
| 335 | }, { | 335 | }, { |
| 336 | path: '1', | 336 | path: '1', |
| 337 | component: () => import('@/viewsPc/register/team/team'), | 337 | component: () => import('@/viewsPc/register/team/team'), |
| 338 | name: 'teamRegister', | 338 | name: 'teamRegister', |
| 339 | meta: {title: 'Register'} | 339 | meta: { title: 'Register' } |
| 340 | }, { | 340 | }, { |
| 341 | path: 'userAgreement', | 341 | path: 'userAgreement', |
| 342 | component: () => import('@/viewsPc/register/userAgreement'), | 342 | component: () => import('@/viewsPc/register/userAgreement'), |
| 343 | name: 'userAgreement', | 343 | name: 'userAgreement', |
| 344 | meta: {title: 'Register'} | 344 | meta: { title: 'Register' } |
| 345 | }, { | 345 | }, { |
| 346 | path: 'policy', | 346 | path: 'policy', |
| 347 | component: () => import('@/viewsPc/register/policy'), | 347 | component: () => import('@/viewsPc/register/policy'), |
| 348 | name: 'policy', | 348 | name: 'policy', |
| 349 | meta: {title: 'Register'} | 349 | meta: { title: 'Register' } |
| 350 | } | 350 | } |
| 351 | ] | 351 | ] |
| 352 | }, | 352 | }, |
| ... | @@ -359,175 +359,175 @@ export const constantRoutes = [ | ... | @@ -359,175 +359,175 @@ export const constantRoutes = [ |
| 359 | path: 'ticket/:activeId', | 359 | path: 'ticket/:activeId', |
| 360 | component: () => import('@/viewsPc/booking/ticket/index.vue'), | 360 | component: () => import('@/viewsPc/booking/ticket/index.vue'), |
| 361 | name: 'ticket', | 361 | name: 'ticket', |
| 362 | meta: {title: 'Ticket Booking'} | 362 | meta: { title: 'Ticket Booking' } |
| 363 | }, | 363 | }, |
| 364 | { | 364 | { |
| 365 | path: 'ticket/:activeId/:latId/:attId', | 365 | path: 'ticket/:activeId/:latId/:attId', |
| 366 | component: () => import('@/viewsPc/booking/ticket/confirmOrder.vue'), | 366 | component: () => import('@/viewsPc/booking/ticket/confirmOrder.vue'), |
| 367 | name: 'confirmOrder', | 367 | name: 'confirmOrder', |
| 368 | meta: {title: 'confirmOrder'} | 368 | meta: { title: 'confirmOrder' } |
| 369 | }, | 369 | }, |
| 370 | { | 370 | { |
| 371 | path: 'ticket/peopleManage', | 371 | path: 'ticket/peopleManage', |
| 372 | component: () => import('@/viewsPc/booking/ticket/peopleManage.vue'), | 372 | component: () => import('@/viewsPc/booking/ticket/peopleManage.vue'), |
| 373 | name: 'peopleManage', | 373 | name: 'peopleManage', |
| 374 | meta: {title: 'peopleManage'} | 374 | meta: { title: 'peopleManage' } |
| 375 | }, | 375 | }, |
| 376 | { | 376 | { |
| 377 | path: 'ticket/addInvoice', | 377 | path: 'ticket/addInvoice', |
| 378 | component: () => import('@/viewsPc/booking/ticket/addInvoice.vue'), | 378 | component: () => import('@/viewsPc/booking/ticket/addInvoice.vue'), |
| 379 | name: 'ticketAddInvoice', | 379 | name: 'ticketAddInvoice', |
| 380 | meta: {title: 'ticketAddInvoice'} | 380 | meta: { title: 'ticketAddInvoice' } |
| 381 | }, | 381 | }, |
| 382 | { | 382 | { |
| 383 | path: 'ticket/invoiceDetail', | 383 | path: 'ticket/invoiceDetail', |
| 384 | component: () => import('@/viewsPc/booking/ticket/invoiceDetail.vue'), | 384 | component: () => import('@/viewsPc/booking/ticket/invoiceDetail.vue'), |
| 385 | name: 'ticketInvoiceDetail', | 385 | name: 'ticketInvoiceDetail', |
| 386 | meta: {title: 'ticketInvoiceDetail'} | 386 | meta: { title: 'ticketInvoiceDetail' } |
| 387 | }, | 387 | }, |
| 388 | { | 388 | { |
| 389 | path: 'hotel/:cptId', | 389 | path: 'hotel/:cptId', |
| 390 | component: () => import('@/viewsPc/booking/hotel'), | 390 | component: () => import('@/viewsPc/booking/hotel'), |
| 391 | name: 'hotel', | 391 | name: 'hotel', |
| 392 | meta: {title: 'Hotel Reservation'} | 392 | meta: { title: 'Hotel Reservation' } |
| 393 | }, | 393 | }, |
| 394 | { | 394 | { |
| 395 | path: 'hotel/:cptId/:hotelId', | 395 | path: 'hotel/:cptId/:hotelId', |
| 396 | component: () => import('@/viewsPc/booking/hotelDetail'), | 396 | component: () => import('@/viewsPc/booking/hotelDetail'), |
| 397 | name: 'hotelDetail', | 397 | name: 'hotelDetail', |
| 398 | meta: {title: 'Hotel Reservation'} | 398 | meta: { title: 'Hotel Reservation' } |
| 399 | }, | ||
| 400 | { | ||
| 401 | path: 'travel/:cptId', | ||
| 402 | component: () => import('@/viewsPc/booking/travel'), | ||
| 403 | name: 'travel', | ||
| 404 | meta: {title: 'Hotel Reservation'} | ||
| 405 | }, | ||
| 406 | { | ||
| 407 | path: 'travel/:cptId/:hotelId', | ||
| 408 | component: () => import('@/viewsPc/booking/travelDetail'), | ||
| 409 | name: 'travelDetail', | ||
| 410 | meta: {title: 'Hotel Reservation'} | ||
| 411 | }, | 399 | }, |
| 412 | { | 400 | { |
| 413 | path: 'car/:cptId/:id', | 401 | path: 'car/:cptId/:id', |
| 414 | component: () => import('@/viewsPc/booking/carOrder'), | 402 | component: () => import('@/viewsPc/booking/carOrder'), |
| 415 | name: 'carOrder', | 403 | name: 'carOrder', |
| 416 | meta: {title: 'Car Reservation'} | 404 | meta: { title: 'Car Reservation' } |
| 417 | }, | 405 | }, |
| 418 | { | 406 | { |
| 419 | path: 'hotel/:cptId/:hotelId/:roomId', | 407 | path: 'hotel/:cptId/:hotelId/:roomId', |
| 420 | component: () => import('@/viewsPc/booking/hotelOrder'), | 408 | component: () => import('@/viewsPc/booking/hotelOrder'), |
| 421 | name: 'hotelOrder', | 409 | name: 'hotelOrder', |
| 422 | meta: {title: 'Hotel Reservation'} | 410 | meta: { title: 'Hotel Reservation' } |
| 423 | }, | ||
| 424 | { | ||
| 425 | path: 'travel/:cptId/:hotelId/:roomId', | ||
| 426 | component: () => import('@/viewsPc/booking/travelOrder'), | ||
| 427 | name: 'travelOrder', | ||
| 428 | meta: {title: 'Travel Reservation'} | ||
| 429 | }, | 411 | }, |
| 430 | { | 412 | { |
| 431 | path: 'car/:cptId', | 413 | path: 'car/:cptId', |
| 432 | component: () => import('@/viewsPc/booking/car'), | 414 | component: () => import('@/viewsPc/booking/car'), |
| 433 | name: 'car', | 415 | name: 'car', |
| 434 | meta: {title: 'Vehicle Reservation'} | 416 | meta: { title: 'Vehicle Reservation' } |
| 435 | }, | 417 | }, |
| 436 | { | 418 | { |
| 437 | path: 'dinner/:cptId', | 419 | path: 'dinner/:cptId', |
| 438 | component: () => import('@/viewsPc/booking/dinner'), | 420 | component: () => import('@/viewsPc/booking/dinner'), |
| 439 | name: 'dinner', | 421 | name: 'dinner', |
| 440 | meta: {title: 'Dining Reservation'} | 422 | meta: { title: 'Dining Reservation' } |
| 441 | }, | 423 | }, |
| 442 | { | 424 | { |
| 443 | path: 'dinner/:cptId/:id', | 425 | path: 'dinner/:cptId/:id', |
| 444 | component: () => import('@/viewsPc/booking/dinnerDetail'), | 426 | component: () => import('@/viewsPc/booking/dinnerDetail'), |
| 445 | name: 'dinnerDetail', | 427 | name: 'dinnerDetail', |
| 446 | meta: {title: 'Dining Reservation'} | 428 | meta: { title: 'Dining Reservation' } |
| 447 | }, | 429 | }, |
| 448 | { | 430 | { |
| 449 | path: 'dinner/:cptId/:id/:foodId', | 431 | path: 'dinner/:cptId/:id/:foodId', |
| 450 | component: () => import('@/viewsPc/booking/foodOrder'), | 432 | component: () => import('@/viewsPc/booking/foodOrder'), |
| 451 | name: 'dinnerOrder', | 433 | name: 'dinnerOrder', |
| 452 | meta: {title: 'Dinner Reservation'} | 434 | meta: { title: 'Dinner Reservation' } |
| 453 | }, | 435 | }, |
| 454 | { | 436 | { |
| 455 | path: 'makeUp/:cptId', | 437 | path: 'makeUp/:cptId', |
| 456 | component: () => import('@/viewsPc/booking/makeUp'), | 438 | component: () => import('@/viewsPc/booking/makeUp'), |
| 457 | name: 'makeUp', | 439 | name: 'makeUp', |
| 458 | meta: {title: 'Makeup Appointment'} | 440 | meta: { title: 'Makeup Appointment' } |
| 459 | }, | 441 | }, |
| 460 | { | 442 | { |
| 461 | path: 'makeUp/:cptId/:id', | 443 | path: 'makeUp/:cptId/:id', |
| 462 | component: () => import('@/viewsPc/booking/makeUpDetail'), | 444 | component: () => import('@/viewsPc/booking/makeUpDetail'), |
| 463 | name: 'makeUpDetail', | 445 | name: 'makeUpDetail', |
| 464 | meta: {title: 'Makeup Appointment'} | 446 | meta: { title: 'Makeup Appointment' } |
| 465 | }, | 447 | }, |
| 466 | { | 448 | { |
| 467 | path: 'makeUp/:cptId/:id/:lasId', | 449 | path: 'makeUp/:cptId/:id/:lasId', |
| 468 | component: () => import('@/viewsPc/booking/makeUpOrder.vue'), | 450 | component: () => import('@/viewsPc/booking/makeUpOrder.vue'), |
| 469 | name: 'makeUpOrder', | 451 | name: 'makeUpOrder', |
| 470 | meta: {title: 'Makeup Reservation'} | 452 | meta: { title: 'Makeup Reservation' } |
| 471 | }, | 453 | }, |
| 472 | { | 454 | { |
| 473 | path: 'photography/:cptId', | 455 | path: 'photography/:cptId', |
| 474 | component: () => import('@/viewsPc/booking/photography'), | 456 | component: () => import('@/viewsPc/booking/photography'), |
| 475 | name: 'photography', | 457 | name: 'photography', |
| 476 | meta: {title: 'Photography Appointment'} | 458 | meta: { title: 'Photography Appointment' } |
| 477 | }, | 459 | }, |
| 478 | { | 460 | { |
| 479 | path: 'photography/:cptId/:id', | 461 | path: 'photography/:cptId/:id', |
| 480 | component: () => import('@/viewsPc/booking/photographyDetail'), | 462 | component: () => import('@/viewsPc/booking/photographyDetail'), |
| 481 | name: 'photographyDetail', | 463 | name: 'photographyDetail', |
| 482 | meta: {title: 'Photography Reservation'} | 464 | meta: { title: 'Photography Reservation' } |
| 483 | }, | 465 | }, |
| 484 | { | 466 | { |
| 485 | path: 'photography/:cptId/:id/:lasId', | 467 | path: 'photography/:cptId/:id/:lasId', |
| 486 | component: () => import('@/viewsPc/booking/photographyOrder.vue'), | 468 | component: () => import('@/viewsPc/booking/photographyOrder.vue'), |
| 487 | name: 'photographyOrder', | 469 | name: 'photographyOrder', |
| 488 | meta: {title: 'Photography Appointment'} | 470 | meta: { title: 'Photography Appointment' } |
| 489 | }, | 471 | }, |
| 490 | { | 472 | { |
| 491 | path: 'pay', | 473 | path: 'pay', |
| 492 | component: () => import('@/viewsPc/booking/pay'), | 474 | component: () => import('@/viewsPc/booking/pay'), |
| 493 | name: 'bookingPay', | 475 | name: 'bookingPay', |
| 494 | meta: {title: 'pay'} | 476 | meta: { title: 'pay' } |
| 495 | }, | 477 | }, |
| 496 | { | 478 | { |
| 497 | path: 'payticket', | 479 | path: 'payticket', |
| 498 | component: () => import('@/viewsPc/booking/payticket'), | 480 | component: () => import('@/viewsPc/booking/payticket'), |
| 499 | name: 'payticket', | 481 | name: 'payticket', |
| 500 | meta: {title: '票务'} | 482 | meta: { title: '票务' } |
| 501 | }, | 483 | }, |
| 502 | { | 484 | { |
| 503 | path: 'payOk', | 485 | path: 'payOk', |
| 504 | component: () => import('@/viewsPc/booking/payOk'), | 486 | component: () => import('@/viewsPc/booking/payOk'), |
| 505 | name: 'bookingPayOk', | 487 | name: 'bookingPayOk', |
| 506 | meta: {title: 'payOk'} | 488 | meta: { title: 'payOk' } |
| 507 | }, | 489 | }, |
| 508 | { | 490 | { |
| 509 | path: 'payticketOk', | 491 | path: 'payticketOk', |
| 510 | component: () => import('@/viewsPc/booking/payticketOk'), | 492 | component: () => import('@/viewsPc/booking/payticketOk'), |
| 511 | name: 'payticketOk', | 493 | name: 'payticketOk', |
| 512 | meta: {title: '票务-paypal'} | 494 | meta: { title: '票务-paypal' } |
| 513 | }, | 495 | }, |
| 514 | { | 496 | { |
| 515 | path: 'invoice', | 497 | path: 'invoice', |
| 516 | component: () => import('@/viewsPc/booking/invoicing'), | 498 | component: () => import('@/viewsPc/booking/invoicing'), |
| 517 | name: 'invoice', | 499 | name: 'invoice', |
| 518 | meta: {title: '我的发票'} | 500 | meta: { title: '我的发票' } |
| 519 | }, | 501 | }, |
| 520 | { | 502 | { |
| 521 | path: 'invoiceDetail', | 503 | path: 'invoiceDetail', |
| 522 | component: () => import('@/viewsPc/booking/invoiceDetail'), | 504 | component: () => import('@/viewsPc/booking/invoiceDetail'), |
| 523 | name: 'invoiceDetail', | 505 | name: 'invoiceDetail', |
| 524 | meta: {title: '发票详情'} | 506 | meta: { title: '发票详情' } |
| 525 | }, | 507 | }, |
| 526 | { | 508 | { |
| 527 | path: 'addInvoice', | 509 | path: 'addInvoice', |
| 528 | component: () => import('@/viewsPc/booking/addInvoice'), | 510 | component: () => import('@/viewsPc/booking/addInvoice'), |
| 529 | name: 'addInvoice', | 511 | name: 'addInvoice', |
| 530 | meta: {title: '开发票'} | 512 | meta: { title: '开发票' } |
| 513 | }, | ||
| 514 | { | ||
| 515 | path: 'travel/:cptId', | ||
| 516 | component: () => import('@/viewsPc/booking/travel'), | ||
| 517 | name: 'travel', | ||
| 518 | meta: { title: 'Hotel Reservation' } | ||
| 519 | }, | ||
| 520 | { | ||
| 521 | path: 'travel/:cptId/:scenicId', | ||
| 522 | component: () => import('@/viewsPc/booking/travelDetail'), | ||
| 523 | name: 'travelDetail', | ||
| 524 | meta: { title: 'Hotel Reservation' } | ||
| 525 | }, | ||
| 526 | { | ||
| 527 | path: 'travel/:cptId/:scenicId/:start', | ||
| 528 | component: () => import('@/viewsPc/booking/travelOrder'), | ||
| 529 | name: 'travelOrder', | ||
| 530 | meta: { title: 'Travel Reservation' } | ||
| 531 | } | 531 | } |
| 532 | ] | 532 | ] |
| 533 | }, | 533 | }, |
| ... | @@ -539,49 +539,49 @@ export const constantRoutes = [ | ... | @@ -539,49 +539,49 @@ export const constantRoutes = [ |
| 539 | path: 'myInfo', | 539 | path: 'myInfo', |
| 540 | component: () => import('@/viewsPc/center/myInfo'), | 540 | component: () => import('@/viewsPc/center/myInfo'), |
| 541 | name: 'myInfo', | 541 | name: 'myInfo', |
| 542 | meta: {title: '个人中心'} | 542 | meta: { title: '个人中心' } |
| 543 | }, | 543 | }, |
| 544 | { | 544 | { |
| 545 | path: 'myPassword', | 545 | path: 'myPassword', |
| 546 | component: () => import('@/viewsPc/center/myPassword'), | 546 | component: () => import('@/viewsPc/center/myPassword'), |
| 547 | name: 'myPassword', | 547 | name: 'myPassword', |
| 548 | meta: {title: '修改密码'} | 548 | meta: { title: '修改密码' } |
| 549 | }, | 549 | }, |
| 550 | { | 550 | { |
| 551 | path: 'myCertification', | 551 | path: 'myCertification', |
| 552 | component: () => import('@/viewsPc/center/myCertification'), | 552 | component: () => import('@/viewsPc/center/myCertification'), |
| 553 | name: 'myCertification', | 553 | name: 'myCertification', |
| 554 | meta: {title: 'institutional accreditation'} | 554 | meta: { title: 'institutional accreditation' } |
| 555 | }, | 555 | }, |
| 556 | { | 556 | { |
| 557 | path: 'myMember', | 557 | path: 'myMember', |
| 558 | component: () => import('@/viewsPc/center/myMember'), | 558 | component: () => import('@/viewsPc/center/myMember'), |
| 559 | name: 'myMember', | 559 | name: 'myMember', |
| 560 | meta: {title: 'Player Management'} | 560 | meta: { title: 'Player Management' } |
| 561 | }, | 561 | }, |
| 562 | { | 562 | { |
| 563 | path: 'myMatch', | 563 | path: 'myMatch', |
| 564 | component: () => import('@/viewsPc/center/myMatch'), | 564 | component: () => import('@/viewsPc/center/myMatch'), |
| 565 | name: 'myMatch', | 565 | name: 'myMatch', |
| 566 | meta: {title: 'My registration'} | 566 | meta: { title: 'My registration' } |
| 567 | }, | 567 | }, |
| 568 | { | 568 | { |
| 569 | path: 'myReservation', | 569 | path: 'myReservation', |
| 570 | component: () => import('@/viewsPc/center/myReservation'), | 570 | component: () => import('@/viewsPc/center/myReservation'), |
| 571 | name: 'myReservation', | 571 | name: 'myReservation', |
| 572 | meta: {title: 'My reservation'} | 572 | meta: { title: 'My reservation' } |
| 573 | }, | 573 | }, |
| 574 | { | 574 | { |
| 575 | path: 'mySms', | 575 | path: 'mySms', |
| 576 | component: () => import('@/viewsPc/center/mySms'), | 576 | component: () => import('@/viewsPc/center/mySms'), |
| 577 | name: 'mySms', | 577 | name: 'mySms', |
| 578 | meta: {title: 'System messages'} | 578 | meta: { title: 'System messages' } |
| 579 | }, | 579 | }, |
| 580 | { | 580 | { |
| 581 | path: 'myKP', | 581 | path: 'myKP', |
| 582 | component: () => import('@/viewsPc/center/myCanKP'), | 582 | component: () => import('@/viewsPc/center/myCanKP'), |
| 583 | name: 'myKP', | 583 | name: 'myKP', |
| 584 | meta: {title: '发票管理'} | 584 | meta: { title: '发票管理' } |
| 585 | } | 585 | } |
| 586 | ] | 586 | ] |
| 587 | }, | 587 | }, |
| ... | @@ -595,71 +595,71 @@ export const constantRoutes = [ | ... | @@ -595,71 +595,71 @@ export const constantRoutes = [ |
| 595 | path: 'detail', | 595 | path: 'detail', |
| 596 | name: 'seat_detail', | 596 | name: 'seat_detail', |
| 597 | component: () => import('@/viewsPc/seat/ticket-detail'), | 597 | component: () => import('@/viewsPc/seat/ticket-detail'), |
| 598 | meta: {title: '购票详情'}, | 598 | meta: { title: '购票详情' }, |
| 599 | props: route => ({ | 599 | props: route => ({ |
| 600 | activityId: route.query.id, | 600 | activityId: route.query.id |
| 601 | }) | 601 | }) |
| 602 | }, | 602 | }, |
| 603 | { | 603 | { |
| 604 | path: 'seat_picker', | 604 | path: 'seat_picker', |
| 605 | name: 'seat_picker', | 605 | name: 'seat_picker', |
| 606 | component: () => import('@/viewsPc/seat/seat-picker'), | 606 | component: () => import('@/viewsPc/seat/seat-picker'), |
| 607 | meta: {title: '选座'}, | 607 | meta: { title: '选座' }, |
| 608 | props: route => ({ | 608 | props: route => ({ |
| 609 | activityId: route.query.id, | 609 | activityId: route.query.id |
| 610 | }) | 610 | }) |
| 611 | }, | 611 | }, |
| 612 | { | 612 | { |
| 613 | path: 'order', | 613 | path: 'order', |
| 614 | name: 'seat_order', | 614 | name: 'seat_order', |
| 615 | component: () => import('@/viewsPc/seat/order-list'), | 615 | component: () => import('@/viewsPc/seat/order-list'), |
| 616 | meta: {title: '我的订单'}, | 616 | meta: { title: '我的订单' }, |
| 617 | props: route => ({ | 617 | props: route => ({ |
| 618 | activityId: route.query.id, | 618 | activityId: route.query.id |
| 619 | }) | 619 | }) |
| 620 | }, | 620 | }, |
| 621 | { | 621 | { |
| 622 | path: 'order_detail', | 622 | path: 'order_detail', |
| 623 | name: 'order_detail', | 623 | name: 'order_detail', |
| 624 | component: () => import('@/viewsPc/seat/order-detail'), | 624 | component: () => import('@/viewsPc/seat/order-detail'), |
| 625 | meta: {title: '订单详情'}, | 625 | meta: { title: '订单详情' }, |
| 626 | props: route => ({ | 626 | props: route => ({ |
| 627 | activityId: route.query.id, | 627 | activityId: route.query.id |
| 628 | }) | 628 | }) |
| 629 | }, | 629 | }, |
| 630 | { | 630 | { |
| 631 | path: 'confirm_order', | 631 | path: 'confirm_order', |
| 632 | name: 'confirm_order', | 632 | name: 'confirm_order', |
| 633 | component: () => import('@/viewsPc/seat/confirm-order'), | 633 | component: () => import('@/viewsPc/seat/confirm-order'), |
| 634 | meta: {title: '确认订单'}, | 634 | meta: { title: '确认订单' }, |
| 635 | props: route => ({ | 635 | props: route => ({ |
| 636 | activityId: route.query.id, | 636 | activityId: route.query.id |
| 637 | }) | 637 | }) |
| 638 | }, | 638 | }, |
| 639 | { | 639 | { |
| 640 | path: 'add_watch_people', | 640 | path: 'add_watch_people', |
| 641 | name: 'add_watch_people', | 641 | name: 'add_watch_people', |
| 642 | component: () => import('@/viewsPc/seat/add-watch-people'), | 642 | component: () => import('@/viewsPc/seat/add-watch-people'), |
| 643 | meta: {title: '新增观影人'} | 643 | meta: { title: '新增观影人' } |
| 644 | }, | 644 | }, |
| 645 | { | 645 | { |
| 646 | path: 'people_manage', | 646 | path: 'people_manage', |
| 647 | name: 'people_manage', | 647 | name: 'people_manage', |
| 648 | component: () => import('@/viewsPc/seat/people-manage'), | 648 | component: () => import('@/viewsPc/seat/people-manage'), |
| 649 | meta: {title: '观影人管理'} | 649 | meta: { title: '观影人管理' } |
| 650 | }, | 650 | }, |
| 651 | { | 651 | { |
| 652 | path: 'payTicketOk', | 652 | path: 'payTicketOk', |
| 653 | component: () => import('@/viewsPc/seat/payticketOk.vue'), | 653 | component: () => import('@/viewsPc/seat/payticketOk.vue'), |
| 654 | name: 'payTicketOk', | 654 | name: 'payTicketOk', |
| 655 | meta: {title: '支付成功'} | 655 | meta: { title: '支付成功' } |
| 656 | }, | 656 | }, |
| 657 | { | 657 | { |
| 658 | path: 'payTicketLoser', | 658 | path: 'payTicketLoser', |
| 659 | component: () => import('@/viewsPc/seat/payticketLoser.vue'), | 659 | component: () => import('@/viewsPc/seat/payticketLoser.vue'), |
| 660 | name: 'payTicketLoser', | 660 | name: 'payTicketLoser', |
| 661 | meta: {title: '支付失败'} | 661 | meta: { title: '支付失败' } |
| 662 | }, | 662 | } |
| 663 | ] | 663 | ] |
| 664 | } | 664 | } |
| 665 | ] | 665 | ] |
| ... | @@ -677,59 +677,59 @@ export const constantRoutes = [ | ... | @@ -677,59 +677,59 @@ export const constantRoutes = [ |
| 677 | path: 'payOk', | 677 | path: 'payOk', |
| 678 | component: () => import('@/viewsPc/match/payOk'), | 678 | component: () => import('@/viewsPc/match/payOk'), |
| 679 | name: 'payOk', | 679 | name: 'payOk', |
| 680 | meta: {title: '支付成功'} | 680 | meta: { title: '支付成功' } |
| 681 | }, | 681 | }, |
| 682 | 682 | ||
| 683 | { | 683 | { |
| 684 | path: 'commitDone/:orderId', | 684 | path: 'commitDone/:orderId', |
| 685 | component: () => import('@/viewsPc/match/commitDone'), | 685 | component: () => import('@/viewsPc/match/commitDone'), |
| 686 | name: 'commitDone', | 686 | name: 'commitDone', |
| 687 | meta: {title: '提交审核'} | 687 | meta: { title: '提交审核' } |
| 688 | }, | 688 | }, |
| 689 | { | 689 | { |
| 690 | path: 'pay', | 690 | path: 'pay', |
| 691 | component: () => import('@/viewsPc/match/pay'), | 691 | component: () => import('@/viewsPc/match/pay'), |
| 692 | name: 'signPay', | 692 | name: 'signPay', |
| 693 | meta: {title: '缴费清单'} | 693 | meta: { title: '缴费清单' } |
| 694 | }, | 694 | }, |
| 695 | { | 695 | { |
| 696 | path: 'list/:id/teamSign', | 696 | path: 'list/:id/teamSign', |
| 697 | component: () => import('@/viewsPc/match/teamSign'), | 697 | component: () => import('@/viewsPc/match/teamSign'), |
| 698 | name: 'teamSign', | 698 | name: 'teamSign', |
| 699 | meta: {title: '团队报名'} | 699 | meta: { title: '团队报名' } |
| 700 | }, | 700 | }, |
| 701 | { | 701 | { |
| 702 | path: 'list/:id/teamSignCn', | 702 | path: 'list/:id/teamSignCn', |
| 703 | component: () => import('@/viewsPc/match/teamSign_Cn'), | 703 | component: () => import('@/viewsPc/match/teamSign_Cn'), |
| 704 | name: 'teamSignCn', | 704 | name: 'teamSignCn', |
| 705 | meta: {title: '团队报名-国内赛'} | 705 | meta: { title: '团队报名-国内赛' } |
| 706 | }, | 706 | }, |
| 707 | { | 707 | { |
| 708 | path: 'list/:id/chooseCoach', | 708 | path: 'list/:id/chooseCoach', |
| 709 | component: () => import('@/viewsPc/match/chooseCoach'), | 709 | component: () => import('@/viewsPc/match/chooseCoach'), |
| 710 | name: 'chooseCoach', | 710 | name: 'chooseCoach', |
| 711 | meta: {title: '选择教练/领队/其他'} | 711 | meta: { title: '选择教练/领队/其他' } |
| 712 | }, | 712 | }, |
| 713 | { | 713 | { |
| 714 | path: 'list/:id/chooseSportsman', | 714 | path: 'list/:id/chooseSportsman', |
| 715 | component: () => import('@/viewsPc/match/chooseSportsman'), | 715 | component: () => import('@/viewsPc/match/chooseSportsman'), |
| 716 | name: 'chooseSportsman', | 716 | name: 'chooseSportsman', |
| 717 | meta: {title: '选择运动员'} | 717 | meta: { title: '选择运动员' } |
| 718 | }, | 718 | }, |
| 719 | { | 719 | { |
| 720 | path: 'list/:id/chooseProject', | 720 | path: 'list/:id/chooseProject', |
| 721 | component: () => import('@/viewsPc/match/chooseProject'), | 721 | component: () => import('@/viewsPc/match/chooseProject'), |
| 722 | name: 'chooseProject', | 722 | name: 'chooseProject', |
| 723 | meta: {title: '选择参赛项目'} | 723 | meta: { title: '选择参赛项目' } |
| 724 | }, | 724 | }, |
| 725 | { | 725 | { |
| 726 | path: 'list/:id/signPreview', | 726 | path: 'list/:id/signPreview', |
| 727 | component: () => import('@/viewsPc/match/signPreview'), | 727 | component: () => import('@/viewsPc/match/signPreview'), |
| 728 | name: 'signPreview', | 728 | name: 'signPreview', |
| 729 | meta: {title: '提交审核'} | 729 | meta: { title: '提交审核' } |
| 730 | } | 730 | } |
| 731 | ] | 731 | ] |
| 732 | }, | 732 | } |
| 733 | ] | 733 | ] |
| 734 | } | 734 | } |
| 735 | ] | 735 | ] |
| ... | @@ -742,11 +742,11 @@ const router = createRouter({ | ... | @@ -742,11 +742,11 @@ const router = createRouter({ |
| 742 | if (savedPosition) { | 742 | if (savedPosition) { |
| 743 | return savedPosition | 743 | return savedPosition |
| 744 | } else { | 744 | } else { |
| 745 | return {top: 0} | 745 | return { top: 0 } |
| 746 | } | 746 | } |
| 747 | } | 747 | } |
| 748 | }) | 748 | }) |
| 749 | NProgress.configure({showSpinner: false}) | 749 | NProgress.configure({ showSpinner: false }) |
| 750 | 750 | ||
| 751 | router.beforeEach((to, from, next) => { | 751 | router.beforeEach((to, from, next) => { |
| 752 | NProgress.start() | 752 | NProgress.start() |
| ... | @@ -760,7 +760,7 @@ router.beforeEach((to, from, next) => { | ... | @@ -760,7 +760,7 @@ router.beforeEach((to, from, next) => { |
| 760 | }).catch(err => { | 760 | }).catch(err => { |
| 761 | useUserStore().logOut().then(() => { | 761 | useUserStore().logOut().then(() => { |
| 762 | ElMessage.error(err) | 762 | ElMessage.error(err) |
| 763 | next({path: '/'}) | 763 | next({ path: '/' }) |
| 764 | }) | 764 | }) |
| 765 | }) | 765 | }) |
| 766 | } else { | 766 | } else { | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <div class="banner"> | 3 | <div class="banner"> |
| 4 | <h2>{{ language==0?'旅游服务':'Travel Service' }}</h2> | 4 | <h2>{{ language==0?'旅游服务':'Travel Service' }}</h2> |
| 5 | </div> | 5 | </div> |
| 6 | <div class="box"> | 6 | <div class="box"> |
| 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 v-model="query.name" :placeholder="language==0?'请输入关键字搜索':'Search'" class="no-border" /> |
| 9 | </el-input> | 9 | <el-button size="large" type="primary" class="btn-lineG" icon="search" @click="getList"> |
| 10 | <el-button size="large" type="primary" class="btn-lineG" icon="search" @click="getList"> | 10 | {{ language==0?'搜索':'Search' }}</el-button> |
| 11 | {{ language==0?'搜索':'Search' }}</el-button> | 11 | </div> |
| 12 | </div> | 12 | </div> |
| 13 | </div> | ||
| 14 | 13 | ||
| 15 | <div class="box" v-loading="loading"> | 14 | <div v-loading="loading" class="box"> |
| 16 | <el-row :gutter="20"> | 15 | <el-row :gutter="20"> |
| 17 | <el-col :lg="24" :md="24" :sm="24" :xs="24" :xl="24" v-for="(h,index) in list" class="mb20"> | 16 | <el-col |
| 18 | <el-card @click="goDetail(h)"> | 17 | v-for="(h,index) in list" :lg="24" :md="24" :sm="24" :xs="24" |
| 19 | <!-- 酒店列表--> | 18 | :xl="24" class="mb20" |
| 20 | <el-row class="hotel" align="middle" :gutter="20"> | 19 | > |
| 21 | <el-col :span="6"> | 20 | <el-card> |
| 22 | <div class="imgbox"> | 21 | <!-- 酒店列表--> |
| 23 | <img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])"/> | 22 | <el-row class="hotel" align="middle" :gutter="20"> |
| 24 | </div> | 23 | <el-col :span="6"> |
| 25 | </el-col> | 24 | <div class="imgbox"> |
| 26 | <el-col :span="12"> | 25 | <img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])"> |
| 27 | <h3 class="esp">{{h.name}}</h3> | 26 | </div> |
| 28 | <div class="starBox"> | 27 | </el-col> |
| 29 | <img v-for="i in Number(h.starLevel||0)" src="@/assets/booking/star.png"> | 28 | <el-col :span="12"> |
| 30 | </div> | 29 | <h3 class="esp">{{ h.name }}</h3> |
| 31 | <div class="tagbox esp"> | 30 | <div class="starBox"> |
| 32 | <span v-for="(t,index) in h.label?.split(',')" v-show="index<4">{{t}}</span> | 31 | <img v-for="i in Number(h.rank||0)" src="@/assets/booking/star.png"> |
| 33 | <a v-show="h.label?.split(',').length>4">{{ language==0?'更多':'MORE' }} ></a> | 32 | </div> |
| 34 | </div> | 33 | |
| 35 | <p class="esp addr mt20"> | 34 | <p class="esp addr mt20"> |
| 36 | <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"><LocationFilled /></el-icon> | 35 | <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"> |
| 37 | {{h.address}} | 36 | <Clock /> |
| 38 | </p> | 37 | </el-icon> |
| 39 | </el-col> | 38 | <span class="ml5">{{ language == 0 ? '开园时间' : 'Opening Time' }}:{{ h.startTime }} ~ {{ h.workTime }}</span> |
| 40 | <el-col :span="4" class="text-right"> | 39 | </p> |
| 41 | <div class="price">{{ language==0?'¥':'€' }}<span>{{ h.price }}</span> | 40 | <p class="esp addr mt20"> |
| 42 | <i v-if="language==0">起</i> | 41 | <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"><LocationFilled /></el-icon> |
| 43 | </div> | 42 | {{ h.address }} |
| 44 | <el-button class="btn-lineG w200px" round type="primary" >{{ language==0?'立即预订':'Select' }} ⇀</el-button> | 43 | </p> |
| 45 | </el-col> | 44 | </el-col> |
| 46 | </el-row> | 45 | <el-col :span="4" class="text-right"> |
| 47 | </el-card> | 46 | <div class="price">{{ language==0?'¥':'€' }}<span>{{ h.price }}</span> |
| 48 | </el-col> | 47 | <i v-if="language==0">起</i> |
| 49 | </el-row> | 48 | </div> |
| 50 | <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description="" /> | 49 | <el-button class="btn-lineG w200px" round type="primary" @click="goDetail(h)">{{ language==0?'立即预订':'Select' }} ⇀</el-button> |
| 51 | <div style="height: 50px"></div> | 50 | </el-col> |
| 51 | </el-row> | ||
| 52 | </el-card> | ||
| 53 | </el-col> | ||
| 54 | </el-row> | ||
| 55 | <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description="" /> | ||
| 56 | <div style="height: 50px" /> | ||
| 57 | </div> | ||
| 52 | </div> | 58 | </div> |
| 53 | </div> | ||
| 54 | </template> | 59 | </template> |
| 55 | 60 | ||
| 56 | <script setup> | 61 | <script setup> |
| 57 | import {onMounted} from "@vue/runtime-core" | 62 | import { onMounted } from '@vue/runtime-core' |
| 58 | import * as booking from "@/apiPc/booking" | 63 | import * as booking from '@/apiPc/booking' |
| 59 | import {useRouter,useRoute} from "vue-router"; | 64 | import { useRouter, useRoute } from 'vue-router' |
| 60 | import {useStorage} from "@vueuse/core/index"; | 65 | import { useStorage } from '@vueuse/core/index' |
| 61 | import useUserStore from "@/store/modules/user"; | 66 | import useUserStore from '@/store/modules/user' |
| 62 | const router = useRouter() | ||
| 63 | const route = useRoute() | ||
| 64 | const user = useUserStore().user | ||
| 65 | const useStore = useUserStore | ||
| 66 | const language= useStorage('language',0) | ||
| 67 | const query = ref({ | ||
| 68 | name:'' | ||
| 69 | }) | ||
| 70 | const cptId = ref('') | ||
| 71 | const list = ref([]) | ||
| 72 | const loading = ref(false) | ||
| 73 | onMounted(()=>{ | ||
| 74 | query.value.activityId = route.params.cptId | ||
| 75 | getList() | ||
| 76 | }) | ||
| 77 | 67 | ||
| 78 | function getList() { | 68 | const router = useRouter() |
| 79 | loading.value = true | 69 | const route = useRoute() |
| 80 | booking.getHotelList(query.value).then(res=>{ | 70 | const user = useUserStore().user |
| 81 | list.value = res.rows | 71 | const useStore = useUserStore |
| 82 | loading.value = false | 72 | const language = useStorage('language', 0) |
| 83 | console.log(list.value) | 73 | const query = ref({ |
| 74 | name: '' | ||
| 75 | }) | ||
| 76 | const cptId = ref('') | ||
| 77 | const list = ref([]) | ||
| 78 | const loading = ref(false) | ||
| 79 | onMounted(() => { | ||
| 80 | query.value.activityId = route.params.cptId | ||
| 81 | getList() | ||
| 82 | }) | ||
| 84 | 83 | ||
| 85 | }).catch(e=>{ | 84 | function getList() { |
| 86 | loading.value = false | 85 | loading.value = true |
| 87 | }) | 86 | booking.getScenicList(query.value).then(res => { |
| 87 | list.value = res.rows | ||
| 88 | loading.value = false | ||
| 89 | console.log(list.value) | ||
| 90 | }).catch(e => { | ||
| 91 | loading.value = false | ||
| 92 | }) | ||
| 93 | } | ||
| 94 | function goDetail(item) { | ||
| 95 | if (!user) { | ||
| 96 | useStore().setVisitor() | ||
| 97 | return | ||
| 88 | } | 98 | } |
| 89 | function goDetail(item) { | 99 | router.push({ |
| 90 | if(!user){ | 100 | name: 'travelDetail', |
| 91 | useStore().setVisitor() | 101 | params: { |
| 92 | return | 102 | scenicId: item.scenicId |
| 103 | }, | ||
| 104 | query: { | ||
| 105 | lasId: item.id | ||
| 93 | } | 106 | } |
| 94 | router.push({ | 107 | }) |
| 95 | name:'travelDetail', | 108 | } |
| 96 | params:{ | ||
| 97 | hotelId:item.hotelId, | ||
| 98 | }, | ||
| 99 | query:{ | ||
| 100 | id:item.id | ||
| 101 | } | ||
| 102 | |||
| 103 | }) | ||
| 104 | } | ||
| 105 | </script> | 109 | </script> |
| 106 | 110 | ||
| 107 | <style scoped lang="scss"> | 111 | <style scoped lang="scss"> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <div class="box"> | 3 | <div class="box"> |
| 4 | <el-card class="mt30" v-loading="loading"> | 4 | <el-card v-loading="loading" class="mt30"> |
| 5 | <el-row v-if="form" class="hotel" align="middle" :gutter="20"> | 5 | <el-row v-if="form" class="hotel" align="middle" :gutter="20"> |
| 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])"/>--> |
| ... | @@ -9,57 +9,56 @@ | ... | @@ -9,57 +9,56 @@ |
| 9 | <el-col :span="language == 0?16:24"> | 9 | <el-col :span="language == 0?16:24"> |
| 10 | <h3 class="esp flex">{{ form?.name }} | 10 | <h3 class="esp flex">{{ form?.name }} |
| 11 | 11 | ||
| 12 | <el-tag class="ml10">5A</el-tag> | 12 | <div class="starBox ml20"> |
| 13 | <img v-for="i in Number(form?.rank||0)" src="@/assets/booking/star.png"> | ||
| 14 | </div> | ||
| 13 | </h3> | 15 | </h3> |
| 14 | 16 | ||
| 15 | <div class="tagbox"> | 17 | <!-- <div class="tagbox">--> |
| 16 | <span v-for="(t,index) in form?.label?.split(',')" v-show="index<4">{{ t }}</span> | 18 | <!-- <span v-for="(t,index) in form?.label?.split(',')" v-show="index<4">{{ t }}</span>--> |
| 17 | <a v-show="form?.label?.split(',').length>4">{{ language == 0 ? '更多' : 'MORE' }} ></a> | 19 | <!-- <a v-show="form?.label?.split(',').length>4">{{ language == 0 ? '更多' : 'MORE' }} ></a>--> |
| 18 | </div> | 20 | <!-- </div>--> |
| 19 | <div class="info"> | 21 | <div class="info"> |
| 20 | <el-icon> | 22 | <el-icon> |
| 21 | <Clock/> | 23 | <Clock /> |
| 22 | </el-icon> | 24 | </el-icon> |
| 23 | <span class="mr10">{{ language == 0 ? '开园时间' : 'Opening Time' }}:{{ form?.checkInTime }} ~ {{ form?.checkOutTime }}</span> | 25 | <span class="mr10">{{ language == 0 ? '开园时间' : 'Opening Time' }}:{{ form?.startTime }} ~ {{ form?.workTime }}</span> |
| 24 | </div> | 26 | </div> |
| 25 | <div class="info"> | 27 | <div class="info"> |
| 26 | <el-icon> | 28 | <el-icon> |
| 27 | <Phone/> | 29 | <Phone /> |
| 28 | </el-icon> | 30 | </el-icon> |
| 29 | <span class="mr10">{{ language == 0 ? '联系方式' : 'Contact' }}:0510-12345678</span> | 31 | <span class="mr10">{{ language == 0 ? '联系方式' : 'Contact' }}:{{ form?.contact }}</span> |
| 30 | </div> | 32 | </div> |
| 31 | <div class="info esp"> | 33 | <div class="info esp"> |
| 32 | <el-icon> | 34 | <el-icon> |
| 33 | <MapLocation/> | 35 | <MapLocation /> |
| 34 | </el-icon> | 36 | </el-icon> |
| 35 | <span>{{ form?.addName }}</span> | 37 | <span>{{ form?.address }}</span> |
| 36 | </div> | 38 | </div> |
| 37 | <div v-if="form?.introduction" class="info pointer"> | 39 | <div v-if="form?.introduction" class="info pointer"> |
| 38 | <div :class="showAll?'':'esp_2'" @click="showAll=!showAll" v-html="form.introduction.toString()"></div> | 40 | <div :class="showAll?'':'esp_2'" @click="showAll=!showAll" v-html="form.introduction.toString()" /> |
| 39 | </div> | ||
| 40 | </el-col> | ||
| 41 | <el-col :span="8" class="text-right" v-if="language == 0"> | ||
| 42 | <div class="mapBox" @click="goMap"> | ||
| 43 | <div id="map"></div> | ||
| 44 | </div> | 41 | </div> |
| 45 | </el-col> | 42 | </el-col> |
| 46 | </el-row> | 43 | </el-row> |
| 47 | <el-empty v-else :image="`/img/order_no.png`" :image-size="228" description=""/> | 44 | <el-empty v-else :image="`/img/order_no.png`" :image-size="228" description="" /> |
| 48 | </el-card> | 45 | </el-card> |
| 49 | 46 | ||
| 50 | <div class="mt30"> | 47 | <div class="mt30"> |
| 51 | <el-row :gutter="20"> | 48 | <el-row :gutter="20"> |
| 52 | <el-col :span="10"> | 49 | <el-col :span="10"> |
| 53 | <div class="imgbox hotelImg"> | 50 | <div class="imgbox hotelImg"> |
| 54 | <el-image :src="fillImgUrl(form?.photos?.split(',')[0])" fit="cover" | 51 | <el-image |
| 55 | :preview-src-list="form?.photos?.split(',')"/> | 52 | :src="fillImgUrl(form?.photos?.split(',')[0])" fit="cover" |
| 53 | :preview-src-list="form?.photos?.split(',')" | ||
| 54 | /> | ||
| 56 | </div> | 55 | </div> |
| 57 | </el-col> | 56 | </el-col> |
| 58 | <el-col :span="14"> | 57 | <el-col :span="14"> |
| 59 | <el-row class="h100" :gutter="20"> | 58 | <el-row class="h100" :gutter="20"> |
| 60 | <el-col :span="8" class="oddmb" v-for="(p,index) in form?.photos?.split(',').slice(1,7)"> | 59 | <el-col v-for="(p,index) in form?.photos?.split(',').slice(1,7)" :key="index" :span="8" class="oddmb"> |
| 61 | <div class="imgbox hotelImg"> | 60 | <div class="imgbox hotelImg"> |
| 62 | <el-image :src="fillImgUrl(p)" fit="cover"/> | 61 | <el-image :src="fillImgUrl(p)" fit="cover" /> |
| 63 | </div> | 62 | </div> |
| 64 | </el-col> | 63 | </el-col> |
| 65 | </el-row> | 64 | </el-row> |
| ... | @@ -76,14 +75,13 @@ | ... | @@ -76,14 +75,13 @@ |
| 76 | </ul> | 75 | </ul> |
| 77 | </div> | 76 | </div> |
| 78 | <div> | 77 | <div> |
| 79 | <!-- 日期--> | 78 | <!-- 日期--> |
| 80 | <el-calendar class="mt20" v-model="currentDate" :range="calendarRange"> | 79 | <el-calendar v-model="currentDate" class="mt20" :range="calendarRange"> |
| 81 | <template #header="{date}"> | 80 | <template #header="{date}"> |
| 82 | <el-row style="width: 100%"> | 81 | <el-row style="width: 100%"> |
| 83 | <el-col :lg="7" class="forPc"> | 82 | <el-col :lg="7" class="forPc" /> |
| 84 | </el-col> | ||
| 85 | <el-col :lg="10" class="forPc"> | 83 | <el-col :lg="10" class="forPc"> |
| 86 | <el-row justify="center" align='middle'> | 84 | <el-row justify="center" align="middle"> |
| 87 | <!-- <div class="canBtn"><el-icon><ArrowLeftBold /></el-icon></div>--> | 85 | <!-- <div class="canBtn"><el-icon><ArrowLeftBold /></el-icon></div>--> |
| 88 | <div class="cTitle"> | 86 | <div class="cTitle"> |
| 89 | <!-- <el-date-picker--> | 87 | <!-- <el-date-picker--> |
| ... | @@ -98,7 +96,7 @@ | ... | @@ -98,7 +96,7 @@ |
| 98 | <!-- @change="changee"--> | 96 | <!-- @change="changee"--> |
| 99 | <!-- />--> | 97 | <!-- />--> |
| 100 | <!-- <el-input readonly :value="date" type="text" size="small" style="width: 280px"></el-input>--> | 98 | <!-- <el-input readonly :value="date" type="text" size="small" style="width: 280px"></el-input>--> |
| 101 | {{date}} | 99 | {{ date }} |
| 102 | </div> | 100 | </div> |
| 103 | <!-- <div class="canBtn"><el-icon><ArrowRightBold /></el-icon></div>--> | 101 | <!-- <div class="canBtn"><el-icon><ArrowRightBold /></el-icon></div>--> |
| 104 | </el-row> | 102 | </el-row> |
| ... | @@ -106,20 +104,20 @@ | ... | @@ -106,20 +104,20 @@ |
| 106 | <el-col :lg="7" :xs="24"> | 104 | <el-col :lg="7" :xs="24"> |
| 107 | <div style="text-align: right;padding-right: 10px"> | 105 | <div style="text-align: right;padding-right: 10px"> |
| 108 | <el-date-picker | 106 | <el-date-picker |
| 109 | v-model="currentDate1" | 107 | v-model="currentDate1" |
| 110 | type="date" | 108 | type="date" |
| 111 | placeholder="YYYY-MM-DD" | 109 | placeholder="YYYY-MM-DD" |
| 112 | format="YYYY-MM-DD" | 110 | format="YYYY-MM-DD" |
| 113 | @change="dateChange" | 111 | :disabled-date="disabledDateRZ" |
| 114 | :disabled-date="disabledDateRZ" | 112 | :clearable="false" |
| 115 | :clearable='false' | 113 | @change="dateChange" |
| 116 | /> | 114 | /> |
| 117 | </div> | 115 | </div> |
| 118 | </el-col> | 116 | </el-col> |
| 119 | </el-row> | 117 | </el-row> |
| 120 | </template> | 118 | </template> |
| 121 | <template #date-cell="data"> | 119 | <template #date-cell="data"> |
| 122 | <div :class="data.data.day==query.currentDate?'primaryDate date':'date'" @click="selectDate(data.data.day)"> | 120 | <div :class="data.data.day==query.currentDate?'primaryDate date':'date'" @click="selectDate(data.data.day)"> |
| 123 | {{ data.data.day.slice(8, 10) }} | 121 | {{ data.data.day.slice(8, 10) }} |
| 124 | </div> | 122 | </div> |
| 125 | </template> | 123 | </template> |
| ... | @@ -127,8 +125,10 @@ | ... | @@ -127,8 +125,10 @@ |
| 127 | </div> | 125 | </div> |
| 128 | 126 | ||
| 129 | <div class="text-center mt30"> | 127 | <div class="text-center mt30"> |
| 130 | <el-button style="color: #fff" :disabled="!hotTime" size="large" | 128 | <el-button |
| 131 | class="w200px btn-lineG" :class="{'forbid':!(!hotTime[0])}" round @click="goOrder"> | 129 | style="color: #fff" :disabled="btnDisable" size="large" |
| 130 | class="w200px btn-lineG" :class="{'forbid':!(!hotTime[0])}" round @click="goOrder" | ||
| 131 | > | ||
| 132 | {{ language==0?'立即预订':'BOOK NOW' }} | 132 | {{ language==0?'立即预订':'BOOK NOW' }} |
| 133 | </el-button> | 133 | </el-button> |
| 134 | </div> | 134 | </div> |
| ... | @@ -138,21 +138,21 @@ | ... | @@ -138,21 +138,21 @@ |
| 138 | </template> | 138 | </template> |
| 139 | 139 | ||
| 140 | <script setup> | 140 | <script setup> |
| 141 | import {useRouter} from "vue-router"; | 141 | import { useRouter } from 'vue-router' |
| 142 | import {ref, reactive, onMounted, getCurrentInstance} from "vue"; | 142 | import { ref, reactive, onMounted, getCurrentInstance, computed } from 'vue' |
| 143 | import {useRoute} from "vue-router"; | 143 | import { useRoute } from 'vue-router' |
| 144 | import {dayjs} from 'element-plus' | 144 | import { dayjs } from 'element-plus' |
| 145 | import {getHotelById, getHotelRooms, checkRoomPayByUserId} from "@/apiPc/booking" | 145 | import { getHotelById, getHotelRooms, checkRoomPayByUserId, getScenicById, checkOrderPay } from '@/apiPc/booking' |
| 146 | import {getBaseInfoByActiveId} from "@/apiPc/booking"; | 146 | import { getBaseInfoByActiveId } from '@/apiPc/booking' |
| 147 | 147 | ||
| 148 | const {proxy} = getCurrentInstance() | 148 | const { proxy } = getCurrentInstance() |
| 149 | 149 | ||
| 150 | import {useStorage} from "@vueuse/core/index"; | 150 | import { useStorage } from '@vueuse/core/index' |
| 151 | import useUserStore from "@/store/modules/user"; | 151 | import useUserStore from '@/store/modules/user' |
| 152 | import {ElMessageBox} from "element-plus"; | 152 | import { ElMessageBox } from 'element-plus' |
| 153 | const currentDate = ref(new Date()) | 153 | const currentDate = ref(new Date()) |
| 154 | const currentDate1 = ref(new Date()) | 154 | const currentDate1 = ref(new Date()) |
| 155 | const calendarRange = ref([dayjs(currentDate.value).toDate(),(dayjs(currentDate.value).toDate())]) | 155 | const calendarRange = ref([dayjs(currentDate.value).toDate(), (dayjs(currentDate.value).toDate())]) |
| 156 | 156 | ||
| 157 | const user = useUserStore().user | 157 | const user = useUserStore().user |
| 158 | const useStore = useUserStore | 158 | const useStore = useUserStore |
| ... | @@ -161,7 +161,7 @@ const router = useRouter() | ... | @@ -161,7 +161,7 @@ const router = useRouter() |
| 161 | const route = useRoute() | 161 | const route = useRoute() |
| 162 | const form = ref({}) | 162 | const form = ref({}) |
| 163 | const query = ref({ | 163 | const query = ref({ |
| 164 | hotelId: route.query.id | 164 | lasId: route.query.lasId |
| 165 | }) | 165 | }) |
| 166 | const hotTime = ref([]) | 166 | const hotTime = ref([]) |
| 167 | const showAll = ref(false) | 167 | const showAll = ref(false) |
| ... | @@ -170,7 +170,7 @@ const roomList = ref([]) | ... | @@ -170,7 +170,7 @@ const roomList = ref([]) |
| 170 | const map = ref(null) | 170 | const map = ref(null) |
| 171 | const formTime = ref({}) | 171 | const formTime = ref({}) |
| 172 | 172 | ||
| 173 | let baseHotTime; | 173 | let baseHotTime |
| 174 | 174 | ||
| 175 | onMounted(() => { | 175 | onMounted(() => { |
| 176 | console.log(route.params) | 176 | console.log(route.params) |
| ... | @@ -185,7 +185,6 @@ onMounted(() => { | ... | @@ -185,7 +185,6 @@ onMounted(() => { |
| 185 | 185 | ||
| 186 | getData() | 186 | getData() |
| 187 | }) | 187 | }) |
| 188 | |||
| 189 | }) | 188 | }) |
| 190 | 189 | ||
| 191 | function initTime() { | 190 | function initTime() { |
| ... | @@ -197,13 +196,9 @@ function initTime() { | ... | @@ -197,13 +196,9 @@ function initTime() { |
| 197 | 196 | ||
| 198 | function getDateTime() { | 197 | function getDateTime() { |
| 199 | if (formTime.value) { | 198 | if (formTime.value) { |
| 200 | if (dayjs().isBefore(dayjs(formTime.value.hqStart))) { | 199 | if (dayjs().isBefore(dayjs(formTime.value.scenicStart))) { |
| 201 | // hotTime.value[0]=dayjs(formTime.value.hqStart).format('YYYY-MM-DD') | 200 | baseHotTime = [dayjs(formTime.value.scenicStart).format('YYYY-MM-DD'), dayjs(formTime.value.scenicStart).add(1, 'day').format('YYYY-MM-DD')] |
| 202 | // hotTime.value[1]=dayjs(formTime.value.hqStart).add(1,'day').format('YYYY-MM-DD') | ||
| 203 | baseHotTime = [dayjs(formTime.value.hqStart).format('YYYY-MM-DD'), dayjs(formTime.value.hqStart).add(1, 'day').format('YYYY-MM-DD')] | ||
| 204 | } else { | 201 | } else { |
| 205 | // hotTime.value[0]=dayjs().format('YYYY-MM-DD') | ||
| 206 | // hotTime.value[1]=dayjs().add(1,'day').format('YYYY-MM-DD') | ||
| 207 | baseHotTime = [dayjs().format('YYYY-MM-DD'), dayjs().add(1, 'day').format('YYYY-MM-DD')] | 202 | baseHotTime = [dayjs().format('YYYY-MM-DD'), dayjs().add(1, 'day').format('YYYY-MM-DD')] |
| 208 | } | 203 | } |
| 209 | } | 204 | } |
| ... | @@ -211,92 +206,107 @@ function getDateTime() { | ... | @@ -211,92 +206,107 @@ function getDateTime() { |
| 211 | 206 | ||
| 212 | function getData() { | 207 | function getData() { |
| 213 | loading.value = true | 208 | loading.value = true |
| 214 | getHotelById(route.params.hotelId).then(res => { | 209 | getScenicById(route.params.scenicId).then(res => { |
| 215 | loading.value = false | 210 | loading.value = false |
| 216 | form.value = res.data | 211 | form.value = res.data |
| 217 | initMap() | 212 | // initMap() |
| 218 | }).catch(err => { | 213 | }).catch(err => { |
| 219 | console.log(err) | 214 | console.log(err) |
| 220 | }) | 215 | }) |
| 221 | } | 216 | } |
| 222 | function dateChange(){ | 217 | function dateChange() { |
| 223 | currentDate.value=currentDate1.value | 218 | currentDate.value = currentDate1.value |
| 224 | calendarRange.value=[dayjs(currentDate.value).toDate(),(dayjs(currentDate.value).toDate())] | 219 | calendarRange.value = [dayjs(currentDate.value).toDate(), (dayjs(currentDate.value).toDate())] |
| 225 | } | 220 | } |
| 226 | 221 | ||
| 227 | function selectDate(date) { | 222 | function selectDate(date) { |
| 228 | currentDate1.value= currentDate.value=dayjs(date).toDate() | 223 | currentDate1.value = currentDate.value = dayjs(date).toDate() |
| 229 | console.log(date) | 224 | console.log(date) |
| 230 | } | 225 | } |
| 226 | |||
| 227 | const btnDisable = computed(() => { | ||
| 228 | if (formTime.value.scenicStart) { | ||
| 229 | const curr = currentDate.value.valueOf() | ||
| 230 | const today = dayjs(dayjs().format('YYYY-MM-DD')).valueOf() | ||
| 231 | const start = dayjs(formTime.value.scenicStart).valueOf() | ||
| 232 | const end = dayjs(formTime.value.scenicEnd).valueOf() | ||
| 233 | if (curr >= start && curr <= end && curr >= today) { | ||
| 234 | return false | ||
| 235 | } | ||
| 236 | } | ||
| 237 | return true | ||
| 238 | }) | ||
| 239 | |||
| 240 | |||
| 231 | function initMap() { | 241 | function initMap() { |
| 232 | // const TMap = (window as any).TMap | 242 | // const TMap = (window as any).TMap |
| 233 | var center = new TMap.LatLng(form.value.latitude, form.value.longitude);//设置中心点坐标' | 243 | var center = new TMap.LatLng(form.value.latitude, form.value.longitude)// 设置中心点坐标' |
| 234 | var map = new TMap.Map("map", { | 244 | var map = new TMap.Map('map', { |
| 235 | center: center,//设置地图中心点坐标 | 245 | center: center, // 设置地图中心点坐标 |
| 236 | zoom: 17, //设置地图缩放级别 | 246 | zoom: 17 // 设置地图缩放级别 |
| 237 | }); | 247 | }) |
| 238 | var infoWindowLocation = new TMap.LatLng(form.value.latitude, form.value.longitude);//创建一个坐标 | 248 | var infoWindowLocation = new TMap.LatLng(form.value.latitude, form.value.longitude)// 创建一个坐标 |
| 239 | //创建InfoWindow实例,并进行初始化 | 249 | // 创建InfoWindow实例,并进行初始化 |
| 240 | var infowindow = new TMap.InfoWindow({ | 250 | var infowindow = new TMap.InfoWindow({ |
| 241 | content: form.value.address, //信息窗口内容 | 251 | content: form.value.address, // 信息窗口内容 |
| 242 | position: infoWindowLocation,//显示信息窗口的坐标 | 252 | position: infoWindowLocation, // 显示信息窗口的坐标 |
| 243 | map: map, | 253 | map: map, |
| 244 | offset: {x: 0, y: -32} | 254 | offset: { x: 0, y: -32 } |
| 245 | }); | 255 | }) |
| 246 | infowindow.close(); | 256 | infowindow.close() |
| 247 | var marker = new TMap.MultiMarker({ | 257 | var marker = new TMap.MultiMarker({ |
| 248 | map: map, | 258 | map: map, |
| 249 | //样式定义 | 259 | // 样式定义 |
| 250 | styles: { | 260 | styles: { |
| 251 | "myStyle": new TMap.MarkerStyle({ | 261 | 'myStyle': new TMap.MarkerStyle({ |
| 252 | "anchor": {x: 16, y: 32} | 262 | 'anchor': { x: 16, y: 32 } |
| 253 | }) | 263 | }) |
| 254 | }, | 264 | }, |
| 255 | //点标记数据数组 | 265 | // 点标记数据数组 |
| 256 | geometries: [{ | 266 | geometries: [{ |
| 257 | "id": "1", //点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id | 267 | 'id': '1', // 点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id |
| 258 | // "styleId": 'myStyle', //指定样式id | 268 | // "styleId": 'myStyle', //指定样式id |
| 259 | "position": new TMap.LatLng(form.value.latitude, form.value.longitude), //点标记坐标位置 | 269 | 'position': new TMap.LatLng(form.value.latitude, form.value.longitude), // 点标记坐标位置 |
| 260 | "properties": {//自定义属性 | 270 | 'properties': { // 自定义属性 |
| 261 | "title": form.value.name | 271 | 'title': form.value.name |
| 262 | } | 272 | } |
| 263 | } | 273 | } |
| 264 | ] | 274 | ] |
| 265 | }) | 275 | }) |
| 266 | marker.on("click", function (evt) { | 276 | marker.on('click', function(evt) { |
| 267 | //设置infoWindow | 277 | // 设置infoWindow |
| 268 | infowindow.open(); //打开信息窗 | 278 | infowindow.open() // 打开信息窗 |
| 269 | infowindow.setPosition(evt.geometry.position);//设置信息窗位置 | 279 | infowindow.setPosition(evt.geometry.position)// 设置信息窗位置 |
| 270 | }) | 280 | }) |
| 271 | } | 281 | } |
| 272 | 282 | ||
| 273 | function goOrder(room) { | 283 | function goOrder(room) { |
| 274 | if(!hotTime.value){ | 284 | // if (!hotTime.value) { |
| 275 | proxy.$modal.msgError(language.value == 0 ?'请先选择出发日期':'Please choose the date of check-in first') | 285 | // proxy.$modal.msgError(language.value == 0 ? '请先选择出发日期' : 'Please choose the date of check-in first') |
| 276 | return | 286 | // return |
| 277 | } | 287 | // } |
| 278 | if(room.useCount<=0){ | 288 | // if (room.useCount <= 0) { |
| 279 | ElMessageBox.confirm(language.value == 0 ? `您当前选择的日期是${hotTime.value[0]}至 ${hotTime.value[1]},该时间段暂无可预订房间,请选择其他日期` : | 289 | // ElMessageBox.confirm(language.value == 0 ? `您当前选择的日期是${hotTime.value[0]}至 ${hotTime.value[1]},该时间段暂无可预订房间,请选择其他日期` |
| 280 | `You currently select the check-in date of ${hotTime.value[0]} to ${hotTime.value[1]}, there is no room available for booking at this time period, please choose another date`, {type: 'warning'}).then({ | 290 | // : `You currently select the check-in date of ${hotTime.value[0]} to ${hotTime.value[1]}, there is no room available for booking at this time period, please choose another date`, { type: 'warning' }).then({ |
| 281 | 291 | // | |
| 282 | }) | 292 | // }) |
| 283 | return | 293 | // return |
| 284 | } | 294 | // } |
| 285 | ElMessageBox.confirm(language.value == 0 ? `你当前选择的出行日期为${dayjs(currentDate.value).format('YYYY-MM-DD')}是否确定?` : `Your current check-in time is ${dayjs(currentDate.value).format('YYYY-MM-DD')} Are you sure?`, {type: 'warning'}).then({}).then(() => { | 295 | ElMessageBox.confirm(language.value == 0 ? `你当前选择的出行日期为${dayjs(currentDate.value).format('YYYY-MM-DD')}是否确定?` : `Your current check-in time is ${dayjs(currentDate.value).format('YYYY-MM-DD')} Are you sure?`, { type: 'warning' }).then({}).then(() => { |
| 286 | checkRoomPayByUserId(room.hotelId).then(res => { | 296 | checkOrderPay(6).then(res => { |
| 287 | if (res.data == -100) { | 297 | if (res.data == -100) { |
| 288 | ElMessageBox.confirm( | 298 | ElMessageBox.confirm( |
| 289 | language.value == 0 ? '你有未支付的旅游预订,是否前往个人中心查看' : 'You already have an unpaid travel order, do you want to go to the personal center to check it?', | 299 | language.value == 0 ? '你有未支付的旅游预订,是否前往个人中心查看' : 'You already have an unpaid travel order, do you want to go to the personal center to check it?', |
| 290 | language.value == 0 ? '提示' : 'Warning', | 300 | language.value == 0 ? '提示' : 'Warning', |
| 291 | { | 301 | { |
| 292 | confirmButtonText: language.value == 1 ? 'Go My Reservation ' : '前往我的预订', | 302 | confirmButtonText: language.value == 1 ? 'Go My Reservation ' : '前往我的预订', |
| 293 | // cancelButtonText: language.value==1?'Continue to book':'继续预订', | 303 | // cancelButtonText: language.value==1?'Continue to book':'继续预订', |
| 294 | type: 'warning', | 304 | type: 'warning' |
| 295 | } | 305 | } |
| 296 | ).then((res) => { | 306 | ).then((res) => { |
| 297 | console.log(res) | 307 | console.log(res) |
| 298 | router.push({ | 308 | router.push({ |
| 299 | name: 'myReservation', | 309 | name: 'myReservation' |
| 300 | }) | 310 | }) |
| 301 | }) | 311 | }) |
| 302 | return | 312 | return |
| ... | @@ -304,19 +314,16 @@ function goOrder(room) { | ... | @@ -304,19 +314,16 @@ function goOrder(room) { |
| 304 | goNext() | 314 | goNext() |
| 305 | }) | 315 | }) |
| 306 | }) | 316 | }) |
| 307 | |||
| 308 | |||
| 309 | } | 317 | } |
| 310 | 318 | ||
| 311 | function goNext() { | 319 | function goNext() { |
| 312 | router.push({ | 320 | router.push({ |
| 313 | name: 'travelOrder', | 321 | name: 'travelOrder', |
| 314 | params: { | 322 | params: { |
| 315 | roomId: 0 | 323 | start: dayjs(currentDate.value).format('YYYY-MM-DD') |
| 316 | }, | 324 | }, |
| 317 | query: { | 325 | query: { |
| 318 | hotelName: form.value.name, | 326 | lasId: query.value.id |
| 319 | start:currentDate.value | ||
| 320 | } | 327 | } |
| 321 | }) | 328 | }) |
| 322 | } | 329 | } |
| ... | @@ -335,13 +342,13 @@ function getDaysBetween() { | ... | @@ -335,13 +342,13 @@ function getDaysBetween() { |
| 335 | } | 342 | } |
| 336 | 343 | ||
| 337 | function disabledDateRZ(date) { | 344 | function disabledDateRZ(date) { |
| 338 | //判读今天大与form.value.hqStart | 345 | // 判读今天大与form.value.hqStart |
| 339 | if (formTime.value.hqStart) { | 346 | if (formTime.value.scenicStart) { |
| 340 | const today = dayjs().format('YYYY-MM-DD') | 347 | const today = dayjs().format('YYYY-MM-DD') |
| 341 | if (formTime.value.hqStart < today) { | 348 | if (formTime.value.scenicStart < today) { |
| 342 | return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs(formTime.value.hqEnd).valueOf())) | 349 | return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs(formTime.value.scenicEnd).valueOf())) |
| 343 | } else { | 350 | } else { |
| 344 | return !((date.getTime() >= dayjs(formTime.value.hqStart).valueOf()) && (date.getTime() <= dayjs(formTime.value.hqEnd).valueOf())) | 351 | return !((date.getTime() >= dayjs(formTime.value.scenicStart).valueOf()) && (date.getTime() <= dayjs(formTime.value.scenicEnd).valueOf())) |
| 345 | } | 352 | } |
| 346 | } | 353 | } |
| 347 | // return true | 354 | // return true |
| ... | @@ -352,8 +359,8 @@ function goMap() { | ... | @@ -352,8 +359,8 @@ function goMap() { |
| 352 | // var tencentMapUrl = "https://map.qq.com/"; | 359 | // var tencentMapUrl = "https://map.qq.com/"; |
| 353 | // window.location.href = tencentMapUrl; | 360 | // window.location.href = tencentMapUrl; |
| 354 | var url = `https://map.qq.com/?type=gcj02&lat=${form.value.latitude}&lng=${form.value.longitude}` | 361 | var url = `https://map.qq.com/?type=gcj02&lat=${form.value.latitude}&lng=${form.value.longitude}` |
| 355 | var mapUrl_tx = "http://apis.map.qq.com/uri/v1/marker?marker=coord:" + form.value.latitude + "," + form.value.longitude + "&referer=yellowpage"; | 362 | var mapUrl_tx = 'http://apis.map.qq.com/uri/v1/marker?marker=coord:' + form.value.latitude + ',' + form.value.longitude + '&referer=yellowpage' |
| 356 | window.open(url, "_blank") | 363 | window.open(url, '_blank') |
| 357 | } | 364 | } |
| 358 | 365 | ||
| 359 | </script> | 366 | </script> | ... | ... |
| ... | @@ -9,60 +9,91 @@ | ... | @@ -9,60 +9,91 @@ |
| 9 | <el-row class="pd20" :gutter="20"> | 9 | <el-row class="pd20" :gutter="20"> |
| 10 | <el-col :span="14"> | 10 | <el-col :span="14"> |
| 11 | <div class="border-info"> | 11 | <div class="border-info"> |
| 12 | <h3>{{ hotelName }}</h3> | 12 | <el-row class="hotel" align="middle" :gutter="20"> |
| 13 | <div class="roomType">{{ room.roomType }}</div> | 13 | <!-- <el-col :span="6">--> |
| 14 | <div class="room"> | 14 | <!-- <img class="w100" :src="fillImgUrl(form.photos?.split(',')[0])"/>--> |
| 15 | <span>{{ room.bedType }}</span> | 15 | <!-- </el-col>--> |
| 16 | </div> | 16 | <el-col :span="language == 0?16:24"> |
| 17 | <h3 class="esp flex">{{ scenicItem?.name }} | ||
| 18 | |||
| 19 | <div class="starBox ml20"> | ||
| 20 | <img v-for="i in Number(scenicItem?.rank||0)" src="@/assets/booking/star.png"> | ||
| 21 | </div> | ||
| 22 | </h3> | ||
| 23 | <div class="info"> | ||
| 24 | <el-icon> | ||
| 25 | <Clock /> | ||
| 26 | </el-icon> | ||
| 27 | <span class="mr10">{{ language == 0 ? '开园时间' : 'Opening Time' }}:{{ scenicItem?.startTime }} ~ {{ scenicItem?.workTime }}</span> | ||
| 28 | </div> | ||
| 29 | <div class="info"> | ||
| 30 | <el-icon> | ||
| 31 | <Phone /> | ||
| 32 | </el-icon> | ||
| 33 | <span class="mr10">{{ language == 0 ? '联系方式' : 'Contact' }}:{{ scenicItem?.contact }}</span> | ||
| 34 | </div> | ||
| 35 | <div class="info esp"> | ||
| 36 | <el-icon> | ||
| 37 | <MapLocation /> | ||
| 38 | </el-icon> | ||
| 39 | <span>{{ scenicItem?.address }}</span> | ||
| 40 | </div> | ||
| 41 | </el-col> | ||
| 42 | </el-row> | ||
| 17 | </div> | 43 | </div> |
| 18 | 44 | ||
| 19 | <div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div> | 45 | <div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div> |
| 20 | <div class="border-rr mt20 pd20"> | 46 | <div class="border-rr mt20 pd20"> |
| 21 | <el-form :model="form" :label-width="language == 0 ?'120':'160'" :rules="rules" ref="formRef"> | 47 | <el-form ref="formRef" v-loading="loading" :model="form" :label-width="language == 0 ?'120':'160'" :rules="rules"> |
| 22 | <!-- :disabled-date="disabledDateRZ"--> | 48 | <!-- :disabled-date="disabledDateRZ"--> |
| 23 | <el-form-item :label="language==0?'选择日期':'Date'" required> | 49 | <el-form-item :label="language==0?'选择日期':'Date'" required> |
| 24 | <el-date-picker v-model="rzRange" | 50 | <el-date-picker |
| 25 | format="YYYY-MM-DD" :clearable="false" | 51 | v-model="rzRange" |
| 26 | value-format="YYYY-MM-DD"/> | 52 | format="YYYY-MM-DD" |
| 53 | value-format="YYYY-MM-DD" | ||
| 54 | :disabled-date="disabledDateRZ" | ||
| 55 | :clearable="false" | ||
| 56 | @change="dateChange" | ||
| 57 | /> | ||
| 27 | 58 | ||
| 28 | <div class="tip" v-if="lform.travelStart">{{ language==0?'可订日期':'Available date' }}:{{ lform.travelStart.slice(0, 10) }} ~ {{ lform.travelEnd.slice(0, 10) }}</div> | 59 | <div v-if="lform.scenicStart" class="tip">{{ language==0?'可订日期':'Available date' }}:{{ lform.scenicStart.slice(0, 10) }} ~ {{ lform.scenicEnd.slice(0, 10) }}</div> |
| 29 | 60 | ||
| 30 | <!-- :picker-options="pickerOptions"--> | 61 | <!-- :picker-options="pickerOptions"--> |
| 31 | </el-form-item> | 62 | </el-form-item> |
| 32 | <el-form-item :label="language==0? n.name:'Rooms'" required prop="roomNum" v-for="n in typeList"> | 63 | <el-form-item v-for="(n,i) in gateList" :key="i" :label="language==0? n.name:'Rooms'" required prop="roomNum"> |
| 33 | <el-input-number v-model="n.num" :min="0" :max="canOrderNum" @change="changeRoomNum(n)"/> | 64 | <el-input-number v-model="n.count" :min="0" :max="n.leftNum" @change="changeRoomNum(n)" /> |
| 34 | <div class="red ml20"> | 65 | <div class="red ml20"> |
| 35 | <span v-if="language == 0">剩余票数:{{ canOrderNum }}</span> | 66 | <span v-if="language == 0">剩余票数:{{ n.leftNum }}</span> |
| 36 | <span v-else>{{ canOrderNum }} Remaining rooms</span> | 67 | <span v-else>{{ n.leftNum }} Remaining rooms</span> |
| 37 | </div> | 68 | </div> |
| 38 | <div class="tip" v-if="language==1">If you need to make a hotel reservation, please fill in the full names of all required persons when booking the hotel. (For two or more people, please use ',')</div> | 69 | <div v-if="language==1" class="tip">If you need to make a hotel reservation, please fill in the full names of all required persons when booking the hotel. (For two or more people, please use ',')</div> |
| 39 | </el-form-item> | 70 | </el-form-item> |
| 40 | 71 | ||
| 41 | <div class="fakeFormItem"> | 72 | <div class="fakeFormItem"> |
| 42 | <label>需填写{{ needPersonNum }}位游客</label> | 73 | <label>需填写{{ needPersonNum }}位游客</label> |
| 43 | <div> | 74 | <div> |
| 44 | <div v-show="needPersonNum > form.personArr.length">还需填写{{needPersonNum-form.personArr.length}}位游客</div> | 75 | <div v-show="needPersonNum > form.personArr.length">还需填写{{ needPersonNum-form.personArr.length }}位游客</div> |
| 45 | <div> | 76 | <div> |
| 46 | <el-button plain type="primary" @click="showAddPerson">新增出行人</el-button> | 77 | <el-button plain type="primary" @click="showAddPerson">新增出行人</el-button> |
| 47 | </div> | 78 | </div> |
| 48 | </div> | 79 | </div> |
| 49 | </div> | 80 | </div> |
| 50 | <div v-show="form.personArr.length>0"> | 81 | <div v-show="form.personArr.length>0"> |
| 51 | <div class="fakeFormItem personIt" v-for="(n,index) in form.personArr"> | 82 | <div v-for="(n,index) in form.personArr" class="fakeFormItem personIt"> |
| 52 | <label> | 83 | <label> |
| 53 | <el-icon @click="delPerson(n,index)"><Remove /></el-icon> | 84 | <el-icon @click="delPerson(n,index)"><Remove /></el-icon> |
| 54 | 游客{{index+1}} | 85 | 游客{{ index+1 }} |
| 55 | </label> | 86 | </label> |
| 56 | <div class="mation"> | 87 | <div class="mation"> |
| 57 | <div>{{n.name}}</div> | 88 | <div>{{ n.name }}</div> |
| 58 | 身份证:{{n.idcCode}} | 89 | 身份证:{{ n.idcCode }} |
| 59 | </div> | 90 | </div> |
| 60 | <el-icon @click="showAddPerson(n)"><Edit /></el-icon> | 91 | <el-icon @click="showAddPerson(n)"><Edit /></el-icon> |
| 61 | </div> | 92 | </div> |
| 62 | </div> | 93 | </div> |
| 63 | 94 | ||
| 64 | <el-form-item :label="language==0?'联系手机':'Contact phone'" required prop="phone"> | 95 | <el-form-item :label="language==0?'联系手机':'Contact phone'" required prop="phone"> |
| 65 | <el-input v-model="form.phone"/> | 96 | <el-input v-model="form.phone" /> |
| 66 | </el-form-item> | 97 | </el-form-item> |
| 67 | 98 | ||
| 68 | </el-form> | 99 | </el-form> |
| ... | @@ -72,14 +103,14 @@ | ... | @@ -72,14 +103,14 @@ |
| 72 | <div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div> | 103 | <div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div> |
| 73 | <div class="border-rr mt20 pd20 ccitemBox"> | 104 | <div class="border-rr mt20 pd20 ccitemBox"> |
| 74 | <label> {{ language == 0 ? '基本费用' : 'Room fee' }} | 105 | <label> {{ language == 0 ? '基本费用' : 'Room fee' }} |
| 75 | <span class="fr" v-if="language==0">{{ | 106 | <span v-if="language==0" class="fr">{{ |
| 76 | language == 0 ? '¥' : '€' | 107 | language == 0 ? '¥' : '€' |
| 77 | }}{{ ( form.roomNum * choseRooms.length).toFixed(2) }}</span> | 108 | }}{{ ( form.roomNum * choseRooms.length).toFixed(2) }}</span> |
| 78 | <span class="fr" v-else>{{ | 109 | <span v-else class="fr">{{ |
| 79 | language == 0 ? '¥' : '€' | 110 | language == 0 ? '¥' : '€' |
| 80 | }}{{ ( form.roomNum * choseRooms.length).toFixed(2) }}</span> | 111 | }}{{ ( form.roomNum * choseRooms.length).toFixed(2) }}</span> |
| 81 | </label> | 112 | </label> |
| 82 | <div class="ccitem" v-for="(c, index) in choseRooms" :key="index" v-show="form.roomNum>0"> | 113 | <div v-for="(c, index) in choseRooms" v-show="form.roomNum>0" :key="index" class="ccitem"> |
| 83 | {{ c }} | 114 | {{ c }} |
| 84 | <span v-if="language==0">{{ form.roomNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.roomPrice }}</span> | 115 | <span v-if="language==0">{{ form.roomNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.roomPrice }}</span> |
| 85 | <span v-else>{{ form.roomNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.roomPriceEn }}</span> | 116 | <span v-else>{{ form.roomNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.roomPriceEn }}</span> |
| ... | @@ -87,7 +118,8 @@ | ... | @@ -87,7 +118,8 @@ |
| 87 | 118 | ||
| 88 | 119 | ||
| 89 | <label>{{ language == 0 ? '共计' : 'Total' }}<span | 120 | <label>{{ language == 0 ? '共计' : 'Total' }}<span |
| 90 | class="fr bigMoney">{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label> | 121 | class="fr bigMoney" |
| 122 | >{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label> | ||
| 91 | 123 | ||
| 92 | </div> | 124 | </div> |
| 93 | </el-col> | 125 | </el-col> |
| ... | @@ -106,20 +138,20 @@ | ... | @@ -106,20 +138,20 @@ |
| 106 | </el-col> | 138 | </el-col> |
| 107 | </el-row> | 139 | </el-row> |
| 108 | </el-card> | 140 | </el-card> |
| 109 | <div style="height: 60px;"></div> | 141 | <div style="height: 60px;" /> |
| 110 | 142 | ||
| 111 | </div> | 143 | </div> |
| 112 | 144 | ||
| 113 | <el-dialog v-model="show" title="出行人信息" width="500px" center> | 145 | <el-dialog v-model="show" title="出行人信息" width="500px" center> |
| 114 | <div> | 146 | <div> |
| 115 | <el-form label-width="100" ref="personRef"> | 147 | <el-form ref="personRef" label-width="100"> |
| 116 | <el-form-item label="姓名"> | 148 | <el-form-item label="姓名"> |
| 117 | <el-input v-model="person.name" placeholder="请与证件姓名一致"/> | 149 | <el-input v-model="person.name" placeholder="请与证件姓名一致" /> |
| 118 | </el-form-item> | 150 | </el-form-item> |
| 119 | <el-form-item label="证件号"> | 151 | <el-form-item label="证件号"> |
| 120 | <el-input v-model="person.idcCode" placeholder="请填写身份证号"/> | 152 | <el-input v-model="person.idcCode" placeholder="请填写身份证号" /> |
| 121 | </el-form-item> | 153 | </el-form-item> |
| 122 | </el-form> | 154 | </el-form> |
| 123 | </div> | 155 | </div> |
| 124 | <template #footer> | 156 | <template #footer> |
| 125 | <div class="dialog-footer"> | 157 | <div class="dialog-footer"> |
| ... | @@ -132,19 +164,21 @@ | ... | @@ -132,19 +164,21 @@ |
| 132 | </template> | 164 | </template> |
| 133 | 165 | ||
| 134 | <script setup> | 166 | <script setup> |
| 135 | import {useRouter, useRoute} from "vue-router"; | 167 | import { useRouter, useRoute } from 'vue-router' |
| 136 | import {ref, reactive, onMounted} from "vue"; | 168 | import { ref, onMounted } from 'vue' |
| 137 | import {useStorage} from "@vueuse/core/index"; | 169 | import { useStorage } from '@vueuse/core/index' |
| 138 | import {checkResidueRoom, getBaseInfoByActiveId, newsSubmitOrderHotel} from "@/apiPc/booking" | 170 | import { getBaseInfoByActiveId, getGateListByLasId, getScenicById, newsSubmitOrderHotel } from '@/apiPc/booking' |
| 139 | import dayjs from 'dayjs' | 171 | import dayjs from 'dayjs' |
| 140 | import {ElMessage,ElMessageBox} from "element-plus"; | 172 | import { ElMessage, ElMessageBox } from 'element-plus' |
| 141 | import useUserStore from "@/store/modules/user"; | 173 | import useUserStore from '@/store/modules/user' |
| 174 | import _ from 'lodash' | ||
| 175 | |||
| 142 | const user = useUserStore().user | 176 | const user = useUserStore().user |
| 143 | const language = useStorage('language', 0) | 177 | const language = useStorage('language', 0) |
| 144 | const router = useRouter() | 178 | const router = useRouter() |
| 145 | const route = useRoute() | 179 | const route = useRoute() |
| 146 | const room = ref({}) | 180 | const room = ref({}) |
| 147 | const hotelName = ref('') | 181 | const loading = ref(false) |
| 148 | const canOrderNum = ref(0) | 182 | const canOrderNum = ref(0) |
| 149 | const needPersonNum = ref(0) | 183 | const needPersonNum = ref(0) |
| 150 | const person = ref({ | 184 | const person = ref({ |
| ... | @@ -153,70 +187,80 @@ const person = ref({ | ... | @@ -153,70 +187,80 @@ const person = ref({ |
| 153 | }) | 187 | }) |
| 154 | const show = ref(false) | 188 | const show = ref(false) |
| 155 | const lform = ref({}) | 189 | const lform = ref({}) |
| 190 | const scenicItem = ref({}) | ||
| 156 | const form = ref({ | 191 | const form = ref({ |
| 157 | roomNum: 0, | 192 | phone: user?.phonenumber || '', |
| 158 | phone: user?.phonenumber||'', | ||
| 159 | personArr: [] | 193 | personArr: [] |
| 160 | }) | 194 | }) |
| 161 | const rzRange = ref('') | 195 | const rzRange = ref('') |
| 162 | const typeList = ref([ | 196 | const gateList = ref([]) |
| 163 | { | ||
| 164 | name: '成人票', | ||
| 165 | value: '1' | ||
| 166 | }, | ||
| 167 | { | ||
| 168 | name: '儿童票', | ||
| 169 | value: '2' | ||
| 170 | }, | ||
| 171 | { | ||
| 172 | name: '老年票', | ||
| 173 | value: '2' | ||
| 174 | } | ||
| 175 | ]) | ||
| 176 | const money = ref(0) | 197 | const money = ref(0) |
| 177 | const choseRooms = ref([]) | 198 | const choseRooms = ref([]) |
| 178 | const rules = ref({ | 199 | const rules = ref({ |
| 179 | phone: { required: true, message: language.value==0? '请输入联系电话':"Please enter a contact number", trigger: 'blur' } | 200 | phone: { required: true, message: language.value == 0 ? '请输入联系电话' : 'Please enter a contact number', trigger: 'blur' } |
| 180 | }) | 201 | }) |
| 181 | 202 | ||
| 182 | let usedays = 0 | 203 | const usedays = 0 |
| 183 | onMounted(() => { | 204 | onMounted(() => { |
| 184 | console.log(route.query) | ||
| 185 | hotelName.value = route.query.hotelName | ||
| 186 | money.value = 0 | 205 | money.value = 0 |
| 187 | rzRange.value = dayjs(route.query.start).format('YYYY-MM-DD') | 206 | rzRange.value = route.params.start |
| 207 | |||
| 208 | getScenic() | ||
| 188 | initDays() | 209 | initDays() |
| 189 | checkreRooms() | 210 | getGate() |
| 190 | }) | 211 | }) |
| 191 | function initDays() { | 212 | function initDays() { |
| 192 | // 可定日期范围 | 213 | // 可定日期范围 |
| 193 | getBaseInfoByActiveId(route.params.cptId).then(res=>{ | 214 | getBaseInfoByActiveId(route.params.cptId).then(res => { |
| 194 | lform.value = res.data | 215 | lform.value = res.data |
| 195 | }).catch(err=>{ | 216 | }) |
| 196 | console.log(err) | 217 | } |
| 218 | function getScenic() { | ||
| 219 | getScenicById(route.params.scenicId).then(res => { | ||
| 220 | scenicItem.value = res.data | ||
| 197 | }) | 221 | }) |
| 198 | } | 222 | } |
| 223 | function getGate() { | ||
| 224 | gateList.value = [] | ||
| 225 | loading.value = true | ||
| 226 | getGateListByLasId({ | ||
| 227 | lasId: route.query.lasId, | ||
| 228 | scenicDate: rzRange.value | ||
| 229 | }).then(res => { | ||
| 230 | gateList.value = res.data | ||
| 231 | _.each(gateList.value, item => { | ||
| 232 | item.count = 0 | ||
| 233 | item.leftNum = item.num - item.orderCount | ||
| 234 | }) | ||
| 235 | }).finally(() => { | ||
| 236 | loading.value = false | ||
| 237 | }) | ||
| 238 | } | ||
| 239 | |||
| 199 | function disabledDateRZ(date) { | 240 | function disabledDateRZ(date) { |
| 200 | //判读今天大与form.value.travelStart | 241 | // 判读今天大与form.value.travelStart |
| 201 | if (lform.value.travelStart) { | 242 | if (lform.value.scenicStart) { |
| 202 | const today = dayjs().format('YYYY-MM-DD') | 243 | const today = dayjs().format('YYYY-MM-DD') |
| 203 | if (lform.value.travelStart < today) { | 244 | if (lform.value.scenicStart < today) { |
| 204 | return !((date.getTime() >= dayjs(today).valueOf())&&(date.getTime() <= dayjs(lform.value.travelEnd).valueOf())) | 245 | return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs(lform.value.scenicEnd).valueOf())) |
| 205 | } else { | 246 | } else { |
| 206 | return !((date.getTime() >= dayjs(lform.value.travelStart).valueOf())&&(date.getTime() <= dayjs(lform.value.travelEnd).valueOf())) | 247 | return !((date.getTime() >= dayjs(lform.value.scenicStart).valueOf()) && (date.getTime() <= dayjs(lform.value.scenicEnd).valueOf())) |
| 207 | } | 248 | } |
| 208 | } | 249 | } |
| 209 | // return true | 250 | // return true |
| 210 | } | 251 | } |
| 252 | |||
| 253 | function dateChange() { | ||
| 254 | getGate() | ||
| 255 | } | ||
| 256 | |||
| 211 | function changeRoomNum(e) { | 257 | function changeRoomNum(e) { |
| 212 | console.log(e) | 258 | console.log(e) |
| 213 | countMoney() | 259 | countMoney() |
| 214 | } | 260 | } |
| 215 | function checkreRooms() { | 261 | |
| 216 | //获取票类型 typeList | ||
| 217 | } | ||
| 218 | const showAddPerson = (item) => { | 262 | const showAddPerson = (item) => { |
| 219 | if(item){ | 263 | if (item) { |
| 220 | person.value = item | 264 | person.value = item |
| 221 | } else { | 265 | } else { |
| 222 | person.value = { | 266 | person.value = { |
| ... | @@ -227,42 +271,41 @@ const showAddPerson = (item) => { | ... | @@ -227,42 +271,41 @@ const showAddPerson = (item) => { |
| 227 | show.value = true | 271 | show.value = true |
| 228 | } | 272 | } |
| 229 | const addPerson = () => { | 273 | const addPerson = () => { |
| 230 | if(!person.value.name){ | 274 | if (!person.value.name) { |
| 231 | ElMessage.warning(language.value == 0 ? '请填写姓名' : 'Please fill in the name') | 275 | ElMessage.warning(language.value == 0 ? '请填写姓名' : 'Please fill in the name') |
| 232 | return | 276 | return |
| 233 | } | 277 | } |
| 234 | if(!person.value.idcCode){ | 278 | if (!person.value.idcCode) { |
| 235 | ElMessage.warning(language.value == 0 ? '请填写身份证号' : 'Please fill in the ID number') | 279 | ElMessage.warning(language.value == 0 ? '请填写身份证号' : 'Please fill in the ID number') |
| 236 | return | 280 | return |
| 237 | } | 281 | } |
| 238 | form.value.personArr.push(person.value) | 282 | form.value.personArr.push(person.value) |
| 239 | show.value = false | 283 | show.value = false |
| 240 | } | 284 | } |
| 241 | const delPerson = (item,index) => { | 285 | const delPerson = (item, index) => { |
| 242 | form.value.personArr.splice(index,1) | 286 | form.value.personArr.splice(index, 1) |
| 243 | } | 287 | } |
| 244 | 288 | ||
| 245 | function countMoney() { | 289 | function countMoney() { |
| 246 | if (language.value == 0) { | 290 | if (language.value == 0) { |
| 247 | money.value = ((form.value.roomNum * usedays) + ( form.value.addNum * usedays)).toFixed(2) | 291 | money.value = ((form.value.roomNum * usedays) + (form.value.addNum * usedays)).toFixed(2) |
| 248 | } else { | 292 | } else { |
| 249 | money.value = ((form.value.roomNum * usedays) + (form.value.addNum * usedays)).toFixed(2) | 293 | money.value = ((form.value.roomNum * usedays) + (form.value.addNum * usedays)).toFixed(2) |
| 250 | |||
| 251 | } | 294 | } |
| 252 | if (money.value == 'NaN') money.value = 0.00 | 295 | if (money.value == 'NaN') money.value = 0.00 |
| 253 | } | 296 | } |
| 254 | 297 | ||
| 255 | function submit() { | 298 | function submit() { |
| 256 | if(!user){ | 299 | if (!user) { |
| 257 | useUserStore().setReLogin() | 300 | useUserStore().setReLogin() |
| 258 | return | 301 | return |
| 259 | } | 302 | } |
| 260 | if(!rzRange.value)return ElMessage.warning(language.value == 0 ? '请选择预订日期' : 'Please select check-in time') | 303 | if (!rzRange.value) return ElMessage.warning(language.value == 0 ? '请选择预订日期' : 'Please select check-in time') |
| 261 | if(!form.value.phone){ | 304 | if (!form.value.phone) { |
| 262 | ElMessage.warning(language.value == 0 ? '请填写手机号' : 'Please fill in the phone number') | 305 | ElMessage.warning(language.value == 0 ? '请填写手机号' : 'Please fill in the phone number') |
| 263 | return | 306 | return |
| 264 | } | 307 | } |
| 265 | if(form.value.personArr.length!=needPersonNum.value){ | 308 | if (form.value.personArr.length != needPersonNum.value) { |
| 266 | ElMessage.warning(language.value == 0 ? '出行人数与票数不匹配' : 'The number of people travelling does not match the number of rooms') | 309 | ElMessage.warning(language.value == 0 ? '出行人数与票数不匹配' : 'The number of people travelling does not match the number of rooms') |
| 267 | return | 310 | return |
| 268 | } | 311 | } |
| ... | @@ -279,13 +322,13 @@ function submit() { | ... | @@ -279,13 +322,13 @@ function submit() { |
| 279 | ElMessage.warning(language.value == 0 ? '剩余票数不足' : 'The remaining number of rooms is insufficient') | 322 | ElMessage.warning(language.value == 0 ? '剩余票数不足' : 'The remaining number of rooms is insufficient') |
| 280 | checkreRooms() | 323 | checkreRooms() |
| 281 | } else { | 324 | } else { |
| 282 | //去付钱 | 325 | // 去付钱 |
| 283 | router.push({ | 326 | router.push({ |
| 284 | name: 'bookingPay', | 327 | name: 'bookingPay', |
| 285 | query: { | 328 | query: { |
| 286 | orderId:res.data.orderId, | 329 | orderId: res.data.orderId, |
| 287 | money:res.data.total, | 330 | money: res.data.total, |
| 288 | type:'hotel' | 331 | type: 'hotel' |
| 289 | } | 332 | } |
| 290 | }) | 333 | }) |
| 291 | } | 334 | } | ... | ... |
-
Please register or sign in to post a comment