世锦赛
Showing
6 changed files
with
590 additions
and
199 deletions
| ... | @@ -101,6 +101,12 @@ export const constantRoutes = [ | ... | @@ -101,6 +101,12 @@ export const constantRoutes = [ |
| 101 | meta: {title: '舞蹈节'} | 101 | meta: {title: '舞蹈节'} |
| 102 | }, | 102 | }, |
| 103 | { | 103 | { |
| 104 | path: 'operation', | ||
| 105 | component: () => import('@/viewsPc/about/operation'), | ||
| 106 | name: 'operation', | ||
| 107 | meta: {title: '操作手册'} | ||
| 108 | }, | ||
| 109 | { | ||
| 104 | path: 'culture', | 110 | path: 'culture', |
| 105 | component: () => import('@/viewsPc/about/culture'), | 111 | component: () => import('@/viewsPc/about/culture'), |
| 106 | name: 'culture', | 112 | name: 'culture', |
| ... | @@ -211,7 +217,7 @@ export const constantRoutes = [ | ... | @@ -211,7 +217,7 @@ export const constantRoutes = [ |
| 211 | name: 'personListHasKind', | 217 | name: 'personListHasKind', |
| 212 | meta: {title: '人员列表'} | 218 | meta: {title: '人员列表'} |
| 213 | } | 219 | } |
| 214 | 220 | ||
| 215 | ] | 221 | ] |
| 216 | }, | 222 | }, |
| 217 | { | 223 | { |
| ... | @@ -680,7 +686,7 @@ export const constantRoutes = [ | ... | @@ -680,7 +686,7 @@ export const constantRoutes = [ |
| 680 | name: 'payOk', | 686 | name: 'payOk', |
| 681 | meta: {title: '支付成功'} | 687 | meta: {title: '支付成功'} |
| 682 | }, | 688 | }, |
| 683 | 689 | ||
| 684 | { | 690 | { |
| 685 | path: 'commitDone/:orderId', | 691 | path: 'commitDone/:orderId', |
| 686 | component: () => import('@/viewsPc/match/commitDone'), | 692 | component: () => import('@/viewsPc/match/commitDone'), | ... | ... |
src/viewsPc/about/operation.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="mt20"/> | ||
| 4 | <div class="box"> | ||
| 5 | <el-card> | ||
| 6 | <el-row> | ||
| 7 | <el-col> | ||
| 8 | <div class="infoPart pd20"> | ||
| 9 | <h3 class="leftboderTT">{{ language == 0 ? '操作手册' : 'The Manual' }}</h3> | ||
| 10 | <br> | ||
| 11 | <div style="padding-left: 30px"> | ||
| 12 | <el-link v-for="v in fileList" :href="fillImgUrl(v.url)" :underline="false" class="link" target="_blank" | ||
| 13 | type="primary"> | ||
| 14 | <span style="border-bottom: 1px solid var(--el-color-primary)"> | ||
| 15 | {{ v.name }} | ||
| 16 | <el-icon style="margin-left: 10px;position: relative;bottom: -2px"> | ||
| 17 | <Download/> | ||
| 18 | </el-icon> | ||
| 19 | </span> | ||
| 20 | |||
| 21 | </el-link> | ||
| 22 | </div> | ||
| 23 | <div class="content"> | ||
| 24 | <div v-html="content"></div> | ||
| 25 | </div> | ||
| 26 | |||
| 27 | </div> | ||
| 28 | </el-col> | ||
| 29 | </el-row> | ||
| 30 | </el-card> | ||
| 31 | |||
| 32 | <div v-if="false" class="indexTitle"> | ||
| 33 | <h3 class="leftboderTT">{{ language == 0 ? '联系我们' : 'CONTACT US' }}</h3> | ||
| 34 | </div> | ||
| 35 | <div v-if="false" class="mapBox mb20"> | ||
| 36 | <div class="content"> | ||
| 37 | <div v-for="(item,index) in contact" :class="index==0?'phone':index==1?'address':'email'"> | ||
| 38 | <h4>{{ language == 1 ? item.ename : item.name }}</h4> | ||
| 39 | <p>{{ language == 0 ? item.value : item.evalue }}</p> | ||
| 40 | </div> | ||
| 41 | </div> | ||
| 42 | </div> | ||
| 43 | </div> | ||
| 44 | |||
| 45 | <div style="height: 50px"></div> | ||
| 46 | </div> | ||
| 47 | </template> | ||
| 48 | |||
| 49 | <script setup> | ||
| 50 | import {useStorage} from "@vueuse/core"; | ||
| 51 | import {onMounted, ref} from "vue"; | ||
| 52 | import {getppInfo} from "@/apiPc/match"; | ||
| 53 | import {useRoute} from "vue-router"; | ||
| 54 | import {fillImgUrl} from "/@/utils/ruoyi"; | ||
| 55 | |||
| 56 | const route = useRoute() | ||
| 57 | const language = useStorage('language', 0) | ||
| 58 | |||
| 59 | const activeIndex = ref(0) | ||
| 60 | const content = ref('') | ||
| 61 | const fileList = ref([]) | ||
| 62 | |||
| 63 | onMounted(() => { | ||
| 64 | if (route.query.activeIndex) { | ||
| 65 | activeIndex.value = route.query.activeIndex | ||
| 66 | } | ||
| 67 | getMenuList() | ||
| 68 | }) | ||
| 69 | const getMenuList = () => { | ||
| 70 | |||
| 71 | getppInfo('10000005').then(res => { | ||
| 72 | if (language.value == 0) { | ||
| 73 | content.value = res.data.contextZh | ||
| 74 | fileList.value = JSON.parse(res.data.fileZh) | ||
| 75 | } else { | ||
| 76 | content.value = res.data.contextEh | ||
| 77 | fileList.value = JSON.parse(res.data.fileEn) | ||
| 78 | } | ||
| 79 | }) | ||
| 80 | } | ||
| 81 | |||
| 82 | </script> | ||
| 83 | |||
| 84 | <style lang="scss" scoped> | ||
| 85 | .link { | ||
| 86 | font-size: 16px; | ||
| 87 | display: block; | ||
| 88 | margin-bottom: 10px; | ||
| 89 | } | ||
| 90 | |||
| 91 | .leftNav { | ||
| 92 | ul { | ||
| 93 | border-right: 2px solid #E5E5E5; | ||
| 94 | padding: 0 20px 0 0; | ||
| 95 | } | ||
| 96 | |||
| 97 | li { | ||
| 98 | margin: 30px 0; | ||
| 99 | padding: 10px; | ||
| 100 | text-align: right; | ||
| 101 | border-radius: 2px; | ||
| 102 | position: relative; | ||
| 103 | font-weight: 600; | ||
| 104 | text-transform: uppercase; | ||
| 105 | font-size: 18px; | ||
| 106 | cursor: pointer; | ||
| 107 | background: linear-gradient(90deg, rgba(134, 35, 252, 0.1), rgba(69, 61, 234, 0.1)); | ||
| 108 | } | ||
| 109 | |||
| 110 | li::after { | ||
| 111 | content: ''; | ||
| 112 | position: absolute; | ||
| 113 | background: #898989; | ||
| 114 | width: 8px; | ||
| 115 | height: 8px; | ||
| 116 | border-radius: 50%; | ||
| 117 | right: -29px; | ||
| 118 | border: 4px solid #fff; | ||
| 119 | outline: 2px solid #898989; | ||
| 120 | box-sizing: content-box; | ||
| 121 | top: 0; | ||
| 122 | bottom: 0; | ||
| 123 | margin: auto; | ||
| 124 | } | ||
| 125 | |||
| 126 | li.active { | ||
| 127 | color: #fff; | ||
| 128 | background: #000; | ||
| 129 | |||
| 130 | &::after { | ||
| 131 | outline: 2px solid #000; | ||
| 132 | background: #000; | ||
| 133 | } | ||
| 134 | } | ||
| 135 | } | ||
| 136 | |||
| 137 | .infoPart { | ||
| 138 | .leftboderTT { | ||
| 139 | font-size: 20px; | ||
| 140 | color: var(--el-color-primary); | ||
| 141 | } | ||
| 142 | } | ||
| 143 | |||
| 144 | .content { | ||
| 145 | margin: 20px 0 0; | ||
| 146 | text-indent: 2em; | ||
| 147 | line-height: 1.8; | ||
| 148 | font-weight: 400; | ||
| 149 | font-size: 16px; | ||
| 150 | color: #29343C; | ||
| 151 | |||
| 152 | img { | ||
| 153 | max-width: 100%; | ||
| 154 | margin: 20px auto; | ||
| 155 | display: block; | ||
| 156 | } | ||
| 157 | |||
| 158 | h4 { | ||
| 159 | text-indent: 0 | ||
| 160 | } | ||
| 161 | } | ||
| 162 | |||
| 163 | .mapBox { | ||
| 164 | background: url("@/assets/zhinan/map.png") no-repeat right; | ||
| 165 | height: 375px; | ||
| 166 | background-size: cover; | ||
| 167 | padding: 1px; | ||
| 168 | position: relative; | ||
| 169 | display: flex; | ||
| 170 | |||
| 171 | .content { | ||
| 172 | background: #fff; | ||
| 173 | width: 60%; | ||
| 174 | left: 40px; | ||
| 175 | padding: 30px; | ||
| 176 | text-indent: 0; | ||
| 177 | line-height: 1; | ||
| 178 | position: absolute; | ||
| 179 | height: 90%; | ||
| 180 | top: 0; | ||
| 181 | bottom: 0; | ||
| 182 | margin: auto; | ||
| 183 | } | ||
| 184 | |||
| 185 | div { | ||
| 186 | padding-left: 60px; | ||
| 187 | } | ||
| 188 | |||
| 189 | .phone { | ||
| 190 | background: url("@/assets/dance/map01.png") no-repeat left; | ||
| 191 | background-size: 30px; | ||
| 192 | } | ||
| 193 | |||
| 194 | .address { | ||
| 195 | background: url("@/assets/dance/map02.png") no-repeat left; | ||
| 196 | background-size: 30px; | ||
| 197 | margin: 50px 0; | ||
| 198 | } | ||
| 199 | |||
| 200 | .email { | ||
| 201 | background: url("@/assets/dance/map03.png") no-repeat left; | ||
| 202 | background-size: 30px; | ||
| 203 | } | ||
| 204 | |||
| 205 | h4 { | ||
| 206 | margin: 0; | ||
| 207 | font-size: 16px; | ||
| 208 | color: #AAAAAA; | ||
| 209 | } | ||
| 210 | |||
| 211 | p { | ||
| 212 | margin: 13px 0 0; | ||
| 213 | } | ||
| 214 | |||
| 215 | } | ||
| 216 | </style> |
| ... | @@ -6,7 +6,7 @@ | ... | @@ -6,7 +6,7 @@ |
| 6 | <div class="bg-lineg">{{ language == 0 ? '酒店预约下单' : 'Hotel booking order' }}</div> | 6 | <div class="bg-lineg">{{ language == 0 ? '酒店预约下单' : 'Hotel booking order' }}</div> |
| 7 | </div> | 7 | </div> |
| 8 | <!-- {{room}}--> | 8 | <!-- {{room}}--> |
| 9 | <el-row class="pd20" :gutter="20"> | 9 | <el-row :gutter="20" class="pd20"> |
| 10 | <el-col :lg="14"> | 10 | <el-col :lg="14"> |
| 11 | <div class="border-info"> | 11 | <div class="border-info"> |
| 12 | <h3>{{ hotelName }}</h3> | 12 | <h3>{{ hotelName }}</h3> |
| ... | @@ -24,51 +24,60 @@ | ... | @@ -24,51 +24,60 @@ |
| 24 | <span v-show="room.addBedFlag=='1'"> | {{ language == 0 ? '允许加床' : 'Extra bed' }}</span> | 24 | <span v-show="room.addBedFlag=='1'"> | {{ language == 0 ? '允许加床' : 'Extra bed' }}</span> |
| 25 | </div> | 25 | </div> |
| 26 | </div> | 26 | </div> |
| 27 | 27 | ||
| 28 | <div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div> | 28 | <div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div> |
| 29 | <div class="border-rr mt20 pd20"> | 29 | <div class="border-rr mt20 pd20"> |
| 30 | <el-form :model="form" :label-width="language == 0 ?'100':'160'" :rules="rules" ref="formRef"> | 30 | <el-form ref="formRef" :label-width="language == 0 ?'100':'160'" :model="form" :rules="rules"> |
| 31 | <el-form-item :label="language==0?'入住日期':'Check-in&Check-out'" required> | 31 | <el-form-item :label="language==0?'入住日期':'Check-in&Check-out'" required> |
| 32 | <el-date-picker | 32 | <el-date-picker |
| 33 | @change="getDaysBetween" | ||
| 34 | v-model="rzRange" | 33 | v-model="rzRange" |
| 35 | type="daterange" | ||
| 36 | :disabled-date="disabledDateRZ" | ||
| 37 | :clearable="false" | 34 | :clearable="false" |
| 35 | :disabled-date="disabledDateRZ" | ||
| 38 | :placeholder="language==0?'选择日期':'Select date'" | 36 | :placeholder="language==0?'选择日期':'Select date'" |
| 39 | format="YYYY-MM-DD" | 37 | format="YYYY-MM-DD" |
| 40 | value-format="YYYY-MM-DD"/> | 38 | type="daterange" |
| 41 | <div class="tip" v-if="lform.hqStart">{{ language==0?'可订日期':'Available date' }}:{{ lform.hqStart.slice(0, 10) }} ~ {{ lform.hqEnd.slice(0, 10) }}</div> | 39 | value-format="YYYY-MM-DD" |
| 42 | 40 | @change="getDaysBetween"/> | |
| 41 | <div v-if="lform.hqStart" class="tip">{{ | ||
| 42 | language == 0 ? '可订日期' : 'Available date' | ||
| 43 | }}:{{ lform.hqStart.slice(0, 10) }} ~ {{ lform.hqEnd.slice(0, 10) }} | ||
| 44 | </div> | ||
| 45 | |||
| 43 | <!-- :picker-options="pickerOptions"--> | 46 | <!-- :picker-options="pickerOptions"--> |
| 44 | </el-form-item> | 47 | </el-form-item> |
| 45 | <el-form-item :label="language==0?'房间数':'Rooms'" required prop="roomNum"> | 48 | <el-form-item :label="language==0?'房间数':'Rooms'" prop="roomNum" required> |
| 46 | <el-input-number v-model="form.roomNum" :min="0" :max="canOrderNum" @change="changeRoomNum"/> | 49 | <el-input-number v-model="form.roomNum" :max="canOrderNum" :min="0" @change="changeRoomNum"/> |
| 47 | <div class="red ml20" v-if="rzRange?.[1]"> | 50 | <div v-if="rzRange?.[1]" class="red ml20"> |
| 48 | <span v-if="language == 0">剩余房间数:{{ canOrderNum }}</span> | 51 | <span v-if="language == 0">剩余房间数:{{ canOrderNum }}</span> |
| 49 | <span v-else>{{ canOrderNum }} Remaining rooms</span> | 52 | <span v-else>{{ canOrderNum }} Remaining rooms</span> |
| 50 | </div> | 53 | </div> |
| 51 | <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> | 54 | <div v-if="language==1" class="tip">If you need to make a hotel reservation, please fill in the full |
| 52 | 55 | names of all required persons when booking the hotel. | |
| 56 | <!-- (For two or more people, please use ',')--> | ||
| 57 | (For two people, please separate the names with a comma ',) | ||
| 58 | </div> | ||
| 59 | |||
| 53 | </el-form-item> | 60 | </el-form-item> |
| 54 | <el-form-item v-for="(n,index) in form.roomNum" :key="index" :label="language==1?`Room${index+1}`:`房间${index+1}`" required> | 61 | <el-form-item v-for="(n,index) in form.roomNum" :key="index" |
| 55 | <el-input v-model="rzUserArr[index]" :placeholder="language==0?'请完整填写该房间所有的入住人姓名,以“,”符号分隔':'please fill in the name of the actual check-in person'"/> | 62 | :label="language==1?`Room${index+1}`:`房间${index+1}`" required> |
| 63 | <el-input v-model="rzUserArr[index]" | ||
| 64 | :placeholder="language==0?'请完整填写该房间所有的入住人姓名,以“,”符号分隔':'please fill in the name of the actual check-in person'"/> | ||
| 56 | </el-form-item> | 65 | </el-form-item> |
| 57 | <el-form-item :label="language==0?'预计到店':'Expected check-in'" required> | 66 | <el-form-item :label="language==0?'预计到店':'Expected check-in'" required> |
| 58 | <el-select v-model="form.ddDate" | 67 | <el-select v-model="form.ddDate" |
| 59 | :placeholder="language==0?'请选择预计到店时间':'Please select the expected check-in time'"> | 68 | :placeholder="language==0?'请选择预计到店时间':'Please select the expected check-in time'"> |
| 60 | <el-option | 69 | <el-option |
| 61 | v-for="item in ddDateArr" | 70 | v-for="item in ddDateArr" |
| 62 | :key="item.value" | 71 | :key="item.value" |
| 63 | :label="item.label" | 72 | :label="item.label" |
| 64 | :value="item.value" | 73 | :value="item.value" |
| 65 | /> | 74 | /> |
| 66 | </el-select> | 75 | </el-select> |
| 67 | </el-form-item> | 76 | </el-form-item> |
| 68 | <el-form-item :label="language==0?'联系电话':'Contact phone'" required prop="phone"> | 77 | <el-form-item :label="language==0?'联系电话':'Contact phone'" prop="phone" required> |
| 69 | <el-input v-model="form.phone"/> | 78 | <el-input v-model="form.phone"/> |
| 70 | </el-form-item> | 79 | </el-form-item> |
| 71 | 80 | ||
| 72 | <div v-if="room.addBedFlag=='1'"> | 81 | <div v-if="room.addBedFlag=='1'"> |
| 73 | <el-form-item :label="language==0?'是否加床':'Extra bed'" required> | 82 | <el-form-item :label="language==0?'是否加床':'Extra bed'" required> |
| 74 | <el-radio-group v-model="form.isAddbed" @change="changeAddBed"> | 83 | <el-radio-group v-model="form.isAddbed" @change="changeAddBed"> |
| ... | @@ -77,12 +86,12 @@ | ... | @@ -77,12 +86,12 @@ |
| 77 | </el-radio-group> | 86 | </el-radio-group> |
| 78 | </el-form-item> | 87 | </el-form-item> |
| 79 | <el-form-item v-if="form.isAddbed=='1'" :label="language==0?'加床张数':'Extra bed num'" required> | 88 | <el-form-item v-if="form.isAddbed=='1'" :label="language==0?'加床张数':'Extra bed num'" required> |
| 80 | <el-input-number v-model="form.addNum" :min="0" :max="form.roomNum" @change="changeBed"/> | 89 | <el-input-number v-model="form.addNum" :max="form.roomNum" :min="0" @change="changeBed"/> |
| 81 | 90 | ||
| 82 | <div class="tip" v-if="form.isAddbed=='1'">* | 91 | <div v-if="form.isAddbed=='1'" class="tip">* |
| 83 | <span v-if="language == 0">一个房间最多加一张床</span> | 92 | <span v-if="language == 0">一个房间最多加一张床</span> |
| 84 | <span v-else>A room can only add one bed</span> | 93 | <span v-else>A room can only add one bed</span> |
| 85 | </div> | 94 | </div> |
| 86 | </el-form-item> | 95 | </el-form-item> |
| 87 | </div> | 96 | </div> |
| 88 | </el-form> | 97 | </el-form> |
| ... | @@ -92,55 +101,62 @@ | ... | @@ -92,55 +101,62 @@ |
| 92 | <div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div> | 101 | <div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div> |
| 93 | <div class="border-rr mt20 pd20 ccitemBox"> | 102 | <div class="border-rr mt20 pd20 ccitemBox"> |
| 94 | <label> {{ language == 0 ? '房费' : 'Room fee' }} | 103 | <label> {{ language == 0 ? '房费' : 'Room fee' }} |
| 95 | <span class="fr" v-if="language==0">{{ | 104 | <span v-if="language==0" class="fr">{{ |
| 96 | language == 0 ? '¥' : '$' | 105 | language == 0 ? '¥' : '$' |
| 97 | }}{{ (room.roomPrice * form.roomNum * choseRooms.length).toFixed(2) }}</span> | 106 | }}{{ (room.roomPrice * form.roomNum * choseRooms.length).toFixed(2) }}</span> |
| 98 | <span class="fr" v-else>{{ | 107 | <span v-else class="fr">{{ |
| 99 | language == 0 ? '¥' : '$' | 108 | language == 0 ? '¥' : '$' |
| 100 | }}{{ (room.roomPriceEn * form.roomNum * choseRooms.length).toFixed(2) }}</span> | 109 | }}{{ (room.roomPriceEn * form.roomNum * choseRooms.length).toFixed(2) }}</span> |
| 101 | </label> | 110 | </label> |
| 102 | <div class="ccitem" v-for="(c, index) in choseRooms" :key="index" v-show="form.roomNum>0"> | 111 | <div v-for="(c, index) in choseRooms" v-show="form.roomNum>0" :key="index" class="ccitem"> |
| 103 | {{ c }} | 112 | {{ c }} |
| 104 | <span v-if="language==0">{{ form.roomNum }}*{{ language == 0 ? '¥' : '$' }}{{ room.roomPrice }}</span> | 113 | <span v-if="language==0">{{ form.roomNum }}*{{ language == 0 ? '¥' : '$' }}{{ room.roomPrice }}</span> |
| 105 | <span v-else>{{ form.roomNum }}*{{ language == 0 ? '¥' : '$' }}{{ room.roomPriceEn }}</span> | 114 | <span v-else>{{ form.roomNum }}*{{ language == 0 ? '¥' : '$' }}{{ room.roomPriceEn }}</span> |
| 106 | </div> | 115 | </div> |
| 107 | 116 | ||
| 108 | <label v-if="form.isAddbed=='1'&&form.addNum>0">{{ language == 0 ? '加床费' : 'Extra bed fee' }} | 117 | <label v-if="form.isAddbed=='1'&&form.addNum>0">{{ language == 0 ? '加床费' : 'Extra bed fee' }} |
| 109 | <span class="fr" v-if="language==0">{{ | 118 | <span v-if="language==0" class="fr">{{ |
| 110 | language == 0 ? '¥' : '$' | 119 | language == 0 ? '¥' : '$' |
| 111 | }}{{ (room.bedPrice * form.addNum * choseRooms.length).toFixed(2) }}</span> | 120 | }}{{ (room.bedPrice * form.addNum * choseRooms.length).toFixed(2) }}</span> |
| 112 | <span class="fr" v-else>{{ | 121 | <span v-else class="fr">{{ |
| 113 | language == 0 ? '¥' : '$' | 122 | language == 0 ? '¥' : '$' |
| 114 | }}{{ (room.bedPriceEn * form.addNum * choseRooms.length).toFixed(2) }}</span> | 123 | }}{{ (room.bedPriceEn * form.addNum * choseRooms.length).toFixed(2) }}</span> |
| 115 | </label> | 124 | </label> |
| 116 | 125 | ||
| 117 | <div v-if="form.isAddbed=='1'&&form.addNum>0" class="ccitem" v-for="(c, index) in choseRooms" :key="index"> | 126 | <div v-for="(c, index) in choseRooms" v-if="form.isAddbed=='1'&&form.addNum>0" :key="index" |
| 127 | class="ccitem"> | ||
| 118 | {{ c }} | 128 | {{ c }} |
| 119 | <span>{{ form.addNum }}*{{ language == 0 ? '¥' : '$' }}{{ language == 0 ?room.bedPrice:room.bedPriceEn}}</span> | 129 | <span>{{ form.addNum }}*{{ |
| 130 | language == 0 ? '¥' : '$' | ||
| 131 | }}{{ language == 0 ? room.bedPrice : room.bedPriceEn }}</span> | ||
| 120 | </div> | 132 | </div> |
| 121 | 133 | ||
| 122 | <label>{{ language == 0 ? '共计' : 'Total' }}<span | 134 | <label>{{ language == 0 ? '共计' : 'Total' }}<span |
| 123 | class="fr bigMoney">{{ language == 0 ? '¥' : '$' }}{{ money }}</span></label> | 135 | class="fr bigMoney">{{ language == 0 ? '¥' : '$' }}{{ money }}</span></label> |
| 124 | 136 | ||
| 125 | </div> | 137 | </div> |
| 126 | </el-col> | 138 | </el-col> |
| 127 | </el-row> | 139 | </el-row> |
| 128 | </el-card> | 140 | </el-card> |
| 129 | 141 | ||
| 130 | <el-card class="mt30 mb30"> | 142 | <el-card class="mt30 mb30"> |
| 131 | <el-row justify="space-between" align="middle"> | 143 | <el-row align="middle" justify="space-between"> |
| 132 | <el-col :span="12"> | 144 | <el-col :span="12"> |
| 133 | <label>{{ language == 0 ? '共计金额' : 'Total' }}: | 145 | <label>{{ language == 0 ? '共计金额' : 'Total' }}: |
| 134 | <span class=" text-warning"> {{ language == 0 ? '¥' : '$' }}<span class="bigMoney">{{ money }}</span></span> | 146 | <span class=" text-warning"> {{ language == 0 ? '¥' : '$' }}<span class="bigMoney">{{ |
| 147 | money | ||
| 148 | }}</span></span> | ||
| 135 | </label> | 149 | </label> |
| 136 | </el-col> | 150 | </el-col> |
| 137 | <el-col :span="12" class="text-right"> | 151 | <el-col :span="12" class="text-right"> |
| 138 | <el-button type="primary" class="btn-lineG w200px" size="large" round @click="submit">{{ language == 0 ?'确认付款':'Book Now' }}</el-button> | 152 | <el-button class="btn-lineG w200px" round size="large" type="primary" @click="submit"> |
| 153 | {{ language == 0 ? '确认付款' : 'Book Now' }} | ||
| 154 | </el-button> | ||
| 139 | </el-col> | 155 | </el-col> |
| 140 | </el-row> | 156 | </el-row> |
| 141 | </el-card> | 157 | </el-card> |
| 142 | <div style="height: 60px;"></div> | 158 | <div style="height: 60px;"></div> |
| 143 | 159 | ||
| 144 | </div> | 160 | </div> |
| 145 | </div> | 161 | </div> |
| 146 | </template> | 162 | </template> |
| ... | @@ -151,8 +167,9 @@ import {ref, reactive, onMounted} from "vue"; | ... | @@ -151,8 +167,9 @@ import {ref, reactive, onMounted} from "vue"; |
| 151 | import {useStorage} from "@vueuse/core/index"; | 167 | import {useStorage} from "@vueuse/core/index"; |
| 152 | import {checkResidueRoom, getBaseInfoByActiveId, newsSubmitOrderHotel} from "@/apiPc/booking" | 168 | import {checkResidueRoom, getBaseInfoByActiveId, newsSubmitOrderHotel} from "@/apiPc/booking" |
| 153 | import dayjs from 'dayjs' | 169 | import dayjs from 'dayjs' |
| 154 | import {ElMessage,ElMessageBox} from "element-plus"; | 170 | import {ElMessage, ElMessageBox} from "element-plus"; |
| 155 | import useUserStore from "@/store/modules/user"; | 171 | import useUserStore from "@/store/modules/user"; |
| 172 | |||
| 156 | const user = useUserStore().user | 173 | const user = useUserStore().user |
| 157 | const language = useStorage('language', 0) | 174 | const language = useStorage('language', 0) |
| 158 | const router = useRouter() | 175 | const router = useRouter() |
| ... | @@ -165,8 +182,8 @@ const form = ref({ | ... | @@ -165,8 +182,8 @@ const form = ref({ |
| 165 | isAddbed: '0', | 182 | isAddbed: '0', |
| 166 | roomNum: 0, | 183 | roomNum: 0, |
| 167 | addNum: 0, | 184 | addNum: 0, |
| 168 | ddDate:'14:00', | 185 | ddDate: '14:00', |
| 169 | phone: user?.phonenumber||'', | 186 | phone: user?.phonenumber || '', |
| 170 | }) | 187 | }) |
| 171 | const rzRange = ref([]) | 188 | const rzRange = ref([]) |
| 172 | const rzUserArr = ref([]) | 189 | const rzUserArr = ref([]) |
| ... | @@ -255,7 +272,11 @@ const ddDateArr = ref([ | ... | @@ -255,7 +272,11 @@ const ddDateArr = ref([ |
| 255 | } | 272 | } |
| 256 | ]) | 273 | ]) |
| 257 | const rules = ref({ | 274 | const rules = ref({ |
| 258 | phone: { required: true, message: language.value==0? '请输入联系电话':"Please enter a contact number", trigger: 'blur' } | 275 | phone: { |
| 276 | required: true, | ||
| 277 | message: language.value == 0 ? '请输入联系电话' : "Please enter a contact number", | ||
| 278 | trigger: 'blur' | ||
| 279 | } | ||
| 259 | }) | 280 | }) |
| 260 | 281 | ||
| 261 | let usedays = 0 | 282 | let usedays = 0 |
| ... | @@ -265,15 +286,16 @@ onMounted(() => { | ... | @@ -265,15 +286,16 @@ onMounted(() => { |
| 265 | console.log(room.value) | 286 | console.log(room.value) |
| 266 | hotelName.value = route.query.hotelName | 287 | hotelName.value = route.query.hotelName |
| 267 | money.value = 0 | 288 | money.value = 0 |
| 268 | rzRange.value=[] | 289 | rzRange.value = [] |
| 269 | rzRange.value=[route.query.start,route.query.end] | 290 | rzRange.value = [route.query.start, route.query.end] |
| 270 | initDays() | 291 | initDays() |
| 271 | getDaysBetween() | 292 | getDaysBetween() |
| 272 | // checkreRooms() | 293 | // checkreRooms() |
| 273 | }) | 294 | }) |
| 295 | |||
| 274 | function initDays() { | 296 | function initDays() { |
| 275 | getBaseInfoByActiveId(route.params.cptId).then(res=>{ | 297 | getBaseInfoByActiveId(route.params.cptId).then(res => { |
| 276 | lform.value = res.data | 298 | lform.value = res.data |
| 277 | // if(lform.value.hqStart){ | 299 | // if(lform.value.hqStart){ |
| 278 | // const today = dayjs() | 300 | // const today = dayjs() |
| 279 | // if(lform.value.hqStart.slice(0,10)<today.format('YYYY-MM-DD')){ | 301 | // if(lform.value.hqStart.slice(0,10)<today.format('YYYY-MM-DD')){ |
| ... | @@ -283,22 +305,24 @@ function initDays() { | ... | @@ -283,22 +305,24 @@ function initDays() { |
| 283 | // getDaysBetween(rzRange.value) | 305 | // getDaysBetween(rzRange.value) |
| 284 | // } | 306 | // } |
| 285 | // console.log(rzRange.value,lform.value.hqStart) | 307 | // console.log(rzRange.value,lform.value.hqStart) |
| 286 | }).catch(err=>{ | 308 | }).catch(err => { |
| 287 | console.log(err) | 309 | console.log(err) |
| 288 | }) | 310 | }) |
| 289 | } | 311 | } |
| 312 | |||
| 290 | function disabledDateRZ(date) { | 313 | function disabledDateRZ(date) { |
| 291 | //判读今天大与form.value.hqStart | 314 | //判读今天大与form.value.hqStart |
| 292 | if (lform.value.hqStart) { | 315 | if (lform.value.hqStart) { |
| 293 | const today = dayjs().format('YYYY-MM-DD') | 316 | const today = dayjs().format('YYYY-MM-DD') |
| 294 | if (lform.value.hqStart < today) { | 317 | if (lform.value.hqStart < today) { |
| 295 | return !((date.getTime() >= dayjs(today).valueOf())&&(date.getTime() <= dayjs(lform.value.hqEnd).valueOf())) | 318 | return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs(lform.value.hqEnd).valueOf())) |
| 296 | } else { | 319 | } else { |
| 297 | return !((date.getTime() >= dayjs(lform.value.hqStart).valueOf())&&(date.getTime() <= dayjs(lform.value.hqEnd).valueOf())) | 320 | return !((date.getTime() >= dayjs(lform.value.hqStart).valueOf()) && (date.getTime() <= dayjs(lform.value.hqEnd).valueOf())) |
| 298 | } | 321 | } |
| 299 | } | 322 | } |
| 300 | // return true | 323 | // return true |
| 301 | } | 324 | } |
| 325 | |||
| 302 | function changeRoomNum(e) { | 326 | function changeRoomNum(e) { |
| 303 | if (form.value.addNum > e) { | 327 | if (form.value.addNum > e) { |
| 304 | form.value.addNum = e | 328 | form.value.addNum = e |
| ... | @@ -307,12 +331,14 @@ function changeRoomNum(e) { | ... | @@ -307,12 +331,14 @@ function changeRoomNum(e) { |
| 307 | rzUserArr.value.length = e | 331 | rzUserArr.value.length = e |
| 308 | countMoney() | 332 | countMoney() |
| 309 | } | 333 | } |
| 334 | |||
| 310 | function changeAddBed(e) { | 335 | function changeAddBed(e) { |
| 311 | if(e=='0'){ | 336 | if (e == '0') { |
| 312 | form.value.addNum = 0 | 337 | form.value.addNum = 0 |
| 313 | } | 338 | } |
| 314 | changeBed() | 339 | changeBed() |
| 315 | } | 340 | } |
| 341 | |||
| 316 | function changeBed() { | 342 | function changeBed() { |
| 317 | countMoney() | 343 | countMoney() |
| 318 | } | 344 | } |
| ... | @@ -332,28 +358,28 @@ function getDaysBetween(e) { | ... | @@ -332,28 +358,28 @@ function getDaysBetween(e) { |
| 332 | // console.log('入住时间arr', e, rzRange.value) | 358 | // console.log('入住时间arr', e, rzRange.value) |
| 333 | // console.log(e) | 359 | // console.log(e) |
| 334 | // console.log(Date.parse(rzRange.value[0])) | 360 | // console.log(Date.parse(rzRange.value[0])) |
| 335 | form.value.roomNum=0 | 361 | form.value.roomNum = 0 |
| 336 | var d1 = Date.parse(rzRange.value?rzRange.value[0]:null) | 362 | var d1 = Date.parse(rzRange.value ? rzRange.value[0] : null) |
| 337 | var d2 = Date.parse(rzRange.value?rzRange.value[1]:null) | 363 | var d2 = Date.parse(rzRange.value ? rzRange.value[1] : null) |
| 338 | if (d1 == d2) { | 364 | if (d1 == d2) { |
| 339 | usedays = 0 | 365 | usedays = 0 |
| 340 | ElMessage.error(language.value == 0 ? '入住时间跨度需大于一天' :'The duration of the stay must be more than one day.') | 366 | ElMessage.error(language.value == 0 ? '入住时间跨度需大于一天' : 'The duration of the stay must be more than one day.') |
| 341 | // console.trace() | 367 | // console.trace() |
| 342 | rzRange.value=[route.query.start,route.query.end] | 368 | rzRange.value = [route.query.start, route.query.end] |
| 343 | return | 369 | return |
| 344 | } else { | 370 | } else { |
| 345 | var days = (d2 - d1) / (1 * 24 * 60 * 60 * 1000); | 371 | var days = (d2 - d1) / (1 * 24 * 60 * 60 * 1000); |
| 346 | usedays = days | 372 | usedays = days |
| 347 | } | 373 | } |
| 348 | countMoney() | 374 | countMoney() |
| 349 | var startTime = getDate(rzRange.value?rzRange.value[0]:null); | 375 | var startTime = getDate(rzRange.value ? rzRange.value[0] : null); |
| 350 | var endTime = getDate(rzRange.value?rzRange.value[1]:null); | 376 | var endTime = getDate(rzRange.value ? rzRange.value[1] : null); |
| 351 | var dateArr = []; | 377 | var dateArr = []; |
| 352 | if (!startTime||!endTime)return; | 378 | if (!startTime || !endTime) return; |
| 353 | while ((endTime.getTime() - startTime.getTime()) > 0) { | 379 | while ((endTime.getTime() - startTime.getTime()) > 0) { |
| 354 | var year = startTime.getFullYear(); | 380 | var year = startTime.getFullYear(); |
| 355 | var month = (startTime.getMonth() + 1).toString().length === 1 ? "0" + (parseInt(startTime.getMonth() | 381 | var month = (startTime.getMonth() + 1).toString().length === 1 ? "0" + (parseInt(startTime.getMonth() |
| 356 | .toString(), 10) + 1) : (startTime.getMonth() + 1); | 382 | .toString(), 10) + 1) : (startTime.getMonth() + 1); |
| 357 | var day = startTime.getDate().toString().length === 1 ? "0" + startTime.getDate() : startTime.getDate(); | 383 | var day = startTime.getDate().toString().length === 1 ? "0" + startTime.getDate() : startTime.getDate(); |
| 358 | dateArr.push(year + "-" + month + "-" + day); | 384 | dateArr.push(year + "-" + month + "-" + day); |
| 359 | startTime.setDate(startTime.getDate() + 1); | 385 | startTime.setDate(startTime.getDate() + 1); |
| ... | @@ -379,45 +405,45 @@ function getDate(datestr) { | ... | @@ -379,45 +405,45 @@ function getDate(datestr) { |
| 379 | function countMoney() { | 405 | function countMoney() { |
| 380 | if (language.value == 0) { | 406 | if (language.value == 0) { |
| 381 | money.value = ((room.value.roomPrice * form.value.roomNum * usedays) + (room.value.bedPrice * form.value | 407 | money.value = ((room.value.roomPrice * form.value.roomNum * usedays) + (room.value.bedPrice * form.value |
| 382 | .addNum * usedays)).toFixed(2) | 408 | .addNum * usedays)).toFixed(2) |
| 383 | } else { | 409 | } else { |
| 384 | money.value = ((room.value.roomPriceEn * form.value.roomNum * usedays) + (room.value.bedPriceEn * form.value | 410 | money.value = ((room.value.roomPriceEn * form.value.roomNum * usedays) + (room.value.bedPriceEn * form.value |
| 385 | .addNum * usedays)).toFixed(2) | 411 | .addNum * usedays)).toFixed(2) |
| 386 | 412 | ||
| 387 | } | 413 | } |
| 388 | if (money.value == 'NaN') money.value=0.00 | 414 | if (money.value == 'NaN') money.value = 0.00 |
| 389 | } | 415 | } |
| 390 | 416 | ||
| 391 | function submit() { | 417 | function submit() { |
| 392 | if(!user){ | 418 | if (!user) { |
| 393 | useUserStore().setReLogin() | 419 | useUserStore().setReLogin() |
| 394 | return | 420 | return |
| 395 | } | 421 | } |
| 396 | if(!rzRange.value)return ElMessage.warning(language.value == 0 ? '请选择入住时间' : 'Please select check-in time') | 422 | if (!rzRange.value) return ElMessage.warning(language.value == 0 ? '请选择入住时间' : 'Please select check-in time') |
| 397 | if (usedays == 0) { | 423 | if (usedays == 0) { |
| 398 | ElMessage.warning(language.value == 0 ? '入住时间跨度需大于一天' : 'Check-in time must be greater than one day') | 424 | ElMessage.warning(language.value == 0 ? '入住时间跨度需大于一天' : 'Check-in time must be greater than one day') |
| 399 | return | 425 | return |
| 400 | } | 426 | } |
| 401 | if(form.value.roomNum==0){ | 427 | if (form.value.roomNum == 0) { |
| 402 | ElMessage.warning(language.value == 0 ? '请选择房间数量' : 'Please select the number of rooms') | 428 | ElMessage.warning(language.value == 0 ? '请选择房间数量' : 'Please select the number of rooms') |
| 403 | return | 429 | return |
| 404 | } | 430 | } |
| 405 | if(!form.value.phone){ | 431 | if (!form.value.phone) { |
| 406 | ElMessage.warning(language.value == 0 ? '请填写手机号' : 'Please fill in the phone number') | 432 | ElMessage.warning(language.value == 0 ? '请填写手机号' : 'Please fill in the phone number') |
| 407 | return | 433 | return |
| 408 | } | 434 | } |
| 409 | 435 | ||
| 410 | form.value.rzStart = rzRange.value[0] | 436 | form.value.rzStart = rzRange.value[0] |
| 411 | form.value.rzEnd = rzRange.value[1] | 437 | form.value.rzEnd = rzRange.value[1] |
| 412 | 438 | ||
| 413 | 439 | ||
| 414 | let arr = [] | 440 | let arr = [] |
| 415 | for (var n of rzUserArr.value) { | 441 | for (var n of rzUserArr.value) { |
| 416 | if (n == '' || n == undefined) { | 442 | if (n == '' || n == undefined) { |
| 417 | 443 | ||
| 418 | // '请填写入住人信息' | 444 | // '请填写入住人信息' |
| 419 | ElMessage.warning(language.value == 0 ? '请填写入住人信息' : 'Please fill in the check-in information') | 445 | ElMessage.warning(language.value == 0 ? '请填写入住人信息' : 'Please fill in the check-in information') |
| 420 | 446 | ||
| 421 | return | 447 | return |
| 422 | } else { | 448 | } else { |
| 423 | arr.push(n) | 449 | arr.push(n) |
| ... | @@ -432,7 +458,7 @@ function submit() { | ... | @@ -432,7 +458,7 @@ function submit() { |
| 432 | form.value.roomPhoto = room.value.photo | 458 | form.value.roomPhoto = room.value.photo |
| 433 | var str = '' | 459 | var str = '' |
| 434 | var str2 = '' | 460 | var str2 = '' |
| 435 | if(language.value==0){ | 461 | if (language.value == 0) { |
| 436 | if (form.value.addNum && form.value.addNum > 0) { | 462 | if (form.value.addNum && form.value.addNum > 0) { |
| 437 | str = `加床${form.value.addNum}张` | 463 | str = `加床${form.value.addNum}张` |
| 438 | } else { | 464 | } else { |
| ... | @@ -446,7 +472,7 @@ function submit() { | ... | @@ -446,7 +472,7 @@ function submit() { |
| 446 | form.value.room = `${form.value.roomNum} 间 · ${usedays}晚 · ${str} · ${str2}` | 472 | form.value.room = `${form.value.roomNum} 间 · ${usedays}晚 · ${str} · ${str2}` |
| 447 | console.log(form.value.room) | 473 | console.log(form.value.room) |
| 448 | } | 474 | } |
| 449 | if(language.value==1){ | 475 | if (language.value == 1) { |
| 450 | if (form.value.addNum && form.value.addNum > 0) { | 476 | if (form.value.addNum && form.value.addNum > 0) { |
| 451 | str = `have ${form.value.addNum} extra bed` | 477 | str = `have ${form.value.addNum} extra bed` |
| 452 | } else { | 478 | } else { |
| ... | @@ -460,8 +486,8 @@ function submit() { | ... | @@ -460,8 +486,8 @@ function submit() { |
| 460 | form.value.room = `${form.value.roomNum} rooms · ${usedays} night·${str}·${str2}` | 486 | form.value.room = `${form.value.roomNum} rooms · ${usedays} night·${str}·${str2}` |
| 461 | console.log(form.value.room) | 487 | console.log(form.value.room) |
| 462 | } | 488 | } |
| 463 | 489 | ||
| 464 | 490 | ||
| 465 | // 提交确认 | 491 | // 提交确认 |
| 466 | ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', { | 492 | ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', { |
| 467 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', | 493 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', |
| ... | @@ -478,9 +504,9 @@ function submit() { | ... | @@ -478,9 +504,9 @@ function submit() { |
| 478 | router.push({ | 504 | router.push({ |
| 479 | name: 'bookingPay', | 505 | name: 'bookingPay', |
| 480 | query: { | 506 | query: { |
| 481 | orderId:res.data.orderId, | 507 | orderId: res.data.orderId, |
| 482 | money:res.data.total, | 508 | money: res.data.total, |
| 483 | type:'hotel' | 509 | type: 'hotel' |
| 484 | } | 510 | } |
| 485 | }) | 511 | }) |
| 486 | } | 512 | } |
| ... | @@ -491,7 +517,7 @@ function submit() { | ... | @@ -491,7 +517,7 @@ function submit() { |
| 491 | 517 | ||
| 492 | </script> | 518 | </script> |
| 493 | 519 | ||
| 494 | <style scoped lang="scss"> | 520 | <style lang="scss" scoped> |
| 495 | .bigMoney { | 521 | .bigMoney { |
| 496 | font-size: 36px !important; | 522 | font-size: 36px !important; |
| 497 | font-family: 'DIN Alternate'; | 523 | font-family: 'DIN Alternate'; |
| ... | @@ -524,12 +550,12 @@ function submit() { | ... | @@ -524,12 +550,12 @@ function submit() { |
| 524 | 550 | ||
| 525 | .ccitemBox { | 551 | .ccitemBox { |
| 526 | overflow: auto; | 552 | overflow: auto; |
| 527 | 553 | ||
| 528 | label { | 554 | label { |
| 529 | margin: 10px 0; | 555 | margin: 10px 0; |
| 530 | display: block; | 556 | display: block; |
| 531 | min-height: 30px; | 557 | min-height: 30px; |
| 532 | 558 | ||
| 533 | span { | 559 | span { |
| 534 | color: #FF8124; | 560 | color: #FF8124; |
| 535 | font-family: DIN Alternate; | 561 | font-family: DIN Alternate; |
| ... | @@ -544,12 +570,12 @@ function submit() { | ... | @@ -544,12 +570,12 @@ function submit() { |
| 544 | font-size: 15px; | 570 | font-size: 15px; |
| 545 | color: #666; | 571 | color: #666; |
| 546 | margin: 5px 0 10px; | 572 | margin: 5px 0 10px; |
| 547 | 573 | ||
| 548 | label { | 574 | label { |
| 549 | font-size: 16px; | 575 | font-size: 16px; |
| 550 | color: #000; | 576 | color: #000; |
| 551 | } | 577 | } |
| 552 | 578 | ||
| 553 | span { | 579 | span { |
| 554 | font-size: 13px; | 580 | font-size: 13px; |
| 555 | } | 581 | } |
| ... | @@ -558,9 +584,16 @@ function submit() { | ... | @@ -558,9 +584,16 @@ function submit() { |
| 558 | .red { | 584 | .red { |
| 559 | color: #FF8124; | 585 | color: #FF8124; |
| 560 | } | 586 | } |
| 561 | .tip{font-size: 14px;color: #666;padding: 0 10px;} | 587 | |
| 588 | .tip { | ||
| 589 | font-size: 14px; | ||
| 590 | color: #666; | ||
| 591 | padding: 0 10px; | ||
| 592 | } | ||
| 562 | 593 | ||
| 563 | @media screen and (max-width: 768px) { | 594 | @media screen and (max-width: 768px) { |
| 564 | .leftboderTT{margin: 30px 0 15px;} | 595 | .leftboderTT { |
| 596 | margin: 30px 0 15px; | ||
| 597 | } | ||
| 565 | } | 598 | } |
| 566 | </style> | 599 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <index-Ch v-if="language ==0" @pop="openMaster" @pickup="openPickup" @backNumber="openBackNumber" @schSearch="openSchSearch"/> | 3 | <index-Ch v-if="language ==0" @backNumber="openBackNumber" @pickup="openPickup" @pop="openMaster" |
| 4 | <index-En v-else @pop="openMaster" @pickup="openPickup" @backNumber="openBackNumber" @schSearch="openSchSearch"/> | 4 | @schSearch="openSchSearch"/> |
| 5 | <index-En v-else @backNumber="openBackNumber" @pickup="openPickup" @pop="openMaster" @schSearch="openSchSearch"/> | ||
| 5 | <div v-if="showgg" class="fixed_gg"> | 6 | <div v-if="showgg" class="fixed_gg"> |
| 6 | <!--天气--> | 7 | <!--天气--> |
| 7 | <el-icon class="cclose" @click.stop="showgg=false"><circle-close /></el-icon> | 8 | <el-icon class="cclose" @click.stop="showgg=false"> |
| 9 | <circle-close/> | ||
| 10 | </el-icon> | ||
| 8 | <div class="bg-lineg pd20"> | 11 | <div class="bg-lineg pd20"> |
| 9 | <div class="smallToday" @click="popWeather"> | 12 | <div class="smallToday" @click="popWeather"> |
| 10 | <div> | 13 | <div> |
| ... | @@ -15,13 +18,14 @@ | ... | @@ -15,13 +18,14 @@ |
| 15 | <div> | 18 | <div> |
| 16 | <h3 v-if="language == 0">无锡</h3> | 19 | <h3 v-if="language == 0">无锡</h3> |
| 17 | <h3 v-else>WUXI</h3> | 20 | <h3 v-else>WUXI</h3> |
| 18 | <div class="wd_p">{{weatherObj.forecast[0]?.low.slice(2)}}~{{weatherObj.forecast[0]?.high.slice(2)}}</div> | 21 | <div class="wd_p">{{ weatherObj.forecast[0]?.low.slice(2) }}~{{ weatherObj.forecast[0]?.high.slice(2) }} |
| 22 | </div> | ||
| 19 | </div> | 23 | </div> |
| 20 | </div> | 24 | </div> |
| 21 | </div> | 25 | </div> |
| 22 | <el-dialog v-model="weatherdialog" width="540" :close-on-click-modal="true" | 26 | <el-dialog v-model="weatherdialog" :close-on-click-modal="true" style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px; |
| 23 | style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px; | 27 | --el-dialog-bg-color:transparent;overflow: hidden;" |
| 24 | --el-dialog-bg-color:transparent;overflow: hidden;"> | 28 | width="540"> |
| 25 | <div class="bg-lineg pd20"> | 29 | <div class="bg-lineg pd20"> |
| 26 | <div class="weatherbox"> | 30 | <div class="weatherbox"> |
| 27 | <div class="today"> | 31 | <div class="today"> |
| ... | @@ -30,9 +34,11 @@ | ... | @@ -30,9 +34,11 @@ |
| 30 | <h1 v-else>WUXI</h1> | 34 | <h1 v-else>WUXI</h1> |
| 31 | </div> | 35 | </div> |
| 32 | <div> | 36 | <div> |
| 33 | <div class="wd">{{weatherObj.wendu}}°c</div> | 37 | <div class="wd">{{ weatherObj.wendu }}°c</div> |
| 34 | <div class="wd_p">{{weatherObj.forecast[0]?.low.slice(2)}}~{{weatherObj.forecast[0]?.high.slice(2)}}</div> | 38 | <div class="wd_p"> |
| 35 | <div class="week">{{weatherObj.forecast[0]?.week}}</div> | 39 | {{ weatherObj.forecast[0]?.low.slice(2) }}~{{ weatherObj.forecast[0]?.high.slice(2) }} |
| 40 | </div> | ||
| 41 | <div class="week">{{ weatherObj.forecast[0]?.week }}</div> | ||
| 36 | </div> | 42 | </div> |
| 37 | <div> | 43 | <div> |
| 38 | <div class="type"> | 44 | <div class="type"> |
| ... | @@ -45,22 +51,30 @@ | ... | @@ -45,22 +51,30 @@ |
| 45 | <div class="type"> | 51 | <div class="type"> |
| 46 | <weather-icon :type="n.type||n.wea" :width="32"/> | 52 | <weather-icon :type="n.type||n.wea" :width="32"/> |
| 47 | </div> | 53 | </div> |
| 48 | <div class="wd" v-if="n.low">{{n.low.slice(2,-1)}}/{{n.high.slice(2)}}</div> | 54 | <div v-if="n.low" class="wd">{{ n.low.slice(2, -1) }}/{{ n.high.slice(2) }}</div> |
| 49 | <div class="wd" v-if="n.tem_night">{{n.tem_night}}/{{n.tem_day}}</div> | 55 | <div v-if="n.tem_night" class="wd">{{ n.tem_night }}/{{ n.tem_day }}</div> |
| 50 | <div class="week" v-if="language==1"> | 56 | <div v-if="language==1" class="week"> |
| 51 | {{n.week=='星期一'?'Mon':n.week=='星期二'?'Tue':n.week=='星期三'?'Wed':n.week=='星期四'?'Thu':n.week=='星期五'?'Fri':n.week=='星期六'?'Sat':n.week=='星期日'?'Sun':''}} | 57 | {{ |
| 58 | n.week == '星期一' ? 'Mon' : n.week == '星期二' ? 'Tue' : n.week == '星期三' ? 'Wed' : n.week == '星期四' ? 'Thu' : n.week == '星期五' ? 'Fri' : n.week == '星期六' ? 'Sat' : n.week == '星期日' ? 'Sun' : '' | ||
| 59 | }} | ||
| 52 | </div> | 60 | </div> |
| 53 | <div class="week" v-else> | 61 | <div v-else class="week"> |
| 54 | {{n.week}} | 62 | {{ n.week }} |
| 55 | </div> | 63 | </div> |
| 56 | <div class="date mt10" v-if="n.ymd">{{n.ymd.slice(5,10)}}</div> | 64 | <div v-if="n.ymd" class="date mt10">{{ n.ymd.slice(5, 10) }}</div> |
| 57 | <div class="date mt10" v-else>{{n.date.slice(5,10)}}</div> | 65 | <div v-else class="date mt10">{{ n.date.slice(5, 10) }}</div> |
| 58 | </li> | 66 | </li> |
| 59 | </ul> | 67 | </ul> |
| 60 | </div> | 68 | </div> |
| 61 | </div> | 69 | </div> |
| 62 | </el-dialog> | 70 | </el-dialog> |
| 63 | </div> | 71 | </div> |
| 72 | |||
| 73 | <div class="operation" @click="handelOperation">{{ language == 0 ? '操作手册' : 'GUIDELINE' }} | ||
| 74 | <el-icon> | ||
| 75 | <Download/> | ||
| 76 | </el-icon> | ||
| 77 | </div> | ||
| 64 | <dialog-master-class ref="masterClassRef"/> | 78 | <dialog-master-class ref="masterClassRef"/> |
| 65 | <pick-up ref="pickupRef"></pick-up> | 79 | <pick-up ref="pickupRef"></pick-up> |
| 66 | <back-number ref="backNumberRef"></back-number> | 80 | <back-number ref="backNumberRef"></back-number> |
| ... | @@ -81,72 +95,110 @@ import {useStorage} from "@vueuse/core/index"; | ... | @@ -81,72 +95,110 @@ import {useStorage} from "@vueuse/core/index"; |
| 81 | import {ref} from "vue"; | 95 | import {ref} from "vue"; |
| 82 | import {getWeather} from "@/apiPc/webSite"; | 96 | import {getWeather} from "@/apiPc/webSite"; |
| 83 | import {getCurrentInstance} from "@vue/runtime-core"; | 97 | import {getCurrentInstance} from "@vue/runtime-core"; |
| 98 | import {useRouter} from "vue-router"; | ||
| 99 | |||
| 84 | const {proxy} = getCurrentInstance() | 100 | const {proxy} = getCurrentInstance() |
| 85 | const showgg = ref(false) | 101 | const showgg = ref(false) |
| 86 | 102 | const router = useRouter() | |
| 87 | const language = useStorage('language', 0) | 103 | const language = useStorage('language', 0) |
| 88 | const weatherObj = ref({ | 104 | const weatherObj = ref({ |
| 89 | forecast:[] | 105 | forecast: [] |
| 90 | }) | 106 | }) |
| 91 | const weatherdialog = ref(false) | 107 | const weatherdialog = ref(false) |
| 108 | |||
| 92 | // init() | 109 | // init() |
| 93 | function init(){ | 110 | function init() { |
| 94 | getWeather().then(res=>{ | 111 | getWeather().then(res => { |
| 95 | weatherObj.value = JSON.parse(res.data).data | 112 | weatherObj.value = JSON.parse(res.data).data |
| 96 | showgg.value = true | 113 | showgg.value = true |
| 97 | }).catch(err=>{ | 114 | }).catch(err => { |
| 98 | showgg.value = false | 115 | showgg.value = false |
| 99 | }) | 116 | }) |
| 100 | } | 117 | } |
| 118 | |||
| 101 | const popWeather = () => { | 119 | const popWeather = () => { |
| 102 | weatherdialog.value = true | 120 | weatherdialog.value = true |
| 103 | } | 121 | } |
| 104 | const openMaster = (params) => { | 122 | const openMaster = (params) => { |
| 105 | console.log(params) | 123 | console.log(params) |
| 106 | var obj = { | 124 | var obj = { |
| 107 | title:'大师课申请', | 125 | title: '大师课申请', |
| 108 | cptId:params.cptId | 126 | cptId: params.cptId |
| 109 | } | 127 | } |
| 110 | proxy.$refs['masterClassRef'].open(obj) | 128 | proxy.$refs['masterClassRef'].open(obj) |
| 111 | } | 129 | } |
| 112 | 130 | ||
| 113 | const openPickup= (params) => { | 131 | const openPickup = (params) => { |
| 114 | console.log(params) | 132 | console.log(params) |
| 115 | const obj = { | 133 | const obj = { |
| 116 | title:'接送机服务', | 134 | title: '接送机服务', |
| 117 | cptId:params.cptId | 135 | cptId: params.cptId |
| 118 | } | 136 | } |
| 119 | proxy.$refs['pickupRef'].open(obj) | 137 | proxy.$refs['pickupRef'].open(obj) |
| 120 | } | 138 | } |
| 121 | const openBackNumber = (params) => { | 139 | const openBackNumber = (params) => { |
| 122 | console.log(params) | 140 | console.log(params) |
| 123 | const obj = { | 141 | const obj = { |
| 124 | title:'背号查询', | 142 | title: '背号查询', |
| 125 | cptId:params.cptId | 143 | cptId: params.cptId |
| 126 | } | 144 | } |
| 127 | proxy.$refs['backNumberRef'].open(obj) | 145 | proxy.$refs['backNumberRef'].open(obj) |
| 128 | } | 146 | } |
| 129 | const openSchSearch = (params) => { | 147 | const openSchSearch = (params) => { |
| 130 | console.log(params) | 148 | console.log(params) |
| 131 | const obj = { | 149 | const obj = { |
| 132 | title:'日程查询', | 150 | title: '日程查询', |
| 133 | cptId:params.cptId | 151 | cptId: params.cptId |
| 134 | } | 152 | } |
| 135 | proxy.$refs['schSearchRef'].open(obj) | 153 | proxy.$refs['schSearchRef'].open(obj) |
| 136 | } | 154 | } |
| 155 | |||
| 156 | function handelOperation() { | ||
| 157 | router.push('/about/operation') | ||
| 158 | } | ||
| 137 | </script> | 159 | </script> |
| 138 | 160 | ||
| 139 | <style scoped lang="scss"> | 161 | <style lang="scss" scoped> |
| 140 | .poCode{position: fixed;right: 0;top: 40%;background: #fff;padding: 10px 0 0;border-radius: 10px;overflow: hidden; | 162 | .poCode { |
| 141 | box-shadow: 0 2px 8px #aaa;z-index: 99;} | 163 | position: fixed; |
| 164 | right: 0; | ||
| 165 | top: 40%; | ||
| 166 | background: #fff; | ||
| 167 | padding: 10px 0 0; | ||
| 168 | border-radius: 10px; | ||
| 169 | overflow: hidden; | ||
| 170 | box-shadow: 0 2px 8px #aaa; | ||
| 171 | z-index: 99; | ||
| 172 | } | ||
| 173 | |||
| 142 | @media screen and (max-width: 768px) { | 174 | @media screen and (max-width: 768px) { |
| 143 | :deep(.zn-Box .zn-btn){margin-top: 10px;font-size: 14px} | 175 | :deep(.zn-Box .zn-btn) { |
| 144 | :deep(.bgbg){ padding: 3% 5% 0!important; | 176 | margin-top: 10px; |
| 145 | h1 {font-size: 22px;margin:20px 0 0;} | 177 | font-size: 14px |
| 146 | } | 178 | } |
| 147 | .fixed_gg{ | 179 | :deep(.bgbg) { |
| 180 | padding: 3% 5% 0 !important; | ||
| 181 | |||
| 182 | h1 { | ||
| 183 | font-size: 22px; | ||
| 184 | margin: 20px 0 0; | ||
| 185 | } | ||
| 186 | } | ||
| 187 | .fixed_gg { | ||
| 148 | transform: scale(0.7); | 188 | transform: scale(0.7); |
| 149 | transform-origin: right; | 189 | transform-origin: right; |
| 150 | } | 190 | } |
| 151 | } | 191 | } |
| 192 | |||
| 193 | .operation { | ||
| 194 | position: fixed; | ||
| 195 | right: 0; | ||
| 196 | top: 580px; | ||
| 197 | color: #fff; | ||
| 198 | background-color: rgba(0, 0, 0, 0.5); | ||
| 199 | backdrop-filter: blur(4px); | ||
| 200 | border-radius: 50px; | ||
| 201 | padding: 10px 20px; | ||
| 202 | cursor: pointer; | ||
| 203 | } | ||
| 152 | </style> | 204 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog | 2 | <el-dialog |
| 3 | v-model="show" title="Visa Invitation Letter" append-to-body close-icon="CircleClose" center | 3 | v-model="show" append-to-body center close-icon="CircleClose" close-on-click-modal |
| 4 | close-on-click-modal destroy-on-close width="1100" | 4 | destroy-on-close title="Visa Invitation Letter" width="1100" |
| 5 | > | 5 | > |
| 6 | <el-descriptions border> | 6 | <el-descriptions border> |
| 7 | <el-descriptions-item label="No.">{{ form.id }}</el-descriptions-item> | 7 | <el-descriptions-item label="No.">{{ form.id }}</el-descriptions-item> |
| 8 | <el-descriptions-item label="Applicant Type">{{ form.remarks || form.applicatTypeName }}</el-descriptions-item> | 8 | <el-descriptions-item label="Applicant Type">{{ form.remarks || form.applicatTypeName }}</el-descriptions-item> |
| 9 | <el-descriptions-item label="Invitation Type">{{ form.invitationTypeName }}</el-descriptions-item> | 9 | <el-descriptions-item label="Invitation Type">{{ form.invitationTypeName }}</el-descriptions-item> |
| 10 | <!-- <el-descriptions-item label="Do you need a Chinese invitation?">{{--> | 10 | <!-- <el-descriptions-item label="Do you need a Chinese invitation?">{{--> |
| 11 | <!-- form.chinese == '1' ? 'YES' : 'No'--> | 11 | <!-- form.chinese == '1' ? 'YES' : 'No'--> |
| 12 | <!-- }}--> | 12 | <!-- }}--> |
| 13 | <!-- </el-descriptions-item>--> | 13 | <!-- </el-descriptions-item>--> |
| 14 | <el-descriptions-item label="MNA/Team Name">{{ form.nameEn }}</el-descriptions-item> | 14 | <el-descriptions-item label="MNA/Team Name">{{ form.nameEn }}</el-descriptions-item> |
| 15 | <el-descriptions-item label="MNA/Team Address">{{ form.associationAddress }}</el-descriptions-item> | 15 | <el-descriptions-item label="MNA/Team Address">{{ form.associationAddress }}</el-descriptions-item> |
| 16 | <el-descriptions-item label="Contact Email">{{ form.email }}</el-descriptions-item> | 16 | <el-descriptions-item label="Contact Email">{{ form.email }}</el-descriptions-item> |
| ... | @@ -25,7 +25,7 @@ | ... | @@ -25,7 +25,7 @@ |
| 25 | </el-link> | 25 | </el-link> |
| 26 | </el-descriptions-item> | 26 | </el-descriptions-item> |
| 27 | <el-descriptions-item label="Proof of Employment"> | 27 | <el-descriptions-item label="Proof of Employment"> |
| 28 | <el-link v-if="form.invitationFile" target="_blank" :href="fillImgUrl(form.invitationFile)" type="primary"> | 28 | <el-link v-if="form.invitationFile" :href="fillImgUrl(form.invitationFile)" target="_blank" type="primary"> |
| 29 | proof of employment | 29 | proof of employment |
| 30 | </el-link> | 30 | </el-link> |
| 31 | </el-descriptions-item> | 31 | </el-descriptions-item> |
| ... | @@ -34,29 +34,31 @@ | ... | @@ -34,29 +34,31 @@ |
| 34 | <!-- <el-divider></el-divider>--> | 34 | <!-- <el-divider></el-divider>--> |
| 35 | <br/> | 35 | <br/> |
| 36 | <el-table :data="visaList" border stripe> | 36 | <el-table :data="visaList" border stripe> |
| 37 | <el-table-column prop="passportCopy" label="Passport Copy"> | 37 | <el-table-column label="Passport Copy" prop="passportCopy"> |
| 38 | <template #default="{row}"> | 38 | <template #default="{row}"> |
| 39 | <el-image | 39 | <el-image |
| 40 | :src="fillImgUrl(row.passportCopy)" | 40 | :preview-src-list="[fillImgUrl(row.passportCopy)]" |
| 41 | :preview-src-list="[fillImgUrl(row.passportCopy)]" | 41 | :preview-teleported="true" |
| 42 | :preview-teleported="true" | 42 | :src="fillImgUrl(row.passportCopy)" |
| 43 | style="width: 50px;height: 70px" | 43 | style="width: 50px;height: 70px" |
| 44 | /> | 44 | /> |
| 45 | </template> | 45 | </template> |
| 46 | </el-table-column> | 46 | </el-table-column> |
| 47 | <el-table-column label="position" align="center" prop="position"/> | 47 | <el-table-column align="center" label="Date ofEntrye" prop="entryDate"/> |
| 48 | <el-table-column label="lastName" align="center" prop="lastName"/> | 48 | <el-table-column align="center" label="Date ofDeparture" prop="departureDate"/> |
| 49 | <el-table-column label="firstName" align="center" prop="fristName"/> | 49 | <el-table-column align="center" label="position" prop="position"/> |
| 50 | <el-table-column prop="sex" label="Gender" align="center"> | 50 | <el-table-column align="center" label="lastName" prop="lastName"/> |
| 51 | <el-table-column align="center" label="firstName" prop="fristName"/> | ||
| 52 | <el-table-column align="center" label="Gender" prop="sex"> | ||
| 51 | <template #default="{row}"> | 53 | <template #default="{row}"> |
| 52 | {{ row.sex == '0' ? 'M' : 'F' }} | 54 | {{ row.sex == '0' ? 'M' : 'F' }} |
| 53 | </template> | 55 | </template> |
| 54 | </el-table-column> | 56 | </el-table-column> |
| 55 | <el-table-column label="nationality" align="center" prop="nationality"/> | 57 | <el-table-column align="center" label="nationality" prop="nationality"/> |
| 56 | <el-table-column label="birthday" align="center" prop="birthday"/> | 58 | <el-table-column align="center" label="birthday" prop="birthday"/> |
| 57 | <el-table-column label="Passport No." align="center" prop="passportNo"/> | 59 | <el-table-column align="center" label="Passport No." prop="passportNo"/> |
| 58 | <el-table-column label="DATE OF ISSUE" align="center" prop="issueDate"/> | 60 | <el-table-column align="center" label="DATE OF ISSUE" prop="issueDate"/> |
| 59 | <el-table-column label="DATE OF EXPIRY" align="center" prop="expiryDate"/> | 61 | <el-table-column align="center" label="DATE OF EXPIRY" prop="expiryDate"/> |
| 60 | </el-table> | 62 | </el-table> |
| 61 | </el-dialog> | 63 | </el-dialog> |
| 62 | 64 | ||
| ... | @@ -83,17 +85,17 @@ const visaList = ref([]) | ... | @@ -83,17 +85,17 @@ const visaList = ref([]) |
| 83 | const open = (params) => { | 85 | const open = (params) => { |
| 84 | show.value = true | 86 | show.value = true |
| 85 | form.value = params | 87 | form.value = params |
| 86 | 88 | ||
| 87 | listVisaInfo({visaId: params.id}) | 89 | listVisaInfo({visaId: params.id}) |
| 88 | .then((res) => { | 90 | .then((res) => { |
| 89 | visaList.value = res.rows | 91 | visaList.value = res.rows |
| 90 | }) | 92 | }) |
| 91 | 93 | ||
| 92 | } | 94 | } |
| 93 | defineExpose({open}) | 95 | defineExpose({open}) |
| 94 | 96 | ||
| 95 | </script> | 97 | </script> |
| 96 | 98 | ||
| 97 | <style scoped lang="scss"> | 99 | <style lang="scss" scoped> |
| 98 | 100 | ||
| 99 | </style> | 101 | </style> | ... | ... |
| ... | @@ -44,15 +44,17 @@ | ... | @@ -44,15 +44,17 @@ |
| 44 | <el-option :label="language==0?'TE/PU(外办)邀请函':'TE/PU letter'" value="2"/> | 44 | <el-option :label="language==0?'TE/PU(外办)邀请函':'TE/PU letter'" value="2"/> |
| 45 | </el-select> | 45 | </el-select> |
| 46 | </el-form-item> | 46 | </el-form-item> |
| 47 | <el-form-item v-if="form.invitationType==2" label="Proof of Employment" prop="invitationFileArr" required> | 47 | <!-- <el-form-item v-if="form.invitationType==2" label="Proof of Employment" prop="invitationFileArr" required>--> |
| 48 | <div class="red">Proof of employment is required for TE/PU letter letters.</div> | 48 | <!-- <div class="red">Proof of employment is required for TE/PU letter letters.</div>--> |
| 49 | <div class="red"> | 49 | <!-- <div class="red">--> |
| 50 | This document must be issued by the invitee's association and must bear an official stamp or signature. | 50 | <!-- This document must be issued by the invitee's association and must bear an official stamp or signature.--> |
| 51 | </div> | 51 | <!-- </div>--> |
| 52 | <br/> | 52 | <!-- <br/>--> |
| 53 | <file-upload v-model="form.invitationFileArr" :button-text="language==0?'上传':'Upload'" :is-show-tip="false" | 53 | <!-- <file-upload v-model="form.invitationFileArr" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"--> |
| 54 | :limit="1"></file-upload> | 54 | <!-- :limit="1"></file-upload>--> |
| 55 | </el-form-item> | 55 | <!-- </el-form-item>--> |
| 56 | |||
| 57 | |||
| 56 | <!-- <el-form-item :label="language==0?'是否需要中文邀请函':'Do you need a Chinese invitation?'" prop="chinese"--> | 58 | <!-- <el-form-item :label="language==0?'是否需要中文邀请函':'Do you need a Chinese invitation?'" prop="chinese"--> |
| 57 | <!-- required>--> | 59 | <!-- required>--> |
| 58 | <!-- <el-radio-group v-model="form.chinese">--> | 60 | <!-- <el-radio-group v-model="form.chinese">--> |
| ... | @@ -151,6 +153,40 @@ | ... | @@ -151,6 +153,40 @@ |
| 151 | preview-teleported style="width: 60px;z-index: 999;"/> | 153 | preview-teleported style="width: 60px;z-index: 999;"/> |
| 152 | </template> | 154 | </template> |
| 153 | </el-table-column> | 155 | </el-table-column> |
| 156 | <el-table-column :label="language==0?'入境日期':'Date ofEntrye'" prop="" width="130px"> | ||
| 157 | <template #header> | ||
| 158 | <div class="esp"> | ||
| 159 | <span class="red">*</span>Date ofEntrye | ||
| 160 | </div> | ||
| 161 | </template> | ||
| 162 | <template #default="scope"> | ||
| 163 | <el-date-picker | ||
| 164 | v-model="scope.row.entryDate" | ||
| 165 | format="YYYY-MM-DD" | ||
| 166 | placeholder="YYYY-MM-DD" | ||
| 167 | size="small" | ||
| 168 | style="width: 100%;" type="date" | ||
| 169 | value-format="YYYY-MM-DD" | ||
| 170 | /> | ||
| 171 | </template> | ||
| 172 | </el-table-column> | ||
| 173 | <el-table-column :label="language==0?'离境日期':'Date ofDeparture'" prop="" width="130px"> | ||
| 174 | <template #header> | ||
| 175 | <div class="esp"> | ||
| 176 | <span class="red">*</span>Date ofDeparture | ||
| 177 | </div> | ||
| 178 | </template> | ||
| 179 | <template #default="scope"> | ||
| 180 | <el-date-picker | ||
| 181 | v-model="scope.row.departureDate" | ||
| 182 | format="YYYY-MM-DD" | ||
| 183 | placeholder="YYYY-MM-DD" | ||
| 184 | size="small" | ||
| 185 | style="width: 100%;" type="date" | ||
| 186 | value-format="YYYY-MM-DD" | ||
| 187 | /> | ||
| 188 | </template> | ||
| 189 | </el-table-column> | ||
| 154 | <el-table-column :label="'position'" min-width="100" prop="position"> | 190 | <el-table-column :label="'position'" min-width="100" prop="position"> |
| 155 | <template #header> | 191 | <template #header> |
| 156 | <div class="esp"> | 192 | <div class="esp"> |
| ... | @@ -244,10 +280,11 @@ | ... | @@ -244,10 +280,11 @@ |
| 244 | </div> | 280 | </div> |
| 245 | </template> | 281 | </template> |
| 246 | <template #default="scope"> | 282 | <template #default="scope"> |
| 247 | <el-date-picker v-model="scope.row.birthday" | 283 | <el-date-picker |
| 248 | format="YYYY-MM-DD" | 284 | v-model="scope.row.birthday" |
| 249 | placeholder="YYYY-MM-DD" size="small" | 285 | format="YYYY-MM-DD" |
| 250 | style="width: 100%;" type="date" value-format="YYYY-MM-DD" | 286 | placeholder="YYYY-MM-DD" size="small" |
| 287 | style="width: 100%;" type="date" value-format="YYYY-MM-DD" | ||
| 251 | /> | 288 | /> |
| 252 | </template> | 289 | </template> |
| 253 | </el-table-column> | 290 | </el-table-column> |
| ... | @@ -306,10 +343,15 @@ | ... | @@ -306,10 +343,15 @@ |
| 306 | </el-form-item> | 343 | </el-form-item> |
| 307 | <!-- 补充材料--> | 344 | <!-- 补充材料--> |
| 308 | <el-form-item :label="language==0?'补充材料':'Additional Documents'" prop="files"> | 345 | <el-form-item :label="language==0?'补充材料':'Additional Documents'" prop="files"> |
| 309 | <file-upload v-model="form.files" :button-text="language==0?'上传':'Upload'" :is-show-tip="false" | 346 | <file-upload v-model="form.files" :button-text="language==0?'上传':'Upload'" :is-show-tip="false" :limit="1"/> |
| 310 | :limit="1"/> | 347 | </el-form-item> |
| 348 | <el-form-item> | ||
| 349 | <el-checkbox v-model="form.check" style="pointer-events: none"/> | ||
| 350 | <el-link style="margin-left: 5px" type="primary" @click="showCheck=!showCheck">{{ | ||
| 351 | language == 0 ? '我确认所提供的资料是正确的' : 'I confirm that the information provided is correct' | ||
| 352 | }} | ||
| 353 | </el-link> | ||
| 311 | </el-form-item> | 354 | </el-form-item> |
| 312 | |||
| 313 | 355 | ||
| 314 | <div class="text-center"> | 356 | <div class="text-center"> |
| 315 | <el-button :disabled="!cptId" class="btn-lineG" round size="large" type="primary" @click="submit"> | 357 | <el-button :disabled="!cptId" class="btn-lineG" round size="large" type="primary" @click="submit"> |
| ... | @@ -318,6 +360,25 @@ | ... | @@ -318,6 +360,25 @@ |
| 318 | </div> | 360 | </div> |
| 319 | </el-form> | 361 | </el-form> |
| 320 | </div> | 362 | </div> |
| 363 | |||
| 364 | <el-dialog | ||
| 365 | v-model="showCheck" | ||
| 366 | append-to-body center | ||
| 367 | class="pcloginpop" | ||
| 368 | destroy-on-close | ||
| 369 | style="min-width: 300px;max-width: 600px" | ||
| 370 | > | ||
| 371 | <p style="font-size: 16px"> | ||
| 372 | Passport information has been auto-recognized.Please double-check carefully, as errors may occur.Edit if | ||
| 373 | necessary | ||
| 374 | before submission. | ||
| 375 | </p> | ||
| 376 | <br> | ||
| 377 | <p style="text-align: center"> | ||
| 378 | <el-button type="primary" @click="handelSubmit">Confrm</el-button> | ||
| 379 | </p> | ||
| 380 | <br> | ||
| 381 | </el-dialog> | ||
| 321 | </el-dialog> | 382 | </el-dialog> |
| 322 | 383 | ||
| 323 | </template> | 384 | </template> |
| ... | @@ -357,6 +418,7 @@ const title = ref('') | ... | @@ -357,6 +418,7 @@ const title = ref('') |
| 357 | const countrys = ref([]) | 418 | const countrys = ref([]) |
| 358 | const mnaList = ref([]) | 419 | const mnaList = ref([]) |
| 359 | const cptId = ref('') | 420 | const cptId = ref('') |
| 421 | const showCheck = ref(false) | ||
| 360 | const rules = ref( | 422 | const rules = ref( |
| 361 | { | 423 | { |
| 362 | nationality: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], | 424 | nationality: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], |
| ... | @@ -367,6 +429,7 @@ const rules = ref( | ... | @@ -367,6 +429,7 @@ const rules = ref( |
| 367 | passportCopy: [{required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload'},], | 429 | passportCopy: [{required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload'},], |
| 368 | arrival: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], | 430 | arrival: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], |
| 369 | departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], | 431 | departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], |
| 432 | check: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], | ||
| 370 | }) | 433 | }) |
| 371 | const open = (params) => { | 434 | const open = (params) => { |
| 372 | show.value = true | 435 | show.value = true |
| ... | @@ -442,8 +505,13 @@ function getMNAList() { | ... | @@ -442,8 +505,13 @@ function getMNAList() { |
| 442 | }) | 505 | }) |
| 443 | } | 506 | } |
| 444 | 507 | ||
| 445 | const submit = () => { | 508 | function handelSubmit() { |
| 446 | console.log(form.value) | 509 | showCheck.value = false |
| 510 | form.value.check = true | ||
| 511 | } | ||
| 512 | |||
| 513 | const submit = async () => { | ||
| 514 | console.log(form.value.check) | ||
| 447 | if (form.value.email?.indexOf('@') == -1) { | 515 | if (form.value.email?.indexOf('@') == -1) { |
| 448 | ElMessage.warning(language.value == 0 ? '请填写正确的邮箱' : 'Invalid Emaill Address!') | 516 | ElMessage.warning(language.value == 0 ? '请填写正确的邮箱' : 'Invalid Emaill Address!') |
| 449 | return | 517 | return |
| ... | @@ -465,6 +533,14 @@ const submit = () => { | ... | @@ -465,6 +533,14 @@ const submit = () => { |
| 465 | ElMessage.warning(`Please specify ${row.fristName}'s position`) | 533 | ElMessage.warning(`Please specify ${row.fristName}'s position`) |
| 466 | return; | 534 | return; |
| 467 | } | 535 | } |
| 536 | if (!row.entryDate) { | ||
| 537 | ElMessage.warning(`Please specify Date ofEntrye position`) | ||
| 538 | return; | ||
| 539 | } | ||
| 540 | if (!row.departureDate) { | ||
| 541 | ElMessage.warning(`Please specify Date ofDeparture position`) | ||
| 542 | return; | ||
| 543 | } | ||
| 468 | } | 544 | } |
| 469 | 545 | ||
| 470 | if (form.value.files && Array.isArray(form.value.files)) { | 546 | if (form.value.files && Array.isArray(form.value.files)) { |
| ... | @@ -473,27 +549,33 @@ const submit = () => { | ... | @@ -473,27 +549,33 @@ const submit = () => { |
| 473 | if (form.value.invitationFileArr) { | 549 | if (form.value.invitationFileArr) { |
| 474 | form.value.invitationFile = JSON.stringify(form.value.invitationFileArr) | 550 | form.value.invitationFile = JSON.stringify(form.value.invitationFileArr) |
| 475 | } | 551 | } |
| 476 | 552 | await proxy.$refs.iformRef.validate() | |
| 553 | if (!form.value.check) { | ||
| 554 | showCheck.value = true | ||
| 555 | return | ||
| 556 | } | ||
| 557 | await ElMessageBox.confirm( | ||
| 558 | language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it', | ||
| 559 | language.value == 0 ? '提示' : 'Tips', { | ||
| 560 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', | ||
| 561 | cancelButtonText: language.value == 0 ? '取消' : 'Cancel', | ||
| 562 | type: 'warning' | ||
| 563 | }).then(() => { | ||
| 564 | form.value.cptId = cptId.value | ||
| 565 | addInvitation(form.value).then((res) => { | ||
| 566 | if (res.data == -200) { | ||
| 567 | ElMessage.error(language.value == 0 ? '邮箱验证码不正确' : 'Invalid email verification code') | ||
| 568 | } else { | ||
| 569 | ElMessage.success(language.value == 0 ? '提交成功' : 'Successfully!') | ||
| 570 | showR.value = true | ||
| 571 | emit('refresh') | ||
| 572 | } | ||
| 573 | }) | ||
| 574 | }) | ||
| 477 | proxy.$refs.iformRef.validate(valid => { | 575 | proxy.$refs.iformRef.validate(valid => { |
| 478 | if (valid) { | 576 | if (valid) { |
| 479 | ElMessageBox.confirm( | 577 | |
| 480 | language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it', | 578 | |
| 481 | language.value == 0 ? '提示' : 'Tips', { | ||
| 482 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', | ||
| 483 | cancelButtonText: language.value == 0 ? '取消' : 'Cancel', | ||
| 484 | type: 'warning' | ||
| 485 | }).then(() => { | ||
| 486 | form.value.cptId = cptId.value | ||
| 487 | addInvitation(form.value).then((res) => { | ||
| 488 | if (res.data == -200) { | ||
| 489 | ElMessage.error(language.value == 0 ? '邮箱验证码不正确' : 'Invalid email verification code') | ||
| 490 | } else { | ||
| 491 | ElMessage.success(language.value == 0 ? '提交成功' : 'Successfully!') | ||
| 492 | showR.value = true | ||
| 493 | emit('refresh') | ||
| 494 | } | ||
| 495 | }) | ||
| 496 | }) | ||
| 497 | } | 579 | } |
| 498 | }) | 580 | }) |
| 499 | } | 581 | } | ... | ... |
-
Please register or sign in to post a comment