| | |
| | | <template> |
| | | <div class="manageCenter">管理中心</div> |
| | | <div class="manageCenter"> |
| | | <!-- 页头 --> |
| | | <IndexHeader :opacity="false"></IndexHeader> |
| | | |
| | | <div class="centerTitle"> |
| | | <div class="heart"> |
| | | <div class="welcome">{{ userName }}, 欢迎您回到贝思科管理中心。</div> |
| | | <div class="time">{{ timeMsg }}</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 版心 --> |
| | | <div class="heart"> |
| | | <div class="products"> |
| | | <div class="title">全部产品</div> |
| | | <div class="productList"> |
| | | <div |
| | | class="productItem" |
| | | v-for="(item, index) in productList" |
| | | :key="index" |
| | | @click="jump(item)" |
| | | > |
| | | <img :src="item.icon" alt="" /> |
| | | <div class="name">{{ item.name }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="equipmentInfo"> |
| | | <div class="equipmentCard"> |
| | | <div class="label">设备总量</div> |
| | | <div class="number"> |
| | | 34 |
| | | <div class="upIcon iconfont"> 2</div> |
| | | </div> |
| | | |
| | | <img src="/images/manageCenter/total2.png" alt="" /> |
| | | </div> |
| | | |
| | | <div class="equipmentCard"> |
| | | <div class="label">摄像机总数</div> |
| | | <div class="number"> |
| | | 23 |
| | | <div class="upIcon iconfont"> 2</div> |
| | | </div> |
| | | |
| | | <img src="/images/manageCenter/total3.png" alt="" /> |
| | | </div> |
| | | |
| | | <div class="equipmentCard"> |
| | | <div class="label">算法总数</div> |
| | | <div class="number"> |
| | | 34 |
| | | <div class="downIcon iconfont"> 2</div> |
| | | </div> |
| | | |
| | | <img src="/images/manageCenter/total4.png" alt="" /> |
| | | </div> |
| | | |
| | | <div class="equipmentCard"> |
| | | <div class="label">任务总数</div> |
| | | <div class="number"> |
| | | 34 |
| | | <div class="downIcon iconfont"> 2</div> |
| | | </div> |
| | | |
| | | <img src="/images/manageCenter/total1.png" alt="" /> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="equipmentStatus"> |
| | | <div class="left"> |
| | | <div class="title">设备运行状态监测</div> |
| | | <div class="control"> |
| | | <div |
| | | class="label" |
| | | @click="select('day', 'selectBar')" |
| | | :class="{ active: selectBar === 'day' }" |
| | | > |
| | | 今日 |
| | | </div> |
| | | <div |
| | | class="label" |
| | | @click="select('week', 'selectBar')" |
| | | :class="{ active: selectBar === 'week' }" |
| | | > |
| | | 本周 |
| | | </div> |
| | | <div |
| | | class="label" |
| | | @click="select('month', 'selectBar')" |
| | | :class="{ active: selectBar === 'month' }" |
| | | > |
| | | 本月 |
| | | </div> |
| | | </div> |
| | | <div id="bar"></div> |
| | | </div> |
| | | |
| | | <div class="right"> |
| | | <div class="title">设备离线时长排行</div> |
| | | <div class="timeList scroll"> |
| | | <div |
| | | class="timeItem" |
| | | v-for="(item, index) in timeList" |
| | | :key="index" |
| | | > |
| | | <div class="index"> |
| | | {{ index / 10 >= 1 ? index : `0${index}` }}. |
| | | </div> |
| | | <div class="name"> |
| | | {{ item.name }} |
| | | </div> |
| | | <div class="time">{{ item.time }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="performence"> |
| | | <div class="title">设备运行状态监测</div> |
| | | <div class="control"> |
| | | <div |
| | | class="label" |
| | | @click="select('day', 'selectForm')" |
| | | :class="{ active: selectForm === 'day' }" |
| | | > |
| | | 今日 |
| | | </div> |
| | | <div |
| | | class="label" |
| | | @click="select('week', 'selectForm')" |
| | | :class="{ active: selectForm === 'week' }" |
| | | > |
| | | 本周 |
| | | </div> |
| | | <div |
| | | class="label" |
| | | @click="select('month', 'selectForm')" |
| | | :class="{ active: selectForm === 'month' }" |
| | | > |
| | | 本月 |
| | | </div> |
| | | </div> |
| | | <div class="table-area"> |
| | | <el-table |
| | | id="table" |
| | | ref="table" |
| | | tooltip-effect="dark" |
| | | :data="dataList" |
| | | :fit="true" |
| | | :stripe="true" |
| | | class="gutter" |
| | | > |
| | | <el-table-column label="序号" class-name="index"> |
| | | <template slot-scope="scope">{{ |
| | | scope.$index + 1 + (page - 1) * size |
| | | }}</template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="name" |
| | | label="设备名称" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="id" |
| | | label="设备ID" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="mem" |
| | | label="内存" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="gpu" |
| | | label="算力" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="cpu" |
| | | label="cpu" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="dist" |
| | | label="硬盘" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | @current-change="refrash" |
| | | @size-change="handleSizeChange" |
| | | :current-page="page" |
| | | :page-size="size" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :page-sizes="[5, 10, 15, 20, 25]" |
| | | :total="total" |
| | | background |
| | | ></el-pagination> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="map"> |
| | | <div class="title">算法预警数据占比</div> |
| | | <div id="mapChart"></div> |
| | | </div> |
| | | |
| | | <div class="hashRate"> |
| | | <div class="left"> |
| | | <div class="title">算法预警数据占比:</div> |
| | | <div class="info"> |
| | | <div class="item"> |
| | | <div class="label">今日平均算力:</div> |
| | | <div class="data">45</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">设备总量:</div> |
| | | <div class="data">92</div> |
| | | </div> |
| | | </div> |
| | | <div id="scatterChart"></div> |
| | | </div> |
| | | <div class="right"> |
| | | <div class="title">算法预警数据占比</div> |
| | | <div id="pieChart"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 页尾 --> |
| | | <Footer :isBlack="true"></Footer> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default {}; |
| | | import IndexHeader from "@/components/IndexHeader"; |
| | | import Footer from "@/components/Footer"; |
| | | import * as echarts from "echarts"; |
| | | import "echarts/map/js/china.js"; |
| | | |
| | | export default { |
| | | components: { |
| | | IndexHeader, |
| | | Footer, |
| | | }, |
| | | created() { |
| | | this.getInfo(); |
| | | }, |
| | | mounted() { |
| | | this.initBar(); |
| | | this.initMap(); |
| | | this.initScatter(); |
| | | this.initPie(); |
| | | }, |
| | | data() { |
| | | return { |
| | | userName: "", |
| | | timeMsg: "", |
| | | selectBar: "day", |
| | | selectForm: "day", |
| | | productList: [ |
| | | { |
| | | name: "设备管理", |
| | | icon: "/images/manageCenter/manage.png", |
| | | openPath: "/equipmentManagement", |
| | | path: "/equipmentList", |
| | | permission: "deviceMng", |
| | | }, |
| | | |
| | | { |
| | | name: "算力管理", |
| | | icon: "/images/manageCenter/manage2.png", |
| | | openPath: "/hashrate", |
| | | path: "/hashrateDetail", |
| | | permission: "analysisMng", |
| | | }, |
| | | |
| | | { |
| | | name: "统计查询", |
| | | icon: "/images/manageCenter/search.png", |
| | | openPath: "/searchOpen", |
| | | path: "/search", |
| | | permission: "statisticMng", |
| | | }, |
| | | |
| | | { |
| | | name: "GB28181", |
| | | icon: "/images/manageCenter/search.png", |
| | | openPath: "/GB28181Open", |
| | | path: "/GB28181Open", |
| | | permission: "statisticMng", |
| | | }, |
| | | ], |
| | | timeList: [ |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | | ], |
| | | barOption: { |
| | | legend: { |
| | | x: "right", |
| | | y: "top", |
| | | itemHeight: 12, |
| | | itemWidth: 12, |
| | | icon: "circle", |
| | | }, |
| | | tooltip: {}, |
| | | dataset: { |
| | | source: [ |
| | | ["status", "在线", "离线"], |
| | | ["00:00", 750, 130], |
| | | ["02:00", 650, 230], |
| | | ["04:00", 750, 130], |
| | | ["06:00", 550, 330], |
| | | ["08:00", 750, 130], |
| | | ["10:00", 700, 180], |
| | | ["12:00", 850, 30], |
| | | ["14:00", 750, 130], |
| | | ["16:00", 850, 30], |
| | | ["18:00", 980, 0], |
| | | ["20:00", 750, 130], |
| | | ["22:00", 750, 130], |
| | | ], |
| | | }, |
| | | xAxis: { |
| | | type: "category", |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: "#666", |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | axisLine: { |
| | | //y轴 |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: "#666", |
| | | }, |
| | | splitLine: { |
| | | //网格线 |
| | | lineStyle: { |
| | | color: "rgb(230, 230, 230)", |
| | | type: "dashed", //设置网格线类型 dotted:虚线 solid:实线 |
| | | }, |
| | | show: true, //隐藏或显示 |
| | | }, |
| | | }, |
| | | // Declare several bar series, each will be mapped |
| | | // to a column of dataset.source by default. |
| | | series: [ |
| | | { |
| | | type: "bar", |
| | | color: { |
| | | type: "linear", |
| | | x: 0.02, |
| | | y: 0.02, |
| | | x2: 1, |
| | | y2: 1, |
| | | colorStops: [ |
| | | { |
| | | offset: 0, |
| | | color: "#0066FF", // 0% 处的颜色 |
| | | radius: ["50%", "80%"], |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: "rgba(0, 102, 255, 0.25)", // 100% 处的颜色 |
| | | }, |
| | | ], |
| | | global: false, // 缺省为 false |
| | | }, |
| | | itemStyle: { |
| | | //柱形图圆角,鼠标移上去效果,如果只是一个数字则说明四个参数全部设置为那么多 |
| | | normal: { |
| | | //柱形图圆角,初始化效果 |
| | | barBorderRadius: [15, 15, 0, 0], |
| | | }, |
| | | }, |
| | | }, |
| | | { |
| | | type: "bar", |
| | | color: { |
| | | type: "linear", |
| | | x: 0.02, |
| | | y: 0.02, |
| | | x2: 1, |
| | | y2: 1, |
| | | colorStops: [ |
| | | { |
| | | offset: 0, |
| | | color: "#FF4B33", // 0% 处的颜色 |
| | | radius: ["50%", "80%"], |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: "rgba(255,75,51,0.25)", // 100% 处的颜色 |
| | | }, |
| | | ], |
| | | global: false, // 缺省为 false |
| | | }, |
| | | itemStyle: { |
| | | //柱形图圆角,鼠标移上去效果,如果只是一个数字则说明四个参数全部设置为那么多 |
| | | normal: { |
| | | //柱形图圆角,初始化效果 |
| | | barBorderRadius: [15, 15, 0, 0], |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | mapOption: { |
| | | visualMap: { |
| | | left: "right", |
| | | min: 0, |
| | | max: 100, |
| | | inRange: { |
| | | color: ["#FCFDFF", "#0065FF"], |
| | | }, |
| | | itemWidth: 56, |
| | | itemHeight: 200, |
| | | text: ["100", "0"], |
| | | calculable: false, |
| | | }, |
| | | geo: { |
| | | //中国地图设置 |
| | | map: "china", |
| | | scaleLimit: { |
| | | min: 1, |
| | | max: 2, |
| | | }, |
| | | zoom: 1, |
| | | top: 120, |
| | | label: { |
| | | normal: { |
| | | show: false, |
| | | }, |
| | | emphasis: { |
| | | show: false, |
| | | }, |
| | | }, |
| | | }, |
| | | tooltip: { |
| | | //显示悬浮窗口 |
| | | trigger: "item", //使用这个函数返回悬浮内容 |
| | | backgroundColor: "#FFFFFF", |
| | | textStyle: { |
| | | color: "#0064FF", |
| | | fontSize: "14", |
| | | }, |
| | | formatter: function (params) { |
| | | const msg = params.data.name + ":" + params.data.value; |
| | | return msg; |
| | | }, |
| | | }, |
| | | |
| | | series: [ |
| | | { |
| | | type: "map", |
| | | geoIndex: 0, |
| | | data: [ |
| | | { |
| | | name: "南海诸岛", |
| | | value: 0, |
| | | eventTotal: 100, |
| | | specialImportant: 10, |
| | | import: 10, |
| | | compare: 10, |
| | | common: 40, |
| | | specail: 20, |
| | | }, |
| | | { |
| | | name: "北京", |
| | | value: 99, |
| | | }, |
| | | { |
| | | name: "天津", |
| | | value: 26, |
| | | }, |
| | | { |
| | | name: "上海", |
| | | value: 44, |
| | | }, |
| | | { |
| | | name: "重庆", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "河北", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "河南", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "云南", |
| | | value: 55, |
| | | }, |
| | | { |
| | | name: "辽宁", |
| | | value: 19, |
| | | }, |
| | | { |
| | | name: "黑龙江", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "湖南", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "安徽", |
| | | value: 60, |
| | | }, |
| | | { |
| | | name: "山东", |
| | | value: 39, |
| | | }, |
| | | { |
| | | name: "新疆", |
| | | value: 4, |
| | | }, |
| | | { |
| | | name: "江苏", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "浙江", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "江西", |
| | | value: 36, |
| | | }, |
| | | { |
| | | name: "湖北", |
| | | value: 52, |
| | | }, |
| | | { |
| | | name: "广西", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "甘肃", |
| | | value: 7, |
| | | }, |
| | | { |
| | | name: "山西", |
| | | value: 5, |
| | | }, |
| | | { |
| | | name: "内蒙古", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "陕西", |
| | | value: 22, |
| | | }, |
| | | { |
| | | name: "吉林", |
| | | value: 4, |
| | | }, |
| | | { |
| | | name: "福建", |
| | | value: 18, |
| | | }, |
| | | { |
| | | name: "贵州", |
| | | value: 5, |
| | | }, |
| | | { |
| | | name: "广东", |
| | | value: 98, |
| | | }, |
| | | { |
| | | name: "青海", |
| | | value: 1, |
| | | }, |
| | | { |
| | | name: "西藏", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "四川", |
| | | value: 44, |
| | | }, |
| | | { |
| | | name: "宁夏", |
| | | value: 4, |
| | | }, |
| | | { |
| | | name: "海南", |
| | | value: 22, |
| | | }, |
| | | { |
| | | name: "台湾", |
| | | value: 3, |
| | | }, |
| | | { |
| | | name: "香港", |
| | | value: 5, |
| | | }, |
| | | { |
| | | name: "澳门", |
| | | value: 555, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | }, |
| | | scatterOption: { |
| | | xAxis: { |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | axisLine: { |
| | | //y轴 |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | //网格线 |
| | | lineStyle: { |
| | | color: "rgb(230, 230, 230)", |
| | | type: "dashed", //设置网格线类型 dotted:虚线 solid:实线 |
| | | }, |
| | | show: true, //隐藏或显示 |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | axisLine: { |
| | | //y轴 |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | //网格线 |
| | | lineStyle: { |
| | | color: "rgb(230, 230, 230)", |
| | | type: "dashed", //设置网格线类型 dotted:虚线 solid:实线 |
| | | }, |
| | | show: true, //隐藏或显示 |
| | | }, |
| | | }, |
| | | |
| | | series: [ |
| | | { |
| | | symbolSize: 20, |
| | | data: [ |
| | | [10.0, 8.04], |
| | | [8.07, 6.95], |
| | | [13.0, 7.58], |
| | | [9.05, 8.81], |
| | | [11.0, 8.33], |
| | | [14.0, 7.66], |
| | | [13.4, 6.81], |
| | | [10.0, 6.33], |
| | | [14.0, 8.96], |
| | | [12.5, 6.82], |
| | | [9.15, 7.2], |
| | | [11.5, 7.2], |
| | | [3.03, 4.23], |
| | | [12.2, 7.83], |
| | | [2.02, 4.47], |
| | | [1.05, 3.33], |
| | | [4.05, 4.96], |
| | | [6.03, 7.24], |
| | | [12.0, 6.26], |
| | | [12.0, 8.84], |
| | | [7.08, 5.82], |
| | | [5.02, 5.68], |
| | | ], |
| | | color: "rgba(0, 101, 255, 0.5)", |
| | | type: "scatter", |
| | | }, |
| | | ], |
| | | }, |
| | | pieOption: { |
| | | color: [ |
| | | "rgb(54, 60, 231)", |
| | | "rgb(54, 178, 74)", |
| | | "rgb(255, 178, 36)", |
| | | "rgb(0, 190, 231)", |
| | | "rgb(255, 124, 31)", |
| | | "rgb(165, 96, 255)", |
| | | ], |
| | | series: [ |
| | | { |
| | | name: "Nightingale Chart", |
| | | type: "pie", |
| | | radius: [35, 120], |
| | | center: ["50%", "50%"], |
| | | roseType: "area", |
| | | itemStyle: { |
| | | borderRadius: 8, |
| | | }, |
| | | data: [ |
| | | { value: 22.45, name: "离岗" }, |
| | | { value: 20.2, name: "人脸识别" }, |
| | | { value: 17.96, name: "车辆识别" }, |
| | | { value: 15.71, name: "睡岗" }, |
| | | { value: 12.86, name: "安全帽检测" }, |
| | | { value: 10.82, name: "个体静止" }, |
| | | ], |
| | | }, |
| | | ], |
| | | }, |
| | | dataList: [ |
| | | { |
| | | name: "2.154", |
| | | id: "DSVAD010120190703", |
| | | mem: "78%", |
| | | gpu: "60%", |
| | | cpu: "23%", |
| | | dist: "10%", |
| | | }, |
| | | { |
| | | name: "2.154", |
| | | id: "DSVAD010120190703", |
| | | mem: "78%", |
| | | gpu: "60%", |
| | | cpu: "23%", |
| | | dist: "10%", |
| | | }, |
| | | { |
| | | name: "2.154", |
| | | id: "DSVAD010120190703", |
| | | mem: "78%", |
| | | gpu: "60%", |
| | | cpu: "23%", |
| | | dist: "10%", |
| | | }, |
| | | { |
| | | name: "2.154", |
| | | id: "DSVAD010120190703", |
| | | mem: "78%", |
| | | gpu: "60%", |
| | | cpu: "23%", |
| | | dist: "10%", |
| | | }, |
| | | { |
| | | name: "2.154", |
| | | id: "DSVAD010120190703", |
| | | mem: "78%", |
| | | gpu: "60%", |
| | | cpu: "23%", |
| | | dist: "10%", |
| | | }, |
| | | { |
| | | name: "2.154", |
| | | id: "DSVAD010120190703", |
| | | mem: "78%", |
| | | gpu: "60%", |
| | | cpu: "23%", |
| | | dist: "10%", |
| | | }, |
| | | { |
| | | name: "2.154", |
| | | id: "DSVAD010120190703", |
| | | mem: "78%", |
| | | gpu: "60%", |
| | | cpu: "23%", |
| | | dist: "10%", |
| | | }, |
| | | { |
| | | name: "2.154", |
| | | id: "DSVAD010120190703", |
| | | mem: "78%", |
| | | gpu: "60%", |
| | | cpu: "23%", |
| | | dist: "10%", |
| | | }, |
| | | ], |
| | | page: 1, |
| | | size: 5, |
| | | total: 30, |
| | | }; |
| | | }, |
| | | methods: { |
| | | getInfo() { |
| | | if (sessionStorage.getItem("userInfo")) { |
| | | this.userName = JSON.parse(sessionStorage.getItem("userInfo")).username; |
| | | } |
| | | |
| | | let date = new Date(); |
| | | let year = date.getFullYear(); //获取完整的年份(4位) |
| | | let month = date.getMonth() + 1; //获取当前月份(0-11,0代表1月) |
| | | let day = date.getDate(); //获取当前月份(0-11,0代表1月) |
| | | let weekDay = ""; |
| | | switch (date.getDay()) { |
| | | case 0: |
| | | weekDay = "星期日"; |
| | | break; |
| | | |
| | | case 1: |
| | | weekDay = "星期一"; |
| | | break; |
| | | |
| | | case 2: |
| | | weekDay = "星期二"; |
| | | break; |
| | | |
| | | case 3: |
| | | weekDay = "星期三"; |
| | | break; |
| | | |
| | | case 4: |
| | | weekDay = "星期四"; |
| | | break; |
| | | |
| | | case 5: |
| | | weekDay = "星期五"; |
| | | break; |
| | | |
| | | case 6: |
| | | weekDay = "星期六"; |
| | | break; |
| | | } |
| | | this.timeMsg = |
| | | "今日, " + year + "年" + month + "月" + day + "日" + weekDay; |
| | | }, |
| | | select(value, type) { |
| | | this[type] = value; |
| | | }, |
| | | initBar() { |
| | | let bartDom = document.getElementById("bar"); |
| | | let myChart = echarts.init(bartDom); |
| | | myChart.setOption(this.barOption); |
| | | }, |
| | | initMap() { |
| | | let mapDom = document.getElementById("mapChart"); |
| | | let myChart = echarts.init(mapDom); |
| | | myChart.setOption(this.mapOption); |
| | | }, |
| | | initScatter() { |
| | | let scatterDom = document.getElementById("scatterChart"); |
| | | let myChart = echarts.init(scatterDom); |
| | | myChart.setOption(this.scatterOption); |
| | | }, |
| | | initPie() { |
| | | let pieDom = document.getElementById("pieChart"); |
| | | let myChart = echarts.init(pieDom); |
| | | myChart.setOption(this.pieOption); |
| | | }, |
| | | jump(route) { |
| | | const userInfo = JSON.parse(sessionStorage.getItem("userInfo")); |
| | | |
| | | const val = userInfo.permissions.find((item) => { |
| | | return item == route.permission; |
| | | }); |
| | | if (val) { |
| | | if (route.path === "/search") { |
| | | const { href } = this.$router.resolve({ |
| | | path: "/search", |
| | | }); |
| | | window.open(href, "_blank"); |
| | | return; |
| | | } |
| | | this.$router.push(route.path); |
| | | } else if (!userInfo.parentId) { |
| | | this.$router.push(route.openPath); |
| | | } |
| | | }, |
| | | refrash() {}, |
| | | handleSizeChange() {}, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style> |
| | | <style lang="scss" scoped> |
| | | .manageCenter { |
| | | box-sizing: border-box; |
| | | min-width: 1346px; |
| | | background-color: rgb(243, 245, 248); |
| | | |
| | | .title { |
| | | margin-bottom: 20px; |
| | | box-sizing: border-box; |
| | | padding-left: 10px; |
| | | border-left: 4px solid #0064ff; |
| | | font-size: 16px; |
| | | font-weight: 700; |
| | | } |
| | | |
| | | .control { |
| | | position: absolute; |
| | | display: flex; |
| | | top: 20px; |
| | | right: 20px; |
| | | |
| | | .label { |
| | | margin-left: 10px; |
| | | width: 44px; |
| | | height: 24px; |
| | | line-height: 24px; |
| | | font-size: 14px; |
| | | text-align: center; |
| | | color: #666; |
| | | cursor: pointer; |
| | | |
| | | &.active { |
| | | background: #0064ff; |
| | | border-radius: 12px; |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .centerTitle { |
| | | box-sizing: border-box; |
| | | padding-top: 47px; |
| | | height: 150px; |
| | | background-image: url("/images/manageCenter/Rectangle 2180.png"); |
| | | |
| | | .welcome { |
| | | font-size: 14px; |
| | | font-weight: 700; |
| | | } |
| | | |
| | | .time { |
| | | margin-top: 5px; |
| | | font-size: 12px; |
| | | color: #999; |
| | | } |
| | | } |
| | | |
| | | .products { |
| | | box-sizing: border-box; |
| | | margin: 24px 0; |
| | | padding: 20px; |
| | | max-height: 282px; |
| | | background-color: #fff; |
| | | |
| | | .productList { |
| | | display: flex; |
| | | |
| | | .productItem { |
| | | margin-right: 20px; |
| | | width: 190px; |
| | | height: 90px; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | border-radius: 5px; |
| | | border: 1px solid #e9ebee; |
| | | cursor: pointer; |
| | | |
| | | img { |
| | | width: 60px; |
| | | height: 60px; |
| | | } |
| | | |
| | | .name { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | &:hover { |
| | | box-shadow: 0px 2px 16px 0px rgba(0, 43, 106, 0.25); |
| | | } |
| | | |
| | | &:nth-child(6n) { |
| | | margin-right: 0px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .equipmentInfo { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .equipmentCard { |
| | | position: relative; |
| | | overflow: hidden; |
| | | box-sizing: border-box; |
| | | padding: 20px 0 20px 40px; |
| | | width: 302px; |
| | | height: 100px; |
| | | border-radius: 5px; |
| | | font-size: 14px; |
| | | color: #fff; |
| | | |
| | | .number { |
| | | display: flex; |
| | | font-size: 32px; |
| | | font-weight: 700; |
| | | align-items: end; |
| | | } |
| | | |
| | | .iconfont { |
| | | padding: 0 5px 0 2px; |
| | | margin-left: 10px; |
| | | font-size: 12px; |
| | | font-weight: normal; |
| | | margin-bottom: 6px; |
| | | background-color: #fff; |
| | | border-radius: 7px; |
| | | |
| | | &.upIcon { |
| | | color: #ff6a00; |
| | | } |
| | | |
| | | &.downIcon { |
| | | color: #3fb54a; |
| | | } |
| | | } |
| | | |
| | | img { |
| | | position: absolute; |
| | | width: 96px; |
| | | height: 96px; |
| | | top: 10px; |
| | | right: -10px; |
| | | opacity: 0.2; |
| | | } |
| | | |
| | | &:nth-child(1) { |
| | | background: linear-gradient( |
| | | 108deg, |
| | | #0065ff -8%, |
| | | #0065ff -8%, |
| | | #99cfff 100%, |
| | | #99cfff 100% |
| | | ); |
| | | } |
| | | |
| | | &:nth-child(2) { |
| | | background: linear-gradient( |
| | | 108deg, |
| | | #ff6a00 0%, |
| | | #ff6a00 0%, |
| | | #ffb599 100%, |
| | | #ffb599 100% |
| | | ); |
| | | } |
| | | |
| | | &:nth-child(3) { |
| | | background: linear-gradient( |
| | | 108deg, |
| | | #6d44e5 1%, |
| | | #6d44e5 1%, |
| | | #b299ff 100%, |
| | | #b299ff 100% |
| | | ); |
| | | } |
| | | |
| | | &:nth-child(4) { |
| | | background: linear-gradient( |
| | | 108deg, |
| | | #40b63a 0%, |
| | | #40b63a 0%, |
| | | #89e5bc 100%, |
| | | #89e5bc 100% |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | |
| | | .equipmentStatus { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin: 24px 0; |
| | | height: 466px; |
| | | |
| | | .left { |
| | | box-sizing: border-box; |
| | | position: relative; |
| | | padding: 20px; |
| | | background-color: #fff; |
| | | width: 845px; |
| | | height: 466px; |
| | | |
| | | #bar { |
| | | height: 440px; |
| | | } |
| | | } |
| | | |
| | | .right { |
| | | box-sizing: border-box; |
| | | padding: 20px; |
| | | width: 411px; |
| | | height: 466px; |
| | | background: #ffffff; |
| | | |
| | | .timeList { |
| | | height: 392px; |
| | | overflow-y: auto; |
| | | |
| | | .timeItem { |
| | | margin-bottom: 24px; |
| | | display: flex; |
| | | align-items: center; |
| | | height: 32px; |
| | | border-radius: 16px; |
| | | background: rgb(249, 251, 253); |
| | | font-size: 14px; |
| | | |
| | | &:nth-child(1), |
| | | &:nth-child(2), |
| | | &:nth-child(3) { |
| | | background: #eff4f9; |
| | | } |
| | | |
| | | .index { |
| | | margin: 0 35px 0 20px; |
| | | font-size: 16px; |
| | | color: #0064ff; |
| | | } |
| | | |
| | | .time { |
| | | margin-left: 50px; |
| | | color: #999; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .performence { |
| | | box-sizing: border-box; |
| | | position: relative; |
| | | padding: 20px; |
| | | background-color: #fff; |
| | | width: 1280px; |
| | | height: 570px; |
| | | |
| | | .el-pagination ::v-deep { |
| | | margin-left: 650px; |
| | | margin-top: 30px; |
| | | text-align: center; |
| | | height: 24px; |
| | | .el-pagination__sizes { |
| | | margin-right: 0; |
| | | } |
| | | |
| | | button { |
| | | margin: 0; |
| | | background-color: #fff; |
| | | border: 1px solid #c0c5cc; |
| | | border-radius: 2px; |
| | | } |
| | | |
| | | .number { |
| | | background-color: #fff; |
| | | |
| | | &:not(.disabled):hover { |
| | | color: #0065ff; |
| | | } |
| | | |
| | | &:not(.disabled).active { |
| | | background-color: #0065ff; |
| | | color: #fff; |
| | | } |
| | | } |
| | | |
| | | .el-input .el-input__inner { |
| | | padding-left: 0; |
| | | |
| | | &:hover, |
| | | &:focus { |
| | | border-color: #0065ff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .map { |
| | | overflow: hidden; |
| | | box-sizing: border-box; |
| | | padding: 20px; |
| | | margin: 24px 0; |
| | | background-color: #fff; |
| | | height: 598px; |
| | | |
| | | #mapChart { |
| | | margin-top: -100px; |
| | | width: 1100px; |
| | | height: 600px; |
| | | } |
| | | } |
| | | |
| | | .hashRate { |
| | | margin-bottom: 20px; |
| | | display: flex; |
| | | height: 540px; |
| | | |
| | | .left { |
| | | position: relative; |
| | | box-sizing: border-box; |
| | | padding: 20px; |
| | | margin-right: 24px; |
| | | width: 737px; |
| | | background-color: #fff; |
| | | |
| | | #scatterChart { |
| | | height: 500px; |
| | | } |
| | | } |
| | | |
| | | .right { |
| | | box-sizing: border-box; |
| | | padding: 20px; |
| | | width: 519px; |
| | | height: 540px; |
| | | background: #ffffff; |
| | | |
| | | #pieChart { |
| | | margin-top: -40px; |
| | | height: 500px; |
| | | } |
| | | } |
| | | |
| | | .info { |
| | | position: absolute; |
| | | top: 20px; |
| | | right: 20px; |
| | | |
| | | .item { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | align-items: center; |
| | | |
| | | .label { |
| | | margin-right: 8px; |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .data { |
| | | font-size: 18px; |
| | | font-weight: 700; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |