123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- <template>
- <div id="elec-index" ref="appRef">
- <dv-loading v-if="loading">Loading...</dv-loading>
- <div v-else class="host-body">
- <div class="d-flex jc-center">
- <dv-decoration-10 style="width:33.3%;height:.0625rem;" />
- <div class="d-flex jc-center">
- <dv-decoration-8 :color="['#568aea', '#000000']" style="width:2.5rem;height:.625rem;" />
- <div class="title">
- <span class="title-text">电厂监控大屏</span>
- <dv-decoration-6
- class="title-bototm"
- :reverse="true"
- :color="['#50e3c2', '#67a1e5']"
- style="width:3.125rem;height:.1rem;"
- />
- </div>
- <dv-decoration-8
- :reverse="true"
- :color="['#568aea', '#000000']"
- style="width:2.5rem;height:.625rem;"
- />
- </div>
- <dv-decoration-10 style="width:33.3%;height:.0625rem; transform: rotateY(180deg);" />
- </div>
- <!-- 第二行 -->
- <div class="d-flex jc-between px-2">
- <div class="d-flex" style="width: 40%">
- <div
- class="react-right ml-4"
- style="width: 3.25rem; text-align: left;background-color: #0f1325;"
- >
- <span class="react-before"></span>
- <span class="text"></span>
- </div>
- <div class="react-right ml-3" style="background-color: #0f1325;" >
- <span class="text colorBlue"></span>
- </div>
- <div class="react-right ml-3" style="background-color: #0f1325;" >
- <span class="text colorBlue"></span>
- </div>
- </div>
- <div style="width: 40%" class="d-flex">
- <div class="react-left bg-color-blue mr-3">
- <span class="text fw-b">北京时间</span>
- </div>
- <div
- class="react-left mr-3"
- style="width: 6.25rem; background-color: #0f1325;"
- >
- <span style="text-align: center" class="text">{{dateYear}} {{dateWeek}} {{dateDay}}</span>
- </div>
- <div class="react-left mr-3" style="width: 2.25rem; background-color: #0f1325;" @click="openNewWindow">
- <span class="text fw-b"> <svg-icon icon-class="fullscreen" /></span>
- </div>
- </div>
- </div>
- <div class="body-box">
- <!-- 第三行数据 -->
- <div class="content-box">
- <div>
- <dv-border-box-12>
- <centerLeft1 />
- </dv-border-box-12>
- </div>
- <!-- 中间 -->
- <div>
- <center />
- </div>
- <!-- 中间 -->
- <div>
- <centerRight2 />
- </div>
- <div>
- <dv-border-box-13>
- <centerRight1 />
- </dv-border-box-13>
- </div>
- </div>
- <!-- 第四行数据 -->
- <div class="bototm-box">
- <dv-border-box-13>
- <bottomLeft />
- </dv-border-box-13>
- <dv-border-box-12>
- <bottomRight />
- </dv-border-box-12>
- </div>
- </div>
- </div>
- </div>
- </template>
- <script>
- import centerLeft1 from "./centerLeft1";
- import centerLeft2 from "./centerLeft2";
- import centerRight1 from "./centerRight1";
- import centerRight2 from "./centerRight2";
- import center from "./center";
- import bottomLeft from "./bottomLeft";
- import bottomRight from "./bottomRight";
- import '@/assets/styles/index.scss' // global css
- import '@/common/flexible.js';
- import dayjs from "dayjs";
- export default {
- data() {
- return {
- loading: true,
- dashboard: 1,
- dateDay: null,
- dateYear: null,
- dateWeek: null,
- weekday: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
- timer:null
- };
- },
- components: {
- centerLeft1,
- centerLeft2,
- centerRight1,
- centerRight2,
- center,
- bottomLeft,
- bottomRight
- },
- mounted() {
- this.timer = setInterval(()=>{
- const date= dayjs(new Date());
- this.dateDay = date.format('HH:mm:ss');
- this.dateYear = date.format('YYYY年MM月DD日');
- this.dateWeek = date.format(this.weekday[date.day()]);
- },1000),
- this.setScale();
- window.addEventListener("resize", this.debounce(this.setScale, 100));
- // * 适配处理
- this.cancelLoading();
- },
- methods: {
- cancelLoading() {
- setTimeout(() => {
- this.loading = false;
- }, 500);
- },
- getScale() {
- let { width, height } = this;
- let wh = window.innerHeight / height;
- let ww = window.innerWidth / width;
- console.log(ww < wh ? ww : wh);
- return ww < wh ? ww : wh;
- },
- setScale() {
- if(window.innerHeight ==1080){
- this.height = 1080
- }else{
- this.height = 937
- }
- this.scale = this.getScale();
- if (this.$refs.ScaleBox) {
- this.$refs.ScaleBox.style.setProperty("--scale", this.scale);
- }
- },
- debounce(fn, delay) {
- let delays = delay || 500;
- let timer;
- return function () {
- let th = this;
- let args = arguments;
- if (timer) {
- clearTimeout(timer);
- }
- timer = setTimeout(function () {
- timer = null;
- fn.apply(th, args);
- }, delays);
- };
- },
- openNewWindow() {
- let routeData = this.$router.resolve({
- path: "/elecDashboard",
- });
- window.open(routeData.href, '_blank');
- }
- }
- };
- </script>
- <style lang="scss">
- #elec-index {
- color: #d3d6dd;
- background-color: #000000;
- width: 100%;
- height: 100vh;
- .bg {
- padding: 0.2rem 0.2rem 0 0.2rem;
- background-size: cover;
- background-position: center center;
- background-image: url("../../../assets/image/pageBg.png");
- }
- .host-body {
- .title {
- position: relative;
- width: 6.25rem;
- text-align: center;
- background-size: cover;
- background-repeat: no-repeat;
- .title-text {
- font-size: 0.4rem;
- position: absolute;
- bottom: 0;
- left: 50%;
- top: 30%;
- transform: translate(-50%);
- font-weight: 600;
- }
- .title-bototm {
- position: absolute;
- bottom: -0.375rem;
- left: 50%;
- transform: translate(-50%);
- }
- }
- // 平行四边形
- .react-left {
- cursor: pointer;
- font-size: 0.225rem;
- width: 3.75rem;
- height: 0.625rem;
- line-height: 0.625rem;
- text-align: center;
- transform: skewX(-45deg);
- .react-after {
- position: absolute;
- right: -0.3125rem;
- top: 0;
- height: 0.625rem;
- width: 0.625rem;
- background-color: #0f1325;
- transform: skewX(45deg);
- }
- .text {
- display: inline-block;
- transform: skewX(45deg);
- }
- }
- .react-right {
- cursor: pointer;
- font-size: 0.225rem;
- width: 3.75rem;
- height: 0.625rem;
- line-height: 0.625rem;
- text-align: center;
- transform: skewX(45deg);
- .react-before {
- position: absolute;
- left: -0.3125rem;
- top: 0;
- height: 0.625rem;
- width: 0.625rem;
- background-color: #0f1325;
- transform: skewX(-45deg);
- }
- .text {
- display: inline-block;
- transform: skewX(-45deg);
- }
- }
- .body-box {
- margin-top: 0.2rem;
- display: flex;
- flex-direction: column;
- //下方区域的布局
- .content-box {
- display: grid;
- grid-template-columns: 6fr 7fr 2fr 2fr;
- }
- // 底部数据
- .bototm-box {
- margin-top: 0.125rem;
- display: grid;
- grid-template-columns: repeat(2, 50%);
- }
- }
- }
- }
- .fs-xl {
- font-size: 0.14rem;
- }
- </style>
|