| | |
| | | CryptoJS.enc.Utf8.parse(base64Decode('QSNzX2xGX3NFcnZlX2sueQ==')), |
| | | { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 } |
| | | ).toString(); |
| | | } |
| | | |
| | | // 查询当前用户的权限授权实体集合 |
| | | export function getPerms() { |
| | | return request.get('perms/selectPermsEntity'); |
| | | } |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { logout } from '@/api/api'; |
| | | import { removeToken, getToken } from '@/utils/auth'; |
| | | import customElMenu from '../components/customElMenu.vue'; |
| | | import { queryMenuTree, updateMenuTree, queryMaxId } from '../api/api'; |
| | | import { logout } from "@/api/api"; |
| | | import { removeToken, getToken } from "@/utils/auth"; |
| | | import customElMenu from "../components/customElMenu.vue"; |
| | | import { queryMenuTree, getPerms } from "../api/api"; |
| | | |
| | | export default { |
| | | name: 'navMenu', |
| | | name: "navMenu", |
| | | //import引入的组件需要注入到对象中才能使用 |
| | | components: { |
| | | customElMenu, |
| | |
| | | oriData: [], //原始树数据 |
| | | dirData: [], //el树数据 |
| | | newData: [], //拖动后数据 |
| | | lang: 'zh', |
| | | activeIndex: '/', |
| | | lang: "zh", |
| | | activeIndex: "/", |
| | | menuList: [], |
| | | editTitle: '', |
| | | editTitle: "", |
| | | showPopover: false, |
| | | showEditInfoWrapper: false, |
| | | showEdit: false, |
| | |
| | | editCatalogue: false, |
| | | editUnit: false, |
| | | itemdetail: {}, |
| | | formLabelWidth: '70px', |
| | | formLabelWidth: "70px", |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.getMenuTree(); |
| | | this.getUserPerms(); |
| | | }, |
| | | computed: { |
| | | // 我们使用计算属性来获取到当前点击的菜单的路由路径,然后设置default-active中的值 |
| | |
| | | }); |
| | | this.menuList = this.treeData(menuLists); |
| | | } else { |
| | | alert('暂无菜单栏数据'); |
| | | alert("暂无菜单栏数据"); |
| | | } |
| | | } else { |
| | | console.log('接口报错'); |
| | | console.log("接口报错"); |
| | | } |
| | | }); |
| | | }, |
| | |
| | | return cloneData.filter((father) => { |
| | | // 循环所有项 |
| | | let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据 |
| | | branchArr.length > 0 ? (father.children = branchArr) : ''; // 给父级添加一个children属性,并赋值 |
| | | branchArr.length > 0 ? (father.children = branchArr) : ""; // 给父级添加一个children属性,并赋值 |
| | | // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c , 那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2; |
| | | // 由此循环多次后,就能形成相应的树形数据结构 |
| | | return father.pid == 1; // 返回一级菜单 |
| | | }); |
| | | } else { |
| | | alert('暂无菜单栏数据'); |
| | | alert("暂无菜单栏数据"); |
| | | } |
| | | }, |
| | | logOut() { |
| | | this.$confirm('确认是否退出登录?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | this.$confirm("确认是否退出登录?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(async () => { |
| | | const data = await logout({ token: getToken() }); |
| | | console.log(data); |
| | | if (data.code != 200) { |
| | | return this.$message.error('退出登录失败'); |
| | | return this.$message.error("退出登录失败"); |
| | | } |
| | | removeToken(); |
| | | this.$router.push('/login'); |
| | | this.$router.push("/login"); |
| | | this.$message({ |
| | | message: '退出登录成功', |
| | | type: 'success', |
| | | message: "退出登录成功", |
| | | type: "success", |
| | | }); |
| | | }) |
| | | .catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已取消', |
| | | type: "info", |
| | | message: "已取消", |
| | | }); |
| | | }); |
| | | }, |
| | | switchLang() { |
| | | //当前en |
| | | if (this.lang == 'en') { |
| | | if (this.lang == "en") { |
| | | //语言换成zh |
| | | this.lang = 'zh'; |
| | | this.lang = "zh"; |
| | | //菜单换为zh |
| | | this.$store.commit('changeLang', 'zh'); |
| | | this.$store.commit("changeLang", "zh"); |
| | | //i18换成zh |
| | | this.$i18n.locale = this.lang; |
| | | } |
| | | //当前zh |
| | | else { |
| | | this.lang = 'en'; |
| | | this.lang = "en"; |
| | | this.$i18n.locale = this.lang; |
| | | this.$store.commit('changeLang', 'en'); //传递点击的节点 |
| | | this.$store.commit("changeLang", "en"); //传递点击的节点 |
| | | } |
| | | }, |
| | | handleselect(index, indexPath) { |
| | | if (Window.ws != null) { |
| | | Window.ws.close(); |
| | | Window.ws.onclose = () => { |
| | | console.log('服务器关闭'); |
| | | console.log("服务器关闭"); |
| | | }; |
| | | Window.ws = null; |
| | | } |
| | | |
| | | if (index.indexOf('http') != -1) { |
| | | this.$router.push('/databaseMonitoring'); |
| | | this.$store.commit('getIframe', index); |
| | | if (index.indexOf("http") != -1) { |
| | | this.$router.push("/databaseMonitoring"); |
| | | this.$store.commit("getIframe", index); |
| | | } else if (isNaN(Number(index))) { |
| | | this.$router.push(index); |
| | | } |
| | | }, |
| | | getUserPerms() { |
| | | getPerms().then((res) => { |
| | | this.$commit("getPermsEntity", res.result); |
| | | }); |
| | | }, |
| | | }, |
| | | watch: { |
| | | $route() { |
| | | let str = this.$route.path; |
| | | if (str[0] == '/') { |
| | | if (str[0] == "/") { |
| | | this.activeIndex = str.slice(1); |
| | | } |
| | | }, |
| | | }, |
| | | created() { |
| | | let str = this.$route.path; |
| | | if (str[0] == '/') { |
| | | if (str[0] == "/") { |
| | | this.activeIndex = str.slice(1); |
| | | } |
| | | }, |
| | |
| | | key: null, |
| | | //系统监控WebSocket |
| | | ws: null, |
| | | //权限合集 |
| | | permsEntity: [], |
| | | }, |
| | | mutations: { |
| | | //获取权限合集 |
| | | getPermsEntity() { |
| | | state.permsEntity = msg |
| | | }, |
| | | // 获取完整面包屑路径 |
| | | changeCata(state, msg) { |
| | | state.catalogueName = msg; |
| | |
| | | |
| | | <script> |
| | | import { |
| | | queryMetaData, |
| | | select_meta_ByPageAndCount, |
| | | // queryDataCount, |
| | | updateMetaData, |
| | | dltMetaDatas, |
| | |
| | | pageIndex: num, |
| | | pageSize: size, |
| | | }; |
| | | queryMetaData(params).then((res) => { |
| | | select_meta_ByPageAndCount(params).then((res) => { |
| | | // console.log(res); |
| | | this.tableData = res.result; |
| | | this.count = res.count; |