Merge pull request 'master' (#80) from master into dm
Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/80
This commit is contained in:
1
src/assets/svg/sso.svg
Normal file
1
src/assets/svg/sso.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 5.4 KiB |
@@ -27,8 +27,10 @@ import Hamburger from './Hamburger.vue';
|
||||
import {useAuthStore} from '@/stores/userstore.js'
|
||||
import BellSocket from "./BellSocket.vue";
|
||||
import {getUserInfo} from "../../api/login";
|
||||
import {usePermisstionStroe} from '@/stores/permisstion'
|
||||
|
||||
const authStore = useAuthStore()
|
||||
const permisstionStore = usePermisstionStroe()
|
||||
const userInfo = ref({})
|
||||
const visitedP = ref(false)
|
||||
const router = useRouter()
|
||||
@@ -58,6 +60,7 @@ const handleToAuth = () => {
|
||||
const handleLogout = () => {
|
||||
visitedP.value = !visitedP.value
|
||||
authStore.userLogout()
|
||||
permisstionStore.removeMenu()
|
||||
router.push('/login')
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -96,12 +96,18 @@ export const usePermisstionStroe = defineStore('permisstion', () => {
|
||||
}
|
||||
}
|
||||
|
||||
const removeMenu = () => {
|
||||
menuList.value.length = 0
|
||||
asyncRouters.value.length = 0
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
asyncRouters,
|
||||
menuList,
|
||||
isLoadRoutes,
|
||||
setAsyncRouters,
|
||||
setIsLoadRoutes
|
||||
setIsLoadRoutes,
|
||||
removeMenu
|
||||
}
|
||||
})
|
||||
@@ -4,14 +4,14 @@
|
||||
:model="loginForm"
|
||||
ref="formInstance"
|
||||
:rules="rules"
|
||||
label-width="65px"
|
||||
label-width="70px"
|
||||
>
|
||||
<h3>科研管理平台</h3>
|
||||
<h2>科研管理平台</h2>
|
||||
<el-form-item prop="username" label="账号">
|
||||
<el-input v-model="loginForm.username" :prefix-icon="User"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="password" label="密码">
|
||||
<el-input v-model="loginForm.password" type="password" :prefix-icon="Lock"></el-input>
|
||||
<el-input v-model="loginForm.password" type="password" :prefix-icon="Lock" :show-password="true"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="code" label="验证码">
|
||||
<div class="code">
|
||||
@@ -20,6 +20,12 @@
|
||||
<img :src="codeImg" alt="" @click="getCode">
|
||||
</div>
|
||||
</el-form-item>
|
||||
<div class="sso">
|
||||
<a href="/api/auth/cas/login">
|
||||
<svg-icon name="sso"/>
|
||||
<span>统一身份认证</span>
|
||||
</a>
|
||||
</div>
|
||||
<el-form-item>
|
||||
<el-button @click="handleLogin(formInstance)" type="primary">登录</el-button>
|
||||
</el-form-item>
|
||||
@@ -98,26 +104,77 @@ onBeforeUnmount(() => {
|
||||
<style lang="scss" scoped>
|
||||
.login-box {
|
||||
height: 100%;
|
||||
background-color: #4158D0;
|
||||
background-image: linear-gradient(43deg, #4158D0 0%, #C850C0 46%, #FFCC70 100%);
|
||||
background-color: #F3F3F3;
|
||||
//background-image: linear-gradient(43deg, #4158D0 0%, #C850C0 46%, #FFCC70 100%);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
.sso {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-top: -5px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
a {
|
||||
font-size: 16px;
|
||||
color: #BEA266;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.el-form {
|
||||
padding: 12px 15px;
|
||||
border-radius: 12px;
|
||||
width: 25%;
|
||||
width: 560px;
|
||||
background-color: #fff;
|
||||
|
||||
h3 {
|
||||
.el-form-item {
|
||||
margin-bottom: 25px;
|
||||
|
||||
:deep(.el-form-item__label) {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.el-input {
|
||||
height: 40px;
|
||||
|
||||
:deep(.el-input__inner) {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
:deep(.el-input__suffix) {
|
||||
.el-input__password {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.el-input__prefix ) {
|
||||
.el-input__prefix-inner {
|
||||
.el-icon {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
h2 {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin-bottom: 15px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.el-button {
|
||||
width: 100%;
|
||||
background-color: #BEA266;
|
||||
border-color: #BEA266;
|
||||
font-size: 17px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -134,7 +191,7 @@ onBeforeUnmount(() => {
|
||||
}
|
||||
|
||||
img {
|
||||
height: 32px;
|
||||
height: 40px;
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
:data="localData.menuData"
|
||||
:filter-node-method="filterMenu"
|
||||
:props="localData.menuTreeProps"
|
||||
:check-strictly="localData.checkStrictly"
|
||||
:check-strictly="!localData.checkStrictly"
|
||||
show-checkbox
|
||||
node-key="menuId"
|
||||
@check-change="checkChange"
|
||||
@@ -50,7 +50,7 @@ const localData = reactive({
|
||||
label: 'menuName',
|
||||
children: 'children'
|
||||
},
|
||||
checkStrictly: false,
|
||||
checkStrictly: true,
|
||||
checkList: ['3'],
|
||||
checkOptions: [
|
||||
{
|
||||
@@ -161,8 +161,12 @@ const checkChange = (data) => {
|
||||
return [...checkedKeys, ...halfCheckedKeys]
|
||||
}
|
||||
|
||||
console.log(localData.checkList, 'localData.checkList');
|
||||
const checkBoxChange = (val) => {
|
||||
console.log(val, 'val');
|
||||
console.log(val.includes('3'), 'val.includes');
|
||||
localData.checkStrictly = val.includes('3')
|
||||
console.log(localData.checkStrictly, 'localData.checkStrictly');
|
||||
let nodes = menuTree.value.store.nodesMap
|
||||
if (val.includes('1')) {
|
||||
for (const node in nodes) {
|
||||
|
||||
Reference in New Issue
Block a user