1 |
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/store/modules/permission/mutation-types.ts","webpack:///./src/store/modules/permission/action-types.ts","webpack:///./src/store/modules/permission/mutations.ts","webpack:///./src/store/modules/permission/actions.ts","webpack:///./src/store/modules/permission/state.ts","webpack:///./src/store/modules/permission/index.ts","webpack:///./src/store/modules/user/state.ts","webpack:///./src/store/modules/user/mutations.ts","webpack:///./src/store/modules/user/actions.ts","webpack:///./src/store/modules/user/index.ts","webpack:///./src/store/modules/portait/state.ts","webpack:///./src/store/modules/portait/mutations.ts","webpack:///./src/store/modules/portait/index.ts","webpack:///./src/store/index.ts","webpack:///./src/config/index.ts","webpack:///./src/App.vue?a812","webpack:///./src/components/header/Comheader.vue?25e9","webpack:///./src/components/header/Comheader.vue?4c07","webpack:///./src/components/header/Comheader.vue","webpack:///./src/apis/envmonitor.ts","webpack:///./src/utils/cookies.ts","webpack:///./src/constant/headers.ts","webpack:///./src/constant/network.ts","webpack:///./src/constant/settings.ts","webpack:///./src/config/default/setting.config.ts","webpack:///./src/config/default/net.config.ts","webpack:///./src/utils/https.ts","webpack:///./src/constant/key.ts","webpack:///./src/utils/flexible.js","webpack:///./src/store/modules/portait/mutation-types.ts","webpack:///./src/store/modules/user/mutation-types.ts","webpack:///./src/router/index.ts","webpack:///./src/styles/index.scss?d239","webpack:///./src/App.vue?5f24","webpack:///./src/App.vue?3acc","webpack:///./src/App.vue","webpack:///./src/permission.ts","webpack:///./src/main.ts","webpack:///./src/store/modules/user/action-types.ts","webpack:///./src/utils/index.ts","webpack:///./src/components/header/Comheader.vue?a507"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","jsonpArray","window","oldJsonpFunction","slice","PermissionMutationType","PermissionActionType","mutations","SET_ROUTES","state","routes","concat","dynamicRoutes","hasPermission","roles","route","meta","some","role","includes","filterAsyncRoutes","res","forEach","children","actions","ACTION_SET_ROUTES","accessedRoutes","commit","token","openid","userName","userId","id","userPhone","phone","projectId","companyId","mac","remoteControl","SET_TOKEN","SET_USER_MAC","SET_USER_NAME","SET_USER_ID","SET_USER_PHONE","SET_PROJECT_ID","SET_COMPANY_ID","SET_REMOTECONTROL","ACTION_LOGIN","userInfo","ACTION_RESET_TOKEN","ACTION_GET_USER_INFO","JSON","stringify","macAdr","ACTION_GET_WORKSPACE","params","ACTION_CHANGE_ROLES","store","useStore","dispatch","permission","item","router","addRoute","ACTION_LOGIN_OUT","airConditioner","light","SET_AIR","SET_LIGHT","debug","plugins","user","portait","setupService","objectService","duoduoenvService","weachatService","_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_VanIcon","style","background","color","onClick","goBack","title","title1","props","String","default","components","VanIcon","setup","proxyData","toName","back","__exports__","getCompanyInfo","companyInfo","GET","json","getWeather","getSpaceInfo","POST","getMeetingSceneHttp","spaceId","getEquipmentListHttp","getSetTimeHttp","getFeedbackDocumentsHttp","changeTempHttp","getLampHttp","setallLampHttp","setEquipeHttp","getStatusHttp","getObjectDataEqpGroupHttp","switchoverSceneHttp","changeSetTimeHttp","getChartListHTTP","getBuildingList","getFloorList","getMapInfo","getSpaceEquipType","getSpaceLike","permanentSpace","getPermanentSpace","delPermanentSpace","getUserControlAuth","getSpaceMode","getSpaceTemp","querySpaceSceneConfig","queryCustomAndScence","saveBatchCustomScene","getDefaultLocation","getPadSpaceList","saveWorkSpace","insertWorkSpace","deleteWorkSpace","queryWorkSpace","checkWorkSpace","queryCustomerservice","getPadQrCodeStatus","getToken","tokenKey","getProjectId","setProjectId","set","setToken","removeToken","remove","setCookieMac","macKey","getCookieMac","getSessionUserInfo","sessionStorage","getItem","userInfoKey","parse","setSessionUserInfo","setItem","ContentType","Device","InfoShowType","Environment","RouterSource","RouterMode","TokenStorageName","settings","baseURL","copyright","keepAliveMaxNum","routerMode","Hash","routesWhiteList","loadingText","tokenName","tokenTableName","storage","LocalStorage","recordRoute","logo","errorLog","Development","loginInterception","loginRSA","routerSource","Backend","rolesControl","uniqueOpened","defaultOpeneds","debounce","templateFolder","openFirstMenu","version","_header","contentType","device","PC","networkConfig","host","loading","errorShowType","LOG","header","staticUrl","configobj","config","headers","https","httpClient","interceptors","use","comInfo","comParams","url","indexOf","post","resData","status","catch","getUrlParams","location","search","theRequest","str","substr","strs","split","Keys","win","lib","tid","doc","docEl","documentElement","metaEl","querySelector","flexibleEl","dpr","scale","flexible","match","parseFloat","parseInt","content","initialDpr","maximumDpr","toFixed","navigator","appVersion","isIPhone","devicePixelRatio","firstElementChild","wrap","write","innerHTML","refreshRem","width","getBoundingClientRect","rem","fontSize","addEventListener","persisted","readyState","body","rem2px","val","this","px2rem","PortaitMutationTypes","UserMutationTypes","Home","Envmonitor","EnvmonitorDetail","UserPortrait","EnergySavig","EnergyDetail","TodayEnergyDetail","EnergyRank","IntegralDesc","Record","MySpace","constantRoutes","path","redirect","hideHeader","component","asyncRoutes","history","resetRouter","newRouter","matcher","_component_Header","_component_router_view","fullPath","Header","transitionName","showHeader","touches","preventDefault","beforeEach","to","_","next","afterEach","app","App","duration","forbidClick","clear","globalProperties","$imgUrl","$toast","$loadingStart","$loadinngEnd","mount","UserActionTypes","setQueryConfig","queryConfig","_str","substring","getUserInfo","paramsInfo","pubname","formatDate","date","Date","dates","year","getFullYear","month","getMonth","day","getDate","Hours","getHours","Minutes","getMinutes","formatDateStr","replace","getTomorrow","setTime","getTime","Year","Months","parseImgUrl","base","img","getAddYear","time","setFullYear","y","getPreMonth","formatType","nowdays","formatEnergyDate","months","hours","minutes","setSession","obj","getSession","setLocalStorage","localStorage","getLocalStorage","setLocalNewSpaceInfo","spaceInfo","storageSpaceInfoKey","localStorageSpaceId","buildingId","floorId","spaceMap","storageSpaceKey","getStorageSpaceId","localStorageFloor","floorMap","storageFloorKey","getLocalStorageFloor","setLocalSearchSpace","historySearch","historySearchSpaceKey","flag","map","historyItem","getLocalSearchSpace","getWeekDate","weeks","Array","week","getNowWeek","getDay","nowWeek","getTimers","timers","getNowTime","minute","index","getRelNowTime","formatTimerStr","timer","newNumber","start","end","masAddess","Math","round","random"],"mappings":"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","file":"static/js/app.4a65ec63.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-03de4fd2\":\"9f705948\",\"chunk-2b24fa28\":\"2cd44b71\",\"chunk-32b29088\":\"3f2d12dd\",\"chunk-429da213\":\"64ee8f10\",\"chunk-5c8d146c\":\"b5df56be\",\"chunk-6c680e0e\":\"8e36c099\",\"chunk-84c61a32\":\"e77934b7\",\"chunk-d758a428\":\"b3f2cd06\",\"chunk-849fad82\":\"556fde19\",\"chunk-ba4e2060\":\"6331959c\",\"chunk-b323f69a\":\"275f643e\",\"chunk-e92a0f90\":\"7ac48c42\",\"chunk-f05d5aac\":\"9e51d6d9\",\"chunk-c5bf6972\":\"a6fb5811\",\"chunk-67ec9fce\":\"6669867f\",\"chunk-eb5d9898\":\"e4f55577\",\"chunk-389e18b8\":\"5fbd15f8\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-03de4fd2\":1,\"chunk-2b24fa28\":1,\"chunk-32b29088\":1,\"chunk-429da213\":1,\"chunk-5c8d146c\":1,\"chunk-6c680e0e\":1,\"chunk-84c61a32\":1,\"chunk-d758a428\":1,\"chunk-849fad82\":1,\"chunk-ba4e2060\":1,\"chunk-b323f69a\":1,\"chunk-e92a0f90\":1,\"chunk-c5bf6972\":1,\"chunk-67ec9fce\":1,\"chunk-eb5d9898\":1,\"chunk-389e18b8\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-03de4fd2\":\"04ba9ab1\",\"chunk-2b24fa28\":\"c03b9252\",\"chunk-32b29088\":\"d1a2980e\",\"chunk-429da213\":\"4a73993b\",\"chunk-5c8d146c\":\"e3100eed\",\"chunk-6c680e0e\":\"9a5e75f1\",\"chunk-84c61a32\":\"bdd3dcd5\",\"chunk-d758a428\":\"08b1c5ab\",\"chunk-849fad82\":\"df6c3dfa\",\"chunk-ba4e2060\":\"0cd05220\",\"chunk-b323f69a\":\"21c73629\",\"chunk-e92a0f90\":\"193a6c0e\",\"chunk-f05d5aac\":\"31d6cfe0\",\"chunk-c5bf6972\":\"308a5261\",\"chunk-67ec9fce\":\"a928b124\",\"chunk-eb5d9898\":\"ce7b5faf\",\"chunk-389e18b8\":\"751c4515\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/sgipad/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","/*\n * @Description:\n * @Author: ZY\n * @Date: 2020-12-25 14:28:43\n * @LastEditors: ZY\n * @LastEditTime: 2020-12-25 14:32:35\n */\nexport enum PermissionMutationType{\n SET_ROUTES = 'SET_ROUTES'\n}\n","export enum PermissionActionType{\n ACTION_SET_ROUTES = 'ACTION_SET_ROUTES'\n}\n","/*\n * @Description:\n * @Author: ZY\n * @Date: 2020-12-25 14:28:12\n * @LastEditors: ZY\n * @LastEditTime: 2020-12-25 15:03:37\n */\nimport { MutationTree } from 'vuex'\nimport { PermissionState } from './state'\nimport { PermissionMutationType } from './mutation-types'\nimport { RouteRecordRaw } from 'vue-router'\nimport { constantRoutes } from '@/router'\n\nexport type Mutations<S = PermissionState> = {\n [PermissionMutationType.SET_ROUTES](state: S, routes: RouteRecordRaw[]): void\n}\n\nexport const mutations: MutationTree<PermissionState> & Mutations = {\n [PermissionMutationType.SET_ROUTES](state: PermissionState, routes: RouteRecordRaw[]) {\n state.routes = constantRoutes.concat(routes)\n state.dynamicRoutes = routes\n }\n\n}\n","import { ActionTree, ActionContext } from 'vuex'\nimport { RootState } from '@/store'\nimport { PermissionState } from './state'\nimport { Mutations } from './mutations'\nimport { PermissionMutationType } from './mutation-types'\nimport { PermissionActionType } from './action-types'\nimport { asyncRoutes } from '@/router'\nimport { RouteRecordRaw } from 'vue-router'\n\ntype AugmentedActionContext = {\n commit<K extends keyof Mutations>(\n key: K,\n payload: Parameters<Mutations[K]>[1],\n ): ReturnType<Mutations[K]>\n} & Omit<ActionContext<PermissionState, RootState>, 'commit'>\n\nconst hasPermission = (roles: string[], route: RouteRecordRaw) => {\n if (route.meta && route.meta.roles) {\n return roles.some(role => {\n if (route.meta?.roles !== undefined) {\n return route.meta.roles.includes(role)\n }\n })\n } else {\n return true\n }\n}\n\nexport const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => {\n const res: RouteRecordRaw[] = []\n routes.forEach(route => {\n const r = { ...route }\n if (hasPermission(roles, r)) {\n if (r.children) {\n r.children = filterAsyncRoutes(r.children, roles)\n }\n res.push(r)\n }\n })\n return res\n}\n\nexport interface Actions {\n [PermissionActionType.ACTION_SET_ROUTES](\n { commit }: AugmentedActionContext\n , roles: string[]): void\n}\n\nexport const actions: ActionTree<PermissionState, RootState> & Actions = {\n [PermissionActionType.ACTION_SET_ROUTES](\n { commit }: AugmentedActionContext\n , roles: string[]) {\n let accessedRoutes\n if (roles.includes('admin')) {\n accessedRoutes = asyncRoutes\n } else {\n accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)\n }\n commit(PermissionMutationType.SET_ROUTES, accessedRoutes)\n }\n}\n","/*\n * @Description:\n * @Author: ZY\n * @Date: 2020-12-25 14:15:18\n * @LastEditors: ZY\n * @LastEditTime: 2020-12-26 13:57:51\n */\n\nimport { RouteRecordRaw } from 'vue-router'\n\nexport interface PermissionState {\n routes: RouteRecordRaw[]\n dynamicRoutes: RouteRecordRaw[]\n}\n\nexport const state: PermissionState = {\n routes: [],\n dynamicRoutes: []\n}\n","import {\n Store as VuexStore,\n CommitOptions,\n DispatchOptions,\n Module\n} from 'vuex'\nimport { RootState } from '@/store'\nimport { mutations, Mutations } from './mutations'\nimport { actions, Actions } from './actions'\nimport type { PermissionState } from './state'\nimport { state } from './state'\n\nexport { PermissionState }\n\nexport type PermissionStore<S = PermissionState> = Omit<VuexStore<S>, 'getters' | 'commit' | 'dispatch'>\n & {\n commit<K extends keyof Mutations, P extends Parameters<Mutations[K]>[1]>(\n key: K,\n payload: P,\n options?: CommitOptions\n ): ReturnType<Mutations[K]>\n } & {\n dispatch<K extends keyof Actions>(\n key: K,\n payload: Parameters<Actions[K]>[1],\n options?: DispatchOptions\n ): ReturnType<Actions[K]>\n };\nexport const store: Module<PermissionState, RootState> = {\n state,\n mutations,\n actions\n // namespaced: true,\n}\n","import Keys from '@/constant/key'\nimport { getToken, getProjectId, getCookieUserInfo, getSessionUserInfo, getCookieMac } from '@/utils/cookies'\n\nexport interface UserState {\n token: string\n openid: string\n userName: string\n userId: string\n userPhone: number\n projectId: any,\n companyId: string,\n mac: any,\n remoteControl: boolean // 当前用户是否可以远程控制设备\n}\n\nexport const state: UserState = {\n token: getToken() || '',\n openid: Keys.openid,\n userName: getSessionUserInfo() ? getSessionUserInfo().name : '',\n userId: getSessionUserInfo() ? getSessionUserInfo().id : '',\n userPhone: getSessionUserInfo() ? getSessionUserInfo().phone : 0,\n projectId: getProjectId()?getProjectId():'',\n companyId: '',\n mac: getCookieMac() ? getCookieMac() : '',\n remoteControl: false\n}\n","import { MutationTree } from 'vuex'\nimport { UserState } from './state'\nimport { UserMutationTypes } from './mutation-types'\nimport Cookies from 'js-cookie'\nimport Keys from '@/constant/key'\nimport { setProjectId } from '@/utils/cookies'\n\nexport type Mutations<S = UserState> = {\n [UserMutationTypes.SET_TOKEN](state: S, token: string): void\n [UserMutationTypes.SET_USER_NAME](state: S, userName: string): void\n [UserMutationTypes.SET_USER_ID](state: S, userId: string): void\n [UserMutationTypes.SET_USER_PHONE](state: S, userPhone: number): void\n [UserMutationTypes.SET_PROJECT_ID](state: S, projectId: string): void\n [UserMutationTypes.SET_COMPANY_ID](state: S, companyId: string): void\n [UserMutationTypes.SET_USER_MAC](state: S, companyId: string): void,\n [UserMutationTypes.SET_REMOTECONTROL](state: S, remoteControl: boolean): void\n}\n\nexport const mutations: MutationTree<UserState> & Mutations = {\n [UserMutationTypes.SET_TOKEN](state: UserState, token: string) {\n state.token = token\n },\n [UserMutationTypes.SET_USER_MAC](state: UserState, mac: string) {\n state.mac = mac\n },\n\n [UserMutationTypes.SET_USER_NAME](state: UserState, userName: string) {\n state.userName = userName\n },\n\n [UserMutationTypes.SET_USER_ID](state: UserState, userId: string) {\n state.userId = userId\n },\n [UserMutationTypes.SET_USER_PHONE](state: UserState, userPhone: number) {\n state.userPhone = userPhone\n },\n [UserMutationTypes.SET_PROJECT_ID](state: UserState, projectId: string) {\n // Cookies.set(Keys.projectId, projectId)\n setProjectId(projectId)\n // debugger\n state.projectId = projectId\n },\n [UserMutationTypes.SET_COMPANY_ID](state: UserState, companyId: string) {\n state.companyId = companyId\n },\n [UserMutationTypes.SET_REMOTECONTROL](state: UserState, remoteControl: boolean) {\n state.remoteControl = remoteControl\n }\n\n}\n","import { ActionTree, ActionContext } from 'vuex'\nimport { RootState, store, useStore } from '@/store'\nimport { UserState } from './state'\nimport { Mutations } from './mutations'\nimport { UserMutationTypes } from './mutation-types'\nimport { UserActionTypes } from './action-types'\nimport { getCookieMac, removeToken, setSessionUserInfo, setToken } from '@/utils/cookies'\nimport { PermissionActionType } from '../permission/action-types'\nimport router, { resetRouter } from '@/router'\nimport { useRoute, useRouter } from 'vue-router'\nimport { RouteRecordRaw } from 'vue-router'\nimport { getUsersInfo } from '@/apis/user'\nimport { clearAllLocalData, getLocalProjectId, setLocalProjectId } from '@/utils'\nimport { Toast } from 'vant'\nimport { queryWorkSpace } from '@/apis/envmonitor'\n\ntype AugmentedActionContext = {\n commit<K extends keyof Mutations>(\n key: K,\n payload: Parameters<Mutations[K]>[1],\n ): ReturnType<Mutations[K]>\n} & Omit<ActionContext<UserState, RootState>, 'commit'>\n\nexport interface Actions {\n [UserActionTypes.ACTION_LOGIN](\n { commit }: AugmentedActionContext,\n userInfo: { username: string, password: string }\n ): void\n\n [UserActionTypes.ACTION_RESET_TOKEN](\n { commit }: AugmentedActionContext\n ): void\n\n [UserActionTypes.ACTION_GET_USER_INFO](\n { commit }: AugmentedActionContext\n ): void\n\n [UserActionTypes.ACTION_GET_WORKSPACE](\n { commit }: AugmentedActionContext\n ): void\n\n [UserActionTypes.ACTION_CHANGE_ROLES](\n { commit }: AugmentedActionContext, role: string\n ): void\n\n [UserActionTypes.ACTION_LOGIN_OUT](\n { commit }: AugmentedActionContext,\n ): void\n}\n\nexport const actions: ActionTree<UserState, RootState> & Actions = {\n async [UserActionTypes.ACTION_LOGIN](\n { commit }: AugmentedActionContext,\n userInfo: { username: string, password: string }\n ) {\n console.log(userInfo)\n // let { username, password } = userInfo\n // username = username.trim()\n // await loginRequest({ username, password }).then(async(res) => {\n // if (res?.code === 0 && res.data.accessToken) {\n // setToken(res.data.accessToken)\n commit(UserMutationTypes.SET_TOKEN, 'eyJhbGciOiJIUzI1NiJ9.eyJidWlsZGluZ19pZCI6ImZmZDc4OGIwOTQzNTQ4NTFiMDM0NTY2YzRkMTJkMTFjIiwidXNlcl9pZCI6IjYwMmVmNzA5YmViNjRhMWY5YTRiNmFmMjE5NmQwYWY3IiwidXNlcl9uYW1lIjpudWxsLCJvd25lcl9pZCI6IjkzNmE4ZWFlMDJmOTExZWNiNTQyMDJiNzIzZjVmYmQwIiwibXlfdGhpcmRfaWQiOiIyMGQ4Mzg0OTZjMGQ0ODk4YjFkN2MxNmRkZTc5ZGQwNiIsInRoaXJkX3BsYXRmb3JtX2lkIjoib3pUVGs1UFJSdUNIRUNqUXZKSXJyT3A1MkRuNCIsInNUaW1lIjoxNjQ2MDM1ODYzNTYwLCJleHAiOjE2NDYzOTU4NjM1NjAsInR5cGUiOiJ3ZWNoYXQiLCJhcHBfaWQiOiJ3eDNhZGQ2MzJmZDMxNDU3YzcifQ.C0khcRbjp_VuGF8gzr-cdybPhX1U1bSEk_48ypub6Y0')\n // }\n // }).catch((err) => {\n // console.log(err)\n // })\n },\n\n [UserActionTypes.ACTION_RESET_TOKEN](\n { commit }: AugmentedActionContext) {\n removeToken()\n commit(UserMutationTypes.SET_TOKEN, '')\n // commit(UserMutationTypes.SET_ROLES, [])\n },\n async [UserActionTypes.ACTION_GET_USER_INFO]({ commit }: AugmentedActionContext) {\n // let nowProjectId: any = 'Pj1101080259'\n const userInfo: any = {\n userName: '陈珍',\n userPhone: 15321277745,\n userId: '602ef709beb64a1f9a4b6af2196d0af7'\n // userId: '9a1ecfbacb6b4f249bf2dd3ec7793ead'\n // userId: '1302990695845462811'\n }\n setSessionUserInfo(JSON.stringify(userInfo))\n commit(UserMutationTypes.SET_USER_NAME, userInfo.userName)\n commit(UserMutationTypes.SET_USER_PHONE, userInfo.phone)\n commit(UserMutationTypes.SET_USER_ID, userInfo.userId)\n let macAdr: any = getCookieMac()\n commit(UserMutationTypes.SET_USER_MAC, macAdr)\n // store.commit(UserMutationTypes.SET_PROJECT_ID, nowProjectId)\n },\n async [UserActionTypes.ACTION_GET_WORKSPACE]({ commit }: AugmentedActionContext) {\n let params: any = {\n \"criteria\": {\n \"macAddress\": \"DA:BF:E8:7A:61:97\"\n },\n \"orders\": [\n {\n \"column\": \"createTime\",\n \"asc\": false\n }\n ],\n \"page\": 1,\n \"size\": 1\n }\n queryWorkSpace(params).then((res) => {\n console.log(\"===\")\n console.log(res)\n })\n },\n async [UserActionTypes.ACTION_CHANGE_ROLES](\n { commit }: AugmentedActionContext,\n role: string\n ) {\n const token = role + '-token'\n const store = useStore()\n commit(UserMutationTypes.SET_TOKEN, token)\n setToken(token)\n await store.dispatch(UserActionTypes.ACTION_GET_USER_INFO, undefined)\n store.dispatch(PermissionActionType.ACTION_SET_ROUTES, [])\n store.state.permission.dynamicRoutes.forEach((item: RouteRecordRaw) => {\n router.addRoute(item)\n })\n },\n\n [UserActionTypes.ACTION_LOGIN_OUT](\n { commit }: AugmentedActionContext\n ) {\n console.log(commit)\n removeToken()\n commit(UserMutationTypes.SET_TOKEN, '')\n // commit(UserMutationTypes.SET_ROLES, [])\n resetRouter()\n }\n}\n","import {\n Store as VuexStore,\n CommitOptions,\n DispatchOptions,\n Module\n} from 'vuex'\n\n// TODO: How to surpass cyclical dependency linting errors cleanly?\nimport { RootState } from '@/store'\nimport { state } from './state'\nimport { mutations, Mutations } from './mutations'\nimport { actions, Actions } from './actions'\nimport type { UserState } from './state'\n\nexport { UserState }\n\nexport type UserStore<S = UserState> = Omit<VuexStore<S>, 'getters' | 'commit' | 'dispatch'>\n& {\n commit<K extends keyof Mutations, P extends Parameters<Mutations[K]>[1]>(\n key: K,\n payload: P,\n options?: CommitOptions\n ): ReturnType<Mutations[K]>\n} & {\n dispatch<K extends keyof Actions>(\n key: K,\n payload: Parameters<Actions[K]>[1],\n options?: DispatchOptions\n ): ReturnType<Actions[K]>\n};\nexport const store: Module<UserState, RootState> = {\n state,\n mutations,\n actions\n // TODO: With namespaced option turned on, having problem how to use dispatch with action types...\n // But without it, a bigger store might have clashes in namings\n // namespaced: true,\n}\n","import {getSession} from \"@/utils\";\n\nexport interface PortaitState {\n airConditioner: boolean,\n light: boolean\n}\n\nexport const state: PortaitState = {\n airConditioner: getSession('portraitModule').airConditioner ? getSession('portraitModule').airConditioner : true,\n light: getSession('portraitModule').light ? getSession('portraitModule').light : true\n}\n","import {MutationTree} from 'vuex'\nimport {PortaitState} from './state'\nimport {PortaitMutationTypes} from './mutation-types'\n\nexport type Mutations<S = PortaitState> = {\n [PortaitMutationTypes.SET_AIR](state: S, airConditioner: boolean): void\n [PortaitMutationTypes.SET_AIR](state: S, light: boolean): void\n}\n\nexport const mutations: MutationTree<PortaitState> & Mutations = {\n [PortaitMutationTypes.SET_AIR](state: PortaitState, airConditioner: boolean) {\n state.airConditioner = airConditioner\n },\n [PortaitMutationTypes.SET_LIGHT](state: PortaitState, light: boolean) {\n state.light = light\n }\n}\n\n\n","import {\n Store as VuexStore,\n CommitOptions,\n Module\n} from 'vuex'\n\n// TODO: How to surpass cyclical dependency linting errors cleanly?\nimport {RootState} from '@/store'\nimport {state} from './state'\nimport {mutations, Mutations} from './mutations'\nimport type {PortaitState} from './state'\n\nexport {PortaitState}\n\nexport type PortaitStore<S = PortaitState> = Omit<VuexStore<S>, 'getters' | 'commit' | 'dispatch'>\n & {\n commit<K extends keyof Mutations, P extends Parameters<Mutations[K]>[1]>(\n key: K,\n payload: P,\n options?: CommitOptions\n ): ReturnType<Mutations[K]>\n}\nexport const store: Module<PortaitState, RootState> = {\n state,\n mutations\n // TODO: With namespaced option turned on, having problem how to use dispatch with action types...\n // But without it, a bigger store might have clashes in namings\n // namespaced: true,\n}\n","import {createStore, createLogger} from 'vuex'\nimport {store as permission, PermissionStore, PermissionState} from '@/store/modules/permission'\nimport {store as user, UserStore, UserState} from '@/store/modules/user'\nimport {store as portait, PortaitStore, PortaitState} from '@/store/modules/portait'\n\nexport interface RootState {\n permission: PermissionState\n user: UserState,\n portait:PortaitState\n}\n\nexport type Store = PermissionStore<Pick<RootState, 'permission'>>\n & UserStore<Pick<RootState, 'user'>> & PortaitStore<Pick<RootState, 'portait'>>\n\n// Plug in logger when in development environment\nconst debug = process.env.NODE_ENV !== 'production'\nconst plugins = debug ? [createLogger({})] : []\n// Plug in session storage based persistence\n// plugins.push(createPersistedState({ storage: window.sessionStorage }))\n\nexport const store = createStore({\n plugins,\n modules: {\n permission,\n user,\n portait\n }\n})\n\nexport function useStore(): Store {\n return store as Store\n}\n","// // 默认配置\n// import { netConfig, settingConfig, themeConfig } from './default'\n// // 自定义配置\n// import customConfig from './customConfig'\n//\n// // 导出配置(自定义配置优先级高)\n// export default Object.assign({}, netConfig, settingConfig, themeConfig, customConfig)\n\nexport const setupService = '/duoduo-service/setup-service/'\nexport const objectService = '/duoduo-service/object-service/'\nexport const duoduoenvService = '/duoduo-service/duoduoenv-service/'\nexport const weachatService = '/duoduo-service/'\nexport const ssoService = '/sso/'\nexport const testApi = '/test/'\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=58418e4c&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4aa70f4f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header-title\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_VanIcon = _resolveComponent(\"VanIcon\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"ignore_com-top\",\n id: \"header\",\n style: _normalizeStyle({ background: _ctx.color })\n }, [\n _createElementVNode(\"div\", {\n class: \"header\",\n style: _normalizeStyle({ background: _ctx.color })\n }, [\n _createElementVNode(\"div\", {\n class: \"header-return\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.goBack && _ctx.goBack(...args)))\n }, [\n _createVNode(_component_VanIcon, { name: \"arrow-left\" })\n ]),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.route.meta.title), 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.route.meta.title1), 1)\n ])\n ], 4)\n ], 4))\n}","\nimport { defineComponent, onMounted, reactive, toRefs } from \"vue\";\nimport { Icon } from \"vant\";\nimport { useRoute, useRouter } from \"vue-router\";\n\nexport default defineComponent({\n props: {\n color: {\n type: String,\n default: () => \"#fff\",\n },\n // title: {\n // type: String,\n // default: () => \"\",\n // },\n },\n components: {\n VanIcon: Icon,\n },\n setup(props) {\n const router = useRouter();\n const route: any = useRoute();\n const proxyData = reactive({\n route: route,\n goBack() {\n if (route.meta.toName) {\n router.push({ name: route.meta.toName });\n } else {\n router.back();\n }\n },\n });\n onMounted(() => {\n console.log(props);\n });\n return {\n ...toRefs(proxyData),\n };\n },\n});\n","import { render } from \"./Comheader.vue?vue&type=template&id=4aa70f4f&scoped=true&ts=true\"\nimport script from \"./Comheader.vue?vue&type=script&lang=ts\"\nexport * from \"./Comheader.vue?vue&type=script&lang=ts\"\n\nimport \"./Comheader.vue?vue&type=style&index=0&id=4aa70f4f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/Users/wangyong/shanggeyun/code/sagacloud-sagacare-ipad/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4aa70f4f\"]])\n\nexport default __exports__","import { RootObject, RootWeatherObject } from '@/model/rootObject'\nimport { CompanyModel, OutherWeather, SpaceModel } from '@/model/userModel'\nimport { https, post } from '@/utils/https'\nimport { ContentType, Method, RequestParams } from 'axios-mapper'\nimport { setQueryConfig } from '@/utils'\nimport { duoduoenvService, objectService, setupService, testApi, weachatService } from '@/config'\n\n// const comInfo = getUserInfo()\n// const comParams: string = \"\"\n\n// https://sagacare-h5.tenants.link/api/company/config/245e7060643811eb934c0237aedb39a6\nexport const getCompanyInfo = (companyInfo: RequestParams) => {\n return https().request<RootObject<CompanyModel>>(`/api/company/config/${companyInfo.companyId}`, Method.GET, undefined, ContentType.json)\n}\nexport const getWeather = (params: string) => {\n return https().request<RootWeatherObject<OutherWeather>>(`${objectService}weather/getCurrent?${params}`, Method.GET, undefined, ContentType.json)\n}\nexport const getSpaceInfo = (data: any) => {\n return https().request<RootWeatherObject<SpaceModel>>(`${duoduoenvService}space/property`, Method.POST, data, ContentType.json)\n}\n\n// 获取会议室场景\nexport const getMeetingSceneHttp = (params: any) => {\n return https().request<any>(`${duoduoenvService}meeting/room/scene/getMeetingScene/V2?spaceId=${params.spaceId}`, Method.GET, undefined, ContentType.json)\n}\n// 获取设备信息\nexport const getEquipmentListHttp = (params: any) => {\n return https().request<any>(`${duoduoenvService}object/equipment/findForServe?spaceId=${params.spaceId}`, Method.POST, undefined, ContentType.json)\n}\n// 查询定制时间\nexport const getSetTimeHttp = (params: any) => {\n return https().request<any>(`${duoduoenvService}customScene/queryCustom?spaceId=${params.spaceId}`, Method.GET, undefined, ContentType.json)\n}\n// 空调 - 调节文案/空调信息\nexport const getFeedbackDocumentsHttp = (data: any) => {\n return https().request<any>(`${duoduoenvService}custom/feedback/documents`, Method.POST, data, ContentType.json)\n}\n\n// 空调调节\nexport const changeTempHttp = (params: any) => {\n return https().request<RootObject<any>>(`${duoduoenvService}custom/feedbackCreate/v2`, Method.POST, params, ContentType.json)\n}\n// 查询灯的状态(优先查采集的状态)\nexport const getLampHttp = (params: any) => {\n return https({ timeout: 1000 }).request<RootObject<any>>(`${duoduoenvService}light/status/query?spaceId=${params.spaceId}`, Method.GET, undefined, ContentType.json)\n}\n\n// 批量操作 灯\nexport const setallLampHttp = (data: any) => {\n return post(`${duoduoenvService}light/onoff/set`, data)\n}\n// 设置窗帘\nexport const setEquipeHttp = (data: any) => {\n return post(`${duoduoenvService}object/eqp/infocode/set`, data)\n}\n\n// 指令失败的时候轮询查询灯的状态\nexport const getStatusHttp = (data: any) => {\n return post(`${duoduoenvService}light/onoff/setSatus`, data)\n}\n\n// 获取窗帘数据列表\nexport const getObjectDataEqpGroupHttp = (params: any) => {\n return https().request<RootObject<any>>(`${duoduoenvService}object/objectDataEqpGroup/query`, Method.POST, params, ContentType.json)\n}\n\n// 切换场景\nexport const switchoverSceneHttp = (params: any) => {\n return https().request<RootObject<any>>(`${duoduoenvService}meeting/room/scene/switchover`, Method.POST, params, ContentType.json)\n}\n\nexport const changeSetTimeHttp = (params: any) => {\n return https().request<RootObject<any>>(`${duoduoenvService}customScene/create`, Method.POST, params, ContentType.json)\n}\n// 详情页面的图表数据\nexport const getChartListHTTP = (params: any) => {\n return https().request<RootObject<any>>(`${duoduoenvService}/spaceAdjust/queryPropertyData?${params}`, Method.GET, undefined, ContentType.json)\n}\n\n// 查询建筑的信息\nexport const getBuildingList = (params: any) => {\n return https().request<any>(`${objectService}object/building/query`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 查询楼层信息\n * @param params\n */\nexport const getFloorList = (params: any) => {\n return https().request<any>(`${objectService}object/floor/query`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 获取地图数据\n * @param params\n */\nexport const getMapInfo = (params: any) => {\n return https().request<any>(`${setupService}map/queryMapInfo`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 获取空间设备\n * @param params\n */\nexport const getSpaceEquipType = (params: any) => {\n return https().request<any>(`${objectService}object/equipment/querySpaceEquipType?${params}`, Method.GET, undefined, ContentType.json)\n}\n\n/**\n * 模糊查询空间列表数据\n * @param params\n */\nexport const getSpaceLike = (params: any) => {\n return https().request<any>(`${objectService}object/space/query`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 增加常驻空间\n */\nexport const permanentSpace = (params: any) => {\n // return https().request<any>(`${setupService}permanentSpace/save`, Method.POST, params, ContentType.json)\n // return https().request<any>(`${testApi}permanentSpace/save`, Method.POST, params, ContentType.json)\n return https().request<any>(`${setupService}permanentSpace/save`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 获取常驻空间\n */\nexport const getPermanentSpace = () => {\n return https().request<any>(`${setupService}permanentSpace/query`, Method.GET, undefined, ContentType.json)\n}\n\n/**\n * 删除常驻空间\n */\nexport const delPermanentSpace = (params: any) => {\n return https().request<any>(`${setupService}permanentSpace/delete?${params}`)\n}\n\n/**\n * 获取用户使用权限\n */\nexport const getUserControlAuth = () => {\n return https().request<any>(`${setupService}permanentSpace/queryZJ`, Method.GET, undefined, ContentType.json)\n}\n\n/**\n * 获取空间运行模式\n */\nexport const getSpaceMode = () => {\n return https().request<any>(`${objectService}object/equipment/querySpaceModeSet`, Method.GET, undefined, ContentType.json)\n}\n/**\n * 获取空调设备温度\n */\nexport const getSpaceTemp = () => {\n return https().request<any>(`${objectService}object/equipment/querySpaceTempSet`, Method.GET, undefined, ContentType.json)\n}\n\n/**\n * \n * @param params 查询场景配置\n * @returns \n */\nexport const querySpaceSceneConfig = (params: any) => {\n return https().request<any>(`${setupService}scene/querySpaceSceneConfig?${params}`, Method.GET, undefined, ContentType.json)\n}\n\n/**\n * 查询加班记录\n */\nexport const queryCustomAndScence = (params: any) => {\n return https().request<any>(`${duoduoenvService}customScene/queryCustomAndScence?${params}`, Method.GET, undefined, ContentType.json)\n}\n\n/**\n * 添加(取消)加班记录\n * @param params\n */\nexport const saveBatchCustomScene = (data: any) => {\n return post(`${duoduoenvService}customScene/saveBatchCustomScene`, data)\n}\n\n/**\n * 查询默认位置\n */\nexport const getDefaultLocation = (params: any) => {\n return https().request<any>(`${setupService}padSpace/getDefaultLocation?${params}`, Method.GET, undefined, ContentType.json)\n}\n\n/**\n * 查询空间列表\n */\nexport const getPadSpaceList = (params: any) => {\n return https().request<any>(`${setupService}padSpace/getPadSpaceList?${params}`, Method.GET, undefined, ContentType.json)\n}\n\n/**\n * 设置成办公空间-(\"批量保存\")\n */\nexport const saveWorkSpace = (params: any) => {\n return https().request<any>(`${setupService}padSpace/saveWorkSpace`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 设置工作空间\n * @param params \n */\nexport const insertWorkSpace = (params: any) => {\n return https().request<any>(`${setupService}padSpace/insertWorkSpace`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 删除工作空间\n * @param params \n */\nexport const deleteWorkSpace = (params: any) => {\n return https().request<any>(`${setupService}padSpace/deleteWorkSpace`, Method.POST, params, ContentType.json)\n}\n\n\n\n/**\n * 查询平板下面的办公空间\n */\nexport let queryWorkSpace = (params: any) => {\n return https().request<any>(`${setupService}padSpace/queryWorkSpace`, Method.POST, params, ContentType.json)\n}\n\n\n/**\n * 查询平板下面的办公空间\n */\nexport let checkWorkSpace = (params: any) => {\n return https().request<any>(`${setupService}padSpace/queryWorkSpace`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 查询客户列表\n */\nexport const queryCustomerservice = (params: any) => {\n return https().request<RootObject<any>>(`${weachatService}/wechat-service-duoduoenv/duoduoenv/customerservice/query`, Method.POST, params, ContentType.json)\n}\n\n\n/**\n * 获取二维码状态\n */\nexport const getPadQrCodeStatus = (params: any) => {\n return https().request<any>(`${setupService}padLogin/getPadQrCodeStatus?${params}`, Method.GET, undefined, ContentType.json)\n}\n\n\n\n","import Keys from '@/constant/key'\nimport Cookies from 'js-cookie'\nimport { UserInfoModel } from '@/model/userModel'\n\nexport const setLanguage = (language: string) => Cookies.set(Keys.languageKey, language)\nexport const setSize = (size: string) => Cookies.set(Keys.sizeKey, size)\nexport const getToken = () => Cookies.get(Keys.tokenKey)\nexport const getProjectId = () => Cookies.get(Keys.projectId)\nexport const setProjectId = (projectId: any) => Cookies.set(Keys.projectId, projectId)\nexport const setToken = (token: string) => Cookies.set(Keys.tokenKey, token)\nexport const removeToken = () => Cookies.remove(Keys.tokenKey)\nexport const setCookieUserInfo = (userInfo: any) => Cookies.set(Keys.userInfoKey, userInfo)\nexport const setCookieMac = (mac: any) => Cookies.set(Keys.macKey, mac)\nexport const getCookieMac = () => {\n return Cookies.get(Keys.macKey)\n}\nexport const getCookieUserInfo = () => {\n let userInfo: any = Cookies.get(Keys.userInfoKey)\n if (userInfo) {\n return JSON.parse(userInfo)\n } else {\n return ''\n }\n}\n\nexport const getSessionUserInfo = () => {\n let userInfo: any = sessionStorage.getItem(Keys.userInfoKey)\n if (userInfo) {\n return JSON.parse(userInfo)\n } else {\n return ''\n }\n}\nexport const setSessionUserInfo = (userInfo: any) => sessionStorage.setItem(Keys.userInfoKey, userInfo)\n\n\n","export enum ContentType{\n FORM = 'application/x-www-form-urlencoded',\n JSON = 'application/json; charset=utf-8'\n}\n\nexport enum Device{\n // IOS = 'iOS',\n // ANDROID = 'Android',\n // WINDOWS = 'Windows',\n PC='PC'\n}\n","export enum InfoShowType{\n LOG,\n // NOTIFICATION,\n TOAST\n }\n","export enum Environment{\n Development = 'development',\n Production = 'production'\n}\n\nexport enum RouterSource{\n Frontend = 'frontend',\n Backend = 'backend'\n}\n\nexport enum RouterMode{\n Hash = 'hash'\n // HISTORY = 'history'\n}\n\nexport enum TokenStorageName{\n LocalStorage = 'localStorage',\n // SessionStorage = 'sessionStorage',\n Cookie = 'cookie'\n}\n","import { Environment, RouterSource, RouterMode, TokenStorageName } from '@/constant/settings'\n\nexport interface Settings{\n //项目中页面显示的名称\n title:string\n //基础url\n baseURL?: string\n // pro版本copyright可随意修改\n copyright?: string\n // 缓存路由的最大数量\n keepAliveMaxNum?: number\n // 路由模式,可选值为 history 或 hash\n routerMode?: RouterMode\n // 不经过token校验的路由\n routesWhiteList?: string[]\n // 加载时显示文字\n loadingText?: string\n // token名称\n tokenName?: string\n // token在localStorage、sessionStorage、cookie存储的key的名称\n tokenTableName?: string\n // token存储位置localStorage sessionStorage cookie\n storage?: TokenStorageName\n // token失效回退到登录页时是否记录本次的路由\n recordRoute?: true\n // 是否显示logo,不显示时设置false,显示时请填写remixIcon图标名称,暂时只支持设置remixIcon\n logo?: string\n // 在哪些环境下显示高亮错误\n errorLog?: Environment\n // 是否开启登录拦截\n loginInterception?: true\n // 是否开启登录RSA加密\n loginRSA?: false\n // fontEnd(前端导出路由)和backEnd(后端导出路由)两种方式\n routerSource?: RouterSource\n // 是否开启roles字段进行角色权限控制(如果是all模式后端完全处理角色并进行json组装,可设置false不处理路由中的roles字段)\n rolesControl?: boolean\n // vertical gallery comprehensive common布局时是否只保持一个子菜单的展开\n uniqueOpened?: boolean\n // vertical布局时默认展开的菜单path,使用逗号隔开建议只展开一个\n defaultOpeneds?: string[]\n // 需要加loading层的请求,防止重复提交\n debounce?: string[]\n // 代码生成机生成在view下的文件夹名称\n templateFolder?: string\n // 画廊布局和综合布局时,是否点击一级菜单默认开启第一个二级菜单\n openFirstMenu?: boolean,\n version: string\n}\n\nconst settings: Settings = {\n //项目中页面显示的名称\n title:'之江h5',\n //基础url\n baseURL: process.env.VUE_APP_BASE_API,\n // pro版本copyright可随意修改\n copyright: 'zy',\n // 缓存路由的最大数量\n keepAliveMaxNum: 99,\n // 路由模式,可选值为 history 或 hash\n routerMode: RouterMode.Hash,\n // 不经过token校验的路由\n routesWhiteList: [],\n // 加载时显示文字\n loadingText: 'loading',\n // token名称\n tokenName: 'token',\n // token在localStorage、sessionStorage、cookie存储的key的名称\n tokenTableName: 'token',\n // token存储位置localStorage sessionStorage cookie\n storage: TokenStorageName.LocalStorage,\n // token失效回退到登录页时是否记录本次的路由\n recordRoute: true,\n // 是否显示logo,不显示时设置false,显示时请填写remixIcon图标名称,暂时只支持设置remixIcon\n logo: '',\n // 在哪些环境下显示高亮错误\n errorLog: Environment.Development,\n // 是否开启登录拦截\n loginInterception: true,\n // 是否开启登录RSA加密\n loginRSA: false,\n // fontEnd(前端导出路由)和backEnd(后端导出路由)两种方式\n routerSource: RouterSource.Backend,\n // 是否开启roles字段进行角色权限控制(如果是all模式后端完全处理角色并进行json组装,可设置false不处理路由中的roles字段)\n rolesControl: true,\n // vertical gallery comprehensive common布局时是否只保持一个子菜单的展开\n uniqueOpened: false,\n // vertical布局时默认展开的菜单path,使用逗号隔开建议只展开一个\n defaultOpeneds: ['/vab'],\n // 需要加loading层的请求,防止重复提交\n debounce: ['doEdit'],\n // 代码生成机生成在view下的文件夹名称\n templateFolder: 'project',\n // 画廊布局和综合布局时,是否点击一级菜单默认开启第一个二级菜单\n openFirstMenu: true,\n version: '1.0'\n}\n\nexport default settings\n","\nimport { ContentType, Device } from '@/constant/headers'\nimport { InfoShowType } from '@/constant/network'\nimport settings from \"./setting.config\";\ninterface Headers{\n token: string\n contentType: string\n version: string\n device: Device\n}\n\nconst _header: Headers = {\n token: '',\n contentType: ContentType.JSON,\n version: settings.version ?? '1.0',\n device: Device.PC\n}\n\nexport interface NetworkConfig{\n host?: string\n timeout?: number\n loading?: false\n errorShowType?: InfoShowType\n header?: {},\n staticUrl?:string\n}\n\nconst networkConfig: NetworkConfig = {\n host: process.env.VUE_APP_BASE_API,\n timeout: 10000,\n loading: false,\n errorShowType: InfoShowType.LOG,\n header: _header,\n staticUrl:'https://brsg-test.tenants.link'\n}\n\nexport default networkConfig\n","import { useStore } from '@/store'\nimport HttpClient, { HttpClientConfig } from 'axios-mapper'\nimport networkConfig from '@/config/default/net.config'\nimport { getToken } from '@/utils/cookies'\nimport { Toast } from 'vant'\nimport Cookies from 'js-cookie'\nimport { request } from 'http'\nimport { getComparams, getUserInfo, setQueryConfig } from '.'\n\nexport const https = (configobj: any = { timeout: '' }) => {\n // debugger\n let config: HttpClientConfig = {\n baseURL: networkConfig.host,\n headers: {\n 'token': getToken(),\n 'sso-token': getToken(),\n 'X-Forwarded-Token': getToken()\n }\n }\n if (configobj.timeout) {\n config.timeout = configobj.timeout\n }\n const https = new HttpClient(config)\n https.httpClient.interceptors.request.use(function (request) {\n const comInfo = getUserInfo()\n const comParams: string = setQueryConfig(comInfo)\n let url: any = request.url\n if (url.indexOf(\"?\") != -1) {\n request.url = request.url + \"&\" + comParams\n } else {\n request.url = request.url + \"?\" + comParams\n }\n return request\n }, function (error) {\n\n })\n // https.httpClient.interceptors.response.use(function (response) {\n // return response\n // }, function (error) {\n // // console.log('error===')\n // // console.log(error.response.status)\n // // console.log(error.status)\n // // if (error.response.status === 401) {\n // // Toast('登录失效,请退出app重新登录')\n // // sessionStorage.clear()\n // // const tokenOld: any = Cookies.get('accessToken')\n // // window.location.href = `/sgh5/home?accessToken=${tokenOld}`\n // // }\n // return Promise.reject(error)\n // })\n return https\n}\n\nexport const post = (url: any, data: any) => {\n return https().httpClient.post<Array<any>>(url, data).then(res => {\n const resData: string = JSON.parse(JSON.stringify(res.data))\n if (res.status >= 200 && res.status < 300) {\n return Promise.resolve(resData)\n } else {\n return Promise.reject(resData)\n }\n }).catch(async error => {\n return Promise.reject(error)\n })\n}\n\nexport const getUrlParams = (key: any = 'accessToken') => {\n let url: any = location.search //获取url中\"?\"符后的字串\n let theRequest: any = new Object()\n if (url.indexOf('?') != -1) {\n let str: any = url.substr(1)\n let strs: any = str.split('&')\n for (var i = 0; i < strs.length; i++) {\n theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1]\n }\n }\n let token: string = theRequest[key] || ''\n return token\n}\n\n\n\n","class Keys {\n static sidebarStatusKey = 'vue3-typescript-admin-sidebarStatusKey'\n static languageKey = 'vue3-typescript-admin-languageKey'\n static sizeKey = 'vue3-typescript-admin-sizeKey'\n static tokenKey = 'accessToken'\n static projectId = 'projectId'\n static aseKey = 'vue3-typescript-admin-ase-key'\n static companyKey = '245e7060643811eb934c0237aedb39a6'\n static openid = '602ef709beb64a1f9a4b6af2196d0af7'\n // static pubname = 'ipdh5'\n static pubname = 'sagacareAndtenantslink'\n static pubname1 = 'sagacareAndtenantslink'\n static storageSpaceKey = 'historySpace'\n static historySearchSpaceKey = 'historySearchSpace'\n static storageFloorKey = 'historyFloor'\n static storageSpaceInfoKey = 'storageSpaceInfo'\n static userInfoKey = 'userInfo'\n static macKey = \"mac\"\n}\n\nexport default Keys\n",";(function(win, lib) {\n var doc = win.document;\n var docEl = doc.documentElement;\n var metaEl = doc.querySelector('meta[name=\"viewport\"]');\n var flexibleEl = doc.querySelector('meta[name=\"flexible\"]');\n var dpr = 0;\n var scale = 0;\n var tid;\n var flexible = lib.flexible || (lib.flexible = {});\n\n if (metaEl) {\n console.warn('将根据已有的meta标签来设置缩放比例');\n var match = metaEl.getAttribute('content').match(/initial\\-scale=([\\d\\.]+)/);\n if (match) {\n scale = parseFloat(match[1]);\n dpr = parseInt(1 / scale);\n }\n } else if (flexibleEl) {\n var content = flexibleEl.getAttribute('content');\n if (content) {\n var initialDpr = content.match(/initial\\-dpr=([\\d\\.]+)/);\n var maximumDpr = content.match(/maximum\\-dpr=([\\d\\.]+)/);\n if (initialDpr) {\n dpr = parseFloat(initialDpr[1]);\n scale = parseFloat((1 / dpr).toFixed(2));\n }\n if (maximumDpr) {\n dpr = parseFloat(maximumDpr[1]);\n scale = parseFloat((1 / dpr).toFixed(2));\n }\n }\n }\n\n if (!dpr && !scale) {\n var isAndroid = win.navigator.appVersion.match(/android/gi);\n var isIPhone = win.navigator.appVersion.match(/iphone/gi);\n var devicePixelRatio = win.devicePixelRatio;\n if (isIPhone) {\n // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案\n if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {\n dpr = 3;\n } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){\n dpr = 2;\n } else {\n dpr = 1;\n }\n } else {\n // 其他设备下,仍旧使用1倍的方案\n dpr = 1;\n }\n scale = 1 / dpr;\n }\n\n docEl.setAttribute('data-dpr', dpr);\n if (!metaEl) {\n metaEl = doc.createElement('meta');\n metaEl.setAttribute('name', 'viewport');\n metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');\n if (docEl.firstElementChild) {\n docEl.firstElementChild.appendChild(metaEl);\n } else {\n var wrap = doc.createElement('div');\n wrap.appendChild(metaEl);\n doc.write(wrap.innerHTML);\n }\n }\n\n function refreshRem(){\n var width = docEl.getBoundingClientRect().width;\n if (width / dpr > 1366) {\n width = 1366 * dpr;\n }\n var rem = width / 10;\n docEl.style.fontSize = rem + 'px';\n flexible.rem = win.rem = rem;\n }\n\n win.addEventListener('resize', function() {\n clearTimeout(tid);\n tid = setTimeout(refreshRem, 300);\n }, false);\n win.addEventListener('pageshow', function(e) {\n if (e.persisted) {\n clearTimeout(tid);\n tid = setTimeout(refreshRem, 300);\n }\n }, false);\n\n if (doc.readyState === 'complete') {\n doc.body.style.fontSize = 12 * dpr + 'px';\n } else {\n doc.addEventListener('DOMContentLoaded', function(e) {\n doc.body.style.fontSize = 12 * dpr + 'px';\n }, false);\n }\n\n\n refreshRem();\n\n flexible.dpr = win.dpr = dpr;\n flexible.refreshRem = refreshRem;\n flexible.rem2px = function(d) {\n var val = parseFloat(d) * this.rem;\n if (typeof d === 'string' && d.match(/rem$/)) {\n val += 'px';\n }\n return val;\n }\n flexible.px2rem = function(d) {\n var val = parseFloat(d) / this.rem;\n if (typeof d === 'string' && d.match(/px$/)) {\n val += 'rem';\n }\n return val;\n }\n\n})(window, window['lib'] || (window['lib'] = {}));\n","export enum PortaitMutationTypes {\n SET_AIR = 'SET_AIR',\n SET_LIGHT = 'SET_LIGHT',\n}\n","/*\n * @Description: user mutations type\n * @Author: ZY\n * @Date: 2020-12-23 10:25:37\n * @LastEditors: ZY\n * @LastEditTime: 2020-12-28 11:33:53\n */\n\nexport enum UserMutationTypes {\n SET_TOKEN = 'SET_TOKEN',\n SET_USER_NAME = 'SET_USER_NAME',\n SET_USER_ID = 'SET_USER_ID',\n SET_USER_PHONE = 'SET_USER_PHONE',\n SET_PROJECT_ID = 'SET_PROJECT_ID',\n SET_COMPANY_ID = 'SET_COMPANY_ID',\n SET_REMOTECONTROL = 'SET_REMOTECONTROL',\n SET_USER_MAC = 'SET_USER_MAC'\n}\n","import { createRouter, Router, createWebHashHistory, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nconst Home: any = () => import('@/views/home/index.vue')\nconst Envmonitor: any = () => import('@/views/envmonitor/index.vue')\nconst EnvmonitorDetail: any = () => import('@/views/envmonitor/detail.vue')\nconst UserPortrait: any = () => import('@/views/portrait/index.vue')\nconst EnergySavig: any = () => import('@/views/portrait/energySavig.vue')\nconst EnergyDetail: any = () => import('@/views/portrait/energyDetail.vue')\nconst TodayEnergyDetail: any = () => import('@/views/portrait/todayEnergyDetail.vue')\nconst EnergyRank: any = () => import('@/views/portrait/energyRank.vue')\nconst IntegralDesc: any = () => import('@/views/portrait/integralDesc.vue')\nconst Record: any = () => import('@/views/portrait/record.vue')\nconst MySpace: any = () => import('@/views/envmonitor/mySpace/index.vue')\nconst SetMainSpace: any = () => import('@/views/choiceSpace/setMainSpace.vue')\n\nexport const constantRoutes: Array<RouteRecordRaw> = [\n {\n path: '/',\n redirect: '/home',\n meta: {\n title: '首页',\n hideHeader: true\n }\n },\n {\n path: '/home',\n component: Home,\n name: 'home',\n meta: {\n title: '首页',\n hideHeader: true\n }\n },\n {\n path: '/envmonitor',\n component: Envmonitor,\n // component: resolve => require(['@/views/envmonitor/index.vue'], resolve),\n name: 'envmonitor',\n meta: {\n title: '环境控制',\n hideHeader: true\n }\n },\n {\n path: '/envmonitor-detail',\n // component: () => import('@/views/envmonitor/detail.vue'),\n component: EnvmonitorDetail,\n name: 'envmonitorDetail',\n meta: {\n title: '环境详情',\n color: '#fff',\n hideHeader: true\n }\n },\n {\n path: '/user-portrait',\n // component: () => import('@/views/portrait/index.vue'),\n component: UserPortrait,\n name: 'userPortrait',\n meta: {\n title: '节能评分',\n color: '#FFE823',\n hideHeader: true\n }\n },\n {\n path: '/energy-savig',\n // component: () => import('@/views/portrait/energySavig.vue'),\n component: EnergySavig,\n name: 'energySavig',\n meta: {\n title: '我的节能',\n color: '#ECEFF4',\n hideHeader: true\n }\n },\n {\n path: '/energy-detail',\n // component: () => import('@/views/portrait/energyDetail.vue'),\n component: EnergyDetail,\n name: 'energyDetail',\n meta: {\n title: '我的节能详情 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/today-energy-detail',\n // component: () => import('@/views/portrait/todayEnergyDetail.vue'),\n component: TodayEnergyDetail,\n name: 'todayEnergyDetail',\n meta: {\n title: '今天新增 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/energy-rank',\n // component: () => import('@/views/portrait/energyRank.vue'),\n component: EnergyRank,\n name: 'energyRank',\n meta: {\n title: '节能排名 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/integral-desc',\n // component: () => import('@/views/portrait/integralDesc.vue'),\n component: IntegralDesc,\n name: 'integralDesc',\n meta: {\n title: '积分说明 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/record',\n // component: () => import('@/views/portrait/record.vue'),\n component: Record,\n name: 'Record',\n meta: {\n title: '调节记录 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/mySpace',\n // component: () => import('@/views/envmonitor/mySpace/index.vue'),\n component: MySpace,\n name: 'mySpace',\n meta: {\n title: '切换空间',\n color: '#f7f8fa',\n hideHeader: true\n }\n },\n {\n path: '/choice-project',\n component: () => import('@/views/choiceSpace/choiceProject.vue'),\n name: 'choiceProject',\n meta: {\n title: '选择所属公司名称',\n toName: \"home\",\n color: '#fff',\n hideHeader: false\n }\n },\n {\n path: '/choice-space',\n component: () => import('@/views/choiceSpace/choiceSpace.vue'),\n name: 'choiceSpace',\n meta: {\n title: '选择办公空间',\n toName: \"choiceProject\",\n color: '#F5F5F5',\n hideHeader: false\n }\n },\n {\n path: '/set-main-space',\n component: () => import('@/views/choiceSpace/setMainSpace.vue'),\n name: 'setMainSpace',\n meta: {\n title: '设置主空间',\n title1: '左滑动可删除空间',\n color: '#F5F5F5',\n hideHeader: false\n }\n }\n]\n\nexport const asyncRoutes: Array<RouteRecordRaw> = [\n // ...permissionModules\n]\nconst router = createRouter({\n history: createWebHistory('/sgipad/'),\n // history: createWebHashHistory('/sgh5/'),\n routes: constantRoutes\n})\n\nexport function resetRouter() {\n const newRouter = router;\n (router as any).matcher = (newRouter as any).matcher // reset router\n}\n\nexport default router\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#fff\",\"menuText\":\"#162b64\",\"menuActiveText\":\"#435ebe\"};","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58418e4c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"home\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Header = _resolveComponent(\"Header\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.route.meta && !_ctx.route.meta.hideHeader)\n ? (_openBlock(), _createBlock(_component_Header, {\n key: 0,\n color: _ctx.route.meta.color\n }, null, 8, [\"color\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: _normalizeClass(!_ctx.route.meta.hideHeader?'ptheader':''),\n style: _normalizeStyle({'background': _ctx.route.meta.color})\n }, null, 6),\n (_openBlock(), _createBlock(_component_router_view, {\n key: _ctx.route.fullPath\n }))\n ]))\n}","\nimport { defineComponent, nextTick, onMounted, reactive, toRefs } from 'vue'\nimport Header from '@/components/header/Comheader.vue'\nimport { useRoute, onBeforeRouteUpdate } from 'vue-router'\n\nexport default defineComponent({\n components: {\n Header\n },\n setup() {\n const route: any = useRoute()\n const data = reactive({\n route: route,\n transitionName: 'slide-right',\n showHeader: false\n })\n nextTick(() => {\n const document: any = window.document\n document.addEventListener('touchstart', function(event: any) {\n if (event.touches.length > 1) {\n event.preventDefault()\n }\n })\n document.addEventListener('gesturestart', function(event: any) {\n event.preventDefault()\n })\n })\n onMounted(() => {\n // debugger\n });\n return {\n ...toRefs(data\n )\n }\n }\n})\n","import { render } from \"./App.vue?vue&type=template&id=58418e4c&scoped=true&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=58418e4c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/Users/wangyong/shanggeyun/code/sagacloud-sagacare-ipad/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-58418e4c\"]])\n\nexport default __exports__","import router from '@/router'\nimport { RouteLocationNormalized } from 'vue-router'\nimport { useStore } from './store'\nimport { UserActionTypes } from './store/modules/user/action-types'\n// import { getUrlaccessToken } from '@/utils/https'\nimport { getToken, setCookieMac, setToken } from '@/utils/cookies'\nimport { Toast } from 'vant'\nimport Cookies from 'js-cookie'\nimport { getUrlParams } from './utils/https'\n\nrouter.beforeEach(async (to: RouteLocationNormalized, _: RouteLocationNormalized, next: any) => {\n const store = useStore()\n let macAdr: string = getUrlParams('mac')\n if (macAdr) {\n setCookieMac(macAdr)\n }\n await store.dispatch(UserActionTypes.ACTION_GET_USER_INFO, undefined)\n next()\n // const store = useStore()\n // const accessToken: any = getUrlaccessToken()\n // if (accessToken) {\n // setToken(accessToken)\n // }\n // if (process.env.VUE_APP_BASE_API !== '/borui/') {\n // if (to.path === '/home') {\n // next()\n // } else {\n // if (getToken()) {\n // if (store.state.user.userId) {\n // next()\n // } else {\n // await store.dispatch(UserActionTypes.ACTION_GET_USER_INFO, undefined)\n // next()\n // }\n // } else {\n // sessionStorage.clear()\n // const tokenOld: any = Cookies.get('accessToken')\n // if (to.path !== '/home') {\n // window.location.href = `/sgh5/home?accessToken=${tokenOld}`\n // }\n // Toast('登录失效,请退出app重新登录')\n // }\n // }\n // } else {\n // if (store.state.user.userId) {\n // next()\n // } else {\n // await store.dispatch(UserActionTypes.ACTION_GET_USER_INFO, undefined)\n // next()\n // }\n // }\n})\n\nrouter.afterEach((to: RouteLocationNormalized) => {\n // console.log(to)\n // Finish progress bar\n // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939\n\n // set page title\n // document.title = getPageTitle(to.meta.title)\n})\n","import { createApp } from 'vue'\nimport App from './App.vue'\nimport router from './router'\nimport { store } from './store'\n// import 'amfe-flexible' // rem 布局适配\n// import 'amfe-flexible/index.js'\nimport '@/utils/flexible.js'\nimport '@/styles/index.scss'\nimport { Toast, Icon, Tab, Tabs, Loading, Popup } from 'vant'\nimport '@/permission'\n\nconst app = createApp(App)\n\n// Toast.setDefaultOptions()\nconst loadingStart = (duration: any = 0) => {\n Toast.loading({\n duration: duration, // 持续展示 toast\n forbidClick: true\n })\n}\nconst loadinngEnd = () => {\n Toast.clear()\n}\napp.config.globalProperties.$imgUrl=`http://api.sagacloud.cn/dp-auxiliary/image-service/common/image_get?systemId=dataPlatform`\napp.config.globalProperties.$toast = Toast\napp.config.globalProperties.$loadingStart = loadingStart\napp.config.globalProperties.$loadinngEnd = loadinngEnd\napp\n .use(Toast).use(Icon)\n .use(Tabs)\n .use(Tab)\n .use(Loading)\n .use(Popup)\n .use(store)\n .use(router)\n .mount('#app')\n","\nexport enum UserActionTypes {\n ACTION_LOGIN = 'ACTION_LOGIN',\n ACTION_RESET_TOKEN = 'ACTION_RESET_TOKEN',\n ACTION_GET_USER_INFO = 'ACTION_GET_USER_INFO',\n ACTION_CHANGE_ROLES = 'ACTION_CHANGE_ROLES',\n ACTION_LOGIN_OUT = 'ACTION_LOGIN_OUT',\n SET_USER_MAC = 'SET_USER_MAC',\n ACTION_GET_WORKSPACE = \"ACTION_GET_WORKSPACE\"\n}\n","// Parse the time to string\nimport { store } from '@/store'\nimport Keys from '@/constant/key'\nimport any = jasmine.any\nimport Cookies from 'js-cookie'\n\nexport const parseTime = (\n time?: object | string | number | null,\n cFormat?: string\n): string | null => {\n if (time === undefined || !time) {\n return null\n }\n const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n let date: Date\n if (typeof time === 'object') {\n date = time as Date\n } else {\n if (typeof time === 'string') {\n if (/^[0-9]+$/.test(time)) {\n // support \"1548221490638\"\n time = parseInt(time)\n } else {\n // support safari\n // https://stackoverflow.com/questions/4310953/invalid-date-in-safari\n time = time.replace(new RegExp(/-/gm), '/')\n }\n }\n if (typeof time === 'number' && time.toString().length === 10) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj: { [key: string]: number } = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n }\n const timeStr = format.replace(/{([ymdhisa])+}/g, (result, key) => {\n const value = formatObj[key]\n // Note: getDay() returns 0 on Sunday\n if (key === 'a') {\n return ['日', '一', '二', '三', '四', '五', '六'][value]\n }\n return value.toString().padStart(2, '0')\n })\n return timeStr\n}\n\n// Format and filter json data using filterKeys array\nexport const formatJson = (filterKeys: any, jsonData: any) =>\n jsonData.map((data: any) => filterKeys.map((key: string) => {\n if (key === 'timestamp') {\n return parseTime(data[key])\n } else {\n return data[key]\n }\n }))\n\n// Check if an element has a class\nexport const hasClass = (ele: HTMLElement, className: string) => {\n return !!ele.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n}\n\n// Add class to element\nexport const addClass = (ele: HTMLElement, className: string) => {\n if (!hasClass(ele, className)) ele.className += ' ' + className\n}\n\n// Remove class from element\nexport const removeClass = (ele: HTMLElement, className: string) => {\n if (hasClass(ele, className)) {\n const reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\n ele.className = ele.className.replace(reg, ' ')\n }\n}\n\n// Toggle class for the selected element\nexport const toggleClass = (ele: HTMLElement, className: string) => {\n if (!ele || !className) {\n return\n }\n let classString = ele.className\n const nameIndex = classString.indexOf(className)\n if (nameIndex === -1) {\n classString += '' + className\n } else {\n classString =\n classString.substr(0, nameIndex) +\n classString.substr(nameIndex + className.length)\n }\n ele.className = classString\n}\nexport const setQueryConfig = function (queryConfig: any) {\n let _str = ''\n for (const o in queryConfig) {\n if (queryConfig[o] !== -1) {\n _str += o + '=' + queryConfig[o] + '&'\n }\n }\n _str = _str.substring(0, _str.length - 1) // 末尾是&\n return _str\n}\n\n// 获取用户信息\nexport const getUserInfo = function () {\n // debugger\n let userInfo = store.state.user\n const paramsInfo: any = {\n openid: userInfo.openid,\n userId: userInfo.userId,\n mac: userInfo.mac,\n pubname: Keys.pubname,\n projectId: userInfo.projectId\n }\n if (userInfo.userName) {\n paramsInfo.userName = userInfo.userName\n }\n if (userInfo.userPhone) {\n paramsInfo.userPhone = userInfo.userPhone\n }\n return paramsInfo\n}\n\n\n// 地址通用参赛携带\nexport const getComparams = function () {\n let userInfo = store.state.user\n let paramsInfo: any = {\n openid: Keys.openid,\n userId: userInfo.userId,\n pubname: Keys.pubname,\n mac: userInfo.mac,\n projectId: userInfo.projectId\n }\n if (userInfo.userName) {\n paramsInfo.userName = userInfo.userName\n }\n if (userInfo.userPhone) {\n paramsInfo.userPhone = userInfo.userPhone\n }\n return paramsInfo\n}\n\nexport const formatDate = function (split: string = 'YYYYMMDD', date: any = new Date()) {\n //三目运算符\n const dates = date ? date : new Date()\n //年份\n const year: number = dates.getFullYear()\n //月份下标是0-11\n const month: any = (dates.getMonth() + 1) < 10 ? '0' + (dates.getMonth() + 1) : (dates.getMonth() + 1)\n //具体的天数\n const day: any = dates.getDate() < 10 ? '0' + dates.getDate() : dates.getDate()\n // //小时\n const Hours = dates.getHours() < 10 ? '0' + dates.getHours() : dates.getHours()\n // //分钟\n const Minutes = dates.getMinutes() < 10 ? '0' + dates.getMinutes() : dates.getMinutes()\n // //秒\n // const Seconds = dates.getSeconds() < 10 ? '0' + dates.getSeconds() : dates.getSeconds()\n //返回数据格式\n if (split === 'YYYY年MM月DD日') {\n return year + '年' + month + '月' + day + '日'\n } else if (split === 'YYYY.MM') {\n return year + '.' + month\n } else if (split === 'YYYYMM') {\n return year + '' + month\n } else if (split === 'YYYY-MM-DD') {\n return year + '-' + month + '-' + day\n } else if (split === 'YYYY.MM.DD HH:mm') {\n return year + '.' + month + \".\" + day + \" \" + Hours + \":\" + Minutes\n }\n {\n return year + '' + month + '' + day\n }\n}\n\n// 把字符串 (yyyymmdd) 转换成日期格式(yyyy-mm-dd)\nexport const formatDateStr = function (date: any) {\n if (date) {\n return date.replace(/^(\\d{4})(\\d{2})(\\d{2})$/, '$1-$2-$3')\n } else {\n return ''\n }\n}\nexport const getTomorrow = function (split: any = '') {\n let dates = new Date()\n dates.setTime(dates.getTime() + 24 * 60 * 60 * 1000)\n const Year: number = dates.getFullYear()\n //月份下标是0-11\n const Months: any = (dates.getMonth() + 1) < 10 ? '0' + (dates.getMonth() + 1) : (dates.getMonth() + 1)\n //具体的天数\n const day: any = dates.getDate() < 10 ? '0' + dates.getDate() : dates.getDate()\n //返回数据格式\n return Year + split + Months + split + day\n}\n\nexport function getHours() {\n return new Date().getHours()\n}\n\nexport function parseImgUrl(base: string, img: string) {\n if (img) {\n return `${process.env.BASE_URL}images/${base}/${img}`\n } else {\n return ''\n }\n}\n\n// 判断舒服在当前公司\nexport function isWithinLocation(companyConfig: any) {\n let targetLocationInfo, maxDistance\n // 是否有权限不限制距离 true-不限制,false-限制\n let remoteControl = store.state.user.remoteControl\n // let companyConfig = store.state.company.companyConfig\n\n if (companyConfig.sagaCare && companyConfig.sagaCareLimit) {\n maxDistance = companyConfig.sagaCareDistance\n let location = companyConfig.sagaCareCoords.split(',')\n targetLocationInfo = {\n longitude: location[0],\n latitude: location[1]\n }\n }\n maxDistance = maxDistance || 1\n let toastTip = '您好像不在公司'\n}\n\n/**\n * js 获取以前或者未来日期\n * @param year\n */\nexport function getAddYear(year: number = 0) {\n let time = new Date()\n time.setFullYear(time.getFullYear() + year)\n let y = time.getFullYear()\n let m = time.getMonth() + 1\n return new Date(y + '/' + m)\n}\n\n/**\n *\n * 获取上一个月,日期格式yyyyMM\n */\nexport function getPreMonth(formatType: any = '') {\n const nowdays = new Date()\n let year = nowdays.getFullYear()\n let month: any = nowdays.getMonth()\n if (month === 0) {\n month = 12\n year = year - 1\n }\n if (month < 10) {\n month = '0' + month\n }\n if (formatType === 'YYYY.MM') {\n return year + '.' + month\n } else if (formatType === 'YYYY年MM月') {\n return year + '年' + month + '月'\n } else {\n return year + '' + month\n }\n}\n\n/**\n * 格式化日期 3月21日\n */\nexport const formatEnergyDate = function (time: any) {\n //三目运算符\n const dates = time ? new Date(time) : new Date()\n //月份下标是0-11\n const months: any = (dates.getMonth() + 1) < 10 ? '0' + (dates.getMonth() + 1) : (dates.getMonth() + 1)\n //具体的天数\n const day: any = dates.getDate() < 10 ? '0' + dates.getDate() : dates.getDate()\n const year: number = dates.getFullYear()\n const hours = dates.getHours() < 10 ? '0' + dates.getHours() : dates.getHours()\n // //分钟\n const minutes = dates.getMinutes() < 10 ? '0' + dates.getMinutes() : dates.getMinutes()\n //返回数据格式\n return [\n year + '年' + months + '月',\n months + '月' + day + '日',\n hours + ':' + minutes\n ]\n}\n\nexport const setSession = function (key: any = '', obj: any = '') {\n if (obj) {\n let str = JSON.stringify(obj)\n sessionStorage.setItem(key, str)\n }\n}\n\nexport const getSession = function (key: any = '') {\n if (key) {\n let obj: any = sessionStorage.getItem(key)\n if (obj) {\n return JSON.parse(obj)\n }\n }\n return ''\n}\n\n/**\n * 本地存储localStorage\n * @param key\n * @param obj\n */\nexport const setLocalStorage = function (key: any = '', obj: any = '') {\n if (obj) {\n if (obj instanceof Object) {\n let str = JSON.stringify(obj)\n localStorage.setItem(key, str)\n } else {\n localStorage.setItem(key, obj)\n }\n }\n}\n\n/**\n * 获取本地存储\n * @param key\n */\nexport const getLocalStorage = function (key: any) {\n if (key) {\n let obj: any = localStorage.getItem(key)\n if (obj) {\n return JSON.parse(obj)\n } else {\n return ''\n }\n }\n return ''\n}\n\n/**\n * 存储最新的空间信息\n * @param spaceInfo\n */\nexport const setLocalNewSpaceInfo = function (spaceInfo: any) {\n setLocalStorage(Keys.storageSpaceInfoKey, spaceInfo)\n}\n\n/**\n * 获取最新的空间信息\n */\nexport const getLocalNewSpaceInfo = function () {\n let spaceInfo: any = getLocalStorage(Keys.storageSpaceInfoKey)\n return spaceInfo\n}\n\n/**\n * 本地缓存建筑,楼层,空间\n */\nexport const localStorageSpaceId = function (buildingId: any, floorId: any, spaceId: any) {\n let spaceMap: any = getLocalStorage(Keys.storageSpaceKey) ? getLocalStorage(Keys.storageSpaceKey) : {}\n let key: any = `${buildingId},${floorId}`\n spaceMap[key] = spaceId\n setLocalStorage(Keys.storageSpaceKey, spaceMap)\n}\nexport const getStorageSpaceId = function () {\n let spaceMap: any = getLocalStorage(Keys.storageSpaceKey)\n return spaceMap\n}\n\n/**\n * 本地缓存建筑对应的楼层\n */\nexport const localStorageFloor = function (buildingId: any, floorId: any) {\n let floorMap: any = getLocalStorage(Keys.storageFloorKey) ? getLocalStorage(Keys.storageFloorKey) : {}\n floorMap[buildingId] = floorId\n setLocalStorage(Keys.storageFloorKey, floorMap)\n}\n/**\n * 获取本地存储的建筑对应的关系\n * @param buildingId\n * @param floorId\n */\nexport const getLocalStorageFloor = function () {\n let floorMap: any = getLocalStorage(Keys.storageFloorKey)\n return floorMap\n}\n\n/**\n * 缓存搜索页面最近查找的数据\n * @param item\n */\nexport const setLocalSearchSpace = function (item: any) {\n let historySearch: any = getLocalStorage(Keys.historySearchSpaceKey)\n let flag = false\n historySearch = historySearch ? historySearch : []\n historySearch.map((historyItem: any) => {\n if (historyItem.id === item.id) {\n flag = true\n }\n })\n if (!flag) {\n historySearch.push(item)\n }\n setLocalStorage(Keys.historySearchSpaceKey, historySearch)\n}\n\n/**\n * 获取搜索页面最近查找的数据\n */\nexport const getLocalSearchSpace = function () {\n return getLocalStorage(Keys.historySearchSpaceKey) ? getLocalStorage(Keys.historySearchSpaceKey) : []\n}\n\n/**\n *存储当前项目id\n */\nexport const setLocalProjectId = function (projectId: any) {\n setLocalStorage(Keys.projectId, projectId)\n}\n\n/**\n * 获取当前项目id\n * @param projectId\n */\nexport const getLocalProjectId = function () {\n return localStorage.getItem(Keys.projectId)\n}\n/**\n * 清楚当前所有的存储数据\n */\nexport const clearAllLocalData = function () {\n localStorage.clear()\n Cookies.remove('userInfo')\n Cookies.remove('projectId')\n Cookies.remove('accessToken')\n}\n\nexport const doHandleMonth = function (month: any) {\n let m: any = month\n if (month.toString().length == 1) {\n m = '0' + month\n }\n return m\n}\n\nexport const getWeekDate = function (day: any) {\n let weeks: any = new Array(\n '周日',\n '周一',\n '周二',\n '周三',\n '周四',\n '周五',\n '周六'\n )\n let week: any = weeks[day]\n return week\n}\n\nexport const getNowWeek = function () {\n let date: any = new Date()\n let day: any = date.getDay()\n let nowWeek: any = getWeekDate(day)\n return nowWeek\n}\n\nexport const getDate = function (date: any) {\n return date.getDate() < 10 ? '0' + date.getDate() : date.getDate()\n}\n\n/**\n * 初始化24:00\n */\nexport const getTimers = function () {\n let timers: any = new Array()\n for (let i = 0; i <= 24; i++) {\n let str: any = '00'\n if (i < 10) {\n str = '0' + i\n } else {\n str = i\n }\n timers.push(str + ':00')\n if (i < 24) {\n timers.push(str + ':30')\n }\n }\n console.log(\"timers====\")\n console.log(timers)\n return timers\n}\n\nexport const getNowTime = function () {\n let date: any = new Date()\n let hours: any = date.getHours()\n let minute: any = date.getMinutes()\n let index: any = date.getHours()\n if (minute < 30) {\n hours = hours + ':' + '00'\n index = index * 2\n } else {\n hours = hours + ':' + '30'\n index = index * 2 + 1\n }\n return [hours, index]\n}\n\n// 获取当前真实时间\nexport const getRelNowTime = function () {\n let date: any = new Date()\n let hours: any = date.getHours()\n let minute: any = date.getMinutes()\n if (hours < 10) {\n hours = \"0\" + hours\n }\n if (minute < 10) {\n minute = \"0\" + minute\n }\n return hours + \"\" + minute + \"00\"\n}\n\n/**\n * 19000转成19:00\n */\nexport const formatTimerStr = function (timer: any) {\n if (timer) {\n return (timer / 10000).toFixed(2)\n } else {\n return ''\n }\n}\n\nexport const newNumber = function (start: any, end: any, masAddess: any) {\n return masAddess + \"\" + Math.round(Math.random() * (end - start) + start);//生成在[start,end]范围内的随机数值,只支持不小于0的合法范围\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Comheader.vue?vue&type=style&index=0&id=4aa70f4f&lang=scss&scoped=true\""],"sourceRoot":""}
|