a7717cc5 by 杨炀

no message

1 parent 0610fc57
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
22 "echarts-wordcloud": "^2.1.0", 22 "echarts-wordcloud": "^2.1.0",
23 "element-plus": "2.2.27", 23 "element-plus": "2.2.27",
24 "file-saver": "2.0.5", 24 "file-saver": "2.0.5",
25 "flag-icon-css": "^4.1.7",
25 "fuse.js": "6.6.2", 26 "fuse.js": "6.6.2",
26 "guid": "^0.0.12", 27 "guid": "^0.0.12",
27 "js-cookie": "3.0.1", 28 "js-cookie": "3.0.1",
...@@ -42,6 +43,7 @@ ...@@ -42,6 +43,7 @@
42 "vue-router": "4.1.4", 43 "vue-router": "4.1.4",
43 "vue-socket.io": "^3.0.10", 44 "vue-socket.io": "^3.0.10",
44 "vue-ueditor-wrap": "3.x", 45 "vue-ueditor-wrap": "3.x",
46 "vue3-puzzle-vcode": "^1.1.7",
45 "vuedraggable": "^4.1.0", 47 "vuedraggable": "^4.1.0",
46 "zxcvbn": "^4.4.2" 48 "zxcvbn": "^4.4.2"
47 }, 49 },
......
1 import request from '@/utils/request' 1 import request from '@/utils/request'
2 2
3 export function loginZtx(username, password, code, uuid) { 3 export function loginDance(username, password, code, uuid) {
4 const data = { 4 const data = {
5 username, 5 username,
6 password, 6 password,
...@@ -8,7 +8,7 @@ export function loginZtx(username, password, code, uuid) { ...@@ -8,7 +8,7 @@ export function loginZtx(username, password, code, uuid) {
8 uuid 8 uuid
9 } 9 }
10 return request({ 10 return request({
11 url: `/loginZtx`, 11 url: `/userLogin`,
12 headers: { 12 headers: {
13 isToken: false 13 isToken: false
14 }, 14 },
......

2.97 KB | W: | H:

2.9 KB | W: | H:

src/assets/dance/btn01.png
src/assets/dance/btn01.png
src/assets/dance/btn01.png
src/assets/dance/btn01.png
  • 2-up
  • Swipe
  • Onion skin

3 KB | W: | H:

3.57 KB | W: | H:

src/assets/dance/btn02.png
src/assets/dance/btn02.png
src/assets/dance/btn02.png
src/assets/dance/btn02.png
  • 2-up
  • Swipe
  • Onion skin

3.18 KB | W: | H:

3.19 KB | W: | H:

src/assets/dance/btn03.png
src/assets/dance/btn03.png
src/assets/dance/btn03.png
src/assets/dance/btn03.png
  • 2-up
  • Swipe
  • Onion skin

2.85 KB | W: | H:

2.79 KB | W: | H:

src/assets/dance/btn04.png
src/assets/dance/btn04.png
src/assets/dance/btn04.png
src/assets/dance/btn04.png
  • 2-up
  • Swipe
  • Onion skin

2.84 KB | W: | H:

3.29 KB | W: | H:

src/assets/dance/btn05.png
src/assets/dance/btn05.png
src/assets/dance/btn05.png
src/assets/dance/btn05.png
  • 2-up
  • Swipe
  • Onion skin

3.36 KB | W: | H:

3.34 KB | W: | H:

src/assets/dance/btn06.png
src/assets/dance/btn06.png
src/assets/dance/btn06.png
src/assets/dance/btn06.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -182,3 +182,39 @@ aside { ...@@ -182,3 +182,39 @@ aside {
182 margin-bottom: 10px; 182 margin-bottom: 10px;
183 } 183 }
184 } 184 }
185 .primary-kx{border:1px solid var(--el-color-primary)!important;color: var(--el-color-primary)!important;}
186 .primary-kx:hover{}
187 .border-info{background: rgba(69,61,234,0.04);
188 border: 1px solid #D3D1F6;
189 border-radius: 5px;padding: 20px;margin-bottom: 20px;}
190 .el-step__title.is-success{
191 color: var(--el-color-primary)!important;
192 }
193 .el-step__head.is-success{
194 .el-step__icon{color: #fff;border: none;
195 background: linear-gradient(90deg, #8623FC, #453DEA);}
196 }
197 .el-step__line{border-top:1px dashed #D1D6D8;background: transparent!important;
198 }
199 .el-step__head.is-process{border-top: var(--el-color-primary);
200 .el-step__icon{color: #fff;border: none;
201 background: linear-gradient(90deg, #8623FC, #453DEA);}
202 }
203 .el-step__title.is-process{
204 color: var(--el-color-primary)!important;font-weight: 400;
205 }
206 .el-step__title{font-weight: 400;}
207
208 .pcloginpop.el-dialog{
209 --el-dialog-box-shadow: 0px 0px 13px 0px rgba(153,153,153,0.14);
210 --el-dialog-border-radius: 10px;
211 .el-dialog__header{border-bottom: 1px solid #e1e1e1;
212 font-weight: 600;
213 font-size: 24px;}
214 .el-dialog__headerbtn{font-size: 24px!important;color: #A0A0A0;}
215 }
216
217 .w200px{width: 200px;}
218 .pt30{padding-top: 30px;}
219 .d-form-border{
220 border: 1px solid #E5E5E5;margin: 20px 0;padding: 20px}
......
...@@ -496,7 +496,9 @@ img{display: block;} ...@@ -496,7 +496,9 @@ img{display: block;}
496 } 496 }
497 } 497 }
498 .bg-lineg{ background: linear-gradient(90deg, #8623FC, #453DEA);color: #fff;} 498 .bg-lineg{ background: linear-gradient(90deg, #8623FC, #453DEA);color: #fff;}
499 .lineHead{height: 50px;padding: 15px;overflow: auto; 499 .lineHead{
500 //height: 50px;
501 padding: 15px;overflow: auto;
500 background: linear-gradient(90deg, #8623FC, #453DEA); 502 background: linear-gradient(90deg, #8623FC, #453DEA);
501 h3{margin: 0;background: #FFFFFF; 503 h3{margin: 0;background: #FFFFFF;
502 font-size: 18px; 504 font-size: 18px;
......
...@@ -36,7 +36,7 @@ $base-sub-menu-background:#000c17; ...@@ -36,7 +36,7 @@ $base-sub-menu-background:#000c17;
36 $base-sub-menu-hover:#001528; 36 $base-sub-menu-hover:#001528;
37 */ 37 */
38 38
39 $--color-primary: #409EFF; 39 $--color-primary: #453DEA;
40 $--color-success: #67C23A; 40 $--color-success: #67C23A;
41 $--color-warning: #E6A23C; 41 $--color-warning: #E6A23C;
42 $--color-danger: #F56C6C; 42 $--color-danger: #F56C6C;
......
...@@ -61,8 +61,14 @@ ...@@ -61,8 +61,14 @@
61 <!-- | &nbsp;<span @click="goRegister">注册</span>--> 61 <!-- | &nbsp;<span @click="goRegister">注册</span>-->
62 </el-button> 62 </el-button>
63 63
64 <el-button v-else style="border-radius: 20px;" class="loginBtn"><span @click="router.push('/center/myInfo')">个人中心</span> 64 <el-button v-if="language==0" style="border-radius: 20px;" class="loginBtn">
65 &nbsp;&nbsp;<span @click="logout()">退出</span></el-button> 65 <span @click="router.push('/center/myInfo')">个人中心</span>
66 &nbsp;&nbsp;<span @click="logout()">退出</span>
67 </el-button>
68 <el-button v-if="language==1" style="border-radius: 20px;" class="loginBtn">
69 <span @click="router.push('/center/myInfo')">个人中心</span>
70 &nbsp;&nbsp;<span @click="logout()">退出</span>
71 </el-button>
66 </div> 72 </div>
67 </div> 73 </div>
68 <a class="ropenbtn" @click="showDrawer"> 74 <a class="ropenbtn" @click="showDrawer">
...@@ -125,43 +131,6 @@ ...@@ -125,43 +131,6 @@
125 </el-menu> 131 </el-menu>
126 </el-drawer> 132 </el-drawer>
127 <LoginDialog ref="pcloginDialog" @submitForm="reFlash" /> 133 <LoginDialog ref="pcloginDialog" @submitForm="reFlash" />
128 <el-dialog
129 v-model="registerVisible"
130 title="用户注册"
131 width="30%"
132 >
133 <el-form
134 ref="loginRef"
135 :model="loginForm"
136 >
137 <el-form-item prop="telNo" style="height: 40px">
138 <el-input
139 v-model="loginForm.telNo"
140 type="text"
141 auto-complete="off"
142 placeholder="请输入手机号"
143 >
144 <template #prefix><svg-icon icon-class="phone" class="el-input__icon input-icon" /></template>
145 </el-input>
146 </el-form-item>
147 <el-form-item prop="captcha" style="height: 40px">
148 <captcha ref="codeRef" v-model="loginForm.captcha" v-model:uuid="loginForm.uuid" style="height: 40px" @keyup.enter="handleLogin" />
149 </el-form-item>
150 <el-form-item prop="code" style="height: 40px">
151 <captcha-sms v-model="loginForm.code" style="height: 40px" :verify="checkCaptchaSms" @keyup.enter="handleLogin" @error="getCode" />
152 </el-form-item>
153 <el-form-item style="width: 100%;height: 40px">
154 <el-button
155 :loading="loading"
156 size="large"
157 type="primary"
158 style="width: 100%;border: 0;"
159 >
160 <span>注册</span>
161 </el-button>
162 </el-form-item>
163 </el-form>
164 </el-dialog>
165 <SearchPop v-if="language==0" ref="searchDialog" /> 134 <SearchPop v-if="language==0" ref="searchDialog" />
166 <SearchPop_en v-if="language==1" ref="searchDialog" /> 135 <SearchPop_en v-if="language==1" ref="searchDialog" />
167 </template> 136 </template>
...@@ -192,7 +161,7 @@ const mode = ref('horizontal') ...@@ -192,7 +161,7 @@ const mode = ref('horizontal')
192 const language = ref(cache.local.get('language') || 0) 161 const language = ref(cache.local.get('language') || 0)
193 onMounted(() => { 162 onMounted(() => {
194 console.log(window.location.href) 163 console.log(window.location.href)
195 if (useUserStore().perId) { 164 if (useUserStore().user) {
196 isLogin.value = true 165 isLogin.value = true
197 } 166 }
198 if (window.location.href.indexOf('en') > -1) { 167 if (window.location.href.indexOf('en') > -1) {
...@@ -241,17 +210,15 @@ const logout = () => { ...@@ -241,17 +210,15 @@ const logout = () => {
241 } 210 }
242 211
243 const goLogin = (flag) => { 212 const goLogin = (flag) => {
244 // let param = null 213 let param = null
245 // if (_.isBoolean(flag)) { 214 if (_.isBoolean(flag)) {
246 // param = { 215 param = {
247 // notShowClose: flag 216 notShowClose: flag
248 // } 217 }
249 // } 218 }
250 // proxy.$refs['pcloginDialog'].open(param) 219 proxy.$refs['pcloginDialog'].open(param)
251 }
252 const goRegister = () => {
253 registerVisible.value = true
254 } 220 }
221
255 const reFlash = () => { 222 const reFlash = () => {
256 // 刷新 223 // 刷新
257 location.reload() 224 location.reload()
......
...@@ -25,6 +25,8 @@ import { getConfigKey, updateConfigByKey } from '@/api/system/config' ...@@ -25,6 +25,8 @@ import { getConfigKey, updateConfigByKey } from '@/api/system/config'
25 import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels, fillImgUrl, downloadFile } from '@/utils/ruoyi' 25 import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels, fillImgUrl, downloadFile } from '@/utils/ruoyi'
26 import { CountDown } from 'vant' 26 import { CountDown } from 'vant'
27 import 'vant/lib/index.css' 27 import 'vant/lib/index.css'
28 import 'flag-icon-css/css/flag-icons.css'
29
28 // 分页组件 30 // 分页组件
29 import PaginationPc from '@/components/PaginationPc' 31 import PaginationPc from '@/components/PaginationPc'
30 // 自定义表格工具组件 32 // 自定义表格工具组件
...@@ -55,6 +57,8 @@ import routerEn from './routerPc/en' ...@@ -55,6 +57,8 @@ import routerEn from './routerPc/en'
55 import localeCn from 'element-plus/lib/locale/lang/zh-cn' // 中文语言 57 import localeCn from 'element-plus/lib/locale/lang/zh-cn' // 中文语言
56 import localeEn from 'element-plus/lib/locale/lang/en' 58 import localeEn from 'element-plus/lib/locale/lang/en'
57 59
60
61
58 const language = cache.local.get('language') || 0 62 const language = cache.local.get('language') || 0
59 const app = createApp(App) 63 const app = createApp(App)
60 64
...@@ -110,6 +114,8 @@ app.use(store) ...@@ -110,6 +114,8 @@ app.use(store)
110 app.use(plugins) 114 app.use(plugins)
111 app.use(elementIcons) 115 app.use(elementIcons)
112 app.use(CountDown) 116 app.use(CountDown)
117 // app.use(Vcode)
118
113 app.component('SvgIcon', SvgIcon) 119 app.component('SvgIcon', SvgIcon)
114 120
115 app.use(VueVideoPlayer) 121 app.use(VueVideoPlayer)
......
...@@ -13,7 +13,7 @@ router.beforeEach((to, from, next) => { ...@@ -13,7 +13,7 @@ router.beforeEach((to, from, next) => {
13 // debugger 13 // debugger
14 if (getToken()) { 14 if (getToken()) {
15 // 判断当前用户是否已拉取完user_info信息 15 // 判断当前用户是否已拉取完user_info信息
16 if (!useUserStore().name) { 16 if (!useUserStore().user) {
17 isRelogin.show = true 17 isRelogin.show = true
18 useUserStore().getInfo().then(() => { 18 useUserStore().getInfo().then(() => {
19 isRelogin.show = false 19 isRelogin.show = false
......
...@@ -319,6 +319,34 @@ export const constantRoutes = [ ...@@ -319,6 +319,34 @@ export const constantRoutes = [
319 ] 319 ]
320 }, 320 },
321 { 321 {
322 path: 'register',
323 component: Empty,
324 redirect: '/register',
325 children: [
326 {
327 path: '0',
328 component: () => import('@/viewsPc/register/personal'),
329 name: 'personalRegister',
330 meta: { title: '个人注册' }
331 },{
332 path: '1',
333 component: () => import('@/viewsPc/register/team/team'),
334 name: 'teamRegister',
335 meta: { title: '团体注册' }
336 },{
337 path: 'userAgreement',
338 component: () => import('@/viewsPc/register/userAgreement'),
339 name: 'userAgreement',
340 meta: { title: '团体注册' }
341 },{
342 path: 'policy',
343 component: () => import('@/viewsPc/register/policy'),
344 name: 'policy',
345 meta: { title: '团体注册' }
346 }
347 ]
348 },
349 {
322 path: 'search', 350 path: 'search',
323 component: Empty, 351 component: Empty,
324 redirect: '/search', 352 redirect: '/search',
......
...@@ -4,7 +4,7 @@ import defAva from '@/assets/images/profile.jpg' ...@@ -4,7 +4,7 @@ import defAva from '@/assets/images/profile.jpg'
4 import { getMyOwnMemberInfo } from '@/api/system/userInfo.js' 4 import { getMyOwnMemberInfo } from '@/api/system/userInfo.js'
5 import { defineStore } from 'pinia' 5 import { defineStore } from 'pinia'
6 import aes from '@/utils/aes' 6 import aes from '@/utils/aes'
7 import { loginZtx } from '@/apiPc/login.js' 7 import { loginDance } from '@/apiPc/login.js'
8 import { getRemindCount } from '@/api/system/user' 8 import { getRemindCount } from '@/api/system/user'
9 import { ElMessageBox } from 'element-plus' 9 import { ElMessageBox } from 'element-plus'
10 10
...@@ -68,7 +68,7 @@ const useUserStore = defineStore( ...@@ -68,7 +68,7 @@ const useUserStore = defineStore(
68 const uuid = userInfo.uuid 68 const uuid = userInfo.uuid
69 const code = userInfo.code 69 const code = userInfo.code
70 return new Promise((resolve, reject) => { 70 return new Promise((resolve, reject) => {
71 loginZtx(username, password, code, uuid).then(res => { 71 loginDance(username, password, code, uuid).then(res => {
72 setToken(res.data.token) 72 setToken(res.data.token)
73 this.token = res.data.token 73 this.token = res.data.token
74 resolve() 74 resolve()
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
5 <el-col :span="6"> 5 <el-col :span="6">
6 <el-card class="mt30"> 6 <el-card class="mt30">
7 <div class="center-menu"> 7 <div class="center-menu">
8 <el-avatar :size="100" :src="fillImgUrl(myform.avatar)" /> 8 <!-- <el-avatar :size="100" :src="fillImgUrl(myform.avatar)" />-->
9 <h3>{{ myform.nickName }}</h3> 9 <h3>{{ myform.nickName }}</h3>
10 <ul> 10 <ul>
11 <li 11 <li
...@@ -43,14 +43,14 @@ const router = useRouter() ...@@ -43,14 +43,14 @@ const router = useRouter()
43 const myform = ref({}) 43 const myform = ref({})
44 const menus = ref([ 44 const menus = ref([
45 { 45 {
46 name: '个人中心', 46 name: '基础信息',
47 routeName: 'myInfo', 47 routeName: 'myInfo',
48 picUrl1: '/img/tool01.png', 48 picUrl1: '/img/tool01.png',
49 picUrl2: '/img/tool01_dwn.png', 49 picUrl2: '/img/tool01_dwn.png',
50 isActive: false 50 isActive: false
51 }, 51 },
52 { 52 {
53 name: '团体信息', 53 name: '修改密码',
54 routeName: 'myTeam', 54 routeName: 'myTeam',
55 picUrl1: '/img/tool02.png', 55 picUrl1: '/img/tool02.png',
56 picUrl2: '/img/tool02_dwn.png', 56 picUrl2: '/img/tool02_dwn.png',
......
...@@ -48,19 +48,19 @@ ...@@ -48,19 +48,19 @@
48 <div class="itemBox"> 48 <div class="itemBox">
49 <el-row :gutter="20"> 49 <el-row :gutter="20">
50 <el-col :sm="12" :lg="8"> 50 <el-col :sm="12" :lg="8">
51 <div class="item"><img src="@/assets/dance/btn01.png">赛事介绍</div></el-col> 51 <div class="item"><img src="@/assets/dance/btn01.png">酒店预订</div></el-col>
52 <el-col :sm="12" :lg="8"> 52 <el-col :sm="12" :lg="8">
53 <div class="item"><img src="@/assets/dance/btn02.png">赛事通知</div></el-col> 53 <div class="item"><img src="@/assets/dance/btn02.png">车辆预约</div></el-col>
54 <el-col :sm="12" :lg="8"> 54 <el-col :sm="12" :lg="8">
55 <div class="item"><img src="@/assets/dance/btn03.png">报名参与</div> 55 <div class="item"><img src="@/assets/dance/btn03.png">餐饮预约</div>
56 </el-col> 56 </el-col>
57 <el-col :sm="12" :lg="8"> 57 <el-col :sm="12" :lg="8">
58 <div class="item"><img src="@/assets/dance/btn04.png">票务预订</div> 58 <div class="item"><img src="@/assets/dance/btn04.png">票务预订</div>
59 </el-col> 59 </el-col>
60 <el-col :sm="12" :lg="8"> 60 <el-col :sm="12" :lg="8">
61 <div class="item"><img src="@/assets/dance/btn05.png">酒店预订</div></el-col> 61 <div class="item"><img src="@/assets/dance/btn05.png">化妆预约</div></el-col>
62 <el-col :sm="12" :lg="8"> 62 <el-col :sm="12" :lg="8">
63 <div class="item"><img src="@/assets/dance/btn06.png">化妆预约</div></el-col> 63 <div class="item"><img src="@/assets/dance/btn06.png">拍照预约</div></el-col>
64 </el-row> 64 </el-row>
65 </div> 65 </div>
66 66
...@@ -79,7 +79,8 @@ ...@@ -79,7 +79,8 @@
79 </div> 79 </div>
80 <!--赛事日历--> 80 <!--赛事日历-->
81 <el-card :body-style="{'padding':'20px 20px'}"> 81 <el-card :body-style="{'padding':'20px 20px'}">
82 <el-calendar v-model="calendarValue" :range="['2024-07-21','2024-07-27']"> 82 <!-- <el-calendar v-model="calendarValue" :range="calendarRange">-->
83 <el-calendar>
83 <template #date-cell="data"> 84 <template #date-cell="data">
84 <div v-if="data.data.day.slice(8,10)==22" class="primaryDate date">22</div> 85 <div v-if="data.data.day.slice(8,10)==22" class="primaryDate date">22</div>
85 <div v-else class="date"> 86 <div v-else class="date">
...@@ -112,15 +113,13 @@ ...@@ -112,15 +113,13 @@
112 </el-col> 113 </el-col>
113 <el-col :sm="24" :lg="12"> 114 <el-col :sm="24" :lg="12">
114 <div class="indexTitle"> 115 <div class="indexTitle">
115 <h3 class="leftboderTT">历史排名</h3> 116 <h3 class="leftboderTT">奖牌榜</h3>
116 <a class="more" href="#/saiC">MORE</a> 117 <a class="more" href="#/saiC">MORE</a>
117 </div> 118 </div>
118 <!--历史排名--> 119 <!--历史排名-->
119 <el-card :body-style="{'padding':'10px 20px 18px'}"> 120 <el-card :body-style="{'padding':'10px 20px 18px'}">
120 <el-tabs v-model="activeRankName" @tab-click="rankTabClick">
121 <el-tab-pane v-for="(p,index) in rankTabs" :label="p.name" :name="index">
122 <el-table stripe :data="rankList"> 121 <el-table stripe :data="rankList">
123 <el-table-column label="排名" align="center" width="55" type="index"> 122 <el-table-column label="名次" align="center" width="55" type="index">
124 <template #default="scope"> 123 <template #default="scope">
125 <span v-if="scope.row.index == 1" style="color:#F8A617">{{ scope.row.index }}</span> 124 <span v-if="scope.row.index == 1" style="color:#F8A617">{{ scope.row.index }}</span>
126 <span v-else-if="scope.row.index == 2" style="color:#778B92">{{ scope.row.index }}</span> 125 <span v-else-if="scope.row.index == 2" style="color:#778B92">{{ scope.row.index }}</span>
...@@ -128,16 +127,44 @@ ...@@ -128,16 +127,44 @@
128 <span v-else>{{ scope.row.index }}</span> 127 <span v-else>{{ scope.row.index }}</span>
129 </template> 128 </template>
130 </el-table-column> 129 </el-table-column>
131 <el-table-column label="姓名" prop="name" /> 130 <el-table-column label="国家/地区" prop="name">
132 <el-table-column label="国家" prop="gj" /> 131 <template #default="scope">
133 <el-table-column label="分值" align="center"> 132 <div>
133 <span :class="`flag-icon flag-icon-${scope.row.code}`"></span>
134 {{ scope.row.gj }}</div>
135 </template>
136 </el-table-column>
137 <el-table-column prop="score">
138 <template #header>
139 <img src="@/assets/dance/1.png">
140 </template>
141 <template #default="scope">
142 <div class="text-warning">{{ scope.row.score }}</div>
143 </template>
144 </el-table-column>
145 <el-table-column prop="score">
146 <template #header>
147 <img src="@/assets/dance/2.png">
148 </template>
149 <template #default="scope">
150 <div class="text-blue">{{ scope.row.score }}</div>
151 </template>
152 </el-table-column>
153 <el-table-column prop="score">
154 <template #header>
155 <img src="@/assets/dance/3.png">
156 </template>
157 <template #default="scope">
158 <div class="text-primary">{{ scope.row.score }}</div>
159 </template>
160 </el-table-column>
161 <el-table-column label="总数" align="center">
134 <template #default="scope"> 162 <template #default="scope">
135 <div class="text-primary">{{ scope.row.score }}</div> 163 <div class="text-primary">{{ scope.row.score }}</div>
136 </template> 164 </template>
137 </el-table-column> 165 </el-table-column>
138 </el-table> 166 </el-table>
139 </el-tab-pane> 167
140 </el-tabs>
141 </el-card> 168 </el-card>
142 </el-col> 169 </el-col>
143 </el-row> 170 </el-row>
...@@ -356,12 +383,13 @@ const canNext = ref(false) ...@@ -356,12 +383,13 @@ const canNext = ref(false)
356 const activeRankName = ref(0) 383 const activeRankName = ref(0)
357 const time = ref(0) 384 const time = ref(0)
358 const rankList = ref([ 385 const rankList = ref([
359 { index: '1', name: '陈莎莎', score: '170',gj:'中国' }, 386 { index: '1', code: 'cn', score: '170',gj:'中国' },
360 { index: '2', name: '陈莎莎', score: '170' ,gj:'中国'}, 387 { index: '2', code: 'us', score: '170' ,gj:'中国'},
361 { index: '3', name: '陈莎莎', score: '170',gj:'中国' }, 388 { index: '3', code: 'de', score: '170',gj:'中国' },
362 { index: '4', name: '陈莎莎', score: '170',gj:'中国' }, 389 { index: '4', code: 'eg', score: '170',gj:'中国' },
363 { index: '5', name: '陈莎莎', score: '170' ,gj:'中国'}, 390 { index: '5', code: 'ly', score: '170' ,gj:'中国'},
364 { index: '6', name: '陈莎莎', score: '170' ,gj:'中国'} 391 { index: '6', code: 'tn', score: '170' ,gj:'中国'},
392 { index: '7', code: 'gw', score: '170' ,gj:'中国'}
365 ]) 393 ])
366 const rankTabs = ref([ 394 const rankTabs = ref([
367 { name: '拉丁舞' }, 395 { name: '拉丁舞' },
...@@ -389,7 +417,8 @@ const scores = ref([]) ...@@ -389,7 +417,8 @@ const scores = ref([])
389 const nowscores = ref([]) 417 const nowscores = ref([])
390 const livelist = ref([]) 418 const livelist = ref([])
391 const picList = ref([]) 419 const picList = ref([])
392 const calendarValue = ref('2024-07-22') 420 // const calendarValue = ref('2024-07-22')
421 // const calendarRange = ref(['2024-07-21','2024-07-27'])
393 const showgg = ref(true) 422 const showgg = ref(true)
394 onMounted(() => { 423 onMounted(() => {
395 init() 424 init()
...@@ -465,7 +494,8 @@ const goNews = () => { ...@@ -465,7 +494,8 @@ const goNews = () => {
465 .item{box-shadow: 0px 0px 21px 0px rgba(41,23,101,0.14);margin: 10px 0; 494 .item{box-shadow: 0px 0px 21px 0px rgba(41,23,101,0.14);margin: 10px 0;
466 display: flex;align-items: center; 495 display: flex;align-items: center;
467 font-size: 22px; 496 font-size: 22px;
468 background: #FFFFFF; 497 background:url("@/assets/dance/btn_bg.png") no-repeat left #FFFFFF;
498 background-size: 100% 100%;
469 border-radius: 15px; 499 border-radius: 15px;
470 img{margin: 0 5%;} 500 img{margin: 0 5%;}
471 } 501 }
...@@ -578,7 +608,7 @@ const goNews = () => { ...@@ -578,7 +608,7 @@ const goNews = () => {
578 } 608 }
579 } 609 }
580 610
581 .calendarList{border: 1px solid #F0F0F0;padding:12px 20px;overflow: auto;height: 220px; 611 .calendarList{border: 1px solid #F0F0F0;padding:12px 20px;overflow: auto;height: 225px;
582 ul{ 612 ul{
583 li{background: #F6F9FE;margin:7px 0 7px 20px;position: relative;padding: 13px; 613 li{background: #F6F9FE;margin:7px 0 7px 20px;position: relative;padding: 13px;
584 border-radius: 10px; 614 border-radius: 10px;
......
1 <template> 1 <template>
2 <el-dialog 2 <el-dialog close-icon="CircleClose" center
3 v-model="show" class="login" width="560px" append-to-body title="用户登录" 3 v-model="show" class="pcloginpop" width="450px" :append-to-body="true" :title="title"
4 destroy-on-close :show-close="showClose" :close-on-click-modal="false" 4 destroy-on-close :show-close="showClose" :close-on-click-modal="false" @close="close"
5 > 5 >
6 <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form"> 6
7 <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form" v-if="loginStatus==0">
7 <el-form-item prop="username"> 8 <el-form-item prop="username">
8 9
9 <el-input 10 <el-input
10 v-model.trim="loginForm.username" 11 v-model.trim="loginForm.username"
11 size="large" 12 size="large"
12 auto-complete="off" 13 auto-complete="off"
13 placeholder="会员号" 14 placeholder="账号(注册时使用的邮箱/手机号码)"
14 > 15 >
15 <template #prefix> 16
16 <svg-icon icon-class="user" class="el-input__icon input-icon" />
17 </template>
18 </el-input> 17 </el-input>
19 </el-form-item> 18 </el-form-item>
20 <el-form-item prop="password"> 19 <el-form-item prop="password">
21 <el-input 20 <el-input
22 v-model.trim="loginForm.password" 21 v-model.trim="loginForm.password"
23 type="password" 22 type="password"
24 size="large" 23 size="large" show-password
25 auto-complete="off" 24 auto-complete="off"
26 placeholder="密码" 25 placeholder="密码"
27 @keyup.enter="handleLogin" 26 @keyup.enter="handleLogin"
28 > 27 >
29 <template #prefix><svg-icon
30 icon-class="password"
31 class="el-input__icon input-icon"
32 /></template>
33 </el-input> 28 </el-input>
34 </el-form-item> 29 </el-form-item>
35 <el-form-item v-if="captchaEnabled" prop="code"> 30 <el-form-item v-if="captchaEnabled" prop="code">
...@@ -38,16 +33,15 @@ ...@@ -38,16 +33,15 @@
38 size="large" 33 size="large"
39 auto-complete="off" 34 auto-complete="off"
40 placeholder="验证码" 35 placeholder="验证码"
41 style="width: 70%"
42 @keyup.enter="handleLogin" 36 @keyup.enter="handleLogin"
43 > 37 >
44 <template #prefix> 38 <template #append>
45 <svg-icon icon-class="validCode" class="el-input__icon input-icon" /> 39 <div class="login-code">
40 <img :src="codeUrl" class="login-code-img" @click="getCode">
41 </div>
46 </template> 42 </template>
47 </el-input> 43 </el-input>
48 <div class="login-code"> 44
49 <img :src="codeUrl" class="login-code-img" @click="getCode">
50 </div>
51 </el-form-item> 45 </el-form-item>
52 46
53 <el-form-item style="width:100%;"> 47 <el-form-item style="width:100%;">
...@@ -64,9 +58,96 @@ ...@@ -64,9 +58,96 @@
64 </el-button> 58 </el-button>
65 </el-form-item> 59 </el-form-item>
66 <el-form-item> 60 <el-form-item>
67 <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span> 61 <!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>-->
62 <div style="display: flex;justify-content: space-between;width: 100%;">
63 <a class="text-primary" @click="showChangePassword">忘记密码?</a>
64 <a @click="showRegister" class="text-primary">账号注册></a>
65 </div>
66 </el-form-item>
67 <el-form-item>
68 <div class="agreeLine">
69 登录或注册即代表同意
70 <a>《用户协议》</a>
71 <a>《隐私政策》</a>
72 </div>
68 </el-form-item> 73 </el-form-item>
69 </el-form> 74 </el-form>
75
76 <div v-if="loginStatus==1">
77 <div class="rItem r1" @click="goRegister(1)">
78 <h3>机构用户</h3>
79 </div>
80 <div class="rItem r2" @click="goRegister(0)">
81 <h3>个人用户</h3>
82 </div>
83 </div>
84 <div v-if="loginStatus==2">
85 <el-form ref="changePasswordRef" :model="changePasswordForm" :rules="changePasswordRules" class="login-form">
86 <el-form-item prop="username">
87
88 <el-input
89 v-model.trim="changePasswordForm.username"
90 size="large"
91 auto-complete="off"
92 placeholder="注册时使用的邮箱/手机号码"
93 >
94
95 </el-input>
96 </el-form-item>
97 <el-form-item prop="code">
98 <el-input
99 v-model.trim="changePasswordForm.code"
100 size="large"
101 auto-complete="off"
102 placeholder="邮箱/手机验证码"
103 @keyup.enter="handleLogin"
104 >
105 <template #append>
106 <span class="text-primary" @click="sendsmsMsg">
107 发送验证码
108 </span>
109 </template>
110 </el-input>
111 <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">
112 <Vcode :show="isShow" type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode>
113 </div>
114 </el-form-item>
115
116 <el-form-item prop="password">
117 <el-input
118 v-model.trim="changePasswordForm.password"
119 type="password"
120 size="large" show-password
121 auto-complete="off"
122 placeholder="新密码"
123 @keyup.enter="handleLogin"
124 >
125 </el-input>
126 </el-form-item>
127 <el-form-item prop="password">
128 <el-input
129 v-model.trim="changePasswordForm.confirmPassword"
130 type="password"
131 size="large" show-password
132 auto-complete="off"
133 placeholder="确认密码"
134 >
135 </el-input>
136 </el-form-item>
137 <el-form-item style="width:100%;">
138 <el-button
139 class="loginBtn"
140 :loading="loading"
141 size="large"
142 type="primary"
143 style="width:100%;"
144 @click.prevent="handleLogin"
145 >
146 <span>确定</span>
147 </el-button>
148 </el-form-item>
149 </el-form>
150 </div>
70 </el-dialog> 151 </el-dialog>
71 </template> 152 </template>
72 153
...@@ -77,7 +158,7 @@ import Cookies from 'js-cookie' ...@@ -77,7 +158,7 @@ import Cookies from 'js-cookie'
77 import useUserStore from '@/store/modules/user' 158 import useUserStore from '@/store/modules/user'
78 import { useRouter } from 'vue-router' 159 import { useRouter } from 'vue-router'
79 import { getCurrentInstance, ref, watch } from 'vue' 160 import { getCurrentInstance, ref, watch } from 'vue'
80 import { ElMessage } from 'element-plus' 161 import { ElMessage,ElMessageBox} from 'element-plus'
81 const emit = defineEmits(['submitForm']) 162 const emit = defineEmits(['submitForm'])
82 const userStore = useUserStore() 163 const userStore = useUserStore()
83 const router = useRouter() 164 const router = useRouter()
...@@ -97,21 +178,23 @@ const loginRules = { ...@@ -97,21 +178,23 @@ const loginRules = {
97 } 178 }
98 179
99 const show = ref(false) 180 const show = ref(false)
181 const loginStatus = ref(0)
182 const title = ref('用户登录')
100 const showClose = ref(true) 183 const showClose = ref(true)
101 const codeUrl = ref('') 184 const codeUrl = ref('')
102 const loading = ref(false) 185 const loading = ref(false)
103 const showMsgBtn = ref(true) 186
104 // 验证码开关 187 // 验证码开关
105 const captchaEnabled = ref(true) 188 const captchaEnabled = ref(true)
106 // 注册开关 189 //忘记密码
107 // const register = ref(false) 190 const isShow = ref(false)
108 // const redirect = ref(undefined) 191 const isCodeTrue = ref(false)
109 192 const counting = ref(false)
110 // watch(show, (val) => { 193 const changePasswordForm = ref({
111 // if (!val) { 194 username:'',
112 // userStore.setReLogin(false) 195 password:'',
113 // } 196 confirmPassword:''
114 // }) 197 })
115 198
116 const open = (params) => { 199 const open = (params) => {
117 show.value = true 200 show.value = true
...@@ -150,7 +233,31 @@ function handleLogin() { ...@@ -150,7 +233,31 @@ function handleLogin() {
150 } 233 }
151 }) 234 })
152 } 235 }
153 236 function close() {
237 loginStatus.value=0
238 title.value = '用户登录'
239 }
240 function showChangePassword() {
241 loginStatus.value=2
242 title.value = '忘记密码/密码重置'
243 }
244 function showRegister() {
245 loginStatus.value=1
246 title.value = '账号注册'
247 }
248 function goRegister(n) {
249 if(n==0){
250 show.value = false
251 router.push({
252 path: `/register/0`
253 })
254 } else {
255 show.value = false
256 router.push({
257 path: `/register/1`
258 })
259 }
260 }
154 function getCode() { 261 function getCode() {
155 getCodeImg().then(res => { 262 getCodeImg().then(res => {
156 captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled 263 captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled
...@@ -169,7 +276,17 @@ function getCookie() { ...@@ -169,7 +276,17 @@ function getCookie() {
169 rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) 276 rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
170 } 277 }
171 } 278 }
172 279 function sendsmsMsg() {
280 if(!changePasswordForm.value.account){
281 ElMessage.error('请填写手机/邮箱')
282 return
283 }
284 if(counting.value){
285 return
286 } else {
287 isShow.value = true
288 }
289 }
173 </script> 290 </script>
174 291
175 <style lang="scss" scoped> 292 <style lang="scss" scoped>
...@@ -198,11 +315,17 @@ function getCookie() { ...@@ -198,11 +315,17 @@ function getCookie() {
198 right: 0; 315 right: 0;
199 } 316 }
200 317
201 .loginBtn { 318 .loginBtn {height: 40px;
202 background: var(--el-color-primary); 319 background: linear-gradient(-90deg, #8623FC, #453DEA);
203 height: 50px; 320 border-radius: 20px;
321 font-size: 18px;
322 &:hover{
323 //background: linear-gradient(90deg, #8623FC, #453DEA);
324 box-shadow: 0 0 10px #453DEA;
325 }
204 } 326 }
205 327
328
206 .login { 329 .login {
207 display: flex; 330 display: flex;
208 justify-content: center; 331 justify-content: center;
...@@ -220,11 +343,11 @@ function getCookie() { ...@@ -220,11 +343,11 @@ function getCookie() {
220 border-radius: 6px; 343 border-radius: 6px;
221 position: relative; 344 position: relative;
222 background: #ffffff; 345 background: #ffffff;
223 padding: 0 50px 5px; 346 padding: 0 25px 5px;
224 347
225 .el-input { 348 .el-input {
226 height: 40px; 349 height: 40px;
227 350 :deep(.el-input__wrapper){box-shadow: none;border-bottom:1px solid #E5E5E5; }
228 input { 351 input {
229 height: 40px; 352 height: 40px;
230 } 353 }
...@@ -245,8 +368,6 @@ function getCookie() { ...@@ -245,8 +368,6 @@ function getCookie() {
245 368
246 .login-code { 369 .login-code {
247 height: 40px; 370 height: 40px;
248 float: right;
249
250 img { 371 img {
251 cursor: pointer; 372 cursor: pointer;
252 vertical-align: middle; 373 vertical-align: middle;
...@@ -267,13 +388,27 @@ function getCookie() { ...@@ -267,13 +388,27 @@ function getCookie() {
267 } 388 }
268 389
269 .login-code-img { 390 .login-code-img {
270 height: 40px; 391 height: 40px;float: right;
271 padding-left: 12px;
272 } 392 }
273 393
274 :deep(.el-input-group__append) { 394 :deep(.el-input-group__append) {
275 background: #42dcb5; 395 background: #fff;padding: 0;
276 color: #fff; 396 color: #fff;box-shadow: none;
277 div{color: #fff;} 397 div{color: #fff;}
278 } 398 }
399 .agreeLine{
400 a{font-weight: 600;color: #000;
401 &:hover{text-decoration: underline;}
402 }
403 }
404 .rItem{height: 130px;cursor: pointer;width: 350px;padding: 1px;margin:20px auto;
405 h3{font-size: 30px;margin: 50px;}
406 &.r1{background: url("@/assets/dance/r1b.png") no-repeat left;
407 &:hover{background: url("@/assets/dance/r1.png") no-repeat left;}
408 }
409 &.r2{background: url("@/assets/dance/r2b.png") no-repeat left;
410 &:hover{background: url("@/assets/dance/r2.png") no-repeat left;}
411 }
412 &:hover{color: #fff;}
413 }
279 </style> 414 </style>
......
...@@ -363,7 +363,7 @@ ...@@ -363,7 +363,7 @@
363 363
364 </el-col> 364 </el-col>
365 <el-col :lg="6"> 365 <el-col :lg="6">
366 <a class="btn-lineG mb20" style="display: block;text-align: center;">我要报名</a> 366 <a class="btn-lineG mb20" @click="choseSignType" style="display: block;text-align: center;">我要报名</a>
367 <el-card :body-style="{padding: 0}"> 367 <el-card :body-style="{padding: 0}">
368 <el-tabs v-model="activeName2" class="match-tabs" @tab-click="handleClick"> 368 <el-tabs v-model="activeName2" class="match-tabs" @tab-click="handleClick">
369 <el-tab-pane label="报名时间" name="first"> 369 <el-tab-pane label="报名时间" name="first">
...@@ -395,11 +395,12 @@ ...@@ -395,11 +395,12 @@
395 </div> 395 </div>
396 </el-dialog> 396 </el-dialog>
397 397
398 398 <groupDetail ref="dialogEditGroup" @submitForm="getMyGroupList" />
399 </div> 399 </div>
400 </template> 400 </template>
401 401
402 <script setup> 402 <script setup>
403 import groupDetail from '@/viewsPc/center/component/teamInfo_form'
403 import { getCurrentInstance, ref } from 'vue' 404 import { getCurrentInstance, ref } from 'vue'
404 import { reactive, onMounted } from '@vue/runtime-core' 405 import { reactive, onMounted } from '@vue/runtime-core'
405 import { useRoute, useRouter } from 'vue-router' 406 import { useRoute, useRouter } from 'vue-router'
...@@ -410,9 +411,68 @@ const { proxy } = getCurrentInstance() ...@@ -410,9 +411,68 @@ const { proxy } = getCurrentInstance()
410 import * as match from '@/apiPc/match' 411 import * as match from '@/apiPc/match'
411 import { toRefs } from '@vueuse/shared' 412 import { toRefs } from '@vueuse/shared'
412 import { ElMessage } from 'element-plus' 413 import { ElMessage } from 'element-plus'
413 import groupDetail from '../center/component/teamInfo_form' 414 const data = reactive({
414 const activeName2 = ref('first') 415 matchData: {},
415 416 matchId: 0,
417 groupId: '',
418 activeName2:'first',
419 popupGroupList:false
420 })
421 const {matchData,matchId,groupId,activeName2,popupGroupList} = toRefs(data)
422 onMounted(() => {
423 matchId.value = route.params.id
424 getMatch(route.params.id)
425 })
426 function getMatch(id) {
427 if(id!=0)
428 match.getMatchById({ id: id }).then(res => {
429 matchData.value = res.data
430 })
431 }
432 function choseSignType() {
433 if (matchData.value.signType == '0') {
434 // 个人报名
435 checkIsSign(matchData.value.signType).then((res) => {
436 router.push({
437 path: `${route.params.id}/singleSign`
438 })
439 })
440 } else {
441 // 团队报名 团体-队伍报名
442 getMyGroupList()
443 }
444 }
445 // 获取已报信息
446 function checkIsSign(signType) {
447 var obj = {
448 cptId: matchId.value,
449 groupId: groupId.value || ''
450 }
451 return match.getMySignInfo(obj).then(res => {
452 if (res.data.type == '1') {
453 let str = ''
454 if (signType == '0') {
455 str = '已报名,不能重复报名'
456 } else {
457 str = '该参赛队已报名,请选择其他参赛队'
458 }
459 ElMessage.error(str)
460 return Promise.reject('rejected message')
461 }
462 })
463 }
464 function getMyGroupList(){
465 match.getMyGroupList().then(res => {
466 groups.value = res.data
467 popupGroupList.value = true
468 })
469 }
470 function goAddgroup() {
471 // 新团
472 proxy.$refs['dialogEditGroup'].open({
473 title: '新建参赛队'
474 })
475 }
416 </script> 476 </script>
417 477
418 <style scoped lang="scss"> 478 <style scoped lang="scss">
......
1 <template>
2 <div>
3 <div class="mt30 mb60">
4 <div class="box">
5 <!-- 国内-机构注册-->
6 <el-card>
7 <el-steps :active="activeStep" finish-status="success" align-center>
8 <el-step title="创建账号" />
9 <el-step title="账号信息" />
10 <el-step title="注册完成" />
11 </el-steps>
12 </el-card>
13
14 <div class="mt20"></div>
15 <Step1 v-if="activeStep==0" @submit="toStep2" @userName="getUserName" />
16 <Step2 v-if="activeStep==1" @submit="toStep3" @prev="toStep1"/>
17
18
19
20 </div>
21 </div>
22 </div>
23 </template>
24
25 <script>
26 export default {
27 name: "peraonal"
28 }
29 </script>
30
31 <style scoped>
32
33 </style>
1 <template>
2
3 </template>
4
5 <script>
6 export default {
7 name: "policy"
8 }
9 </script>
10
11 <style scoped>
12
13 </style>
1 <template>
2 <el-card style="min-height: 50vh">
3 <div class="pt30">
4 <el-form class="d-form" size="large" label-width="120" style="max-width: 500px;margin: auto">
5 <el-form-item label="手机/邮箱" required>
6 <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"/>
7 </el-form-item>
8 <el-form-item label="验证码" required>
9 <el-input v-model="form.code">
10 <template #append>
11 <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
12 <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
13 {{ totalSeconds }}
14 </count-down>
15 <span v-else>
16 发送验证码
17 </span>
18 </el-button>
19 </template>
20 </el-input>
21 <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">
22 <Vcode :show="isShow" type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode>
23 </div>
24 </el-form-item>
25 </el-form>
26 </div>
27 <div class="text-center">
28 <!-- <el-button class="primary-kx" round @click="goBack">取消</el-button>-->
29 <el-button type="primary" class="btn-lineG w200px" round @click="next">下一步</el-button>
30 </div>
31 </el-card>
32 </template>
33
34 <script setup>
35 import {reactive} from "@vue/runtime-core";
36 import {toRefs} from "@vueuse/shared/index";
37 import Vcode from "vue3-puzzle-vcode"
38 import { ElMessage } from 'element-plus'
39 import CountDown from '@chenfengyuan/vue-countdown'
40 import {getCaptchaSms,checkRegisterCode} from "@/apiPc/match";
41 const data = reactive({
42 isShow:false,
43 isCodeTrue:false,
44 counting:false,
45 form:{},
46 activeStep: 0
47 })
48 const {isShow,isCodeTrue,counting,form,activeStep} = toRefs(data)
49 const emit = defineEmits(['submit','userName'])
50 function sendsmsMsg() {
51 if(!form.value.account){
52 ElMessage.error('请填写手机/邮箱')
53 return
54 }
55 if(counting.value){
56 return
57 } else {
58 isShow.value = true
59 }
60 }
61 function verifyCode() {
62 if(!form.value.account){
63 return
64 }
65 if(form.value.account.indexOf('@')>-1){
66 //邮箱
67 }
68 }
69 function codeSuccess(msg) {
70 console.log('验证通过' + msg);
71 isShow.value = false
72 isCodeTrue.value = true
73 counting.value = true
74 // getCaptchaSms({account:form.value.account}).then(res=>{
75 //
76 // })
77 }
78 function resetCode() {
79 isCodeTrue.value = false
80 }
81 function codeFail() {
82
83 }
84 function codeClose() {
85
86 }
87 const goBack = () => {
88 router.go(-1)
89 }
90 const next = () => {
91 if(!form.value.account){
92 ElMessage.error('请填写手机/邮箱')
93 return
94 }
95 if(!form.value.code){
96 ElMessage.error('请填写验证码')
97 return
98 }
99 if(!isCodeTrue.value){
100 return
101 }
102 checkRegisterCode(form.value).then(res=>{
103 emit('submit')
104 emit('userName',form.value.account)
105 })
106 }
107
108 </script>
109
110 <style scoped lang="scss">
111 .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover{
112 color: var(--el-color-primary);
113 background: #efefff;
114 border: var(--el-color-primary) solid 1px;
115 border-radius: 0;
116 }
117 .vcodeBox{ position: relative;margin: 20px 0 0;
118 width: 320px;overflow: hidden;
119 height: auto;}
120 </style>
1 <template>
2 <el-card>
3 <div class="border-info text-center">
4
5 <label>登录账号</label> 321
6
7 </div>
8 <div class="leftboderTT">登录密码 <span>(登录时需要验证,保护账户信息)</span></div>
9 <div class="d-form-border">
10 <el-form class="d-form" size="large" label-width="120" style="max-width: 500px;margin: auto">
11 <el-form-item label="密码" required>
12 <el-input type="password" show-password v-model="form.password" placeholder="6-16位密码。区分大小写"/>
13 </el-form-item>
14 <el-form-item label="确认密码" required>
15 <el-input type="password" show-password v-model="form.confirmPassword" @blur="vconfirmPassword" placeholder="再次输入密码"/>
16 </el-form-item>
17 </el-form>
18 </div>
19 <div class="leftboderTT">机构信息</div>
20 <div class="d-form-border">
21 <el-form class="d-form" size="large" :model="form" ref="registerRef" :rules="registerRules" label-width="120" style="max-width: 500px;margin: auto">
22 <el-form-item label="所属国家" required>
23 <el-select filterable v-model="form.countryId">
24 <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id" />
25 </el-select>
26 </el-form-item>
27 <el-form-item label="详细地址" required prop="address">
28 <el-cascader v-if="form.countryId == 240"
29 v-model="regionArr"
30 style="width: 100%;"
31 :options="regionsList"
32 :props="{ label:'text' }"
33 />
34 <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/>
35 </el-form-item>
36 <el-form-item label="机构名称" required prop="teamName">
37 <el-input type="text" v-model="form.teamName" placeholder="请输入内容"/>
38 </el-form-item>
39 <el-form-item label="联系人姓名" required prop="contactName">
40 <el-input type="text" v-model="form.contactName" placeholder="请输入内容"/>
41 </el-form-item>
42 <el-form-item label="联系人电话" required prop="contactTel">
43 <el-input v-model="form.contactTel" type="phone" placeholder="请输入内容"/>
44 </el-form-item>
45 <el-form-item label="联系人邮箱" required prop="contactEmail">
46 <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/>
47 </el-form-item>
48 <el-form-item prop="photo" required label="机构LOGO">
49 <ImageUpload2
50 v-model="form.photo" :crop-height="200" :crop-width="200" :limit="1"
51 :is-show-tip="false"
52 />
53 </el-form-item>
54 <el-form-item>
55 <div @click="isAgree = !isAgree" class="flexAgree">
56 <el-icon v-if="isAgree" color="#453DEA" size="20"><CircleCheckFilled /></el-icon>
57 <el-icon v-else color="#999" size="20"><CircleCheck /></el-icon>
58 <div>
59 我已阅读并接受<a class="text-primary" @click.stop="showAgreeMent">《注册协议》</a>
60 <a class="text-primary" @click.stop="showAgreeMent">《个人信息保护政策》</a>
61 </div>
62 </div>
63 </el-form-item>
64 </el-form>
65 </div>
66
67 <div class="text-center">
68 <!-- <el-button class="primary-kx" @click="goStep1">上一步</el-button>-->
69 <el-button type="primary" round class="btn-lineG w200px" @click.prevent="goStep3" :loading="loading">立即注册</el-button>
70 </div>
71 </el-card>
72 </template>
73
74 <script setup>
75 import {getCurrentInstance} from "@vue/runtime-core"
76 import {onMounted,toRefs,reactive} from "vue"
77 import * as match from "@/apiPc/match";
78 import {ElMessage} from "element-plus";
79 import {setToken} from "@/utils/auth";
80 const { proxy } = getCurrentInstance()
81 const emit = defineEmits(['submit','prev'])
82 const props = defineProps({
83
84 })
85 const data = reactive({
86 form: {
87 username:'eryewawa@163.com'
88 },
89 loading:false,
90 countryList: [],
91 regionsList: [],
92 regionArr: [],
93 isAgree:false
94 })
95 const {form,countryList,regionsList,isAgree,loading,regionArr} = toRefs(data)
96 const registerRules = ref(
97 {
98 password:[
99 { required: true, trigger: 'blur', message: '请输入您的密码' },
100 { min: 6, max: 16, message: '用户密码长度必须介于 6 和 16 之间', trigger: 'blur' }
101 ],
102 confirmPassword: [{ required: true, trigger: 'blur', message: '请再次输入您的密码' },],
103 countryId: [{ required: true, trigger: 'blur', message: '请选择所属国家' },],
104 address: [{ required: true, trigger: 'blur', message: '请输入地址' },],
105 teamName: [{ required: true, trigger: 'blur', message: '请输入' },],
106 contactName: [{ required: true, trigger: 'blur', message: '请输入' },],
107 contactTel: [{ required: true, trigger: 'blur', message: '请输入' },],
108 contactEmail: [{ required: true, trigger: 'blur', message: '请输入' },],
109 photo: [{ required: true, trigger: 'blur', message: '请上传' },],
110 })
111 const vconfirmPassword = () => {
112 if (form.value.password !== form.value.confirmPassword) {
113 ElMessage.error('两次输入的密码不一致')
114 }
115 }
116 onMounted(()=>{
117 getCountryList()
118 getRegionsList()
119 })
120
121 function getCountryList() {
122 match.countryList().then(res => {
123 countryList.value = res.data
124 })
125 }
126 function getRegionsList() {
127 match.regionsList().then(res => {
128 regionsList.value = res.data
129 })
130 }
131 const goStep1 = () => {
132 emit('prev')
133 }
134 const goStep3 = () => {
135 proxy.$refs.registerRef.validate(valid => {
136 if (valid) {
137 if(!isAgree.value){
138 ElMessage.error('请勾选接受')
139 return
140 }
141
142 loading.value = true
143 delete form.value.confirmPassword
144 form.value.regionId = regionArr.value.pop()
145 match.pcRegisterTeam(form.value).then(res=>{
146 setToken(res.data.token)
147 emit('submit')
148 })
149 }
150 })
151
152
153 }
154 const showAgreeMent = () => {
155 console.log('111')
156 }
157 onMounted(()=>{
158 console.log(props)
159 })
160 </script>
161
162 <style scoped lang="scss">
163 .d-form-border{
164 border: 1px solid #E5E5E5;margin: 20px 0;padding: 20px}
165 .leftboderTT{color: var(--el-color-primary);
166 font-size: 16px;
167 font-weight: 600;
168 span{color: #929AA0;font-size: 14px;}
169 }
170 .flexAgree{display: flex;align-items: center;
171 div{margin-left: 8px;font-size: 14px}
172 }
173 </style>
1 <template>
2 <el-card style="min-height: 50vh">
3 <div>
4 <img src="@/assets/dance/ok.png"/>
5 <h3>注册成功</h3>
6 </div>
7 <div class="border-info text-center">
8
9 <label>登录账号</label> 321
10
11 </div>
12 <div class="text-center">
13 <el-button class="primary-kx" @click="goHome">返回首页</el-button>
14 <el-button type="primary" @click="goSign">去报名</el-button>
15 </div>
16 </el-card>
17 </template>
18
19 <script setup>
20 import {reactive} from "@vue/runtime-core";
21 import {toRefs} from "@vueuse/shared/index";
22 import Vcode from "vue3-puzzle-vcode"
23 import { ElMessage } from 'element-plus'
24 import CountDown from '@chenfengyuan/vue-countdown'
25 import {getCaptchaSms,checkRegisterCode} from "@/apiPc/match";
26 const data = reactive({
27 isShow:false,
28 isCodeTrue:false,
29 counting:false,
30 form:{},
31 activeStep: 0
32 })
33 const {isShow,isCodeTrue,counting,form,activeStep} = toRefs(data)
34 const emit = defineEmits(['submit','userName'])
35 function sendsmsMsg() {
36 if(!form.value.account){
37 ElMessage.error('请填写手机/邮箱')
38 return
39 }
40 if(counting.value){
41 return
42 } else {
43 isShow.value = true
44 }
45 }
46
47
48 const goHome = () => {
49
50 }
51 const goSign = () => {
52
53 }
54
55 </script>
56
57 <style scoped lang="scss">
58 .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover{
59 color: var(--el-color-primary);
60 background: #efefff;
61 border: var(--el-color-primary) solid 1px;
62 border-radius: 0;
63 }
64 </style>
1 <template>
2 <div>
3 <div class="mt30 mb60">
4 <div class="box">
5 <!-- 国内-机构注册-->
6 <el-card>
7 <el-steps :active="activeStep" align-center>
8 <el-step title="创建账号" />
9 <el-step title="账号信息" />
10 <el-step title="注册完成" />
11 </el-steps>
12 </el-card>
13
14 <div class="mt20"></div>
15 <Step1 v-if="activeStep==0" @submit="toStep2" @userName="getUserName" />
16 <Step2 v-if="activeStep==1" @submit="toStep3" @prev="toStep1"/>
17 <Step3 v-if="activeStep==2"/>
18
19
20
21 </div>
22 </div>
23 </div>
24 </template>
25
26 <script setup>
27 import {reactive} from "@vue/runtime-core";
28 import Step1 from "./step1";
29 import Step2 from "./step2";
30 import Step3 from "./step3";
31 import * as match from "@/apiPc/match";
32 import {onMounted,toRefs} from "vue";
33 const data = reactive({
34 isShow:false,
35 isCodeTrue:false,
36 counting:false,
37 form:{},
38 activeStep: 0
39 })
40 const {isShow,isCodeTrue,counting,form,activeStep} = toRefs(data)
41
42 const toStep1 = () => {
43 activeStep.value = 0
44 }
45 const toStep2 = () => {
46 activeStep.value = 1
47 }
48 const toStep3 = () => {
49 activeStep.value = 2
50 }
51 const getUserName = (val) => {
52 console.log(val)
53 form.value.userName = val
54 }
55 </script>
56
57 <style scoped>
58
59 </style>
1 <template>
2
3 </template>
4
5 <script>
6 export default {
7 name: "userAgreement"
8 }
9 </script>
10
11 <style scoped>
12
13 </style>
...@@ -77,12 +77,12 @@ export default defineConfig(({ mode, command }) => { ...@@ -77,12 +77,12 @@ export default defineConfig(({ mode, command }) => {
77 }, 77 },
78 '/dev-api/ztx-webSite': { 78 '/dev-api/ztx-webSite': {
79 // target: 'http://123.60.96.243:1897/stage-api/', 79 // target: 'http://123.60.96.243:1897/stage-api/',
80 target: 'http://192.168.1.118:8083/', 80 target: 'http://192.168.1.132:8083/',
81 changeOrigin: true, 81 changeOrigin: true,
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:8083', 85 target: 'http://192.168.1.132:8083',
86 // target: 'http://localhost:8787', 86 // target: 'http://localhost:8787',
87 changeOrigin: true, 87 changeOrigin: true,
88 rewrite: (p) => p.replace(/^\/dev-api/, '') 88 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!