Sfoglia il codice sorgente

完善染整模块功能

liling 2 mesi fa
parent
commit
fa972c4bfc

+ 0 - 1
src/App.vue

@@ -52,6 +52,5 @@ export default {
 <style>
 body {
   margin: 0;
-  background-color: #FFF;
 }
 </style>

BIN
src/assets/image/Close.png


BIN
src/assets/image/Close1.png


+ 8 - 51
src/pages/components/Fac.vue

@@ -14,7 +14,7 @@
     <div class="abs leftPanel" v-if="showIndexData=='index'">
         <div class="title_row"><div class="title_left_line"></div><span>平均值</span><span style="color:#27e6ff">(本月)</span></div>
         <div class="data_row"><img src="../../assets/image/icon_00.png">
-            <div style="margin-left: 10px;"><table>
+            <div style="margin-left: 10px;"><table cellpadding="0" cellspacing="0">
                 <tbody>
                     <tr style="background-color:transparent">
                         <td style="border:0">
@@ -117,10 +117,6 @@
         </div>
         <div class="data_row" ref="echarts_used_qushi" style="width: 100%;height: 42%;border: 1px solid #008899;background: rgb(0 85 102 / 40%);"></div>
     </div>
-    <div id="iframeWin" v-if="isShowIframeWin" :class="iframeWinData.class">
-            <div class="title"><img src="../../assets/image/title_icon.png" style="margin: 7px;float: left;"><span class="text">{{ iframeWinData.title }}</span><img src="../../assets/image/Close.png" style="margin: 7px;float: right;cursor: pointer;" @click="CloseIframeWin"></div>
-            <div class="content"><iframe id="ifrm" :src="iframeWinData.src" class=""></iframe></div>
-        </div>
 </template>
 <script>
 import { ref,onMounted,watch,emit,onUnmounted } from 'vue';
@@ -435,22 +431,11 @@ export default {
                 name: "经编", type: 'line',  //symbol: 'none',
                 data: week_aefficiency, itemStyle: {
                     normal: {
-                        color: '#1EFFFF', // 这里设置折线的颜色
+                        color: '#fbc16b', // 这里设置折线的颜色
                         lineStyle: {
-                            color: '#1EFFFF' // 这里同时设置线头的颜色
+                            color: '#fbc16b' // 这里同时设置线头的颜色
                         }
                     }
-                },
-                barWidth: "8",
-                itemStyle: {
-                    barBorderRadius: [3, 3, 0, 0,],
-                    color: new echarts.graphic.LinearGradient(
-                        0, 0, 0, 1, // 这四个参数分别表示渐变的起点 (x1, y1) 与终点 (x2, y2)
-                        [
-                            {offset: 0, color: '#fbc16b'},   // 0% 处的颜色
-                            {offset: 1, color: '#fbc16b70'}   // 100% 处的颜色
-                        ]
-                    )
                 }
             });
             v_series.push({
@@ -458,22 +443,11 @@ export default {
                 dataType:'Weight',
                 data: week_befficiency, itemStyle: {
                     normal: {
-                        color: '#295589', // 这里设置折线的颜色
+                        color: '#fc4850', // 这里设置折线的颜色
                         lineStyle: {
-                            color: '#295589' // 这里同时设置线头的颜色
+                            color: '#fc4850' // 这里同时设置线头的颜色
                         }
                     }
-                },
-                barWidth: "8",
-                itemStyle: {
-                    barBorderRadius: [3, 3, 0, 0,],
-                    color: new echarts.graphic.LinearGradient(
-                        0, 0, 0, 1, // 这四个参数分别表示渐变的起点 (x1, y1) 与终点 (x2, y2)
-                        [
-                            {offset: 0, color: '#fc4850'},   // 0% 处的颜色
-                            {offset: 1, color: '#fc485070'}   // 100% 处的颜色
-                        ]
-                    )
                 }
             });
             var opt = {
@@ -498,19 +472,6 @@ export default {
                 },
                 tooltip: {
                     trigger: 'axis',
-                    axisPointer: {
-                        label: {
-                            show: true,
-                            backgroundColor: '#fff',
-                            color: '#556677',
-                            borderColor: 'rgba(0,0,0,0)',
-                            shadowColor: 'rgba(0,0,0,0)',
-                            shadowOffsetY: 0
-                        },
-                        lineStyle: {
-                            width: 0
-                        }
-                    },
                     backgroundColor: '#fff',
                     textStyle: {
                         color: '#5c6c7c'
@@ -1109,18 +1070,15 @@ export default {
             kj.setOption(kjOpt);
         }
         function showStockTrend(type){
-            iframeWinData.value = {class:'newwin bpbWin',src:'/stock-trend-fx#'+type,title:StockTypeName[type]+'库存趋势'};
-            isShowIframeWin.value=true;
+            //iframeWinData.value = {class:'newwin bpbWin',src:'/stock-trend-fx#'+type,title:StockTypeName[type]+'库存趋势'};
+            //isShowIframeWin.value=true;
+            emit('OpenIframeWin',{class:'newwin bpbWin',src:'/stock-trend-fx#'+type,title:StockTypeName[type]+'库存趋势'});
 
         }
         function costTotalTrans(v){
             if(v>10000) return (v/10000).toFixed(2);
             return v;
         }
-        function CloseIframeWin(){
-            isShowIframeWin.value=false;
-            iframeWinData.value={};
-        }
         function switchIndex(){
             if(showIndexData.value=='index'){
                 router.push('/datamain');
@@ -1168,7 +1126,6 @@ export default {
             isShowIframeWin,
             iframeWinData,
             markerLClickObj,
-            CloseIframeWin,
             costTotalTrans,
             getDataTimer,
             getDataTimer1,

+ 10 - 30
src/pages/components/In03.vue

@@ -14,7 +14,7 @@
             <div class="title_left_line"></div><span>产线状态</span><span style="color:#27e6ff">(今日)</span>
         </div>
         <div class="abs data_row" style="left: 3%;top:8%;font-weight: normal;">
-            <div style="margin-left: 10px;"><table>
+            <div style="margin-left: 10px;"><table cellspacing="0">
                 <tbody>
                     <tr style="background-color:transparent">
                         <td style="border:0">
@@ -35,7 +35,7 @@
         </div>
         <div class="abs title_row" style="left: auto;top:6%;font-weight: normal;right: 14%;"><div class="title_left_line"></div><span>生产情况</span><span style="color:#27e6ff">(今日)</span></div>
         <div class="abs data_row" style="left: auto;top:8%;font-weight: normal;right: 3%;">
-            <div style="margin-left: 10px;"><table>
+            <div style="margin-left: 10px;"><table cellspacing="0">
                 <tbody>
                     <tr style="background-color:transparent">
                         <td style="border:0">
@@ -385,6 +385,9 @@ export default {
                 else tmp[index].active = false;                
             }
             cxList.value = tmp;
+            if(ind==0){
+                emit('OpenIframeWin',{class:'newwin in03Win',src:'/in03-all-data',title:'染整段(产线数据)'});
+            }
             effInfo.value = deviceStatData.value.eff[ind]; //产线信息
             LoadSCLine(buttonCode1.value);
             LoadUsedLine(buttonCode2.value);
@@ -413,25 +416,15 @@ export default {
             }
             v_series.push({
                 name: currentCXNo.value==0?"全部产线":currentCXNo.value+'号产线', type: 'line',  //symbol: 'none',
-                data: dataLine, itemStyle: {
+                data: dataLine, 
+                itemStyle: {
                     normal: {
-                        color: '#1EFFFF', // 这里设置折线的颜色
+                        color: '#fbc16b', // 这里设置折线的颜色
                         lineStyle: {
-                            color: '#1EFFFF' // 这里同时设置线头的颜色
+                            color: '#fbc16b' // 这里同时设置线头的颜色
                         }
                     }
-                },
-                barWidth: "8",
-                itemStyle: {
-                    barBorderRadius: [3, 3, 0, 0,],
-                    color: new echarts.graphic.LinearGradient(
-                        0, 0, 0, 1, // 这四个参数分别表示渐变的起点 (x1, y1) 与终点 (x2, y2)
-                        [
-                            {offset: 0, color: '#fbc16b'},   // 0% 处的颜色
-                            {offset: 1, color: '#fbc16b70'}   // 100% 处的颜色
-                        ]
-                    )
-                }
+                }                
             });
             var opt = {
                 title: {
@@ -455,19 +448,6 @@ export default {
                 },
                 tooltip: {
                     trigger: 'axis',
-                    axisPointer: {
-                        label: {
-                            show: true,
-                            backgroundColor: '#fff',
-                            color: '#556677',
-                            borderColor: 'rgba(0,0,0,0)',
-                            shadowColor: 'rgba(0,0,0,0)',
-                            shadowOffsetY: 0
-                        },
-                        lineStyle: {
-                            width: 0
-                        }
-                    },
                     backgroundColor: '#fff',
                     textStyle: {
                         color: '#5c6c7c'

+ 463 - 0
src/pages/components/In03_show_allprod.vue

@@ -0,0 +1,463 @@
+<template>
+    <div class="content" style="height: 450px;background-color: #0238445e;">
+        <div class="leftpanel">
+            <span v-for="item in btns" :class="item.active?'btn active':'btn'" @click="switchBtn(item.code)">{{ item.text }}</span>
+        </div>
+        <div class="rightpanel">
+            <el-table v-show="btnCode=='001'" v-loading="loading" :data="effdata">
+                <el-table-column label="产线" align="center" prop="line" />
+                <el-table-column label="开机数(台)" align="center" prop="open"></el-table-column>
+                <el-table-column label="总数" align="center" prop="total" />
+                <el-table-column label="开机率" align="center" prop="ratio">
+                    <template #default="scope">
+                      <span>{{ scope.row.ratio }} %</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="生产时间(H)" align="center">
+                    <el-table-column label="A班" align="center" prop="timeA" />
+                    <el-table-column label="B班" align="center" prop="timeB" />
+                </el-table-column>
+                <el-table-column label="已织造数(米)" align="center">
+                    <el-table-column label="A班" align="center" prop="lengthA" />
+                    <el-table-column label="B班" align="center" prop="lengthB" />
+                </el-table-column>
+                <el-table-column label="总重量(T)" align="center">
+                    <el-table-column label="A班" align="center" prop="weightA" />
+                    <el-table-column label="B班" align="center" prop="weightB" />
+                </el-table-column>
+                <el-table-column label="稼动率(%)" align="center">
+                    <el-table-column label="A班" align="center" prop="effA" />
+                    <el-table-column label="B班" align="center" prop="effB" />
+                </el-table-column>
+            </el-table>
+            <div v-show="btnCode=='002'" style="width: 98%;height: 93%;padding: 1%;">
+                <div style="height: 35px;width: 100%;">
+                    <span style="margin-left: auto !important;">
+                        <span :class="buttonCode1=='Length'?'btn active':'btn'" @click="LoadSCLine('Length')">米数</span>
+                        <span :class="buttonCode1=='Weight'?'btn active':'btn'" @click="LoadSCLine('Weight')">重量</span>
+                    </span>
+                </div>
+                <div ref="echarts_sc_qushi" style="width: 100%;height: 90%;"></div>
+            </div>
+            <div v-show="btnCode=='003'" style="width: 98%;height: 93%;padding: 1%;">
+                <div style="height: 35px;width: 100%;">
+                    <span style="margin-left: auto !important;">
+                        <span :class="buttonCode2=='price'?'btn active':'btn'" @click="LoadUsedLine('price')">折算</span>
+                        <span :class="buttonCode2=='electricity'?'btn active':'btn'" @click="LoadUsedLine('electricity')">电</span>
+                        <span :class="buttonCode2=='steam'?'btn active':'btn'" @click="LoadUsedLine('steam')">气</span>
+                        <span :class="buttonCode2=='water'?'btn active':'btn'" @click="LoadUsedLine('water')">水</span>
+                    </span>
+                </div>
+                <div ref="echarts_used_qushi" style="width: 100%;height: 90%;"></div>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import { ref ,watch,onUnmounted,onMounted} from 'vue';
+import api from "@/api/system";
+import * as echarts from 'echarts';
+export default {
+    props:{
+
+    },
+    setup(props,{emit}) {
+        const loading = ref(true);
+        const btns=ref([{"text":"生产效率",active:true,code:'001'},{"text":"生产趋势",active:false,code:'002'},{"text":"能耗趋势",active:false,code:'003'}]);
+        const deviceStatData = ref({});
+        const effdata = ref([]);
+        const btnCode= ref('001');
+        const buttonCode1=ref('Length');
+        const buttonCode2 = ref('price');
+        const echarts_sc_qushi = ref(null);
+        const echarts_used_qushi = ref(null);
+        let echartsEleIns_1=null;
+        let echartsEleIns_0=null;
+        const dataTypeUnit={
+            'Length':'米',
+            'Weight':'吨',
+            'price':'元/米',
+            'electricity':'kwh',
+            'steam':'GJ',
+            'water':'m³',
+        };
+        let DataFull={
+            GetData:function(){
+                api.Get03Data().then((res)=>{
+                    loading.value = false;
+                    //if(window.CurrentTargetType!='IN03') return;
+                    
+                    if (res == null) {
+                        return
+                    }
+                    if(res.code!=200){
+                        return;
+                    }
+                    deviceStatData.value = res.data;
+                    effdata.value = res.data.eff.splice(1,9);
+                });
+            }
+        }
+        function switchBtn(code){
+            btnCode.value = code;
+            let tmp = btns.value;
+            for (let index = 0; index < tmp.length; index++) {
+                const element = tmp[index];
+                element.active = element.code==code?true:false;                
+            }
+            btns.value = tmp;
+            setTimeout(() => {
+                if(code=='002'){
+                    LoadSCLine('Length');
+                }else if(code=='003'){
+                    LoadUsedLine('price');
+                }
+            }, 200);
+        }
+        function LoadSCLine(dataType) {
+            buttonCode1.value = dataType;
+            let data = deviceStatData.value.prodTrade;
+            //生产趋势
+            //获取数据中weight、aweight、bweight
+            var t = echarts_sc_qushi.value;            
+            var dataLine = [[],[],[],[],[],[],[],[]];
+            var lineColors = ['#1EFFFF','#cccccc','#ffffff','#fbc16b','#fc4850','#68f1f6','#c856fc','#feb54a'];
+            var times = [];
+            var v_series = [];
+            for (var i = 0; i < data.length; i++) {              
+                var tv = data[i]['date'];
+                times.push([tv,data[i].tips]);
+                if(dataType=='Length'){
+                    for (let index = 0; index < 8; index++) {
+                        dataLine[index].push({value:data[i].line[index+1]['length'],type:'Length'});                        
+                    }
+                }else{
+                    for (let index = 0; index < 8; index++) {
+                        dataLine[index].push({value:data[i].line[index+1]['weight'],type:'Weight'});                        
+                    } 
+                }
+            }
+            if (times.length == 0) {
+                return
+            }
+            for (let index = 0; index < dataLine.length; index++) {
+                v_series.push({
+                    name: (index+1)+'号', type: 'line',  //symbol: 'none',
+                    data: dataLine[index], 
+                    itemStyle: {
+                        normal: {
+                            color: lineColors[index], // 这里设置折线的颜色
+                            lineStyle: {
+                                color: lineColors[index] // 这里同时设置线头的颜色
+                            }
+                        }
+                    }
+                });
+            }
+            var opt = {
+                title: {
+                    show: false, //不显示标题
+                    text: '',
+                    textStyle: {
+                        color: "rgb(89, 151, 229)",
+                        fontWeight: "bold"
+                    },
+                    top: "0px",
+                    left: "30px"
+                },
+                legend: {
+                    show: true, //不显示图例
+                    inactiveColor: "#04417A",
+                    data: "",
+                    icon:"circle",
+                    textStyle: {color: "#fff"},
+                    top: "5",
+                    left: "10px",
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    backgroundColor:'#034b59d6',
+                    textStyle: {
+                        color: '#cccccc'
+                    },
+                    padding: [10, 10],
+                    extraCssText: 'box-shadow: 1px 0 2px 0 rgba(163,163,163,0.5)',
+                    formatter: function (params) {
+                        let xv='';
+                        let result = '';
+                        params.forEach(function (item) {
+                            xv=`${item.name}`;
+                            xv = xv.split(',')[1]+'<br>';
+                            result += ` ${item.marker} ${item.seriesName}:  ${item.value}(`+dataTypeUnit[item.data.type]+`)<br/>`;
+                        });
+                        return xv+result;
+                    }
+                },
+                grid: {
+                    left: '5%',
+                    right: '5%',
+                    bottom: '0',
+                    top: '15%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'category',
+                    boundaryGap: true,
+                    axisLabel: {
+                        rotate: 45,
+                        color: "#26e2fb",
+                        formatter:function(v){
+                            return v.split(',')[0]
+                        }
+                    },
+                    axisTick:{
+                        show:false
+                    },
+                    data: times
+                },
+                yAxis: {
+                    type: 'value',
+                    nameTextStyle: {
+                        color: "#26e2fb"
+                    },
+                    axisLine:{
+                        show:true
+                    },
+                    axisLabel: {
+                        color: "#26e2fb"
+                    },
+                    splitLine: {
+                        lineStyle: {
+                            color: "#7DA7CD",
+                            type: "dashed",
+                            width: 1
+                        }
+                    }
+                },
+                series: v_series
+            };
+            if(echartsEleIns_1!=null){
+                echartsEleIns_1.dispose();
+
+            }
+            echartsEleIns_1 = echarts.init(t);
+            echartsEleIns_1.setOption(opt);
+        }
+        function LoadUsedLine(dataType){
+            buttonCode2.value = dataType;
+            let data = deviceStatData.value.energyTrade;
+            //能耗趋势
+            var t = echarts_used_qushi.value;
+            var dataLine = [[],[],[],[],[],[],[],[]];
+            var lineColors = ['#1EFFFF','#cccccc','#ffffff','#fbc16b','#fc4850','#68f1f6','#c856fc','#feb54a'];
+            var times = [];
+            var v_series = [];
+            for (var i = 0; i < data.length; i++) {
+                times.push([data[i]['date'],data[i].tips]);
+                for (let index = 0; index < 8; index++) {
+                    dataLine[index].push({value:data[i].line[index+1][dataType],type:dataType});                        
+                }
+            }
+            if (times.length == 0) {
+                return
+            }
+            for (let index = 0; index < dataLine.length; index++) {
+                v_series.push({
+                    name: (index+1)+'号', type: 'line',  //symbol: 'none',
+                    data: dataLine[index], 
+                    itemStyle: {
+                        normal: {
+                            color: lineColors[index], // 这里设置折线的颜色
+                            lineStyle: {
+                                color: lineColors[index] // 这里同时设置线头的颜色
+                            }
+                        }
+                    }
+                });
+            }
+            var opt = {
+                title: {
+                    show: false, //不显示标题
+                    text: '',
+                    textStyle: {
+                        color: "rgb(89, 151, 229)",
+                        fontWeight: "bold"
+                    },
+                    top: "0px",
+                    left: "30px"
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    backgroundColor:'#034b59d6',
+                    textStyle: {
+                        color: '#cccccc'
+                    },
+                    formatter: function (params) {
+                        let xv='';
+                        let result = '';
+                        params.forEach(function (item) {
+                            xv=`${item.name}`;
+                            xv = xv.split(',')[1]+'<br>';
+                            result += ` ${item.marker} ${item.seriesName}:  ${item.value}(`+dataTypeUnit[item.data.type]+`)<br/>`;
+                        });
+                        return xv+result;
+                    }
+                },
+                legend: {
+                    show: true, //不显示图例
+                    inactiveColor: "#04417A",
+                    data: "",
+                    textStyle: {color: "#fff"},
+                    top: "5",
+                    left:"10px",
+                    icon:"circle",
+                },
+                grid: {
+                    left: '3%',
+                    right: '1%',
+                    bottom: '0',
+                    top: '15%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'category',
+                    boundaryGap: false,
+                    axisLabel: {
+                        rotate: 45,
+                        color: "#26e2fb",
+                        formatter:function(v){
+                            return v.split(',')[0]
+                        }
+                    },
+                    axisLine:{
+                        show:true
+                    },
+                    axisTick:{
+                        show:false,
+                    },
+                    data: times
+                },
+                yAxis: {
+                    type: 'value',
+                    nameTextStyle: {
+                        color: "#26e2fb"
+                    },
+                    axisLine:{
+                        show:true
+                    },
+                    axisTick:{
+                        show:false,
+                    },
+                    axisLabel: {
+                        color: "#26e2fb"
+                    },
+                    splitLine: {
+                        lineStyle: {
+                            color: "#7DA7CD",
+                            type: "dashed",
+                            width: 1
+                        }
+                    }
+                },
+                series: v_series
+            };
+            if(echartsEleIns_0!=null){
+                echartsEleIns_0.dispose();
+            }
+            echartsEleIns_0 = echarts.init(t);            
+            echartsEleIns_0.setOption(opt);
+        }
+        onMounted(()=>{
+            DataFull.GetData();
+        })
+        return{
+            deviceStatData,
+            effdata,
+            btns,
+            loading,
+            btnCode,
+            buttonCode1,
+            buttonCode2,
+            echarts_sc_qushi,
+            echarts_used_qushi,
+            switchBtn,
+            LoadSCLine,
+            LoadUsedLine,
+        }
+    }
+}
+</script>
+<style>
+/* 更改表头背景颜色 */
+.el-table__header,.el-table thead.is-group th.el-table__cell {
+  background-color: #085e6b;
+  color: #1fc3db;
+}
+
+/* 更改表格行鼠标悬停时的背景颜色 */
+.el-table .el-table__body tr:hover>td {
+  background-color: #085e6b !important;
+}
+
+.el-table .el-table__body tr:nth-child(odd) td {
+  background-color: #054f5c; /* 奇数行背景色 */
+}
+ 
+.el-table .el-table__body tr:nth-child(even) td {
+  background-color: #085e6b; /* 偶数行背景色 */
+}
+
+/* 更改单元格字体颜色 */
+.el-table__cell {
+  color: #fff;
+}
+.el-table--border:before,
+.el-table__inner-wrapper:before,
+.el-table--border:after,
+.el-table--border .el-table__inner-wrapper:after,
+.el-table__border-bottom-patch,
+.el-table__border-left-patch{
+    background-color: transparent !important;
+}
+.el-table--border th.el-table__cell{
+    border-bottom:1px;
+}
+.el-table--border .el-table__cell
+{
+    border-right:0px;
+}
+.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf{
+    border-bottom:0px;
+}
+.content .leftpanel{
+    width: 7%;
+    float: left;
+    height: 88%;
+    padding-left: 1%;
+    margin-top: 1%;
+}
+.content .rightpanel{
+    width: 90%;
+    float: left;
+    height: 390px;
+    margin-top: 1%;
+    border: 1px solid #018191;
+    background-color: #034b59d6;
+}
+.content .btn{
+    width: 86px;
+    height: 35px;
+    line-height: 35px;
+    text-align: center;
+    background-color: #085e6b;
+    color: #26e2fb;
+    display: inline-block;
+    float: left;
+    margin-bottom: 15px;
+    cursor: pointer;
+}
+.content .btn.active,.content .btn:hover{
+    background-color: #008899;
+    color: #fff;
+}
+</style>

+ 33 - 8
src/pages/main/index.vue

@@ -5,15 +5,19 @@
         <div v-if="!isLoaded" ref="loading" id="loading">正在加载模型中...</div>
         <div v-if="reconnect" class="reconnect">网络连接中断,正在进行重连...</div>
         <video ref="EngineContent" autoplay muted style="width: 1920px;height:1080px;">浏览器不支持</video>
-        <Fac v-if="currentTargetType=='FAC'" user-role="index" :fac-model-load-state="isLoaded"  @markerLClick="facMarkerLClick"></Fac>
-        <In02 ref="In02Ele" v-if="currentTargetType=='IN02'" user-role="index" :click-event="In02ClickEvent" :in02-model-load-state="in02modelloadstate" :user-timeout="AutoPlayer"></In02>
-        <In03 ref="In03Ele" v-if="currentTargetType=='IN03'" user-role="index" :click-event="In03ClickEvent" :in03-model-load-state="in03modelloadstate" :user-timeout="AutoPlayer"></In03>
+        <Fac v-if="currentTargetType=='FAC'" user-role="index" :fac-model-load-state="isLoaded"  @markerLClick="facMarkerLClick" @OpenIframeWin="OpenIframeWin"></Fac>
+        <In02 ref="In02Ele" v-if="currentTargetType=='IN02'" user-role="index" :click-event="In02ClickEvent" :in02-model-load-state="in02modelloadstate" :user-timeout="AutoPlayer"  @OpenIframeWin="OpenIframeWin"></In02>
+        <In03 ref="In03Ele" v-if="currentTargetType=='IN03'" user-role="index" :click-event="In03ClickEvent" :in03-model-load-state="in03modelloadstate" :user-timeout="AutoPlayer"  @OpenIframeWin="OpenIframeWin"></In03>
         <!--
         <In04 v-if="currentTargetType=='IN04'" :click-event="In04ClickEvent" :in04-model-load-state="in04modelloadstate" :user-timeout="AutoPlayer"></In04>
         <In05 v-if="currentTargetType=='IN05'" :click-event="In05ClickEvent" :in05-model-load-state="in05modelloadstate" :user-timeout="AutoPlayer"></In05>
         -->
         <Bottom @loadNavModel="loadNavModel" user-role="index" :fac-model-load-state="isLoaded"/>
     </div>
+    <div id="iframeWin" v-if="isShowIframeWin" :class="iframeWinData.class">
+        <div class="title"><span class="text" v-html="iframeWinData.title"></span><img src="../../assets/image/Close.png" style="margin: 7px 17px;float: right;cursor: pointer;" @click="CloseIframeWin"></div>
+        <div class="content"><iframe id="ifrm" :src="iframeWinData.src" class=""></iframe></div>
+    </div>
 </template>
 <script>
 import { ref, onMounted, onBeforeUnmount } from "vue";
@@ -40,6 +44,8 @@ export default {
         const loading_a1=ref(null);
         const EngineContent=ref(null);
         const reconnect=ref(false);
+        const isShowIframeWin = ref(false);
+        const iframeWinData = ref({});
         const autoplayer_btn =ref(null);
         let In02ClickEvent = ref(null);
         let In04ClickEvent = ref(null);
@@ -69,6 +75,18 @@ export default {
             //"IN04":{"Text001_004":1,"x1":-38.46275,"y1":35.65208,"x2":-44.94122,"y2":28.22142},
             //"IN05":{"Text001_005":1,"x1":102.43050,"y1":38.96248,"x2":108.99212,"y2":30.86295}
         };
+        function CloseIframeWin(){
+            isShowIframeWin.value=false;
+            iframeWinData.value={};
+        }
+        function OpenIframeWin(info){
+            iframeWinData.value = {
+                class:info.class==null? 'newwin bpbWin':info.class,
+                src:info.src,
+                title:info.title
+            };
+            isShowIframeWin.value=true;
+        }
         function ShowLoading(){
             lottie.loadAnimation({
                 // 选取一个容器,用于渲染动画
@@ -210,6 +228,7 @@ export default {
                 player.Native.Settings.set('searchLightIntensity', 'float', 0.5);//初始化探照灯强度
                 // 点击事件一般仅用于浏览工具,在点选工具下无效
                 Native.Tools.setCurrentTool("system.Browse");
+                console.log('window.CurrentTargetType:',window.CurrentTargetType)
                 switch(window.CurrentTargetType){
                     case "IN02":
                         loadIn02Model(Native);
@@ -383,12 +402,14 @@ export default {
             await player.Native.Model.setModelVisible("FAC",false);
             await player.Native.Model.setModelVisible("IN02",false);
             await player.Native.Model.setModelVisible("IN04",false);
-            await player.Native.Model.setModelVisible("IN05",false);            
-            if(modelLoadState[currentTargetType.value]==null){
-                var cf = "data://models/T_03.pr";
-                var errStr = await PlayerUtils.call(Native.Model.loadModel, 'IN03', cf);
-                modelLoadState[currentTargetType.value] = true;
+            await player.Native.Model.setModelVisible("IN05",false);  
+            var cf = "data://models/T_03.pr";          
+            if(modelLoadState[currentTargetType.value]!=null){
+                await player.Native.Model.unloadModel('IN03');
+                console.log('IN03模型卸载完成')
             }
+            await PlayerUtils.call(Native.Model.loadModel, 'IN03', cf);
+            modelLoadState[currentTargetType.value] = true;
             //showMarker(currentTargetType.value);
             await player.Native.Model.setModelVisible(currentTargetType.value,true);
             player.Native.CameraAnimation.clearKeyFrame();
@@ -539,7 +560,11 @@ export default {
         })
         return {
             player,
+            isShowIframeWin,
+            iframeWinData,
             facMarkerLClick,
+            CloseIframeWin,
+            OpenIframeWin,
             isLoaded,
             currentTargetType,
             loading_a1,

+ 1 - 1
src/pages/stock/stock_trend.vue

@@ -1,5 +1,5 @@
 <template>
-    <div class="content" style="background-color: rgba(41,85,137,0.7);height: 724px;">
+    <div class="content" style="height: 724px;">
         <div id="echartTrend">
             <div class="trend-title">出入库趋势-最近1月</div>
             <div style="width: 100%;height:80%;" ref="echartTrendLast"></div>

+ 7 - 0
src/router/index.js

@@ -46,6 +46,13 @@ const routes = [
         }
     },
     {
+        path:"/in03-all-data",
+        component: () => import("@/pages/components/In03_show_allprod.vue"),
+        meta: {
+            name: "in03-all-data"
+        }
+    },
+    {
         path:"/imp-00",
         component: () => import("@/pages/imp/imp00.vue"),
         meta: {

+ 22 - 8
src/styles/main.css

@@ -5,7 +5,7 @@
         padding: 0;
         margin: 0;
         overflow: hidden;
-        background-color: #050C28;
+        background-color: #00556699;
         /*background-image: url('image/bg.jpeg');*/
     }
     thead tr{
@@ -148,6 +148,19 @@
         margin-top: -382px !important;
         margin-left:-683px !important;
     }
+    .in03Win{
+        width: 1600px !important;
+        height: 480px !important;
+        left: 50%;
+        top:50%;
+        margin-top: -240px !important;
+        margin-left:-800px !important;
+    }
+    .in03Win .content,.in03Win iframe{
+        height: 480px !important;
+        width: 100%;
+        border: 0;       
+    }
     .impWin{
         width: 800px !important;
         height: 160px !important;
@@ -543,7 +556,8 @@
     .newwin .title,.showinfo .title{
         width: 100%;
         height: 40px;
-        background: linear-gradient( 90deg, #2E5097 0%, #071433 100%);
+        /*background: linear-gradient( 90deg, #2E5097 0%, #071433 100%);*/
+        background-color: #00687d;
     }
     .newwin{
         position: absolute;
@@ -554,18 +568,18 @@
         margin-top: -278px;
         margin-left:-665px;
         z-index: 999999;
-        background-color: rgba(9,28,67,0.9);
-        border: 2px solid #445985;
+        background-color: #00556699;
+        border: 2px solid #008899;
         color: #7E96D9;
     }
     .newwin .title .text,.showinfo .title .text{
         font-weight: 400;
-        font-size: 24px;
-        line-height: 28px;
+        font-size: 18px;
+        line-height: 38px;
         text-align: left;
-        color: #AFC5FF;
+        color: #ffffff;
         float: left;
-        margin: 7px;
+        margin: 0 20px;
     }
     .newwin .btn{
         display: inline-block;