{"version":3,"sources":["webpack:///./src/styles/element-variables.scss","webpack:///./src/utils/menu.js","webpack:///./src/store/modules/app.js","webpack:///./src/store/getters.js","webpack:///./src/store/modules/menu.js","webpack:///./src/store/modules/websiteConfig.js","webpack:///./src/store/index.js","webpack:///./src/App.vue?9931","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/router/sync_router/public.js","webpack:///./src/router/sync_router/index.js","webpack:///./src/router/index.js","webpack:///./src/utils/itrus.js","webpack:///./src/mixins/emitter.js","webpack:///./src/utils/index.js","webpack:///./src/permission.js","webpack:///./src/main.js","webpack:///./src/utils/service.js","webpack:///./src/api/common/index.js","webpack:///./src/qiankun/index.js","webpack:///external \"itrus\""],"names":["module","exports","colorPrimary","permission","appCode","_menuList","menuList","menuArr","JSON","parse","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify___default","forEach","webLink","childrenMenu","arr","Array","i","length","ele","type","hidden","splice","pid","innerIndex","len","innerEle","id","children","push","filter","generateMenuTreeStruct","apply","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_toConsumableArray___default","sortMenu","item","sort","a","b","app","state","sidebar","opened","hiddenSidebar","mutations","TOGGLE_SIDEBAR","data","SIDEBAR_DISPLAYSTATUS","actions","toggleSidebar","_ref","commit","setSidebarDisplayStatus","_ref2","getters","personalInfo","menu","acountList","serviceList","currentUser","consolemoduleList","registerMicroApps","consoleMenulist","microApp","subappMenuList","subappCode","subappPermission","subviewBreadcrumb","hiddenBreadcrumb","subappClassName","mountappLoaded","websiteConfig","config","userUuid","authResult","displayName","username","avatar","phone","email","SET_ACOUNTINFO","user","moduleList","SET_PERSONALINFO","ADD_CONSOLE_MENULIST","ADD_SUBAPP_INFO","ADD_MICROAPP","CLEAR_MICROAPP","CLEAR_SUBAPPINFO","CLEAR_LOGINUSER","SET_SUBVIEWBREADCRUMB","SET_HIDDENSUBVIEWBREADCRUMB","SET_SUBAPP_CLASSNAME","SET_MOUNTAPP_LOADED","SET_SERVICELIST","CLEAR_ACCOUNTLIST","getUserAcountList","_ref3","arguments","undefined","uuid","promise_default","resolve","reject","loadUserAuthority","then","res","companyList","find","isCurrent","catch","err","UpdateUserInfo","_ref4","params","reload","getLoginUser","getUnique","sessionStorage","setItem","clearLoginUser","_ref6","AddConsoleMenu","_ref7","AddBuiltSubappInfo","_ref8","AddSubappInfo","_ref9","AddMicroApp","_ref10","ClearMicroApp","_ref11","clearSubappInformation","_ref12","setSubviewBreadcrumb","_ref13","setHiddenSubviewBreadcrumb","_ref14","setSubappClassName","_ref15","setMountAppLoaded","_ref16","GetServiceList","_ref17","getServerMap","result","themeColor","window","leftBarBackgroundColor","leftBarTextColor","leftBarTextActiveColor","loginEntryPagePath","SET_WEBSITECONFIG","SET_THEMECOLOR","color","setWebsiteConfig","Vue","use","Vuex","store","Store","modules","selectortype_template_index_0_src_App","render","_h","this","$createElement","_c","_self","attrs","staticRenderFns","src_App","__webpack_require__","normalizeComponent","name","ssrContext","syncPublicRouter","path","component","Promise","all","e","bind","redirect","to","query","meta","onWhiteList","title","constantRouter","Router","constantRouterMap","asyncRouterMap","originalPush","prototype","location","call","router","scrollBehavior","y","routes","concat","browser","utils","LIBROOT","APP_CONFIG","configRootPath","components","$itrus","itrus","keys_default","$ie11","ie11","$mobile","mobile","$client","$lib_icon_path","emitter","methods","$$dispatch","componentName","eventName","parent","$parent","$root","$options","$emit","$$broadcast","broadcast","$children","child","prefixPlusZero","val","num","Number","arrayFind","attr","value","generateTree","_ref$arr","_ref$parentId","parentId","_ref$rootId","rootId","_ref$id","_ref$children","customFn","index","parentid","index2","d","childArray","getPreSevenDay","n","timeArr","curDate","Date","dateBefore31","getTime","getFullYear","getzf","getMonth","getDate","parseInt","passwordParse","rules","minLength","maxLength","includeNumber","includeLowercase","includeUppercase","includeSpecialCharacter","lenStr","rulesObj","reg","info","ruleStr","reduce","pre","cur","join","Function","downStreamCheck","blob","core_js_promise_default","reader","FileReader","onload","target","code","Message","message","msg","duration","readAsText","Blob","responseFileName","headers","resultFileName","decodeURI","substring","indexOf","downloadBlob","resource","fileType","fileName","document","createElement","downloadUrl","URL","createObjectURL","anchor","href","download","style","display","body","appendChild","click","revokeObjectURL","removeChild","navigator","msSaveBlob","from","next","_prviate","_currentState","routePathMatchObject","Action","routerState","documentTitle","siteConfig","fn","websiteConf","$getWebsite","$setThemeColor","variables","toLowerCase","dispatch","updateUserInfo","getInitMainAppPermission","match","run","fromPathSignMountApp","signMountApp","_this","asyncToGenerator_default","regenerator_default","mark","_callee","wrap","_context","prev","signMountAppHasRegister","registerSubApps","container","activeRule","stop","noPermission","error","setTimeout","subview","replace","permissionMenu","serviceweb","init","console","log","setState","args","fnName","slice","fnNameStr","matched","fnList","beforeEach","NProgress","start","_callee2","_context2","_x","_x2","_x3","afterEach","done","productionTip","Element","mixin","resultObj","key","$env","process","$builtMountApp","$serviceMountApp","el","watch","$store.getters.subappClassName","o","$nextTick","className","App","template","timeoutState","service","axios","create","baseURL","timeout","Content-Type","platformType","transformRequest","stringify_default","interceptors","request","response","MessageBox","confirm","showClose","showCancelButton","closeOnClickModal","confirmButtonText","top","hideErrorMessage","__webpack_exports__","url","method","loadMicro","_ref$container","props","qiankunContainer","rootDir","entry","appEntry","configuration","sandbox","experimentalStyleIsolation","strictStyleIsolation","loadMicroApp","microApps","beforeLoad","beforeMount","afterUnmount","__WEBPACK_IMPORTED_MODULE_0_vue__","__WEBPACK_IMPORTED_MODULE_1_qiankun__","__WEBPACK_IMPORTED_MODULE_2__store__","loaded","initGlobalState","setGlobalState","onGlobalStateChange","_state$subviewBreadcr","_state$hiddenBreadcru"],"mappings":"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","file":"static/js/app.8137ee2baf2606c6f8bb.js","sourcesContent":["// removed by extract-text-webpack-plugin\nmodule.exports = {\"colorPrimary\":\"#EF473F\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/element-variables.scss\n// module id = +hAf\n// module chunks = 11","/** 根据一维数组权限,生成树状结构数据菜单\r\n * @params {Array} arr 一维权限数组\r\n * @return {Array} 返回树状结构菜单\r\n **/\r\nexport function generateMenuTreeStruct(arr) {\r\n if (arr instanceof Array) {\r\n for (let i = 0; i < arr.length; i++) {\r\n let ele = arr[i];\r\n\r\n if (ele.type == 2 || ele.hidden) {\r\n // 如果当前类型是按钮或者有hidden属性‐不添加到菜单里\r\n arr.splice(i, 1);\r\n i--;\r\n continue;\r\n }\r\n const pid = ele.pid;\r\n\r\n if (typeof pid !== \"undefined\" && pid !== null) {\r\n // 不是根元素\r\n for (let innerIndex = 0, len = arr.length; innerIndex < len; innerIndex++) {\r\n const innerEle = arr[innerIndex];\r\n\r\n if (innerEle.id === pid) {\r\n if (!innerEle.children) {\r\n innerEle.children = [];\r\n }\r\n\r\n innerEle.children.push(ele);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return arr.filter((ele) => typeof ele.pid === \"undefined\" || ele.pid === null);\r\n }\r\n}\r\n/** 根据后端权限返回菜单所需数据\r\n * @params {Array} permission 权限数组\r\n * @params {String} appCode 应用标识\r\n * @return {Array} 返回菜单\r\n **/\r\n\r\nexport function permissionMenu(permission, appCode) {\r\n let menuList = [];\r\n\r\n let menuArr = JSON.parse(JSON.stringify(permission));\r\n\r\n menuArr.forEach((module) => {\r\n module.webLink = `/subview/${appCode}${module.webLink}`;\r\n });\r\n\r\n let childrenMenu = generateMenuTreeStruct(menuArr);\r\n\r\n menuList.push(...childrenMenu);\r\n menuList = sortMenu(menuList);\r\n return menuList;\r\n}\r\n\r\n/** 菜单排序\r\n *\r\n */\r\nexport function sortMenu(arr) {\r\n arr.forEach((item) => {\r\n if (item.children && item.children.length) {\r\n sortMenu(item.children);\r\n }\r\n });\r\n\r\n arr.sort((a, b) => {\r\n return a.sort - b.sort;\r\n });\r\n return arr;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/menu.js","const app = {\r\n state: {\r\n sidebar: {\r\n opened: true,\r\n hiddenSidebar: true\r\n }\r\n },\r\n mutations: {\r\n TOGGLE_SIDEBAR: (state, data) => {\r\n state.sidebar.opened = data;\r\n },\r\n // 设置左侧菜单是否显示或隐藏\r\n SIDEBAR_DISPLAYSTATUS: (state, data) => {\r\n state.sidebar.hiddenSidebar = data;\r\n }\r\n },\r\n actions: {\r\n toggleSidebar({ state, commit }) {\r\n commit(\"TOGGLE_SIDEBAR\", !state.sidebar.opened);\r\n },\r\n // 设置左侧菜单是否显示或隐藏\r\n setSidebarDisplayStatus({ commit }, data) {\r\n commit(\"SIDEBAR_DISPLAYSTATUS\", data);\r\n }\r\n }\r\n};\r\n\r\nexport default app;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/app.js","const getters = {\r\n personalInfo: (state) => state.menu.personalInfo, // 前登陆的用户信息\r\n acountList: (state) => state.menu.acountList, // 账号列表\r\n serviceList: (state) => state.menu.serviceList, // 服务列表\r\n currentUser: (state) => state.menu.currentUser, // 当前登录账号信息\r\n consolemoduleList: (state) => state.menu.consolemoduleList, // 门户权限\r\n registerMicroApps: (state) => state.menu.registerMicroApps, // 门户内置所有子应用appCode\r\n consoleMenulist: (state) => state.menu.consoleMenulist, // 子应用门户列表\r\n microApp: (state) => state.menu.microApp, // 子应用实例\r\n subappMenuList: (state) => state.menu.subappMenuList, // 子应用菜单列表\r\n subappCode: (state) => state.menu.subappCode, // 子应用appcode\r\n subappPermission: (state) => state.menu.subappPermission, // 子应用权限\r\n subviewBreadcrumb: (state) => state.menu.subviewBreadcrumb, // 子应用路由matched\r\n hiddenBreadcrumb: (state) => state.menu.hiddenBreadcrumb, // 子应用面包屑是否显示\r\n subappClassName: (state) => state.menu.subappClassName, // 子应用打包根的class类名\r\n mountappLoaded: (state) => state.menu.mountappLoaded, // 子应用加载完成状态\r\n websiteConfig: (state) => state.websiteConfig.config,\r\n sidebar: (state) => state.app.sidebar\r\n};\r\n\r\nexport default getters;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/getters.js","import { loadUserAuthority, getLoginUser, getServerMap, getUnique } from \"@/api/common\";\r\n\r\nconst menu = {\r\n state: {\r\n acountList: [], // 账号列表信息\r\n serviceList: [], // 服务列表\r\n currentUser: {}, // 当前账号信息\r\n consolemoduleList: [], // 门户权限\r\n registerMicroApps: [], // 门户内置所有子应用appCode\r\n consoleMenulist: [], // 门户菜单\r\n microApp: null, // 子应用实例\r\n subappPermission: [], // 子应用权限\r\n subappMenuList: [], // 子应用菜单\r\n subappCode: \"\", // 子应用appcode\r\n subviewBreadcrumb: [], // 子应用路由matched\r\n hiddenBreadcrumb: true, // 子应用路由面包屑是否展示,默认展示\r\n subappClassName: \"\", // 设置子应用打包根的class类名\r\n personalInfo: {\r\n // 个人中心 信息\r\n userUuid: \"\",\r\n authResult: 0, // 实名结果,0:未实名,1:已实名\r\n displayName: \"\", // 姓名\r\n username: \"\", // 账号\r\n avatar: \"\", // 头像\r\n phone: \"\",\r\n email: \"\"\r\n },\r\n mountappLoaded: false // 子应用是否加载完成\r\n },\r\n mutations: {\r\n // 添加账号列表相关信息\r\n SET_ACOUNTINFO: (state, data) => {\r\n const { acountList, user, registerMicroApps } = data || {};\r\n\r\n state.acountList = acountList || [];\r\n state.currentUser = user || {};\r\n state.consolemoduleList = user.moduleList || [];\r\n state.registerMicroApps = registerMicroApps || [];\r\n },\r\n\r\n // 个人中心信息\r\n SET_PERSONALINFO: (state, data) => {\r\n state.personalInfo = data;\r\n },\r\n\r\n // 添加门户菜单\r\n ADD_CONSOLE_MENULIST: (state, data) => {\r\n state.consoleMenulist = data || [];\r\n },\r\n\r\n // 添加子应用(服务)信息如菜单、appCode等\r\n ADD_SUBAPP_INFO: (state, data) => {\r\n const { permission, menuList, appCode } = data;\r\n\r\n state.subappPermission = permission || [];\r\n state.subappMenuList = menuList || [];\r\n state.subappCode = appCode || \"\";\r\n },\r\n\r\n // 添加子应用qiankun实例\r\n ADD_MICROAPP: (state, data) => {\r\n state.microApp = data;\r\n },\r\n\r\n // 清空子应用qiankun实例\r\n CLEAR_MICROAPP: (state) => {\r\n state.microApp = null;\r\n },\r\n\r\n // 清空子应用数据(菜单、appcode等)\r\n CLEAR_SUBAPPINFO: (state) => {\r\n state.subappPermission = [];\r\n state.subappMenuList = [];\r\n state.subappCode = \"\";\r\n },\r\n\r\n // 清理用户个人信息\r\n CLEAR_LOGINUSER: (state) => {\r\n state.personalInfo = {\r\n userUuid: \"\",\r\n authResult: 0, // 实名结果,0:未实名,1:已实名\r\n displayName: \"\",\r\n username: \"\", // 账号\r\n avatar: \"\", // 头像\r\n phone: \"\",\r\n email: \"\"\r\n };\r\n },\r\n\r\n // 设置子应用matched\r\n SET_SUBVIEWBREADCRUMB: (state, data) => {\r\n state.subviewBreadcrumb = data || [];\r\n },\r\n // 设置子应用面包屑是否展示\r\n SET_HIDDENSUBVIEWBREADCRUMB: (state, data) => {\r\n state.hiddenBreadcrumb = data || false;\r\n },\r\n\r\n // 设置子应用打包根的class类名\r\n SET_SUBAPP_CLASSNAME: (state, data) => {\r\n state.subappClassName = data;\r\n },\r\n\r\n // 设置子应用加载完成状态\r\n SET_MOUNTAPP_LOADED: (state, data) => {\r\n state.mountappLoaded = data || false;\r\n },\r\n\r\n // 设置服务列表\r\n SET_SERVICELIST: (state, data) => {\r\n state.serviceList = data;\r\n },\r\n\r\n // 清空账号列表\r\n CLEAR_ACCOUNTLIST: (state) => {\r\n state.acountList = [];\r\n }\r\n },\r\n actions: {\r\n // 获取账号列表\r\n getUserAcountList({ commit }, { uuid, type, appCode } = {}) {\r\n return new Promise((resolve, reject) => {\r\n loadUserAuthority({ uuid, type, appCode })\r\n .then((res) => {\r\n const acountList = res.data.companyList || []; // 账号列表\r\n const registerMicroApps = res.data.registerMicroApps || []; // 微应用列表\r\n const user = acountList.find((item) => item.isCurrent); // 当前登录用户\r\n\r\n if (appCode == \"operation\") {\r\n commit(\"SET_ACOUNTINFO\", { acountList, user, registerMicroApps });\r\n }\r\n resolve({ user, acountList, registerMicroApps });\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n });\r\n });\r\n },\r\n\r\n // 获取当前登陆的用户信息\r\n UpdateUserInfo({ commit }, data) {\r\n return new Promise((resolve, reject) => {\r\n let params = {};\r\n const { reload } = data || {};\r\n\r\n if (reload) {\r\n params.reload = reload;\r\n }\r\n getLoginUser(params).then((res) => {\r\n if (res && res.data) {\r\n commit(\"SET_PERSONALINFO\", res.data);\r\n }\r\n });\r\n //记录是否开启企业唯一\r\n getUnique().then((res) => {\r\n if (res && res.data) {\r\n sessionStorage.setItem(\"abbreviation\", res.data);\r\n } else {\r\n sessionStorage.setItem(\"abbreviation\", res.data);\r\n }\r\n });\r\n });\r\n },\r\n\r\n // 清理当前登录的用户信息\r\n clearLoginUser({ commit }) {\r\n commit(\"CLEAR_LOGINUSER\");\r\n },\r\n\r\n // 添加门户菜单\r\n AddConsoleMenu({ commit }, data) {\r\n commit(\"ADD_CONSOLE_MENULIST\", data);\r\n },\r\n\r\n // 添加门户内置子应用信息(实名等)\r\n AddBuiltSubappInfo({ commit }, data) {\r\n return new Promise((resolve) => {\r\n commit(\"ADD_BUILTSUBAPP_INFO\", data);\r\n resolve();\r\n });\r\n },\r\n\r\n // 添加子应用(服务)信息如菜单、appCode等\r\n AddSubappInfo({ commit }, data) {\r\n return new Promise((resolve) => {\r\n commit(\"ADD_SUBAPP_INFO\", data);\r\n resolve();\r\n });\r\n },\r\n\r\n // 添加子应用qiankun实例\r\n AddMicroApp({ commit }, data) {\r\n return new Promise((resolve) => {\r\n commit(\"ADD_MICROAPP\", data);\r\n resolve();\r\n });\r\n },\r\n\r\n // 清空子应用qiankun实例\r\n ClearMicroApp({ commit }) {\r\n return new Promise((resolve) => {\r\n commit(\"CLEAR_MICROAPP\");\r\n resolve();\r\n });\r\n },\r\n\r\n // 清空子应用数据(菜单、appcode等)\r\n clearSubappInformation({ commit }) {\r\n return new Promise((resolve) => {\r\n commit(\"CLEAR_SUBAPPINFO\");\r\n resolve();\r\n });\r\n },\r\n\r\n // 设置子应用matched\r\n setSubviewBreadcrumb({ commit }, data) {\r\n commit(\"SET_SUBVIEWBREADCRUMB\", data);\r\n },\r\n\r\n // 设置子应用面包屑是否展示\r\n setHiddenSubviewBreadcrumb({ commit }, data) {\r\n commit(\"SET_HIDDENSUBVIEWBREADCRUMB\", data);\r\n },\r\n\r\n // 设置子应用打包根的class类名\r\n setSubappClassName({ commit }, data) {\r\n commit(\"SET_SUBAPP_CLASSNAME\", data);\r\n },\r\n\r\n // 设置子应用加载完成状态\r\n setMountAppLoaded({ commit }, data) {\r\n commit(\"SET_MOUNTAPP_LOADED\", data);\r\n },\r\n\r\n // 获取服务列表\r\n GetServiceList({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n getServerMap()\r\n .then((res) => {\r\n const result = res.data || [];\r\n\r\n commit(\"SET_SERVICELIST\", result);\r\n resolve(result);\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n });\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport default menu;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/menu.js","const websiteConfig = {\r\n state: {\r\n themeColor: \"\", // 主题色\r\n config: {\r\n window: {\r\n leftBarBackgroundColor: \"\",\r\n leftBarTextColor: \"\",\r\n leftBarTextActiveColor: \"\"\r\n },\r\n loginEntryPagePath: \"\"\r\n } // 网站配置\r\n },\r\n mutations: {\r\n // 网站配置\r\n SET_WEBSITECONFIG: (state, data) => {\r\n state.config = data;\r\n },\r\n // 主题色\r\n SET_THEMECOLOR: (state, color) => {\r\n state.themeColor = color;\r\n }\r\n },\r\n actions: {\r\n // 设置网站配置\r\n setWebsiteConfig({ commit, state }, data) {\r\n return new Promise((resolve, reject) => {\r\n commit(\"SET_WEBSITECONFIG\", data);\r\n commit(\"SET_THEMECOLOR\", data.window.themeColor);\r\n resolve();\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport default websiteConfig;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/websiteConfig.js","import Vue from \"vue\";\r\nimport Vuex from \"vuex\";\r\nimport app from \"./modules/app\";\r\nimport getters from \"./getters\";\r\nimport menu from \"./modules/menu.js\";\r\nimport websiteConfig from \"./modules/websiteConfig.js\"; // 网站配置相关\r\n\r\nVue.use(Vuex);\r\n\r\nconst store = new Vuex.Store({\r\n modules: {\r\n app,\r\n menu,\r\n websiteConfig\r\n },\r\n getters\r\n});\r\n\r\nexport default store;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/index.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"root-app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler?{\"id\":\"data-v-fa632064\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/_vue-loader@13.7.3@vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-fa632064\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/_vue-loader@13.7.3@vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fa632064\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","\r\n\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","const syncPublicRouter = [\r\n {\r\n path: \"/\",\r\n hidden: true,\r\n component: () => import(\"@/views/layout/layout\"),\r\n redirect: { path: \"/signMountApp/login\" }\r\n },\r\n {\r\n path: \"/login\",\r\n hidden: true,\r\n component: () => import(\"@/views/layout/layout\"),\r\n redirect: (to) => {\r\n return {\r\n path: \"/signMountApp/login\",\r\n query: {\r\n ...to.query\r\n }\r\n };\r\n },\r\n meta: {\r\n onWhiteList: true\r\n }\r\n },\r\n {\r\n path: \"/subapp/\", // 产品服务-微服务\r\n name: \"subapp\",\r\n hidden: true,\r\n component: () => import(\"@/views/layout/serviceSubviewLayout\"),\r\n children: [\r\n {\r\n path: \"/subview/*\",\r\n name: \"subview\",\r\n hidden: true,\r\n component: () => import(\"@/views/public/subview/serviceMountApp/index\"),\r\n meta: { title: \"加载中...\", hiddenSidebar: true }\r\n },\r\n {\r\n path: \"/serviceRedirect\",\r\n name: \"serviceRedirect\",\r\n hidden: true,\r\n component: () => import(\"@/views/public/subview/serviceMountApp/redirect\"),\r\n meta: { title: \"加载中...\", hiddenSidebar: true }\r\n },\r\n {\r\n path: \"/home\",\r\n component: () => import(\"@/views/public/dashboard/index.vue\"),\r\n name: \"home\",\r\n meta: {\r\n title: \"home\"\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/serviceSimpleLayout\", // 产品服务-老服务兼容\r\n name: \"serviceSimpleLayout\",\r\n hidden: true,\r\n component: () => import(\"@/views/layout/simpleLayout\"),\r\n children: [\r\n {\r\n path: \"/serviceweb\",\r\n name: \"serviceweb\",\r\n hidden: true,\r\n component: () => import(\"@/views/public/serviceweb/index\"),\r\n meta: { title: \"我的服务\" }\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/signMountAppLayout/\", // 登录微服务\r\n name: \"signMountAppLayout\",\r\n hidden: true,\r\n component: () => import(\"@/views/public/subview/signMountApp/layout\"),\r\n children: [\r\n {\r\n path: \"/signMountApp/*\",\r\n name: \"signMountApp\",\r\n hidden: true,\r\n component: () => import(\"@/views/public/subview/signMountApp/index\"),\r\n meta: { title: \"加载中...\" }\r\n }\r\n ]\r\n }\r\n];\r\n\r\nexport default syncPublicRouter;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/sync_router/public.js","import syncPublicRouter from \"./public.js\";\r\n// import syncSaasRouter from \"./saas.js\";\r\n// import syncFrontRouter from \"./front.js\";\r\nconst constantRouter = [...syncPublicRouter];\r\n\r\n// const syncObj = {\r\n// saas: syncSaasRouter,\r\n// front: syncFrontRouter\r\n// };\r\n\r\n// constantRouter.push(...syncObj[`${process.env.PROJECT_ENV}`]);\r\n\r\nexport default constantRouter;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/sync_router/index.js","import Vue from \"vue\";\r\nimport Router from \"vue-router\";\r\nimport constantRouter from \"./sync_router\"; // 无权限要求路由\r\n// import asyncRouter from \"./async_router\"; // 有权限要求的异步路由\r\n\r\nVue.use(Router);\r\n\r\nexport const constantRouterMap = [...constantRouter];\r\nexport const asyncRouterMap = [\r\n // ...asyncRouter,\r\n // {\r\n // path: \"*\",\r\n // redirect: \"/404\",\r\n // hidden: true\r\n // }\r\n];\r\n// 解决路由重复点击跳转报错问题\r\nconst originalPush = Router.prototype.push;\r\n\r\nRouter.prototype.push = function push(location) {\r\n return originalPush.call(this, location).catch((err) => err);\r\n};\r\n\r\nconst createRouter = () =>\r\n new Router({\r\n scrollBehavior: () => ({\r\n y: 0\r\n }),\r\n routes: constantRouterMap.concat(asyncRouterMap)\r\n });\r\nconst router = createRouter();\r\n\r\nexport default router;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","import Vue from \"vue\";\r\n\r\nimport itrus, { components, utils } from \"itrus\";\r\n\r\nconst { browser } = utils;\r\nconst LIBROOT = window.APP_CONFIG.configRootPath; // lib公用插件路径\r\n\r\ncomponents.forEach((component) => {\r\n Vue.use(component);\r\n});\r\n\r\nVue.prototype.$itrus = itrus;\r\n\r\nObject.keys(utils).forEach((name) => {\r\n Vue.prototype[\"$\" + name] = utils[name];\r\n});\r\n\r\n// 判断是否IE11浏览器\r\nVue.prototype.$ie11 = browser.ie11;\r\n// 客户端是否移动端\r\nVue.prototype.$mobile = browser.mobile;\r\nVue.prototype.$client = browser.mobile ? \"mobile\" : \"pc\";\r\nVue.prototype.$lib_icon_path = LIBROOT + \"/icon/\";\r\n\r\nexport { LIBROOT };\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/itrus.js","/*\r\n * broadcast 事件广播\r\n * @param {componentName} 组件名称\r\n * @param {eventName} 事件名\r\n * @param {params} 参数\r\n * 遍历寻找所有子孙组件,假如子孙组件和componentName组件名称相同的话,则触发$emit的事件方法,数据为 params.\r\n * 如果没有找到 则使用递归的方式 继续查找孙组件,直到找到为止,否则继续递归查找,直到找到最后一个都没有找到为止。\r\n */\r\nfunction broadcast(componentName, eventName, params) {\r\n this.$children.forEach((child) => {\r\n var name = child.$options.name;\r\n\r\n if (name === componentName) {\r\n child.$emit.apply(child, [eventName].concat(params));\r\n } else {\r\n broadcast.apply(child, [componentName, eventName].concat([params]));\r\n }\r\n });\r\n}\r\n\r\n/*\r\n * dispatch 查找所有父级,直到找到要找到的父组件,并在身上触发指定的事件。\r\n * @param { componentName } 组件名称\r\n * @param { eventName } 事件名\r\n * @param { params } 参数\r\n */\r\nfunction dispatch(componentName, eventName, params) {\r\n var parent = this.$parent || this.$root;\r\n var name = parent.$options.name;\r\n\r\n while (parent && (!name || name !== componentName)) {\r\n parent = parent.$parent;\r\n\r\n if (parent) {\r\n name = parent.$options.name;\r\n }\r\n }\r\n if (parent) {\r\n parent.$emit.apply(parent, [eventName].concat(params));\r\n }\r\n}\r\n\r\nexport default {\r\n methods: {\r\n $$dispatch(componentName, eventName, params) {\r\n dispatch.call(this, componentName, eventName, params);\r\n },\r\n $$broadcast(componentName, eventName, params) {\r\n broadcast.call(this, componentName, eventName, params);\r\n }\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/mixins/emitter.js","import { Message } from \"element-ui\";\r\n\r\n/** 低于10前面加0操作\r\n *\r\n */\r\nexport function prefixPlusZero(val) {\r\n if (typeof val == \"undefined\") {\r\n return \"\";\r\n }\r\n const num = Number(val);\r\n\r\n if (num < 10) {\r\n return \"0\" + num;\r\n } else {\r\n return num;\r\n }\r\n}\r\n/** 根据数组对象某个属性的值筛选出符合要求的数组元素\r\n * @param {Array} arr 过滤的数组\r\n * @param {String} attr 数组对象中的某个属性\r\n * @param {String} val 具体某个属性的值\r\n * @result {Object} 返回找到的对象元素\r\n *\r\n * */\r\nexport function arrayFind(arr, attr, val) {\r\n if (!(arr instanceof Array)) {\r\n return [];\r\n }\r\n let result = arr.find((value) => value[attr] == val);\r\n\r\n if (result) {\r\n return result;\r\n } else {\r\n return \"\";\r\n }\r\n}\r\n\r\nexport function generateTree({ arr = [], parentId = \"parentId\", rootId = \"0\", id = \"id\", children = \"child\" } = {}, customFn) {\r\n arr.forEach((ele, index) => {\r\n // 自定义操作,如给每个数字元素添加属性\r\n if (customFn) {\r\n customFn(ele);\r\n }\r\n const parentid = ele[parentId];\r\n\r\n if (parentid !== rootId) {\r\n // 不是根数据,那么就是子元素,把ele存放到父级的child数组中\r\n for (let index2 = 0, len = arr.length; index2 < len; index2++) {\r\n const d = arr[index2];\r\n\r\n if (d[id] === parentid) {\r\n let childArray = d[children];\r\n\r\n if (!childArray) {\r\n childArray = [];\r\n }\r\n childArray.push(ele);\r\n d[children] = childArray;\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n //去除重复元素\r\n return arr.filter((ele) => ele[parentId] === rootId);\r\n}\r\n//默认限制最近30天的内容展示\r\n/**\r\n * 获取今天到之前指定天数的时间\r\n * @param n 几天 如:31天前,n=30\r\n * @returns {Array}\r\n */\r\nexport function getPreSevenDay(n, num) {\r\n if (!n) {\r\n n = 30;\r\n }\r\n let timeArr = [];\r\n\r\n let curDate = new Date();\r\n\r\n let arr = [];\r\n\r\n let dateBefore31 = new Date(curDate.getTime() - n * 24 * 60 * 60 * 1000); //31天前\r\n\r\n timeArr[1] = curDate.getFullYear() + \"-\" + getzf(Number(curDate.getMonth() + 1)) + \"-\" + getzf(curDate.getDate()) + \" \" + \"23:59:59\";\r\n timeArr[0] = dateBefore31.getFullYear() + \"-\" + getzf(Number(dateBefore31.getMonth() + 1)) + \"-\" + getzf(dateBefore31.getDate()) + \" \" + \"00:00:00\";\r\n return timeArr;\r\n}\r\nfunction getzf(num) {\r\n if (parseInt(num) < 10) {\r\n num = \"0\" + num;\r\n }\r\n return num;\r\n}\r\n\r\n// 生成密码动态策略规则\r\nexport function passwordParse(rules) {\r\n const { minLength, maxLength, includeNumber, includeLowercase, includeUppercase, includeSpecialCharacter } = rules || {};\r\n\r\n let lenStr = \"\"; // 字符位数\r\n\r\n let rulesObj = [];\r\n\r\n let reg = \"\";\r\n\r\n if (includeNumber) {\r\n // 数字规则\r\n rulesObj.push({\r\n info: \"数字\",\r\n reg: \"(?=.*[0-9])\"\r\n });\r\n }\r\n\r\n if (includeLowercase && includeUppercase) {\r\n rulesObj.push({\r\n info: \"大小写字母\",\r\n reg: \"(?=.*[a-z])(?=.*[A-Z])\"\r\n });\r\n } else if (includeLowercase) {\r\n rulesObj.push({\r\n info: \"小写字母\",\r\n reg: \"(?=.*[a-z])\"\r\n });\r\n } else if (includeUppercase) {\r\n rulesObj.push({\r\n info: \"大写字母\",\r\n reg: \"(?=.*[A-Z])\"\r\n });\r\n }\r\n\r\n if (includeSpecialCharacter) {\r\n rulesObj.push({\r\n info: \"特殊字符\",\r\n reg: \"(?=.*[^A-Za-z0-9])\"\r\n });\r\n }\r\n\r\n let ruleStr = rulesObj\r\n .reduce((pre, cur) => {\r\n if (cur.info) {\r\n reg += cur.reg;\r\n pre.push(cur.info);\r\n }\r\n return pre;\r\n }, [])\r\n .join(\"、\");\r\n\r\n if (ruleStr) {\r\n ruleStr = `必须包含${ruleStr}`;\r\n }\r\n\r\n // 字符位数判断\r\n if (minLength == 0 && maxLength == 0) {\r\n lenStr = \"\";\r\n } else if (minLength == 0 && maxLength != 0) {\r\n lenStr = `${maxLength}位字符`;\r\n reg = `/^(?:${reg}).{${maxLength}}$/`;\r\n } else {\r\n lenStr = `${minLength}-${maxLength}位字符`;\r\n reg = `/^(?:${reg}).{${minLength},${maxLength}}$/`;\r\n }\r\n\r\n const info = [lenStr, ruleStr]\r\n .reduce((pre, cur) => {\r\n if (cur) {\r\n pre.push(cur);\r\n }\r\n return pre;\r\n }, [])\r\n .join(\",\");\r\n\r\n return {\r\n info: info,\r\n reg: new Function(\"return\" + reg)()\r\n };\r\n}\r\n\r\n/** 导出文件流成功失败分别干干什么\r\n * @param {String} res 文件流或者JSON对象(错误情况下)\r\n * @param {Boolean} blob res资源是否是blob对象,文件流 默认不传递该参数\r\n *\r\n * */\r\nexport function downStreamCheck(res, blob) {\r\n let result = {};\r\n\r\n return new Promise((resolve, reject) => {\r\n let reader = new FileReader();\r\n\r\n reader.onload = (e) => {\r\n try {\r\n result = JSON.parse(e.target.result);\r\n } catch (e) {\r\n // console.log(e)\r\n } finally {\r\n if (typeof result.code !== \"undefined\") {\r\n // 返回错误对象\r\n Message({\r\n message: result.msg,\r\n type: \"error\",\r\n duration: 5 * 1000\r\n });\r\n } else {\r\n resolve();\r\n }\r\n }\r\n };\r\n if (!blob) {\r\n reader.readAsText(\r\n new Blob([res.data], {\r\n type: \"application/octet-stream\"\r\n })\r\n );\r\n } else {\r\n reader.readAsText(res.data);\r\n }\r\n });\r\n}\r\n\r\n/** 从响应头部读取文件名称\r\n * @param {res} response\r\n * */\r\nexport function responseFileName(res) {\r\n if (res && res.headers) {\r\n let resultFileName = decodeURI(res.headers[\"content-disposition\"]);\r\n\r\n return resultFileName.substring(resultFileName.indexOf(\"=\")).substring(1);\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * @param {String} resource 文件流\r\n * @param {String} fileType 文件类型\r\n * @param {String} fileName 文件名 (可以响应头部读取文件名,如下)\r\n * let resultFileName = res.headers['content-disposition'];\r\n * let name = resultFileName.substring(resultFileName.indexOf('=')).substring(1);\r\n * 使用方式 this.$downloadBlob(data,'application/octet-stream','download.zip');其中文件名可以从响应头截取\r\n *\r\n * */\r\nexport function downloadBlob(resource, fileType, fileName) {\r\n var data = new Blob([resource], {\r\n type: fileType\r\n });\r\n\r\n if (\"download\" in document.createElement(\"a\")) {\r\n //非IE\r\n var downloadUrl = window.URL.createObjectURL(data);\r\n var anchor = document.createElement(\"a\");\r\n\r\n anchor.href = downloadUrl;\r\n anchor.download = fileName;\r\n anchor.style.display = \"none\";\r\n document.body.appendChild(anchor);\r\n anchor.click();\r\n window.URL.revokeObjectURL(anchor.href);\r\n document.body.removeChild(anchor);\r\n } else {\r\n //IE10+下载\r\n navigator.msSaveBlob(data, fileName);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/index.js","import Vue from \"vue\";\r\nimport store from \"./store\";\r\nimport router from \"./router\";\r\nimport variables from \"@/styles/element-variables.scss\";\r\nimport NProgress from \"nprogress\";\r\nimport \"nprogress/nprogress.css\";\r\nimport { Message } from \"element-ui\";\r\nimport { permissionMenu } from \"@/utils/menu\";\r\nimport { registerSubApps, actions } from \"./qiankun\";\r\n\r\nconst routerState = (function () {\r\n let to = {},\r\n from = {},\r\n next = {},\r\n _prviate = {}, // 私有变量\r\n _currentState = {}; // 状态私有变量\r\n\r\n /** 内部方法\r\n * documentTitle:设置主应用浏览器标题\r\n * siteConfig:获取网站配置信息(主题、底部信息、系统名称等)\r\n * updateUserInfo:更新用户信息\r\n * getInitMainAppPermission:获取初始化权限\r\n * fromPathSignMountApp:从登录页来,特殊处理\r\n * signMountApp:登录处理\r\n * noPermission:没有权限处理方法\r\n */\r\n const state = {\r\n // 设置主应用浏览器标题\r\n documentTitle() {\r\n if (to.meta.title && to.path.indexOf(\"subview\") == -1 && to.path.indexOf(\"signMountApp\") == -1) {\r\n window.document.title = to.meta.title;\r\n }\r\n },\r\n\r\n // 判断网站配置信息(主题等)\r\n siteConfig(fn) {\r\n if (!_prviate.websiteConf) {\r\n Vue.prototype.$getWebsite().then((websiteConfig) => {\r\n _prviate.websiteConf = websiteConfig;\r\n Vue.prototype.$setThemeColor(websiteConfig.window.themeColor, variables.colorPrimary.toLowerCase()).then(() => {\r\n store.dispatch(\"setWebsiteConfig\", websiteConfig).then(() => {\r\n fn && fn(to, from, next);\r\n });\r\n });\r\n });\r\n } else {\r\n fn && fn(to, from, next);\r\n }\r\n },\r\n\r\n // 更新用户信息\r\n updateUserInfo() {\r\n if (!store.getters.personalInfo.userUuid) {\r\n // 没有保存个人信息\r\n store.dispatch(\"UpdateUserInfo\");\r\n }\r\n },\r\n\r\n // 获取初始化权限\r\n getInitMainAppPermission() {\r\n store\r\n .dispatch(\"getUserAcountList\", { appCode: \"operation\" })\r\n .then(() => {\r\n Action.match();\r\n })\r\n .catch((res) => {\r\n Action.run(\"noPermission\", res);\r\n });\r\n },\r\n\r\n // 从登录页来,特殊处理\r\n fromPathSignMountApp() {\r\n if (from.path.indexOf(\"signMountApp\") !== -1) {\r\n // 解决登录失效问题\r\n store.commit(\"CLEAR_ACCOUNTLIST\");\r\n store.dispatch(\"clearLoginUser\");\r\n }\r\n },\r\n\r\n // 进入登录\r\n async signMountApp() {\r\n // 登录模块未注册先进行注册\r\n if (!_prviate.signMountAppHasRegister) {\r\n _prviate.signMountAppHasRegister = true;\r\n registerSubApps({\r\n name: \"signMountApp\",\r\n container: \"#loginsubview\",\r\n activeRule: \"#/signMountApp\"\r\n });\r\n }\r\n next();\r\n },\r\n\r\n // 没有权限处理\r\n noPermission(res) {\r\n if (res.code != 12) {\r\n const message = res.message || res.msg;\r\n\r\n Message.error(message);\r\n setTimeout(() => {\r\n next(\"/login\");\r\n }, 5000);\r\n }\r\n }\r\n };\r\n\r\n /** 匹配路由特殊标识的处理\r\n * subview:产品服务(子服务为微服务架构)处理函数\r\n * serviceweb:老服务(外链方式进入的服务)处理函数\r\n */\r\n const routePathMatchObject = {\r\n // 进入产品服务(微服务架构服务)\r\n subview() {\r\n // 微服务产品\r\n const subappCode = to.path.replace(/\\/subview\\/([^/]+)\\/\\S+/g, \"$1\");\r\n\r\n if (store.getters.subappMenuList.length === 0) {\r\n // 子应用获取权限\r\n store\r\n .dispatch(\"getUserAcountList\", {\r\n appCode: subappCode\r\n })\r\n .then((result) => {\r\n const { user } = result;\r\n const subappMenuList = permissionMenu(user.moduleList, subappCode);\r\n\r\n store\r\n .dispatch(\"AddSubappInfo\", {\r\n permission: user.moduleList,\r\n menuList: subappMenuList,\r\n appCode: subappCode\r\n })\r\n .then(() => {\r\n next();\r\n });\r\n });\r\n } else {\r\n next();\r\n }\r\n },\r\n\r\n // 进入老服务(老服务架构-外链方式)\r\n serviceweb() {\r\n store\r\n .dispatch(\"getUserAcountList\", {\r\n appCode: to.query.appCode\r\n })\r\n .then((result) => {\r\n next();\r\n });\r\n }\r\n };\r\n\r\n const Action = {\r\n // 初始化路由相关信息\r\n init(config) {\r\n to = config.to || {};\r\n from = config.from || {};\r\n next =\r\n config.next ||\r\n function () {\r\n console.log(\"no next function\");\r\n };\r\n return this;\r\n },\r\n\r\n /** 设置执行方法状态\r\n * 传递的函数名存于state对象中\r\n * 示例:routerState.setState('a','b').run() // 设置要执行的a,b方法,通过run执行\r\n */\r\n setState() {\r\n const args = arguments; // 组合动作执行,传递多个参数来实现\r\n\r\n _currentState = {}; // 重置内置状态\r\n if (args.length) {\r\n for (let i = 0; i < args.length; i++) {\r\n _currentState[args[i]] = true;\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n /** 执行状态方法\r\n * 单独使用示例:\r\n * routerState.run('functionName','functionParams')\r\n * 与setState配合使用示例:\r\n * routerState.setState('a','b').run()\r\n */\r\n run(fnName) {\r\n if (typeof fnName !== \"undefined\") {\r\n const args = Array.prototype.slice.call(arguments, 1);\r\n\r\n if (fnName.indexOf(\".\") !== -1) {\r\n // 兼容await语法,返回promise\r\n const fn = fnName.slice(0, fnName.indexOf(\".\"));\r\n\r\n return state[fn] && state[fn].apply(state, args);\r\n } else {\r\n state[fnName] && state[fnName].apply(state, args);\r\n }\r\n return this;\r\n }\r\n for (let i in _currentState) {\r\n state[i] && state[i]();\r\n }\r\n return this;\r\n },\r\n\r\n // 路由路径匹配特殊标识\r\n match(fnNameStr) {\r\n if (typeof fnNameStr !== \"undefined\") {\r\n routePathMatchObject[fnNameStr] && routePathMatchObject[fnNameStr]();\r\n return false;\r\n }\r\n let matched = false; // 默认未匹配到标识\r\n\r\n let fnList = Object.keys(routePathMatchObject);\r\n\r\n for (let i = 0, len = fnList.length; i < len; i++) {\r\n const fnName = fnList[i];\r\n\r\n if (to.path.indexOf(`/${fnName}/`) !== -1) {\r\n matched = true;\r\n routePathMatchObject[fnName] && routePathMatchObject[fnName]();\r\n break;\r\n }\r\n }\r\n if (!matched) {\r\n next();\r\n }\r\n }\r\n };\r\n\r\n return {\r\n init: Action.init,\r\n setState: Action.setState,\r\n run: Action.run,\r\n match: Action.match\r\n };\r\n})();\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n NProgress.start();\r\n routerState.init({ to, from, next }).run(\"documentTitle\");\r\n routerState.run(\"siteConfig\", async function (to, from, next) {\r\n // from登录来,特殊处理\r\n routerState.run(\"fromPathSignMountApp\");\r\n\r\n // 在免登录白名单,直接进入\r\n if (to.meta && to.meta.onWhiteList) {\r\n next();\r\n } else if (to.path.indexOf(\"signMountApp\") !== -1) {\r\n // 登录模块处理\r\n routerState.run(\"signMountApp\");\r\n } else {\r\n // 保存右上角用户信息\r\n routerState.run(\"updateUserInfo\");\r\n if (store.getters.acountList.length === 0) {\r\n // 没有权限,初始化获取权限\r\n routerState.run(\"getInitMainAppPermission\");\r\n } else {\r\n next();\r\n }\r\n }\r\n });\r\n});\r\n\r\nrouter.afterEach(() => {\r\n NProgress.done(); // 结束Progress\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/permission.js","// 兼容IE11浏览器碎片\r\nimport \"whatwg-fetch\";\r\nimport \"custom-event-polyfill\";\r\nimport \"core-js/stable/promise\";\r\nimport \"core-js/stable/symbol\";\r\nimport \"core-js/stable/string/starts-with\";\r\nimport \"core-js/web/url\";\r\n\r\nimport Vue from \"vue\";\r\nimport App from \"./App\";\r\nimport router from \"./router\";\r\nimport store from \"@/store\";\r\nimport Element from \"element-ui\";\r\nimport \"@/utils/itrus.js\";\r\nimport emitter from \"@/mixins/emitter.js\";\r\nimport * as resultObj from \"./utils\";\r\nimport \"@/permission\";\r\n\r\nimport \"@/styles/element-variables.scss\";\r\nimport \"@/styles/common.scss\";\r\n\r\nVue.config.productionTip = false;\r\nVue.use(Element);\r\nVue.mixin(emitter);\r\n// 挂在公共方法\r\nObject.keys(resultObj).forEach((key) => {\r\n Vue.prototype[\"$\" + key] = resultObj[key];\r\n});\r\n// vue原型添加属性、方法\r\nVue.prototype.$env = process.env.PROJECT_ENV; // web表示saas平台,front表示前置\r\nVue.prototype.$builtMountApp = \"builtsubview\"; // 内置子应用容器名\r\nVue.prototype.$serviceMountApp = \"subview\"; // 内置子应用容器名\r\n\r\n/* eslint-disable no-new */\r\nnew Vue({\r\n el: \"#root-app\",\r\n router,\r\n store,\r\n watch: {\r\n \"$store.getters.subappClassName\": function (n, o) {\r\n // 监听是否进入子应用\r\n if (n) {\r\n this.$nextTick(() => {\r\n document.body.className = n;\r\n });\r\n } else {\r\n this.$nextTick(() => {\r\n document.body.className = \"\";\r\n });\r\n }\r\n }\r\n },\r\n components: { App },\r\n template: \"\"\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","import axios from \"axios\";\r\nimport store from \"@/store\";\r\nimport { Message, MessageBox, Loading } from \"element-ui\";\r\n\r\nlet timeoutState = false; // 是否超时\r\n\r\nconst service = axios.create({\r\n baseURL: process.env.BASE_API,\r\n timeout: 1000 * 120,\r\n headers: {\r\n \"Content-Type\": \"application/json\", // 默认请求头\r\n platformType: \"operation\",\r\n appCode: \"operation\"\r\n },\r\n transformRequest: [\r\n function (data) {\r\n if (typeof data === \"undefined\") {\r\n return JSON.stringify({});\r\n } else {\r\n return JSON.stringify(data);\r\n }\r\n }\r\n ]\r\n});\r\n\r\nservice.interceptors.request.use(\r\n (config) => {\r\n return config;\r\n },\r\n (error) => {\r\n Promise.reject(error);\r\n }\r\n);\r\n\r\nservice.interceptors.response.use(\r\n (response) => {\r\n if (response.data != \"\" && typeof response.data.code === \"undefined\") {\r\n // 判断数据流\r\n return response;\r\n } else if (response.data.code === 0) {\r\n return response.data;\r\n } else if (response.data.code == -1 || response.data.code == 12) {\r\n store.dispatch(\"clearLoginUser\"); // 清空本地登录信息\r\n // 登录失效\r\n if (!timeoutState) {\r\n timeoutState = true;\r\n MessageBox.confirm(\"登录状态超时,请重新登录!\", \"提示\", {\r\n showClose: false,\r\n showCancelButton: false,\r\n closeOnClickModal: false,\r\n confirmButtonText: \"去登录\",\r\n type: \"warning\"\r\n })\r\n .then(() => {\r\n if (process.env.NODE_ENV === \"development\") {\r\n top.location.href = \"/\";\r\n } else {\r\n // saas云端\r\n if (process.env.PROJECT_ENV === \"saas\") {\r\n top.location.href = \"/home/\";\r\n } else {\r\n // front前置\r\n top.location.href = \"/\";\r\n }\r\n }\r\n })\r\n .catch(() => {\r\n timeoutState = false;\r\n });\r\n }\r\n return Promise.reject(response.data);\r\n } else {\r\n if (typeof response.config.headers.hideErrorMessage == \"undefined\") {\r\n Message({\r\n message: response.data.message || response.data.msg,\r\n type: \"error\",\r\n duration: 5 * 1000\r\n });\r\n }\r\n return Promise.reject(response.data);\r\n }\r\n },\r\n (error) => {\r\n Message({\r\n message: error.message || error.msg,\r\n type: \"error\",\r\n duration: 5 * 1000\r\n });\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default service;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/service.js","import request from \"@/utils/service\";\r\n\r\n// 获取当前登陆的用户信息\r\nexport function getLoginUser(data) {\r\n return request({\r\n url: \"/authorization/getLoginUser\",\r\n method: \"post\",\r\n data\r\n });\r\n}\r\n\r\n// 获取账号列表\r\nexport function loadUserAuthority({ uuid, type, appCode } = {}) {\r\n return request({\r\n url: \"/authorization/loadUserAuthority\",\r\n method: \"post\",\r\n headers: { appCode, hideErrorMessage: true },\r\n data: { uuid, type }\r\n });\r\n}\r\n\r\n// 获取服务列表\r\nexport function getServerMap(data) {\r\n return request({\r\n url: \"/platform-uc/portal/authority/app/list\",\r\n method: \"post\",\r\n data\r\n });\r\n}\r\n\r\n// 退出登录\r\nexport function logout() {\r\n return request({\r\n url: \"/platform-uc/public/authentication/logout\",\r\n method: \"post\"\r\n });\r\n}\r\n// 获取密码策略\r\nexport function getPasswordStrategy() {\r\n return request({\r\n url: '/platform-uc/public/strategy/getPasswordStrategy',\r\n method: 'get'\r\n });\r\n}\r\n// 修改密码\r\nexport function resetPasswd(data) {\r\n return request({\r\n url: '/platform-uc/admin/user/resetPasswd',\r\n method: 'post',\r\n data\r\n });\r\n}\r\n\r\nexport function getUnique() {\r\n return request({\r\n url: '/platform-uc/portal/company/getUnique',\r\n method: \"get\"\r\n });\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/api/common/index.js","import Vue from \"vue\";\r\nimport { registerMicroApps, loadMicroApp, prefetchApps, initGlobalState } from \"qiankun\";\r\nimport store from \"@/store\";\r\nexport {\r\n // 注册微应用\r\n registerMicroApps,\r\n // 设置主应用启动后默认进入的子应用\r\n setDefaultMountApp,\r\n // 手动加载一个微应用\r\n loadMicroApp,\r\n prefetchApps,\r\n // 定义全局状态,并返回通信方法,建议在主应用使用,微应用通过 props 获取通信 方法\r\n initGlobalState,\r\n // 启动 qiankun\r\n start\r\n} from \"qiankun\";\r\n\r\n// 主应用与微应用数据通信\r\nconst state = {\r\n hiddenSidebar: true,\r\n loaded: false,\r\n updateUserInfo: false, // 是否需要更新用户信息\r\n subviewBreadcrumb: [], // 子应用路径\r\n hiddenBreadcrumb: true,\r\n subappClassName: \"\" // 设置子应用打包根的class类名\r\n};\r\nconst actions = initGlobalState(state);\r\n\r\nactions.setGlobalState(state);\r\n\r\nactions.onGlobalStateChange((state, prev) => {\r\n const { hiddenSidebar, loaded, updateUserInfo, subviewBreadcrumb = [], hiddenBreadcrumb = true, subappClassName } = state;\r\n // 设置左侧菜单显示隐藏\r\n\r\n store.dispatch(\"setSidebarDisplayStatus\", hiddenSidebar);\r\n // 设置子应用路由matched\r\n store.dispatch(\"setSubviewBreadcrumb\", subviewBreadcrumb);\r\n // 设置子应用面包屑是否显示\r\n store.dispatch(\"setHiddenSubviewBreadcrumb\", hiddenBreadcrumb);\r\n // 存储子应用加载完成状态\r\n store.dispatch(\"setMountAppLoaded\", loaded);\r\n // 如果需要更新用户信息\r\n if (updateUserInfo) {\r\n store.dispatch(\"UpdateUserInfo\", { reload: true });\r\n }\r\n store.dispatch(\"setSubappClassName\", subappClassName);\r\n});\r\nexport { actions };\r\n\r\n// 本地子应用开发地址\r\nconst subAppLocalhost = {\r\n // 登录/注册‐基础应用\r\n signMountApp: \"//localhost:8001\",\r\n // 运营管理\r\n operation: \"//localhost:8102\",\r\n // 数字身份‐子应用\r\n didadmin: \"//localhost:8302\"\r\n};\r\n\r\n/**\r\n * 获取本地应用服务开发地址\r\n * @param {String} appCode 服务code\r\n * @return {String} 返回服务本地开发地址\r\n **/\r\nexport function serviceLocalhost(appCode) {\r\n if (subAppLocalhost[appCode]) {\r\n return subAppLocalhost[appCode];\r\n } else {\r\n return \"\";\r\n }\r\n}\r\n\r\n/** 注册微应用\r\n * @param {Object} Apps 微应用注册信息\r\n * @param {Object} props 传递的数据\r\n */\r\nexport function registerSubApps({ loadMicro, name, container = \"#subview\", activeRule } = {}, props = {}) {\r\n props.websiteConfig = store.getters.websiteConfig; // 网站配置\r\n props.itrus = Vue.prototype.$itrus; // 通用插件\r\n props.currentUser = store.getters.currentUser; // 当前身份权限信息\r\n props.qiankunContainer = container.slice(1); // 子服务挂载容器名\r\n props.personalInfo = store.getters.personalInfo; // 当前账号个人信息\r\n props.rootDir = process.env.PROJECT_ROOT; // 部署路径 saas '/home'文件夹,front'/'默认根路径\r\n\r\n const entry = appEntry(name); // 微应用的入口\r\n\r\n // 手动加载微应用\r\n if (loadMicro) {\r\n let configuration = {};\r\n\r\n if (!Vue.prototype.$ie11) {\r\n configuration = {\r\n sandbox: { experimentalStyleIsolation: false, strictStyleIsolation: false }\r\n };\r\n }\r\n return loadMicroApp(\r\n {\r\n name,\r\n entry,\r\n container, // 微应用的容器节点的选择器或者 Element 实例\r\n props\r\n },\r\n configuration\r\n );\r\n }\r\n\r\n // 自动加载微应用\r\n const microApps = [];\r\n const microApp = {\r\n name,\r\n entry,\r\n container, // 微应用的容器节点的选择器或者 Element 实例\r\n activeRule: process.env.PROJECT_ROOT + (activeRule || `#/subview/${name}`) // 微应用的激活规则\r\n };\r\n\r\n microApp.props = props; // 通信数据\r\n microApps.push(microApp);\r\n\r\n // 注册子应用\r\n registerMicroApps(microApps, {\r\n beforeLoad: [\r\n (app) => {\r\n console.log(\"[LifeCycle] before load %c%s\", \"color: green;\", app.name);\r\n }\r\n ],\r\n beforeMount: [\r\n (app) => {\r\n console.log(\"[LifeCycle] before mount %c%s\", \"color: green;\", app.name);\r\n }\r\n ],\r\n afterUnmount: [\r\n (app) => {\r\n console.log(\"[LifeCycle] after unmount %c%s\", \"color: green;\", app.name);\r\n }\r\n ]\r\n });\r\n}\r\n\r\n/** 获取微应用的入口地址\r\n * @param { String } name 微应用名称\r\n * @return { String } 返回微应用入口地址\r\n */\r\nexport function appEntry(name) {\r\n return process.env.NODE_ENV == \"development\" ? serviceLocalhost(name) : `/${name}/`; // 微应用的入口\r\n}\r\n\r\n/** 预加载微应用列表\r\n * @param { Array | String } appNameArr ['app1','app2'] || 'app1'\r\n * @return { Array } 返回预加载微应用列表\r\n *\r\n */\r\nexport function getPrefetchAppsList(appNameArr) {\r\n if (typeof appNameArr === \"string\") {\r\n return [{ name: appNameArr, entry: appEntry(appNameArr) }];\r\n }\r\n return appNameArr.reduce((pre, appName) => {\r\n pre.push({ name: appName, entry: appEntry(appName) });\r\n return pre;\r\n }, []);\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/qiankun/index.js","module.exports = itrus;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"itrus\"\n// module id = r3s1\n// module chunks = 11"],"sourceRoot":""}