49edb3c9 by 杨炀

add: 邀请函

1 parent d4f3bf76
...@@ -635,3 +635,10 @@ export function signgetSignInfoConflict(query) { ...@@ -635,3 +635,10 @@ export function signgetSignInfoConflict(query) {
635 params:query 635 params:query
636 }) 636 })
637 } 637 }
638 export function addInvitation(data) {
639 return request({
640 url: `/league/person`,
641 method: 'post',
642 data: data
643 })
644 }
......
...@@ -1029,6 +1029,20 @@ img{display: block;} ...@@ -1029,6 +1029,20 @@ img{display: block;}
1029 .bg-lineg{position: relative;border-radius: 15px;} 1029 .bg-lineg{position: relative;border-radius: 15px;}
1030 .cover{position: absolute;width: 100%;z-index: 1;height: 100%;background: red;opacity: 0;top:0;} 1030 .cover{position: absolute;width: 100%;z-index: 1;height: 100%;background: red;opacity: 0;top:0;}
1031 } 1031 }
1032 .fixed_gg_l{
1033 position: fixed;left:5px;
1034 top: 25%;
1035 z-index: 10;
1036 animation: pop 4s ease infinite;
1037 img{height: 150px;cursor: pointer;}
1038 }
1039 @keyframes pop {
1040 80%{transform: translateY(0px);}
1041 85%{transform: translateY(-3px);}
1042 90%{transform: translateY(0px);}
1043 95%{transform: translateY(-3px);}
1044 100%{transform: translateY(0px);}
1045 }
1032 .smallToday{display: flex;align-items: center; 1046 .smallToday{display: flex;align-items: center;
1033 .type{margin-right: 20px;} 1047 .type{margin-right: 20px;}
1034 h3{margin: 0 0 10px;} 1048 h3{margin: 0 0 10px;}
......
1 <template>
2 <el-dialog
3 v-model="show" :title="title" width="600px" append-to-body close-icon="CircleClose" center
4 :close-on-click-modal="false" class="pcloginpop"
5 destroy-on-close
6 >
7 <div class="boxInvitation pd20">
8
9 <div class="text-center pd20" v-if="showR">
10 <img class="mauto" src="@/assets/dance/ok.png"/>
11 <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>
12
13 <el-button size="large" type="primary" @click="conti" round class="btn-lineG">
14 {{ language == 0 ? '继续提交' : 'Continue To Submit' }}
15 </el-button>
16 </div>
17
18 <el-form :model="form" :rules="rules" ref="iformRef" label-position="right" label-width="150px" v-else>
19 <el-form-item :label="language==0?'姓名':'Name'" required prop="name">
20 <el-input v-model="form.name"/>
21 </el-form-item>
22 <el-form-item :label="language==0?'性别':'Gender'" required prop="gender">
23 <el-radio-group v-model="form.gender">
24 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
25 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
26 </el-radio-group>
27 </el-form-item>
28 <el-form-item :label="language==0?'国籍':'Nationality'" required prop="nationality">
29 <el-select filterable v-model="form.nationality" style="width: 100%;">
30 <el-option v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
31 :value="item.id"/>
32 </el-select>
33 </el-form-item>
34 <el-form-item :label="language==0?'出生日期':'Date of Birth'" required prop="birth">
35 <el-date-picker
36 v-model="form.birth"
37 style="width: 100%;" placeholder="YYYY-MM-DD"
38 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
39 />
40 </el-form-item>
41 <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
42 <el-input v-model="form.email" type="email"/>
43 </el-form-item>
44 <el-form-item :label="language==0?'护照号':'Passport No.'" required prop="passportNo">
45 <el-input v-model="form.passportNo"/>
46 </el-form-item>
47 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy">
48 <file-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false"
49 :button-text="language==0?'上传':'Upload'"/>
50 </el-form-item>
51 <el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">
52 <el-date-picker
53 v-model="form.arrival" placeholder="YYYY-MM-DD"
54 style="width: 100%;"
55 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
56 />
57 </el-form-item>
58 <el-form-item :label="language==0?'出发日期':'Date of Departure'" required prop="departure">
59 <el-date-picker
60 v-model="form.departure"
61 style="width: 100%;" placeholder="YYYY-MM-DD"
62 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
63 />
64 </el-form-item>
65 <el-form-item :label="language==0?'备注':'Remark '">
66 <el-input type="textarea" v-model="form.remark" rows="3"/>
67 </el-form-item>
68
69 <div class="text-center">
70 <el-button type="primary" size="large" @click="submit" round class="btn-lineG">
71 {{ language == 0 ? '提交' : 'SUBMIT' }}
72 </el-button>
73 </div>
74 </el-form>
75 </div>
76 </el-dialog>
77
78 </template>
79
80 <script setup>
81 import {useStorage} from "@vueuse/core/index";
82 import {getCurrentInstance, watch} from "vue";
83 import {nextTick} from "@vue/runtime-core";
84 import {ElMessage, ElMessageBox} from "element-plus";
85 import {addInvitation, countryList} from "@/apiPc/match";
86
87 const {proxy} = getCurrentInstance()
88 const language = useStorage('language', 0)
89 const form = ref({
90 gender:'0'
91 })
92 const show = ref(false)
93 const showR = ref(false)
94 const title = ref('')
95 const countrys = ref([])
96 const cptId = ref('')
97 const rules = ref(
98 {
99 nationality: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
100 name: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
101 email: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
102 birth: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
103 passportNo: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
104 passportCopy: [{required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload'},],
105 arrival: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
106 departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
107 })
108 const open = (params) => {
109 console.log(params)
110 show.value = true
111 title.value = params.title
112 cptId.value = params.cptId
113 }
114 defineExpose({open})
115 watch(show, (value) => {
116 if (!value) {
117 form.value = {
118 sex: '0'
119 }
120 if (language.value == 0) {
121 form.value.countryId = 240
122 }
123 }
124 nextTick(() => {
125 // proxy.$refs['dialogRef'].clearValidate()
126 })
127 })
128 getCountryList()
129
130 function getCountryList() {
131 countryList().then(res => {
132 countrys.value = res.data
133 })
134 }
135
136 const submit = () => {
137 proxy.$refs.iformRef.validate(valid => {
138 if (valid) {
139 ElMessageBox.confirm(
140 language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it',
141 language.value == 0 ? '提示' : 'Tips', {
142 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
143 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
144 type: 'warning'
145 }).then(() => {
146 form.value.cptId = cptId.value
147 if (Array.isArray(form.value.passportCopy)) {
148 form.value.passportCopy = form.value.passportCopy[0].url
149 }
150 addInvitation(form.value).then((res) => {
151 ElMessage.success('提交成功')
152 showR.value = true
153 })
154 })
155 }
156 })
157 }
158 const conti = () => {
159 showR.value = false
160 form.value = {
161 gender: '0'
162 }
163 }
164 </script>
165
166 <style scoped>
167 .boxInvitation {
168 width: 90%;
169 margin: auto
170 }
171 </style>
...@@ -261,6 +261,12 @@ ...@@ -261,6 +261,12 @@
261 </el-row> 261 </el-row>
262 </div> 262 </div>
263 263
264 <div class="fixed_gg_l" @click="applyInvitation" v-if="matchData.leagueId==0">
265 <img src="@/assets/logo/Invitation_c.png" v-if="language==0"/>
266 <img src="@/assets/logo/Invitation_e.png" v-else/>
267 </div>
268
269 <affix-invitation ref="dialogInvitationRef"/>
264 <div style="height: 50px"></div> 270 <div style="height: 50px"></div>
265 271
266 <el-dialog v-model="signTypePop" class="pcloginpop" close-icon="CircleClose" 272 <el-dialog v-model="signTypePop" class="pcloginpop" close-icon="CircleClose"
...@@ -274,6 +280,8 @@ ...@@ -274,6 +280,8 @@
274 </div> 280 </div>
275 </div> 281 </div>
276 </el-dialog> 282 </el-dialog>
283
284
277 </div> 285 </div>
278 </template> 286 </template>
279 287
...@@ -288,7 +296,7 @@ import QuickRow from "@/viewsPc/match/components/quick-row"; ...@@ -288,7 +296,7 @@ import QuickRow from "@/viewsPc/match/components/quick-row";
288 import {getCurrentInstance, ref} from 'vue' 296 import {getCurrentInstance, ref} from 'vue'
289 import {reactive, onMounted} from '@vue/runtime-core' 297 import {reactive, onMounted} from '@vue/runtime-core'
290 import {useRoute, useRouter} from 'vue-router' 298 import {useRoute, useRouter} from 'vue-router'
291 299 import AffixInvitation from '@/viewsPc/match/components/affix-invitation'
292 const language = useStorage('language', 0) 300 const language = useStorage('language', 0)
293 const route = useRoute() 301 const route = useRoute()
294 const router = useRouter() 302 const router = useRouter()
...@@ -627,6 +635,14 @@ function reSign(){ ...@@ -627,6 +635,14 @@ function reSign(){
627 } 635 }
628 }) 636 })
629 } 637 }
638 function applyInvitation() {
639 var obj = {
640 title: language.value==0?'邀请函申请':'Invitation letter application',
641 cptId: matchId.value,
642 }
643 proxy.$refs['dialogInvitationRef'].open(obj)
644 }
645
630 </script> 646 </script>
631 647
632 <style scoped lang="scss"> 648 <style scoped lang="scss">
......
...@@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => { ...@@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => {
82 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') 82 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
83 }, 83 },
84 '/dev-api': { 84 '/dev-api': {
85 // target: 'http://192.168.1.118:8081/', 85 target: 'http://192.168.1.27:8081/',
86 target: 'https://dance.itechtop.cn/stage-api', 86 // target: 'https://dance.itechtop.cn/stage-api',
87 // target: 'https://wdsfwuxicenter.com/stage-api', 87 // target: 'https://wdsfwuxicenter.com/stage-api',
88 changeOrigin: true, 88 changeOrigin: true,
89 rewrite: (p) => p.replace(/^\/dev-api/, '') 89 rewrite: (p) => p.replace(/^\/dev-api/, '')
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!