mirror of
https://gitee.com/js-yhsec/energy_storage.git
synced 2026-05-27 18:59:26 +08:00
合并代码
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 4945642 */
|
||||
src: url('iconfont.woff2?t=1756516508134') format('woff2'),
|
||||
url('iconfont.woff?t=1756516508134') format('woff'),
|
||||
url('iconfont.ttf?t=1756516508134') format('truetype'),
|
||||
url('iconfont.svg?t=1756516508134#iconfont') format('svg');
|
||||
font-family: "iconfont"; /* Project id 5010233 */
|
||||
src: url('iconfont.woff2?t=1757574994185') format('woff2'),
|
||||
url('iconfont.woff?t=1757574994185') format('woff'),
|
||||
url('iconfont.ttf?t=1757574994185') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
@@ -14,455 +13,151 @@
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-full:before {
|
||||
content: "\e651";
|
||||
.icon-chunengguankong:before {
|
||||
content: "\e60c";
|
||||
}
|
||||
|
||||
.icon-exit:before {
|
||||
content: "\e652";
|
||||
.icon-bianyaqi1:before {
|
||||
content: "\e60b";
|
||||
}
|
||||
|
||||
.icon-a-qiyong:before {
|
||||
content: "\e64e";
|
||||
.icon-tuichu:before {
|
||||
content: "\e7ed";
|
||||
}
|
||||
|
||||
.icon-a-jinyong:before {
|
||||
content: "\e64f";
|
||||
.icon-bianyaqi:before {
|
||||
content: "\e62f";
|
||||
}
|
||||
|
||||
.icon-tuihuishenqing:before {
|
||||
content: "\e64d";
|
||||
.icon-jizhuangxiang:before {
|
||||
content: "\e60a";
|
||||
}
|
||||
|
||||
.icon-mti-loudianjiance:before {
|
||||
content: "\e64c";
|
||||
.icon-nengyuanguanli:before {
|
||||
content: "\e67d";
|
||||
}
|
||||
|
||||
.icon-guanbi:before {
|
||||
content: "\e64b";
|
||||
}
|
||||
|
||||
.icon-a-fenzu1411:before {
|
||||
content: "\e649";
|
||||
}
|
||||
|
||||
.icon-a-fenzu1409:before {
|
||||
content: "\e64a";
|
||||
}
|
||||
|
||||
.icon-xianlu:before {
|
||||
content: "\e647";
|
||||
}
|
||||
|
||||
.icon-jizhongqi:before {
|
||||
content: "\e648";
|
||||
}
|
||||
|
||||
.icon-a-lujing41:before {
|
||||
content: "\e646";
|
||||
}
|
||||
|
||||
.icon-a-lujing4:before {
|
||||
.icon-quexianguanli:before {
|
||||
content: "\e645";
|
||||
}
|
||||
|
||||
.icon-Electrocardiogram:before {
|
||||
content: "\e644";
|
||||
.icon-L-chunengdianchicu:before {
|
||||
content: "\e698";
|
||||
}
|
||||
|
||||
.icon-hezha:before {
|
||||
content: "\e642";
|
||||
.icon-jizhongqi:before {
|
||||
content: "\e607";
|
||||
}
|
||||
|
||||
.icon-bisuo:before {
|
||||
content: "\e643";
|
||||
.icon-chongdianqiang:before {
|
||||
content: "\e650";
|
||||
}
|
||||
|
||||
.icon-lixian:before {
|
||||
content: "\e63b";
|
||||
.icon-guangfuban:before {
|
||||
content: "\e609";
|
||||
}
|
||||
|
||||
.icon-dengpao:before {
|
||||
content: "\e63c";
|
||||
.icon-zhuangjirongliang:before {
|
||||
content: "\e683";
|
||||
}
|
||||
|
||||
.icon-daunlu:before {
|
||||
content: "\e63e";
|
||||
.icon-charging-pile-line:before {
|
||||
content: "\e83c";
|
||||
}
|
||||
|
||||
.icon-loudianjiance:before {
|
||||
content: "\e63f";
|
||||
.icon-dianbiao:before {
|
||||
content: "\ec4d";
|
||||
}
|
||||
|
||||
.icon-guozai:before {
|
||||
content: "\e641";
|
||||
.icon-shuijinchuanganqiicon:before {
|
||||
content: "\e605";
|
||||
}
|
||||
|
||||
.icon-a-fenzu92:before {
|
||||
content: "\e63a";
|
||||
.icon-menjin:before {
|
||||
content: "\e637";
|
||||
}
|
||||
|
||||
.icon-yonghu2:before {
|
||||
content: "\e68d";
|
||||
.icon-fengsujiance:before {
|
||||
content: "\e628";
|
||||
}
|
||||
|
||||
.icon-guzhang:before {
|
||||
content: "\e632";
|
||||
.icon-xiaofang:before {
|
||||
content: "\e60e";
|
||||
}
|
||||
|
||||
.icon-leijishouyi:before {
|
||||
content: "\e631";
|
||||
.icon-guangzhaojianceshebei:before {
|
||||
content: "\e608";
|
||||
}
|
||||
|
||||
.icon-fadianliang:before {
|
||||
content: "\e63d";
|
||||
.icon-shipinjiankong:before {
|
||||
content: "\e638";
|
||||
}
|
||||
|
||||
.icon-fengji:before {
|
||||
content: "\e661";
|
||||
.icon-yanganjiance:before {
|
||||
content: "\e6a8";
|
||||
}
|
||||
|
||||
.icon-guangfu:before {
|
||||
content: "\e633";
|
||||
.icon-peidiangui:before {
|
||||
content: "\e7bf";
|
||||
}
|
||||
|
||||
.icon-jiantanpaifang:before {
|
||||
content: "\e67d";
|
||||
.icon-transformer:before {
|
||||
content: "\e6ae";
|
||||
}
|
||||
|
||||
.icon-zhaomingdeng:before {
|
||||
content: "\e993";
|
||||
}
|
||||
|
||||
.icon-wenshidujiance:before {
|
||||
content: "\e6c8";
|
||||
}
|
||||
|
||||
.icon-add:before {
|
||||
content: "\e604";
|
||||
}
|
||||
|
||||
.icon-shidu:before {
|
||||
content: "\e60d";
|
||||
}
|
||||
|
||||
.icon-wenduji:before {
|
||||
content: "\e6de";
|
||||
}
|
||||
|
||||
.icon-kongdiaogongcheng:before {
|
||||
content: "\e62e";
|
||||
}
|
||||
|
||||
.icon-lengji:before {
|
||||
content: "\e639";
|
||||
}
|
||||
|
||||
.icon-guanbi:before {
|
||||
content: "\e606";
|
||||
}
|
||||
|
||||
.icon-a-fenzu3:before {
|
||||
content: "\e602";
|
||||
}
|
||||
|
||||
.icon-nibianqi:before {
|
||||
content: "\e603";
|
||||
}
|
||||
|
||||
.icon-battery-charge-line:before {
|
||||
content: "\e601";
|
||||
}
|
||||
|
||||
.icon-a-fenzu13:before {
|
||||
content: "\e600";
|
||||
}
|
||||
|
||||
.icon-hebing:before {
|
||||
content: "\e630";
|
||||
}
|
||||
|
||||
.icon-a-fenzu2:before {
|
||||
content: "\e62e";
|
||||
}
|
||||
|
||||
.icon-jiantou:before {
|
||||
content: "\e62d";
|
||||
}
|
||||
|
||||
.icon-a-fenzu549:before {
|
||||
content: "\e62c";
|
||||
}
|
||||
|
||||
.icon-guanbi1:before {
|
||||
content: "\e62a";
|
||||
}
|
||||
|
||||
.icon-baohuzhuangzhi:before {
|
||||
content: "\e704";
|
||||
}
|
||||
|
||||
.icon-peidianfang:before {
|
||||
content: "\e6ae";
|
||||
}
|
||||
|
||||
.icon-map-mark0:before {
|
||||
content: "\e6ba";
|
||||
}
|
||||
|
||||
.icon-caokongguanli:before {
|
||||
content: "\e62b";
|
||||
}
|
||||
|
||||
.icon-a-CyberMonitoring:before {
|
||||
content: "\e640";
|
||||
}
|
||||
|
||||
.icon-a-GrowthChart:before {
|
||||
content: "\e650";
|
||||
}
|
||||
|
||||
.icon-a-SalesGrowth:before {
|
||||
content: "\e668";
|
||||
}
|
||||
|
||||
.icon-a-TrendChat:before {
|
||||
content: "\e673";
|
||||
}
|
||||
|
||||
.icon-a-CloudComputer:before {
|
||||
content: "\e683";
|
||||
}
|
||||
|
||||
.icon-a-CloudInfrastructure:before {
|
||||
content: "\e687";
|
||||
}
|
||||
|
||||
.icon-a-CloudManagement:before {
|
||||
content: "\e689";
|
||||
}
|
||||
|
||||
.icon-a-CloudSecurity:before {
|
||||
content: "\e68e";
|
||||
}
|
||||
|
||||
.icon-Dataserver:before {
|
||||
content: "\e693";
|
||||
}
|
||||
|
||||
.icon-a-VolumeEqualizer:before {
|
||||
content: "\e6c0";
|
||||
}
|
||||
|
||||
.icon-a-ResourceManagement1:before {
|
||||
content: "\e808";
|
||||
}
|
||||
|
||||
.icon-a-GraphUp:before {
|
||||
content: "\e859";
|
||||
}
|
||||
|
||||
.icon-a-FileCabinet:before {
|
||||
content: "\e97d";
|
||||
}
|
||||
|
||||
.icon-a-SystemSetting:before {
|
||||
content: "\ee41";
|
||||
}
|
||||
|
||||
.icon-map-mark1:before {
|
||||
content: "\ee42";
|
||||
}
|
||||
|
||||
.icon-map-mark2-copy:before {
|
||||
content: "\ee43";
|
||||
}
|
||||
|
||||
.icon-shouye:before {
|
||||
content: "\e625";
|
||||
}
|
||||
|
||||
.icon-dingwei:before {
|
||||
content: "\e8c4";
|
||||
}
|
||||
|
||||
.icon-guanbi2:before {
|
||||
content: "\e62f";
|
||||
}
|
||||
|
||||
.icon-chulizhuangtai:before {
|
||||
content: "\e684";
|
||||
}
|
||||
|
||||
.icon-a-fenzu302:before {
|
||||
content: "\e629";
|
||||
}
|
||||
|
||||
.icon-a-fenzu1163:before {
|
||||
content: "\e605";
|
||||
}
|
||||
|
||||
.icon-tuichu:before {
|
||||
content: "\e627";
|
||||
}
|
||||
|
||||
.icon-yonghu-yuan:before {
|
||||
content: "\e628";
|
||||
}
|
||||
|
||||
.icon-mima:before {
|
||||
content: "\e8b2";
|
||||
}
|
||||
|
||||
.icon-tuichu3:before {
|
||||
content: "\e624";
|
||||
}
|
||||
|
||||
.icon-yueliang:before {
|
||||
content: "\e656";
|
||||
}
|
||||
|
||||
.icon-tongzhi:before {
|
||||
content: "\e674";
|
||||
}
|
||||
|
||||
.icon-tongzhi1:before {
|
||||
content: "\e9cd";
|
||||
}
|
||||
|
||||
.icon-tongzhi2:before {
|
||||
content: "\101d4";
|
||||
}
|
||||
|
||||
.icon-xingzhuangjiehe:before {
|
||||
content: "\e623";
|
||||
}
|
||||
|
||||
.icon-xitongguanli:before {
|
||||
content: "\e672";
|
||||
}
|
||||
|
||||
.icon-pingtaiguanli:before {
|
||||
content: "\e619";
|
||||
}
|
||||
|
||||
.icon-shidu:before {
|
||||
content: "\e635";
|
||||
}
|
||||
|
||||
.icon-dingdan-quanbudingdan:before {
|
||||
content: "\e626";
|
||||
}
|
||||
|
||||
.icon-wendu:before {
|
||||
content: "\e80f";
|
||||
}
|
||||
|
||||
.icon-fengtian-guangzhao:before {
|
||||
content: "\e636";
|
||||
}
|
||||
|
||||
.icon-fengsu:before {
|
||||
content: "\ea32";
|
||||
}
|
||||
|
||||
.icon-wulianzhongxin_normal:before {
|
||||
content: "\e620";
|
||||
}
|
||||
|
||||
.icon-icon-1:before {
|
||||
content: "\e621";
|
||||
}
|
||||
|
||||
.icon-fengexian:before {
|
||||
content: "\e634";
|
||||
}
|
||||
|
||||
.icon-quxiao:before {
|
||||
content: "\e637";
|
||||
}
|
||||
|
||||
.icon-a-xingzhuangjiehe1x:before {
|
||||
content: "\e638";
|
||||
}
|
||||
|
||||
.icon-a-xingzhuangjiehe1x1:before {
|
||||
content: "\e639";
|
||||
}
|
||||
|
||||
.icon-xingzhuang1:before {
|
||||
content: "\e622";
|
||||
}
|
||||
|
||||
.icon-xingzhuang:before {
|
||||
content: "\e604";
|
||||
}
|
||||
|
||||
.icon-a-fenzu1865:before {
|
||||
content: "\e61f";
|
||||
}
|
||||
|
||||
.icon-confirm:before {
|
||||
content: "\e61a";
|
||||
}
|
||||
|
||||
.icon-a-fenzu412:before {
|
||||
content: "\e61b";
|
||||
}
|
||||
|
||||
.icon-shuaxin:before {
|
||||
content: "\e61c";
|
||||
}
|
||||
|
||||
.icon-download:before {
|
||||
content: "\e61d";
|
||||
}
|
||||
|
||||
.icon-upload:before {
|
||||
.icon-quanpingmu:before {
|
||||
content: "\e61e";
|
||||
}
|
||||
|
||||
.icon-add:before {
|
||||
content: "\e616";
|
||||
}
|
||||
|
||||
.icon-chongzhi:before {
|
||||
content: "\e617";
|
||||
}
|
||||
|
||||
.icon-setProtectControl:before {
|
||||
content: "\e618";
|
||||
}
|
||||
|
||||
.icon-export:before {
|
||||
content: "\e613";
|
||||
}
|
||||
|
||||
.icon-import:before {
|
||||
content: "\e614";
|
||||
}
|
||||
|
||||
.icon-del:before {
|
||||
content: "\e615";
|
||||
}
|
||||
|
||||
.icon-setProtectValue:before {
|
||||
content: "\e60e";
|
||||
}
|
||||
|
||||
.icon-setLightMode:before {
|
||||
content: "\e60f";
|
||||
}
|
||||
|
||||
.icon-setTimeMode:before {
|
||||
content: "\e610";
|
||||
}
|
||||
|
||||
.icon-switchMode:before {
|
||||
content: "\e611";
|
||||
}
|
||||
|
||||
.icon-setTime:before {
|
||||
content: "\e612";
|
||||
}
|
||||
|
||||
.icon-sousu:before {
|
||||
content: "\e60c";
|
||||
}
|
||||
|
||||
.icon-a-fenzu2241:before {
|
||||
content: "\e60d";
|
||||
}
|
||||
|
||||
.icon-openOrClose:before {
|
||||
content: "\e60b";
|
||||
}
|
||||
|
||||
.icon-zhaoce:before {
|
||||
content: "\e60a";
|
||||
}
|
||||
|
||||
.icon-send:before {
|
||||
content: "\e609";
|
||||
}
|
||||
|
||||
.icon-a-fenzu5:before {
|
||||
content: "\e608";
|
||||
}
|
||||
|
||||
.icon-shezhi:before {
|
||||
content: "\e607";
|
||||
}
|
||||
|
||||
.icon-touxiang:before {
|
||||
content: "\e606";
|
||||
}
|
||||
|
||||
.icon-jiaoyizhanghuguanli:before {
|
||||
content: "\e602";
|
||||
}
|
||||
|
||||
.icon-yingxiaoxuanzhong:before {
|
||||
content: "\e603";
|
||||
}
|
||||
|
||||
.icon-a-lujing1:before {
|
||||
content: "\e600";
|
||||
}
|
||||
|
||||
.icon-a-lujing11:before {
|
||||
content: "\e601";
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,212 +1,254 @@
|
||||
{
|
||||
"id": "4945642",
|
||||
"name": "海达普平台3.0",
|
||||
"id": "5010233",
|
||||
"name": "光储充",
|
||||
"font_family": "iconfont",
|
||||
"css_prefix_text": "icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "44946071",
|
||||
"name": "full",
|
||||
"font_class": "full",
|
||||
"unicode": "e651",
|
||||
"unicode_decimal": 58961
|
||||
"icon_id": "34089819",
|
||||
"name": "BMS",
|
||||
"font_class": "chunengguankong",
|
||||
"unicode": "e60c",
|
||||
"unicode_decimal": 58892
|
||||
},
|
||||
{
|
||||
"icon_id": "44946066",
|
||||
"name": "exit",
|
||||
"font_class": "exit",
|
||||
"unicode": "e652",
|
||||
"unicode_decimal": 58962
|
||||
"icon_id": "25725466",
|
||||
"name": "变压器",
|
||||
"font_class": "bianyaqi1",
|
||||
"unicode": "e60b",
|
||||
"unicode_decimal": 58891
|
||||
},
|
||||
{
|
||||
"icon_id": "44797354",
|
||||
"name": "qiyong",
|
||||
"font_class": "a-qiyong",
|
||||
"unicode": "e64e",
|
||||
"unicode_decimal": 58958
|
||||
"icon_id": "16921565",
|
||||
"name": "退出",
|
||||
"font_class": "tuichu",
|
||||
"unicode": "e7ed",
|
||||
"unicode_decimal": 59373
|
||||
},
|
||||
{
|
||||
"icon_id": "44797352",
|
||||
"name": "jinyong",
|
||||
"font_class": "a-jinyong",
|
||||
"unicode": "e64f",
|
||||
"unicode_decimal": 58959
|
||||
"icon_id": "6953156",
|
||||
"name": "PCU",
|
||||
"font_class": "bianyaqi",
|
||||
"unicode": "e62f",
|
||||
"unicode_decimal": 58927
|
||||
},
|
||||
{
|
||||
"icon_id": "41945643",
|
||||
"name": "退回申请",
|
||||
"font_class": "tuihuishenqing",
|
||||
"unicode": "e64d",
|
||||
"unicode_decimal": 58957
|
||||
"icon_id": "14515201",
|
||||
"name": "预制舱",
|
||||
"font_class": "jizhuangxiang",
|
||||
"unicode": "e60a",
|
||||
"unicode_decimal": 58890
|
||||
},
|
||||
{
|
||||
"icon_id": "44643473",
|
||||
"name": "mti-漏电监测",
|
||||
"font_class": "mti-loudianjiance",
|
||||
"unicode": "e64c",
|
||||
"unicode_decimal": 58956
|
||||
"icon_id": "18853254",
|
||||
"name": "PCS",
|
||||
"font_class": "nengyuanguanli",
|
||||
"unicode": "e67d",
|
||||
"unicode_decimal": 59005
|
||||
},
|
||||
{
|
||||
"icon_id": "44642653",
|
||||
"name": "关闭",
|
||||
"font_class": "guanbi",
|
||||
"unicode": "e64b",
|
||||
"unicode_decimal": 58955
|
||||
},
|
||||
{
|
||||
"icon_id": "44628330",
|
||||
"name": "启用",
|
||||
"font_class": "a-fenzu1411",
|
||||
"unicode": "e649",
|
||||
"unicode_decimal": 58953
|
||||
},
|
||||
{
|
||||
"icon_id": "44628328",
|
||||
"name": "禁用",
|
||||
"font_class": "a-fenzu1409",
|
||||
"unicode": "e64a",
|
||||
"unicode_decimal": 58954
|
||||
},
|
||||
{
|
||||
"icon_id": "44626923",
|
||||
"name": "线路",
|
||||
"font_class": "xianlu",
|
||||
"unicode": "e647",
|
||||
"unicode_decimal": 58951
|
||||
},
|
||||
{
|
||||
"icon_id": "44626921",
|
||||
"name": "集中器",
|
||||
"font_class": "jizhongqi",
|
||||
"unicode": "e648",
|
||||
"unicode_decimal": 58952
|
||||
},
|
||||
{
|
||||
"icon_id": "44626922",
|
||||
"name": "路径 4 (1)",
|
||||
"font_class": "a-lujing41",
|
||||
"unicode": "e646",
|
||||
"unicode_decimal": 58950
|
||||
},
|
||||
{
|
||||
"icon_id": "44626457",
|
||||
"name": "路径 4",
|
||||
"font_class": "a-lujing4",
|
||||
"icon_id": "22187612",
|
||||
"name": "EMS",
|
||||
"font_class": "quexianguanli",
|
||||
"unicode": "e645",
|
||||
"unicode_decimal": 58949
|
||||
},
|
||||
{
|
||||
"icon_id": "40668428",
|
||||
"name": "Electrocardiogram",
|
||||
"font_class": "Electrocardiogram",
|
||||
"unicode": "e644",
|
||||
"unicode_decimal": 58948
|
||||
"icon_id": "30628754",
|
||||
"name": "BCU",
|
||||
"font_class": "L-chunengdianchicu",
|
||||
"unicode": "e698",
|
||||
"unicode_decimal": 59032
|
||||
},
|
||||
{
|
||||
"icon_id": "44621269",
|
||||
"name": "分组 10",
|
||||
"font_class": "hezha",
|
||||
"unicode": "e642",
|
||||
"unicode_decimal": 58946
|
||||
"icon_id": "8634414",
|
||||
"name": "集中器",
|
||||
"font_class": "jizhongqi",
|
||||
"unicode": "e607",
|
||||
"unicode_decimal": 58887
|
||||
},
|
||||
{
|
||||
"icon_id": "44621265",
|
||||
"name": "路径 1 (1)",
|
||||
"font_class": "bisuo",
|
||||
"unicode": "e643",
|
||||
"unicode_decimal": 58947
|
||||
"icon_id": "10074608",
|
||||
"name": "充电枪",
|
||||
"font_class": "chongdianqiang",
|
||||
"unicode": "e650",
|
||||
"unicode_decimal": 58960
|
||||
},
|
||||
{
|
||||
"icon_id": "44621293",
|
||||
"name": "离线",
|
||||
"font_class": "lixian",
|
||||
"unicode": "e63b",
|
||||
"unicode_decimal": 58939
|
||||
"icon_id": "11464298",
|
||||
"name": "光伏板",
|
||||
"font_class": "guangfuban",
|
||||
"unicode": "e609",
|
||||
"unicode_decimal": 58889
|
||||
},
|
||||
{
|
||||
"icon_id": "44621290",
|
||||
"name": "49",
|
||||
"font_class": "dengpao",
|
||||
"unicode": "e63c",
|
||||
"unicode_decimal": 58940
|
||||
"icon_id": "23266155",
|
||||
"name": "装机容量",
|
||||
"font_class": "zhuangjirongliang",
|
||||
"unicode": "e683",
|
||||
"unicode_decimal": 59011
|
||||
},
|
||||
{
|
||||
"icon_id": "44621289",
|
||||
"name": "路径 6",
|
||||
"font_class": "daunlu",
|
||||
"unicode": "e63e",
|
||||
"unicode_decimal": 58942
|
||||
"icon_id": "42232081",
|
||||
"name": "charging-pile-line",
|
||||
"font_class": "charging-pile-line",
|
||||
"unicode": "e83c",
|
||||
"unicode_decimal": 59452
|
||||
},
|
||||
{
|
||||
"icon_id": "44621287",
|
||||
"name": "mti-漏电监测",
|
||||
"font_class": "loudianjiance",
|
||||
"unicode": "e63f",
|
||||
"unicode_decimal": 58943
|
||||
"icon_id": "5961298",
|
||||
"name": "电表",
|
||||
"font_class": "dianbiao",
|
||||
"unicode": "ec4d",
|
||||
"unicode_decimal": 60493
|
||||
},
|
||||
{
|
||||
"icon_id": "44621285",
|
||||
"name": "路径 1",
|
||||
"font_class": "guozai",
|
||||
"unicode": "e641",
|
||||
"unicode_decimal": 58945
|
||||
"icon_id": "11096116",
|
||||
"name": "flooding",
|
||||
"font_class": "shuijinchuanganqiicon",
|
||||
"unicode": "e605",
|
||||
"unicode_decimal": 58885
|
||||
},
|
||||
{
|
||||
"icon_id": "44613655",
|
||||
"name": "分组 92",
|
||||
"font_class": "a-fenzu92",
|
||||
"unicode": "e63a",
|
||||
"unicode_decimal": 58938
|
||||
"icon_id": "11183352",
|
||||
"name": "门禁",
|
||||
"font_class": "menjin",
|
||||
"unicode": "e637",
|
||||
"unicode_decimal": 58935
|
||||
},
|
||||
{
|
||||
"icon_id": "8998607",
|
||||
"name": "用户",
|
||||
"font_class": "yonghu2",
|
||||
"unicode": "e68d",
|
||||
"unicode_decimal": 59021
|
||||
"icon_id": "11343949",
|
||||
"name": "风速监测",
|
||||
"font_class": "fengsujiance",
|
||||
"unicode": "e628",
|
||||
"unicode_decimal": 58920
|
||||
},
|
||||
{
|
||||
"icon_id": "17398117",
|
||||
"name": "故障",
|
||||
"font_class": "guzhang",
|
||||
"unicode": "e632",
|
||||
"unicode_decimal": 58930
|
||||
"icon_id": "11859279",
|
||||
"name": "消防",
|
||||
"font_class": "xiaofang",
|
||||
"unicode": "e60e",
|
||||
"unicode_decimal": 58894
|
||||
},
|
||||
{
|
||||
"icon_id": "683410",
|
||||
"name": "累计收益",
|
||||
"font_class": "leijishouyi",
|
||||
"unicode": "e631",
|
||||
"unicode_decimal": 58929
|
||||
"icon_id": "11894140",
|
||||
"name": "光照监测设备",
|
||||
"font_class": "guangzhaojianceshebei",
|
||||
"unicode": "e608",
|
||||
"unicode_decimal": 58888
|
||||
},
|
||||
{
|
||||
"icon_id": "6943378",
|
||||
"name": "发电量",
|
||||
"font_class": "fadianliang",
|
||||
"unicode": "e63d",
|
||||
"unicode_decimal": 58941
|
||||
"icon_id": "17654833",
|
||||
"name": "视频监控",
|
||||
"font_class": "shipinjiankong",
|
||||
"unicode": "e638",
|
||||
"unicode_decimal": 58936
|
||||
},
|
||||
{
|
||||
"icon_id": "31328216",
|
||||
"name": "风机",
|
||||
"font_class": "fengji",
|
||||
"unicode": "e661",
|
||||
"unicode_decimal": 58977
|
||||
"icon_id": "18636600",
|
||||
"name": "烟感监测",
|
||||
"font_class": "yanganjiance",
|
||||
"unicode": "e6a8",
|
||||
"unicode_decimal": 59048
|
||||
},
|
||||
{
|
||||
"icon_id": "37843318",
|
||||
"name": "光伏-copy",
|
||||
"font_class": "guangfu",
|
||||
"unicode": "e633",
|
||||
"unicode_decimal": 58931
|
||||
"icon_id": "18799877",
|
||||
"name": "配电柜",
|
||||
"font_class": "peidiangui",
|
||||
"unicode": "e7bf",
|
||||
"unicode_decimal": 59327
|
||||
},
|
||||
{
|
||||
"icon_id": "39630640",
|
||||
"name": "减碳排放",
|
||||
"font_class": "jiantanpaifang",
|
||||
"unicode": "e67d",
|
||||
"unicode_decimal": 59005
|
||||
"icon_id": "25891413",
|
||||
"name": "变压器",
|
||||
"font_class": "transformer",
|
||||
"unicode": "e6ae",
|
||||
"unicode_decimal": 59054
|
||||
},
|
||||
{
|
||||
"icon_id": "34248516",
|
||||
"name": "照明灯",
|
||||
"font_class": "zhaomingdeng",
|
||||
"unicode": "e993",
|
||||
"unicode_decimal": 59795
|
||||
},
|
||||
{
|
||||
"icon_id": "41574592",
|
||||
"name": "温湿度监测",
|
||||
"font_class": "wenshidujiance",
|
||||
"unicode": "e6c8",
|
||||
"unicode_decimal": 59080
|
||||
},
|
||||
{
|
||||
"icon_id": "9027941",
|
||||
"name": "add",
|
||||
"font_class": "add",
|
||||
"unicode": "e604",
|
||||
"unicode_decimal": 58884
|
||||
},
|
||||
{
|
||||
"icon_id": "6677873",
|
||||
"name": "湿度",
|
||||
"font_class": "shidu",
|
||||
"unicode": "e60d",
|
||||
"unicode_decimal": 58893
|
||||
},
|
||||
{
|
||||
"icon_id": "16562592",
|
||||
"name": "温度计",
|
||||
"font_class": "wenduji",
|
||||
"unicode": "e6de",
|
||||
"unicode_decimal": 59102
|
||||
},
|
||||
{
|
||||
"icon_id": "1132463",
|
||||
"name": "空调工程",
|
||||
"font_class": "kongdiaogongcheng",
|
||||
"unicode": "e62e",
|
||||
"unicode_decimal": 58926
|
||||
},
|
||||
{
|
||||
"icon_id": "8852945",
|
||||
"name": "冷机",
|
||||
"font_class": "lengji",
|
||||
"unicode": "e639",
|
||||
"unicode_decimal": 58937
|
||||
},
|
||||
{
|
||||
"icon_id": "5800409",
|
||||
"name": "关闭",
|
||||
"font_class": "guanbi",
|
||||
"unicode": "e606",
|
||||
"unicode_decimal": 58886
|
||||
},
|
||||
{
|
||||
"icon_id": "45407305",
|
||||
"name": "分组 3",
|
||||
"font_class": "a-fenzu3",
|
||||
"unicode": "e602",
|
||||
"unicode_decimal": 58882
|
||||
},
|
||||
{
|
||||
"icon_id": "45407301",
|
||||
"name": "逆变器",
|
||||
"font_class": "nibianqi",
|
||||
"unicode": "e603",
|
||||
"unicode_decimal": 58883
|
||||
},
|
||||
{
|
||||
"icon_id": "45407312",
|
||||
"name": "battery-charge-line",
|
||||
"font_class": "battery-charge-line",
|
||||
"unicode": "e601",
|
||||
"unicode_decimal": 58881
|
||||
},
|
||||
{
|
||||
"icon_id": "45401862",
|
||||
"name": "分组 13",
|
||||
"font_class": "a-fenzu13",
|
||||
"unicode": "e600",
|
||||
"unicode_decimal": 58880
|
||||
},
|
||||
{
|
||||
"icon_id": "44416323",
|
||||
@@ -216,585 +258,11 @@
|
||||
"unicode_decimal": 58928
|
||||
},
|
||||
{
|
||||
"icon_id": "44603155",
|
||||
"name": "分组 2",
|
||||
"font_class": "a-fenzu2",
|
||||
"unicode": "e62e",
|
||||
"unicode_decimal": 58926
|
||||
},
|
||||
{
|
||||
"icon_id": "19877417",
|
||||
"name": "箭头",
|
||||
"font_class": "jiantou",
|
||||
"unicode": "e62d",
|
||||
"unicode_decimal": 58925
|
||||
},
|
||||
{
|
||||
"icon_id": "44581189",
|
||||
"name": "分组 549",
|
||||
"font_class": "a-fenzu549",
|
||||
"unicode": "e62c",
|
||||
"unicode_decimal": 58924
|
||||
},
|
||||
{
|
||||
"icon_id": "4880431",
|
||||
"name": "关闭",
|
||||
"font_class": "guanbi1",
|
||||
"unicode": "e62a",
|
||||
"unicode_decimal": 58922
|
||||
},
|
||||
{
|
||||
"icon_id": "27326599",
|
||||
"name": "保护装置",
|
||||
"font_class": "baohuzhuangzhi",
|
||||
"unicode": "e704",
|
||||
"unicode_decimal": 59140
|
||||
},
|
||||
{
|
||||
"icon_id": "32257173",
|
||||
"name": "配电房",
|
||||
"font_class": "peidianfang",
|
||||
"unicode": "e6ae",
|
||||
"unicode_decimal": 59054
|
||||
},
|
||||
{
|
||||
"icon_id": "35105134",
|
||||
"name": "同心圆",
|
||||
"font_class": "map-mark0",
|
||||
"unicode": "e6ba",
|
||||
"unicode_decimal": 59066
|
||||
},
|
||||
{
|
||||
"icon_id": "40458894",
|
||||
"name": "操控管理",
|
||||
"font_class": "caokongguanli",
|
||||
"unicode": "e62b",
|
||||
"unicode_decimal": 58923
|
||||
},
|
||||
{
|
||||
"icon_id": "40668708",
|
||||
"name": "Cyber Monitoring",
|
||||
"font_class": "a-CyberMonitoring",
|
||||
"unicode": "e640",
|
||||
"unicode_decimal": 58944
|
||||
},
|
||||
{
|
||||
"icon_id": "40668774",
|
||||
"name": "Growth Chart",
|
||||
"font_class": "a-GrowthChart",
|
||||
"unicode": "e650",
|
||||
"unicode_decimal": 58960
|
||||
},
|
||||
{
|
||||
"icon_id": "40668863",
|
||||
"name": "Sales Growth",
|
||||
"font_class": "a-SalesGrowth",
|
||||
"unicode": "e668",
|
||||
"unicode_decimal": 58984
|
||||
},
|
||||
{
|
||||
"icon_id": "40668908",
|
||||
"name": "Trend Chat",
|
||||
"font_class": "a-TrendChat",
|
||||
"unicode": "e673",
|
||||
"unicode_decimal": 58995
|
||||
},
|
||||
{
|
||||
"icon_id": "40668959",
|
||||
"name": "Cloud Computer",
|
||||
"font_class": "a-CloudComputer",
|
||||
"unicode": "e683",
|
||||
"unicode_decimal": 59011
|
||||
},
|
||||
{
|
||||
"icon_id": "40668971",
|
||||
"name": "Cloud Infrastructure",
|
||||
"font_class": "a-CloudInfrastructure",
|
||||
"unicode": "e687",
|
||||
"unicode_decimal": 59015
|
||||
},
|
||||
{
|
||||
"icon_id": "40668978",
|
||||
"name": "Cloud Management",
|
||||
"font_class": "a-CloudManagement",
|
||||
"unicode": "e689",
|
||||
"unicode_decimal": 59017
|
||||
},
|
||||
{
|
||||
"icon_id": "40668994",
|
||||
"name": "Cloud Security",
|
||||
"font_class": "a-CloudSecurity",
|
||||
"unicode": "e68e",
|
||||
"unicode_decimal": 59022
|
||||
},
|
||||
{
|
||||
"icon_id": "40669013",
|
||||
"name": "Dataserver",
|
||||
"font_class": "Dataserver",
|
||||
"unicode": "e693",
|
||||
"unicode_decimal": 59027
|
||||
},
|
||||
{
|
||||
"icon_id": "40669125",
|
||||
"name": "Volume Equalizer",
|
||||
"font_class": "a-VolumeEqualizer",
|
||||
"unicode": "e6c0",
|
||||
"unicode_decimal": 59072
|
||||
},
|
||||
{
|
||||
"icon_id": "40669723",
|
||||
"name": "Resource Management",
|
||||
"font_class": "a-ResourceManagement1",
|
||||
"unicode": "e808",
|
||||
"unicode_decimal": 59400
|
||||
},
|
||||
{
|
||||
"icon_id": "40669819",
|
||||
"name": "Graph Up",
|
||||
"font_class": "a-GraphUp",
|
||||
"unicode": "e859",
|
||||
"unicode_decimal": 59481
|
||||
},
|
||||
{
|
||||
"icon_id": "40670170",
|
||||
"name": "File Cabinet",
|
||||
"font_class": "a-FileCabinet",
|
||||
"unicode": "e97d",
|
||||
"unicode_decimal": 59773
|
||||
},
|
||||
{
|
||||
"icon_id": "40671533",
|
||||
"name": "System Setting",
|
||||
"font_class": "a-SystemSetting",
|
||||
"unicode": "ee41",
|
||||
"unicode_decimal": 60993
|
||||
},
|
||||
{
|
||||
"icon_id": "41578337",
|
||||
"name": "同心圆-copy",
|
||||
"font_class": "map-mark1",
|
||||
"unicode": "ee42",
|
||||
"unicode_decimal": 60994
|
||||
},
|
||||
{
|
||||
"icon_id": "41578361",
|
||||
"name": "同心圆-copy-copy",
|
||||
"font_class": "map-mark2-copy",
|
||||
"unicode": "ee43",
|
||||
"unicode_decimal": 60995
|
||||
},
|
||||
{
|
||||
"icon_id": "1228",
|
||||
"name": "首页",
|
||||
"font_class": "shouye",
|
||||
"unicode": "e625",
|
||||
"unicode_decimal": 58917
|
||||
},
|
||||
{
|
||||
"icon_id": "11372763",
|
||||
"name": "定位",
|
||||
"font_class": "dingwei",
|
||||
"unicode": "e8c4",
|
||||
"unicode_decimal": 59588
|
||||
},
|
||||
{
|
||||
"icon_id": "21164164",
|
||||
"name": "关闭",
|
||||
"font_class": "guanbi2",
|
||||
"unicode": "e62f",
|
||||
"unicode_decimal": 58927
|
||||
},
|
||||
{
|
||||
"icon_id": "35113133",
|
||||
"name": "处理状态",
|
||||
"font_class": "chulizhuangtai",
|
||||
"unicode": "e684",
|
||||
"unicode_decimal": 59012
|
||||
},
|
||||
{
|
||||
"icon_id": "44573704",
|
||||
"name": "分组 302",
|
||||
"font_class": "a-fenzu302",
|
||||
"unicode": "e629",
|
||||
"unicode_decimal": 58921
|
||||
},
|
||||
{
|
||||
"icon_id": "44573686",
|
||||
"name": "分组 1163",
|
||||
"font_class": "a-fenzu1163",
|
||||
"unicode": "e605",
|
||||
"unicode_decimal": 58885
|
||||
},
|
||||
{
|
||||
"icon_id": "44573683",
|
||||
"name": "分组 449",
|
||||
"font_class": "tuichu",
|
||||
"unicode": "e627",
|
||||
"unicode_decimal": 58919
|
||||
},
|
||||
{
|
||||
"icon_id": "44573677",
|
||||
"name": "分组 1565",
|
||||
"font_class": "yonghu-yuan",
|
||||
"unicode": "e628",
|
||||
"unicode_decimal": 58920
|
||||
},
|
||||
{
|
||||
"icon_id": "11372676",
|
||||
"name": "密码",
|
||||
"font_class": "mima",
|
||||
"unicode": "e8b2",
|
||||
"unicode_decimal": 59570
|
||||
},
|
||||
{
|
||||
"icon_id": "28622327",
|
||||
"name": "退出",
|
||||
"font_class": "tuichu3",
|
||||
"unicode": "e624",
|
||||
"unicode_decimal": 58916
|
||||
},
|
||||
{
|
||||
"icon_id": "35972990",
|
||||
"name": "icon_夜间-月亮",
|
||||
"font_class": "yueliang",
|
||||
"unicode": "e656",
|
||||
"unicode_decimal": 58966
|
||||
},
|
||||
{
|
||||
"icon_id": "16388270",
|
||||
"name": "通知",
|
||||
"font_class": "tongzhi",
|
||||
"unicode": "e674",
|
||||
"unicode_decimal": 58996
|
||||
},
|
||||
{
|
||||
"icon_id": "32538041",
|
||||
"name": "通知",
|
||||
"font_class": "tongzhi1",
|
||||
"unicode": "e9cd",
|
||||
"unicode_decimal": 59853
|
||||
},
|
||||
{
|
||||
"icon_id": "42794618",
|
||||
"name": "通知",
|
||||
"font_class": "tongzhi2",
|
||||
"unicode": "101d4",
|
||||
"unicode_decimal": 66004
|
||||
},
|
||||
{
|
||||
"icon_id": "44572036",
|
||||
"name": "形状结合",
|
||||
"font_class": "xingzhuangjiehe",
|
||||
"unicode": "e623",
|
||||
"unicode_decimal": 58915
|
||||
},
|
||||
{
|
||||
"icon_id": "4138428",
|
||||
"name": "系统管理",
|
||||
"font_class": "xitongguanli",
|
||||
"unicode": "e672",
|
||||
"unicode_decimal": 58994
|
||||
},
|
||||
{
|
||||
"icon_id": "5093337",
|
||||
"name": "平台管理",
|
||||
"font_class": "pingtaiguanli",
|
||||
"unicode": "e619",
|
||||
"unicode_decimal": 58905
|
||||
},
|
||||
{
|
||||
"icon_id": "6677873",
|
||||
"name": "湿度",
|
||||
"font_class": "shidu",
|
||||
"unicode": "e635",
|
||||
"unicode_decimal": 58933
|
||||
},
|
||||
{
|
||||
"icon_id": "17541547",
|
||||
"name": "订单-全部订单",
|
||||
"font_class": "dingdan-quanbudingdan",
|
||||
"unicode": "e626",
|
||||
"unicode_decimal": 58918
|
||||
},
|
||||
{
|
||||
"icon_id": "17605421",
|
||||
"name": "温度",
|
||||
"font_class": "wendu",
|
||||
"unicode": "e80f",
|
||||
"unicode_decimal": 59407
|
||||
},
|
||||
{
|
||||
"icon_id": "21135941",
|
||||
"name": "光照",
|
||||
"font_class": "fengtian-guangzhao",
|
||||
"unicode": "e636",
|
||||
"unicode_decimal": 58934
|
||||
},
|
||||
{
|
||||
"icon_id": "25716499",
|
||||
"name": "风速",
|
||||
"font_class": "fengsu",
|
||||
"unicode": "ea32",
|
||||
"unicode_decimal": 59954
|
||||
},
|
||||
{
|
||||
"icon_id": "35264434",
|
||||
"name": "物联中心_normal",
|
||||
"font_class": "wulianzhongxin_normal",
|
||||
"unicode": "e620",
|
||||
"unicode_decimal": 58912
|
||||
},
|
||||
{
|
||||
"icon_id": "39347276",
|
||||
"name": "icon-home",
|
||||
"font_class": "icon-1",
|
||||
"unicode": "e621",
|
||||
"unicode_decimal": 58913
|
||||
},
|
||||
{
|
||||
"icon_id": "41233755",
|
||||
"name": "分割线",
|
||||
"font_class": "fengexian",
|
||||
"unicode": "e634",
|
||||
"unicode_decimal": 58932
|
||||
},
|
||||
{
|
||||
"icon_id": "44546776",
|
||||
"name": "取消-抽屉",
|
||||
"font_class": "quxiao",
|
||||
"unicode": "e637",
|
||||
"unicode_decimal": 58935
|
||||
},
|
||||
{
|
||||
"icon_id": "44565750",
|
||||
"name": "user_login",
|
||||
"font_class": "a-xingzhuangjiehe1x",
|
||||
"unicode": "e638",
|
||||
"unicode_decimal": 58936
|
||||
},
|
||||
{
|
||||
"icon_id": "44565801",
|
||||
"name": "passwd_login",
|
||||
"font_class": "a-xingzhuangjiehe1x1",
|
||||
"unicode": "e639",
|
||||
"unicode_decimal": 58937
|
||||
},
|
||||
{
|
||||
"icon_id": "44572019",
|
||||
"name": "形状",
|
||||
"font_class": "xingzhuang1",
|
||||
"unicode": "e622",
|
||||
"unicode_decimal": 58914
|
||||
},
|
||||
{
|
||||
"icon_id": "44572020",
|
||||
"name": "形状",
|
||||
"font_class": "xingzhuang",
|
||||
"unicode": "e604",
|
||||
"unicode_decimal": 58884
|
||||
},
|
||||
{
|
||||
"icon_id": "44571957",
|
||||
"name": "分组 1865",
|
||||
"font_class": "a-fenzu1865",
|
||||
"unicode": "e61f",
|
||||
"unicode_decimal": 58911
|
||||
},
|
||||
{
|
||||
"icon_id": "44571956",
|
||||
"name": "分组 929",
|
||||
"font_class": "confirm",
|
||||
"unicode": "e61a",
|
||||
"unicode_decimal": 58906
|
||||
},
|
||||
{
|
||||
"icon_id": "44571953",
|
||||
"name": "分组 412",
|
||||
"font_class": "a-fenzu412",
|
||||
"unicode": "e61b",
|
||||
"unicode_decimal": 58907
|
||||
},
|
||||
{
|
||||
"icon_id": "44571951",
|
||||
"name": "分组 1753",
|
||||
"font_class": "shuaxin",
|
||||
"unicode": "e61c",
|
||||
"unicode_decimal": 58908
|
||||
},
|
||||
{
|
||||
"icon_id": "44571950",
|
||||
"name": "分组 2121",
|
||||
"font_class": "download",
|
||||
"unicode": "e61d",
|
||||
"unicode_decimal": 58909
|
||||
},
|
||||
{
|
||||
"icon_id": "44571949",
|
||||
"name": "分组 204",
|
||||
"font_class": "upload",
|
||||
"icon_id": "29049773",
|
||||
"name": "全屏幕",
|
||||
"font_class": "quanpingmu",
|
||||
"unicode": "e61e",
|
||||
"unicode_decimal": 58910
|
||||
},
|
||||
{
|
||||
"icon_id": "44571900",
|
||||
"name": "分组 463",
|
||||
"font_class": "add",
|
||||
"unicode": "e616",
|
||||
"unicode_decimal": 58902
|
||||
},
|
||||
{
|
||||
"icon_id": "44571899",
|
||||
"name": "分组 423",
|
||||
"font_class": "chongzhi",
|
||||
"unicode": "e617",
|
||||
"unicode_decimal": 58903
|
||||
},
|
||||
{
|
||||
"icon_id": "44571892",
|
||||
"name": "分组 1977",
|
||||
"font_class": "setProtectControl",
|
||||
"unicode": "e618",
|
||||
"unicode_decimal": 58904
|
||||
},
|
||||
{
|
||||
"icon_id": "44571905",
|
||||
"name": "分组 610",
|
||||
"font_class": "export",
|
||||
"unicode": "e613",
|
||||
"unicode_decimal": 58899
|
||||
},
|
||||
{
|
||||
"icon_id": "44571903",
|
||||
"name": "分组 614",
|
||||
"font_class": "import",
|
||||
"unicode": "e614",
|
||||
"unicode_decimal": 58900
|
||||
},
|
||||
{
|
||||
"icon_id": "44571902",
|
||||
"name": "分组 249",
|
||||
"font_class": "del",
|
||||
"unicode": "e615",
|
||||
"unicode_decimal": 58901
|
||||
},
|
||||
{
|
||||
"icon_id": "44571893",
|
||||
"name": "分组 1237",
|
||||
"font_class": "setProtectValue",
|
||||
"unicode": "e60e",
|
||||
"unicode_decimal": 58894
|
||||
},
|
||||
{
|
||||
"icon_id": "44571891",
|
||||
"name": "分组 2237",
|
||||
"font_class": "setLightMode",
|
||||
"unicode": "e60f",
|
||||
"unicode_decimal": 58895
|
||||
},
|
||||
{
|
||||
"icon_id": "44571888",
|
||||
"name": "分组 2085",
|
||||
"font_class": "setTimeMode",
|
||||
"unicode": "e610",
|
||||
"unicode_decimal": 58896
|
||||
},
|
||||
{
|
||||
"icon_id": "44571885",
|
||||
"name": "分组 1739",
|
||||
"font_class": "switchMode",
|
||||
"unicode": "e611",
|
||||
"unicode_decimal": 58897
|
||||
},
|
||||
{
|
||||
"icon_id": "44571884",
|
||||
"name": "分组 1375",
|
||||
"font_class": "setTime",
|
||||
"unicode": "e612",
|
||||
"unicode_decimal": 58898
|
||||
},
|
||||
{
|
||||
"icon_id": "44571897",
|
||||
"name": "分组 403",
|
||||
"font_class": "sousu",
|
||||
"unicode": "e60c",
|
||||
"unicode_decimal": 58892
|
||||
},
|
||||
{
|
||||
"icon_id": "44571896",
|
||||
"name": "分组 2241",
|
||||
"font_class": "a-fenzu2241",
|
||||
"unicode": "e60d",
|
||||
"unicode_decimal": 58893
|
||||
},
|
||||
{
|
||||
"icon_id": "44567819",
|
||||
"name": "分组 1067",
|
||||
"font_class": "openOrClose",
|
||||
"unicode": "e60b",
|
||||
"unicode_decimal": 58891
|
||||
},
|
||||
{
|
||||
"icon_id": "44567629",
|
||||
"name": "分组 1928",
|
||||
"font_class": "zhaoce",
|
||||
"unicode": "e60a",
|
||||
"unicode_decimal": 58890
|
||||
},
|
||||
{
|
||||
"icon_id": "44567660",
|
||||
"name": "分组 342",
|
||||
"font_class": "send",
|
||||
"unicode": "e609",
|
||||
"unicode_decimal": 58889
|
||||
},
|
||||
{
|
||||
"icon_id": "44567617",
|
||||
"name": "分组 5",
|
||||
"font_class": "a-fenzu5",
|
||||
"unicode": "e608",
|
||||
"unicode_decimal": 58888
|
||||
},
|
||||
{
|
||||
"icon_id": "44567394",
|
||||
"name": "设置",
|
||||
"font_class": "shezhi",
|
||||
"unicode": "e607",
|
||||
"unicode_decimal": 58887
|
||||
},
|
||||
{
|
||||
"icon_id": "44567418",
|
||||
"name": "分组 1565",
|
||||
"font_class": "touxiang",
|
||||
"unicode": "e606",
|
||||
"unicode_decimal": 58886
|
||||
},
|
||||
{
|
||||
"icon_id": "44567099",
|
||||
"name": "交易账户",
|
||||
"font_class": "jiaoyizhanghuguanli",
|
||||
"unicode": "e602",
|
||||
"unicode_decimal": 58882
|
||||
},
|
||||
{
|
||||
"icon_id": "44567095",
|
||||
"name": "营销选中",
|
||||
"font_class": "yingxiaoxuanzhong",
|
||||
"unicode": "e603",
|
||||
"unicode_decimal": 58883
|
||||
},
|
||||
{
|
||||
"icon_id": "44567155",
|
||||
"name": "可视化",
|
||||
"font_class": "a-lujing1",
|
||||
"unicode": "e600",
|
||||
"unicode_decimal": 58880
|
||||
},
|
||||
{
|
||||
"icon_id": "44567153",
|
||||
"name": "用户",
|
||||
"font_class": "a-lujing11",
|
||||
"unicode": "e601",
|
||||
"unicode_decimal": 58881
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -17,7 +17,7 @@
|
||||
selectedRowKeys: data.selectedRowKeys,
|
||||
onChange: onSelectChange
|
||||
}
|
||||
: false
|
||||
: {}
|
||||
"
|
||||
:expanded-row-keys="data.newTableOpt.expand ? data.expandedKeys : null"
|
||||
size="middle"
|
||||
@@ -161,8 +161,11 @@ const scroll = ref({})
|
||||
onMounted(async () => {
|
||||
data.newColumns = [...props.columns]
|
||||
data.realTableData = [...props.tableData]
|
||||
|
||||
await nextTick()
|
||||
// console.log(props.tableH, 'props.tableH');
|
||||
console.log(comtable.value.offsetHeight,'comtable.value.offsetHeight');
|
||||
|
||||
|
||||
scroll.value = { y: comtable.value.offsetHeight - 56 }
|
||||
})
|
||||
@@ -220,10 +223,11 @@ defineExpose({ ...toRefs(data), loading, mountedScroll, scroll: data.scroll })
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.comtable {
|
||||
border-radius: 8px;
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 8px;
|
||||
font-size: 14px;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
@@ -261,6 +265,10 @@ defineExpose({ ...toRefs(data), loading, mountedScroll, scroll: data.scroll })
|
||||
background: transparent;
|
||||
color: #fff !important;
|
||||
border-bottom: none !important; /* 可选:去除底部边框 */
|
||||
&.ant-table-cell-fix-right{
|
||||
background: #10687d !important;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,19 +347,22 @@ defineExpose({ ...toRefs(data), loading, mountedScroll, scroll: data.scroll })
|
||||
top: -210px !important;
|
||||
}
|
||||
.ant-pagination-item {
|
||||
border: 1px solid #fff;
|
||||
&:not(.ant-pagination-item-active):hover {
|
||||
background: #1c797a !important;
|
||||
}
|
||||
a {
|
||||
color: #fff;
|
||||
border-radius: 2px;
|
||||
background: #1c797a !important;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.ant-pagination-item-ellipsis){
|
||||
color: rgb(255 255 255 / 25%) !important;
|
||||
}
|
||||
.ant-pagination-item-active {
|
||||
border: 1px solid transparent;
|
||||
color: #fff;
|
||||
border: none !important;
|
||||
background: #1c797a !important;
|
||||
}
|
||||
}
|
||||
@@ -369,6 +380,12 @@ defineExpose({ ...toRefs(data), loading, mountedScroll, scroll: data.scroll })
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
:deep(.ant-table-body .ant-table-cell-fix-right.ant-table-cell-fix-right-first){
|
||||
background: #082e4a !important;
|
||||
|
||||
}
|
||||
:deep(.ant-table-body) {
|
||||
color:#fff;
|
||||
@@ -416,4 +433,9 @@ defineExpose({ ...toRefs(data), loading, mountedScroll, scroll: data.scroll })
|
||||
:deep(.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters:hover) {
|
||||
background: var(--table-select) !important;
|
||||
}
|
||||
:deep(.ant-table-cell-fix-right){
|
||||
&::after{
|
||||
border-inline-end:none !important
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -371,7 +371,7 @@ import {
|
||||
onMounted,
|
||||
defineExpose
|
||||
} from 'vue'
|
||||
import { TreeSelect } from 'ant-design-vue'
|
||||
|
||||
import iconfonts from '../assets/iconfont/iconfont.json'
|
||||
import validateRulesObj from '../utils/decorator'
|
||||
|
||||
@@ -420,7 +420,7 @@ const data = reactive({
|
||||
],
|
||||
|
||||
treeCheckValue: null,
|
||||
SHOW_PARENT: TreeSelect.SHOW_PARENT,
|
||||
// SHOW_PARENT: TreeSelect.SHOW_PARENT,
|
||||
|
||||
loading: false,
|
||||
imageUrl: ''
|
||||
@@ -641,7 +641,7 @@ defineExpose({
|
||||
}
|
||||
|
||||
.form-item {
|
||||
width: 320px !important;
|
||||
// width: 320px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,8 +154,7 @@ export default {
|
||||
// this.formRules = menuFormRules
|
||||
break
|
||||
case 'permission':
|
||||
// this.detailInfos = permissionOptions
|
||||
// this.formRules = permissionFormRules
|
||||
|
||||
break
|
||||
|
||||
case 'role':
|
||||
@@ -175,6 +174,7 @@ export default {
|
||||
case 'alarmLog':
|
||||
this.detailInfos = alarmlogOptions
|
||||
this.formRules = {}
|
||||
break
|
||||
case 'serviceApi':
|
||||
this.detailInfos = serviceApiOptions
|
||||
this.formRules = serviceApiFormRules
|
||||
|
||||
@@ -35,43 +35,62 @@
|
||||
<span class="value">{{ info.v }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="item.view == 1" class="item-button">
|
||||
<span class="text">实时数据:</span>
|
||||
<a-button type="primary" size="small" @click="openModal(item)">查看</a-button>
|
||||
<div class="item-button">
|
||||
<div v-if="item.view == 1">
|
||||
<span class="text">实时数据:</span>
|
||||
<a-button type="primary" size="small" @click="openModal(item, 1)">查看</a-button>
|
||||
</div>
|
||||
<div v-if="item.type == 105">
|
||||
<span class="text">单体信息:</span>
|
||||
<a-button type="primary" size="small" @click="openModal(item, 2)">查看</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a-modal
|
||||
v-model:open="modalOpen"
|
||||
@ok="handleOk"
|
||||
width="90%"
|
||||
width="60%"
|
||||
class="modal-device"
|
||||
:get-container="() => $refs.device"
|
||||
>
|
||||
<div>
|
||||
<div class="title">
|
||||
<div>电流电压</div>
|
||||
<img src="@/assets/images/titleLine.png" alt="" />
|
||||
<div v-if="modalComponent == 1" class="modal-content">
|
||||
<div class="item">
|
||||
<div class="title">
|
||||
电流电压
|
||||
<!-- <div>电流电压</div>
|
||||
<img src="@/assets/images/titleLine.png" alt="" /> -->
|
||||
</div>
|
||||
<div class="echarts">
|
||||
<predictEcharts
|
||||
:chart-options="chartOptions[0]"
|
||||
:chart-data="chartData"
|
||||
ref="chartRef1"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="echarts">
|
||||
<predictEcharts
|
||||
:chart-options="chartOptions[0]"
|
||||
:chart-data="chartData"
|
||||
ref="chartRef1"
|
||||
/>
|
||||
<div class="item">
|
||||
<div class="title">功率</div>
|
||||
<div class="echarts">
|
||||
<predictEcharts
|
||||
:chart-options="chartOptions[1]"
|
||||
:chart-data="chartData"
|
||||
ref="chartRef2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="title">
|
||||
<div>功率</div>
|
||||
<img src="@/assets/images/titleLine.png" alt="" />
|
||||
</div>
|
||||
<div class="echarts">
|
||||
<predictEcharts
|
||||
:chart-options="chartOptions[1]"
|
||||
:chart-data="chartData"
|
||||
ref="chartRef2"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="content-table" style="height: 600px" v-else>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:data-source="tableData"
|
||||
size="small"
|
||||
:scroll="{ y: 500 }"
|
||||
:pagination="false"
|
||||
row-class-name="no-hover-row"
|
||||
row-key="id"
|
||||
>
|
||||
</a-table>
|
||||
</div>
|
||||
</a-modal>
|
||||
</div>
|
||||
@@ -98,19 +117,7 @@ export default {
|
||||
return {
|
||||
modalOpen: false,
|
||||
deviceList: [],
|
||||
chunengInfo: [
|
||||
{ label: '运行模式', key: 'operationMode', value: '并网运行' },
|
||||
{ label: '电池储能容量', key: 'batteryCapacity', value: '100kWh' },
|
||||
{ label: '实时电压', key: 'voltage', value: '232.5V' },
|
||||
{ label: '功率因数', key: 'powerFactor', value: '0.95' },
|
||||
{ label: '实时电流', key: 'current', value: '0.01A' },
|
||||
{ label: '额定电压', key: 'ratedVoltage', value: '232.5V' },
|
||||
{ label: '实时功率', key: 'power', value: '0.01kW' },
|
||||
{ label: '额定电流', key: 'ratedCurrent', value: '0.01A' },
|
||||
{ label: '实时数据', key: 'realTimeData', value: '0.01kWh' },
|
||||
{ label: '额定功率', key: 'ratedPower', value: '0.01kW' },
|
||||
{ label: '冷却方式', key: 'coolingMethod', value: '风冷' }
|
||||
],
|
||||
|
||||
chartOptions: [
|
||||
{
|
||||
type: 'line',
|
||||
@@ -173,6 +180,52 @@ export default {
|
||||
chartData: {
|
||||
xdata: [],
|
||||
ydata: {}
|
||||
},
|
||||
modalComponent: 1,
|
||||
columns: [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: 'id',
|
||||
key: 'id',
|
||||
ellipsis: true,
|
||||
fixed: 'left'
|
||||
},
|
||||
{
|
||||
title: '单体SOC(%)',
|
||||
dataIndex: 'SOC',
|
||||
key: 'SOC'
|
||||
},
|
||||
{
|
||||
title: '单体SOH(%)',
|
||||
dataIndex: 'SOH',
|
||||
key: 'SOH'
|
||||
},
|
||||
{
|
||||
title: '单体电压(V)',
|
||||
dataIndex: 'V',
|
||||
key: 'V'
|
||||
},
|
||||
{
|
||||
title: '单体温度(℃)',
|
||||
dataIndex: 'T',
|
||||
key: 'T'
|
||||
},
|
||||
{
|
||||
title: '单体内阻(Ω)',
|
||||
dataIndex: 'R_i',
|
||||
key: 'R_i'
|
||||
}
|
||||
],
|
||||
tableData: [],
|
||||
pageOption: {
|
||||
// pageSize: 1000,
|
||||
// page: 1
|
||||
},
|
||||
tableOption: {
|
||||
scroll: {
|
||||
y: 500
|
||||
},
|
||||
page: false
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -191,8 +244,15 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
this.getDeviceList()
|
||||
|
||||
|
||||
},
|
||||
methods: {
|
||||
handlePagesizeChange(pageOption) {
|
||||
this.pageOption.pageSize = pageOption.pageSize
|
||||
this.pageOption.page = pageOption.page
|
||||
this.getList()
|
||||
},
|
||||
getIcongont(ele) {
|
||||
return deviceTypeList.find((item) => item.value == ele.type).iconfont || ''
|
||||
},
|
||||
@@ -226,9 +286,32 @@ export default {
|
||||
})
|
||||
this.chartData.ydata = res.data
|
||||
this.chartData.xdata = this.generateTimePoints()
|
||||
this.$refs.chartRef1.initCharts()
|
||||
this.$refs.chartRef2.initCharts()
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.chartRef1) {
|
||||
this.$refs.chartRef1.initCharts()
|
||||
}
|
||||
if (this.$refs.chartRef2) {
|
||||
this.$refs.chartRef2.initCharts()
|
||||
}
|
||||
})
|
||||
// this.$refs.chartRef1.initCharts()
|
||||
// this.$refs.chartRef2.initCharts()
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
},
|
||||
//查询BCU单体信息
|
||||
async getDeviceBCUDetail(item) {
|
||||
try {
|
||||
const res = await getReq('/queryDeviceBCUDetail', {
|
||||
station_id: this.stationId,
|
||||
device_id: item.device_id
|
||||
})
|
||||
|
||||
this.tableData = res.data.map((item, index) => {
|
||||
item.id = index + 1
|
||||
return item
|
||||
})
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
@@ -249,10 +332,15 @@ export default {
|
||||
console.log(error)
|
||||
}
|
||||
},
|
||||
async openModal(item) {
|
||||
await this.getDevicCharts(item)
|
||||
|
||||
async openModal(item, val) {
|
||||
console.log(item, '=============')
|
||||
this.modalComponent = val
|
||||
this.modalOpen = true
|
||||
if (val == 1) {
|
||||
await this.getDevicCharts(item)
|
||||
} else {
|
||||
await this.getDeviceBCUDetail(item)
|
||||
}
|
||||
},
|
||||
handleOk() {
|
||||
this.modalOpen = false
|
||||
@@ -266,15 +354,20 @@ export default {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin-left: 20px;
|
||||
display: grid;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
grid-gap: 20px;
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
overflow-y: auto;
|
||||
align-content: flex-start;
|
||||
// grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
|
||||
.device-item {
|
||||
border-radius: 15px;
|
||||
|
||||
background: $bg2-color;
|
||||
padding: 15px;
|
||||
min-width: 340px;
|
||||
max-width: 430px;
|
||||
height: 260px;
|
||||
flex: 1;
|
||||
.item-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -290,7 +383,7 @@ export default {
|
||||
background: linear-gradient(90deg, #3dfefa 0%, #2a82e4 2.96%, #27a188 100%),
|
||||
linear-gradient(90deg, #3dfefa 0%, #01dfef 2.96%, #08a5ff 100%);
|
||||
.iconfont {
|
||||
font-size: 50px;
|
||||
font-size: 45px;
|
||||
}
|
||||
}
|
||||
.title {
|
||||
@@ -332,8 +425,8 @@ export default {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
color: #fff;
|
||||
display: grid;
|
||||
// line-height: 45px;
|
||||
margin-top: 15px;
|
||||
margin-bottom: 3px;
|
||||
padding: 0 10px;
|
||||
height: 120px;
|
||||
overflow-y: auto;
|
||||
@@ -345,7 +438,12 @@ export default {
|
||||
}
|
||||
}
|
||||
.item-button {
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
display: flex;
|
||||
div {
|
||||
width: calc(50% - 10px);
|
||||
}
|
||||
}
|
||||
.text {
|
||||
color: $text-color;
|
||||
@@ -354,26 +452,66 @@ export default {
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
.content-table {
|
||||
height: 700px;
|
||||
margin-top: 40px;
|
||||
|
||||
:deep(.ant-table-header tr th) {
|
||||
background: $table-border !important;
|
||||
color: #fff;
|
||||
}
|
||||
:deep(.ant-table-body tr td, .ant-table-cell) {
|
||||
background: $table-bg !important;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.environment {
|
||||
width: 200px;
|
||||
}
|
||||
:deep(.modal-device) {
|
||||
.modal-device {
|
||||
color: #fff;
|
||||
.title {
|
||||
display: flex;
|
||||
font-weight: 700;
|
||||
flex-direction: column;
|
||||
.modal-content {
|
||||
height: 700px;
|
||||
.item {
|
||||
// height: 300px;
|
||||
.title {
|
||||
color: #fff;
|
||||
width: 230px;
|
||||
border-bottom: 5px solid transparent;
|
||||
border-image: url('@/assets/boxBottom.png') 0 0 100% 0 stretch;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 232px;
|
||||
height: 6px;
|
||||
margin-top: 10px;
|
||||
.echarts {
|
||||
height: 300px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.echarts {
|
||||
width: 100%;
|
||||
height: 280px;
|
||||
}
|
||||
|
||||
:deep(.ant-modal-body) {
|
||||
:deep(.ant-table-wrapper .ant-table-row-expand-icon) {
|
||||
color: $green !important;
|
||||
}
|
||||
//表格行悬浮样式
|
||||
.no-hover-row:hover > td {
|
||||
// background-color: transparent !important;
|
||||
background-color: #f0f8ff !important;
|
||||
}
|
||||
}
|
||||
:deep(.ant-table-cell) {
|
||||
&::before {
|
||||
width: 0 !important;
|
||||
}
|
||||
}
|
||||
:deep(.ant-table-thead > tr > td) {
|
||||
border-bottom: none !important;
|
||||
border-top: none !important;
|
||||
}
|
||||
:deep(.ant-table-wrapper .ant-table-tbody > tr > td) {
|
||||
border-top: none !important;
|
||||
}
|
||||
:deep(.ant-table-wrapper .ant-table-thead > tr > th) {
|
||||
border-bottom: none !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
167
web/src/components/monitor/haikang.vue
Normal file
167
web/src/components/monitor/haikang.vue
Normal file
@@ -0,0 +1,167 @@
|
||||
<template>
|
||||
<div class="title" >
|
||||
<span>{{ item.name }}</span>
|
||||
<img
|
||||
src="@/assets/images/fillScreen.png"
|
||||
alt=""
|
||||
width="23px"
|
||||
style="margin-left: 10px; cursor: pointer"
|
||||
/>
|
||||
</div>
|
||||
<div :id="'divPlugin_' + index" class="plugin"></div>
|
||||
<!-- <a-button @click="clickLogin">开始登录</a-button>
|
||||
<a-button @click="clickStartRealPlay">开始预览</a-button> -->
|
||||
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props:{
|
||||
index: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
item: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
g_iWndIndex: 0,
|
||||
szDeviceIdentify: '',
|
||||
deviceport: '',
|
||||
channels: [],
|
||||
ip: '',
|
||||
port: '',
|
||||
username: '',
|
||||
password: '',
|
||||
iRtspPort: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.init()
|
||||
},
|
||||
methods: {
|
||||
// 初始化
|
||||
init() {
|
||||
let that = this;
|
||||
|
||||
// 初始化插件参数及插入插件
|
||||
this.$nextTick(() => {
|
||||
window.WebVideoCtrl.I_InitPlugin('100%', '100%', {
|
||||
bWndFull: true, // 但窗口双击全屏
|
||||
iPackageType: 2, // 封装格式 无插件只能是2
|
||||
iWndowType: 1, // 分屏类型 1*1 2*2 ....
|
||||
bNoPlugin: true, // 开启无插件模式
|
||||
cbInitPluginComplete: function () {
|
||||
console.log("初始化成功!");
|
||||
window.WebVideoCtrl.I_InsertOBJECTPlugin('divPlugin_' + that.index);
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
},
|
||||
// 登录
|
||||
clickLogin() {
|
||||
if (!this.ip || !this.port) {
|
||||
return
|
||||
}
|
||||
this.szDeviceIdentify = this.ip+"_"+this.port
|
||||
WebVideoCtrl.I_Login(this.ip, 1, this.port, this.username, this.password,
|
||||
{
|
||||
success: function(xmlDoc) {
|
||||
this.getChannelInfo() // 获取模拟通道
|
||||
this.getDevicePort() // 获取端口 (影响不大)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取模拟媒体通道
|
||||
getChannelInfo() {
|
||||
let self = this
|
||||
if (!this.szDeviceIdentify) {
|
||||
return
|
||||
}
|
||||
WebVideoCtrl.I_GetAnalogChannelInfo(self.szDeviceIdentify, {
|
||||
async: false,
|
||||
success: function (xmlDoc) {
|
||||
let oChannels = $(xmlDoc).find("VideoInputChannel");
|
||||
console.log('获取模拟通道成功', oChannels)
|
||||
$.each(oChannels, function (i) {
|
||||
let id = $(this).find("id").eq(0).text(),
|
||||
name = $(this).find("name").eq(0).text();
|
||||
if (!name) {
|
||||
name = "Camera " + (i < 9 ? "0" + (i + 1) : (i + 1));
|
||||
}
|
||||
self.channels.push({
|
||||
id: id,
|
||||
name: name
|
||||
})
|
||||
});
|
||||
},
|
||||
error: function (status, xmlDoc) {
|
||||
console.log('获取模拟通道失败', status, xmlDoc)
|
||||
}
|
||||
});
|
||||
},
|
||||
// 获取端口 不会对预览效果造成影响
|
||||
getDevicePort() {
|
||||
if (!this.szDeviceIdentify) {
|
||||
return
|
||||
}
|
||||
let oPort = WebVideoCtrl.I_GetDevicePort(this.szDeviceIdentify);
|
||||
console.log('获取通道端口号', oPort)
|
||||
if (oPort != null) {
|
||||
this.deviceport = oPort.iDevicePort;
|
||||
this.iRtspPort= oPort.iRtspPort;
|
||||
}
|
||||
},
|
||||
// 开始预览
|
||||
clickStartRealPlay() {
|
||||
let self = this
|
||||
let oWndInfo = WebVideoCtrl.I_GetWindowStatus(self.g_iWndIndex),
|
||||
iChannelID = self.channels[0].id
|
||||
if (!this.szDeviceIdentify) {
|
||||
return;
|
||||
}
|
||||
let startRealPlay = function () {
|
||||
WebVideoCtrl.I_StartRealPlay(self.szDeviceIdentify, {
|
||||
iRtspPort: parseInt(self.deviceport, 10), // RTSP端口必须是int
|
||||
iStreamType: 1, // 码流类型:1-主码流 必须int
|
||||
iChannelID: parseInt(iChannelID, 10), // 播放通道 必须int
|
||||
bZeroChannel: false, // 是否播放零通道 默认false
|
||||
success: function () {
|
||||
console.log("预览成功")
|
||||
},
|
||||
error: function (status, xmlDoc) {
|
||||
console.log("预览失败", status, xmlDoc)
|
||||
}
|
||||
});
|
||||
};
|
||||
if (oWndInfo != null) {// 已经在播放了,先停止
|
||||
WebVideoCtrl.I_Stop({
|
||||
success: function () {
|
||||
startRealPlay();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
startRealPlay();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.plugin{
|
||||
width:100%;
|
||||
height:calc(100% - 40px)
|
||||
}
|
||||
.title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 10px;
|
||||
color: #fff;
|
||||
height: 30px;
|
||||
}
|
||||
</style>
|
||||
@@ -1,24 +1,14 @@
|
||||
<template>
|
||||
<div class="videos">
|
||||
<div class="video-item" v-for="item in 8" :key="item">
|
||||
<div class="title">
|
||||
<span>xxxxz监控点</span>
|
||||
<img
|
||||
src="@/assets/images/fillScreen.png"
|
||||
alt=""
|
||||
width="23px"
|
||||
style="margin-left: 10px; cursor: pointer"
|
||||
/>
|
||||
</div>
|
||||
<div class="video">
|
||||
<video
|
||||
src="https://media.w3.org/2010/05/sintel/trailer_hd.mp4"
|
||||
controls="controls"
|
||||
width="100%"
|
||||
height="100%"
|
||||
></video>
|
||||
</div>
|
||||
<div class="videosPage" id="videosPage">
|
||||
<div
|
||||
class="content"
|
||||
:class="videosPageWidth < 900 ? 'con-w2' : 'con-w1'"
|
||||
v-for="(item, index) in videoList"
|
||||
:key="item"
|
||||
>
|
||||
<haikang :index="index" :item="item" class="video"></haikang>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="environment">
|
||||
<div class="tab-header">
|
||||
@@ -34,10 +24,8 @@
|
||||
<ComTable
|
||||
:columns="columns[activeTab]"
|
||||
:table-data="tableDatas[activeTab]"
|
||||
@handlePagesizeChange="handlePagesizeChange"
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
:table-option="{ page: false }"
|
||||
>
|
||||
</ComTable>
|
||||
</div>
|
||||
@@ -46,17 +34,14 @@
|
||||
|
||||
<script>
|
||||
import { postReq, getReq } from '@/request/api'
|
||||
import haikang from './haikang.vue'
|
||||
export default {
|
||||
name: '',
|
||||
components: {},
|
||||
components: { haikang },
|
||||
props: {
|
||||
stationId: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
systemType: {
|
||||
type: Number,
|
||||
default: 1
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -111,7 +96,7 @@ export default {
|
||||
align: 'center'
|
||||
}
|
||||
],
|
||||
'temp_hum': [
|
||||
temp_hum: [
|
||||
{
|
||||
title: '点位',
|
||||
dataIndex: 'pos',
|
||||
@@ -158,20 +143,54 @@ export default {
|
||||
tableOption: {
|
||||
select: false,
|
||||
page: false
|
||||
}
|
||||
},
|
||||
//
|
||||
videoList: [],
|
||||
g_iWndIndex: 0,
|
||||
szDeviceIdentify: '',
|
||||
deviceport: '',
|
||||
channels: [],
|
||||
ip: '',
|
||||
port: '',
|
||||
username: '',
|
||||
password: '',
|
||||
iRtspPort: '',
|
||||
videosPageWidth: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
const div = document.getElementById('videosPage')
|
||||
const width = div.offsetWidth
|
||||
this.videosPageWidth = width
|
||||
})
|
||||
|
||||
this.getEnvironment()
|
||||
this.getDeviceList()
|
||||
},
|
||||
methods: {
|
||||
async getEnvironment() {
|
||||
try {
|
||||
const res = await getReq('/queryEnvironment', { station_id: this.stationId })
|
||||
console.log(res, '==============')
|
||||
this.tableDatas = res.data
|
||||
// this.deviceList=res.data
|
||||
} catch (error) {
|
||||
this.tableDatas = {}
|
||||
console.log(error)
|
||||
}
|
||||
},
|
||||
//请求运行监控系统设备信息
|
||||
async getDeviceList() {
|
||||
try {
|
||||
const res = await getReq('/queryDevicByCategory', {
|
||||
station_id: this.stationId,
|
||||
category: 4
|
||||
})
|
||||
|
||||
this.videoList = res.data.concat(res.data)
|
||||
this.videoList = this.videoList.concat(this.videoList)
|
||||
} catch (error) {
|
||||
this.videoList = []
|
||||
|
||||
console.log(error)
|
||||
}
|
||||
}
|
||||
@@ -180,30 +199,27 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.videos {
|
||||
.videosPage {
|
||||
width: calc(100% - 470px);
|
||||
height: 100%;
|
||||
margin-left: 20px;
|
||||
display: grid;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
grid-gap: 20px;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
overflow-y: auto;
|
||||
.video-item {
|
||||
// width: 410px;
|
||||
// height: 340px;
|
||||
align-content: flex-start;
|
||||
justify-content: flex-start;
|
||||
.content {
|
||||
border-radius: 15px;
|
||||
|
||||
background: $bg2-color;
|
||||
padding: 10px;
|
||||
.title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
color: #fff;
|
||||
}
|
||||
.video {
|
||||
margin-top: 10px;
|
||||
}
|
||||
padding: 15px;
|
||||
height: 280px;
|
||||
}
|
||||
.con-w1 {
|
||||
width: calc((100% - 40px) / 3);
|
||||
}
|
||||
.con-w2 {
|
||||
width: calc((100% - 20px) / 2);
|
||||
}
|
||||
}
|
||||
.environment {
|
||||
@@ -250,6 +266,7 @@ export default {
|
||||
cursor: pointer;
|
||||
border: 1px solid $tab-border;
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.actived {
|
||||
|
||||
@@ -81,7 +81,7 @@ export default {
|
||||
show: true,
|
||||
xAxisIndex: 0, // 控制第一个X轴
|
||||
start: 0, // 初始显示范围起点(百分比)
|
||||
end: 20, // 初始显示范围终点(百分比)
|
||||
end: 100, // 初始显示范围终点(百分比)
|
||||
height: 20, // 滑动条高度
|
||||
bottom: 10 // 距离底部距离
|
||||
},
|
||||
@@ -89,7 +89,7 @@ export default {
|
||||
type: 'inside', // 内置型(鼠标滚轮/拖拽交互)
|
||||
xAxisIndex: 0,
|
||||
start: 0,
|
||||
end: 20
|
||||
end: 100
|
||||
}
|
||||
],
|
||||
xAxis: {
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
<!-- eslint-disable camelcase -->
|
||||
<template>
|
||||
<div class="policyForm">
|
||||
<div class="policyForm" ref="policyForm">
|
||||
<div class="title">
|
||||
<div>基础信息{{ formStatus }}</div>
|
||||
<div>基础信息</div>
|
||||
<img src="@/assets/images/titleLine.png" alt="" />
|
||||
</div>
|
||||
<a-form
|
||||
:model="formData"
|
||||
layout="inline"
|
||||
label-align="left"
|
||||
:label-col="{ style: { width: '85px' } }"
|
||||
:rules="rules"
|
||||
@@ -30,7 +29,7 @@
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="低谷电价" class="col4" required>
|
||||
<a-form-item label="低谷电价" class="col2" required>
|
||||
<a-input-number
|
||||
:precision="2"
|
||||
v-model:value="formData.price[0]"
|
||||
@@ -39,7 +38,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="平段电价" class="col4" required>
|
||||
<a-form-item label="平段电价" class="col2" required>
|
||||
<a-input-number
|
||||
:precision="2"
|
||||
v-model:value="formData.price[1]"
|
||||
@@ -48,7 +47,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="高峰电价" class="col4" required>
|
||||
<a-form-item label="高峰电价" class="col2" required>
|
||||
<a-input-number
|
||||
:precision="2"
|
||||
v-model:value="formData.price[2]"
|
||||
@@ -57,7 +56,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="尖峰电价" class="col4" required>
|
||||
<a-form-item label="尖峰电价" class="col2" required>
|
||||
<a-input-number
|
||||
:precision="2"
|
||||
v-model:value="formData.price[3]"
|
||||
@@ -179,7 +178,7 @@
|
||||
</a-form-item>
|
||||
</div>
|
||||
|
||||
<a-form-item label="策略描述" class="col2">
|
||||
<a-form-item label="策略描述" class="col1">
|
||||
<a-textarea v-model:value="formData.describe" :disabled="formStatus == 'read'" />
|
||||
</a-form-item>
|
||||
<a-form-item label="是否启用" class="col2">
|
||||
@@ -193,7 +192,8 @@
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
<a-modal v-model:open="periodModal" @ok="handlePeriodModalOk">
|
||||
<a-modal
|
||||
v-model:open="periodModal" @ok="handlePeriodModalOk" :get-container="()=>$refs.policyForm">
|
||||
<a-form
|
||||
ref="periodRef"
|
||||
:model="periodForm"
|
||||
@@ -240,6 +240,7 @@ export default {
|
||||
default: 'add'
|
||||
}
|
||||
},
|
||||
emits:['closeModal'],
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
@@ -308,8 +309,8 @@ export default {
|
||||
handler(newVal) {
|
||||
if (this.formStatus == 'add') {
|
||||
this.formData = {
|
||||
type: '5',
|
||||
name: '测试',
|
||||
type: '',
|
||||
name: '',
|
||||
price: [0, 0, 0, 0],
|
||||
period1: [],
|
||||
period5: [
|
||||
@@ -321,14 +322,7 @@ export default {
|
||||
chargeType: null,
|
||||
dischargeType: null
|
||||
}
|
||||
// {
|
||||
// charge_time: [],
|
||||
// discharge_time: [],
|
||||
// charge_power: '',
|
||||
// discharge_power: '',
|
||||
// chargeType: 1,
|
||||
// dischargeType:1
|
||||
// }
|
||||
|
||||
],
|
||||
is_open: false,
|
||||
chargePolicy: 1
|
||||
@@ -474,6 +468,7 @@ export default {
|
||||
console.log(this.formData)
|
||||
},
|
||||
handleAdd() {
|
||||
if(this.formStatus=='read') return
|
||||
this.periodModal = true
|
||||
this.periodForm = {}
|
||||
},
|
||||
@@ -481,7 +476,6 @@ export default {
|
||||
this.$refs.periodRef
|
||||
.validateFields()
|
||||
.then((res) => {
|
||||
console.log(this.formData.period1,'=============')
|
||||
const target = this.formData.period1.find((item) => item.month == this.periodForm.month)
|
||||
|
||||
if (target) {
|
||||
@@ -574,15 +568,18 @@ export default {
|
||||
img {
|
||||
width: 232px;
|
||||
height: 6px;
|
||||
margin-top: 10px;
|
||||
// margin-top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.ant-form {
|
||||
display: flex;
|
||||
flex-wrap:wrap ;
|
||||
|
||||
.charge {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 10px;
|
||||
// display: grid;
|
||||
// grid-template-columns: 1fr 1fr;
|
||||
// gap: 10px;
|
||||
.box {
|
||||
border: 1px solid $table-border;
|
||||
padding-left: 10px;
|
||||
@@ -590,6 +587,7 @@ export default {
|
||||
padding-bottom: 10px;
|
||||
border-radius: 10px;
|
||||
color: #fff;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -615,7 +613,7 @@ export default {
|
||||
.ant-select,
|
||||
.ant-input-affix-wrapper,
|
||||
.ant-input-number {
|
||||
width: 150px;
|
||||
width: 200px;
|
||||
}
|
||||
textarea {
|
||||
.ant-input {
|
||||
@@ -627,6 +625,7 @@ export default {
|
||||
}
|
||||
.col4 {
|
||||
width: 25%;
|
||||
min-width: 270px;
|
||||
}
|
||||
.col1 {
|
||||
width: 100%;
|
||||
@@ -645,32 +644,10 @@ export default {
|
||||
:deep(.ant-table-wrapper .ant-table-cell){
|
||||
background:none!important;
|
||||
}
|
||||
// /* 禁用行的 hover 过渡动画 */
|
||||
// .ant-table-tbody > tr.ant-table-row {
|
||||
// transition: none !important;
|
||||
// }
|
||||
:deep(.ant-table-cell){
|
||||
&::before{
|
||||
width: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
// /* 确保 hover 背景色完全透明 */
|
||||
// .ant-table-tbody > tr.ant-table-row:hover > td {
|
||||
// background-color: transparent !important;
|
||||
// }
|
||||
// .ant-table-wrapper .ant-table-tbody > tr.ant-table-row:hover > td {
|
||||
// background-color: transparent !important;
|
||||
// }
|
||||
// :deep(.ant-table-tbody > tr.ant-table-row:hover > td) {
|
||||
// background-color: transparent !important;
|
||||
// }
|
||||
// :deep(.ant-table-tbody) {
|
||||
// color: var(--theme-text-default) !important;
|
||||
|
||||
// > tr {
|
||||
// &:hover {
|
||||
// > .ant-table-cell {
|
||||
|
||||
// background: none !important;
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
// }
|
||||
</style>
|
||||
|
||||
@@ -3,21 +3,52 @@ import App from './App.vue'
|
||||
|
||||
import router from './router'
|
||||
import store from './store'
|
||||
import Antd from 'ant-design-vue'
|
||||
import 'ant-design-vue/dist/reset.css'
|
||||
|
||||
import '@/style/index.scss'
|
||||
// import '@/assets/iconfont/iconfont.css'
|
||||
import * as echarts from 'echarts'
|
||||
// import 'ant-design-vue/dist/reset.css'
|
||||
import 'ant-design-vue/dist/reset.css'
|
||||
import '@/assets/iconfont/iconfont.css'
|
||||
import * as echarts from 'echarts/core'
|
||||
import { BarChart, LineChart } from 'echarts/charts'
|
||||
import {
|
||||
TitleComponent,
|
||||
TooltipComponent,
|
||||
GridComponent,
|
||||
DatasetComponent,
|
||||
LegendComponent,
|
||||
TransformComponent,
|
||||
DataZoomComponent
|
||||
} from 'echarts/components'
|
||||
|
||||
// 标签自动布局、全局过渡动画等特性
|
||||
import { LabelLayout, UniversalTransition } from 'echarts/features'
|
||||
// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
|
||||
import { CanvasRenderer } from 'echarts/renderers'
|
||||
import { setWidth } from '@/utils/column'
|
||||
import { getBtns } from '@/utils/btnList'
|
||||
import { message, Modal } from 'ant-design-vue'
|
||||
|
||||
import VueTianditu from 'vue-tianditu'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import ComTable from '@/components/ComTable.vue'
|
||||
import OperateCom from '@/components/OperateCom'
|
||||
import TreeTable from '@/components/TreeTable.vue'
|
||||
|
||||
// 注册必须的组件
|
||||
echarts.use([
|
||||
TitleComponent,
|
||||
TooltipComponent,
|
||||
GridComponent,
|
||||
DatasetComponent,
|
||||
TransformComponent,
|
||||
DataZoomComponent,
|
||||
BarChart,
|
||||
LineChart,
|
||||
LabelLayout,
|
||||
UniversalTransition,
|
||||
CanvasRenderer,
|
||||
LegendComponent
|
||||
])
|
||||
|
||||
const app = createApp(App)
|
||||
|
||||
app.component('SearchBox', SearchBox)
|
||||
@@ -31,4 +62,6 @@ app.config.globalProperties.$getBtns = getBtns
|
||||
app.config.globalProperties.$message = message
|
||||
app.config.globalProperties.$Modal = Modal
|
||||
|
||||
app.use(store).use(router).use(Antd).use(VueTianditu).mount('#app')
|
||||
app.use(store).use(router)
|
||||
|
||||
app.use(VueTianditu).mount('#app')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import axios from 'axios'
|
||||
import openNotification from '../utils/notification'
|
||||
import { message } from 'ant-design-vue'
|
||||
// import { message } from 'ant-design-vue'
|
||||
|
||||
const service = axios.create({
|
||||
baseURL: '/api',
|
||||
|
||||
@@ -89,13 +89,13 @@ export const routes = [
|
||||
component: () => import(/* webpackChunkName: "system" */ '@/views/system/device.vue')
|
||||
},
|
||||
{
|
||||
name: 'alarmLog',
|
||||
path: 'log',
|
||||
name: 'alarmlog',
|
||||
path: 'alarmlog',
|
||||
title: '告警日志',
|
||||
component: () => import(/* webpackChunkName: "system" */ '@/views/system/alarmLog.vue')
|
||||
},
|
||||
{
|
||||
name: 'sylog',
|
||||
name: 'syslog',
|
||||
path: 'syslog',
|
||||
title: '系统日志',
|
||||
component: () => import(/* webpackChunkName: "system" */ '@/views/system/log.vue')
|
||||
|
||||
@@ -16,7 +16,10 @@ $table-bg: #072e4a;
|
||||
$page-border: #cad2dd;
|
||||
//级联器样式,下拉选择器样式输入框等。。。
|
||||
.ant-switch {
|
||||
background: #00fffb;
|
||||
background: #b1c4c4;
|
||||
}
|
||||
.ant-switch.ant-switch-checked{
|
||||
background: #00fffb
|
||||
}
|
||||
|
||||
.ant-switch .ant-switch-handle::before {
|
||||
@@ -52,9 +55,13 @@ $page-border: #cad2dd;
|
||||
.ant-picker-separator {
|
||||
color: #fff !important;
|
||||
}
|
||||
.ant-picker-input::placeholder {
|
||||
.ant-picker-input input::placeholder {
|
||||
color: #ffffff3b !important;
|
||||
}
|
||||
.ant-picker-suffix{
|
||||
color: #ffffff !important;
|
||||
|
||||
}
|
||||
}
|
||||
.ant-input-affix-wrapper {
|
||||
.ant-input {
|
||||
@@ -90,7 +97,8 @@ $page-border: #cad2dd;
|
||||
|
||||
&:disabled {
|
||||
border: none;
|
||||
color: #fff;
|
||||
// color: #fff;
|
||||
background: $btn-confirm;
|
||||
}
|
||||
}
|
||||
.btn-del {
|
||||
|
||||
@@ -16,123 +16,123 @@ export const policyTypes = [
|
||||
|
||||
export const deviceTypeList = [
|
||||
{
|
||||
value: 1,
|
||||
value: '1',
|
||||
label: '变压器',
|
||||
iconfont: 'icon-transformer'
|
||||
},
|
||||
{
|
||||
value: 2,
|
||||
value: '2',
|
||||
label: '配电柜',
|
||||
iconfont: 'icon-dianpingcai'
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
value: '3',
|
||||
label: '电表',
|
||||
iconfont: 'icon-dianbiao'
|
||||
},
|
||||
{
|
||||
value: 4,
|
||||
value: '4',
|
||||
label: '门禁',
|
||||
iconfont: 'icon-menjin'
|
||||
},
|
||||
{
|
||||
value: 5,
|
||||
value: '5',
|
||||
label: '空调',
|
||||
iconfont: 'icon-kongdiaogongcheng'
|
||||
},
|
||||
{
|
||||
value: 6,
|
||||
value: '6',
|
||||
label: '照明',
|
||||
iconfont: 'icon-zhaomingdeng'
|
||||
},
|
||||
{
|
||||
value: 7,
|
||||
value: '7',
|
||||
label: '消防',
|
||||
iconfont: 'icon-xiaofang'
|
||||
},
|
||||
{
|
||||
value: 8,
|
||||
value: '8',
|
||||
label: '光照监测设备',
|
||||
iconfont: 'icon-guangzhaojianceshebei'
|
||||
},
|
||||
{
|
||||
value: 9,
|
||||
value: '9',
|
||||
label: '风速监测设备',
|
||||
iconfont: 'icon-fengsujiance'
|
||||
},
|
||||
{
|
||||
value: 10,
|
||||
value: '10',
|
||||
label: '温湿度监测设备',
|
||||
iconfont: 'icon-wenshidujiance'
|
||||
},
|
||||
{
|
||||
value: 11,
|
||||
value: '11',
|
||||
label: '烟感监测设备',
|
||||
iconfont: 'icon-yanganjiance'
|
||||
},
|
||||
{
|
||||
value: 12,
|
||||
value: '12',
|
||||
label: '水浸传感器',
|
||||
iconfont: 'icon-shuijinchuanganqiicon'
|
||||
},
|
||||
{
|
||||
value: 13,
|
||||
value: '13',
|
||||
label: '视频监控',
|
||||
iconfont: 'icon-shipinjiankong'
|
||||
},
|
||||
{
|
||||
value: 100,
|
||||
value: '100',
|
||||
label: '储能预制舱',
|
||||
iconfont: 'icon-jizhuangxiang'
|
||||
},
|
||||
{
|
||||
value: 101,
|
||||
value: '101',
|
||||
label: 'EMS',
|
||||
iconfont: 'icon-quexianguanli'
|
||||
},
|
||||
{
|
||||
value: 102,
|
||||
value: '102',
|
||||
label: 'PCS',
|
||||
iconfont: 'icon-nengyuanguanli'
|
||||
},
|
||||
{
|
||||
value: 103,
|
||||
value: '103',
|
||||
label: 'PCU',
|
||||
iconfont: 'icon-bianyaqi'
|
||||
},
|
||||
{
|
||||
value: 104,
|
||||
value: '104',
|
||||
label: 'BMS',
|
||||
iconfont: 'icon-BMSchunengdianchi'
|
||||
iconfont: 'icon-chunengguankong'
|
||||
},
|
||||
{
|
||||
value: 105,
|
||||
value: '105',
|
||||
label: 'BCU',
|
||||
iconfont: 'icon-L-chunengdianchicu'
|
||||
},
|
||||
{
|
||||
value: 106,
|
||||
value: '106',
|
||||
label: '充电桩',
|
||||
iconfont: 'icon-charging-pile-line'
|
||||
},
|
||||
{
|
||||
value: 107,
|
||||
value: '107',
|
||||
label: '充电枪',
|
||||
iconfont: 'icon-chongdianqiang'
|
||||
},
|
||||
{
|
||||
value: 108,
|
||||
value: '108',
|
||||
label: '集中器',
|
||||
iconfont: 'icon-jizhongqi'
|
||||
},
|
||||
{
|
||||
value: 109,
|
||||
value: '109',
|
||||
label: '光伏板',
|
||||
iconfont: 'icon-guangfuban'
|
||||
},
|
||||
{
|
||||
value: 110,
|
||||
label: '风力发电机光感',
|
||||
value: '110',
|
||||
label: '风力发电机',
|
||||
iconfont: 'icon-zhuangjirongliang'
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { notification } from 'ant-design-vue'
|
||||
// import { notification } from 'ant-design-vue'
|
||||
import { h } from 'vue'
|
||||
import {
|
||||
CheckCircleFilled,
|
||||
@@ -41,7 +41,7 @@ const notiInfo = {
|
||||
}
|
||||
}
|
||||
const openNotification = ({ name, type, status, desc = '' }) => {
|
||||
notification[status]({
|
||||
this.$notification[status]({
|
||||
placement: 'bottomRight',
|
||||
message: notiInfo[status].iconMessage,
|
||||
description: desc || option.names[name] + option.types[type] + option.status[status],
|
||||
|
||||
@@ -82,6 +82,8 @@ export default {
|
||||
this.$message.success('登录成功')
|
||||
localStorage.setItem('token', res.token)
|
||||
localStorage.setItem('permission',JSON.stringify( res.permission) )
|
||||
localStorage.setItem('account',JSON.stringify( res.account) )
|
||||
|
||||
this.$router.push('/')
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<div class="header"></div>
|
||||
<div class="header">
|
||||
<span class="time">
|
||||
<span class="text" style="margin-right: 15px"> {{ dateVal }} </span>
|
||||
<span class="text" style="width: 80px;">{{ currentTime }}</span>
|
||||
<span class="text">{{ weekVal }}</span>
|
||||
</span>
|
||||
|
||||
<span class="title text"> 能源站监控与运行管理系统 </span>
|
||||
<span class="user">
|
||||
<span style="margin-right: 15px"> {{ user }}</span>
|
||||
<span class="iconfont icon-tuichu" @click="logout"></span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="page">
|
||||
<div class="subMenu" v-if="subMenu.length > 0">
|
||||
@@ -35,7 +47,9 @@
|
||||
|
||||
<script>
|
||||
// @ is an alias to /src
|
||||
|
||||
import moment from 'moment'
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { createVNode } from 'vue'
|
||||
export default {
|
||||
name: 'MainView',
|
||||
components: {},
|
||||
@@ -195,6 +209,44 @@ export default {
|
||||
.header {
|
||||
width: 100%;
|
||||
height: 70px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
.text {
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
rgb(255, 255, 255) 0%,
|
||||
rgb(227, 254, 255) 33.17%,
|
||||
rgb(35 190 195) 100%
|
||||
);
|
||||
|
||||
-webkit-background-clip: text; /* 兼容 WebKit 浏览器 */
|
||||
background-clip: text;
|
||||
color: transparent; /* 必须设置为透明 */
|
||||
display: inline-block; /* 确保背景裁剪生效 */
|
||||
line-height: 80px;
|
||||
font-size: 18px;
|
||||
}
|
||||
.title{
|
||||
font-size: 40px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
margin-top: 10px;
|
||||
|
||||
}
|
||||
.user{
|
||||
font-weight: 700;
|
||||
font-size: 18px;
|
||||
.icon-tuichu{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
}
|
||||
.time{
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
.subMenu {
|
||||
display: flex;
|
||||
@@ -221,7 +273,7 @@ export default {
|
||||
}
|
||||
.page {
|
||||
width: calc(100% - 20px);
|
||||
height: calc(100% - 70px - 65px - 40px);
|
||||
height: calc(100% - 70px - 60px - 40px);
|
||||
margin: 20px 10px;
|
||||
border-radius: 20px;
|
||||
}
|
||||
@@ -229,12 +281,13 @@ export default {
|
||||
height: 100%;
|
||||
}
|
||||
.subcontent {
|
||||
height: calc(100% - 46px);
|
||||
height: calc(100% - 56px);
|
||||
}
|
||||
.menu {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom: 15px;
|
||||
bottom: 10px;
|
||||
height: 50px;
|
||||
// height: 150px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
@@ -248,6 +301,7 @@ export default {
|
||||
color: #fff;
|
||||
font-size: 20px;
|
||||
font-weight: 700;
|
||||
border: 1px solid #ffffff00;
|
||||
cursor: pointer;
|
||||
margin: 0 35px;
|
||||
}
|
||||
|
||||
@@ -15,11 +15,13 @@
|
||||
<div class="search-item">
|
||||
<span>运行模式</span>
|
||||
<a-select v-model:value="workMode" style="width: 220px">
|
||||
<a-select-option :value="item.value" v-for="item in workModes">{{ item.label }}</a-select-option>
|
||||
<a-select-option :value="item.value" v-for="item in workModes">{{
|
||||
item.label
|
||||
}}</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<a-button type="primary">下发</a-button>
|
||||
<a-button type="primary" @click="handleDispatch">下发</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -33,13 +35,14 @@
|
||||
:class="systemType == system.systemType ? 'active' : ''"
|
||||
>
|
||||
<span class="name">{{ system.name }}</span>
|
||||
<span class="des">边缘网关:{{ system.power }} W</span>
|
||||
<span class="des">总有功功率(台区):{{ system.num }}</span>
|
||||
<span class="des" v-for="title in system.titles" :key="title.v"
|
||||
>{{ title.v }}:{{ system[title.key] }}{{ title.sufix }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<videos v-if="systemType == 4" :station-id="selectStationId"/>
|
||||
<device v-else :station-id="selectStationId" :system-type="systemType"/>
|
||||
<videos v-if="systemType == 4" :station-id="selectStationId" />
|
||||
<device v-else :station-id="selectStationId" :system-type="systemType" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -62,10 +65,14 @@ export default {
|
||||
systemType: 1,
|
||||
value: [],
|
||||
stations: [],
|
||||
selectStationId:'',
|
||||
selectStationId: '',
|
||||
systems: [
|
||||
{
|
||||
name: '储能系统',
|
||||
titles: [
|
||||
{ v: '边缘网关', key: 'num' },
|
||||
{ v: '总有功功率(台区)', key: 'power', sufix: 'kW' }
|
||||
],
|
||||
power: 60,
|
||||
num: 62,
|
||||
systemType: 1
|
||||
@@ -74,99 +81,125 @@ export default {
|
||||
name: '充电系统',
|
||||
power: 60,
|
||||
num: 62,
|
||||
systemType: 2
|
||||
systemType: 2,
|
||||
titles: [
|
||||
{ v: '总功率', key: 'power', sufix: 'kW' },
|
||||
{ v: '数量', key: 'num' }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '光伏系统',
|
||||
power: 60,
|
||||
num: 62,
|
||||
systemType: 3
|
||||
systemType: 3,
|
||||
titles: [
|
||||
{ v: '总功率', key: 'power', sufix: 'kW' },
|
||||
{ v: '数量', key: 'num' }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '安防系统',
|
||||
power: 60,
|
||||
num: 62,
|
||||
systemType: 4
|
||||
systemType: 4,
|
||||
titles: [
|
||||
{ v: '总功率', key: 'power', sufix: 'kW' },
|
||||
{ v: '数量', key: 'num' }
|
||||
]
|
||||
}
|
||||
// {
|
||||
// name: "储能系统4",
|
||||
// }
|
||||
],
|
||||
workMode:'',
|
||||
workModes:[
|
||||
workMode: '',
|
||||
workModes: [
|
||||
// 0:手动,1:峰谷套利,2:增网配容,3:应急供电,4:并网保电,5:自定时段
|
||||
{
|
||||
value:0,
|
||||
label:'手动'
|
||||
value: 0,
|
||||
label: '手动'
|
||||
},
|
||||
{
|
||||
value:1,
|
||||
label:'峰谷套利'
|
||||
value: 1,
|
||||
label: '峰谷套利'
|
||||
},
|
||||
{
|
||||
value:2,
|
||||
label:'增网配容'
|
||||
value: 2,
|
||||
label: '增网配容'
|
||||
},
|
||||
{
|
||||
value:3,
|
||||
label:'应急供电'
|
||||
value: 3,
|
||||
label: '应急供电'
|
||||
},
|
||||
{
|
||||
value:4,
|
||||
label:'并网保电'
|
||||
value: 4,
|
||||
label: '并网保电'
|
||||
},
|
||||
{
|
||||
value:5,
|
||||
label:'自定时段'
|
||||
value: 5,
|
||||
label: '自定时段'
|
||||
}
|
||||
|
||||
],
|
||||
deviceGroup:[]
|
||||
deviceGroup: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getStations()
|
||||
},
|
||||
methods: {
|
||||
//下发
|
||||
async handleDispatch() {
|
||||
console.log(this.workMode)
|
||||
try {
|
||||
const res = await postReq('/updateStation', {
|
||||
station_id: this.selectStationId,
|
||||
work_mode: this.workMode
|
||||
})
|
||||
if (res.errcode == 0) {
|
||||
this.$message.success('下发成功')
|
||||
}
|
||||
} catch (error) {
|
||||
this.$message.error('下发失败')
|
||||
}
|
||||
},
|
||||
//场站切换
|
||||
getStationChange(val){
|
||||
console.log(val);
|
||||
getStationChange(val) {
|
||||
console.log(val)
|
||||
this.getStationAttr()
|
||||
|
||||
},
|
||||
//查询场站列表
|
||||
async getStations() {
|
||||
try {
|
||||
const res = await getReq('/queryStationList', { page: 0, 'page_size': 10000 })
|
||||
const res = await getReq('/queryStationList', { page: 0, page_size: 10000 })
|
||||
|
||||
this.stations = res.data
|
||||
this.selectStationId=this.stations[0]['station_id']
|
||||
this.selectStationId = this.stations[0]['station_id']
|
||||
this.getStationAttr()
|
||||
} catch (error) {
|
||||
this.stations = []
|
||||
this.selectStationId=''
|
||||
this.selectStationId = ''
|
||||
this.$message.error(error.message)
|
||||
}
|
||||
},
|
||||
// 查询场站的参数
|
||||
async getStationAttr(){
|
||||
async getStationAttr() {
|
||||
try {
|
||||
const res = await getReq('/queryStationOverview', { station_id: this.selectStationId })
|
||||
|
||||
res.data.device_group.forEach((Element,index) => {
|
||||
this.systems[index].num=Element.count
|
||||
this.systems[index].power=Element.power
|
||||
});
|
||||
this.workMode=res.data.work_mode
|
||||
res.data.device_group.forEach((Element, index) => {
|
||||
this.systems[index].num = Element.count
|
||||
this.systems[index].power = Element.power
|
||||
})
|
||||
this.workMode = res.data.work_mode
|
||||
} catch (error) {
|
||||
this.deviceGroup = []
|
||||
this.workMode=''
|
||||
this.workMode = ''
|
||||
// this.$message.error(error.errmsg)
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
chooseStation(system) {
|
||||
console.log(system, 'system')
|
||||
|
||||
this.systemType = system.systemType
|
||||
}
|
||||
}
|
||||
@@ -176,7 +209,8 @@ export default {
|
||||
<style scoped lang="scss">
|
||||
@import url(@/style/color.scss);
|
||||
.monitor {
|
||||
width: 100%;
|
||||
// width: 100%;
|
||||
// height: calc(100% - 40px);
|
||||
height: 100%;
|
||||
padding: 20px;
|
||||
background: $bg1-color;
|
||||
@@ -207,24 +241,20 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
.stations {
|
||||
min-width: 155px;
|
||||
max-width: 235px;
|
||||
width: 13%;
|
||||
height: 100%;
|
||||
display: grid;
|
||||
border-radius: 12px;
|
||||
background: $bg2-color;
|
||||
padding: 15px 0;
|
||||
overflow-y: auto;
|
||||
padding-top: 15px;
|
||||
grid-template-rows: repeat(auto-fit, minmax(140px, 4fr));
|
||||
.station-item {
|
||||
width: calc(100% - 30px);
|
||||
flex: 1;
|
||||
margin: 0 15px 15px 15px;
|
||||
border-radius: 12px;
|
||||
min-width: 150px;
|
||||
|
||||
width: 180px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
color: #fff;
|
||||
padding: 10px 15px;
|
||||
padding: 10px 10px;
|
||||
cursor: pointer;
|
||||
|
||||
.name {
|
||||
@@ -236,6 +266,11 @@ export default {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
line-height: 40px;
|
||||
display: inline-block;
|
||||
max-width: 160px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
.active {
|
||||
@@ -243,7 +278,7 @@ export default {
|
||||
}
|
||||
}
|
||||
.container {
|
||||
width: 100%;
|
||||
width: calc(100% - 200px);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
<template>
|
||||
<div class="alarmLog">
|
||||
<searchBox
|
||||
:btn-option-list="btnOptionList"
|
||||
@operateForm="operateForm"
|
||||
></searchBox>
|
||||
<!-- <searchBox :btn-option-list="btnOptionList" @operateForm="operateForm"></searchBox> -->
|
||||
|
||||
<div class="content-table">
|
||||
<ComTable
|
||||
@@ -11,16 +8,17 @@
|
||||
:table-data="tableData"
|
||||
@handlePagesizeChange="handlePagesizeChange"
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
>
|
||||
<template #type="record">
|
||||
<span>{{ ['其它','系统日志','操作日志','设备日志'][record.type] }}</span>
|
||||
<span>{{ ['其它', '系统日志', '操作日志', '设备日志'][record.type] }}</span>
|
||||
</template>
|
||||
<template #status="record">
|
||||
<span><a-tag :color="record.status ? 'red' : 'green'">{{
|
||||
record.status ? '异常' : '正常'
|
||||
}}</a-tag></span>
|
||||
<span
|
||||
><a-tag :color="record.status==0 ? 'red' : 'green'">{{
|
||||
record.status==0 ? '异常' : '正常'
|
||||
}}</a-tag></span
|
||||
>
|
||||
</template>
|
||||
|
||||
<template #action="record">
|
||||
@@ -28,7 +26,7 @@
|
||||
</template>
|
||||
</ComTable>
|
||||
</div>
|
||||
<a-modal v-model:open="formModal" width="750px" style="top: 20px" :footer="null">
|
||||
<a-modal v-model:open="formModal" width="750px" style="top: 20px" :footer="null">
|
||||
<!-- action:edit add -->
|
||||
<EditCom
|
||||
:record="formState"
|
||||
@@ -46,11 +44,11 @@ import { getReq, postReq } from '@/request/api.js'
|
||||
import EditCom from '@/components/EditCom.vue'
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { createVNode } from 'vue'
|
||||
import { Modal } from 'ant-design-vue'
|
||||
|
||||
export default {
|
||||
name: '',
|
||||
components: {
|
||||
EditCom,
|
||||
EditCom
|
||||
},
|
||||
props: {},
|
||||
data() {
|
||||
@@ -63,7 +61,8 @@ export default {
|
||||
page: 1
|
||||
},
|
||||
btnOptionList: [],
|
||||
paramsDate: {}
|
||||
paramsDate: {},
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
@@ -79,7 +78,7 @@ export default {
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.operateList = this.$getBtns(['查看', '删除'])
|
||||
this.operateList = this.$getBtns(['查看'])
|
||||
// this.btnOptionList = this.$getBtns(['新增'])
|
||||
this.getList()
|
||||
},
|
||||
@@ -118,22 +117,21 @@ export default {
|
||||
},
|
||||
async operateForm(type, record = {}) {
|
||||
this.formStatus = type
|
||||
|
||||
if(type=='edit'||type=='read'){
|
||||
|
||||
if (type == 'edit' || type == 'read') {
|
||||
await this.getRuleFormInfo(record)
|
||||
|
||||
this.formModal = true
|
||||
this.formState = record
|
||||
}else if(type=='del'){
|
||||
this.handleDelete([record.device_id],this.getList)
|
||||
}else if(type=='back'){
|
||||
} else if (type == 'del') {
|
||||
this.handleDelete([record.device_id], this.getList)
|
||||
} else if (type == 'back') {
|
||||
this.formModal = false
|
||||
this.getList()
|
||||
}
|
||||
|
||||
},
|
||||
// 删除操作
|
||||
async handleDelete(id,callback) {
|
||||
async handleDelete(id, callback) {
|
||||
const that = this
|
||||
Modal.confirm({
|
||||
title: '你确认删除数据吗?',
|
||||
@@ -141,10 +139,10 @@ export default {
|
||||
|
||||
async onOk() {
|
||||
try {
|
||||
const res = await getReq('/deleteUser',{user_id:id})
|
||||
const res = await getReq('/deleteUser', { user_id: id })
|
||||
if (res.errcode === 0) {
|
||||
this.$message.success(res.errmsg)
|
||||
this.pageOption.page=1
|
||||
this.pageOption.page = 1
|
||||
callback()
|
||||
} else {
|
||||
throw res
|
||||
@@ -160,8 +158,6 @@ export default {
|
||||
})
|
||||
},
|
||||
async getRuleFormInfo(record) {
|
||||
|
||||
|
||||
const row = record || {}
|
||||
|
||||
for (let e of alarmlogOptions) {
|
||||
@@ -182,8 +178,6 @@ export default {
|
||||
// const attrs=JSON.parse(row.attrs||"{}")
|
||||
// e.ruleForm[i.key] = attrs[i.key]
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -199,10 +193,10 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
.alarmLog {
|
||||
height: 100%;
|
||||
padding: 20px;
|
||||
|
||||
.content-table {
|
||||
height: calc(100% - 70px);
|
||||
padding: 10px;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
<span>{{ getType(record.type) }}</span>
|
||||
</template>
|
||||
<template #isEnable="record">
|
||||
<span><a-tag :color="record.is_open ? 'green' : 'red'">{{
|
||||
record.is_open ? '启用' : '禁用'
|
||||
<span><a-tag :color="record.is_open==1 ? 'green' : 'red'">{{
|
||||
record.is_open==1 ? '启用' : '禁用'
|
||||
}}</a-tag></span>
|
||||
</template>
|
||||
|
||||
@@ -48,7 +48,7 @@ import OperateCom from '@/components/OperateCom'
|
||||
import EditCom from '@/components/EditCom.vue'
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { createVNode } from 'vue'
|
||||
import { Modal } from 'ant-design-vue'
|
||||
|
||||
import searchBox from '@/components/SearchBox.vue'
|
||||
import {deviceTypeList} from '@/utils/config'
|
||||
export default {
|
||||
@@ -170,7 +170,7 @@ export default {
|
||||
// 删除操作
|
||||
async handleDelete(id,callback) {
|
||||
const that = this
|
||||
Modal.confirm({
|
||||
this.$Modal.confirm({
|
||||
title: '你确认删除数据吗?',
|
||||
icon: createVNode(ExclamationCircleOutlined),
|
||||
|
||||
@@ -203,7 +203,7 @@ export default {
|
||||
if (i.key === 'id') {
|
||||
e.ruleForm.id = row.id
|
||||
} else if (i.key === 'is_open') {
|
||||
e.ruleForm.is_open = Boolean(row.is_open)
|
||||
e.ruleForm.is_open = Boolean(Number(row.is_open))
|
||||
} else {
|
||||
e.ruleForm[i.key] = row[i.key] || ''
|
||||
}
|
||||
@@ -232,10 +232,12 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
.device {
|
||||
height: 100%;
|
||||
padding: 0 10px;
|
||||
|
||||
.content-table {
|
||||
height: calc(100% - 70px);
|
||||
padding: 10px;
|
||||
width: 100%;
|
||||
height: calc(100% - 90px);
|
||||
padding: 0 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
<template>
|
||||
<div class="alarmlog">
|
||||
<searchBox
|
||||
:btn-option-list="btnOptionList"
|
||||
@operateForm="operateForm"
|
||||
></searchBox>
|
||||
<div class="syslog">
|
||||
<!-- <searchBox :btn-option-list="btnOptionList" @operateForm="operateForm"></searchBox> -->
|
||||
|
||||
<div class="content-table">
|
||||
<ComTable
|
||||
@@ -11,12 +8,14 @@
|
||||
:table-data="tableData"
|
||||
@handlePagesizeChange="handlePagesizeChange"
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
>
|
||||
<template #gender="record">
|
||||
<!-- 0:女; 1:男 -->
|
||||
<span>{{ ['女', '男'][record.gender] }}</span>
|
||||
<template #status="record">
|
||||
<span>
|
||||
<a-tag :color="record.status==0 ? 'red' : 'green'">{{
|
||||
record.status==0 ? '异常' : '正常'
|
||||
}}</a-tag>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<template #action="record">
|
||||
@@ -37,7 +36,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { columnList, userOptions } from '../../../public/config/columnList'
|
||||
import { columnList, syslogOptions } from '../../../public/config/columnList'
|
||||
import { getReq, postReq } from '@/request/api.js'
|
||||
|
||||
import EditCom from '@/components/EditCom.vue'
|
||||
@@ -60,13 +59,14 @@ export default {
|
||||
page: 1
|
||||
},
|
||||
btnOptionList: [],
|
||||
paramsDate: {}
|
||||
paramsDate: {},
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
created() {
|
||||
let info = []
|
||||
let col = columnList.find((i) => i.page == 'alarmlog').columns
|
||||
let col = columnList.find((i) => i.page == 'syslog').columns
|
||||
if (col.length) {
|
||||
col.forEach((item) => {
|
||||
info.push(this.$setWidth(item))
|
||||
@@ -76,8 +76,8 @@ export default {
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.operateList = this.$getBtns(['查看', '修改', '删除'])
|
||||
this.btnOptionList = this.$getBtns(['新增'])
|
||||
this.operateList = this.$getBtns(['查看'])
|
||||
// this.btnOptionList = this.$getBtns(['新增'])
|
||||
this.getList()
|
||||
},
|
||||
|
||||
@@ -94,7 +94,7 @@ export default {
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await getReq('/queryUserList', params)
|
||||
const res = await getReq('/querySystemLogList', params)
|
||||
if (res.errcode === 0) {
|
||||
this.$refs.comTable.loading = false
|
||||
|
||||
@@ -113,41 +113,25 @@ export default {
|
||||
//统一处理报错提示
|
||||
}
|
||||
},
|
||||
operateForm(type, record = {}) {
|
||||
console.log(record, record.id, 'rrrrrrrrrr')
|
||||
async operateForm(type, record = {}) {
|
||||
this.formStatus = type
|
||||
switch (type) {
|
||||
case 'add':
|
||||
this.formModal = true
|
||||
this.formState = {}
|
||||
this.getRuleFormInfo()
|
||||
|
||||
break
|
||||
case 'edit':
|
||||
case 'read':
|
||||
if (type == 'edit' || type == 'read') {
|
||||
await this.getRuleFormInfo(record)
|
||||
|
||||
this.formModal = true
|
||||
this.formState = record
|
||||
this.getRuleFormInfo(record)
|
||||
break
|
||||
|
||||
case 'del':
|
||||
this.handleDelete([record.user_id], this.getList)
|
||||
|
||||
break
|
||||
|
||||
case 'back':
|
||||
} else if (type == 'del') {
|
||||
this.handleDelete([record.device_id], this.getList)
|
||||
} else if (type == 'back') {
|
||||
this.formModal = false
|
||||
this.getList()
|
||||
break
|
||||
|
||||
default:
|
||||
break
|
||||
}
|
||||
},
|
||||
// 删除操作
|
||||
async handleDelete(id, callback) {
|
||||
const that = this
|
||||
Modal.confirm({
|
||||
this.$Modal.confirm({
|
||||
title: '你确认删除数据吗?',
|
||||
icon: createVNode(ExclamationCircleOutlined),
|
||||
|
||||
@@ -172,27 +156,13 @@ export default {
|
||||
})
|
||||
},
|
||||
async getRuleFormInfo(record) {
|
||||
function getInfo(data, url) {
|
||||
return new Promise((reslove, reject) => {
|
||||
getReq(data, url).then((res) => {
|
||||
reslove(res.data)
|
||||
})
|
||||
})
|
||||
}
|
||||
const row = record || {}
|
||||
|
||||
let row = {}
|
||||
if (record && record.user_id) {
|
||||
// row = await getInfo({ id: record.id },'/queryUserList')
|
||||
this.record = record
|
||||
row = record
|
||||
// this.type='edit'
|
||||
for (let e of syslogOptions) {
|
||||
for (let i of e.list) {
|
||||
e.ruleForm[i.key] = row[i.key] || ''
|
||||
}
|
||||
}
|
||||
userOptions.forEach((e, index) => {
|
||||
e.list.forEach((i) => {
|
||||
e.ruleForm[i.key] = row ? row[i.key] : ''
|
||||
e.ruleForm.id = row.id
|
||||
})
|
||||
})
|
||||
},
|
||||
handlePagesizeChange(pageOption) {
|
||||
this.pageOption.pageSize = pageOption.pageSize
|
||||
@@ -204,12 +174,12 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.user {
|
||||
.syslog {
|
||||
height: 100%;
|
||||
padding: 20px;
|
||||
|
||||
.content-table {
|
||||
height: calc(100% - 70px);
|
||||
padding: 10px;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -43,12 +43,12 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { columnList, permissionOptions } from '../../../public/config/columnList'
|
||||
import { columnList } from '../../../public/config/columnList'
|
||||
import { getReq, postReq } from '@/request/api.js'
|
||||
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { createVNode } from 'vue'
|
||||
import { Modal } from 'ant-design-vue'
|
||||
|
||||
export default {
|
||||
name: '',
|
||||
components: {
|
||||
@@ -198,13 +198,7 @@ export default {
|
||||
row = record
|
||||
// this.type='edit'
|
||||
}
|
||||
permissionOptions.forEach((e, index) => {
|
||||
e.list.forEach((i) => {
|
||||
|
||||
e.ruleForm[i.key] = row ? row[i.key] : ''
|
||||
e.ruleForm.id = row.id
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
handlePagesizeChange(pageOption) {
|
||||
this.pageOption.pageSize = pageOption.pageSize
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<div>{{ getPolicyType(record.type) }}</div>
|
||||
</template>
|
||||
<template #isOpen="record">
|
||||
<a-tag :color="record.is_open == 1 ? '#2db7f5' : '#f50'">{{
|
||||
<a-tag :color="record.is_open == 1 ? 'green' : 'red'">{{
|
||||
record.is_open == 1 ? '启用' : '禁用'
|
||||
}}</a-tag>
|
||||
</template>
|
||||
@@ -27,8 +27,8 @@
|
||||
<div>
|
||||
<a-modal
|
||||
v-model:open="formModal"
|
||||
width="70%"
|
||||
style="top: 20px"
|
||||
width="900px"
|
||||
style="top: 20px;"
|
||||
:footer="null"
|
||||
:get-container="() => $refs.policy"
|
||||
>
|
||||
@@ -47,6 +47,7 @@ export default {
|
||||
name: '',
|
||||
components: { policyForm },
|
||||
props: {},
|
||||
|
||||
data() {
|
||||
return {
|
||||
formModal: false,
|
||||
@@ -57,21 +58,18 @@ export default {
|
||||
title: '策略ID',
|
||||
dataIndex: 'policy_id',
|
||||
key: 'policyId',
|
||||
width: 120,
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: '策略名称',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
width: 120,
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: '策略类型',
|
||||
dataIndex: 'type', //策略类型:1:削峰套利;2:需求响应;3:自发自用
|
||||
key: 'type',
|
||||
width: 120,
|
||||
ellipsis: true,
|
||||
scopedSlots: { customRender: 'type' }
|
||||
},
|
||||
@@ -79,7 +77,6 @@ export default {
|
||||
title: '策略描述',
|
||||
dataIndex: 'describe',
|
||||
key: 'describe',
|
||||
width: 120,
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
@@ -93,7 +90,6 @@ export default {
|
||||
title: '是否启用',
|
||||
dataIndex: 'is_open',
|
||||
key: 'isOpen',
|
||||
width: 120,
|
||||
ellipsis: true,
|
||||
scopedSlots: { customRender: 'isOpen' }
|
||||
},
|
||||
@@ -102,8 +98,8 @@ export default {
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
key: 'action',
|
||||
width: 150,
|
||||
ellipsis: true,
|
||||
fixed:'right',
|
||||
scopedSlots: { customRender: 'action' }
|
||||
}
|
||||
],
|
||||
@@ -128,16 +124,18 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
async getTableList() {
|
||||
this.$refs.comTable.loading = true
|
||||
try {
|
||||
this.$refs.comTable.loading = false
|
||||
const res = await getReq('/queryPolicyList', {
|
||||
page: this.pageOption.page,
|
||||
page_size: this.pageOption.pageSize
|
||||
})
|
||||
console.log(res)
|
||||
this.tableData = res.data
|
||||
this.pageOption.count = res.count
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
this.$refs.comTable.loading = false
|
||||
}
|
||||
},
|
||||
getPolicyType(type) {
|
||||
@@ -232,12 +230,13 @@ export default {
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.policy {
|
||||
width: 100%;
|
||||
// width: 100%;
|
||||
height: 100%;
|
||||
padding: 0 15px;
|
||||
padding: 0 10px;
|
||||
.content-table {
|
||||
width: 100%;
|
||||
height: calc(100% - 90px);
|
||||
padding: 0 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -51,7 +51,7 @@ import OperateCom from '@/components/OperateCom'
|
||||
import EditCom from '@/components/EditCom.vue'
|
||||
import { ConsoleSqlOutlined, ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { createVNode } from 'vue'
|
||||
import { Modal } from 'ant-design-vue'
|
||||
|
||||
import searchBox from '@/components/SearchBox.vue'
|
||||
export default {
|
||||
name: '',
|
||||
|
||||
@@ -44,7 +44,7 @@ import { getReq, postReq } from '@/request/api.js'
|
||||
import EditCom from '@/components/EditCom.vue'
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { createVNode } from 'vue'
|
||||
import { Modal } from 'ant-design-vue'
|
||||
|
||||
import searchBox from '@/components/SearchBox.vue'
|
||||
export default {
|
||||
name: '',
|
||||
|
||||
@@ -51,7 +51,7 @@ import OperateCom from '@/components/OperateCom'
|
||||
import EditCom from '@/components/EditCom.vue'
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { createVNode } from 'vue'
|
||||
import { Modal } from 'ant-design-vue'
|
||||
|
||||
import searchBox from '@/components/SearchBox.vue'
|
||||
export default {
|
||||
name: '',
|
||||
|
||||
@@ -41,20 +41,14 @@
|
||||
<script>
|
||||
import { columnList, userOptions } from '../../../public/config/columnList'
|
||||
import { getReq, postReq } from '@/request/api.js'
|
||||
import ComTable from '@/components/ComTable'
|
||||
import OperateCom from '@/components/OperateCom'
|
||||
import EditCom from '@/components/EditCom.vue'
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { createVNode } from 'vue'
|
||||
import { Modal } from 'ant-design-vue'
|
||||
import searchBox from '@/components/SearchBox.vue'
|
||||
import { createVNode } from 'vue'
|
||||
export default {
|
||||
name: '',
|
||||
components: {
|
||||
searchBox,
|
||||
EditCom,
|
||||
ComTable,
|
||||
OperateCom
|
||||
},
|
||||
props: {},
|
||||
data() {
|
||||
@@ -157,7 +151,7 @@ export default {
|
||||
// 删除操作
|
||||
async handleDelete(id,callback) {
|
||||
const that = this
|
||||
Modal.confirm({
|
||||
this.$Modal.confirm({
|
||||
title: '你确认删除数据吗?',
|
||||
icon: createVNode(ExclamationCircleOutlined),
|
||||
|
||||
|
||||
Reference in New Issue
Block a user