From 5efd01db698683e95a63053da43aaa08fa35a185 Mon Sep 17 00:00:00 2001
From: 叶松 <2217086471@qq.com>
Date: 星期五, 01 十二月 2023 11:20:28 +0800
Subject: [PATCH] Merge branch 'master' of http://111.30.93.211:10101/r/supipe

---
 web/src/views/MixingInfo/mixing.vue |  314 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 314 insertions(+), 0 deletions(-)

diff --git a/web/src/views/MixingInfo/mixing.vue b/web/src/views/MixingInfo/mixing.vue
new file mode 100644
index 0000000..55d42a7
--- /dev/null
+++ b/web/src/views/MixingInfo/mixing.vue
@@ -0,0 +1,314 @@
+<template>
+    <div class="wrap">
+        <div class="header">
+            <div class="header_name">中铁十四局通甬站前I标管片场拌合站</div>
+        </div>
+        <div class="container">
+            <div class="con_name">
+                <div class="line left"></div>
+                <div class="name">
+                    <p class="p">{{ infoL.siloName }}</p>
+                    <p class="p">{{ infoR.siloName }}</p>
+                </div>
+                <div class="line right"></div>
+            </div>
+            <div class="con_main">
+                <div class="con_main_item con_main_l">
+                    <div class="placeholder"></div>
+                    <div class="list_wrap">
+                        <list :data="infoL.mixing"></list>
+                    </div>
+                </div>
+                <div class="con_main_item con_main_c">
+                    <div :class="`image ${infoL.percentImgName || ''}`">
+                        <p>{{ infoL.siloName }}</p>
+                    </div>
+                    <div :class="`image ${infoR.percentImgName || ''}`">
+                        <p>{{ infoR.siloName }}</p>
+                    </div>
+                </div>
+                <div class="con_main_item con_main_r">
+                    <div class="placeholder"></div>
+                    <div class="list_wrap">
+                        <list :data="infoR.mixing"></list>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+  
+<script>
+import List from './components/List'
+const interval = function (fn, Vue) {
+    let timer = setInterval(
+        (() => {
+            fn()
+            return fn
+        })(),
+        1000 * 60 * 1
+    )
+    if (Vue) {
+        Vue.$once('hook:beforeDestroy', function () {
+            timer && clearInterval(timer)
+        })
+    }
+}
+export default {
+    name: 'mixing',
+    data() {
+        return {
+            type: '',
+            infoL: {},
+            infoR: {},
+            percents: {
+                0: 'container_10',
+                10: 'container_10',
+                20: 'container_20',
+                40: 'container_40',
+                60: 'container_60',
+                80: 'container_80',
+                90: 'container_90',
+                100: 'container_100',
+            }
+        };
+    },
+    components: {
+        List
+    },
+    beforeCreate() {
+        this.$http = this.$api.Infos
+    },
+    beforeRouteEnter(to, form, next) {
+        const {path} = to
+
+        const type = path.slice(-1)
+
+        next(vm => {
+            vm.type = type
+            interval(vm.getLists, vm)
+        })
+    },
+    mounted() {
+        let width = document.getElementsByClassName('wrap')[0].clientWidth
+        let $html = document.getElementsByTagName('html')[0]
+        let fontsize = width / 1920 * 35.2
+        $html.style.fontSize = `${fontsize}px`
+        window.onresize = () => {
+            let width = document.getElementById('app').clientWidth
+            let fontsize = width / 1920 * 35.2
+            $html.style.fontSize = `${fontsize}px`
+        }
+    },
+    beforeDestroy() {
+        let $html = document.getElementsByTagName('html')[0]
+        $html.style.fontSize = ''
+    },
+    methods: {
+        getLists() {
+            const percentArr = Object.keys(this.percents)
+            this.$api.Infos.getMixing({types: this.type}).then(res => {
+                if (res.statusMsg === 'ok' && res.data && res.data.length) {
+                    res.data.forEach((item, index) => {
+                        if (item && item.mixing && item.mixing.percentage) {
+                            let targetVal = +item.mixing.percentage
+                            for (let index = 0; index < percentArr.length - 1; index++) {
+                                const val = percentArr[index]
+                                const valNext = percentArr[index + 1]
+                                if (val <= targetVal && targetVal <= valNext) {
+                                    item.percentImgName = this.percents[val]
+                                    break
+                                }
+                            }
+                        } else {
+                            item.percentImgName = this.percents[0]
+                        }
+                        index === 0 && (this.infoL = item)
+                        index === 1 && (this.infoR = item)
+                    })
+                } else {
+                    this.$message.warning('请检查网络或联系管理员!!!')
+                }
+            })
+
+
+
+        },
+    }
+}
+</script>
+<style scoped>
+li {
+    list-style: none;
+}
+
+.wrap {
+    position: absolute;
+    width: 100%;
+    height: 100%;
+    font-size: 1rem;
+    background: #040A3F;
+    overflow: hidden;
+}
+
+.header {
+    position: absolute;
+    width: 100%;
+    height: 3rem;
+    text-align: center;
+    font-family: 'Microsoft YaHei';
+    color: #fff;
+    background: url('../../assets/mixing/header.png') no-repeat center center;
+    background-size: 100% auto;
+
+    .header_name {
+        font-size: 1.6rem;
+        font-weight: bold;
+        line-height: 3.2rem;
+        letter-spacing: 2px;
+        text-shadow: 0px 3px 3px rgba(25, 63, 95, 0.05);
+        background: -webkit-linear-gradient(90deg, #2AC0FF 0%, #FFFFFF 70%);
+        -webkit-background-clip: text;
+        -webkit-text-fill-color: transparent;
+    }
+}
+
+.container {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    position: absolute;
+    left: 20px;
+    right: 20px;
+    top: 3.6rem;
+    bottom: 20px;
+    color: #fff;
+
+    .con_name {
+        display: flex;
+        align-items: center;
+        height: 2.2rem;
+
+        .name {
+            width: 20rem;
+            display: flex;
+            justify-content: space-evenly;
+
+            .p {
+                height: 2rem;
+                padding: 0 2rem;
+                line-height: 2rem;
+                font-size: 1.2rem;
+                font-weight: bold;
+                white-space: nowrap;
+                background: url(../../assets/mixing/name_bg.png) no-repeat;
+                background-size: 100% 100%;
+            }
+        }
+
+        .line {
+            flex: 1;
+            height: 14px;
+
+            &.left {
+                background: -webkit-linear-gradient(right, rgba(18, 99, 162, 1) 0, rgba(18, 99, 162, 0) 100%);
+            }
+
+            &.right {
+                background: -webkit-linear-gradient(left, rgba(18, 99, 162, 1) 0, rgba(18, 99, 162, 0) 100%);
+            }
+        }
+    }
+
+    .con_main {
+        margin-top: 10px;
+        flex: 1;
+        display: flex;
+
+        .con_main_item {
+            padding: 15px 15px 0 15px;
+            position: relative;
+            flex: 1;
+
+            &.con_main_l,
+            &.con_main_r {
+                background: url(../../assets/mixing/list_bg.png) no-repeat;
+                background-size: 100% 100%;
+            }
+
+            &.con_main_l .placeholder {
+                width: 100%;
+                height: 8%;
+                background: url(../../assets/mixing/list_l_bg.png) no-repeat;
+                background-size: 100% 100%;
+            }
+
+            &.con_main_r .placeholder {
+                width: 100%;
+                height: 8%;
+                background: url(../../assets/mixing/list_r_bg.png) no-repeat;
+                background-size: 100% 100%;
+            }
+
+            &.con_main_c .image {
+                position: relative;
+                float: left;
+                width: 50%;
+                height: 100%;
+                min-height: 480px;
+                text-align: center;
+
+                >p {
+                    position: absolute;
+                    left: 50%;
+                    top: 21%;
+                    white-space: nowrap;
+                    transform: translate(-50%, -50%);
+                }
+
+                &.container_10 {
+                    background: url(../../assets/mixing/container_10.png) center 30% no-repeat;
+                    background-size: auto 70%;
+                }
+
+                &.container_20 {
+                    background: url(../../assets/mixing/container_20.png) center 30% no-repeat;
+                    background-size: auto 70%;
+                }
+
+                &.container_40 {
+                    background: url(../../assets/mixing/container_40.png) center 30% no-repeat;
+                    background-size: auto 70%;
+                }
+
+                &.container_60 {
+                    background: url(../../assets/mixing/container_60.png) center 30% no-repeat;
+                    background-size: auto 70%;
+                }
+
+                &.container_80 {
+                    background: url(../../assets/mixing/container_80.png) center 30% no-repeat;
+                    background-size: auto 70%;
+                }
+
+                &.container_90 {
+                    background: url(../../assets/mixing/container_90.png) center 30% no-repeat;
+                    background-size: auto 70%;
+                }
+
+                &.container_100 {
+                    background: url(../../assets/mixing/container_100.png) center 30% no-repeat;
+                    background-size: auto 70%;
+                }
+            }
+
+            .list_wrap {
+                position: absolute;
+                top: 12%;
+                bottom: 0;
+            }
+
+        }
+    }
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3