{"remainingRequest":"D:\\jenkins\\workspace\\bbsl-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\bbsl-fvue\\src\\components\\layout\\Navigator.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\bbsl-fvue\\src\\components\\layout\\Navigator.vue","mtime":1685516745611},{"path":"D:\\jenkins\\workspace\\bbsl-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\bbsl-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bbsl-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport HtAvatar from '@/components/common/HtAvatar.vue'\r\nimport WarningDialog from './warning/WarningDialog.vue'\r\nimport {mapState} from 'vuex'\r\nimport {Base64} from 'js-base64'\r\nimport req from '@/request.js'\r\nimport menu from '@/api/menu.js'\r\nimport projectMessageDrawer from '@/components/message/projectMessageDrawer'\r\nimport uc from '@/api/uc.js'\r\nimport indexApi from '@/api/frontScreen/index.js'\r\nconst weatherImage = {\r\n 晴: 'yintian',\r\n 多云: 'duoyun',\r\n 阴: 'yintian',\r\n 霾: 'wumai',\r\n 雷阵雨: 'leizhenyu',\r\n 雨: 'xiaoyu',\r\n 小雨: 'xiaoyu',\r\n 中雨: 'zhongyu',\r\n 大雨: 'dayu',\r\n 暴雨: 'baoyu',\r\n 大暴雨: 'dabaoyu',\r\n '中雨-大雨': 'zhongyuzhuandayu',\r\n '小雨-中雨': 'zhongyuzhuandayu',\r\n '大雨-暴雨': 'zhongyuzhuandayu',\r\n '暴雨-大暴雨': 'zhongyuzhuandayu',\r\n 风: 'dafeng',\r\n 其他: 'dawu',\r\n}\r\nexport default {\r\n name: 'navigator',\r\n components: {HtAvatar, WarningDialog},\r\n props: ['menuShow', 'showTopMenu', 'menuStyle'],\r\n data() {\r\n var validateNew = (rule, value, callback) => {\r\n if (value === '') {\r\n callback(new Error('请输入新密码'))\r\n }\r\n let config = this.pwdStrategy\r\n if (config.enable == 1) {\r\n let pwdRule = config.pwdRule\r\n let pwdLength = config.pwdLength\r\n if (pwdRule) {\r\n if (value.length < pwdLength) {\r\n callback(new Error('新密码长度至少为' + pwdLength))\r\n } else if (pwdRule == 2) {\r\n var re = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])')\r\n if (!re.test(value)) {\r\n callback(new Error('新密码必须包含数字、字母'))\r\n } else {\r\n callback()\r\n }\r\n } else if (pwdRule == 3) {\r\n var re = new RegExp(\r\n '(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9])'\r\n )\r\n if (!re.test(value)) {\r\n callback(\r\n new Error('新密码必须包含数字、字母、特殊字符')\r\n )\r\n } else {\r\n callback()\r\n }\r\n } else if (pwdRule == 4) {\r\n var re = new RegExp(\r\n '(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9])'\r\n )\r\n if (!re.test(value)) {\r\n callback(\r\n new Error(\r\n '新密码必须包含数字、大小字母、特殊字符'\r\n )\r\n )\r\n } else {\r\n callback()\r\n }\r\n } else {\r\n callback()\r\n }\r\n }\r\n } else {\r\n if (value.length < 6) {\r\n callback(new Error('新密码长度至少为6'))\r\n } else {\r\n callback()\r\n }\r\n }\r\n }\r\n var validateold = (rule, value, callback) => {\r\n if (value === '') {\r\n callback(new Error('请输入旧密码'))\r\n } else {\r\n callback()\r\n }\r\n }\r\n var validateNewReapeat = (rule, value, callback) => {\r\n if (value === '') {\r\n callback(new Error('请再次输入新密码'))\r\n } else {\r\n callback()\r\n }\r\n }\r\n return {\r\n // 报警个数统计\r\n WarningNum: '',\r\n WarningData: [],\r\n weatherImage: weatherImage,\r\n weatherToday: {},\r\n messageList: [],\r\n messnum: '',\r\n logo: '',\r\n bizUrl: '',\r\n showLogo: true,\r\n styleSettingDialogVisible: false,\r\n styleSetting: {\r\n tabsStyle: {\r\n tabPosition: 'top',\r\n tabType: 'border-card',\r\n },\r\n elementUI: {\r\n theme: 'day-theme',\r\n },\r\n },\r\n searchWork: '',\r\n searchMenus: [],\r\n infoDialogVisible: false,\r\n modifyPwdDialogVisible: false,\r\n pwdForm: {\r\n old: '',\r\n new: '',\r\n newRepeat: '',\r\n },\r\n pwdRules: {\r\n old: [{validator: validateold, trigger: 'blur'}],\r\n new: [{validator: validateNew, trigger: 'blur'}],\r\n newRepeat: [{validator: validateNewReapeat, trigger: 'blur'}],\r\n },\r\n isIeExplorer: false,\r\n sysPath: '',\r\n platName: '管理平台',\r\n activeIndex: '',\r\n // frontMenus: [],\r\n currentMenu: '',\r\n //-----------------静态菜单\r\n staticMenu: [\r\n {key: 'gis', name: '水利一张图', icon: 'guojihua'},\r\n {\r\n key: 'waterSurvey',\r\n name: '单位概况',\r\n icon: 'performance',\r\n },\r\n {\r\n key: 'index',\r\n name: '监测预警',\r\n icon: 'performance',\r\n },\r\n {key: 'videoMonitor', name: '视频监控', icon: 'view'},\r\n {\r\n key: 'digitalReservoir',\r\n name: '智慧水库',\r\n icon: 'icon_leftnav_wodechengguo',\r\n },\r\n {key: 'bizPlat', name: '业务管理', icon: 'business'},\r\n ],\r\n //-----------------静态菜单\r\n }\r\n },\r\n created() {\r\n this.getWeather()\r\n this.getUnread()\r\n this.getBizUrl()\r\n this.getAllWarning()\r\n let USER_AGENT = navigator.userAgent.toLowerCase()\r\n let isChrome = /.*(chrome)\\/([\\w.]+).*/\r\n if (!isChrome.test(USER_AGENT)) {\r\n this.isIeExplorer = true\r\n }\r\n this.activePage()\r\n },\r\n mounted() {\r\n //自动刷新获取数据(1000*60*10=>毫秒*秒*分钟,此时表示为10分钟)\r\n this.refreshData = setInterval(() => {\r\n this.getAllWarning()\r\n }, 1000 * 60 * 10)\r\n },\r\n beforeMount() {\r\n // let arr = window.location.pathname.split('/')\r\n // let num = arr.length\r\n // this.currentMenu = arr[num - 1]\r\n },\r\n //生命周期若已设置定时器,需清空定时器beforeDestroy()\r\n beforeDestroy() {\r\n clearInterval(this.refreshData)\r\n this.refreshData = null\r\n },\r\n computed: {\r\n ...mapState({\r\n sysMenus: (state) => state.menu.sysMenus,\r\n currentUser: (state) => state.user.currentUserDetail,\r\n token: (state) => state.login.currentUser.token,\r\n frontUrl: function () {\r\n if (\r\n this.currentUser &&\r\n this.currentUser.user &&\r\n this.currentUser.user.account &&\r\n (!window.ssoConfig.mode || window.ssoConfig.mode == 'jwt')\r\n ) {\r\n return `${this.bizUrl}?token= ` + this.token\r\n } else {\r\n return this.bizUrl\r\n // return this.bizUrl ? this.bizUrl : `${window.context.front}`\r\n }\r\n },\r\n mobileUrl: function () {\r\n if (\r\n this.currentUser &&\r\n this.currentUser.user &&\r\n this.currentUser.user.account &&\r\n (!window.ssoConfig.mode || window.ssoConfig.mode == 'jwt')\r\n ) {\r\n return `${window.context.mobile}?token= ` + this.token\r\n } else {\r\n return `${window.context.mobile}`\r\n }\r\n },\r\n pwdStrategy: (state) => state.user.pwdStrategy,\r\n userType: function () {\r\n if (this.currentUser && this.currentUser.user) {\r\n return this.currentUser.user.userType\r\n }\r\n },\r\n frontMenus: (state) => {\r\n return state.menu.frontMenus\r\n },\r\n currentMenu_() {\r\n return\r\n },\r\n }),\r\n },\r\n watch: {\r\n styleSetting: {\r\n handler: function (val, oldval) {\r\n let str = JSON.stringify(val)\r\n localStorage.setItem('styleSetting', str)\r\n this.$store.dispatch(\r\n 'styleSetting/actionStyleSetting',\r\n JSON.parse(str)\r\n )\r\n },\r\n deep: true, //对象内部的属性监听,也叫深度监听\r\n },\r\n $route: 'activePage',\r\n },\r\n methods: {\r\n // 查询所有报警数据\r\n getAllWarning() {\r\n indexApi.allWarningList({}, (res) => {\r\n this.WarningNum = res.value.count\r\n this.WarningData = res.value.list\r\n })\r\n },\r\n ShowWarning() {\r\n this.$refs.WarningDialog.open(this.WarningData)\r\n },\r\n showPopper() {\r\n this.$nextTick(() => {\r\n let size = this.$refs.headerPopper.getBoundingClientRect()\r\n this.$bus.$emit('showPopper', size)\r\n })\r\n },\r\n hidePopper() {\r\n this.$bus.$emit('hidePopper')\r\n },\r\n getWeather() {\r\n indexApi.getWeather((data) => {\r\n console.log(data, '天气', weatherImage)\r\n // this.weatherThreeDays = data.forecasts[0].casts.slice(0, 3)\r\n this.weatherToday = data.forecasts[0].casts[0]\r\n // console.log(this.weather, '天气')\r\n // this.formatIcon()\r\n })\r\n },\r\n toHaikang() {\r\n indexApi.haiKang((res) => {\r\n if (res.state) {\r\n window.open(res.message)\r\n }\r\n })\r\n },\r\n tojumping() {\r\n window.open('http://183.230.17.146:8011/jumping')\r\n },\r\n handleClickMenu(item) {\r\n let path = ''\r\n let firstMenu = this.frontMenus[0]\r\n if (firstMenu.children.length !== 0) {\r\n let firstPath = firstMenu.alias\r\n let childrens = firstMenu.children\r\n let subPath = childrens[0].alias\r\n if (\r\n childrens[0].children &&\r\n childrens[0].children.length !== 0\r\n ) {\r\n let threeChildrens = childrens[0].children\r\n let threePath = threeChildrens[0].alias\r\n path =\r\n '/bizPlat/' +\r\n firstPath +\r\n '/' +\r\n subPath +\r\n '/' +\r\n threePath\r\n } else {\r\n path = '/bizPlat/' + firstPath + '/' + subPath + '/'\r\n }\r\n } else {\r\n path = '/bizPlat/' + firstPath\r\n }\r\n if (item.key == 'bizPlat') {\r\n const {href} = this.$router.resolve({\r\n path,\r\n })\r\n window.open(href, '_blank', console.log(href))\r\n } else {\r\n this.$router.push('/frontPlat/' + item.key)\r\n }\r\n },\r\n activePage() {\r\n let fullPath = this.$route.path\r\n let path = fullPath.split('/')\r\n let urlAnchor = path[path.indexOf('frontPlat') + 1]\r\n this.currentMenu = urlAnchor\r\n },\r\n changeMenu(item) {\r\n if (item.name === '信息管理') {\r\n let a = item.children[0].children[0].href\r\n this.$router.push('/frontPlat/' + a)\r\n }\r\n let hasSideMenu = item.children.length ? true : false\r\n this.$emit('update:menuShow', hasSideMenu)\r\n this.currentMenu = item.alias\r\n if (item.children.length !== 0 && item.alias !== 'cockpit') {\r\n let childrens = item.children\r\n let path = childrens[0].alias\r\n this.$router.push('/frontPlat/' + path)\r\n } else {\r\n this.$router.push('/frontPlat/' + item.alias)\r\n this.currentMenu = item.alias\r\n }\r\n },\r\n // ----------------------\r\n goIndex() {\r\n this.$router.push({\r\n path: `/frontPlat/cockpit`,\r\n })\r\n },\r\n handleSysPlat() {\r\n if (!this.sysMenus.length) {\r\n this.$store.dispatch('menu/actionSysMenus').then((res) => {\r\n if (res) {\r\n window.open(\r\n window.context.manage +\r\n // \"http://localhost:8081/mvue\"+\r\n '/sysplat/' +\r\n `${this.sysMenus[0].children[0].alias}` +\r\n '?token=' +\r\n this.token,\r\n '_blank'\r\n )\r\n }\r\n })\r\n } else {\r\n window.open(\r\n window.context.manage +\r\n // \"http://localhost:8081/mvue\"+\r\n '/sysplat/' +\r\n `${this.sysMenus[0].children[0].alias}` +\r\n '?token=' +\r\n this.token,\r\n '_blank'\r\n )\r\n }\r\n },\r\n readload(val) {\r\n this.getUnread()\r\n },\r\n getUnread() {\r\n uc.messagelist().then((res) => {\r\n this.messageList = res.data.rows\r\n if (res.data.rows.length > 0) {\r\n this.messnum = res.data.rows.length\r\n } else {\r\n this.messnum = ''\r\n }\r\n })\r\n },\r\n getBizUrl() {\r\n this.$http\r\n .get(\r\n '${portal}/sys/sysProperties/v1/getByAlias?alias=biz.url',\r\n {\r\n responseType: 'text',\r\n }\r\n )\r\n .then((res) => {\r\n this.bizUrl = res.data\r\n })\r\n },\r\n showDrawer() {\r\n this.$refs.messageDrawer.drawer = true\r\n },\r\n\r\n submitForm() {\r\n let this_ = this\r\n this.$refs['pwdForm'].validate((valid) => {\r\n if (valid) {\r\n this.$http\r\n .post('${uc}/api/user/v1/user/changUserPsd', {\r\n oldPwd: this.pwdForm.old,\r\n newPwd: this.pwdForm.new,\r\n })\r\n .then((resp) => {\r\n let data = resp.data\r\n if (data && data.state) {\r\n this.modifyPwdDialogVisible = false\r\n this.$alert(\r\n '修改密码成功, 请使用新密码重新登录。',\r\n '提示',\r\n {\r\n confirmButtonText: '确定',\r\n callback: (action) => {\r\n //退出登录\r\n this_.logout()\r\n },\r\n }\r\n )\r\n }\r\n })\r\n }\r\n })\r\n },\r\n openInfoDialog() {\r\n this.$router.push({\r\n path: '/frontPlat/personMenus/personInfo',\r\n })\r\n this.$refs.frontMenu.activeIndex = ''\r\n // this.infoDialogVisible = true\r\n },\r\n openResetPwdDialog() {\r\n this.$store.dispatch('user/getDefPwdStrategy')\r\n this.modifyPwdDialogVisible = true\r\n if (this.$refs['pwdForm']) {\r\n this.$refs['pwdForm'].resetFields()\r\n }\r\n },\r\n openPersonalCenter() {\r\n this.$router.push({\r\n path: '/frontPlat/PersonalInfo',\r\n })\r\n },\r\n handleMenuCollapse() {\r\n this.$bus.$emit('frontMenuShow', !this.menuShow)\r\n },\r\n logout() {\r\n this.$store.dispatch('menu/clearMenus')\r\n this.$store.dispatch('user/clearUser')\r\n this.$store.dispatch('menu/setCopyMenus', []) //菜单\r\n let loginRouthPath =\r\n localStorage.getItem(\r\n this.$store.state.login.currentUser.account +\r\n 'loginRoutePath'\r\n ) || '/login'\r\n this.$store.dispatch('login/logoutAndCleanUp').then(() => {\r\n switch (window.ssoConfig.mode) {\r\n case 'cas':\r\n case 'oauth':\r\n window.sessionStorage.removeItem('currentUser')\r\n window.location.href =\r\n window.ssoConfig.logout +\r\n '?service=' +\r\n window.location.href.split('?')[0]\r\n break\r\n default:\r\n this.$router.push({\r\n path: loginRouthPath,\r\n })\r\n break\r\n }\r\n })\r\n },\r\n handleStyleSettingDialog() {\r\n let styleSetting = localStorage.getItem('styleSetting')\r\n if (styleSetting && styleSetting != 'null') {\r\n this.styleSetting = JSON.parse(styleSetting)\r\n }\r\n this.styleSettingDialogVisible = true\r\n },\r\n handleStyleSettingDialogClose() {\r\n this.styleSettingDialogVisible = false\r\n this.infoDialogVisible = false\r\n this.modifyPwdDialogVisible = false\r\n },\r\n querySearch(queryString, cb) {\r\n // 查询出二级三级的菜单\r\n let menus = []\r\n menus = [...this.menus]\r\n if (queryString) {\r\n this.searchMenus = []\r\n this.preFilterMenus(this.menus, queryString)\r\n } else {\r\n this.searchMenus = menus\r\n }\r\n // 调用 callback 返回建议列表的数据\r\n this.searchMenus = this.searchMenus.unique('alias')\r\n cb(this.searchMenus)\r\n },\r\n preFilterMenus(menus, queryString) {\r\n if (menus instanceof Array) {\r\n menus.forEach((x) => {\r\n this.filterMenus(x, queryString)\r\n })\r\n } else {\r\n this.filterMenus(menus, queryString, true)\r\n }\r\n },\r\n filterMenus(x, queryString, isComponent) {\r\n if (x.children) {\r\n let r = x.children.filter((menu) => {\r\n this.preFilterMenus(menu, queryString)\r\n return (\r\n menu.name\r\n .toLowerCase()\r\n .indexOf(queryString.toLowerCase()) != -1 ||\r\n menu.alias\r\n .toLowerCase()\r\n .indexOf(queryString.toLowerCase()) != -1\r\n )\r\n })\r\n if (r && r.length >= 1) {\r\n r.forEach((y) => {\r\n if (isComponent) {\r\n y.parentComponent = x\r\n }\r\n this.searchMenus.push(y)\r\n })\r\n }\r\n }\r\n },\r\n handleSelect(item) {\r\n if (!item.parentComponent) {\r\n this.$router.push({path: `/${item.alias}`})\r\n } else {\r\n this.$router.push({\r\n path: `/${item.parentComponent.alias}#${item.alias}`,\r\n })\r\n }\r\n },\r\n // 选择菜单调用函数\r\n handleMenuSelect(path, isJump) {\r\n let alias\r\n let _this = this\r\n if (path && path.indexOf('/frontPlat/href') == -1) {\r\n // url 菜单\r\n let i = path.lastIndexOf('/')\r\n alias = path.slice(i + 1)\r\n } else {\r\n alias = path.replace('/frontPlat/', '')\r\n }\r\n menu.getMenuByAlias(alias, (m) => {\r\n m && _this.$emit('menuChange', m)\r\n if (m && m.openType == '2' && isJump) {\r\n if (m.alias.indexOf('href/') == -1) {\r\n let openPath = '/newOpen/' + m.alias\r\n let routeUrl = this.$router.resolve({path: openPath})\r\n window.open(routeUrl.href, '_blank')\r\n } else {\r\n let tempwindow = window.open()\r\n tempwindow.location = m.href\r\n }\r\n } else if (m && m.parent) {\r\n this.$router.push(path)\r\n this.activeIndex = path\r\n }\r\n })\r\n },\r\n },\r\n mounted() {\r\n !this.currentUser && this.$store.dispatch('user/loadCurrentUserDetail')\r\n const currentUser = this.$store.state.login.currentUser\r\n //菜单显示\r\n this.activeIndex = this.$route.path\r\n //const currentUser = this.$store.state.login.currentUser\r\n if ((!this.frontMenus || this.frontMenus.length == 0) && currentUser) {\r\n this.$store.dispatch('menu/actionFrontMenus').then((data) => {})\r\n }\r\n // this.$bus.$on('frontMenuShow', () => {\r\n // this.handleMenuCollapse()\r\n // })\r\n this.$bus.$on('roterPush', (path) => {\r\n this.activeIndex = path\r\n })\r\n },\r\n filters: {\r\n weekText: (value) => {\r\n let text = '星期'\r\n if (value == 1) {\r\n return text + '一'\r\n } else if (value == 2) {\r\n return text + '二'\r\n } else if (value == 3) {\r\n return text + '三'\r\n } else if (value == 4) {\r\n return text + '四'\r\n } else if (value == 5) {\r\n return text + '五'\r\n } else if (value == 6) {\r\n return text + '六'\r\n } else if (value == 7) {\r\n return text + '七'\r\n }\r\n },\r\n },\r\n}\r\n",null]}