no message
Showing
14 changed files
with
389 additions
and
82 deletions
| ... | @@ -6,12 +6,25 @@ export function getHotelList(params) { | ... | @@ -6,12 +6,25 @@ export function getHotelList(params) { |
| 6 | params: params | 6 | params: params |
| 7 | }) | 7 | }) |
| 8 | } | 8 | } |
| 9 | export function getStudioList(params) { | ||
| 10 | return request({ | ||
| 11 | url: `/ota/studio/list`, | ||
| 12 | method: 'get', | ||
| 13 | params: params | ||
| 14 | }) | ||
| 15 | } | ||
| 9 | export function getHotelById(id) { | 16 | export function getHotelById(id) { |
| 10 | return request({ | 17 | return request({ |
| 11 | url: `/ota/hotel/${id}`, | 18 | url: `/ota/hotel/${id}`, |
| 12 | method: 'get' | 19 | method: 'get' |
| 13 | }) | 20 | }) |
| 14 | } | 21 | } |
| 22 | export function getStudioById(id) { | ||
| 23 | return request({ | ||
| 24 | url: `/ota/studio/${id}`, | ||
| 25 | method: 'get' | ||
| 26 | }) | ||
| 27 | } | ||
| 15 | export function getHotelRooms(params) { | 28 | export function getHotelRooms(params) { |
| 16 | return request({ | 29 | return request({ |
| 17 | url: `/ota/activityRoom/list`, | 30 | url: `/ota/activityRoom/list`, | ... | ... |
src/assets/booking/hz_bg.png
0 → 100644
118 KB
src/assets/booking/hz_text.png
0 → 100644
13.4 KB
| ... | @@ -9,7 +9,11 @@ | ... | @@ -9,7 +9,11 @@ |
| 9 | .blur20 { filter: blur(20px) } | 9 | .blur20 { filter: blur(20px) } |
| 10 | .m0{margin: 0;} | 10 | .m0{margin: 0;} |
| 11 | .flex{display: flex;} | 11 | .flex{display: flex;} |
| 12 | 12 | .fs16{font-size: 16px;} | |
| 13 | .fs18{font-size: 18px;} | ||
| 14 | .borderRadius10{border-radius: 10px;} | ||
| 15 | .w80{width: 80%;} | ||
| 16 | .w50{width: 50%;} | ||
| 13 | .text-gray{color: #999} | 17 | .text-gray{color: #999} |
| 14 | .uppercase{ | 18 | .uppercase{ |
| 15 | text-transform: uppercase; | 19 | text-transform: uppercase; | ... | ... |
| ... | @@ -76,7 +76,7 @@ | ... | @@ -76,7 +76,7 @@ |
| 76 | <div class="fixed-right"> | 76 | <div class="fixed-right"> |
| 77 | <a v-if="language==0" href="#" target="_blank" | 77 | <a v-if="language==0" href="#" target="_blank" |
| 78 | onclick="javascript:window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=6c500b60-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=ZHCN','_blank','height=700px,width=700px,top=50,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="客服" > | 78 | onclick="javascript:window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=6c500b60-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=ZHCN','_blank','height=700px,width=700px,top=50,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="客服" > |
| 79 | <img src="@/assets/logo/kf_c.png"/> | 79 | <img class="kf" src="@/assets/logo/kf_c.png"/> |
| 80 | </a> | 80 | </a> |
| 81 | 81 | ||
| 82 | <a v-else target="_blank" href="#" | 82 | <a v-else target="_blank" href="#" |
| ... | @@ -94,7 +94,7 @@ const language = useStorage('language', 0) | ... | @@ -94,7 +94,7 @@ const language = useStorage('language', 0) |
| 94 | </script> | 94 | </script> |
| 95 | 95 | ||
| 96 | <style lang="scss" scoped> | 96 | <style lang="scss" scoped> |
| 97 | .kf{width: 100px;cursor: pointer; | 97 | .kf{width: 90px;cursor: pointer; |
| 98 | //animation: pop 2s infinite; | 98 | //animation: pop 2s infinite; |
| 99 | } | 99 | } |
| 100 | .fixed-right{position: fixed;right: 0;bottom: 200px;} | 100 | .fixed-right{position: fixed;right: 0;bottom: 200px;} | ... | ... |
| ... | @@ -404,6 +404,12 @@ export const constantRoutes = [ | ... | @@ -404,6 +404,12 @@ export const constantRoutes = [ |
| 404 | meta: { title: 'Makeup Appointment' } | 404 | meta: { title: 'Makeup Appointment' } |
| 405 | }, | 405 | }, |
| 406 | { | 406 | { |
| 407 | path: 'makeUp/:cptId/:studioId', | ||
| 408 | component: () => import('@/viewsPc/booking/studioDetail'), | ||
| 409 | name: 'studioDetail', | ||
| 410 | meta: { title: 'Makeup Appointment' } | ||
| 411 | }, | ||
| 412 | { | ||
| 407 | path: 'photography/:cptId', | 413 | path: 'photography/:cptId', |
| 408 | component: () => import('@/viewsPc/booking/photography'), | 414 | component: () => import('@/viewsPc/booking/photography'), |
| 409 | name: 'photography', | 415 | name: 'photography', | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <div class="box"> | 3 | <div class="box"> |
| 4 | <div class="indexTitle"> | 4 | <div class="indexTitle"> |
| 5 | <h3 class="leftboderTT">{{ language==0?'我的发票':'My invoice' }} | 5 | <h3 class="leftboderTT">{{ language == 0 ? '我的发票' : 'My invoice' }} |
| 6 | <el-button @click="goAdd" type="primary" class="btn-lineG fr">{{ language==0?'开发票':'Invoicing' }}</el-button> | 6 | <el-button @click="goAdd" type="primary" class="btn-lineG fr"> |
| 7 | </h3> | 7 | {{language == 0 ? '开发票' : 'Invoicing' }} |
| 8 | </div> | 8 | </el-button> |
| 9 | <el-card class="mt30 mb60"> | 9 | </h3> |
| 10 | <div class="billItem" v-for="b in list" :key="b.id"> | 10 | </div> |
| 11 | <!-- parentType --> | 11 | <el-card class="mt30 mb60"> |
| 12 | <div> | 12 | <div class="billItem" v-for="b in list" :key="b.id"> |
| 13 | 申请日期: | 13 | <!-- parentType --> |
| 14 | {{ b.createTime }} | 14 | <div> |
| 15 | </div> | 15 | 申请日期: |
| 16 | <div style="display: flex;justify-content: space-between;"> | 16 | {{ b.createTime }} |
| 17 | <div> 发票形式 - | 17 | </div> |
| 18 | <span v-if="b.invoiceForm=='1'">电子发票</span> | 18 | <div style="display: flex;justify-content: space-between;"> |
| 19 | <span v-if="b.invoiceForm=='2'">纸质普票</span> | 19 | <div> 发票形式 - |
| 20 | <span v-if="b.invoiceForm=='3'">纸质专票</span> | 20 | <span v-if="b.invoiceForm=='1'">电子发票</span> |
| 21 | </div> | 21 | <span v-if="b.invoiceForm=='2'">纸质普票</span> |
| 22 | <div>¥ <span>{{b.total}}</span></div> | 22 | <span v-if="b.invoiceForm=='3'">纸质专票</span> |
| 23 | </div> | 23 | </div> |
| 24 | <div style="margin: 20px 0 0;display: flex;justify-content: space-between;"> | 24 | <div>¥ <span>{{ b.total }}</span></div> |
| 25 | <div class="status"> | 25 | </div> |
| 26 | <div class="success" v-if="b.isInvoice == '1'"> 已开票</div> | 26 | <div style="margin: 20px 0 0;display: flex;justify-content: space-between;"> |
| 27 | <div class="warning" v-if="b.isInvoice == '0'">未开票</div> | 27 | <div class="status"> |
| 28 | <div class="success" v-if="b.isInvoice == '3'"> 已寄出</div> | 28 | <div class="success" v-if="b.isInvoice == '1'"> 已开票</div> |
| 29 | <div class="warning" v-if="b.isInvoice == '2'"> 已取消</div> | 29 | <div class="warning" v-if="b.isInvoice == '0'">未开票</div> |
| 30 | </div> | 30 | <div class="success" v-if="b.isInvoice == '3'"> 已寄出</div> |
| 31 | <div> | 31 | <div class="warning" v-if="b.isInvoice == '2'"> 已取消</div> |
| 32 | <button class="billbtn" v-if="b.isInvoice == '0'" @click.stop="editDetail(b)"> | 32 | </div> |
| 33 | {{ language == 0 ? '修改发票':'Edit' }} | 33 | <div> |
| 34 | </button> | 34 | <button class="billbtn" v-if="b.isInvoice == '0'" @click.stop="editDetail(b)"> |
| 35 | <button class="billbtn rbtn-m-kx" | 35 | {{ language == 0 ? '修改发票' : 'Edit' }} |
| 36 | @click.stop="showDetail(b)">{{ language==0?'详情':'Detail' }}</button> | 36 | </button> |
| 37 | 37 | <button class="billbtn rbtn-m-kx" | |
| 38 | </div> | 38 | @click.stop="showDetail(b)">{{ language == 0 ? '详情' : 'Detail' }} |
| 39 | </div> | 39 | </button> |
| 40 | 40 | ||
| 41 | </div> | 41 | </div> |
| 42 | <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0"/> | 42 | </div> |
| 43 | 43 | ||
| 44 | </el-card> | 44 | </div> |
| 45 | <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0"/> | ||
| 46 | |||
| 47 | </el-card> | ||
| 45 | 48 | ||
| 46 | </div> | ||
| 47 | </div> | 49 | </div> |
| 50 | </div> | ||
| 48 | 51 | ||
| 49 | <chose-bills ref="dialogChoseBillsRef" @transfer="getChoosed"/> | 52 | <chose-bills ref="dialogChoseBillsRef" @transfer="getChoosed"/> |
| 50 | </template> | 53 | </template> |
| 51 | 54 | ||
| 52 | <script setup> | 55 | <script setup> |
| 53 | import ChoseBills from './component/choseBills' | 56 | import ChoseBills from './component/choseBills' |
| 54 | import { ref } from 'vue' | 57 | import {ref} from 'vue' |
| 55 | import {getInvoiceByActiveId} from "@/apiPc/booking" | 58 | import {getInvoiceByActiveId} from "@/apiPc/booking" |
| 56 | import {getCurrentInstance} from "@vue/runtime-core" | 59 | import {getCurrentInstance} from "@vue/runtime-core" |
| 57 | import {useStorage} from "@vueuse/core/index"; | 60 | import {useStorage} from "@vueuse/core/index"; |
| 58 | import useUserStore from "@/store/modules/user"; | 61 | import useUserStore from "@/store/modules/user"; |
| 59 | const language= useStorage('language',0) | 62 | |
| 63 | const language = useStorage('language', 0) | ||
| 60 | const {proxy} = getCurrentInstance() | 64 | const {proxy} = getCurrentInstance() |
| 61 | const list = ref([]) | 65 | const list = ref([]) |
| 62 | const user = useUserStore().user | 66 | const user = useUserStore().user |
| ... | @@ -64,27 +68,34 @@ const query = ref({ | ... | @@ -64,27 +68,34 @@ const query = ref({ |
| 64 | createById: user.userId | 68 | createById: user.userId |
| 65 | }) | 69 | }) |
| 66 | getList() | 70 | getList() |
| 71 | |||
| 67 | function getList() { | 72 | function getList() { |
| 68 | if(!user){ | 73 | if (!user) { |
| 69 | useUserStore().setReLogin() | 74 | useUserStore().setReLogin() |
| 70 | return | 75 | return |
| 71 | } | 76 | } |
| 72 | getInvoiceByActiveId(query.value).then(res=>{ | 77 | getInvoiceByActiveId(query.value).then(res => { |
| 73 | list.value = res.rows | 78 | list.value = res.rows |
| 74 | }) | 79 | }) |
| 75 | } | 80 | } |
| 81 | |||
| 76 | function goAdd() { | 82 | function goAdd() { |
| 77 | //选择开票订单 | 83 | //选择开票订单 |
| 78 | var obj = { | 84 | var obj = { |
| 79 | title: language.value==0?'选择开票订单':'Select the invoicing order', | 85 | title: language.value == 0 ? '选择开票订单' : 'Select the invoicing order', |
| 80 | show: true, | 86 | show: true, |
| 81 | choosedList:[] | 87 | choosedList: [] |
| 82 | } | 88 | } |
| 83 | proxy.$refs['dialogChoseBillsRef'].open(obj) | 89 | proxy.$refs['dialogChoseBillsRef'].open(obj) |
| 84 | } | 90 | } |
| 91 | |||
| 92 | function editDetail(item) { | ||
| 93 | |||
| 94 | } | ||
| 95 | |||
| 85 | function getChoosed(list) { | 96 | function getChoosed(list) { |
| 86 | console.log(list) | 97 | console.log(list) |
| 87 | if(list.length>0){ | 98 | if (list.length > 0) { |
| 88 | // 去开票 | 99 | // 去开票 |
| 89 | } | 100 | } |
| 90 | } | 101 | } |
| ... | @@ -92,10 +103,15 @@ function getChoosed(list) { | ... | @@ -92,10 +103,15 @@ function getChoosed(list) { |
| 92 | </script> | 103 | </script> |
| 93 | 104 | ||
| 94 | <style scoped lang="scss"> | 105 | <style scoped lang="scss"> |
| 95 | .leftboderTT{ | 106 | .leftboderTT { |
| 96 | font-size: 20px; | 107 | font-size: 20px; |
| 97 | .btn-lineG{text-transform: uppercase; | 108 | |
| 98 | span{color: #fff;} | 109 | .btn-lineG { |
| 110 | text-transform: uppercase; | ||
| 111 | |||
| 112 | span { | ||
| 113 | color: #fff; | ||
| 114 | } | ||
| 99 | } | 115 | } |
| 100 | } | 116 | } |
| 101 | </style> | 117 | </style> | ... | ... |
| ... | @@ -8,7 +8,7 @@ | ... | @@ -8,7 +8,7 @@ |
| 8 | <!-- </el-col>--> | 8 | <!-- </el-col>--> |
| 9 | <el-col :span="16"> | 9 | <el-col :span="16"> |
| 10 | <h3 class="esp flex">{{ form?.name }} | 10 | <h3 class="esp flex">{{ form?.name }} |
| 11 | <div class="starBox"> | 11 | <div class="starBox ml20"> |
| 12 | <img v-for="i in Number(form?.starLevel||0)" src="@/assets/booking/star.png"> | 12 | <img v-for="i in Number(form?.starLevel||0)" src="@/assets/booking/star.png"> |
| 13 | </div> | 13 | </div> |
| 14 | </h3> | 14 | </h3> |
| ... | @@ -17,22 +17,21 @@ | ... | @@ -17,22 +17,21 @@ |
| 17 | <span v-for="(t,index) in form?.label?.split(',')" v-show="index<4">{{ t }}</span> | 17 | <span v-for="(t,index) in form?.label?.split(',')" v-show="index<4">{{ t }}</span> |
| 18 | <a v-show="form?.label?.split(',').length>4">{{ language == 0 ? '更多' : 'MORE' }} ></a> | 18 | <a v-show="form?.label?.split(',').length>4">{{ language == 0 ? '更多' : 'MORE' }} ></a> |
| 19 | </div> | 19 | </div> |
| 20 | <div> | 20 | <div class="info"> |
| 21 | <el-icon></el-icon> | 21 | <el-icon><Clock /></el-icon> |
| 22 | <span class="mr10">{{ language == 0 ? '入住时间' : 'Check-in' }}:{{ form?.checkInTime }}</span> | 22 | <span class="mr10">{{ language == 0 ? '入住时间' : 'Check-in' }}:{{ form?.checkInTime }}</span> |
| 23 | <span>{{ language == 0 ? '离店时间' : 'Check-out' }}:{{ form?.checkOutTime }}</span> | 23 | <span>{{ language == 0 ? '离店时间' : 'Check-out' }}:{{ form?.checkOutTime }}</span> |
| 24 | </div> | 24 | </div> |
| 25 | <div v-if="form?.introduction" class="flex esp"> | 25 | <div class="info esp"> |
| 26 | <el-icon></el-icon> | 26 | <el-icon><MapLocation /></el-icon> |
| 27 | {{ language == 0 ? '酒店简介' : 'Introduction' }}:<span v-html="form.introduction.toString()"></span> | 27 | <span>{{ form?.addName }}</span> |
| 28 | </div> | ||
| 29 | <div v-if="form?.introduction" class="info pointer"> | ||
| 30 | <div :class="showAll?'':'esp_2'" @click="showAll=!showAll" v-html="form.introduction.toString()"></div> | ||
| 28 | </div> | 31 | </div> |
| 29 | <!-- <p class="esp addr">--> | ||
| 30 | <!-- <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"><LocationFilled /></el-icon>--> | ||
| 31 | <!-- {{form?.address}}--> | ||
| 32 | <!-- </p>--> | ||
| 33 | </el-col> | 32 | </el-col> |
| 34 | <el-col :span="8" class="text-right"> | 33 | <el-col :span="8" class="text-right"> |
| 35 | <div class="mapBox"> | 34 | <div class="mapBox" @click="goMap"> |
| 36 | <div id="map"></div> | 35 | <div id="map"></div> |
| 37 | </div> | 36 | </div> |
| 38 | </el-col> | 37 | </el-col> |
| ... | @@ -42,9 +41,9 @@ | ... | @@ -42,9 +41,9 @@ |
| 42 | 41 | ||
| 43 | <div class="mt30"> | 42 | <div class="mt30"> |
| 44 | <el-row :gutter="20"> | 43 | <el-row :gutter="20"> |
| 45 | <el-col v-for="(p,index) in form?.photos?.split(',')" :span="index==0?12:6"> | 44 | <el-col v-for="(p,index) in form?.photos?.split(',')" :span="index==0?9:5" v-show="index<7"> |
| 46 | <div class="imgbox hotelImg"> | 45 | <div class="imgbox hotelImg"> |
| 47 | <img :src="fillImgUrl(p)"> | 46 | <el-image :src="fillImgUrl(p)" fit="cover" :preview-src-list="form?.photos?.split(',')"/> |
| 48 | </div> | 47 | </div> |
| 49 | </el-col> | 48 | </el-col> |
| 50 | </el-row> | 49 | </el-row> |
| ... | @@ -121,6 +120,7 @@ const form = ref({}) | ... | @@ -121,6 +120,7 @@ const form = ref({}) |
| 121 | const query = ref({ | 120 | const query = ref({ |
| 122 | hotelId: route.query.id | 121 | hotelId: route.query.id |
| 123 | }) | 122 | }) |
| 123 | const showAll = ref(false) | ||
| 124 | const loading = ref(false) | 124 | const loading = ref(false) |
| 125 | const roomList = ref([]) | 125 | const roomList = ref([]) |
| 126 | const map = ref(null) | 126 | const map = ref(null) |
| ... | @@ -202,6 +202,14 @@ function goOrder(room) { | ... | @@ -202,6 +202,14 @@ function goOrder(room) { |
| 202 | } | 202 | } |
| 203 | }) | 203 | }) |
| 204 | } | 204 | } |
| 205 | function goMap() { | ||
| 206 | return | ||
| 207 | // var tencentMapUrl = "https://map.qq.com/"; | ||
| 208 | // window.location.href = tencentMapUrl; | ||
| 209 | var url = `https://map.qq.com/?type=gcj02&lat=${form.value.latitude}&lng=${form.value.longitude}` | ||
| 210 | var mapUrl_tx = "http://apis.map.qq.com/uri/v1/marker?marker=coord:"+form.value.latitude+","+form.value.longitude+"&referer=yellowpage"; | ||
| 211 | window.open(url, "_blank") | ||
| 212 | } | ||
| 205 | </script> | 213 | </script> |
| 206 | 214 | ||
| 207 | <style scoped lang="scss"> | 215 | <style scoped lang="scss"> |
| ... | @@ -317,4 +325,9 @@ function goOrder(room) { | ... | @@ -317,4 +325,9 @@ function goOrder(room) { |
| 317 | img{object-fit: cover;object-position: center;width: 100%;height: 100%; | 325 | img{object-fit: cover;object-position: center;width: 100%;height: 100%; |
| 318 | } | 326 | } |
| 319 | } | 327 | } |
| 328 | .info{font-weight: 400; | ||
| 329 | font-size: 14px; | ||
| 330 | color: #929AA0; | ||
| 331 | .el-icon{margin-right: 5px;} | ||
| 332 | } | ||
| 320 | </style> | 333 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <div class="banner"> | ||
| 4 | <img src="@/assets/booking/hz_text.png"> | ||
| 5 | </div> | ||
| 3 | <div class="box"> | 6 | <div class="box"> |
| 4 | <el-card class="mt30"></el-card> | 7 | <div class="searchBar"> |
| 8 | <el-input :placeholder="language==0?'请输入关键字搜索':'Search'" v-model="query.name" class="no-border"> | ||
| 9 | </el-input> | ||
| 10 | <el-button size="large" type="primary" class="btn-lineG" icon="search" @click="getList"> | ||
| 11 | {{ language==0?'搜索':'Search' }}</el-button> | ||
| 12 | </div> | ||
| 13 | </div> | ||
| 14 | <div class="box" v-loading="loading"> | ||
| 15 | <el-row :gutter="20" class="mb20"> | ||
| 16 | <el-col :lg="8" :md="8" :sm="12" :xs="24" v-for="(n,index) in list" :key="index"> | ||
| 17 | <el-card class="mb20 mitem"> | ||
| 18 | <div class="imgbox"><img/> | ||
| 19 | <span>30 个时间段可预约</span> | ||
| 20 | </div> | ||
| 21 | <div class="info"> | ||
| 22 | <h3>Mango美妆工作室</h3> | ||
| 23 | <div class="tagbox"> | ||
| 24 | <span>专业团队</span> | ||
| 25 | <span>大牌化妆品</span> | ||
| 26 | <span>金牌化妆师</span> | ||
| 27 | <span>连锁</span> | ||
| 28 | </div> | ||
| 29 | <p class="esp"> | ||
| 30 | <span> | ||
| 31 | <el-icon><OfficeBuilding /></el-icon> | ||
| 32 | 成立<i class="text-primary">6</i>年 | ||
| 33 | </span> | ||
| 34 | <span> | ||
| 35 | <el-icon><User /></el-icon> | ||
| 36 | <i class="text-primary">12</i>名化妆师 | ||
| 37 | </span> | ||
| 38 | </p> | ||
| 39 | <p class="esp"><el-icon><Iphone /></el-icon> | ||
| 40 | 800-820-8820 | ||
| 41 | </p> | ||
| 42 | <p class="esp"><el-icon><Location /></el-icon> | ||
| 43 | 江苏无锡梁溪区南长街5D-601 | ||
| 44 | </p> | ||
| 45 | <div class="text-center mt20"> | ||
| 46 | <el-button @click="goDetail(n)" round type="primary" class="btn-lineG fs18 w50" size="large"> | ||
| 47 | 立即预约   <el-icon class="rotate90_180"> <sort-down/></el-icon> | ||
| 48 | </el-button> | ||
| 49 | </div> | ||
| 50 | </div> | ||
| 51 | </el-card> | ||
| 52 | </el-col> | ||
| 53 | </el-row> | ||
| 5 | 54 | ||
| 6 | </div> | 55 | </div> |
| 7 | 56 | ||
| ... | @@ -9,9 +58,79 @@ | ... | @@ -9,9 +58,79 @@ |
| 9 | </template> | 58 | </template> |
| 10 | 59 | ||
| 11 | <script setup> | 60 | <script setup> |
| 61 | import {getStudioList} from "@/apiPc/booking" | ||
| 62 | import {onMounted} from "@vue/runtime-core" | ||
| 63 | import {useRoute, useRouter} from "vue-router" | ||
| 64 | import {useStorage} from "@vueuse/core/index"; | ||
| 65 | const language= useStorage('language',0) | ||
| 66 | const router = useRouter() | ||
| 67 | const route = useRoute() | ||
| 68 | const list = ref([{id:'0'},{id:'1'},{id:'2'},{id:'3'}]) | ||
| 69 | const loading = ref(false) | ||
| 70 | const query = ref({ | ||
| 12 | 71 | ||
| 72 | }) | ||
| 73 | onMounted(()=>{ | ||
| 74 | query.value.activityId = route.params.cptId | ||
| 75 | // getList() | ||
| 76 | }) | ||
| 77 | function getList() { | ||
| 78 | loading.value = true | ||
| 79 | getStudioList(query.value).then(res=>{ | ||
| 80 | list.value = res.rows | ||
| 81 | loading.value = false | ||
| 82 | }).catch(err=>{ | ||
| 83 | loading.value = false | ||
| 84 | }) | ||
| 85 | } | ||
| 86 | function goDetail(n) { | ||
| 87 | router.push({ | ||
| 88 | name:'studioDetail', | ||
| 89 | params:{ | ||
| 90 | studioId: n.id | ||
| 91 | } | ||
| 92 | }) | ||
| 93 | } | ||
| 13 | </script> | 94 | </script> |
| 14 | 95 | ||
| 15 | <style scoped> | 96 | <style scoped lang="scss"> |
| 16 | 97 | .banner{height: 140px;background-size: cover;text-align: center; | |
| 98 | background: url("@/assets/booking/hz_bg.png") center;display: flex;align-items: center; | ||
| 99 | justify-content: center; | ||
| 100 | img{display: block;margin:-30px auto 0;width: auto;} | ||
| 101 | } | ||
| 102 | .searchBar{position: relative;top: -30px; | ||
| 103 | background: #FFFFFF;display: flex;padding: 20px; | ||
| 104 | border-radius: 10px;} | ||
| 105 | .no-border{border: none;background: #F5F7F9; | ||
| 106 | :deep(.el-input__wrapper){border: none;box-shadow: none;background: #F5F7F9;} | ||
| 107 | } | ||
| 108 | .tagbox{margin: 15px 0; | ||
| 109 | a{color: #AFB5B9;font-size: 12px;} | ||
| 110 | span{border-radius: 13px;font-size: 12px;padding: 4px 10px;margin-right:10px;font-weight: 400;} | ||
| 111 | span:nth-child(4n){background: rgba(50, 177, 108, 0.2);color: rgba(50, 177, 108, 1);} | ||
| 112 | span:nth-child(4n+1){background:rgba(243, 152, 0, 0.2);color: rgba(243, 152, 0, 1);} | ||
| 113 | span:nth-child(4n+2){background: rgba(0, 160, 233, 0.2);color: rgba(0, 160, 233, 1);} | ||
| 114 | span:nth-child(4n+3){background: rgba(247, 64, 166, 0.2);color:rgba(247, 64, 166, 1);} | ||
| 115 | } | ||
| 116 | .mitem{ | ||
| 117 | .imgbox{aspect-ratio: 16/9;background: rgba(129, 122, 234, 0.7); | ||
| 118 | position: relative; | ||
| 119 | span{position: absolute;color: #fff;font-weight: 400;bottom: 0;right: 0; | ||
| 120 | font-size: 14px;background: rgba(0,0,0,0.45); | ||
| 121 | border-radius: 16px 0 0 0;padding:4px 14px; | ||
| 122 | } | ||
| 123 | } | ||
| 124 | .info{ | ||
| 125 | p{font-weight: 400;margin: 7px 0; | ||
| 126 | font-size: 14px; | ||
| 127 | color: #929AA0; | ||
| 128 | i{font-style: normal;} | ||
| 129 | } | ||
| 130 | span{margin-right: 10px; | ||
| 131 | i.text-primary{padding: 0 4px;} | ||
| 132 | } | ||
| 133 | .el-icon{position: relative;top:2px;margin-right: 4px;} | ||
| 134 | } | ||
| 135 | } | ||
| 17 | </style> | 136 | </style> | ... | ... |
src/viewsPc/booking/studioDetail.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div> | ||
| 4 | <div class="box"> | ||
| 5 | <el-card class="mt30 borderRadius10"> | ||
| 6 | <h3>{{ form.name }} | ||
| 7 | <div class="tagbox"> | ||
| 8 | <span>专业团队</span> | ||
| 9 | <span>大牌化妆品</span> | ||
| 10 | <span>金牌化妆师</span> | ||
| 11 | <span>连锁</span> | ||
| 12 | </div> | ||
| 13 | </h3> | ||
| 14 | <p class="infoLine"> | ||
| 15 | <span> | ||
| 16 | <el-icon><OfficeBuilding/></el-icon> | ||
| 17 | 成立<i class="text-primary">6</i>年 | ||
| 18 | </span> | ||
| 19 | <span> | ||
| 20 | <el-icon><User/></el-icon> | ||
| 21 | <i class="text-primary">12</i>名化妆师 | ||
| 22 | </span> | ||
| 23 | <span><el-icon><Iphone/></el-icon> | ||
| 24 | 800-820-8820</span> | ||
| 25 | <span><el-icon><Location/></el-icon> | ||
| 26 | 江苏无锡梁溪区南长街5D-601</span> | ||
| 27 | </p> | ||
| 28 | </el-card> | ||
| 29 | <el-row :gutter="20" class="photoWall mt20"> | ||
| 30 | <el-col :span="9"> | ||
| 31 | <el-image class="as16_9"/> | ||
| 32 | </el-col> | ||
| 33 | <el-col :span="5"> | ||
| 34 | <el-row :gutter="20"> | ||
| 35 | <el-col :span="12" class="h50-10px"><el-image/></el-col> | ||
| 36 | <el-col :span="12" class="h50-10px"><el-image/></el-col> | ||
| 37 | <el-col :span="24" class="h50-10px mt20"><el-image/></el-col> | ||
| 38 | </el-row> | ||
| 39 | </el-col> | ||
| 40 | <el-col :span="5"> | ||
| 41 | <el-image/> | ||
| 42 | </el-col> | ||
| 43 | <el-col :span="5"> | ||
| 44 | <el-row :gutter="20"> | ||
| 45 | <el-col :span="12" class="h50-10px"><el-image/></el-col> | ||
| 46 | <el-col :span="12" class="h50-10px"><el-image/></el-col> | ||
| 47 | <el-col :span="24" class="h50-10px mt20"><el-image/></el-col> | ||
| 48 | </el-row> | ||
| 49 | </el-col> | ||
| 50 | </el-row> | ||
| 51 | <el-card class="mt20 mb60"> | ||
| 52 | |||
| 53 | |||
| 54 | </el-card> | ||
| 55 | </div> | ||
| 56 | </div> | ||
| 57 | </div> | ||
| 58 | </template> | ||
| 59 | |||
| 60 | <script setup> | ||
| 61 | import {ref} from "vue" | ||
| 62 | const form = ref({ | ||
| 63 | name: '美妆小店' | ||
| 64 | }) | ||
| 65 | </script> | ||
| 66 | |||
| 67 | <style scoped lang="scss"> | ||
| 68 | .tagbox { | ||
| 69 | margin: 15px 0; | ||
| 70 | |||
| 71 | a { | ||
| 72 | color: #AFB5B9; | ||
| 73 | font-size: 12px; | ||
| 74 | } | ||
| 75 | |||
| 76 | span { | ||
| 77 | border-radius: 13px; | ||
| 78 | font-size: 12px; | ||
| 79 | padding: 4px 10px; | ||
| 80 | margin-right: 10px; | ||
| 81 | font-weight: 400; | ||
| 82 | } | ||
| 83 | |||
| 84 | span:nth-child(4n) { | ||
| 85 | background: rgba(50, 177, 108, 0.2); | ||
| 86 | color: rgba(50, 177, 108, 1); | ||
| 87 | } | ||
| 88 | |||
| 89 | span:nth-child(4n+1) { | ||
| 90 | background: rgba(243, 152, 0, 0.2); | ||
| 91 | color: rgba(243, 152, 0, 1); | ||
| 92 | } | ||
| 93 | |||
| 94 | span:nth-child(4n+2) { | ||
| 95 | background: rgba(0, 160, 233, 0.2); | ||
| 96 | color: rgba(0, 160, 233, 1); | ||
| 97 | } | ||
| 98 | |||
| 99 | span:nth-child(4n+3) { | ||
| 100 | background: rgba(247, 64, 166, 0.2); | ||
| 101 | color: rgba(247, 64, 166, 1); | ||
| 102 | } | ||
| 103 | } | ||
| 104 | .infoLine{font-weight: 400;margin: 7px 0; | ||
| 105 | font-size: 14px; | ||
| 106 | color: #929AA0; | ||
| 107 | i{font-style: normal;} | ||
| 108 | span{margin-right: 10px; | ||
| 109 | i.text-primary{padding: 0 4px;} | ||
| 110 | } | ||
| 111 | .el-icon{position: relative;top:2px;margin-right: 4px;} | ||
| 112 | } | ||
| 113 | .photoWall{ | ||
| 114 | .el-row{height: 100%;} | ||
| 115 | .el-image{ | ||
| 116 | width: 100%;border-radius: 10px;height: 100%; | ||
| 117 | } | ||
| 118 | } | ||
| 119 | .h50-10px{height: calc(50% - 10px)} | ||
| 120 | </style> |
| ... | @@ -37,7 +37,8 @@ | ... | @@ -37,7 +37,8 @@ |
| 37 | </div> | 37 | </div> |
| 38 | </el-col> | 38 | </el-col> |
| 39 | <el-col :sm="12" :lg="8"> | 39 | <el-col :sm="12" :lg="8"> |
| 40 | <div class="item_en" @click="goBooking(0)"><img src="@/assets/dance/btn04.png"> | 40 | <div class="item_en" @click="goBooking(0)"> |
| 41 | <img src="@/assets/dance/btn04.png"> | ||
| 41 | <p>TICKET BOOKING</p> | 42 | <p>TICKET BOOKING</p> |
| 42 | </div> | 43 | </div> |
| 43 | </el-col> | 44 | </el-col> |
| ... | @@ -68,11 +69,13 @@ const props = defineProps({ | ... | @@ -68,11 +69,13 @@ const props = defineProps({ |
| 68 | }) | 69 | }) |
| 69 | const language= useStorage('language',0) | 70 | const language= useStorage('language',0) |
| 70 | function goBooking(n) { | 71 | function goBooking(n) { |
| 71 | // ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') | 72 | ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') |
| 72 | // return | 73 | return |
| 73 | switch (n) { | 74 | switch (n) { |
| 74 | case 0: | 75 | case 0: |
| 75 | // 票务 | 76 | // 票务 |
| 77 | ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') | ||
| 78 | return | ||
| 76 | router.push({path: `/booking/ticket/${props.matchId}`}) | 79 | router.push({path: `/booking/ticket/${props.matchId}`}) |
| 77 | break; | 80 | break; |
| 78 | case 1: | 81 | case 1: |
| ... | @@ -89,10 +92,16 @@ function goBooking(n) { | ... | @@ -89,10 +92,16 @@ function goBooking(n) { |
| 89 | break; | 92 | break; |
| 90 | case 4: | 93 | case 4: |
| 91 | //化妆 | 94 | //化妆 |
| 95 | ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') | ||
| 96 | return | ||
| 97 | |||
| 92 | router.push({path: `/booking/makeup/${props.matchId}`}) | 98 | router.push({path: `/booking/makeup/${props.matchId}`}) |
| 93 | break; | 99 | break; |
| 94 | case 5: | 100 | case 5: |
| 95 | //拍照 | 101 | //拍照 |
| 102 | ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') | ||
| 103 | return | ||
| 104 | |||
| 96 | router.push({path: `/booking/photography/${props.matchId}`}) | 105 | router.push({path: `/booking/photography/${props.matchId}`}) |
| 97 | break; | 106 | break; |
| 98 | } | 107 | } | ... | ... |
| ... | @@ -326,7 +326,7 @@ function codeSuccess(msg) { | ... | @@ -326,7 +326,7 @@ function codeSuccess(msg) { |
| 326 | isCodeTrue.value = true | 326 | isCodeTrue.value = true |
| 327 | checkWdsfAthletes({card: card.value,groupId:groupId}).then(res => { | 327 | checkWdsfAthletes({card: card.value,groupId:groupId}).then(res => { |
| 328 | if (res.data.wdsfFlag==-1) { | 328 | if (res.data.wdsfFlag==-1) { |
| 329 | ElMessage.warning('运动员国籍不符,无法绑定该团体') | 329 | ElMessage.warning(language.value == 0 ?'您添加的运动员代表国家/地区,与团体账号注册的国家/地区不符,无法添加':'The athlete you added represents a country/region that does not match the country/region registered for the group account, and cannot be added') |
| 330 | isCodeTrue.value = false | 330 | isCodeTrue.value = false |
| 331 | return | 331 | return |
| 332 | } | 332 | } | ... | ... |
| ... | @@ -40,7 +40,7 @@ | ... | @@ -40,7 +40,7 @@ |
| 40 | </el-row> | 40 | </el-row> |
| 41 | <el-row :gutter="14" v-else> | 41 | <el-row :gutter="14" v-else> |
| 42 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> | 42 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> |
| 43 | <div class="funcBtn" @click="building"> | 43 | <div class="funcBtn" @click="goBooking(0)"> |
| 44 | <img src="@/assets/dance/btn04.png"/> | 44 | <img src="@/assets/dance/btn04.png"/> |
| 45 | <h4>TICKET BOOKING</h4> | 45 | <h4>TICKET BOOKING</h4> |
| 46 | </div> | 46 | </div> |
| ... | @@ -52,25 +52,25 @@ | ... | @@ -52,25 +52,25 @@ |
| 52 | </div> | 52 | </div> |
| 53 | </el-col> | 53 | </el-col> |
| 54 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> | 54 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> |
| 55 | <div class="funcBtn" @click="building"> | 55 | <div class="funcBtn" @click="goBooking(2)"> |
| 56 | <img src="@/assets/dance/btn02.png"/> | 56 | <img src="@/assets/dance/btn02.png"/> |
| 57 | <h4>TRANSPORTATION RESERVATION</h4> | 57 | <h4>TRANSPORTATION RESERVATION</h4> |
| 58 | </div> | 58 | </div> |
| 59 | </el-col> | 59 | </el-col> |
| 60 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> | 60 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> |
| 61 | <div class="funcBtn" @click="building"> | 61 | <div class="funcBtn" @click="goBooking(3)"> |
| 62 | <img src="@/assets/dance/btn03.png"/> | 62 | <img src="@/assets/dance/btn03.png"/> |
| 63 | <h4>DINING RESERVATION</h4> | 63 | <h4>DINING RESERVATION</h4> |
| 64 | </div> | 64 | </div> |
| 65 | </el-col> | 65 | </el-col> |
| 66 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> | 66 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> |
| 67 | <div class="funcBtn" @click="building"> | 67 | <div class="funcBtn" @click="goBooking(4)"> |
| 68 | <img src="@/assets/dance/btn05.png"/> | 68 | <img src="@/assets/dance/btn05.png"/> |
| 69 | <h4>MAKEUP APPOINTMENT</h4> | 69 | <h4>MAKEUP APPOINTMENT</h4> |
| 70 | </div> | 70 | </div> |
| 71 | </el-col> | 71 | </el-col> |
| 72 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> | 72 | <el-col :lg="4" :md="8" :sm="12" :xs="12"> |
| 73 | <div class="funcBtn" @click="building"> | 73 | <div class="funcBtn" @click="goBooking(5)"> |
| 74 | <img src="@/assets/dance/btn06.png"/> | 74 | <img src="@/assets/dance/btn06.png"/> |
| 75 | <h4>PHOTOGRAPHY APPOINTMENT</h4> | 75 | <h4>PHOTOGRAPHY APPOINTMENT</h4> |
| 76 | </div> | 76 | </div> |
| ... | @@ -98,11 +98,12 @@ function building() { | ... | @@ -98,11 +98,12 @@ function building() { |
| 98 | function goBooking(n) { | 98 | function goBooking(n) { |
| 99 | ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') | 99 | ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') |
| 100 | return | 100 | return |
| 101 | |||
| 102 | switch (n) { | 101 | switch (n) { |
| 103 | case 0: | 102 | case 0: |
| 104 | // 票务 | 103 | // 票务 |
| 105 | router.push({path: `/booking/ticket/${props.matchId}`}) | 104 | ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') |
| 105 | return | ||
| 106 | router.push({path: `/booking/ticket/${props.matchId}`}) | ||
| 106 | break; | 107 | break; |
| 107 | case 1: | 108 | case 1: |
| 108 | //酒店 | 109 | //酒店 |
| ... | @@ -118,10 +119,16 @@ function goBooking(n) { | ... | @@ -118,10 +119,16 @@ function goBooking(n) { |
| 118 | break; | 119 | break; |
| 119 | case 4: | 120 | case 4: |
| 120 | //化妆 | 121 | //化妆 |
| 122 | ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') | ||
| 123 | return | ||
| 124 | |||
| 121 | router.push({path: `/booking/makeup/${props.matchId}`}) | 125 | router.push({path: `/booking/makeup/${props.matchId}`}) |
| 122 | break; | 126 | break; |
| 123 | case 5: | 127 | case 5: |
| 124 | //拍照 | 128 | //拍照 |
| 129 | ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') | ||
| 130 | return | ||
| 131 | |||
| 125 | router.push({path: `/booking/photography/${props.matchId}`}) | 132 | router.push({path: `/booking/photography/${props.matchId}`}) |
| 126 | break; | 133 | break; |
| 127 | } | 134 | } | ... | ... |
-
Please register or sign in to post a comment