|
|
@@ -4,50 +4,163 @@
|
|
|
<div class="titleBg">
|
|
|
<div class="titleFont">电子站台统计</div>
|
|
|
</div>
|
|
|
- <div class="divContent" style="display: flex;flex-direction: row;justify-content: space-around;align-items: center;padding-right: 1vw;">
|
|
|
- <div style="display: flex;flex-direction: row;margin-top: 1vh;padding-left: 1vw;">
|
|
|
- <div ref="stationchart" style="width:10vw;height: 20vh;"></div>
|
|
|
- <div style="display: flex;flex-direction: column;">
|
|
|
- <div class="countDiv" style="display: flex;flex-direction: column;justify-content: space-between;position:relative;">
|
|
|
- <div><img style="width: 2vw;height: 1vh;;position:absolute;top:0" src="@/assets/images/homeImages/up.png" /></div>
|
|
|
- <div style="display: flex;flex-direction: row;justify-content: space-between;padding-left: 0.5vw;padding-right: 1vw;">
|
|
|
+ <div
|
|
|
+ class="divContent"
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: space-around;
|
|
|
+ align-items: center;
|
|
|
+ padding-right: 1vw;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ style="display: flex; flex-direction: row; margin-top: 1vh; padding-left: 1vw"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ ref="stationchart"
|
|
|
+ style="width: 10vw; height: 20vh; min-width: 160px"
|
|
|
+ ></div>
|
|
|
+ <div style="display: flex; flex-direction: column">
|
|
|
+ <div
|
|
|
+ class="countDiv"
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: space-between;
|
|
|
+ position: relative;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <img
|
|
|
+ style="width: 2vw; height: 1vh; position: absolute; top: 0"
|
|
|
+ src="@/assets/images/homeImages/up.png"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding-left: 0.5vw;
|
|
|
+ padding-right: 1vw;
|
|
|
+ "
|
|
|
+ >
|
|
|
<div class="typeClass">总设备数</div>
|
|
|
- <div class="countClass" style="color: #FEF822;">
|
|
|
- {{totaldevice }}
|
|
|
+ <div class="countClass" style="color: #fef822">
|
|
|
+ {{ totaldevice }}
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div style="margin-left: 6vw;">
|
|
|
- <img style="width: 2vw;height: 1vh;position:absolute; bottom:0;right:0" src="@/assets/images/homeImages/bottom.png" />
|
|
|
+ <div style="margin-left: 6vw">
|
|
|
+ <img
|
|
|
+ style="width: 2vw; height: 1vh; position: absolute; bottom: 0; right: 0"
|
|
|
+ src="@/assets/images/homeImages/bottom.png"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="countDiv" style="display: flex;flex-direction: column;justify-content: space-between;margin-top: 0.5vh;position:relative;">
|
|
|
- <div><img style="width: 2vw;height: 1vh;position:absolute;top:0" src="@/assets/images/homeImages/up.png" /></div>
|
|
|
- <div style="display: flex;flex-direction: row;justify-content: space-between;padding-left: 0.5vw;padding-right: 1vw;">
|
|
|
+ <div
|
|
|
+ class="countDiv"
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-top: 0.5vh;
|
|
|
+ position: relative;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <img
|
|
|
+ style="width: 2vw; height: 1vh; position: absolute; top: 0"
|
|
|
+ src="@/assets/images/homeImages/up.png"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding-left: 0.5vw;
|
|
|
+ padding-right: 1vw;
|
|
|
+ "
|
|
|
+ >
|
|
|
<div class="typeClass">在线设备</div>
|
|
|
- <div class="countClass" style="color: #22FE31;">{{ onlinedevice }}</div>
|
|
|
+ <div class="countClass" style="color: #22fe31">{{ onlinedevice }}</div>
|
|
|
</div>
|
|
|
- <div style="margin-left: 6vw;">
|
|
|
- <img style="width: 2vw;height: 1vh;position:absolute; bottom:0;right:0" src="@/assets/images/homeImages/bottom.png" />
|
|
|
+ <div style="margin-left: 6vw">
|
|
|
+ <img
|
|
|
+ style="width: 2vw; height: 1vh; position: absolute; bottom: 0; right: 0"
|
|
|
+ src="@/assets/images/homeImages/bottom.png"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="countDiv" style="display: flex;flex-direction: column;justify-content: space-between;margin-top: 0.5vh;position:relative;">
|
|
|
- <div><img style="width: 2vw;height: 1vh;position:absolute;top:0" src="@/assets/images/homeImages/up.png" /></div>
|
|
|
- <div style="display: flex;flex-direction: row;justify-content: space-between;padding-left: 0.5vw;padding-right: 1vw;">
|
|
|
+ <div
|
|
|
+ class="countDiv"
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-top: 0.5vh;
|
|
|
+ position: relative;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <img
|
|
|
+ style="width: 2vw; height: 1vh; position: absolute; top: 0"
|
|
|
+ src="@/assets/images/homeImages/up.png"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding-left: 0.5vw;
|
|
|
+ padding-right: 1vw;
|
|
|
+ "
|
|
|
+ >
|
|
|
<div class="typeClass">箱体总数</div>
|
|
|
- <div class="countClass" style="color: #FEF822;">{{ totalcabinet }}</div>
|
|
|
+ <div class="countClass" style="color: #fef822">{{ totalcabinet }}</div>
|
|
|
</div>
|
|
|
- <div style="margin-left: 6vw;">
|
|
|
- <img style="width: 2vw;height: 1vh;position:absolute; bottom:0;right:0" src="@/assets/images/homeImages/bottom.png" />
|
|
|
+ <div style="margin-left: 6vw">
|
|
|
+ <img
|
|
|
+ style="width: 2vw; height: 1vh; position: absolute; bottom: 0; right: 0"
|
|
|
+ src="@/assets/images/homeImages/bottom.png"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="countDiv" style="display: flex;flex-direction: column;justify-content: space-between;margin-top: 0.5vh;position:relative;">
|
|
|
- <div><img style="width: 2vw;height: 1vh;position:absolute;top:0" src="@/assets/images/homeImages/up.png" /></div>
|
|
|
- <div style="display: flex;flex-direction: row;justify-content: space-between;padding-left: 0.5vw;padding-right: 1vw;">
|
|
|
+ <div
|
|
|
+ class="countDiv"
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-top: 0.5vh;
|
|
|
+ position: relative;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <img
|
|
|
+ style="width: 2vw; height: 1vh; position: absolute; top: 0"
|
|
|
+ src="@/assets/images/homeImages/up.png"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding-left: 0.5vw;
|
|
|
+ padding-right: 1vw;
|
|
|
+ "
|
|
|
+ >
|
|
|
<div class="typeClass">空闲箱体</div>
|
|
|
- <div class="countClass" style="color: #22FE31;">{{ kxcabinet }}</div>
|
|
|
+ <div class="countClass" style="color: #22fe31">{{ kxcabinet }}</div>
|
|
|
</div>
|
|
|
- <div style="margin-left: 6vw;">
|
|
|
- <img style="width: 2vw;height: 1vh; position:absolute; bottom:0;right:0" src="@/assets/images/homeImages/bottom.png" />
|
|
|
+ <div style="margin-left: 6vw">
|
|
|
+ <img
|
|
|
+ style="width: 2vw; height: 1vh; position: absolute; bottom: 0; right: 0"
|
|
|
+ src="@/assets/images/homeImages/bottom.png"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -88,14 +201,13 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup name="Index" lang="ts">
|
|
|
-import * as echarts from 'echarts';
|
|
|
-import { getDicts } from '@/api/system/dict/data'
|
|
|
-import { getInfo, getInfoWait, getBoxInfo, getLock, openall } from "@/api/data"
|
|
|
-import { cabinetboxstatic,devicestatic } from '@/api/gpsData';
|
|
|
+import * as echarts from "echarts";
|
|
|
+import { getDicts } from "@/api/system/dict/data";
|
|
|
+import { getInfo, getInfoWait, getBoxInfo, getLock, openall } from "@/api/data";
|
|
|
+import { cabinetboxstatic, devicestatic } from "@/api/gpsData";
|
|
|
|
|
|
const stationchart = ref();
|
|
|
|
|
|
-
|
|
|
const totalcabinet = ref(0);
|
|
|
const kxcabinet = ref(0);
|
|
|
|
|
|
@@ -111,7 +223,7 @@ const getBoxs = () => {
|
|
|
kxcabinet.value += res[key].unuse ?? 0;
|
|
|
}
|
|
|
});
|
|
|
-}
|
|
|
+};
|
|
|
|
|
|
const getdevices = () => {
|
|
|
devicestatic().then((res) => {
|
|
|
@@ -119,239 +231,242 @@ const getdevices = () => {
|
|
|
onlinedevice.value = 0;
|
|
|
for (let key in res) {
|
|
|
if (res[key]["name"] == "快递柜") {
|
|
|
- totaldevice.value += 1;
|
|
|
- onlinedevice.value += res[key].offline =="1"?0:1;
|
|
|
+ totaldevice.value += 1;
|
|
|
+ onlinedevice.value += res[key].offline == "1" ? 0 : 1;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- drawEchart()
|
|
|
+ drawEchart();
|
|
|
});
|
|
|
-}
|
|
|
-
|
|
|
+};
|
|
|
|
|
|
const device = ref({
|
|
|
- total: 0,
|
|
|
- online: 0,
|
|
|
- boxs: 0,
|
|
|
- kongxian: 0
|
|
|
-})
|
|
|
+ total: 0,
|
|
|
+ online: 0,
|
|
|
+ boxs: 0,
|
|
|
+ kongxian: 0,
|
|
|
+});
|
|
|
|
|
|
const getDeviceData = () => {
|
|
|
- getDicts('tbl_sites').then(res => {
|
|
|
- initSiteData(res)
|
|
|
- })
|
|
|
-}
|
|
|
+ getDicts("tbl_sites").then((res) => {
|
|
|
+ initSiteData(res);
|
|
|
+ });
|
|
|
+};
|
|
|
|
|
|
const isJSON = (str) => {
|
|
|
- if (typeof str == 'string') {
|
|
|
- try {
|
|
|
- var obj = JSON.parse(str);
|
|
|
- if (typeof obj == 'object' && obj) {
|
|
|
- return true;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- } catch (e) {
|
|
|
- return false;
|
|
|
- }
|
|
|
+ if (typeof str == "string") {
|
|
|
+ try {
|
|
|
+ var obj = JSON.parse(str);
|
|
|
+ if (typeof obj == "object" && obj) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ return false;
|
|
|
}
|
|
|
-}
|
|
|
+ }
|
|
|
+};
|
|
|
|
|
|
const initSiteData = async (res) => {
|
|
|
- console.log(device.value.total);
|
|
|
- var total = 0
|
|
|
- for (var index in res.data) {
|
|
|
- // console.log(isNull(res.data[index].remark))
|
|
|
- if (res.data[index].remark != null && res.data[index].remark != '' && isJSON(res.data[index].remark)) {
|
|
|
- var devices = JSON.parse(res.data[index].remark)
|
|
|
- total += devices.length
|
|
|
- for (var i in devices) {
|
|
|
- if (devices[i].type == 'cabinet') {
|
|
|
- let boxinfo = null
|
|
|
- try {
|
|
|
- boxinfo = await getInfo(devices[i].code);
|
|
|
- }
|
|
|
- catch (e) {
|
|
|
- // TODO sth with e
|
|
|
- }
|
|
|
- if(boxinfo != null){
|
|
|
- console.log(boxinfo);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ console.log(device.value.total);
|
|
|
+ var total = 0;
|
|
|
+ for (var index in res.data) {
|
|
|
+ // console.log(isNull(res.data[index].remark))
|
|
|
+ if (
|
|
|
+ res.data[index].remark != null &&
|
|
|
+ res.data[index].remark != "" &&
|
|
|
+ isJSON(res.data[index].remark)
|
|
|
+ ) {
|
|
|
+ var devices = JSON.parse(res.data[index].remark);
|
|
|
+ total += devices.length;
|
|
|
+ for (var i in devices) {
|
|
|
+ if (devices[i].type == "cabinet") {
|
|
|
+ let boxinfo = null;
|
|
|
+ try {
|
|
|
+ boxinfo = await getInfo(devices[i].code);
|
|
|
+ } catch (e) {
|
|
|
+ // TODO sth with e
|
|
|
+ }
|
|
|
+ if (boxinfo != null) {
|
|
|
+ console.log(boxinfo);
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
- // device.value.total = total
|
|
|
-}
|
|
|
+ }
|
|
|
+ // device.value.total = total
|
|
|
+};
|
|
|
|
|
|
const drawEchart = () => {
|
|
|
- let echartsObj = echarts.init(stationchart.value, "macarons");
|
|
|
- var dateArray = getRecentDays();
|
|
|
- var option = {
|
|
|
- color: ['#707070', '#0EEFFF'],
|
|
|
- title: {
|
|
|
- // 图形标题(如果想要换行则使用ES6 `` 模板字符串)
|
|
|
- // 例如: `示例
|
|
|
- // 这里的文字会变为第二行(因为会保留格式)
|
|
|
- text: `${((onlinedevice.value/totaldevice.value)*100).toFixed(0)}%`,
|
|
|
- subtext: "在线率",
|
|
|
- left: "center",//对齐方式居中
|
|
|
- top: "40%",//距离顶部
|
|
|
- textStyle: {//文字配置
|
|
|
- color: "#ffffff",//文字颜色
|
|
|
- fontSize: 30,//字号
|
|
|
- align: "center"//对齐方式
|
|
|
- },
|
|
|
- subtextStyle: {
|
|
|
- color: "#C1D2E4"
|
|
|
- }
|
|
|
+ let echartsObj = echarts.init(stationchart.value, "macarons");
|
|
|
+ var dateArray = getRecentDays();
|
|
|
+ var option = {
|
|
|
+ color: ["#707070", "#0EEFFF"],
|
|
|
+ title: {
|
|
|
+ // 图形标题(如果想要换行则使用ES6 `` 模板字符串)
|
|
|
+ // 例如: `示例
|
|
|
+ // 这里的文字会变为第二行(因为会保留格式)
|
|
|
+ text: `${((onlinedevice.value / totaldevice.value) * 100).toFixed(0)}%`,
|
|
|
+ subtext: "在线率",
|
|
|
+ left: "center", //对齐方式居中
|
|
|
+ top: "40%", //距离顶部
|
|
|
+ textStyle: {
|
|
|
+ //文字配置
|
|
|
+ color: "#ffffff", //文字颜色
|
|
|
+ fontSize: 30, //字号
|
|
|
+ align: "center", //对齐方式
|
|
|
+ },
|
|
|
+ subtextStyle: {
|
|
|
+ color: "#C1D2E4",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: "Access From",
|
|
|
+ type: "pie",
|
|
|
+ radius: ["65%", "80%"],
|
|
|
+ avoidLabelOverlap: false,
|
|
|
+ label: {
|
|
|
+ show: false,
|
|
|
+ position: "center",
|
|
|
},
|
|
|
- series: [
|
|
|
- {
|
|
|
- name: 'Access From',
|
|
|
- type: 'pie',
|
|
|
- radius: ['65%', '80%'],
|
|
|
- avoidLabelOverlap: false,
|
|
|
- label: {
|
|
|
- show: false,
|
|
|
- position: 'center'
|
|
|
- },
|
|
|
- labelLine: {
|
|
|
- show: false
|
|
|
- },
|
|
|
- data: [
|
|
|
- { value: totaldevice.value-onlinedevice.value, name: '在线' },
|
|
|
- { value: onlinedevice.value, name: '不在线' },
|
|
|
- ]
|
|
|
- }
|
|
|
- ]
|
|
|
- };
|
|
|
- echartsObj.setOption(option);
|
|
|
-}
|
|
|
+ labelLine: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ data: [
|
|
|
+ { value: totaldevice.value - onlinedevice.value, name: "在线" },
|
|
|
+ { value: onlinedevice.value, name: "不在线" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ echartsObj.setOption(option);
|
|
|
+};
|
|
|
|
|
|
const getRecentDays = () => {
|
|
|
- const oneDay = 24 * 60 * 60 * 1000; // 这里定义一天的毫秒数
|
|
|
- const resultArray = [];
|
|
|
- for (let i = 6; i >= 0; i--) {
|
|
|
- const currentDate = new Date(Date.now() - i * oneDay); // 计算出每天的日期
|
|
|
- const year = currentDate.getFullYear();
|
|
|
- const month = String(currentDate.getMonth() + 1).padStart(2, "0"); // 月份需要补零
|
|
|
- const day = String(currentDate.getDate()).padStart(2, "0"); // 日期也需要补零
|
|
|
- const formattedDate = `${month}-${day}`; // 格式化日期为 yyyy-mm-dd 的形式
|
|
|
- resultArray.push(formattedDate);
|
|
|
- }
|
|
|
- return resultArray;
|
|
|
-}
|
|
|
-
|
|
|
+ const oneDay = 24 * 60 * 60 * 1000; // 这里定义一天的毫秒数
|
|
|
+ const resultArray = [];
|
|
|
+ for (let i = 6; i >= 0; i--) {
|
|
|
+ const currentDate = new Date(Date.now() - i * oneDay); // 计算出每天的日期
|
|
|
+ const year = currentDate.getFullYear();
|
|
|
+ const month = String(currentDate.getMonth() + 1).padStart(2, "0"); // 月份需要补零
|
|
|
+ const day = String(currentDate.getDate()).padStart(2, "0"); // 日期也需要补零
|
|
|
+ const formattedDate = `${month}-${day}`; // 格式化日期为 yyyy-mm-dd 的形式
|
|
|
+ resultArray.push(formattedDate);
|
|
|
+ }
|
|
|
+ return resultArray;
|
|
|
+};
|
|
|
|
|
|
onMounted(() => {
|
|
|
- getBoxs();
|
|
|
+ getBoxs();
|
|
|
getdevices();
|
|
|
- getDeviceData();
|
|
|
- drawEchart();
|
|
|
-})
|
|
|
+ getDeviceData();
|
|
|
+ drawEchart();
|
|
|
+});
|
|
|
</script>
|
|
|
<style lang="scss">
|
|
|
.stationEchartsClass {
|
|
|
- height: 20vh;
|
|
|
- width: 20vw;
|
|
|
+ height: 20vh;
|
|
|
+ width: 20vw;
|
|
|
+ min-width: 400px;
|
|
|
|
|
|
- .titleBg {
|
|
|
- background: url("@/assets/images/homeImages/titleBg.png") no-repeat;
|
|
|
- background-size: 100% 100%;
|
|
|
- }
|
|
|
+ .titleBg {
|
|
|
+ background: url("@/assets/images/homeImages/titleBg.png") no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ }
|
|
|
|
|
|
- .titleFont {
|
|
|
- font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
- font-weight: 400;
|
|
|
- font-size: 18px;
|
|
|
- color: #FFFFFF;
|
|
|
- line-height: 4vh;
|
|
|
- text-shadow: 0px 4px 0px rgba(10, 40, 95, 0.69);
|
|
|
- text-align: left;
|
|
|
- font-style: normal;
|
|
|
- text-transform: none;
|
|
|
- margin-left: 2vw;
|
|
|
- letter-spacing: 5px;
|
|
|
- }
|
|
|
-
|
|
|
- .divContent {
|
|
|
- background: url("@/assets/images/homeImages/contentBg.png") no-repeat;
|
|
|
- background-size: 100% 100%;
|
|
|
- width: 20vw;
|
|
|
- height: 22vh;
|
|
|
- }
|
|
|
+ .titleFont {
|
|
|
+ font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 18px;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 4vh;
|
|
|
+ text-shadow: 0px 4px 0px rgba(10, 40, 95, 0.69);
|
|
|
+ text-align: left;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
+ margin-left: 2vw;
|
|
|
+ letter-spacing: 5px;
|
|
|
+ }
|
|
|
|
|
|
+ .divContent {
|
|
|
+ background: url("@/assets/images/homeImages/contentBg.png") no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ width: 20vw;
|
|
|
+ height: 22vh;
|
|
|
+ min-width: 400px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.countDiv {
|
|
|
- width: 8vw;
|
|
|
- height: 4vh;
|
|
|
- background-color: #375785;
|
|
|
+ width: 8vw;
|
|
|
+ height: 4vh;
|
|
|
+ min-width: 200px;
|
|
|
+ background-color: #375785;
|
|
|
}
|
|
|
|
|
|
.countClass {
|
|
|
- font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
- font-weight: bold;
|
|
|
- font-size: 18px;
|
|
|
- letter-spacing: 5px;
|
|
|
- text-align: right;
|
|
|
- font-style: normal;
|
|
|
- text-transform: none;
|
|
|
- line-height: 1vh;
|
|
|
- height: 1vh;
|
|
|
+ font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 18px;
|
|
|
+ letter-spacing: 5px;
|
|
|
+ text-align: right;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
+ line-height: 1vh;
|
|
|
+ height: 1vh;
|
|
|
}
|
|
|
|
|
|
.typeClass {
|
|
|
- font-family: SourceHanSansCN-Regular, SourceHanSansCN-Regular;
|
|
|
- font-weight: normal;
|
|
|
- font-size: 14px;
|
|
|
- color: #FFFFFE;
|
|
|
- line-height: 1vh;
|
|
|
- height: 1vh;
|
|
|
- letter-spacing: 2px;
|
|
|
- text-align: left;
|
|
|
- font-style: normal;
|
|
|
- text-transform: none;
|
|
|
+ font-family: SourceHanSansCN-Regular, SourceHanSansCN-Regular;
|
|
|
+ font-weight: normal;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #fffffe;
|
|
|
+ line-height: 1vh;
|
|
|
+ height: 1vh;
|
|
|
+ letter-spacing: 2px;
|
|
|
+ min-width: 100px;
|
|
|
+ text-align: left;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
}
|
|
|
|
|
|
.stationkeyClass {
|
|
|
- font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
- font-weight: 400;
|
|
|
- font-size: 14px;
|
|
|
- color: #000000;
|
|
|
- line-height: 1vh;
|
|
|
- height: 1vh;
|
|
|
- text-align: left;
|
|
|
- font-style: normal;
|
|
|
- text-transform: none;
|
|
|
+ font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #000000;
|
|
|
+ line-height: 1vh;
|
|
|
+ height: 1vh;
|
|
|
+ text-align: left;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
}
|
|
|
|
|
|
.stationvalueClass {
|
|
|
- font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
- font-weight: bold;
|
|
|
- font-size: 24px;
|
|
|
- color: #000000;
|
|
|
- line-height: 11px;
|
|
|
- text-align: right;
|
|
|
- font-style: normal;
|
|
|
- text-transform: none;
|
|
|
+ font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 24px;
|
|
|
+ color: #000000;
|
|
|
+ line-height: 11px;
|
|
|
+ text-align: right;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
}
|
|
|
|
|
|
.stationunitClass {
|
|
|
- font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
- font-weight: 400;
|
|
|
- font-size: 12px;
|
|
|
- color: #000000;
|
|
|
- line-height: 11px;
|
|
|
- text-align: left;
|
|
|
- font-style: normal;
|
|
|
- text-transform: none;
|
|
|
+ font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #000000;
|
|
|
+ line-height: 11px;
|
|
|
+ text-align: left;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
}
|
|
|
|
|
|
.imageDiv {
|
|
|
- width: 9vw;
|
|
|
- margin-top: 1vh;
|
|
|
+ width: 9vw;
|
|
|
+ margin-top: 1vh;
|
|
|
}
|
|
|
</style>
|