世锦赛
Showing
6 changed files
with
435 additions
and
77 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', | ... | ... |
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> |
This diff is collapsed.
Click to expand it.
| 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) }} |
| 19 | </div> | 22 | </div> |
| 20 | </div> | 23 | </div> |
| 21 | </div> | 24 | </div> |
| 22 | <el-dialog v-model="weatherdialog" width="540" :close-on-click-modal="true" | 25 | </div> |
| 23 | style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px; | 26 | <el-dialog v-model="weatherdialog" :close-on-click-modal="true" style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px; |
| 24 | --el-dialog-bg-color:transparent;overflow: hidden;"> | 27 | --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 |
| 178 | } | ||
| 179 | :deep(.bgbg) { | ||
| 180 | padding: 3% 5% 0 !important; | ||
| 181 | |||
| 182 | h1 { | ||
| 183 | font-size: 22px; | ||
| 184 | margin: 20px 0 0; | ||
| 185 | } | ||
| 146 | } | 186 | } |
| 147 | .fixed_gg{ | 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)" | ||
| 41 | :preview-src-list="[fillImgUrl(row.passportCopy)]" | 40 | :preview-src-list="[fillImgUrl(row.passportCopy)]" |
| 42 | :preview-teleported="true" | 41 | :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 | ||
| ... | @@ -94,6 +96,6 @@ defineExpose({open}) | ... | @@ -94,6 +96,6 @@ 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,7 +280,8 @@ | ... | @@ -244,7 +280,8 @@ |
| 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 |
| 284 | v-model="scope.row.birthday" | ||
| 248 | format="YYYY-MM-DD" | 285 | format="YYYY-MM-DD" |
| 249 | placeholder="YYYY-MM-DD" size="small" | 286 | placeholder="YYYY-MM-DD" size="small" |
| 250 | style="width: 100%;" type="date" value-format="YYYY-MM-DD" | 287 | style="width: 100%;" type="date" value-format="YYYY-MM-DD" |
| ... | @@ -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,10 +549,12 @@ const submit = () => { | ... | @@ -473,10 +549,12 @@ 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() | |
| 477 | proxy.$refs.iformRef.validate(valid => { | 553 | if (!form.value.check) { |
| 478 | if (valid) { | 554 | showCheck.value = true |
| 479 | ElMessageBox.confirm( | 555 | return |
| 556 | } | ||
| 557 | await ElMessageBox.confirm( | ||
| 480 | language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it', | 558 | language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it', |
| 481 | language.value == 0 ? '提示' : 'Tips', { | 559 | language.value == 0 ? '提示' : 'Tips', { |
| 482 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', | 560 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', |
| ... | @@ -494,6 +572,10 @@ const submit = () => { | ... | @@ -494,6 +572,10 @@ const submit = () => { |
| 494 | } | 572 | } |
| 495 | }) | 573 | }) |
| 496 | }) | 574 | }) |
| 575 | proxy.$refs.iformRef.validate(valid => { | ||
| 576 | if (valid) { | ||
| 577 | |||
| 578 | |||
| 497 | } | 579 | } |
| 498 | }) | 580 | }) |
| 499 | } | 581 | } | ... | ... |
-
Please register or sign in to post a comment