index.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422
  1. /**
  2. * @description 导入所有 vuex 模块,自动加入namespaced:true,用于解决vuex命名冲突,请勿修改。
  3. */
  4. import { createStore } from 'vuex'
  5. import * as api from '@/api/publicList'
  6. import ElMessage from 'element-plus'
  7. const files = require.context('./modules', false, /\.js$/)
  8. const modules = {}
  9. files.keys().forEach((key) => {
  10. modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
  11. })
  12. function getLabelIcon(labelIcon) {
  13. var link =
  14. document.querySelector("link[rel*='icon']") ||
  15. document.createElement('link')
  16. link.type = 'image/x-icon'
  17. link.rel = 'shortcut icon'
  18. link.href = labelIcon
  19. document.getElementsByTagName('head')[0].appendChild(link)
  20. }
  21. Object.keys(modules).forEach((key) => {
  22. modules[key]['namespaced'] = true
  23. })
  24. export default createStore({
  25. modules,
  26. state: {
  27. query: null,
  28. middleList: [],
  29. auth: 0,
  30. siteId: '', //公共api请求参数->siteId
  31. siteList: [], //公共api站点下拉列表存储->siteId
  32. deviceList: [], //公共站点下拉列表
  33. monthList: [], //公共每月最后一天信息存储
  34. dateList: [], //公共每月当天信息存储
  35. authorities: [],
  36. timeProcessing: '',
  37. homeStyle: '#016ddb',
  38. homeLogo: '',
  39. homeTitle: '永天智慧电力平台',
  40. labelIcon: require('@/assets/login_images/uskyIcon.png'),
  41. largeScreenUrl: '',
  42. middleStatus: 1,
  43. homePageUrl: '',
  44. firstMiddleState: false,
  45. Time_Data: [], //公共api请求参数->Time_Data
  46. timearr: [], //公共处理开始时间和结束时间中的时间段天数 值存储
  47. Time_All: [], //公共时间 返回数组 -> 年月日时分秒 时间戳
  48. queryType: '', //设备监控--->数据报表api请求参数->queryType
  49. run_off_Status: null, //设备监控--->运行状态统计->echarts->OFF次数分布和运行状态曲线图表 api信息存储
  50. se_defaultTime: [], //设备监控--->历史趋势时间选择器v-model
  51. th_defaultTime: [], //设备监控--->数据报表时间选择器v-model
  52. fh_defaultTime: [], //设备监控--->运行状态统计时间选择器v-model
  53. // tableHeight:0,//公共table监听高度变化
  54. // echartHeight:0,//公共ehcarts监听高度变化
  55. basicInfoSiteName: '', // 站点基本信息
  56. basicInfoConst: 1, // 站点弹窗
  57. siteManageLabelCom: '', //站点管理,树结构label传值
  58. siteCameraTimer: '', //站点管理,摄像头定时器
  59. /**评估报告指标趋势**/
  60. realScoreLineObj: [], //图表数据
  61. realScoreLineObj2: [],
  62. realScoreLineDataTime: [], //图表时间线
  63. realScoreLineName: '',
  64. realScoreLineName2: '',
  65. chartType: '', //点击表格传参类型
  66. goUrl: 0 //立即前往变化
  67. },
  68. mutations: {
  69. /**
  70. * @公共站点下拉列表
  71. * @param {*} state
  72. */
  73. async publicSiteList(state) {
  74. await api
  75. .SiteList({})
  76. .then((requset) => {
  77. if (requset.status === 'SUCCESS') {
  78. state.siteList = requset.data
  79. state.siteId = requset.data[0].id
  80. } else {
  81. ElMessage.error(requset.msg)
  82. }
  83. })
  84. },
  85. /**
  86. * @公共左侧树状设备
  87. * @param {*} state
  88. */
  89. publicDeviceList(state) {
  90. if (state.siteId != "" && state.siteId != null) {
  91. api
  92. .dataManagementDeviceList({ siteId: state.siteId })
  93. .then((requset) => {
  94. if (requset.status === 'SUCCESS') {
  95. state.deviceList = []
  96. requset.data.map((val) => {
  97. // if (val.children.length > 0) {
  98. state.deviceList.push({
  99. deviceCode: val.deviceCode,
  100. deviceName: val.deviceName,
  101. id: val.id,
  102. children: val.children.length > 0 ?
  103. val.children.map((val) => {
  104. return {
  105. deviceCode: val.variableCoding,
  106. deviceName: val.variableName,
  107. id: val.id,
  108. }
  109. }) : val.children,
  110. })
  111. // }
  112. })
  113. } else {
  114. ElMessage.error(requset.msg)
  115. }
  116. })
  117. } else {
  118. state.deviceList = []
  119. }
  120. },
  121. /**
  122. * @公共按钮权限
  123. * @param {*} state
  124. */
  125. async getAuthorities(state, aa) {
  126. await api
  127. .getAuthorities({ menuName: aa })
  128. .then((requset) => {
  129. if (requset.status === 'SUCCESS') {
  130. state.authorities = []
  131. var menuObj = requset.data;
  132. menuObj.forEach(function (item) {
  133. state.authorities.push(item.menuName)
  134. })
  135. // console.log(state.authorities)
  136. } else {
  137. ElMessage.error(requset.msg)
  138. }
  139. })
  140. },
  141. /**
  142. * @中间页主体页面配置
  143. * @param {*} state
  144. */
  145. async getMiddleConfig(state) {
  146. await api
  147. .getMiddleConfig()
  148. .then((requset) => {
  149. if (requset.status === 'SUCCESS') {
  150. state.homeStyle = requset.data[0].homeStyle
  151. state.homeLogo = requset.data[0].homeLogo
  152. state.homeTitle = requset.data[0].middleTitle
  153. state.largeScreenUrl = requset.data[0].largeScreenUrl
  154. state.middleStatus = requset.data[0].middleStatus
  155. state.homePageUrl = requset.data[0].homePageUrl
  156. state.labelIcon = requset.data[0].labelIcon
  157. getLabelIcon(state.labelIcon)
  158. } else {
  159. ElMessage.error(requset.msg)
  160. }
  161. })
  162. },
  163. /**
  164. * @标签页图标配置
  165. * @param {*} state
  166. * @param {*} val
  167. */
  168. getLabelIcon(state) {
  169. getLabelIcon(state.labelIcon)
  170. },
  171. /**
  172. * @公共api请求参数siteId
  173. * @param {*}} state
  174. * @param {*} val
  175. */
  176. increment(state, val) {
  177. state.siteId = val
  178. },
  179. /**
  180. * @公共处理时区方法
  181. */
  182. TimeAll_function(state, time) {
  183. state.Time_Data = []
  184. for (let i in time) {
  185. var Y = time[i].getFullYear() < 10 ? '0' + time[i].getFullYear() : time[i].getFullYear()
  186. var M = (time[i].getMonth() + 1) < 10 ? '0' + (time[i].getMonth() + 1) : (time[i].getMonth() + 1)
  187. var D = time[i].getDate() < 10 ? '0' + time[i].getDate() : time[i].getDate()
  188. var HH = time[i].getHours() < 10 ? '0' + time[i].getHours() : time[i].getHours()
  189. var MM = time[i].getMinutes() < 10 ? '0' + time[i].getMinutes() : time[i].getMinutes()
  190. var SS = time[i].getSeconds() < 10 ? '0' + time[i].getSeconds() : time[i].getSeconds()
  191. // console.log(Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS)
  192. state.Time_Data.push(Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS)
  193. }
  194. },
  195. /**
  196. * @公共处理开始时间和结束时间中的时间段天数
  197. * @param {*} state
  198. * @param {*} begin 开始时间和结束时间
  199. */
  200. getAll(state, begin) {
  201. let arr1 = begin[0].split("-");
  202. let arr2 = begin[1].split("-");
  203. let arr1_ = new Date();
  204. let arrTime = [];
  205. arr1_.setUTCFullYear(arr1[0], arr1[1] - 1, arr1[2]);
  206. let arr2_ = new Date();
  207. arr2_.setUTCFullYear(arr2[0], arr2[1] - 1, arr2[2]);
  208. let unixDb = arr1_.getTime();
  209. let unixDe = arr2_.getTime();
  210. for (let k = unixDb; k <= unixDe;) {
  211. arrTime.push(datetimeparse(k, "YY-MM-DD"));
  212. k = k + 24 * 60 * 60 * 1000;
  213. }
  214. state.timearr = arrTime
  215. // return arrTime;
  216. // 时间格式处理
  217. function datetimeparse(timestamp, format, prefix) {
  218. if (typeof timestamp == "string") {
  219. timestamp = Number(timestamp);
  220. }
  221. //转换时区
  222. let currentZoneTime = new Date(timestamp);
  223. let currentTimestamp = currentZoneTime.getTime();
  224. let offsetZone = currentZoneTime.getTimezoneOffset() / 60; //如果offsetZone>0是西区,西区晚
  225. let offset = null;
  226. //客户端时间与服务器时间保持一致,固定北京时间东八区。
  227. offset = offsetZone + 8;
  228. currentTimestamp = currentTimestamp + offset * 3600 * 1000;
  229. let newtimestamp = null;
  230. if (currentTimestamp) {
  231. if (currentTimestamp.toString().length === 13) {
  232. newtimestamp = currentTimestamp.toString();
  233. } else if (currentTimestamp.toString().length === 10) {
  234. newtimestamp = currentTimestamp + "000";
  235. } else {
  236. newtimestamp = null;
  237. }
  238. } else {
  239. newtimestamp = null;
  240. }
  241. let dateobj = newtimestamp ?
  242. new Date(parseInt(newtimestamp)) :
  243. new Date();
  244. let YYYY = dateobj.getFullYear();
  245. let MM =
  246. dateobj.getMonth() > 8 ?
  247. dateobj.getMonth() + 1 :
  248. "0" + (dateobj.getMonth() + 1);
  249. let DD =
  250. dateobj.getDate() > 9 ? dateobj.getDate() : "0" + dateobj.getDate();
  251. let HH =
  252. dateobj.getHours() > 9 ? dateobj.getHours() : "0" + dateobj.getHours();
  253. let mm =
  254. dateobj.getMinutes() > 9 ?
  255. dateobj.getMinutes() :
  256. "0" + dateobj.getMinutes();
  257. let ss =
  258. dateobj.getSeconds() > 9 ?
  259. dateobj.getSeconds() :
  260. "0" + dateobj.getSeconds();
  261. let output = "";
  262. let separator = "/";
  263. if (format) {
  264. separator = format.match(/-/) ? "-" : "/";
  265. output += format.match(/yy/i) ? YYYY : "";
  266. output += format.match(/MM/) ?
  267. (output.length ? separator : "") + MM :
  268. "";
  269. output += format.match(/dd/i) ?
  270. (output.length ? separator : "") + DD :
  271. "";
  272. output += format.match(/hh/i) ? (output.length ? " " : "") + HH : "";
  273. output += format.match(/mm/) ? (output.length ? ":" : "") + mm : "";
  274. output += format.match(/ss/i) ? (output.length ? ":" : "") + ss : "";
  275. } else {
  276. output += YYYY + separator + MM + separator + DD;
  277. }
  278. output = prefix ? prefix + output : output;
  279. return newtimestamp ? output : "";
  280. }
  281. },
  282. /**
  283. * @公共echarts图表下载
  284. */
  285. getConnectedDataURL(state, refs) {
  286. state || refs
  287. var url = refs[0].getConnectedDataURL({
  288. pixelRatio: 15,
  289. backgroundColor: "black",
  290. excludeComponents: ["toolbox"],
  291. type: "png",
  292. });
  293. var $a = document.createElement("a");
  294. var type = "png";
  295. //图片名称
  296. $a.download = refs[1] + "." + type;
  297. $a.target = "_blank";
  298. $a.href = url;
  299. if (typeof MouseEvent === "function") {
  300. var evt = new MouseEvent("click", {
  301. view: window,
  302. bubbles: true,
  303. cancelable: false,
  304. });
  305. $a.dispatchEvent(evt);
  306. }
  307. },
  308. /**
  309. * @公共时间 返回数组 -> 年月日时分秒 时间戳
  310. */
  311. getTimeAll(state) {
  312. const time = new Date();
  313. const Y = time.getFullYear(); //年
  314. const M = time.getMonth(); //月
  315. const D = time.getDate(); //日
  316. const HH = time.getHours(); //时,
  317. const MM = time.getMinutes(); //分
  318. const SS = time.getSeconds(); //秒
  319. const timestamp = new Date().getTime(); //时间戳
  320. state.Time_All = [Y, M, D, HH, MM, SS, timestamp]
  321. state.se_defaultTime = [new Date(Y, M, D, 0, 0, 0), new Date()] //设备监控--->历史趋势时间选择器v-model //home设备总数
  322. state.th_defaultTime = [new Date(Y, M, D, 0, 0, 0), new Date()] //设备监控--->数据报表时间选择器v-model //home运维管理
  323. state.fh_defaultTime = [new Date(Y, M, 1, 0, 0, 0), new Date()] //设备监控--->运行状态统计时间选择器v-model //概览 -> 告警统计折线图
  324. },
  325. /**
  326. * @处理公共时间搓 返回数组 -> 年月日时分秒 时间戳
  327. */
  328. getTimestampAll(state, timestamp) {
  329. function add0(m) { return m < 10 ? '0' + m : m }
  330. const time = new Date(timestamp);
  331. const Y = time.getFullYear(); //年
  332. const M = time.getMonth(); //月
  333. const D = time.getDate(); //日
  334. const HH = time.getHours(); //时,
  335. const MM = time.getMinutes(); //分
  336. const SS = time.getSeconds(); //秒
  337. state.timeProcessing = Y + '-' + add0(M + 1) + '-' + add0(D) + ' ' + add0(HH) + ':' + add0(MM) + ':' + add0(SS);
  338. },
  339. /**
  340. * @公共获取某月的第一天和最后一天
  341. */
  342. getCurrentMonthLast(state, timeAll) {
  343. var date1 = timeAll;
  344. date1.setDate(1);
  345. var month1 = parseInt(date1.getMonth() + 1);
  346. var day1 = date1.getDate();
  347. if (month1 < 10) {
  348. month1 = '0' + month1
  349. }
  350. if (day1 < 10) {
  351. day1 = '0' + day1
  352. }
  353. var date = timeAll;
  354. var currentMonth = date.getMonth();
  355. var nextMonth = ++currentMonth;
  356. var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
  357. var oneDay = 1000 * 60 * 60 * 24;
  358. var lastTime = new Date(nextMonthFirstDay - oneDay);
  359. var month = parseInt(lastTime.getMonth() + 1);
  360. var day = lastTime.getDate();
  361. if (month < 10) {
  362. month = '0' + month
  363. }
  364. if (day < 10) {
  365. day = '0' + day
  366. }
  367. state.monthList = [date1.getFullYear() + '-' + month1 + '-' + day1, date.getFullYear() + '-' + month + '-' + day]
  368. },
  369. /**
  370. * @获取当天日期
  371. */
  372. getNowFormatDate(state, timeAll) {
  373. var date = timeAll;
  374. var seperator1 = "-";
  375. var year = date.getFullYear();
  376. var month = date.getMonth() + 1;
  377. var strDate = date.getDate();
  378. if (month >= 1 && month <= 9) {
  379. month = "0" + month;
  380. }
  381. if (strDate >= 0 && strDate <= 9) {
  382. strDate = "0" + strDate;
  383. }
  384. var currentdate = year + seperator1 + month + seperator1 + strDate;
  385. state.dateList = currentdate
  386. },
  387. }
  388. })