登录注册
Showing
3 changed files
with
416 additions
and
281 deletions
| 1 | <template> | 1 | <template> |
| 2 | <div class="topNav"> | 2 | <div class="topNav"> |
| 3 | <router-link to="/"> | 3 | <router-link to="/"> |
| 4 | <!-- <img class="logo" src="@/assets/v1/nav_logo.png">--> | 4 | <!-- <img class="logo" src="@/assets/v1/nav_logo.png">--> |
| 5 | <img class="logo" src="/img/logoArr.png"> | 5 | <img class="logo" src="/img/logoArr.png"> |
| 6 | </router-link> | 6 | </router-link> |
| 7 | 7 | ||
| 8 | <div class="home-menu forPc"> | 8 | <div class="home-menu forPc"> |
| 9 | <el-menu v-if="language==0" | 9 | <el-menu |
| 10 | router :default-active="activeIndex" :mode="mode" :ellipsis="true" | 10 | v-if="language==0" |
| 11 | popper-effect="dark" @select="handleSelect" | 11 | :default-active="activeIndex" :ellipsis="true" :mode="mode" popper-effect="dark" |
| 12 | router @select="handleSelect" | ||
| 12 | > | 13 | > |
| 13 | <el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item> | 14 | <el-menu-item index="/">{{ language == 0 ? '首页' : 'HOME' }}</el-menu-item> |
| 14 | <el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item> | 15 | <el-menu-item index="/news">{{ language == 0 ? '新闻资讯' : 'NEWS' }}</el-menu-item> |
| 15 | <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item> | 16 | <el-menu-item index="/guide">{{ language == 0 ? '参赛指南' : 'GUIDELINE' }}</el-menu-item> |
| 16 | <el-menu-item index="/match/list">{{ language==0?'大赛报名':'REGISTRATION' }}</el-menu-item> | 17 | <el-menu-item index="/match/list">{{ language == 0 ? '大赛报名' : 'REGISTRATION' }}</el-menu-item> |
| 17 | <el-menu-item index="/saiC">{{ language==0?'赛程安排':'COMPETITIONS' }}</el-menu-item> | 18 | <el-menu-item index="/saiC">{{ language == 0 ? '赛程安排' : 'COMPETITIONS' }}</el-menu-item> |
| 18 | <el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item> | 19 | <el-menu-item index="/meta">{{ language == 0 ? '媒体中心' : 'MEDIA' }}</el-menu-item> |
| 19 | <el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item> | 20 | <el-menu-item index="/notice">{{ language == 0 ? '通知公告' : 'NOTICEBOARD' }}</el-menu-item> |
| 20 | 21 | ||
| 21 | <!-- <el-sub-menu index="/about">--> | 22 | <!-- <el-sub-menu index="/about">--> |
| 22 | <!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>--> | 23 | <!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>--> |
| 23 | <!-- <el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>--> | 24 | <!-- <el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>--> |
| 24 | <!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>--> | 25 | <!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>--> |
| 25 | <!-- <el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>--> | 26 | <!-- <el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>--> |
| 26 | <!-- </el-sub-menu>--> | 27 | <!-- </el-sub-menu>--> |
| 27 | </el-menu> | 28 | </el-menu> |
| 28 | <el-menu v-else class="enMenu" | 29 | <el-menu |
| 29 | router :default-active="activeIndex" :mode="mode" :ellipsis="true" | 30 | v-else :default-active="activeIndex" |
| 30 | popper-effect="dark" @select="handleSelect" | 31 | :ellipsis="true" :mode="mode" class="enMenu" popper-effect="dark" |
| 32 | router @select="handleSelect" | ||
| 31 | > | 33 | > |
| 32 | <el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item> | 34 | <el-menu-item index="/">{{ language == 0 ? '首页' : 'HOME' }}</el-menu-item> |
| 33 | <el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item> | 35 | <el-menu-item index="/news">{{ language == 0 ? '新闻资讯' : 'NEWS' }}</el-menu-item> |
| 34 | <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item> | 36 | <el-menu-item index="/guide">{{ language == 0 ? '参赛指南' : 'GUIDELINE' }}</el-menu-item> |
| 35 | <el-menu-item index="/match/list">{{ language==0?'大赛报名':'REGISTRATION' }}</el-menu-item> | 37 | <el-menu-item index="/match/list">{{ language == 0 ? '大赛报名' : 'REGISTRATION' }}</el-menu-item> |
| 36 | <el-menu-item index="/saiC">{{ language==0?'赛程安排':'COMPETITIONS' }}</el-menu-item> | 38 | <el-menu-item index="/saiC">{{ language == 0 ? '赛程安排' : 'COMPETITIONS' }}</el-menu-item> |
| 37 | <el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item> | 39 | <el-menu-item index="/meta">{{ language == 0 ? '媒体中心' : 'MEDIA' }}</el-menu-item> |
| 38 | <el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item> | 40 | <el-menu-item index="/notice">{{ language == 0 ? '通知公告' : 'NOTICEBOARD' }}</el-menu-item> |
| 39 | 41 | ||
| 40 | <!-- <el-sub-menu index="/about">--> | 42 | <!-- <el-sub-menu index="/about">--> |
| 41 | <!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>--> | 43 | <!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>--> |
| 42 | <!-- <el-menu-item index="/about/wuDaoEn">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>--> | 44 | <!-- <el-menu-item index="/about/wuDaoEn">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>--> |
| 43 | <!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>--> | 45 | <!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>--> |
| 44 | <!-- <el-menu-item index="/about/cultureEn">{{ language==0?'地方文化':'Culture' }}</el-menu-item>--> | 46 | <!-- <el-menu-item index="/about/cultureEn">{{ language==0?'地方文化':'Culture' }}</el-menu-item>--> |
| 45 | <!-- </el-sub-menu>--> | 47 | <!-- </el-sub-menu>--> |
| 46 | </el-menu> | 48 | </el-menu> |
| 47 | </div> | 49 | </div> |
| 48 | 50 | ||
| 49 | <div class="flex-right"> | 51 | <div class="flex-right"> |
| 50 | <div class="search mr20 forPc"> | 52 | <div class="search mr20 forPc"> |
| 51 | <el-button :icon="Search" circle @click="searchNews" /> | 53 | <el-button :icon="Search" circle @click="searchNews" /> |
| 52 | </div> | 54 | </div> |
| 53 | <div class="languageBtn"> | 55 | <div class="languageBtn"> |
| 54 | <span :class="language==0?'active':''" @click="changeLanguage(0)">{{ language==0?'中文':'CN' }}</span> | 56 | <span :class="language==0?'active':''" @click="changeLanguage(0)">{{ language == 0 ? '中文' : 'CN' }}</span> |
| 55 | | | 57 | | |
| 56 | <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span> | 58 | <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span> |
| 57 | </div> | 59 | </div> |
| 58 | <div class="ml20 forPc" > | 60 | <div class="ml20 forPc"> |
| 59 | <el-button v-if="!isLogin" @click="goLogin" style="border-radius: 20px;" class="loginBtn"> | 61 | <el-button v-if="!isLogin" class="loginBtn" style="border-radius: 20px;" @click="goLogin"> |
| 60 | <span>{{ language==0?'登录':'LOGIN' }}</span> | 62 | <span>{{ language == 0 ? '登录' : 'LOGIN' }}</span> |
| 61 | <!-- | <span @click="goRegister">注册</span>--> | 63 | <!-- | <span @click="goRegister">注册</span>--> |
| 62 | </el-button> | 64 | </el-button> |
| 63 | 65 | ||
| 64 | <el-dropdown v-if="isLogin" class="mr20"> | 66 | <el-dropdown v-if="isLogin" class="mr20"> |
| 65 | 67 | ||
| 66 | <el-avatar :icon="UserFilled"> | 68 | <el-avatar :icon="UserFilled"> |
| 67 | <!-- {{user.userName.substring(0,4)}}--> | 69 | <!-- {{user.userName.substring(0,4)}}--> |
| 68 | </el-avatar> | 70 | </el-avatar> |
| 69 | 71 | ||
| 70 | <template #dropdown> | 72 | <template #dropdown> |
| 71 | <el-dropdown-menu> | 73 | <el-dropdown-menu> |
| 72 | <el-dropdown-item @click="router.push('/center/myInfo')">{{ language==0?'个人中心':'Personal' }}</el-dropdown-item> | 74 | <el-dropdown-item @click="router.push('/center/myInfo')">{{ |
| 73 | <el-dropdown-item @click="logout()">{{language==0?'退出':'Exit'}}</el-dropdown-item> | 75 | language == 0 ? '个人中心' : 'Personal' |
| 76 | }} | ||
| 77 | </el-dropdown-item> | ||
| 78 | <el-dropdown-item @click="logout()">{{ language == 0 ? '退出' : 'Exit' }}</el-dropdown-item> | ||
| 74 | </el-dropdown-menu> | 79 | </el-dropdown-menu> |
| 75 | </template> | 80 | </template> |
| 76 | </el-dropdown> | 81 | </el-dropdown> |
| ... | @@ -80,19 +85,27 @@ | ... | @@ -80,19 +85,27 @@ |
| 80 | <img src="@/assets/v1/menu.png"> | 85 | <img src="@/assets/v1/menu.png"> |
| 81 | </a> | 86 | </a> |
| 82 | </div> | 87 | </div> |
| 83 | 88 | ||
| 84 | <el-drawer | 89 | <el-drawer |
| 85 | v-model="drawer" size="100%" | 90 | v-model="drawer" :style="{'--el-drawer-padding-primary':0}" |
| 86 | :style="{'--el-drawer-padding-primary':0}" direction="ltr" | 91 | :with-header="false" direction="ltr" |
| 87 | :with-header="false" title="菜单" | 92 | size="100%" title="菜单" |
| 88 | > | 93 | > |
| 89 | <div class="weiHead"> | 94 | <div class="weiHead"> |
| 90 | <el-button size="large" v-if="!isLogin" @click="goLogin" round style="color: #fff" class="btn-lineG"> | 95 | <el-button |
| 91 | <span>{{ language==0?'登录':'LOGIN' }}</span> | 96 | v-if="!isLogin" class="btn-lineG" round size="large" style="color: #fff" |
| 97 | @click="goLogin" | ||
| 98 | > | ||
| 99 | <span>{{ language == 0 ? '登录' : 'LOGIN' }}</span> | ||
| 92 | <!-- | <span @click="goRegister">注册</span>--> | 100 | <!-- | <span @click="goRegister">注册</span>--> |
| 93 | </el-button> | 101 | </el-button> |
| 94 | <el-button type="primary" round plain size="large" v-if="isLogin" @click="logout()">{{language==0?'退出':'Exit'}}</el-button> | 102 | <el-button |
| 95 | 103 | v-if="isLogin" plain round size="large" type="primary" | |
| 104 | @click="logout()" | ||
| 105 | > | ||
| 106 | {{ language == 0 ? '退出' : 'Exit' }} | ||
| 107 | </el-button> | ||
| 108 | |||
| 96 | <div style="display: flex"> | 109 | <div style="display: flex"> |
| 97 | <div class="languageBtn"> | 110 | <div class="languageBtn"> |
| 98 | <span v-if="language==0" :class="language==0?'active':''" @click="changeLanguage(0)">中文</span> | 111 | <span v-if="language==0" :class="language==0?'active':''" @click="changeLanguage(0)">中文</span> |
| ... | @@ -100,16 +113,19 @@ | ... | @@ -100,16 +113,19 @@ |
| 100 | | | 113 | | |
| 101 | <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span> | 114 | <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span> |
| 102 | </div> | 115 | </div> |
| 103 | 116 | ||
| 104 | <el-icon color="#453DEA" size="30" @click="closeDrawer"><close/></el-icon> | 117 | <el-icon color="#453DEA" size="30" @click="closeDrawer"> |
| 105 | 118 | <close /> | |
| 119 | </el-icon> | ||
| 120 | |||
| 106 | </div> | 121 | </div> |
| 107 | </div> | 122 | </div> |
| 108 | 123 | ||
| 109 | <el-menu class="weiMenu" | 124 | <el-menu |
| 110 | v-if="language==0" | 125 | v-if="language==0" |
| 111 | router :default-active="activeIndex" mode="vertical" :ellipsis="false" | 126 | :default-active="activeIndex" |
| 112 | popper-effect="dark" @select="handleSelect" | 127 | :ellipsis="false" class="weiMenu" mode="vertical" popper-effect="dark" |
| 128 | router @select="handleSelect" | ||
| 113 | > | 129 | > |
| 114 | <el-menu-item index="/">首页</el-menu-item> | 130 | <el-menu-item index="/">首页</el-menu-item> |
| 115 | <el-menu-item index="/news">新闻资讯</el-menu-item> | 131 | <el-menu-item index="/news">新闻资讯</el-menu-item> |
| ... | @@ -125,10 +141,11 @@ | ... | @@ -125,10 +141,11 @@ |
| 125 | </el-sub-menu> | 141 | </el-sub-menu> |
| 126 | <el-menu-item v-if="isLogin" index="/center/myInfo">个人中心</el-menu-item> | 142 | <el-menu-item v-if="isLogin" index="/center/myInfo">个人中心</el-menu-item> |
| 127 | </el-menu> | 143 | </el-menu> |
| 128 | <el-menu class="weiMenu" | 144 | <el-menu |
| 129 | v-if="language==1" | 145 | v-if="language==1" |
| 130 | router :default-active="activeIndex" mode="vertical" :ellipsis="false" | 146 | :default-active="activeIndex" |
| 131 | popper-effect="dark" @select="handleSelect" | 147 | :ellipsis="false" class="weiMenu" mode="vertical" popper-effect="dark" |
| 148 | router @select="handleSelect" | ||
| 132 | > | 149 | > |
| 133 | <el-menu-item index="/">HOME</el-menu-item> | 150 | <el-menu-item index="/">HOME</el-menu-item> |
| 134 | <el-menu-item index="/news">NEWS</el-menu-item> | 151 | <el-menu-item index="/news">NEWS</el-menu-item> |
| ... | @@ -156,7 +173,7 @@ | ... | @@ -156,7 +173,7 @@ |
| 156 | import { computed, ref, watch } from 'vue' | 173 | import { computed, ref, watch } from 'vue' |
| 157 | import { useRoute, useRouter } from 'vue-router' | 174 | import { useRoute, useRouter } from 'vue-router' |
| 158 | import useUserStore from '@/store/modules/user' | 175 | import useUserStore from '@/store/modules/user' |
| 159 | import { Search,UserFilled } from '@element-plus/icons-vue' | 176 | import { Search, UserFilled } from '@element-plus/icons-vue' |
| 160 | import { getCurrentInstance, onMounted } from '@vue/runtime-core' | 177 | import { getCurrentInstance, onMounted } from '@vue/runtime-core' |
| 161 | import _ from 'lodash' | 178 | import _ from 'lodash' |
| 162 | import LoginDialog from '@/viewsPc/login' | 179 | import LoginDialog from '@/viewsPc/login' |
| ... | @@ -166,7 +183,7 @@ import SearchPop_en from './indexSearch_en' | ... | @@ -166,7 +183,7 @@ import SearchPop_en from './indexSearch_en' |
| 166 | import Captcha from './captcha' | 183 | import Captcha from './captcha' |
| 167 | import CaptchaSms from './captchaSms' | 184 | import CaptchaSms from './captchaSms' |
| 168 | import cache from '@/plugins/cache' | 185 | import cache from '@/plugins/cache' |
| 169 | import {useStorage} from "@vueuse/core"; | 186 | import { useStorage } from '@vueuse/core' |
| 170 | 187 | ||
| 171 | const router = useRouter() | 188 | const router = useRouter() |
| 172 | const route = useRoute() | 189 | const route = useRoute() |
| ... | @@ -202,19 +219,23 @@ onMounted(() => { | ... | @@ -202,19 +219,23 @@ onMounted(() => { |
| 202 | } | 219 | } |
| 203 | console.log(activeIndex.value) | 220 | console.log(activeIndex.value) |
| 204 | }) | 221 | }) |
| 222 | |||
| 205 | function changeLanguage(n) { | 223 | function changeLanguage(n) { |
| 206 | if(language.value == n){ | 224 | if (language.value == n) { |
| 207 | return | 225 | return |
| 208 | } | 226 | } |
| 209 | proxy.$modal.loading() | 227 | proxy.$modal.loading() |
| 210 | language.value = n | 228 | language.value = n |
| 211 | } | 229 | } |
| 230 | |||
| 212 | function showDrawer() { | 231 | function showDrawer() { |
| 213 | drawer.value = true | 232 | drawer.value = true |
| 214 | } | 233 | } |
| 234 | |||
| 215 | function closeDrawer() { | 235 | function closeDrawer() { |
| 216 | drawer.value = false | 236 | drawer.value = false |
| 217 | } | 237 | } |
| 238 | |||
| 218 | function handleSelect(key, keyPath) { | 239 | function handleSelect(key, keyPath) { |
| 219 | // console.log(key) | 240 | // console.log(key) |
| 220 | activeIndex.value = key | 241 | activeIndex.value = key |
| ... | @@ -222,7 +243,7 @@ function handleSelect(key, keyPath) { | ... | @@ -222,7 +243,7 @@ function handleSelect(key, keyPath) { |
| 222 | } | 243 | } |
| 223 | 244 | ||
| 224 | const logout = () => { | 245 | const logout = () => { |
| 225 | proxy.$modal.confirm(language.value==0?'确定退出?':'Are you sure to exit?').then(function() { | 246 | proxy.$modal.confirm(language.value == 0 ? '确定退出?' : 'Are you sure to exit?').then(function() { |
| 226 | return useUserStore().logOut() | 247 | return useUserStore().logOut() |
| 227 | }).then(() => { | 248 | }).then(() => { |
| 228 | isLogin.value = true | 249 | isLogin.value = true |
| ... | @@ -232,12 +253,6 @@ const logout = () => { | ... | @@ -232,12 +253,6 @@ const logout = () => { |
| 232 | } | 253 | } |
| 233 | 254 | ||
| 234 | const goLogin = (query) => { | 255 | const goLogin = (query) => { |
| 235 | let param = {} | ||
| 236 | // if (_.isBoolean(flag)) { | ||
| 237 | // param = { | ||
| 238 | // notShowClose: flag | ||
| 239 | // } | ||
| 240 | // } | ||
| 241 | proxy.$refs['pcloginDialog'].open(query) | 256 | proxy.$refs['pcloginDialog'].open(query) |
| 242 | } | 257 | } |
| 243 | 258 | ||
| ... | @@ -251,78 +266,96 @@ watch(() => useUserStore().reLogin, (val) => { | ... | @@ -251,78 +266,96 @@ watch(() => useUserStore().reLogin, (val) => { |
| 251 | goLogin(val.query) | 266 | goLogin(val.query) |
| 252 | } | 267 | } |
| 253 | }) | 268 | }) |
| 269 | |||
| 270 | |||
| 254 | watch(() => useUserStore().visitor, (val) => { | 271 | watch(() => useUserStore().visitor, (val) => { |
| 255 | if (val) { | 272 | if (val) { |
| 256 | console.log(val) | 273 | console.log(val) |
| 257 | proxy.$refs['visitorDialog'].open() | 274 | proxy.$refs['visitorDialog'].open() |
| 258 | } | 275 | } |
| 259 | }) | 276 | }) |
| 277 | |||
| 260 | function searchNews() { | 278 | function searchNews() { |
| 261 | proxy.$refs['searchDialog'].open() | 279 | proxy.$refs['searchDialog'].open() |
| 262 | } | 280 | } |
| 281 | |||
| 263 | function getCode() { | 282 | function getCode() { |
| 264 | proxy.$refs['codeRef'].getCode() | 283 | proxy.$refs['codeRef'].getCode() |
| 265 | } | 284 | } |
| 266 | </script> | 285 | </script> |
| 267 | 286 | ||
| 268 | <style scoped lang="scss"> | 287 | <style lang="scss" scoped> |
| 269 | .home-menu{width: 60vw; | 288 | .home-menu { |
| 270 | :deep(.el-menu--horizontal.el-menu){border: none;} | 289 | width: 60vw; |
| 290 | |||
| 291 | :deep(.el-menu--horizontal.el-menu) { | ||
| 292 | border: none; | ||
| 293 | } | ||
| 271 | } | 294 | } |
| 272 | .loginBtn {color: #fff;margin-right: 15px;border: none; | 295 | |
| 273 | background: linear-gradient(-90deg, #8623FC, #453DEA);box-shadow:0 0 10px #fff; | 296 | .loginBtn { |
| 297 | color: #fff; | ||
| 298 | margin-right: 15px; | ||
| 299 | border: none; | ||
| 300 | background: linear-gradient(-90deg, #8623FC, #453DEA); | ||
| 301 | box-shadow: 0 0 10px #fff; | ||
| 302 | |||
| 274 | &:active { | 303 | &:active { |
| 275 | color: #fff; | 304 | color: #fff; |
| 276 | background:linear-gradient(0deg, #8623FC, #453DEA); | 305 | background: linear-gradient(0deg, #8623FC, #453DEA); |
| 277 | border:none; | 306 | border: none; |
| 278 | } | 307 | } |
| 279 | 308 | ||
| 280 | &:hover { | 309 | &:hover { |
| 281 | box-shadow:0 0 10px var(--el-color-primary);border: none; | 310 | box-shadow: 0 0 10px var(--el-color-primary); |
| 282 | color:#fff; | 311 | border: none; |
| 312 | color: #fff; | ||
| 283 | } | 313 | } |
| 284 | 314 | ||
| 285 | } | 315 | } |
| 286 | 316 | ||
| 287 | 317 | ||
| 288 | .topNav { | 318 | .topNav { |
| 289 | box-shadow: 0px 0px 13px rgba(113,113,113); | 319 | box-shadow: 0px 0px 13px rgba(113, 113, 113); |
| 290 | display: flex; | 320 | display: flex; |
| 291 | justify-content: space-between; | 321 | justify-content: space-between; |
| 292 | height: 80px; | 322 | height: 80px; |
| 293 | align-items: center; | 323 | align-items: center; |
| 294 | 324 | ||
| 295 | .logo { | 325 | .logo { |
| 296 | height: 60px; | 326 | height: 60px; |
| 297 | margin-left: 40px; | 327 | margin-left: 40px; |
| 298 | } | 328 | } |
| 299 | 329 | ||
| 300 | .flex-right { | 330 | .flex-right { |
| 301 | display: flex; | 331 | display: flex; |
| 302 | align-items: center; | 332 | align-items: center; |
| 303 | } | 333 | } |
| 304 | 334 | ||
| 305 | .search { | 335 | .search { |
| 306 | position: relative; | 336 | position: relative; |
| 307 | 337 | ||
| 308 | .el-button.is-circle:hover { | 338 | .el-button.is-circle:hover { |
| 309 | color:var(--el-color-primary); | 339 | color: var(--el-color-primary); |
| 310 | border-color: var(--el-color-primary); | 340 | border-color: var(--el-color-primary); |
| 311 | } | 341 | } |
| 342 | |||
| 312 | .el-button.is-circle:active { | 343 | .el-button.is-circle:active { |
| 313 | background: var(--el-color-primary); | 344 | background: var(--el-color-primary); |
| 314 | color: #fff; | 345 | color: #fff; |
| 315 | border-color: var(--el-color-primary); | 346 | border-color: var(--el-color-primary); |
| 316 | } | 347 | } |
| 348 | |||
| 317 | .el-button.is-circle:focus { | 349 | .el-button.is-circle:focus { |
| 318 | border-color: var(--el-color-primary) | 350 | border-color: var(--el-color-primary) |
| 319 | } | 351 | } |
| 352 | |||
| 320 | :deep(.el-input .el-input__wrapper) { | 353 | :deep(.el-input .el-input__wrapper) { |
| 321 | box-shadow: none; | 354 | box-shadow: none; |
| 322 | border-radius: 18px; | 355 | border-radius: 18px; |
| 323 | background: #F4F4F4; | 356 | background: #F4F4F4; |
| 324 | } | 357 | } |
| 325 | 358 | ||
| 326 | .el-icon { | 359 | .el-icon { |
| 327 | position: absolute; | 360 | position: absolute; |
| 328 | right: 5px; | 361 | right: 5px; |
| ... | @@ -336,46 +369,100 @@ function getCode() { | ... | @@ -336,46 +369,100 @@ function getCode() { |
| 336 | } | 369 | } |
| 337 | 370 | ||
| 338 | 371 | ||
| 339 | .ropenbtn{padding: 10px;display: none; | 372 | .ropenbtn { |
| 340 | img{ width: 44px;} | 373 | padding: 10px; |
| 374 | display: none; | ||
| 375 | |||
| 376 | img { | ||
| 377 | width: 44px; | ||
| 341 | } | 378 | } |
| 379 | } | ||
| 380 | |||
| 381 | :deep(.el-input) { | ||
| 382 | height: 100% | ||
| 383 | } | ||
| 384 | |||
| 385 | :deep(.el-form-item) { | ||
| 386 | height: 40px; | ||
| 387 | } | ||
| 342 | 388 | ||
| 343 | :deep(.el-input){height: 100%} | ||
| 344 | :deep(.el-form-item){height: 40px;} | ||
| 345 | //.home-menu .el-menu--horizontal > .el-menu-item{margin: 0 5px; font-size: 18px;} | 389 | //.home-menu .el-menu--horizontal > .el-menu-item{margin: 0 5px; font-size: 18px;} |
| 346 | .home-menu .el-sub-menu{font-size: 16px;} | 390 | .home-menu .el-sub-menu { |
| 347 | .weiMenu.el-menu{ | 391 | font-size: 16px; |
| 392 | } | ||
| 393 | |||
| 394 | .weiMenu.el-menu { | ||
| 348 | border: none; | 395 | border: none; |
| 349 | :deep(.el-menu-item.is-active){color: var(--el-color-primary);} | 396 | |
| 397 | :deep(.el-menu-item.is-active) { | ||
| 398 | color: var(--el-color-primary); | ||
| 399 | } | ||
| 350 | } | 400 | } |
| 351 | .weiHead{display: flex;justify-content: space-between;padding: 15px;align-items: center; | 401 | |
| 402 | .weiHead { | ||
| 403 | display: flex; | ||
| 404 | justify-content: space-between; | ||
| 405 | padding: 15px; | ||
| 406 | align-items: center; | ||
| 352 | width: 100%; | 407 | width: 100%; |
| 353 | .languageBtn{font-size: 20px;line-height: 30px;white-space: nowrap;margin-right: 20px;} | 408 | |
| 409 | .languageBtn { | ||
| 410 | font-size: 20px; | ||
| 411 | line-height: 30px; | ||
| 412 | white-space: nowrap; | ||
| 413 | margin-right: 20px; | ||
| 414 | } | ||
| 354 | } | 415 | } |
| 355 | .weiMenu{ | 416 | |
| 356 | .el-menu-item{font-size: 20px} | 417 | .weiMenu { |
| 357 | :deep(.el-sub-menu__title){font-size: 20px} | 418 | .el-menu-item { |
| 358 | :deep(.el-sub-menu .el-sub-menu__icon-arrow){font-size: 20px} | 419 | font-size: 20px |
| 420 | } | ||
| 421 | |||
| 422 | :deep(.el-sub-menu__title) { | ||
| 423 | font-size: 20px | ||
| 424 | } | ||
| 425 | |||
| 426 | :deep(.el-sub-menu .el-sub-menu__icon-arrow) { | ||
| 427 | font-size: 20px | ||
| 428 | } | ||
| 359 | } | 429 | } |
| 430 | |||
| 360 | @media (max-width: 1675px) { | 431 | @media (max-width: 1675px) { |
| 361 | .search { | 432 | .search { |
| 362 | display: none; | 433 | display: none; |
| 363 | } | 434 | } |
| 364 | } | 435 | } |
| 436 | |||
| 365 | @media (max-width: 1620px) { | 437 | @media (max-width: 1620px) { |
| 366 | .home-menu .el-menu--horizontal > .el-menu-item{margin: 0 2px; } | 438 | .home-menu .el-menu--horizontal > .el-menu-item { |
| 439 | margin: 0 2px; | ||
| 440 | } | ||
| 367 | } | 441 | } |
| 442 | |||
| 368 | @media (max-width: 1450px) { | 443 | @media (max-width: 1450px) { |
| 369 | .home-menu .el-menu--horizontal > .el-menu-item{font-size: 15px} | 444 | .home-menu .el-menu--horizontal > .el-menu-item { |
| 445 | font-size: 15px | ||
| 446 | } | ||
| 370 | } | 447 | } |
| 371 | @media (max-width: 1340px) { | ||
| 372 | 448 | ||
| 373 | .home-menu .el-menu--horizontal > .el-menu-item{margin: 0; } | 449 | @media (max-width: 1340px) { |
| 450 | |||
| 451 | .home-menu .el-menu--horizontal > .el-menu-item { | ||
| 452 | margin: 0; | ||
| 453 | } | ||
| 374 | } | 454 | } |
| 455 | |||
| 375 | @media (max-width: 1250px) { | 456 | @media (max-width: 1250px) { |
| 376 | .home-menu .el-menu--horizontal > .el-menu-item{font-size: 14px} | 457 | .home-menu .el-menu--horizontal > .el-menu-item { |
| 377 | .topNav .logo{height: 50px;margin-left: 20px} | 458 | font-size: 14px |
| 459 | } | ||
| 460 | .topNav .logo { | ||
| 461 | height: 50px; | ||
| 462 | margin-left: 20px | ||
| 463 | } | ||
| 378 | } | 464 | } |
| 465 | |||
| 379 | @media (max-width: 1000px) { | 466 | @media (max-width: 1000px) { |
| 380 | .box { | 467 | .box { |
| 381 | width: 100% | 468 | width: 100% |
| ... | @@ -383,7 +470,9 @@ function getCode() { | ... | @@ -383,7 +470,9 @@ function getCode() { |
| 383 | .forPc { | 470 | .forPc { |
| 384 | display: none; | 471 | display: none; |
| 385 | } | 472 | } |
| 386 | .ropenbtn{display: block} | 473 | .ropenbtn { |
| 474 | display: block | ||
| 475 | } | ||
| 387 | .loginBtn { | 476 | .loginBtn { |
| 388 | display: none; | 477 | display: none; |
| 389 | } | 478 | } | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog close-icon="CircleClose" center | 2 | <el-dialog |
| 3 | v-model="show" class="pcloginpop" width="450px" :append-to-body="true" :title="title" | 3 | v-model="show" |
| 4 | destroy-on-close :show-close="showClose" :close-on-click-modal="false" @close="close" | 4 | :append-to-body="true" |
| 5 | :close-on-click-modal="false" | ||
| 6 | :show-close="showClose" | ||
| 7 | :title="title" | ||
| 8 | center | ||
| 9 | class="pcloginpop" | ||
| 10 | close-icon="CircleClose" | ||
| 11 | destroy-on-close | ||
| 12 | width="450px" | ||
| 13 | @close="close" | ||
| 5 | > | 14 | > |
| 6 | <div class="pd10"></div> | 15 | <div class="pd10" /> |
| 7 | <el-form v-if="loginStatus==0" ref="loginRef" :model="loginForm" | 16 | <el-form |
| 8 | :rules="language==0?loginRules:loginRules_en" class="login-form"> | 17 | v-if="loginStatus==0" ref="loginRef" :model="loginForm" |
| 18 | :rules="language==0?loginRules:loginRules_en" class="login-form" | ||
| 19 | > | ||
| 9 | <el-form-item prop="username"> | 20 | <el-form-item prop="username"> |
| 10 | 21 | ||
| 11 | <el-input | 22 | <el-input |
| 12 | v-model.trim="loginForm.username" | 23 | v-model.trim="loginForm.username" |
| 13 | size="large" | 24 | :placeholder="language==0?'账号(注册时使用的邮箱)':'Account (e-mail)'" |
| 14 | auto-complete="off" | 25 | auto-complete="off" |
| 15 | :placeholder="language==0?'账号(注册时使用的邮箱)':'Account (e-mail)'" | 26 | size="large" |
| 16 | > | 27 | /> |
| 17 | |||
| 18 | </el-input> | ||
| 19 | </el-form-item> | 28 | </el-form-item> |
| 20 | <el-form-item prop="password"> | 29 | <el-form-item prop="password"> |
| 21 | <el-input | 30 | <el-input |
| 22 | v-model.trim="loginForm.password" | 31 | v-model.trim="loginForm.password" |
| 23 | type="password" | 32 | :placeholder="language==0?'密码':'Password'" |
| 24 | size="large" show-password | 33 | auto-complete="off" show-password |
| 25 | auto-complete="off" | 34 | size="large" |
| 26 | :placeholder="language==0?'密码':'Password'" | 35 | type="password" |
| 27 | @keyup.enter="handleLogin" | 36 | @keyup.enter="handleLogin" |
| 28 | > | 37 | /> |
| 29 | </el-input> | ||
| 30 | </el-form-item> | 38 | </el-form-item> |
| 31 | <el-form-item v-if="captchaEnabled" prop="code"> | 39 | <el-form-item v-if="captchaEnabled" prop="code"> |
| 32 | <el-input | 40 | <el-input |
| 33 | v-model.trim="loginForm.code" | 41 | v-model.trim="loginForm.code" |
| 34 | size="large" | 42 | :placeholder="language==0?'验证码':'Code'" |
| 35 | auto-complete="off" | 43 | auto-complete="off" |
| 36 | :placeholder="language==0?'验证码':'Code'" | 44 | size="large" |
| 37 | @keyup.enter="handleLogin" | 45 | @keyup.enter="handleLogin" |
| 38 | > | 46 | > |
| 39 | <template #append> | 47 | <template #append> |
| 40 | <div class="login-code"> | 48 | <div class="login-code"> |
| ... | @@ -42,17 +50,17 @@ | ... | @@ -42,17 +50,17 @@ |
| 42 | </div> | 50 | </div> |
| 43 | </template> | 51 | </template> |
| 44 | </el-input> | 52 | </el-input> |
| 45 | 53 | ||
| 46 | </el-form-item> | 54 | </el-form-item> |
| 47 | 55 | ||
| 48 | <el-form-item style="width:100%;"> | 56 | <el-form-item style="width:100%;"> |
| 49 | <el-button | 57 | <el-button |
| 50 | class="loginBtn" | 58 | :loading="loading" |
| 51 | :loading="loading" | 59 | class="loginBtn" |
| 52 | size="large" | 60 | size="large" |
| 53 | type="primary" | 61 | style="width:100%;" |
| 54 | style="width:100%;" | 62 | type="primary" |
| 55 | @click.prevent="handleLogin" | 63 | @click.prevent="handleLogin" |
| 56 | > | 64 | > |
| 57 | <span v-if="!loading">{{ language == 0 ? '登 录' : 'Login' }}</span> | 65 | <span v-if="!loading">{{ language == 0 ? '登 录' : 'Login' }}</span> |
| 58 | <span v-else>{{ language == 0 ? '登 录 中...' : 'Logging in' }}</span> | 66 | <span v-else>{{ language == 0 ? '登 录 中...' : 'Logging in' }}</span> |
| ... | @@ -61,27 +69,33 @@ | ... | @@ -61,27 +69,33 @@ |
| 61 | <el-form-item> | 69 | <el-form-item> |
| 62 | <!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>--> | 70 | <!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>--> |
| 63 | <div style="display: flex;justify-content: space-between;width: 100%;"> | 71 | <div style="display: flex;justify-content: space-between;width: 100%;"> |
| 64 | <a class="text-primary" | 72 | <a |
| 65 | @click="showChangePassword">{{ language == 0 ? '忘记密码' : 'Forgot password' }}?</a> | 73 | class="text-primary" |
| 66 | <a @click="showRegister" class="text-primary">{{ language == 0 ? '账号注册' : 'Register' }}></a> | 74 | @click="showChangePassword" |
| 75 | >{{ language == 0 ? '忘记密码' : 'Forgot password' }}?</a> | ||
| 76 | <a class="text-primary" @click="showRegister">{{ language == 0 ? '账号注册' : 'Register' }}></a> | ||
| 67 | </div> | 77 | </div> |
| 68 | </el-form-item> | 78 | </el-form-item> |
| 69 | <el-form-item> | 79 | <el-form-item> |
| 70 | <div class="agreeLine" v-if="language==0"> | 80 | <div v-if="language==0" class="agreeLine"> |
| 71 | 登录或注册即代表同意 | 81 | 登录或注册即代表同意 |
| 72 | <a @click="goAgreement" target="_blank">《用户协议》</a>和 | 82 | <a target="_blank" @click="goAgreement">《用户协议》</a>和 |
| 73 | <a @click="goPolicy" target="_blank">《隐私政策》</a> | 83 | <a target="_blank" @click="goPolicy">《隐私政策》</a> |
| 74 | </div> | 84 | </div> |
| 75 | <div class="agreeLine" v-else> | 85 | <div v-else class="agreeLine"> |
| 76 | Registering and logging in means agreeing to the User | 86 | Registering and logging in means agreeing to the User |
| 77 | <a @click="goAgreement" target="_blank">Agreement</a> and | 87 | <a target="_blank" @click="goAgreement">Agreement</a> and |
| 78 | <a @click="goPolicy">Privacy Policy</a> | 88 | <a @click="goPolicy">Privacy Policy</a> |
| 79 | </div> | 89 | </div> |
| 80 | </el-form-item> | 90 | </el-form-item> |
| 81 | </el-form> | 91 | </el-form> |
| 82 | 92 | ||
| 83 | <div v-if="loginStatus==1"> | 93 | <div v-if="loginStatus==1"> |
| 84 | <a class="poLeft" @click="close()"><el-icon><ArrowLeftBold /></el-icon></a> | 94 | <a class="poLeft" @click="close()"> |
| 95 | <el-icon> | ||
| 96 | <ArrowLeftBold /> | ||
| 97 | </el-icon> | ||
| 98 | </a> | ||
| 85 | <div class="rItem r1" @click="goRegister(1)"> | 99 | <div class="rItem r1" @click="goRegister(1)"> |
| 86 | <h3>{{ language == 0 ? '机构用户' : 'Organization' }}</h3> | 100 | <h3>{{ language == 0 ? '机构用户' : 'Organization' }}</h3> |
| 87 | </div> | 101 | </div> |
| ... | @@ -90,38 +104,42 @@ | ... | @@ -90,38 +104,42 @@ |
| 90 | </div> | 104 | </div> |
| 91 | </div> | 105 | </div> |
| 92 | <div v-if="loginStatus==2"> | 106 | <div v-if="loginStatus==2"> |
| 93 | <a class="poLeft" @click="close()"><el-icon><ArrowLeftBold /></el-icon></a> | 107 | <a class="poLeft" @click="close()"> |
| 94 | <el-form ref="changePasswordRef" :model="changePasswordForm" | 108 | <el-icon> |
| 95 | :rules="language==0?changePasswordRules:changePasswordRules_en" class="login-form"> | 109 | <ArrowLeftBold /> |
| 110 | </el-icon> | ||
| 111 | </a> | ||
| 112 | <el-form | ||
| 113 | ref="changePasswordRef" :model="changePasswordForm" | ||
| 114 | :rules="language==0?changePasswordRules:changePasswordRules_en" class="login-form" | ||
| 115 | > | ||
| 96 | <el-form-item prop="username"> | 116 | <el-form-item prop="username"> |
| 97 | 117 | ||
| 98 | <el-input | 118 | <el-input |
| 99 | v-model.trim="changePasswordForm.username" | 119 | v-model.trim="changePasswordForm.username" |
| 100 | size="large" | 120 | :placeholder="language==0?'注册时使用的邮箱':'E-mail'" |
| 101 | auto-complete="off" @change="changePasswordFormUsername" | 121 | auto-complete="off" size="large" |
| 102 | :placeholder="language==0?'注册时使用的邮箱':'E-mail'" | 122 | @change="changePasswordFormUsername" |
| 103 | > | 123 | /> |
| 104 | |||
| 105 | </el-input> | ||
| 106 | </el-form-item> | 124 | </el-form-item> |
| 107 | <el-form-item> | 125 | <el-form-item> |
| 108 | <el-input | 126 | <el-input |
| 109 | v-model.trim="changePasswordForm.code" | 127 | v-model.trim="changePasswordForm.code" |
| 110 | size="large" | 128 | :placeholder="language==0?'验证码':'Code'" |
| 111 | auto-complete="off" | 129 | auto-complete="off" |
| 112 | :placeholder="language==0?'验证码':'Code'" | 130 | size="large" |
| 113 | @keyup.enter="handleLogin" | 131 | @keyup.enter="handleLogin" |
| 114 | > | 132 | > |
| 115 | <template #append> | 133 | <template #append> |
| 116 | <el-button type="primary" plain style="width: 110px;" @click="sendsmsMsg"> | 134 | <el-button plain style="width: 110px;" type="primary" @click="sendsmsMsg"> |
| 117 | <van-count-down v-if="counting" :time="60000" format="ss" @finish="counting=false"> | 135 | <van-count-down v-if="counting" :time="60000" format="ss" @finish="counting=false"> |
| 118 | <template #default="timeData"> | 136 | <template #default="timeData"> |
| 119 | <span class="text-primary">{{ timeData.seconds }}{{ language == 0 ? '秒' : 's' }}</span> | 137 | <span class="text-primary">{{ timeData.seconds }}{{ language == 0 ? '秒' : 's' }}</span> |
| 120 | </template> | 138 | </template> |
| 121 | </van-count-down> | 139 | </van-count-down> |
| 122 | <!-- <count-down v-slot="{ totalSeconds }" :time="60000" @end="counting=false">--> | 140 | <!-- <count-down v-slot="{ totalSeconds }" :time="60000" @end="counting=false">--> |
| 123 | <!-- {{ totalSeconds }} {{ language == 0 ? '秒' : 's' }}--> | 141 | <!-- {{ totalSeconds }} {{ language == 0 ? '秒' : 's' }}--> |
| 124 | <!-- </count-down>--> | 142 | <!-- </count-down>--> |
| 125 | <span v-else> | 143 | <span v-else> |
| 126 | {{ language == 0 ? '发送验证码' : 'Send' }} | 144 | {{ language == 0 ? '发送验证码' : 'Send' }} |
| 127 | </span> | 145 | </span> |
| ... | @@ -129,39 +147,40 @@ | ... | @@ -129,39 +147,40 @@ |
| 129 | </template> | 147 | </template> |
| 130 | </el-input> | 148 | </el-input> |
| 131 | <!-- <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">--> | 149 | <!-- <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">--> |
| 132 | <Vcode :successText="successVcode" :failText="failVcode" :slider-text="sliderText" :zIndex="9999" :show="isShow" @success="codeSuccess"></Vcode> | 150 | <Vcode |
| 151 | :fail-text="failVcode" :show="isShow" :slider-text="sliderText" :success-text="successVcode" | ||
| 152 | :z-index="9999" @success="codeSuccess" | ||
| 153 | /> | ||
| 133 | <!-- </div>--> | 154 | <!-- </div>--> |
| 134 | </el-form-item> | 155 | </el-form-item> |
| 135 | 156 | ||
| 136 | <el-form-item prop="password"> | 157 | <el-form-item prop="password"> |
| 137 | <el-input | 158 | <el-input |
| 138 | v-model.trim="changePasswordForm.password" | 159 | v-model.trim="changePasswordForm.password" |
| 139 | type="password" | 160 | :placeholder="language==0?'新密码':'New password'" |
| 140 | size="large" show-password | 161 | auto-complete="off" show-password |
| 141 | auto-complete="off" | 162 | size="large" |
| 142 | :placeholder="language==0?'新密码':'New password'" | 163 | type="password" |
| 143 | @keyup.enter="handleLogin" | 164 | @keyup.enter="handleLogin" |
| 144 | > | 165 | /> |
| 145 | </el-input> | ||
| 146 | </el-form-item> | 166 | </el-form-item> |
| 147 | <el-form-item prop="confirmPassword"> | 167 | <el-form-item prop="confirmPassword"> |
| 148 | <el-input | 168 | <el-input |
| 149 | v-model.trim="changePasswordForm.confirmPassword" | 169 | v-model.trim="changePasswordForm.confirmPassword" |
| 150 | type="password" | 170 | :placeholder="language==0?'确认密码':'Confirm password'" |
| 151 | size="large" show-password | 171 | auto-complete="off" show-password |
| 152 | auto-complete="off" | 172 | size="large" |
| 153 | :placeholder="language==0?'确认密码':'Confirm password'" | 173 | type="password" |
| 154 | > | 174 | /> |
| 155 | </el-input> | ||
| 156 | </el-form-item> | 175 | </el-form-item> |
| 157 | <el-form-item style="width:100%;"> | 176 | <el-form-item style="width:100%;"> |
| 158 | <el-button | 177 | <el-button |
| 159 | class="loginBtn" | 178 | :loading="loading" |
| 160 | :loading="loading" | 179 | class="loginBtn" |
| 161 | size="large" | 180 | size="large" |
| 162 | type="primary" | 181 | style="width:100%;" |
| 163 | style="width:100%;" | 182 | type="primary" |
| 164 | @click.prevent="handleChangePassword" | 183 | @click.prevent="handleChangePassword" |
| 165 | > | 184 | > |
| 166 | <span v-if="language==0">确定</span> | 185 | <span v-if="language==0">确定</span> |
| 167 | <span v-else>Submit</span> | 186 | <span v-else>Submit</span> |
| ... | @@ -173,25 +192,25 @@ | ... | @@ -173,25 +192,25 @@ |
| 173 | </template> | 192 | </template> |
| 174 | 193 | ||
| 175 | <script setup> | 194 | <script setup> |
| 176 | import {getCurrentInstance, ref, watch} from 'vue' | 195 | import { getCurrentInstance, ref, watch } from 'vue' |
| 177 | import Vcode from "vue3-puzzle-vcode" | 196 | import Vcode from 'vue3-puzzle-vcode' |
| 178 | import CountDown from '@chenfengyuan/vue-countdown' | 197 | import CountDown from '@chenfengyuan/vue-countdown' |
| 179 | import {forgetPassword, getCodeImg} from '@/api/login' | 198 | import { forgetPassword, getCodeImg } from '@/api/login' |
| 180 | import * as match from '@/apiPc/match' | 199 | import * as match from '@/apiPc/match' |
| 181 | import Cookies from 'js-cookie' | 200 | import Cookies from 'js-cookie' |
| 182 | import useUserStore from '@/store/modules/user' | 201 | import useUserStore from '@/store/modules/user' |
| 183 | 202 | ||
| 184 | const language = useStorage('language', 0) | 203 | const language = useStorage('language', 0) |
| 185 | import {useRouter} from 'vue-router' | 204 | import { useRouter } from 'vue-router' |
| 186 | import {ElMessage, ElMessageBox} from 'element-plus' | 205 | import { ElMessage, ElMessageBox } from 'element-plus' |
| 187 | import cache from "@/plugins/cache"; | 206 | import cache from '@/plugins/cache' |
| 188 | import {useStorage} from "@vueuse/core/index"; | 207 | import { useStorage } from '@vueuse/core/index' |
| 189 | import {getCaptchaSms, getCaptchaSms2} from "@/apiPc/match"; | 208 | import { getCaptchaSms, getCaptchaSms2 } from '@/apiPc/match' |
| 190 | 209 | ||
| 191 | const emit = defineEmits(['submitForm']) | 210 | const emit = defineEmits(['submitForm']) |
| 192 | const userStore = useUserStore() | 211 | const userStore = useUserStore() |
| 193 | const router = useRouter() | 212 | const router = useRouter() |
| 194 | const {proxy} = getCurrentInstance() | 213 | const { proxy } = getCurrentInstance() |
| 195 | const loginForm = ref({ | 214 | const loginForm = ref({ |
| 196 | username: '', | 215 | username: '', |
| 197 | password: '', | 216 | password: '', |
| ... | @@ -201,26 +220,26 @@ const loginForm = ref({ | ... | @@ -201,26 +220,26 @@ const loginForm = ref({ |
| 201 | }) | 220 | }) |
| 202 | const countDown = ref(null) | 221 | const countDown = ref(null) |
| 203 | const loginRules = { | 222 | const loginRules = { |
| 204 | username: [{required: true, trigger: 'change', message: '请输入您的会员号'}], | 223 | username: [{ required: true, trigger: 'change', message: '请输入您的会员号' }], |
| 205 | password: [{required: true, trigger: 'change', message: '请输入您账号密码'}], | 224 | password: [{ required: true, trigger: 'change', message: '请输入您账号密码' }], |
| 206 | code: [{required: true, trigger: 'change', message: '请输入验证码'}] | 225 | code: [{ required: true, trigger: 'change', message: '请输入验证码' }] |
| 207 | } | 226 | } |
| 208 | const changePasswordRules = { | 227 | const changePasswordRules = { |
| 209 | username: [{required: true, trigger: 'change', message: '请输入您的账号'}], | 228 | username: [{ required: true, trigger: 'change', message: '请输入您的账号' }], |
| 210 | password: [{required: true, trigger: 'change', message: '请输入您的密码'}], | 229 | password: [{ required: true, trigger: 'change', message: '请输入您的密码' }], |
| 211 | confirmPassword: [{required: true, trigger: 'change', message: '请再次输入您的密码'}], | 230 | confirmPassword: [{ required: true, trigger: 'change', message: '请再次输入您的密码' }], |
| 212 | code: [{required: true, trigger: 'change', message: '请输入验证码'}] | 231 | code: [{ required: true, trigger: 'change', message: '请输入验证码' }] |
| 213 | } | 232 | } |
| 214 | const loginRules_en = { | 233 | const loginRules_en = { |
| 215 | username: [{required: true, trigger: 'change', message: 'Please enter '}], | 234 | username: [{ required: true, trigger: 'change', message: 'Please enter ' }], |
| 216 | password: [{required: true, trigger: 'change', message: 'Please enter '}], | 235 | password: [{ required: true, trigger: 'change', message: 'Please enter ' }], |
| 217 | code: [{required: true, trigger: 'change', message: 'Please enter '}] | 236 | code: [{ required: true, trigger: 'change', message: 'Please enter ' }] |
| 218 | } | 237 | } |
| 219 | const changePasswordRules_en = { | 238 | const changePasswordRules_en = { |
| 220 | username: [{required: true, trigger: 'change', message: 'Please enter '}], | 239 | username: [{ required: true, trigger: 'change', message: 'Please enter ' }], |
| 221 | password: [{required: true, trigger: 'change', message: 'Please enter '}], | 240 | password: [{ required: true, trigger: 'change', message: 'Please enter ' }], |
| 222 | confirmPassword: [{required: true, trigger: 'change', message: 'Please enter '}], | 241 | confirmPassword: [{ required: true, trigger: 'change', message: 'Please enter ' }], |
| 223 | code: [{required: true, trigger: 'change', message: 'Please enter '}] | 242 | code: [{ required: true, trigger: 'change', message: 'Please enter ' }] |
| 224 | } | 243 | } |
| 225 | 244 | ||
| 226 | const show = ref(false) | 245 | const show = ref(false) |
| ... | @@ -232,7 +251,7 @@ const loading = ref(false) | ... | @@ -232,7 +251,7 @@ const loading = ref(false) |
| 232 | 251 | ||
| 233 | // 验证码开关 | 252 | // 验证码开关 |
| 234 | const captchaEnabled = ref(true) | 253 | const captchaEnabled = ref(true) |
| 235 | //忘记密码 | 254 | // 忘记密码 |
| 236 | const isShow = ref(false) | 255 | const isShow = ref(false) |
| 237 | const isCodeTrue = ref(false) | 256 | const isCodeTrue = ref(false) |
| 238 | const counting = ref(false) | 257 | const counting = ref(false) |
| ... | @@ -244,7 +263,9 @@ const changePasswordForm = ref({ | ... | @@ -244,7 +263,9 @@ const changePasswordForm = ref({ |
| 244 | const failVcode = ref('验证失败,请重试') | 263 | const failVcode = ref('验证失败,请重试') |
| 245 | const successVcode = ref('验证通过!') | 264 | const successVcode = ref('验证通过!') |
| 246 | const sliderText = ref('拖动滑块完成拼图') | 265 | const sliderText = ref('拖动滑块完成拼图') |
| 247 | const open = (params) => { | 266 | const typeStr = ref() |
| 267 | |||
| 268 | const open = (params, type) => { | ||
| 248 | console.log(params) | 269 | console.log(params) |
| 249 | show.value = true | 270 | show.value = true |
| 250 | showClose.value = !(params?.notShowClose || false) | 271 | showClose.value = !(params?.notShowClose || false) |
| ... | @@ -259,9 +280,11 @@ const open = (params) => { | ... | @@ -259,9 +280,11 @@ const open = (params) => { |
| 259 | sliderText.value = 'Drag the slider to complete the puzzle' | 280 | sliderText.value = 'Drag the slider to complete the puzzle' |
| 260 | title.value = 'LOGIN' | 281 | title.value = 'LOGIN' |
| 261 | } | 282 | } |
| 283 | if (type) typeStr.value = type | ||
| 262 | getCode() | 284 | getCode() |
| 263 | getCookie() | 285 | getCookie() |
| 264 | } | 286 | } |
| 287 | |||
| 265 | defineExpose({ | 288 | defineExpose({ |
| 266 | open | 289 | open |
| 267 | }) | 290 | }) |
| ... | @@ -272,8 +295,8 @@ function handleLogin() { | ... | @@ -272,8 +295,8 @@ function handleLogin() { |
| 272 | loading.value = true | 295 | loading.value = true |
| 273 | // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码 | 296 | // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码 |
| 274 | if (loginForm.value.rememberMe) { | 297 | if (loginForm.value.rememberMe) { |
| 275 | Cookies.set('telno', loginForm.value.telno, {expires: 30}) | 298 | Cookies.set('telno', loginForm.value.telno, { expires: 30 }) |
| 276 | Cookies.set('rememberMe', loginForm.value.rememberMe, {expires: 30}) | 299 | Cookies.set('rememberMe', loginForm.value.rememberMe, { expires: 30 }) |
| 277 | } else { | 300 | } else { |
| 278 | // 否则移除 | 301 | // 否则移除 |
| 279 | Cookies.remove('telno') | 302 | Cookies.remove('telno') |
| ... | @@ -297,21 +320,31 @@ function handleLogin() { | ... | @@ -297,21 +320,31 @@ function handleLogin() { |
| 297 | 320 | ||
| 298 | function close() { | 321 | function close() { |
| 299 | loginStatus.value = 0 | 322 | loginStatus.value = 0 |
| 300 | title.value = language.value == 0?'用户登录':'LOGIN' | 323 | title.value = language.value == 0 ? '用户登录' : 'LOGIN' |
| 301 | } | 324 | } |
| 302 | 325 | ||
| 303 | function showChangePassword() { | 326 | function showChangePassword() { |
| 304 | loginStatus.value = 2 | 327 | loginStatus.value = 2 |
| 305 | title.value = language.value == 0?'忘记密码/密码重置':'FORGET PASSWORD' | 328 | title.value = language.value == 0 ? '忘记密码/密码重置' : 'FORGET PASSWORD' |
| 306 | |||
| 307 | } | 329 | } |
| 308 | 330 | ||
| 309 | function showRegister() { | 331 | function showRegister() { |
| 310 | loginStatus.value = 1 | 332 | loginStatus.value = 1 |
| 311 | if (language.value == 0) { | 333 | // if (language.value == 0) { |
| 312 | title.value = '账号注册' | 334 | // title.value = '账号注册' |
| 335 | // } else { | ||
| 336 | // title.value = 'REGISTER' | ||
| 337 | // } | ||
| 338 | |||
| 339 | |||
| 340 | if (typeStr.value && typeStr.value == 2) { | ||
| 341 | if (language.value == 0) { | ||
| 342 | title.value = '账号注册' | ||
| 343 | } else { | ||
| 344 | title.value = 'REGISTER' | ||
| 345 | } | ||
| 313 | } else { | 346 | } else { |
| 314 | title.value = 'REGISTER' | 347 | goRegister(typeStr.value) |
| 315 | } | 348 | } |
| 316 | } | 349 | } |
| 317 | 350 | ||
| ... | @@ -359,7 +392,7 @@ function sendsmsMsg() { | ... | @@ -359,7 +392,7 @@ function sendsmsMsg() { |
| 359 | return | 392 | return |
| 360 | } | 393 | } |
| 361 | if (counting.value) { | 394 | if (counting.value) { |
| 362 | 395 | ||
| 363 | } else { | 396 | } else { |
| 364 | isShow.value = true | 397 | isShow.value = true |
| 365 | } | 398 | } |
| ... | @@ -369,7 +402,7 @@ function codeSuccess() { | ... | @@ -369,7 +402,7 @@ function codeSuccess() { |
| 369 | // 忘记密码验证成功 | 402 | // 忘记密码验证成功 |
| 370 | isShow.value = false | 403 | isShow.value = false |
| 371 | isCodeTrue.value = true | 404 | isCodeTrue.value = true |
| 372 | getCaptchaSms2({account: changePasswordForm.value.username}).then(res => { | 405 | getCaptchaSms2({ account: changePasswordForm.value.username }).then(res => { |
| 373 | counting.value = true | 406 | counting.value = true |
| 374 | }) | 407 | }) |
| 375 | } | 408 | } |
| ... | @@ -384,26 +417,25 @@ function handleChangePassword() { | ... | @@ -384,26 +417,25 @@ function handleChangePassword() { |
| 384 | if (isCodeTrue.value) { | 417 | if (isCodeTrue.value) { |
| 385 | delete changePasswordForm.value.confirmPassword | 418 | delete changePasswordForm.value.confirmPassword |
| 386 | forgetPassword(changePasswordForm.value).then(res => { | 419 | forgetPassword(changePasswordForm.value).then(res => { |
| 387 | ElMessage.success(language.value == 0 ? '操作成功,请登录' :'Operation successful, please log in') | 420 | ElMessage.success(language.value == 0 ? '操作成功,请登录' : 'Operation successful, please log in') |
| 388 | close() | 421 | close() |
| 389 | }) | 422 | }) |
| 390 | } else { | 423 | } else { |
| 391 | ElMessage.warning(language.value == 0 ? '请发送验证码' :'Please send the verification code') | 424 | ElMessage.warning(language.value == 0 ? '请发送验证码' : 'Please send the verification code') |
| 392 | } | 425 | } |
| 393 | } | 426 | } |
| 394 | }) | 427 | }) |
| 395 | |||
| 396 | } | 428 | } |
| 397 | 429 | ||
| 398 | const goAgreement = () => { | 430 | const goAgreement = () => { |
| 399 | const routeLocation = router.resolve({ | 431 | const routeLocation = router.resolve({ |
| 400 | name: 'userAgreement', | 432 | name: 'userAgreement' |
| 401 | }) | 433 | }) |
| 402 | window.open(routeLocation.href, '_blank') | 434 | window.open(routeLocation.href, '_blank') |
| 403 | } | 435 | } |
| 404 | const goPolicy = () => { | 436 | const goPolicy = () => { |
| 405 | const routeLocation = router.resolve({ | 437 | const routeLocation = router.resolve({ |
| 406 | name: 'policy', | 438 | name: 'policy' |
| 407 | }) | 439 | }) |
| 408 | window.open(routeLocation.href, '_blank') | 440 | window.open(routeLocation.href, '_blank') |
| 409 | } | 441 | } |
| ... | @@ -440,7 +472,7 @@ const goPolicy = () => { | ... | @@ -440,7 +472,7 @@ const goPolicy = () => { |
| 440 | background: linear-gradient(-90deg, #8623FC, #453DEA); | 472 | background: linear-gradient(-90deg, #8623FC, #453DEA); |
| 441 | border-radius: 20px; | 473 | border-radius: 20px; |
| 442 | font-size: 18px; | 474 | font-size: 18px; |
| 443 | 475 | ||
| 444 | &:hover { | 476 | &:hover { |
| 445 | //background: linear-gradient(90deg, #8623FC, #453DEA); | 477 | //background: linear-gradient(90deg, #8623FC, #453DEA); |
| 446 | box-shadow: 0 0 10px #453DEA; | 478 | box-shadow: 0 0 10px #453DEA; |
| ... | @@ -466,20 +498,20 @@ const goPolicy = () => { | ... | @@ -466,20 +498,20 @@ const goPolicy = () => { |
| 466 | position: relative; | 498 | position: relative; |
| 467 | background: #ffffff; | 499 | background: #ffffff; |
| 468 | padding: 0 25px 5px; | 500 | padding: 0 25px 5px; |
| 469 | 501 | ||
| 470 | .el-input { | 502 | .el-input { |
| 471 | height: 40px; | 503 | height: 40px; |
| 472 | 504 | ||
| 473 | :deep(.el-input__wrapper) { | 505 | :deep(.el-input__wrapper) { |
| 474 | box-shadow: none; | 506 | box-shadow: none; |
| 475 | border-bottom: 1px solid #E5E5E5; | 507 | border-bottom: 1px solid #E5E5E5; |
| 476 | } | 508 | } |
| 477 | 509 | ||
| 478 | input { | 510 | input { |
| 479 | height: 40px; | 511 | height: 40px; |
| 480 | } | 512 | } |
| 481 | } | 513 | } |
| 482 | 514 | ||
| 483 | .input-icon { | 515 | .input-icon { |
| 484 | height: 39px; | 516 | height: 39px; |
| 485 | width: 14px; | 517 | width: 14px; |
| ... | @@ -495,7 +527,7 @@ const goPolicy = () => { | ... | @@ -495,7 +527,7 @@ const goPolicy = () => { |
| 495 | 527 | ||
| 496 | .login-code { | 528 | .login-code { |
| 497 | height: 40px; | 529 | height: 40px; |
| 498 | 530 | ||
| 499 | img { | 531 | img { |
| 500 | cursor: pointer; | 532 | cursor: pointer; |
| 501 | vertical-align: middle; | 533 | vertical-align: middle; |
| ... | @@ -525,7 +557,7 @@ const goPolicy = () => { | ... | @@ -525,7 +557,7 @@ const goPolicy = () => { |
| 525 | padding: 0; | 557 | padding: 0; |
| 526 | color: #fff; | 558 | color: #fff; |
| 527 | box-shadow: none; | 559 | box-shadow: none; |
| 528 | 560 | ||
| 529 | div { | 561 | div { |
| 530 | color: #fff; | 562 | color: #fff; |
| 531 | } | 563 | } |
| ... | @@ -535,7 +567,7 @@ const goPolicy = () => { | ... | @@ -535,7 +567,7 @@ const goPolicy = () => { |
| 535 | a { | 567 | a { |
| 536 | font-weight: 600; | 568 | font-weight: 600; |
| 537 | color: #000; | 569 | color: #000; |
| 538 | 570 | ||
| 539 | &:hover { | 571 | &:hover { |
| 540 | text-decoration: underline; | 572 | text-decoration: underline; |
| 541 | } | 573 | } |
| ... | @@ -548,28 +580,28 @@ const goPolicy = () => { | ... | @@ -548,28 +580,28 @@ const goPolicy = () => { |
| 548 | width: 350px; | 580 | width: 350px; |
| 549 | padding: 1px; | 581 | padding: 1px; |
| 550 | margin: 20px auto; | 582 | margin: 20px auto; |
| 551 | 583 | ||
| 552 | h3 { | 584 | h3 { |
| 553 | font-size: 30px; | 585 | font-size: 30px; |
| 554 | margin: 50px; | 586 | margin: 50px; |
| 555 | } | 587 | } |
| 556 | 588 | ||
| 557 | &.r1 { | 589 | &.r1 { |
| 558 | background: url("@/assets/dance/r1b.png") no-repeat left; | 590 | background: url("@/assets/dance/r1b.png") no-repeat left; |
| 559 | 591 | ||
| 560 | &:hover { | 592 | &:hover { |
| 561 | background: url("@/assets/dance/r1.png") no-repeat left; | 593 | background: url("@/assets/dance/r1.png") no-repeat left; |
| 562 | } | 594 | } |
| 563 | } | 595 | } |
| 564 | 596 | ||
| 565 | &.r2 { | 597 | &.r2 { |
| 566 | background: url("@/assets/dance/r2b.png") no-repeat left; | 598 | background: url("@/assets/dance/r2b.png") no-repeat left; |
| 567 | 599 | ||
| 568 | &:hover { | 600 | &:hover { |
| 569 | background: url("@/assets/dance/r2.png") no-repeat left; | 601 | background: url("@/assets/dance/r2.png") no-repeat left; |
| 570 | } | 602 | } |
| 571 | } | 603 | } |
| 572 | 604 | ||
| 573 | &:hover { | 605 | &:hover { |
| 574 | color: #fff; | 606 | color: #fff; |
| 575 | } | 607 | } |
| ... | @@ -585,5 +617,11 @@ const goPolicy = () => { | ... | @@ -585,5 +617,11 @@ const goPolicy = () => { |
| 585 | border: var(--el-color-primary) solid 1px; | 617 | border: var(--el-color-primary) solid 1px; |
| 586 | border-radius: 0; | 618 | border-radius: 0; |
| 587 | } | 619 | } |
| 588 | .poLeft{position: absolute;top:24px;font-size: 20px;left:20px} | 620 | |
| 621 | .poLeft { | ||
| 622 | position: absolute; | ||
| 623 | top: 24px; | ||
| 624 | font-size: 20px; | ||
| 625 | left: 20px | ||
| 626 | } | ||
| 589 | </style> | 627 | </style> | ... | ... |
| ... | @@ -394,6 +394,7 @@ | ... | @@ -394,6 +394,7 @@ |
| 394 | <pickup ref="pickupRef" /> | 394 | <pickup ref="pickupRef" /> |
| 395 | 395 | ||
| 396 | <checkAllSportsman ref="checkAllSportsmanRef" /> | 396 | <checkAllSportsman ref="checkAllSportsmanRef" /> |
| 397 | <LoginDialog ref="pcloginDialog" @submitForm="reFlash" /> | ||
| 397 | </div> | 398 | </div> |
| 398 | </template> | 399 | </template> |
| 399 | 400 | ||
| ... | @@ -405,12 +406,12 @@ import SubstationList from '@/viewsPc/match/components/substation-list' | ... | @@ -405,12 +406,12 @@ import SubstationList from '@/viewsPc/match/components/substation-list' |
| 405 | import MatchInfoProjectList from '@/viewsPc/match/components/matchInfo-projectList' | 406 | import MatchInfoProjectList from '@/viewsPc/match/components/matchInfo-projectList' |
| 406 | import QuickRow from '@/viewsPc/match/components/quick-row' | 407 | import QuickRow from '@/viewsPc/match/components/quick-row' |
| 407 | import Pickup from '@/viewsPc/components/pickup' | 408 | import Pickup from '@/viewsPc/components/pickup' |
| 408 | import { getCurrentInstance, ref } from 'vue' | 409 | import { getCurrentInstance, ref, watch } from 'vue' |
| 409 | import { reactive, onMounted } from '@vue/runtime-core' | 410 | import { reactive, onMounted } from '@vue/runtime-core' |
| 410 | import { useRoute, useRouter } from 'vue-router' | 411 | import { useRoute, useRouter } from 'vue-router' |
| 411 | import AffixInvitation from '@/viewsPc/match/components/affix-invitation' | 412 | import AffixInvitation from '@/viewsPc/match/components/affix-invitation' |
| 412 | import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman' | 413 | import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman' |
| 413 | 414 | import LoginDialog from '@/viewsPc/login' | |
| 414 | 415 | ||
| 415 | const language = useStorage('language', 0) | 416 | const language = useStorage('language', 0) |
| 416 | const route = useRoute() | 417 | const route = useRoute() |
| ... | @@ -455,6 +456,7 @@ const data = reactive({ | ... | @@ -455,6 +456,7 @@ const data = reactive({ |
| 455 | startSign: '', | 456 | startSign: '', |
| 456 | isNational: false | 457 | isNational: false |
| 457 | }) | 458 | }) |
| 459 | |||
| 458 | const { | 460 | const { |
| 459 | error, | 461 | error, |
| 460 | loading, | 462 | loading, |
| ... | @@ -466,6 +468,7 @@ const { | ... | @@ -466,6 +468,7 @@ const { |
| 466 | signDoneGroupList, signDoneGroupListToTal, queryGroupList, | 468 | signDoneGroupList, signDoneGroupListToTal, queryGroupList, |
| 467 | time, startSign, isNational | 469 | time, startSign, isNational |
| 468 | } = toRefs(data) | 470 | } = toRefs(data) |
| 471 | |||
| 469 | const signTypePop = ref(false) | 472 | const signTypePop = ref(false) |
| 470 | const upgradePop = ref(false) | 473 | const upgradePop = ref(false) |
| 471 | 474 | ||
| ... | @@ -539,22 +542,22 @@ function changeMenu(menu, l) { | ... | @@ -539,22 +542,22 @@ function changeMenu(menu, l) { |
| 539 | 542 | ||
| 540 | function choseSignType() { | 543 | function choseSignType() { |
| 541 | console.log(matchData.value.signType, matchData.value.languageSource, user) | 544 | console.log(matchData.value.signType, matchData.value.languageSource, user) |
| 542 | |||
| 543 | if (!user) { | 545 | if (!user) { |
| 546 | handelGoLogin({}, matchData.value.signType) | ||
| 544 | // 判断signType,如1个人注册-报名; | 547 | // 判断signType,如1个人注册-报名; |
| 545 | switch (matchData.value.signType) { | 548 | // switch (matchData.value.signType) { |
| 546 | case '0': | 549 | // case '0': |
| 547 | // 注册 | 550 | // // 注册 |
| 548 | goGeren() | 551 | // goGeren() |
| 549 | break | 552 | // break |
| 550 | case '1': | 553 | // case '1': |
| 551 | // 登录 | 554 | // // 登录 |
| 552 | goLogin() | 555 | // goLogin() |
| 553 | break | 556 | // break |
| 554 | case '2': | 557 | // case '2': |
| 555 | popChangeType() | 558 | // popChangeType() |
| 556 | break | 559 | // break |
| 557 | } | 560 | // } |
| 558 | } else { | 561 | } else { |
| 559 | // 获取已报名信息 | 562 | // 获取已报名信息 |
| 560 | checkIsSign().then(() => { | 563 | checkIsSign().then(() => { |
| ... | @@ -952,16 +955,21 @@ async function getCheckOcr(obj) { | ... | @@ -952,16 +955,21 @@ async function getCheckOcr(obj) { |
| 952 | } | 955 | } |
| 953 | } | 956 | } |
| 954 | 957 | ||
| 958 | watch(() => useUserStore().reLogin, (val) => { | ||
| 959 | if (val.show) { | ||
| 960 | console.log(val) | ||
| 961 | handelGoLogin(val.query) | ||
| 962 | } | ||
| 963 | }) | ||
| 955 | 964 | ||
| 956 | // 登录 | 965 | // 登录 |
| 957 | const handelGoLogin = (query) => { | 966 | const handelGoLogin = (query, type) => { |
| 958 | const param = {} | 967 | proxy.$refs['pcloginDialog'].open(query, type) |
| 959 | // if (_.isBoolean(flag)) { | 968 | } |
| 960 | // param = { | 969 | |
| 961 | // notShowClose: flag | 970 | const reFlash = () => { |
| 962 | // } | 971 | // 刷新 |
| 963 | // } | 972 | location.reload() |
| 964 | proxy.$refs['pcloginDialog'].open(query) | ||
| 965 | } | 973 | } |
| 966 | </script> | 974 | </script> |
| 967 | 975 | ... | ... |
-
Please register or sign in to post a comment