{"version":3,"sources":["webpack:///./src/config/index.ts","webpack:///./src/apis/portrait.ts","webpack:///./src/views/portrait/index.vue?c946","webpack:///./src/views/portrait/index.vue?d856","webpack:///./src/views/portrait/index.vue","webpack:///./src/views/portrait/index.vue?ba2f"],"names":["setupService","objectService","duoduoenvService","weachatService","customService","queryTotalIntegral","params","request","GET","undefined","json","queryPortraitTempUserTotal","queryTotalPortraitLight","queryPortraitTempUserDetail","POST","getSeasonBySeasonDate","queryPortraitLightUser","queryAllIntegral","lightFeedbackQuery","tempFeedbackQuery","queryPortraitModule","n","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","render","_ctx","_cache","$props","$setup","$data","$options","onClick","$event","goEnergyDetail","energyData","totalPoints","energyArr","isshow","key","num","src","parseImgUrl","alt","components","setup","router","intergral","level","arr","id","name","isShow","unit","img","proxyData","user","store","state","type","push","path","query","dealNumToPoint","arrIndex","isNaN","Math","floor","today","lastMonth","date","month","then","res","resData","result","data","adjustDownNum","adjustUpNum","totalNum","forEach","item","indexOf","portraitModule","airConditioner","light","commit","SET_AIR","SET_LIGHT","__exports__"],"mappings":"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","file":"static/js/chunk-2bb42bd0.b5572c4d.js","sourcesContent":["// // 默认配置\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 customService = '/duoduo-service/custom-service/'\nexport const ssoService = '/sso/'\nexport const testApi = '/test/'\n","import { RootObject, RootWeatherObject } from '@/model/rootObject'\nimport { Users, CompanyModel, OutherWeather, SpaceModel } from '@/model/userModel'\nimport { https } from '@/utils/https'\nimport { RequestParams, ContentType, Method } from 'axios-mapper'\nimport { setQueryConfig, getUserInfo } from '@/utils'\n\nimport { duoduoenvService } from '@/config'\n\n// const comInfo: any = {}\n// comInfo.userId = getUserInfo().userId\n// comInfo.projectId = getUserInfo().projectId\n// const comParams: string = ''\n\n//查询 今日新增 排名\nexport const queryTotalIntegral = (params: any) => {\n return https().request(`${duoduoenvService}userIntegral/queryUserMessage?${params}`, Method.GET, undefined, ContentType.json)\n}\n\n// 查询空调使用统计\nexport const queryPortraitTempUserTotal = () => {\n return https().request(`${duoduoenvService}userPortrait/portraitTemp/queryPortraitTempUserTotal`, Method.GET, undefined, ContentType.json)\n}\n\n// 灯的使用统计\nexport const queryTotalPortraitLight = () => {\n return https().request(`${duoduoenvService}userPortrait/portraitLight/queryTotalPortraitLight`, Method.GET, undefined, ContentType.json)\n}\n/**\n * 空调统计数据 chart详情\n */\nexport const queryPortraitTempUserDetail = (params: any) => {\n return https().request(`${duoduoenvService}userPortrait/portraitTemp/queryPortraitTempUserDetail`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 获取季节类型\n * @param params\n */\nexport const getSeasonBySeasonDate = (params: any) => {\n return https().request(`${duoduoenvService}custom/getSeasonBySeasonDate?${params}`, Method.GET, undefined, ContentType.json)\n}\n\n/**\n * 开灯使用统计图\n */\nexport const queryPortraitLightUser = (params: any) => {\n return https().request(`${duoduoenvService}userPortrait/portraitLight/queryPortraitLightUser`, Method.POST\n , params, ContentType.json)\n}\n\n/**\n * 获取用户积分&获取用户的节能排名\n */\nexport const queryAllIntegral = (params: any) => {\n return https().request(`${duoduoenvService}userIntegral/query`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 获取用户的节能排名\n */\nexport const queryIntegralRank = (params: any) => {\n return https().request(`${duoduoenvService}userIntegral/query`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 开关调节记录\n * @param params\n */\nexport const lightFeedbackQuery = (params: any) => {\n return https().request(`${duoduoenvService}custom/feedback/light/query`, Method.POST, params, ContentType.json)\n}\n\n/**\n *\n *空调调节记录\n * @param params\n */\nexport const tempFeedbackQuery = (params: any) => {\n return https().request(`${duoduoenvService}custom/feedbackQuery`, Method.POST, params, ContentType.json)\n}\n\n/**\n * 判断模块的显示和隐藏\n */\nexport const queryPortraitModule = () => {\n return https().request(`${duoduoenvService}userPortrait/queryPortraitModuleList`, Method.GET, undefined, ContentType.json)\n}\n\n\n\n\n\n","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7838fa1e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"portrait-top\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"portrait-title\" }, \"节能评分\", -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"我的节能\", -1))\nconst _hoisted_4 = { class: \"page-box portrait-content\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"空调调节\", -1))\nconst _hoisted_6 = [\"src\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"开关照明\", -1))\nconst _hoisted_8 = [\"src\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", {\n class: \"portrait-count\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.goEnergyDetail('energy')))\n }, [\n _hoisted_3,\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.energyData.totalPoints || _ctx.energyData.totalPoints == 0 ? _ctx.energyData.totalPoints : '--'), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_ctx.energyArr[0].isshow)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"box\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.goEnergyDetail('air')))\n }, [\n _hoisted_5,\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.energyArr[0].num), 1),\n _createElementVNode(\"img\", {\n src: _ctx.parseImgUrl('page-portrait','portrait_air.svg'),\n alt: \"\"\n }, null, 8, _hoisted_6)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.energyArr[1].isshow)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"box\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.goEnergyDetail('lamp')))\n }, [\n _hoisted_7,\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.energyArr[1].num), 1),\n _createElementVNode(\"img\", {\n class: \"temp-img\",\n src: _ctx.parseImgUrl('page-portrait','portrait_lamp.svg'),\n alt: \"\"\n }, null, 8, _hoisted_8)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 64))\n}","\nimport { defineComponent, reactive, toRefs, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { store } from '@/store'\nimport {\n queryTotalIntegral,\n queryPortraitTempUserTotal,\n queryTotalPortraitLight, queryPortraitModule\n} from '@/apis/portrait'\nimport { formatDate, getPreMonth, setQueryConfig, setSession } from '@/utils'\nimport { PortaitMutationTypes } from '@/store/modules/portait/mutation-types'\nimport { parseImgUrl } from '@/utils'\n\nexport default defineComponent({\n components: {},\n setup() {\n let router = useRouter()\n let energyData: {\n intergral: any\n level: any\n totalPoints: number\n } = {\n intergral: 0,\n level: 0,\n totalPoints: 0\n }\n let arr: any = [\n {\n id: 'airConditioner',\n name: '空调调节',\n isShow: true,\n num: '--',\n unit: '',\n img: parseImgUrl('page-portrait', 'portrait_air.svg'),\n },\n {\n id: 'light',\n name: '开关照明',\n isShow: true,\n num: '--',\n unit: '',\n img: parseImgUrl('page-portrait', 'portrait_lamp.svg'),\n }\n ]\n const proxyData = reactive({\n parseImgUrl: parseImgUrl,\n user: store.state.user,\n energyData: energyData,\n energyArr: arr,\n goEnergyDetail(type: any) {\n router.push({\n path: `/energy-savig`,\n query: { type: type }\n })\n },\n dealNumToPoint(num: any, arrIndex: any) {\n if (!isNaN(num)) {\n if (num && num >= 10000) {\n num = Math.floor(num / 10000 * 10) / 10\n proxyData.energyArr[arrIndex].unit = '万'\n } else {\n proxyData.energyArr[arrIndex].unit = ''\n return num\n }\n return num ? num : '--'\n } else {\n return '--'\n }\n },\n /**\n * 节能分数\n */\n queryTotalIntegral() {\n let today = formatDate('')\n let lastMonth = getPreMonth()\n let params: any = {\n date: today,\n month: lastMonth\n }\n let query: string = setQueryConfig(params)\n queryTotalIntegral(query).then(function(res) {\n const resData: any = res\n if (res.result === 'success') {\n proxyData.energyData = resData\n }\n })\n },\n /**\n * 空调使用统计\n */\n queryPortraitTempUserTotal() {\n queryPortraitTempUserTotal().then(res => {\n const resData: any = res\n if (resData.result === 'success') {\n const data: any = resData?.data ?? null\n proxyData.energyArr[0].num = data ? proxyData.dealNumToPoint(data.adjustDownNum + data.adjustUpNum, 0) : '--'\n } else {\n proxyData.energyArr[0].num = '--'\n }\n })\n },\n /**\n * 照明使用统计\n */\n queryTotalPortraitLight() {\n queryTotalPortraitLight().then(res => {\n const resData: any = res\n if (resData.result === 'success') {\n const data: any = resData?.data ?? null\n proxyData.energyArr[1].num = data ? proxyData.dealNumToPoint(data.totalNum, 1) : '--'\n } else {\n proxyData.energyArr[1].num = '--'\n }\n })\n },\n /**\n * 判断设备统计数据的显示和隐藏\n */\n queryPortraitModule() {\n queryPortraitModule().then(res => {\n let resData: any = res\n let data = resData?.data ?? []\n // 判断模块的显示和隐藏\n proxyData.energyArr.forEach(function(item: any) {\n if (data.indexOf(item.id) > -1) {\n item.isshow = true\n } else {\n item.isshow = false\n }\n })\n /**\n * 缓层数据供后面子页面模块判断使用\n */\n let portraitModule: any = {\n airConditioner: false,\n light: false\n }\n if (data.indexOf('airConditioner') > -1) {\n portraitModule.airConditioner = true\n } else {\n portraitModule.airConditioner = false\n }\n if (data.indexOf('light') > -1) {\n portraitModule.light = true\n } else {\n portraitModule.light = false\n }\n setSession('portraitModule', portraitModule)\n store.commit(PortaitMutationTypes.SET_AIR, portraitModule.airConditioner)\n store.commit(PortaitMutationTypes.SET_LIGHT, portraitModule.light)\n })\n }\n })\n onMounted(() => {\n proxyData.queryPortraitModule()\n proxyData.queryTotalIntegral()\n proxyData.queryPortraitTempUserTotal()\n proxyData.queryTotalPortraitLight()\n })\n return {\n ...toRefs(proxyData)\n }\n }\n})\n","import { render } from \"./index.vue?vue&type=template&id=7838fa1e&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7838fa1e&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-7838fa1e\"]])\n\nexport default __exports__","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!./index.vue?vue&type=style&index=0&id=7838fa1e&lang=scss&scoped=true\""],"sourceRoot":""}