引入海康威视插件

This commit is contained in:
zhoumengru
2025-09-11 16:14:55 +08:00
parent 671dd9fec7
commit e995c25fd2
57 changed files with 11735 additions and 2304 deletions

View File

@@ -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

View File

@@ -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.

View File

@@ -17,7 +17,7 @@
selectedRowKeys: data.selectedRowKeys,
onChange: onSelectChange
}
: false
: {}
"
:expanded-row-keys="data.newTableOpt.expand ? data.expandedKeys : null"
size="middle"

View File

@@ -420,7 +420,7 @@ const data = reactive({
],
treeCheckValue: null,
SHOW_PARENT: TreeSelect.SHOW_PARENT,
// SHOW_PARENT: TreeSelect.SHOW_PARENT,
loading: false,
imageUrl: ''

View File

@@ -49,15 +49,16 @@
<a-modal
v-model:open="modalOpen"
@ok="handleOk"
width="90%"
width="60%"
class="modal-device"
:get-container="() => $refs.device"
>
<div v-if="modalComponent == 1">
<div>
<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>
<img src="@/assets/images/titleLine.png" alt="" /> -->
</div>
<div class="echarts">
<predictEcharts
@@ -67,11 +68,8 @@
/>
</div>
</div>
<div>
<div class="title">
<div>功率</div>
<img src="@/assets/images/titleLine.png" alt="" />
</div>
<div class="item">
<div class="title">功率</div>
<div class="echarts">
<predictEcharts
:chart-options="chartOptions[1]"
@@ -246,6 +244,8 @@ export default {
},
mounted() {
this.getDeviceList()
},
methods: {
handlePagesizeChange(pageOption) {
@@ -286,8 +286,16 @@ 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)
}
@@ -327,13 +335,12 @@ export default {
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)
}
this.modalOpen = true
},
handleOk() {
this.modalOpen = false
@@ -347,17 +354,19 @@ export default {
width: 100%;
height: 100%;
margin-left: 20px;
display: grid;
display: flex;
flex-wrap: wrap;
grid-gap: 20px;
overflow-y: auto;
grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
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;
max-height: 230px;
height: 260px;
flex: 1;
.item-header {
display: flex;
@@ -460,6 +469,25 @@ export default {
.environment {
width: 200px;
}
.modal-device {
color: #fff;
.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;
}
.echarts {
height: 300px;
}
}
}
}
:deep(.ant-modal-body) {
:deep(.ant-table-wrapper .ant-table-row-expand-icon) {
@@ -471,7 +499,19 @@ export default {
background-color: #f0f8ff !important;
}
}
// .a-modal :deep(.ant-table-thead > tr > th) {
// 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>

View 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>

View File

@@ -1,24 +1,14 @@
<template>
<div class="videos">
<div class="video-item" v-for="item in videoList" :key="item">
<div class="title">
<span>{{ item.name }}</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">
@@ -35,8 +25,7 @@
:columns="columns[activeTab]"
:table-data="tableDatas[activeTab]"
ref="comTable"
:table-option="{page:false}"
:table-option="{ page: false }"
>
</ComTable>
</div>
@@ -45,9 +34,10 @@
<script>
import { postReq, getReq } from '@/request/api'
import haikang from './haikang.vue'
export default {
name: '',
components: {},
components: { haikang },
props: {
stationId: {
type: String,
@@ -154,11 +144,26 @@ export default {
select: false,
page: false
},
videoList: []
//
videoList: [],
g_iWndIndex: 0,
szDeviceIdentify: '',
deviceport: '',
channels: [],
ip: '',
port: '',
username: '',
password: '',
iRtspPort: '',
videosPageWidth: ''
}
},
mounted() {
console.log(this.systemType)
this.$nextTick(() => {
const div = document.getElementById('videosPage')
const width = div.offsetWidth
this.videosPageWidth = width
})
this.getEnvironment()
this.getDeviceList()
@@ -168,9 +173,8 @@ export default {
try {
const res = await getReq('/queryEnvironment', { station_id: this.stationId })
this.tableDatas = res.data
} catch (error) {
this.tableDatas={}
this.tableDatas = {}
console.log(error)
}
},
@@ -183,6 +187,7 @@ export default {
})
this.videoList = res.data.concat(res.data)
this.videoList = this.videoList.concat(this.videoList)
} catch (error) {
this.videoList = []
@@ -194,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;
overflow-y: auto;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
.video-item {
align-content: flex-start;
justify-content: flex-start;
.content {
border-radius: 15px;
background: $bg2-color;
padding: 15px;
max-height: 290px;
max-width: 400px;
.title {
display: flex;
align-items: center;
font-size: 24px;
font-weight: 700;
color: #fff;
}
.video {
margin-top: 10px;
}
height: 280px;
}
.con-w1 {
width: calc((100% - 40px) / 3);
}
.con-w2 {
width: calc((100% - 20px) / 2);
}
}
.environment {

View File

@@ -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: {

View File

@@ -1,13 +1,12 @@
<!-- eslint-disable camelcase -->
<template>
<div class="policyForm">
<div class="policyForm" ref="policyForm">
<div class="title">
<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,5 +644,10 @@ export default {
:deep(.ant-table-wrapper .ant-table-cell){
background:none!important;
}
:deep(.ant-table-cell){
&::before{
width: 0 !important;
}
}
</style>

View File

@@ -5,7 +5,9 @@ import router from './router'
import store from './store'
import '@/style/index.scss'
// 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 {
@@ -17,26 +19,14 @@ import {
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,
Button,
Table,
Tag,
Select,
DatePicker,
Input,
Pagination,
ConfigProvider,
notification,
TreeSelect
} from 'ant-design-vue'
import { message, Modal } from 'ant-design-vue'
import VueTianditu from 'vue-tianditu'
import SearchBox from '@/components/SearchBox.vue'
import ComTable from '@/components/ComTable.vue'
@@ -73,16 +63,5 @@ app.config.globalProperties.$message = message
app.config.globalProperties.$Modal = Modal
app.use(store).use(router)
app
.use(Button)
.use(Modal)
.use(Table)
.use(Tag)
.use(Select)
.use(DatePicker)
.use(Input)
.use(Pagination)
.use(ConfigProvider)
.use(notification)
.use(TreeSelect)
app.use(VueTianditu).mount('#app')

View File

@@ -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 {

View File

@@ -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'
}
]

View File

@@ -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('/')
}

View File

@@ -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: {},
@@ -104,14 +118,19 @@ export default {
]
}
],
subMenu: []
subMenu: [],
currentTime: '',
timer: null,
dateVal: moment().locale('zh-cn').format('ll') + ' ',
weekVal: moment().locale('zh-cn').format('dddd'),
user:localStorage.getItem('account').replace(/^"|"$/g, '')
}
},
watch: {
$route: {
handler(n) {
console.log(n,"nnnnnnnnnnnnnn")
this.subMenu =n.matched[1].children || []
console.log(n, 'nnnnnnnnnnnnnn')
this.subMenu = n.matched[1].children || []
},
immediate: true
}
@@ -119,8 +138,35 @@ export default {
mounted() {
this.initRoute()
this.getDateTime()
this.timer = setInterval(() => {
this.getDateTime()
}, 1000)
},
unmounted() {
clearInterval(this.timer)
},
methods: {
logout(){
const that=this
this.$Modal.confirm({
title: '你确认退出系统吗?',
icon: createVNode(ExclamationCircleOutlined),
async onOk() {
localStorage.clear()
that.$router.push('/login')
},
onCancel() {
},
class: 'test'
})
},
//getDateTime
getDateTime() {
this.currentTime = moment().locale('zh-cn').format('LTS')
},
// 过滤函数:根据权限数据过滤路由并附加权限信息
filterRoutes(routes, permissions) {
return routes.filter((route) => {
@@ -130,7 +176,7 @@ export default {
// 如果有权限项,附加到路由对象
if (routePermissions.length > 0) {
route.permissions = routePermissions;
route.permissions = routePermissions
hasViewPermission = true
}
@@ -155,7 +201,7 @@ export default {
// this.menuList,
// JSON.parse(localStorage.getItem('permission'))
// )
console.log( this.$route.matched, 'filteredRoutes')
console.log(this.$route.matched, 'filteredRoutes')
this.subMenu = this.$route.matched[1].children || []
// this.menuList= JSON.parse(localStorage.getItem('permission'))
// this.subMenu =filteredRoutes[0].children||[]
@@ -172,7 +218,7 @@ export default {
subMenuClick(subMenu) {
console.log(subMenu, subMenu.path)
this.subCurrentKey = subMenu.path
this.$router.push('/system'+subMenu.path)
this.$router.push('/system' + subMenu.path)
}
}
}
@@ -188,6 +234,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;
@@ -222,7 +306,7 @@ export default {
height: 100%;
}
.subcontent {
height: calc(100% - 46px);
height: calc(100% - 56px);
}
.menu {
position: absolute;
@@ -242,6 +326,7 @@ export default {
color: #fff;
font-size: 20px;
font-weight: 700;
border: 1px solid #ffffff00;
cursor: pointer;
margin: 0 35px;
}

View File

@@ -210,7 +210,8 @@ export default {
@import url(@/style/color.scss);
.monitor {
// width: 100%;
height: calc(100% - 40px);
// height: calc(100% - 40px);
height: 100%;
padding: 20px;
background: $bg1-color;
border-radius: 15px;
@@ -243,14 +244,13 @@ export default {
display: grid;
border-radius: 12px;
background: $bg2-color;
padding-top: 10px;
padding-top: 15px;
grid-template-rows: repeat(auto-fit, minmax(140px, 4fr));
.station-item {
flex: 1;
width: 100px;
margin: 0 10px 10px 10px;
margin: 0 15px 15px 15px;
border-radius: 12px;
min-width: 160px;
width: 180px;
display: flex;
flex-direction: column;
color: #fff;

View File

@@ -1,6 +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
@@ -15,8 +15,8 @@
</template>
<template #status="record">
<span
><a-tag :color="record.status ? 'red' : 'green'">{{
record.status ? '异常' : '正常'
><a-tag :color="record.status==0 ? 'red' : 'green'">{{
record.status==0 ? '异常' : '正常'
}}</a-tag></span
>
</template>
@@ -193,10 +193,10 @@ export default {
<style lang="scss" scoped>
.alarmLog {
height: 100%;
padding: 20px;
.content-table {
height: calc(100% - 90px);
padding: 10px;
height: 100%;
}
}
</style>

View File

@@ -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>
@@ -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 {
width: 100%;
height: calc(100% - 90px);
padding: 10px;
padding: 0 10px;
}
}
</style>

View File

@@ -1,6 +1,6 @@
<template>
<div class="syslog">
<searchBox :btn-option-list="btnOptionList" @operateForm="operateForm"></searchBox>
<!-- <searchBox :btn-option-list="btnOptionList" @operateForm="operateForm"></searchBox> -->
<div class="content-table">
<ComTable
@@ -12,8 +12,8 @@
>
<template #status="record">
<span>
<a-tag :color="record.status ? 'red' : 'green'">{{
record.status ? '异常' : '正常'
<a-tag :color="record.status==0 ? 'red' : 'green'">{{
record.status==0 ? '异常' : '正常'
}}</a-tag>
</span>
</template>
@@ -176,10 +176,10 @@ export default {
<style lang="scss" scoped>
.syslog {
height: 100%;
padding: 20px;
.content-table {
height: calc(100% - 90px);
padding: 10px;
height: 100%;
}
}
</style>

View File

@@ -15,7 +15,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>
@@ -28,8 +28,8 @@
<div>
<a-modal
v-model:open="formModal"
width="70%"
style="top: 20px"
width="900px"
style="top: 20px;"
:footer="null"
:get-container="() => $refs.policy"
>
@@ -48,6 +48,7 @@ export default {
name: '',
components: { policyForm },
props: {},
data() {
return {
formModal: false,
@@ -58,21 +59,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' }
},
@@ -80,7 +78,6 @@ export default {
title: '策略描述',
dataIndex: 'describe',
key: 'describe',
width: 120,
ellipsis: true
},
{
@@ -94,7 +91,6 @@ export default {
title: '是否启用',
dataIndex: 'is_open',
key: 'isOpen',
width: 120,
ellipsis: true,
scopedSlots: { customRender: 'isOpen' }
},
@@ -103,8 +99,8 @@ export default {
title: '操作',
dataIndex: 'action',
key: 'action',
width: 150,
ellipsis: true,
fixed:'right',
scopedSlots: { customRender: 'action' }
}
],
@@ -130,16 +126,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) {
@@ -236,10 +234,11 @@ export default {
.policy {
// width: 100%;
height: 100%;
padding: 0 15px;
padding: 0 10px;
.content-table {
width: 100%;
height: calc(100% - 90px);
padding: 0 10px;
}
}
</style>

View File

@@ -44,6 +44,7 @@ import { columnList, userOptions } from '../../../public/config/columnList'
import { getReq, postReq } from '@/request/api.js'
import EditCom from '@/components/EditCom.vue'
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
import { Modal } from 'ant-design-vue'
import { createVNode } from 'vue'
export default {
name: '',