1418e350 by zhangmeng

世锦赛

1 parent c46d2134
...@@ -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'),
......
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>
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 }
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!