/** * 组件描述:PC顶栏导航下拉菜单 */ import api from '@/api/api' import { httpPost } from '@/api/fetch-api.js' export default { name: "DropDownList", data() { return { activeIndex: 0, sTitle: this.dataObj && this.dataObj.name || '', reloadBlackList: [], listVisible: false, }; }, props: { /** * 导航类型 * nav:普通菜单导航 * login:登陆菜单 * lang:三语切换菜单 */ type: { type: String, default () { return "nav"; } }, /** * 传入菜单完整数据 */ dataObj: { type: Object, default () { return {}; } }, /** * 传入菜单列表 */ dataList: { type: Array, default () { return []; } }, labelProperty: { type: String, default () { return "name"; } } }, directives: { dpl: { bind(el) { el.style.display = "none"; } } }, methods: { onNavHandler() { let path = this.dataObj && this.dataObj.path || ""; if (path) { this.$router.push({ path: path }) } }, onOverHandler(event) { let ul = event.currentTarget.childNodes[1].childNodes[1]; ul.style.display = "block"; this.listVisible = true; }, onOutHandler(event) { let ul = event.currentTarget.childNodes[1].childNodes[1]; ul.style.display = "none"; this.listVisible = false; }, onClickHandler(event, index) { // 隐藏其他 if (this.$refs.ul) { this.$refs.ul.style.display = "none"; } // 选择item this.activeIndex = index; let curData = this.dataList[index]; if (this.type == "lang") { // 如果是语言设置,则设置语言 let lang = curData.value; if (lang != localStorage.getItem('lang')) { localStorage.setItem("lang", lang); if (this.reloadBlackList.indexOf(this.$route.path) >= 0) { window.location.reload(); } else { this.$i18n.locale = lang; this.sTitle = curData.name; this.$root.eventBus.$emit("langChange"); } } } else { let item = curData; let path = item && item.path || ""; this.$root.eventBus.$emit(item.path); if (path) { // console.log("path:", path); // modify if (path == "/custom/service?q=m5") { path = "/clarms" } this.$router.push({ path: path }) } else { let value = item && item.value || null; if (value) { switch (value) { case "login": this.onLoginHandler(); break; case "logout": this.logoutHandler(); break; case "gotoVHIS": // gotoVHIS(this.$i18n.locale); this.$router.push({ path: "/vhis" }); break; } } } } }, onLoginHandler() { this.$root.eventBus.$emit("login"); if (this.$route.name == "login") { return; } else if (this.$route.name == "register" || this.$route.name == "passwordFind") { this.$router.push({ path: "/login" }); } else { let callback = this.$route.fullPath; this.$router.push({ path: "/login?callback=" + callback }); } }, logoutHandler() { this.clearCache(); httpPost({ url: api.logout }).then(() => { this.$store.commit("SET_USER_INFO", null); this.showLogoutTip(); }); }, clearCache() { for (let index = 0; index < sessionStorage.length; index++) { let key = sessionStorage.key(index); console.log(key); sessionStorage.removeItem(key); } }, showLogoutTip() { // 登出后的提示 // alert("登出成功"); }, updateTitle(name) { this.sTitle = name || this.sTitle; } }, computed: { dplLable() { return this.dataList[this.activeIndex][this.labelProperty]; }, locale() { return this.$i18n.locale || "tc"; }, }, created() {}, };