Commit bb01975f authored by 周远喜's avatar 周远喜

bug 和登陆处理

parent ff31bdb2
<template>
<span class="i-layout-header-trigger i-layout-header-trigger-min">
<Dropdown transfer trigger="hover" @on-click="handleClickUserDropdown">
<span @click="openModelBugAdd">
<Icon type="ios-bug" size="18" />
</span>
<Icon type="md-arrow-dropdown"></Icon>
<DropdownMenu slot="list">
<DropdownItem name="bug">bug列表</DropdownItem>
</DropdownMenu>
</Dropdown>
<Modal title="新增bug" v-model="bugAdd" fullscreen :z-index="10">
<addBugModal ref="addBug"></addBugModal>
<div slot="footer">
<Button @click="addCancel">取消</Button>
<Button type="primary" @click="addSave">确定</Button>
</div>
</Modal>
</span>
</template>
<script>
import addBugModal from "@/pages/bug/component/add";
export default {
name: "addBug",
components: {
addBugModal
},
data() {
return {
bugAdd: false
};
},
computed: {},
methods: {
async handleClickUserDropdown(name) {
if (name === "bug") {
this.$router.push({ name: "bug" });
}
},
openModelBugAdd() {
this.bugAdd = true;
this.$refs.addBug.getEid();
this.$refs.addBug.initial();
},
addCancel() {
this.$refs.addBug.resetFields();
this.bugAdd = false;
},
addSave() {
let param = this.$refs.addBug.addBugInfo();
//alert(JSON.stringify(param))
if (param.id == null) {
//增加确定
this.$http.bug.createorupdate(param).then(res => {
if (res.result.status) {
this.$Message.success("新增成功!");
let newId = res.result.bugId;
this.$refs.addBug.updateEid(newId);
} else {
this.$Message.error("新增失败!");
}
this.$refs.addBug.resetFields();
this.bugAdd = false;
});
} else {
this.$Message.error("新增失败!");
}
}
},
created() {},
mounted() {}
};
</script>
\ No newline at end of file
<template> <template>
<span class="i-layout-header-trigger i-layout-header-trigger-min"> <span class="i-layout-header-trigger i-layout-header-trigger-min">
<Dropdown :trigger="isMobile ? 'click' : 'hover'" class="i-layout-header-user" :class="{ 'i-layout-header-user-mobile': isMobile }" @on-click="handleClick"> <Dropdown
<Avatar size="small" :src="info.avatar" v-if="info.avatar" /> :trigger="isMobile ? 'click' : 'hover'"
<span class="i-layout-header-user-name" v-if="!isMobile">{{ info.name }}</span> class="i-layout-header-user"
<DropdownMenu slot="list"> :class="{ 'i-layout-header-user-mobile': isMobile }"
<i-link to="/setting/user"> @on-click="handleClick"
<DropdownItem> >
<Icon type="ios-contact-outline" /> <Avatar size="small" :src="info.avatar" v-if="info.avatar" />
<span>{{ $t('basicLayout.user.center') }}</span> <span class="i-layout-header-user-name" v-if="!isMobile">{{ info.name }}</span>
</DropdownItem> <DropdownMenu slot="list">
</i-link> <i-link to="/setting/user">
<i-link to="/setting/account"> <DropdownItem>
<DropdownItem> <Icon type="ios-contact-outline" />
<Icon type="ios-settings-outline" /> <span>{{ $t('basicLayout.user.center') }}</span>
<span>{{ $t('basicLayout.user.setting') }}</span> </DropdownItem>
</DropdownItem> </i-link>
</i-link> <i-link to="/setting/account">
<DropdownItem divided name="logout"> <DropdownItem>
<Icon type="ios-log-out" /> <Icon type="ios-settings-outline" />
<span>{{ $t('basicLayout.user.logOut') }}</span> <span>{{ $t('basicLayout.user.setting') }}</span>
</DropdownItem> </DropdownItem>
</DropdownMenu> </i-link>
</Dropdown> <DropdownItem divided name="logout">
</span> <Icon type="ios-log-out" />
<span>{{ $t('basicLayout.user.logOut') }}</span>
</DropdownItem>
</DropdownMenu>
</Dropdown>
</span>
</template> </template>
<script> <script>
import { mapState, mapActions } from 'vuex'; import { mapState, mapActions } from "vuex";
export default { export default {
name: 'iHeaderUser', name: "iHeaderUser",
computed: { computed: {
...mapState('admin/user', [ ...mapState("admin/user", ["info"]),
'info' ...mapState("admin/layout", ["isMobile", "logoutConfirm"])
]), },
...mapState('admin/layout', [ methods: {
'isMobile', ...mapActions("admin/account", ["logout"]),
'logoutConfirm' handleClick(name) {
]) if (name === "logout") {
}, this.logout({
methods: { confirm: this.logoutConfirm,
...mapActions('admin/account', [ vm: this
'logout' });
]), }
handleClick (name) {
if (name === 'logout') {
this.logout({
confirm: this.logoutConfirm,
vm: this
});
}
}
}
} }
}
};
</script> </script>
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
<i-header-search v-if="(showSearch && isMobile) || (showSearch && (headerMenu || showBreadcrumb))" /> <i-header-search v-if="(showSearch && isMobile) || (showSearch && (headerMenu || showBreadcrumb))" />
<i-menu-head v-if="headerMenu && isMobile" /> <i-menu-head v-if="headerMenu && isMobile" />
<i-header-log v-if="isDesktop && showLog" /> <i-header-log v-if="isDesktop && showLog" />
<i-header-bug />
<i-header-fullscreen v-if="isDesktop && showFullscreen" /> <i-header-fullscreen v-if="isDesktop && showFullscreen" />
<i-header-notice v-if="showNotice" /> <i-header-notice v-if="showNotice" />
<i-header-user /> <i-header-user />
...@@ -54,6 +55,7 @@ ...@@ -54,6 +55,7 @@
import iHeaderBreadcrumb from './header-breadcrumb'; import iHeaderBreadcrumb from './header-breadcrumb';
import iHeaderSearch from './header-search'; import iHeaderSearch from './header-search';
import iHeaderLog from './header-log'; import iHeaderLog from './header-log';
import iHeaderBug from './header-bug';
import iHeaderFullscreen from './header-fullscreen'; import iHeaderFullscreen from './header-fullscreen';
import iHeaderNotice from './header-notice'; import iHeaderNotice from './header-notice';
import iHeaderUser from './header-user'; import iHeaderUser from './header-user';
...@@ -69,7 +71,7 @@ ...@@ -69,7 +71,7 @@
export default { export default {
name: 'BasicLayout', name: 'BasicLayout',
components: { iMenuHead, iMenuSide, iCopyright, iHeaderLogo, iHeaderCollapse, iHeaderReload, iHeaderBreadcrumb, iHeaderSearch, iHeaderUser, iHeaderI18n, iHeaderLog, iHeaderFullscreen, iHeaderSetting, iHeaderNotice, iTabs }, components: { iMenuHead, iMenuSide, iCopyright, iHeaderLogo, iHeaderCollapse, iHeaderReload, iHeaderBreadcrumb, iHeaderSearch, iHeaderUser, iHeaderI18n, iHeaderLog, iHeaderFullscreen, iHeaderSetting, iHeaderNotice, iTabs,iHeaderBug },
data () { data () {
return { return {
showDrawer: false, showDrawer: false,
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
<div class="page-account-top-logo"> <div class="page-account-top-logo">
<img src="@/assets/images/logo.png" alt="logo" /> <img src="@/assets/images/logo.png" alt="logo" />
</div> </div>
<div class="page-account-top-desc">iView Admin Pro 企业级中台前端/设计解决方案</div> <div class="page-account-top-desc">SaaS MES 制造执行系统</div>
</div> </div>
<Login @on-submit="handleSubmit"> <Login @on-submit="oidc">
<UserName name="username" value="admin" /> <UserName name="username" value="admin" />
<Password name="password" value="admin" enter-to-submit /> <Password name="password" value="admin" enter-to-submit />
<div class="page-account-auto-login"> <div class="page-account-auto-login">
...@@ -20,14 +20,14 @@ ...@@ -20,14 +20,14 @@
<Submit>{{ $t('page.login.submit') }}</Submit> <Submit>{{ $t('page.login.submit') }}</Submit>
</Login> </Login>
<div class="page-account-other"> <div class="page-account-other">
<span>{{ $t('page.login.other') }}</span> <!-- <span>{{ $t('page.login.other') }}</span>
<img src="@/assets/svg/icon-social-wechat.svg" alt="wechat" /> <img src="@/assets/svg/icon-social-wechat.svg" alt="wechat" />
<img src="@/assets/svg/icon-social-qq.svg" alt="qq" /> <img src="@/assets/svg/icon-social-qq.svg" alt="qq" />
<img src="@/assets/svg/icon-social-weibo.svg" alt="weibo" /> <img src="@/assets/svg/icon-social-weibo.svg" alt="weibo" /> -->
<router-link class="page-account-register" to="./register">{{ $t('page.login.signup') }}</router-link> <!-- <router-link class="page-account-register" to="./register">{{ $t('page.login.signup') }}</router-link> -->
</div> </div>
</div> </div>
<i-copyright /> <!-- <i-copyright /> -->
</div> </div>
</template> </template>
<script> <script>
...@@ -47,30 +47,37 @@ export default { ...@@ -47,30 +47,37 @@ export default {
}; };
}, },
created() { created() {
let that = this; // this.oidc();
mgr.getUser().then(function(user) {
if (user) {
that.msg = "该用户已经登录";
const userInfos = {
token: user.access_token,
login_id: user.profile.name,
userId:user.profile["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"],
accountId: user.profile.sub,
tanantCode: user.profile.TanantCode,
name: "Aresn",
avatar:"https://dev-file.iviewui.com/userinfoPDvn9gKWYihR24SpgC319vXY8qniCqj4/avatar",
access: ["admin"]
};
// that.$store.commit('setUserInfo',userInfos);
that.oidcLogin(userInfos);
window.location = "/";
} else {
mgr.signinRedirect();
}
});
}, },
methods: { methods: {
...mapActions("admin/account", ["login"]), ...mapActions("admin/account", ["login"]),
oidc() {
let that = this;
mgr.getUser().then(function(user) {
if (user) {
that.msg = "该用户已经登录";
const userInfos = {
token: user.access_token,
login_id: user.profile.name,
userId:
user.profile[
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"
],
accountId: user.profile.sub,
tanantCode: user.profile.TanantCode,
name: "Aresn",
avatar:
"https://dev-file.iviewui.com/userinfoPDvn9gKWYihR24SpgC319vXY8qniCqj4/avatar",
access: ["admin"]
};
// that.$store.commit('setUserInfo',userInfos);
that.oidcLogin(userInfos);
window.location = "/";
} else {
mgr.signinRedirect();
}
});
},
/** /**
* @description 登录 * @description 登录
* 表单校验已有 iView Pro 自动完成,如有需要修改,请阅读 iView Pro 文档 * 表单校验已有 iView Pro 自动完成,如有需要修改,请阅读 iView Pro 文档
...@@ -94,7 +101,7 @@ export default { ...@@ -94,7 +101,7 @@ export default {
this.$store.dispatch("admin/user/set", user, { root: true }); this.$store.dispatch("admin/user/set", user, { root: true });
// 用户登录后从持久化数据加载一系列的设置 // 用户登录后从持久化数据加载一系列的设置
this.$store.dispatch("load"); this.$store.dispatch("load");
this.$store.commit('setUserInfo',user); this.$store.commit("setUserInfo", user);
} }
} }
}; };
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import util from '@/libs/util'; import util from '@/libs/util';
// import router from '@/router'; // import router from '@/router';
import { AccountLogin, AccountRegister } from '@/api/account'; import { AccountLogin, AccountRegister } from '@/api/account';
import Oidc from 'oidc-client'
import { Modal } from 'view-design'; import { Modal } from 'view-design';
export const actions={ export const actions={
/** /**
...@@ -51,7 +51,8 @@ export const actions={ ...@@ -51,7 +51,8 @@ export const actions={
* @description 退出登录 * @description 退出登录
* */ * */
logout ({ commit, dispatch }, { confirm = false, vm } = {}) { logout ({ commit, dispatch }, { confirm = false, vm } = {}) {
async function logout () { var mgr = new Oidc.UserManager(window.authConfig)
async function logout () {
// 删除cookie // 删除cookie
util.cookies.remove('token'); util.cookies.remove('token');
util.cookies.remove('uuid'); util.cookies.remove('uuid');
...@@ -59,6 +60,13 @@ export const actions={ ...@@ -59,6 +60,13 @@ export const actions={
await dispatch('admin/user/set', {}, { root: true }); await dispatch('admin/user/set', {}, { root: true });
// 跳转路由 // 跳转路由
// alert(123) // alert(123)
window.frames[0].sessionStorage.clear()
sessionStorage.clear()
mgr.events.addUserSignedOut(function() {
log('User signed out of OP')
mgr.removeUser()
})
$nuxt.$router.push("/account/login"); $nuxt.$router.push("/account/login");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment