no message
Showing
38 changed files
with
876 additions
and
135 deletions
| ... | @@ -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 | }, | ... | ... |
This diff is collapsed.
Click to expand it.
src/assets/dance/1.png
0 → 100644
3.26 KB
src/assets/dance/2.png
0 → 100644
3.27 KB
src/assets/dance/3.png
0 → 100644
3.65 KB
src/assets/dance/ok.png
0 → 100644
9.35 KB
src/assets/dance/r1.png
0 → 100644
5.88 KB
src/assets/dance/r1b.png
0 → 100644
3.16 KB
src/assets/dance/r2.png
0 → 100644
10 KB
src/assets/dance/r2b.png
0 → 100644
5.84 KB
src/assets/json/country.json
0 → 100644
This diff is collapsed.
Click to expand it.
| ... | @@ -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 | <!-- | <span @click="goRegister">注册</span>--> | 61 | <!-- | <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 | | <span @click="logout()">退出</span></el-button> | 65 | <span @click="router.push('/center/myInfo')">个人中心</span> |
| 66 | | <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 | | <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"> | ... | ... |
src/viewsPc/register/personal.vue
0 → 100644
| 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> |
src/viewsPc/register/policy.vue
0 → 100644
src/viewsPc/register/team/step1.vue
0 → 100644
| 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> |
src/viewsPc/register/team/step2.vue
0 → 100644
| 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> |
src/viewsPc/register/team/step3.vue
0 → 100644
| 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> |
src/viewsPc/register/team/team.vue
0 → 100644
| 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> |
src/viewsPc/register/userAgreement.vue
0 → 100644
| ... | @@ -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/, '') | ... | ... |
-
Please register or sign in to post a comment