拍摄
Showing
3 changed files
with
177 additions
and
129 deletions
| 1 | <template> | 1 | <template> |
| 2 | <div > | 2 | <div> |
| 3 | <el-calendar v-model="currentDate" :range="calendarRange"> | 3 | <el-calendar v-model="currentDate" :range="calendarRange"> |
| 4 | <template #header="{date}"> | 4 | <template #header="{date}"> |
| 5 | <el-row style="width: 100%"> | 5 | <el-row style="width: 100%"> |
| 6 | <el-col :span="7"> | 6 | <el-col :span="7" /> |
| 7 | </el-col> | ||
| 8 | <el-col :span="10"> | 7 | <el-col :span="10"> |
| 9 | <el-row justify="center" align='middle' class="cTitle"> | 8 | <el-row align="middle" class="cTitle" justify="center"> |
| 10 | <!-- <div class="canBtn"><el-icon><ArrowLeftBold /></el-icon></div>--> | 9 | |
| 11 | <!-- <div>--> | 10 | <!-- <div class="canBtn"><el-icon><ArrowLeftBold /></el-icon></div>--> |
| 12 | <!--<!– <el-date-picker–>--> | 11 | <!-- <div>--> |
| 13 | <!--<!– v-model="value2"–>--> | 12 | <!--<!– <el-date-picker–>--> |
| 14 | <!--<!– type="daterange"–>--> | 13 | <!--<!– v-model="value2"–>--> |
| 15 | <!--<!– range-separator="-"–>--> | 14 | <!--<!– type="daterange"–>--> |
| 16 | <!--<!– start-placeholder="Start date"–>--> | 15 | <!--<!– range-separator="-"–>--> |
| 17 | <!--<!– end-placeholder="End date"–>--> | 16 | <!--<!– start-placeholder="Start date"–>--> |
| 18 | <!--<!– format="YYYY-MM-DD"–>--> | 17 | <!--<!– end-placeholder="End date"–>--> |
| 19 | <!--<!– value-format="YYYY-MM-DD"–>--> | 18 | <!--<!– format="YYYY-MM-DD"–>--> |
| 20 | <!--<!– size="small"–>--> | 19 | <!--<!– value-format="YYYY-MM-DD"–>--> |
| 21 | <!--<!– @change="changee"–>--> | 20 | <!--<!– size="small"–>--> |
| 22 | <!--<!– />–>--> | 21 | <!--<!– @change="changee"–>--> |
| 23 | <!-- <el-input readonly v-model="value2" type="text" size="small" style="width: 280px"></el-input>--> | 22 | <!--<!– />–>--> |
| 24 | <!-- </div>--> | 23 | <!-- <el-input readonly v-model="value2" type="text" size="small" style="width: 280px"></el-input>--> |
| 25 | <!-- <div class="canBtn"><el-icon><ArrowRightBold /></el-icon></div>--> | 24 | <!-- </div>--> |
| 26 | {{date}} | 25 | <!-- <div class="canBtn"><el-icon><ArrowRightBold /></el-icon></div>--> |
| 26 | {{ date }} | ||
| 27 | </el-row> | 27 | </el-row> |
| 28 | </el-col> | 28 | </el-col> |
| 29 | <el-col :span="7"> | 29 | <el-col :span="7"> |
| 30 | <div style="text-align: right;padding-right: 10px"> | 30 | <div style="text-align: right;padding-right: 10px"> |
| 31 | <el-date-picker | 31 | <el-date-picker |
| 32 | v-model="currentDate1" | 32 | v-model="currentDate1" |
| 33 | type="date" | 33 | :clearable="false" |
| 34 | placeholder="YYYY-MM-DD" | 34 | :disabled-date="disabledDateRZ" |
| 35 | format="YYYY-MM-DD" | 35 | format="YYYY-MM-DD" |
| 36 | placeholder="YYYY-MM-DD" | ||
| 36 | size="small" | 37 | size="small" |
| 38 | type="date" | ||
| 37 | @change="dateChange" | 39 | @change="dateChange" |
| 38 | :disabled-date="disabledDateRZ" | ||
| 39 | :clearable="false" | ||
| 40 | /> | 40 | /> |
| 41 | </div> | 41 | </div> |
| 42 | </el-col> | 42 | </el-col> |
| ... | @@ -51,30 +51,44 @@ | ... | @@ -51,30 +51,44 @@ |
| 51 | 51 | ||
| 52 | <div class="calendarList"> | 52 | <div class="calendarList"> |
| 53 | <ul v-loading="loading"> | 53 | <ul v-loading="loading"> |
| 54 | <li v-for="n in schList" :key="n.id" > | 54 | <li v-for="n in schList" :key="n.id"> |
| 55 | <el-row style="width: 100%"> | 55 | <el-row style="width: 100%"> |
| 56 | <div style="margin-right: 25px"> | 56 | <div style="margin-right: 25px"> |
| 57 | <el-image style="width: 90px;height: 115px" :src="fillImgUrl(n.photos?.split(',')[0]) " fit="cover" /> | 57 | <el-image :src="fillImgUrl(n.photos?.split(',')[0]) " fit="cover" style="width: 90px;height: 115px" /> |
| 58 | </div> | 58 | </div> |
| 59 | <div style="flex: 1" > | 59 | <div style="flex: 1"> |
| 60 | <div class="hz-title">{{ n.name }}</div> | 60 | <div class="hz-title">{{ n.name }}</div> |
| 61 | <div> | 61 | <div> |
| 62 | <el-row justify="space-between"> | 62 | <el-row justify="space-between"> |
| 63 | <el-row class="hz-p" style="flex: 1"> | 63 | <el-row class="hz-p" style="flex: 1"> |
| 64 | <el-col :span="8"> | 64 | <el-col :span="8"> |
| 65 | <div class="esp_3">{{ language==0?'套餐说明':'Package Description' }}: <span style="margin-right: 20px">{{n.introduction}}</span></div> | 65 | <div class="esp_3">{{ language == 0 ? '套餐说明' : 'Package Description' }}: <span |
| 66 | style="margin-right: 20px" | ||
| 67 | >{{ n.introduction }}</span></div> | ||
| 66 | </el-col> | 68 | </el-col> |
| 67 | 69 | ||
| 68 | <el-col :span="8"> | 70 | <el-col :span="8"> |
| 69 | <div>{{ language==0?'剩余':'' }}<span class="sign">{{ n.num-n.counts }}</span>{{language==0?'名额':'Places Remaining' }} </div> | 71 | <div>{{ language == 0 ? '剩余' : '' }}<span class="sign">{{ |
| 72 | n.num - n.counts | ||
| 73 | }}</span>{{ language == 0 ? '名额' : 'Places Remaining' }} | ||
| 74 | </div> | ||
| 70 | </el-col> | 75 | </el-col> |
| 71 | <el-col :span="8"> | 76 | <el-col :span="8"> |
| 72 | <div >{{n.goHome==1?language==0?'上门拍照':'Door-to-door photo':''}}</div> | 77 | <div>{{ n.goHome == 1 ? language == 0 ? '上门拍照' : 'Door-to-door photo' : '' }}</div> |
| 73 | </el-col> | 78 | </el-col> |
| 74 | </el-row> | 79 | </el-row> |
| 75 | <el-row> | 80 | <el-row> |
| 76 | <div class="zh-margin" style="font-size: 36px;color: #ff8124"><span style="font-size: 24px">{{ language==0?'¥':'€'}} </span> {{language==0?n.photoPrice:n.photoPriceEn}}</div> | 81 | <div class="zh-margin" style="font-size: 36px;color: #ff8124"><span |
| 77 | <el-button :disabled="n.num-n.counts<=0||Date.now()>dayjs(currentDate).subtract(-1,'day').valueOf()" class="btn-lineG w200px" round type="primary" size="large" @click="goMatch(n)">{{ language==0?'立即预约':'Select' }} ⇀</el-button> | 82 | style="font-size: 24px" |
| 83 | >{{ language == 0 ? '¥' : '€' }} </span> | ||
| 84 | {{ language == 0 ? n.photoPrice : n.photoPriceEn }} | ||
| 85 | </div> | ||
| 86 | <el-button | ||
| 87 | :disabled="n.num-n.counts<=0||Date.now()>dayjs(currentDate).subtract(-1,'day').valueOf()" | ||
| 88 | class="btn-lineG w200px" round size="large" type="primary" @click="goMatch(n)" | ||
| 89 | > | ||
| 90 | {{ language == 0 ? '立即预约' : 'Select' }} ⇀ | ||
| 91 | </el-button> | ||
| 78 | </el-row> | 92 | </el-row> |
| 79 | </el-row> | 93 | </el-row> |
| 80 | </div> | 94 | </div> |
| ... | @@ -82,63 +96,66 @@ | ... | @@ -82,63 +96,66 @@ |
| 82 | </el-row> | 96 | </el-row> |
| 83 | </li> | 97 | </li> |
| 84 | </ul> | 98 | </ul> |
| 85 | <el-empty v-if="schList.length== 0" | 99 | <el-empty |
| 86 | style="--el-empty-padding:0;--el-empty-description-margin-top:0" | 100 | v-if="schList.length== 0" |
| 87 | :image="`/img/order_no.png`" | 101 | :image="`/img/order_no.png`" |
| 88 | :image-size="200"/> | 102 | :image-size="200" |
| 103 | style="--el-empty-padding:0;--el-empty-description-margin-top:0" | ||
| 104 | /> | ||
| 89 | </div> | 105 | </div> |
| 90 | </div> | 106 | </div> |
| 91 | </template> | 107 | </template> |
| 92 | 108 | ||
| 93 | <script setup> | 109 | <script setup> |
| 94 | import {ref,onMounted} from "vue"; | 110 | import { ref, onMounted } from 'vue' |
| 95 | import {dayjs} from "element-plus"; | 111 | import { dayjs } from 'element-plus' |
| 96 | import {useRoute,useRouter} from 'vue-router' | 112 | import { useRoute, useRouter } from 'vue-router' |
| 97 | import * as booking from "@/apiPc/booking" | 113 | import * as booking from '@/apiPc/booking' |
| 98 | import {useStorage} from "@vueuse/core/index"; | 114 | import { useStorage } from '@vueuse/core/index' |
| 99 | import useUserStore from "/@/store/modules/user"; | 115 | import useUserStore from '/@/store/modules/user' |
| 100 | import {getActivityPhotoVoListByShootId, getBaseInfoByActiveId} from "@/apiPc/booking"; | 116 | import { getActivityPhotoVoListByShootId, getBaseInfoByActiveId } from '@/apiPc/booking' |
| 101 | import {ElMessageBox} from'element-plus' | 117 | import { ElMessageBox } from 'element-plus' |
| 102 | 118 | import { getCurrentInstance } from '@vue/runtime-core' | |
| 119 | |||
| 120 | const { proxy } = getCurrentInstance() | ||
| 103 | const user = useUserStore().user | 121 | const user = useUserStore().user |
| 104 | const language = useStorage('language', 0) | 122 | const language = useStorage('language', 0) |
| 105 | const router = useRouter() | 123 | const router = useRouter() |
| 106 | const route=useRoute() | 124 | const route = useRoute() |
| 107 | const currentDate = ref(new Date()) | 125 | const currentDate = ref(new Date()) |
| 108 | const currentDate1 = ref(new Date()) | 126 | const currentDate1 = ref(new Date()) |
| 109 | const calendarRange = ref([dayjs(currentDate.value).toDate(),(dayjs(currentDate.value).toDate())]) | 127 | const calendarRange = ref([dayjs(currentDate.value).toDate(), (dayjs(currentDate.value).toDate())]) |
| 110 | const schList = ref([]) | 128 | const schList = ref([]) |
| 111 | const loading = ref(false) | 129 | const loading = ref(false) |
| 112 | const query = ref({ | 130 | const query = ref({ |
| 113 | lasId:route.params.id, | 131 | lasId: route.params.id |
| 114 | }) | 132 | }) |
| 115 | const value2=ref('') | 133 | const value2 = ref('') |
| 116 | const formTime=ref() | 134 | const formTime = ref() |
| 117 | 135 | ||
| 118 | onMounted(() => { | 136 | onMounted(() => { |
| 119 | getBaseInfoByActiveId(route.params.cptId).then(res=>{ | 137 | getBaseInfoByActiveId(route.params.cptId).then(res => { |
| 120 | formTime.value = res.data || null | 138 | formTime.value = res.data || null |
| 121 | }).catch(err=>{ | 139 | }).catch(err => { |
| 122 | console.log(err) | 140 | console.log(err) |
| 123 | formTime.value = null | 141 | formTime.value = null |
| 124 | }).finally(()=>{ | 142 | }).finally(() => { |
| 125 | getData() | 143 | getData() |
| 126 | getScheduleList() | 144 | getScheduleList() |
| 127 | }) | 145 | }) |
| 128 | }) | 146 | }) |
| 129 | 147 | ||
| 130 | 148 | ||
| 131 | function getData(){ | 149 | function getData() { |
| 132 | if (!formTime.value.photoStart) return | 150 | if (!formTime.value.photoStart) return |
| 133 | const toDay=dayjs(dayjs().format('YYYY-MM-DD')).valueOf() | 151 | const toDay = dayjs(dayjs().format('YYYY-MM-DD')).valueOf() |
| 134 | const start=dayjs(formTime.value.photoStart).valueOf() | 152 | const start = dayjs(formTime.value.photoStart).valueOf() |
| 135 | if(toDay<start){ | 153 | if (toDay < start) { |
| 136 | currentDate1.value= query.value.currentDate = dayjs(start).format('YYYY-MM-DD') | 154 | currentDate1.value = query.value.currentDate = dayjs(start).format('YYYY-MM-DD') |
| 137 | 155 | } else { | |
| 138 | }else{ | ||
| 139 | currentDate1.value = query.value.currentDate = dayjs(toDay).format('YYYY-MM-DD') | 156 | currentDate1.value = query.value.currentDate = dayjs(toDay).format('YYYY-MM-DD') |
| 140 | } | 157 | } |
| 141 | calendarRange.value=[dayjs(currentDate1.value).toDate(),(dayjs(currentDate1.value).toDate())] | 158 | calendarRange.value = [dayjs(currentDate1.value).toDate(), (dayjs(currentDate1.value).toDate())] |
| 142 | } | 159 | } |
| 143 | 160 | ||
| 144 | 161 | ||
| ... | @@ -146,30 +163,36 @@ function getScheduleList() { | ... | @@ -146,30 +163,36 @@ function getScheduleList() { |
| 146 | loading.value = true | 163 | loading.value = true |
| 147 | query.value.currentDate = dayjs(currentDate.value).format('YYYY-MM-DD') | 164 | query.value.currentDate = dayjs(currentDate.value).format('YYYY-MM-DD') |
| 148 | console.log(query.value) | 165 | console.log(query.value) |
| 149 | booking.getActivityPhotoVoListByShootId(query.value).then(res=>{ | 166 | booking.getActivityPhotoVoListByShootId(query.value).then(res => { |
| 150 | loading.value = false | 167 | loading.value = false |
| 151 | schList.value = res.data | 168 | schList.value = res.data |
| 152 | }) | 169 | }) |
| 153 | } | 170 | } |
| 171 | |||
| 154 | function selectDate(date) { | 172 | function selectDate(date) { |
| 155 | currentDate1.value= currentDate.value=dayjs(date).toDate() | 173 | currentDate1.value = currentDate.value = dayjs(date).toDate() |
| 156 | getScheduleList() | 174 | getScheduleList() |
| 157 | } | 175 | } |
| 158 | 176 | ||
| 159 | function dateChange(){ | 177 | function dateChange() { |
| 160 | currentDate.value=currentDate1.value | 178 | currentDate.value = currentDate1.value |
| 161 | calendarRange.value=[dayjs(currentDate.value).toDate(),(dayjs(currentDate.value).toDate())] | 179 | calendarRange.value = [dayjs(currentDate.value).toDate(), (dayjs(currentDate.value).toDate())] |
| 162 | getScheduleList() | 180 | getScheduleList() |
| 163 | } | 181 | } |
| 164 | 182 | ||
| 165 | function goMatch(n) { | 183 | async function goMatch(n) { |
| 166 | console.log(11) | 184 | console.log(11) |
| 185 | const { data } = await getBaseInfoByActiveId(route.params.cptId) | ||
| 186 | if (data.isPhotoView == 0) { | ||
| 187 | return proxy.$modal.confirm(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') | ||
| 188 | } | ||
| 189 | |||
| 167 | if (!user) { | 190 | if (!user) { |
| 168 | useUserStore().setVisitor() | 191 | useUserStore().setVisitor() |
| 169 | return | 192 | return |
| 170 | } | 193 | } |
| 171 | 194 | ||
| 172 | ElMessageBox.confirm(language.value==0?`你当前所预约的时间为${query.value.currentDate}是否确定?`:`Your current appointment is ${query.value.currentDate}. Are you sure?`,{type:'warning'}) | 195 | ElMessageBox.confirm(language.value == 0 ? `你当前所预约的时间为${query.value.currentDate}是否确定?` : `Your current appointment is ${query.value.currentDate}. Are you sure?`, { type: 'warning' }) |
| 173 | .then((rr) => { | 196 | .then((rr) => { |
| 174 | console.log(rr) | 197 | console.log(rr) |
| 175 | router.push({ | 198 | router.push({ |
| ... | @@ -186,25 +209,23 @@ function goMatch(n) { | ... | @@ -186,25 +209,23 @@ function goMatch(n) { |
| 186 | // catch error | 209 | // catch error |
| 187 | console.log(e) | 210 | console.log(e) |
| 188 | }) | 211 | }) |
| 189 | |||
| 190 | |||
| 191 | } | 212 | } |
| 192 | 213 | ||
| 193 | function disabledDateRZ(date) { | 214 | function disabledDateRZ(date) { |
| 194 | if (formTime.value) { | 215 | if (formTime.value) { |
| 195 | const toDay=dayjs(dayjs().format('YYYY-MM-DD')).valueOf() | 216 | const toDay = dayjs(dayjs().format('YYYY-MM-DD')).valueOf() |
| 196 | const start=dayjs(formTime.value.photoStart).valueOf() | 217 | const start = dayjs(formTime.value.photoStart).valueOf() |
| 197 | const end=dayjs(formTime.value.photoEnd).valueOf() | 218 | const end = dayjs(formTime.value.photoEnd).valueOf() |
| 198 | if (toDay<start) { | 219 | if (toDay < start) { |
| 199 | return date.getTime()<start||date.getTime()>end | 220 | return date.getTime() < start || date.getTime() > end |
| 200 | } else if(toDay>start&&toDay <end) { | 221 | } else if (toDay > start && toDay < end) { |
| 201 | return date.getTime()<toDay||date.getTime()>end | 222 | return date.getTime() < toDay || date.getTime() > end |
| 202 | }else return true | 223 | } else return true |
| 203 | } | 224 | } |
| 204 | } | 225 | } |
| 205 | </script> | 226 | </script> |
| 206 | 227 | ||
| 207 | <style scoped lang="scss"> | 228 | <style lang="scss" scoped> |
| 208 | .el-calendar { | 229 | .el-calendar { |
| 209 | --el-calendar-border: none; | 230 | --el-calendar-border: none; |
| 210 | --el-calendar-cell-width: 40px; | 231 | --el-calendar-cell-width: 40px; |
| ... | @@ -259,7 +280,8 @@ function disabledDateRZ(date) { | ... | @@ -259,7 +280,8 @@ function disabledDateRZ(date) { |
| 259 | height: 625px; | 280 | height: 625px; |
| 260 | 281 | ||
| 261 | ul { | 282 | ul { |
| 262 | li {cursor: pointer; | 283 | li { |
| 284 | cursor: pointer; | ||
| 263 | background: #F6F9FE; | 285 | background: #F6F9FE; |
| 264 | margin: 7px 0 7px 20px; | 286 | margin: 7px 0 7px 20px; |
| 265 | position: relative; | 287 | position: relative; |
| ... | @@ -323,21 +345,22 @@ function disabledDateRZ(date) { | ... | @@ -323,21 +345,22 @@ function disabledDateRZ(date) { |
| 323 | } | 345 | } |
| 324 | } | 346 | } |
| 325 | 347 | ||
| 326 | .hz-title{ | 348 | .hz-title { |
| 327 | font-size: 20px; | 349 | font-size: 20px; |
| 328 | font-weight: 400; | 350 | font-weight: 400; |
| 329 | color: #000; | 351 | color: #000; |
| 330 | margin-top:20px; | 352 | margin-top: 20px; |
| 331 | margin-bottom: 10px; | 353 | margin-bottom: 10px; |
| 332 | } | 354 | } |
| 333 | 355 | ||
| 334 | .zh-margin{ | 356 | .zh-margin { |
| 335 | font-weight: bold; | 357 | font-weight: bold; |
| 336 | font-size: 36px; | 358 | font-size: 36px; |
| 337 | color: #FF8124; | 359 | color: #FF8124; |
| 338 | margin-right: 30px; | 360 | margin-right: 30px; |
| 339 | } | 361 | } |
| 340 | .hz-p{ | 362 | |
| 363 | .hz-p { | ||
| 341 | font-size: 16px; | 364 | font-size: 16px; |
| 342 | color: #4C5359; | 365 | color: #4C5359; |
| 343 | font-weight: 400; | 366 | font-weight: 400; |
| ... | @@ -349,7 +372,7 @@ function disabledDateRZ(date) { | ... | @@ -349,7 +372,7 @@ function disabledDateRZ(date) { |
| 349 | line-height: 50px; | 372 | line-height: 50px; |
| 350 | } | 373 | } |
| 351 | 374 | ||
| 352 | .canBtn{ | 375 | .canBtn { |
| 353 | color: #453DEA; | 376 | color: #453DEA; |
| 354 | border-radius: 2px; | 377 | border-radius: 2px; |
| 355 | width: 22px; | 378 | width: 22px; |
| ... | @@ -358,10 +381,10 @@ function disabledDateRZ(date) { | ... | @@ -358,10 +381,10 @@ function disabledDateRZ(date) { |
| 358 | text-align: center; | 381 | text-align: center; |
| 359 | background-color: #fff; | 382 | background-color: #fff; |
| 360 | margin: 0 16px -2px 16px; | 383 | margin: 0 16px -2px 16px; |
| 361 | cursor:pointer | 384 | cursor: pointer |
| 362 | } | 385 | } |
| 363 | 386 | ||
| 364 | .cTitle{ | 387 | .cTitle { |
| 365 | color: #fff; | 388 | color: #fff; |
| 366 | font-size: 20px; | 389 | font-size: 20px; |
| 367 | font-weight: 500; | 390 | font-weight: 500; | ... | ... |
| ... | @@ -5,69 +5,73 @@ | ... | @@ -5,69 +5,73 @@ |
| 5 | <el-row> | 5 | <el-row> |
| 6 | <div class="zh-title">{{ form.name }}</div> | 6 | <div class="zh-title">{{ form.name }}</div> |
| 7 | <div class="tagbox esp"> | 7 | <div class="tagbox esp"> |
| 8 | <span v-for="(t,index) in form.label?.split(',')" v-show="index<4">{{t}}</span> | 8 | <span v-for="(t,index) in form.label?.split(',')" v-show="index<4">{{ t }}</span> |
| 9 | </div> | 9 | </div> |
| 10 | </el-row> | 10 | </el-row> |
| 11 | <el-row class="hz-row"> | 11 | <el-row class="hz-row"> |
| 12 | <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"> | 12 | <el-icon color="#929AA0" size="16" style="position: relative;top: 2px"> |
| 13 | <OfficeBuilding/> | 13 | <OfficeBuilding /> |
| 14 | </el-icon> | 14 | </el-icon> |
| 15 | {{ language==0?'成立':'Established for'}} <span class="sign">{{form.ageLimit}}</span>{{language==0?'年':'years'}} | | 15 | {{ language == 0 ? '成立' : 'Established for' }} <span |
| 16 | <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"> | 16 | class="sign" |
| 17 | <UserFilled/> | 17 | >{{ form.ageLimit }}</span>{{ language == 0 ? '年' : 'years' }} | |
| 18 | <el-icon color="#929AA0" size="16" style="position: relative;top: 2px"> | ||
| 19 | <UserFilled /> | ||
| 18 | </el-icon> | 20 | </el-icon> |
| 19 | <span class="sign"> {{ form.dresserLimit }}</span>{{language==0?'名摄影师':'Photographers' }} | | 21 | <span class="sign"> {{ form.dresserLimit }}</span>{{ language == 0 ? '名摄影师' : 'Photographers' }} | |
| 20 | <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"> | 22 | <el-icon color="#929AA0" size="16" style="position: relative;top: 2px"> |
| 21 | <PhoneFilled/> | 23 | <PhoneFilled /> |
| 22 | </el-icon> | 24 | </el-icon> |
| 23 | <span style="padding-top: 2px"> | 25 | <span style="padding-top: 2px"> |
| 24 | {{ form.contact }} | 26 | {{ form.contact }} |
| 25 | </span> | 27 | </span> |
| 26 | | | 28 | | |
| 27 | <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"> | 29 | <el-icon color="#929AA0" size="16" style="position: relative;top: 2px"> |
| 28 | <LocationFilled/> | 30 | <LocationFilled /> |
| 29 | </el-icon> | 31 | </el-icon> |
| 30 | {{form.remarks}} | 32 | {{ form.remarks }} |
| 31 | </el-row> | 33 | </el-row> |
| 32 | <div style="display: flex"> | 34 | <div style="display: flex"> |
| 33 | <div style="min-width: 130px" class="title">{{language==0?'工作室简介:':'Studio profile:'}}</div> | 35 | <div class="title" style="min-width: 130px">{{ language == 0 ? '工作室简介:' : 'Studio profile:' }}</div> |
| 34 | <div v-html="form.introduction"></div> | 36 | <div v-html="form.introduction" /> |
| 35 | </div> | 37 | </div> |
| 36 | </el-card> | 38 | </el-card> |
| 37 | <div class="mt30"> | 39 | <div class="mt30"> |
| 38 | <el-row :gutter="20"> | 40 | <el-row :gutter="20"> |
| 39 | <el-col :span="10"> | 41 | <el-col :span="10"> |
| 40 | <div class="imgbox hotelImg"> | 42 | <div class="imgbox hotelImg"> |
| 41 | <el-image :src="form?.photosList?.[0]" fit="cover" :preview-src-list="form?.photosList"/> | 43 | <el-image :preview-src-list="form?.photosList" :src="form?.photosList?.[0]" fit="cover" /> |
| 42 | </div> | 44 | </div> |
| 43 | </el-col> | 45 | </el-col> |
| 44 | <el-col :span="14"> | 46 | <el-col :span="14"> |
| 45 | <el-row class="h100" :gutter="20"> | 47 | <el-row :gutter="20" class="h100"> |
| 46 | <el-col :span="8" class="oddmb" v-for="(p,index) in form?.photosList?.slice(1,7)"> | 48 | <el-col v-for="(p,index) in form?.photosList?.slice(1,7)" :span="8" class="oddmb"> |
| 47 | <div class="imgbox hotelImg"><el-image :src="p" fit="cover"/></div> | 49 | <div class="imgbox hotelImg"> |
| 50 | <el-image :src="p" fit="cover" /> | ||
| 51 | </div> | ||
| 48 | </el-col> | 52 | </el-col> |
| 49 | </el-row> | 53 | </el-row> |
| 50 | </el-col> | 54 | </el-col> |
| 51 | </el-row> | 55 | </el-row> |
| 52 | </div> | 56 | </div> |
| 53 | <br> | 57 | <br> |
| 54 | |||
| 55 | <el-card :body-style="{'padding':'20px 20px'}"> | 58 | <el-card :body-style="{'padding':'20px 20px'}"> |
| 56 | <PhotoGraphyCalendar/> | 59 | <PhotoGraphyCalendar /> |
| 57 | </el-card> | 60 | </el-card> |
| 58 | </div> | 61 | </div> |
| 59 | </div> | 62 | </div> |
| 60 | </template> | 63 | </template> |
| 61 | 64 | ||
| 62 | <script setup > | 65 | <script setup> |
| 63 | import {useRouter} from "vue-router"; | 66 | import { useRouter } from 'vue-router' |
| 64 | import {ref, reactive, onMounted} from "vue"; | 67 | import { ref, reactive, onMounted } from 'vue' |
| 65 | import {useRoute} from "vue-router"; | 68 | import { useRoute } from 'vue-router' |
| 66 | import * as booking from "@/apiPc/booking" | 69 | import * as booking from '@/apiPc/booking' |
| 67 | import {useStorage} from "@vueuse/core/index"; | 70 | import { useStorage } from '@vueuse/core/index' |
| 68 | import useUserStore from "@/store/modules/user"; | 71 | import useUserStore from '@/store/modules/user' |
| 69 | import PhotoGraphyCalendar from "@/viewsPc/booking/component/photoGraphyCalendar.vue"; | 72 | import PhotoGraphyCalendar from '@/viewsPc/booking/component/photoGraphyCalendar.vue' |
| 70 | import {fillImgUrl} from "/@/utils/ruoyi"; | 73 | import { fillImgUrl } from '/@/utils/ruoyi' |
| 74 | |||
| 71 | const user = useUserStore().user | 75 | const user = useUserStore().user |
| 72 | const language = useStorage('language', 0) | 76 | const language = useStorage('language', 0) |
| 73 | const router = useRouter() | 77 | const router = useRouter() |
| ... | @@ -75,7 +79,7 @@ const route = useRoute() | ... | @@ -75,7 +79,7 @@ const route = useRoute() |
| 75 | const form = ref({}) | 79 | const form = ref({}) |
| 76 | const query = ref({ | 80 | const query = ref({ |
| 77 | activityId: route.params.cptId, | 81 | activityId: route.params.cptId, |
| 78 | id:route.params.id | 82 | id: route.params.id |
| 79 | }) | 83 | }) |
| 80 | const loading = ref(false) | 84 | const loading = ref(false) |
| 81 | const map = ref(null) | 85 | const map = ref(null) |
| ... | @@ -88,19 +92,18 @@ function getData() { | ... | @@ -88,19 +92,18 @@ function getData() { |
| 88 | booking.getComShootVoById(query.value).then(res => { | 92 | booking.getComShootVoById(query.value).then(res => { |
| 89 | loading.value = false | 93 | loading.value = false |
| 90 | form.value = res.data | 94 | form.value = res.data |
| 91 | form.value.photosList=[] | 95 | form.value.photosList = [] |
| 92 | form.value.photos.split(',').forEach(v=>{ | 96 | form.value.photos.split(',').forEach(v => { |
| 93 | form.value.photosList.push(fillImgUrl(v)) | 97 | form.value.photosList.push(fillImgUrl(v)) |
| 94 | }) | 98 | }) |
| 95 | }).catch(err => { | 99 | }).catch(err => { |
| 96 | console.log(err) | 100 | console.log(err) |
| 97 | }) | 101 | }) |
| 98 | |||
| 99 | } | 102 | } |
| 100 | 103 | ||
| 101 | </script> | 104 | </script> |
| 102 | 105 | ||
| 103 | <style scoped lang="scss"> | 106 | <style lang="scss" scoped> |
| 104 | .room { | 107 | .room { |
| 105 | background: #FAFBFD; | 108 | background: #FAFBFD; |
| 106 | margin: 20px 0 0; | 109 | margin: 20px 0 0; |
| ... | @@ -260,14 +263,17 @@ function getData() { | ... | @@ -260,14 +263,17 @@ function getData() { |
| 260 | width: 100%; | 263 | width: 100%; |
| 261 | height: 100%; | 264 | height: 100%; |
| 262 | position: relative; | 265 | position: relative; |
| 263 | img{object-fit: cover} | 266 | |
| 267 | img { | ||
| 268 | object-fit: cover | ||
| 269 | } | ||
| 264 | } | 270 | } |
| 265 | 271 | ||
| 266 | .img-hover{ | 272 | .img-hover { |
| 267 | position: absolute; | 273 | position: absolute; |
| 268 | top: 0; | 274 | top: 0; |
| 269 | left: 0; | 275 | left: 0; |
| 270 | background-color: rgb(0,0,0,.5); | 276 | background-color: rgb(0, 0, 0, .5); |
| 271 | color: #fff; | 277 | color: #fff; |
| 272 | font-size: 18px; | 278 | font-size: 18px; |
| 273 | font-weight: 400; | 279 | font-weight: 400; |
| ... | @@ -279,12 +285,25 @@ function getData() { | ... | @@ -279,12 +285,25 @@ function getData() { |
| 279 | 285 | ||
| 280 | //display: none; | 286 | //display: none; |
| 281 | } | 287 | } |
| 282 | .hotelImg{border-radius: 10px;overflow: hidden;aspect-ratio: 16/9; | 288 | |
| 283 | img{object-fit: cover;object-position: center;width: 100%;height: 100%; | 289 | .hotelImg { |
| 290 | border-radius: 10px; | ||
| 291 | overflow: hidden; | ||
| 292 | aspect-ratio: 16/9; | ||
| 293 | |||
| 294 | img { | ||
| 295 | object-fit: cover; | ||
| 296 | object-position: center; | ||
| 297 | width: 100%; | ||
| 298 | height: 100%; | ||
| 284 | } | 299 | } |
| 285 | } | 300 | } |
| 286 | .oddmb:nth-child(2){margin-bottom: 20px;} | 301 | |
| 287 | .title{ | 302 | .oddmb:nth-child(2) { |
| 303 | margin-bottom: 20px; | ||
| 304 | } | ||
| 305 | |||
| 306 | .title { | ||
| 288 | width: 130px; | 307 | width: 130px; |
| 289 | font-weight: 500; | 308 | font-weight: 500; |
| 290 | font-size: 18px; | 309 | font-size: 18px; | ... | ... |
| ... | @@ -133,7 +133,7 @@ | ... | @@ -133,7 +133,7 @@ |
| 133 | </div> | 133 | </div> |
| 134 | <div class="text-right"> | 134 | <div class="text-right"> |
| 135 | <el-button | 135 | <el-button |
| 136 | v-if="(b.orderType == 0||b.orderType == 5||b.orderType==1||b.orderType==2||b.orderType==3)&&b.viewStatus!=0" | 136 | v-if="(b.orderType == 0||b.orderType == 5||b.orderType==1||b.orderType==2||b.orderType==3||b.orderType==4)&&b.viewStatus!=0" |
| 137 | class="mb10" plain round | 137 | class="mb10" plain round |
| 138 | size="small" type="success" | 138 | size="small" type="success" |
| 139 | @click="Rebook(b)" | 139 | @click="Rebook(b)" |
| ... | @@ -266,6 +266,12 @@ function Rebook(row) { | ... | @@ -266,6 +266,12 @@ function Rebook(row) { |
| 266 | path: `/booking/makeUp/${row.activeId}/${row.extId}` | 266 | path: `/booking/makeUp/${row.activeId}/${row.extId}` |
| 267 | }) | 267 | }) |
| 268 | } | 268 | } |
| 269 | // 拍摄 | ||
| 270 | if (row.orderType == 4) { | ||
| 271 | return router.push({ | ||
| 272 | path: `/booking/photography/${row.activeId}/${row.extId}` | ||
| 273 | }) | ||
| 274 | } | ||
| 269 | 275 | ||
| 270 | if (row.orderType == 5) { | 276 | if (row.orderType == 5) { |
| 271 | router.push({ | 277 | router.push({ | ... | ... |
-
Please register or sign in to post a comment