Browse Source

修复数据为0时显示问题
优化模型加载

liling 4 months ago
parent
commit
f158d83fed

+ 5 - 0
src/main.js

@@ -16,6 +16,7 @@ import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css'
 import LogicFlow from "@logicflow/core";
 import { preventReClick } from "@/utils/common.js";//防止用户频繁点击
 import { BpmnElement, Control, MiniMap,Menu,Snapshot,RectResize  } from '@logicflow/extension';
+import { VueDraggableNext } from 'vue-draggable-next'
 // 左边工具栏以及编辑节点的样式
 // import 'bpmn-js-properties-panel/dist/assets/bpmn-js-properties-panel.css'
 const app = createApp(App)
@@ -38,5 +39,9 @@ LogicFlow.use(RectResize)
 window.onerror = function(message, source, lineno, colno, error) {
     console.error("捕获到全局错误:", message, "在", source, "第", lineno, "行");
   };
+app.config.globalProperties.ReplaceNull=function(v,defaultValue){
+    if(v==null) return defaultValue;
+    return v;
+}
 app.mount('#app')
 

+ 1 - 1
src/pages/components/Bottom.vue

@@ -23,7 +23,7 @@ export default {
     },
     setup(props,{emit}) {
         let clickTime = 0;
-        let ClickTimeLong = 4;//导航间隔时长
+        let ClickTimeLong = 2;//导航间隔时长
         let clickTimer = null;
         const showIndexData = ref('');
         let dataTimer = null;

+ 10 - 9
src/pages/components/Fac.vue

@@ -243,8 +243,8 @@ export default {
                     }
                     FacStockData = res.data.stock||{};
                     deviceStatData.value = res.data;
-                    LoadSCLine('Length');
-                    LoadUsedLine('price');
+                    LoadSCLine(buttonCode1.value=='' ? 'Length':buttonCode1.value);
+                    LoadUsedLine(buttonCode2.value==''?'price':buttonCode2.value);
                     LoadJBPie();
                     LoadRZPie();
                 })
@@ -252,6 +252,7 @@ export default {
         }
         //全局厂房最佳视图
         function backMasterViewByFac(){
+            if(window.CurrentTargetType!='FAC') return;
             // player.Native.Camera.moveTo([235.678127000173, 13.38107286701451, 74.13573809425804], [-1248.3191825020908, -262.59031050373517, -409.93944372657353], [-0.30023176822741604, -0.055832565112502126, 0.9522308596238611], 1);
             player.Native.Camera.moveTo([132.11876502209185, -440.46670198759625, 492.25734718993556],
             [-640.8528070063287, 2116.1462138868947, -2471.4015229045867],
@@ -259,7 +260,7 @@ export default {
             // 使用异步函数
             (async () => {
                 setTimeout(function() {
-                    player.Native.Camera.setAnchorPos([-45.87571144104003, -44.632896423339844, 43.90447044372559]);
+                    if(window.CurrentTargetType=='FAC') player.Native.Camera.setAnchorPos([-45.87571144104003, -44.632896423339844, 43.90447044372559]);
                 }, 3000);
             })();
         }
@@ -299,7 +300,7 @@ export default {
         }
         async function loadmarkers(){
                 //获取4号楼顶对象
-                var obj02 = await player.Native.ModelTree.findItemByName("Box013",0,true,1);
+                //var obj02 = await player.Native.ModelTree.findItemByName("Box013",0,true,1);
                 var imgid = await player.Native.GisMarker.loadImage("data://icon/qietu/tip3.png");
                 var options = {
                             "text": "白坯布("+StockTypeUnit['bpb']+")\r\r当前库存:-\r统计时间:7点至次日7点\r当日入库:- 出库:-\r当月入库:- 出库:-\r",
@@ -313,7 +314,7 @@ export default {
                             "userData":"bpb|白坯布("+StockTypeUnit['bpb']+")\r\r当前库存:{curr}\r统计时间:7点至次日7点\r当日入库:{d-in} 出库:{d-out}\r当月入库:{m-in} 出库:{m-out}\r"
                 };
 
-                var obj02Aabb = await player.Native.ModelTree.getItemShapeInfo(obj02.item);
+                //var obj02Aabb = await player.Native.ModelTree.getItemShapeInfo(obj02.item);
                 //options.pos = [obj02Aabb.aabb[0][0]-40, obj02Aabb.aabb[0][1]-10, obj02Aabb.aabb[0][2]+115];
                 options.pos = [-215.53692626953125, -9.105635643005371, 38.3607177734375];
                 //options.parentNode=tmp.item;
@@ -324,7 +325,7 @@ export default {
                 MarkerMapFac["FAC"]={};
                 MarkerMapFac["FAC"][markPtr]=options;
                 //获取盘头仓对象
-                var pantou = await player.Native.ModelTree.findItemByName("Object023",0,true,1);
+                //var pantou = await player.Native.ModelTree.findItemByName("Object023",0,true,1);
                 //var imgid = await player.Native.GisMarker.loadImage("rgba:255,0,255,255");
                 var options = {
                             "text": "盘头("+StockTypeUnit['pt']+")\r\r当前库存:-\r统计时间:7点至次日7点\r当日入库:- 出库:-\r当月入库:- 出库:-",
@@ -337,7 +338,7 @@ export default {
                             "nodeOffset":[-154,-130],
                             "userData":"pt|盘头("+StockTypeUnit['pt']+")\r\r当前库存:{curr}\r统计时间:7点至次日7点\r当日入库:{d-in} 出库:{d-out}\r当月入库:{m-in} 出库:{m-out}\r"
                 };
-                var obj02Aabb = await player.Native.ModelTree.getItemShapeInfo(pantou.item);
+                //var obj02Aabb = await player.Native.ModelTree.getItemShapeInfo(pantou.item);
                 options.pos =[78.97850799560547, -7.938839912414551, 31.4000244140625];// [obj02Aabb.aabb[0][0], obj02Aabb.aabb[0][1]-30, obj02Aabb.aabb[0][2]+45];
                 //options.parentNode=tmp.item;
                 options.imgId = imgid
@@ -346,7 +347,7 @@ export default {
                 MarkerMapFac["FAC"][markPtr]=options;
                 //await player.Native.GisMarker.update(markPtr, options);
                 //获取原材料仓对象
-                var pantou = await player.Native.ModelTree.findItemByName("B412",0,true,1);
+                //var pantou = await player.Native.ModelTree.findItemByName("B412",0,true,1);
                 //var imgid = await player.Native.GisMarker.loadImage("rgba:255,0,255,255");
                 var options = {
                             "text": "原材料("+StockTypeUnit['ycl']+")\r\r当前库存:-\r统计时间:7点至次日7点\r当日入库:- 出库:-\r当月入库:- 出库:-\r",
@@ -359,7 +360,7 @@ export default {
                             "nodeOffset":[-154,-130],
                             "userData":"ycl|原材料("+StockTypeUnit['ycl']+")\r\r当前库存:{curr}\r统计时间:7点至次日7点\r当日入库:{d-in} 出库:{d-out}\r当月入库:{m-in} 出库:{m-out}\r"
                 };
-                var obj02Aabb = await player.Native.ModelTree.getItemShapeInfo(pantou.item);
+                //var obj02Aabb = await player.Native.ModelTree.getItemShapeInfo(pantou.item);
                 options.pos = [-92.3292236328125, -83.65309143066406, 44];// [obj02Aabb.aabb[0][0]-50, obj02Aabb.aabb[0][1]-10, obj02Aabb.aabb[0][2]+60];
                 //options.parentNode=tmp.item;
                 options.imgId = imgid

+ 13 - 12
src/pages/components/In02.vue

@@ -48,39 +48,39 @@
             <div class="data_row content" style="display:flex;width:100%;height:calc(134px*var(--hRate));font-weight:normal;font-size: 24px;">
                 <div style="width:15%;">
                     <div class="littleFont">米数</div>
-                    <div class="label">{{ indexjsondata.efficiency.totalLength||'-' }}<span  class="unitname">米</span></div>
+                    <div class="label">{{ ReplaceNull(indexjsondata.efficiency.totalLength,'-') }}<span  class="unitname">米</span></div>
                     <div class="littleFont" style="margin-top: calc(30px*var(--hRate));">重量</div>
-                    <div class="label">{{ indexjsondata.efficiency.totalWeight||'-' }}<span  class="unitname">吨</span></div>
+                    <div class="label">{{ ReplaceNull(indexjsondata.efficiency.totalWeight,'-') }}<span  class="unitname">吨</span></div>
                 </div>
                 <div style="margin: 0 5%; width:1px;border-left:1px solid #168895 ;"></div>
                 <div style="width:11%;height: 100%;">
                     <div class="littleFont">设备<span style="color:#27e6ff">(开机)</span></div>
-                    <div class="label" @click="openStopView" title="查看设备停机状态分析" style="cursor: pointer;text-decoration: underline;">{{ alarmjsondata.device.online||'-' }}<span  class="unitname">台</span></div>
+                    <div class="label" @click="openStopView" title="查看设备停机状态分析" style="cursor: pointer;text-decoration: underline;">{{ ReplaceNull(alarmjsondata.device.online,'-') }}<span  class="unitname">台</span></div>
                     <div class="littleFont" style="margin-top: calc(30px*var(--hRate));">设备<span style="color:#27e6ff">(总数)</span></div>
-                    <div class="label">{{ alarmjsondata.device.total||'-' }}<span  class="unitname">台</span></div>
+                    <div class="label">{{ ReplaceNull(alarmjsondata.device.total,'-') }}<span  class="unitname">台</span></div>
                 </div>
                 <div style="margin: 0 5%; width:1px;border-left:1px solid #168895 ;"></div>
                 <div>
                     <div class="littleFont">落卷停机数</div>
-                    <div class="label">{{ alarmjsondata.device.stop6||'-' }}<span class="unitname">台</span></div>
+                    <div class="label">{{ ReplaceNull(alarmjsondata.device.stop6,'-') }}<span class="unitname">台</span></div>
                     <div class="littleFont" style="margin-top: calc(30px*var(--hRate));">其他停机数</div>
-                    <div class="label">{{ alarmjsondata.device.alarm||'-' }}<span class="unitname">台</span></div>
+                    <div class="label">{{ ReplaceNull(alarmjsondata.device.alarm,'-') }}<span class="unitname">台</span></div>
                 </div>
                 <div style="width:15%;">
                     <div class="littleFont">断纱停机数</div>
-                    <div class="label">{{ alarmjsondata.device.stop2||'-' }}<span class="unitname">台</span></div>
+                    <div class="label">{{ ReplaceNull(alarmjsondata.device.stop2,'-') }}<span class="unitname">台</span></div>
                     <div class="littleFont" style="margin-top: calc(30px*var(--hRate));">盘头小于200圈</div>
-                    <div class="label">{{ alarmjsondata.device.stopPan||'-' }}<span class="unitname">台</span></div>
+                    <div class="label">{{ ReplaceNull(alarmjsondata.device.stopPan,'-') }}<span class="unitname">台</span></div>
                 </div>
                 <div>
                     <div class="littleFont">停经片停机数</div>
-                    <div  class="label">{{ alarmjsondata.device.stop1||'-' }}<span class="unitname">台</span></div>
+                    <div  class="label">{{ ReplaceNull(alarmjsondata.device.stop1,'-') }}<span class="unitname">台</span></div>
                     <div class="littleFont" style="margin-top: calc(30px*var(--hRate));">开机率</div>
-                    <div class="label">{{ indexjsondata.device.runningRatio||'-' }}<span class="unitname">台</span></div>
+                    <div class="label">{{ ReplaceNull(indexjsondata.device.runningRatio,'-') }}<span class="unitname">台</span></div>
                 </div>
                 <div>
                     <div class="littleFont">叫料数</div>
-                    <div class="label">{{ alarmjsondata.device.stop8||'-' }}<span class="unitname">台</span></div>
+                    <div class="label">{{ ReplaceNull(alarmjsondata.device.stop8,'-') }}<span class="unitname">台</span></div>
                 </div>
             </div>
         </div>
@@ -745,6 +745,7 @@ export default {
         }
          //经编 2号楼内部最佳视图
         function backMasterViewBy02() {
+            if(window.CurrentTargetType!='IN02') return;
             if (AutoPlayer.value) {
                 AutoPlayer.value=false;
                 try {
@@ -757,7 +758,7 @@ export default {
             // 使用异步函数
             (async () => {
                 setTimeout(function() {
-                    player.Native.Camera.setAnchorPos([-18.374309539794922, -20.014415740966797, 0]);
+                    if(window.CurrentTargetType=='IN02') player.Native.Camera.setAnchorPos([-18.374309539794922, -20.014415740966797, 0]);
                 }, 3000);
             })();
         }

+ 24 - 23
src/pages/components/In03.vue

@@ -23,15 +23,15 @@
                     <tr style="background-color:transparent">
                         <td style="border:0">
                             <div class="littleFont">产线<span style="color:#27e6ff">(开动)</span></div>
-                            <div style="font-size: 32px;">{{ deviceStatData.status.openProd||'-' }}<span style="font-size: 12px;">条</span></div>
+                            <div style="font-size: 32px;">{{ ReplaceNull(deviceStatData.status.openProd,'-') }}<span style="font-size: 12px;">条</span></div>
                         </td>
                         <td style="border:0;padding-left: 40px;">
                             <div class="littleFont">设备<span style="color:#27e6ff">(开机)</span></div>
-                            <div style="font-size:24px;height: 38px;line-height: 48px;color: #27e6ff;">{{ deviceStatData.status.open||'-' }}<span style="font-size: 12px;"> 台</span></div>
+                            <div style="font-size:24px;height: 38px;line-height: 48px;color: #27e6ff;">{{ ReplaceNull(deviceStatData.status.open,'-') }}<span style="font-size: 12px;"> 台</span></div>
                         </td>
                         <td style="border:0;padding-left: 40px;">
                             <div class="littleFont">设备<span style="color:#27e6ff">(总数)</span></div>
-                            <div style="font-size:24px;height: 38px;line-height: 48px;color: #27e6ff;">{{ deviceStatData.status.total||'-' }}<span style="font-size: 12px;"> 台</span></div>
+                            <div style="font-size:24px;height: 38px;line-height: 48px;color: #27e6ff;">{{ ReplaceNull(deviceStatData.status.total,'-') }}<span style="font-size: 12px;"> 台</span></div>
                         </td>
                     </tr>
                 </tbody>
@@ -44,15 +44,15 @@
                     <tr style="background-color:transparent">
                         <td style="border:0">
                             <div class="littleFont">白坯<span style="color:#27e6ff">(投放量)</span></div>
-                            <div style="font-size: 32px;">{{ deviceStatData.status.baiPei||'-' }}<span style="font-size: 12px;">米</span></div>
+                            <div style="font-size: 32px;">{{ ReplaceNull(deviceStatData.status.baiPei,'-') }}<span style="font-size: 12px;">米</span></div>
                         </td>
                         <td style="border:0;padding-left: 40px;">
                             <div class="littleFont">产量<span style="color:#27e6ff">(米数)</span></div>
-                            <div style="font-size:24px;height: 38px;line-height: 48px;color: #27e6ff;">{{ deviceStatData.status.length||'-' }}<span style="font-size: 12px;"> 米</span></div>
+                            <div style="font-size:24px;height: 38px;line-height: 48px;color: #27e6ff;">{{ ReplaceNull(deviceStatData.status.length,'-') }}<span style="font-size: 12px;"> 米</span></div>
                         </td>
                         <td style="border:0;padding-left: 40px;">
                             <div class="littleFont">产量<span style="color:#27e6ff">(重量)</span></div>
-                            <div style="font-size:24px;height: 38px;line-height: 48px;color: #27e6ff;">{{  deviceStatData.status.weight||'-' }}<span style="font-size: 12px;"> 吨</span></div>
+                            <div style="font-size:24px;height: 38px;line-height: 48px;color: #27e6ff;">{{ReplaceNull(deviceStatData.status.weight,'-') }}<span style="font-size: 12px;"> 吨</span></div>
                         </td>
                     </tr>
                 </tbody>
@@ -64,8 +64,8 @@
                     <div class="title_row" style="font-weight: normal;margin-top: 10px;"><span style="font-size: 48px;letter-spacing: 5px;margin-right: 20%;">{{currentCXNo==0?'全部':currentCXNo+'号'}}</span><span style="color:#fff;line-height: 48px;">产线</span></div>
                     <div style="padding-left: 5px;color: #27e6ff;margin-top: calc(52px*var(--hRate));width: 88%;">
                         <div style="color: #fff;"><span>开机数</span><span style="float: right;">总数</span></div>
-                        <div style="font-size: 22px;margin-top: calc(16px*var(--hRate));"><span>{{ effInfo.open }}<span class="littleFont">台</span></span>
-                            <span style="float: right;">{{ effInfo.total }}<span class="littleFont">台</span></span>
+                        <div style="font-size: 22px;margin-top: calc(16px*var(--hRate));"><span>{{ ReplaceNull(effInfo.open,'-') }}<span class="littleFont">台</span></span>
+                            <span style="float: right;">{{ ReplaceNull(effInfo.total,'-') }}<span class="littleFont">台</span></span>
                         </div>
                         <div style="position: relative;margin-top: calc(16px*var(--hRate));">
                             <div class="abs fac_progress_value" :style="{width:(effInfo.open/effInfo.total*100)+'%'}"></div>
@@ -76,11 +76,11 @@
                 <div style="width: 30%;height: 100%;margin-left: 4%;">
                     <div style="color: #fff;"><span>单位能耗</span></div>
                     <div style="font-size: 22px;margin-top: calc(16px*var(--hRate));;color: red;">
-                        <span>{{ effInfo.energy }}<span class="littleFont">元/米</span></span>
+                        <span>{{ ReplaceNull(effInfo.energy,'-') }}<span class="littleFont">元/米</span></span>
                     </div>
                     <div style="color: #fff;margin-top: calc(26px*var(--hRate));"><span>开机率</span></div>
                     <div style="font-size: 22px;margin-top: calc(16px*var(--hRate));color:#27e6ff ;">
-                        <span>{{ effInfo.ratio }}<span class="littleFont">%</span></span>
+                        <span>{{ ReplaceNull(effInfo.ratio,'-') }}<span class="littleFont">%</span></span>
                     </div>
                 </div>
             </div>
@@ -100,17 +100,17 @@
                             <tbody>
                                 <tr style="font-weight:normal;background-color:transparent;color: #ffffff;font-size: 14px;">
                                     <td style="border:0">A班</td>
-                                    <td style="border:0">{{ effInfo.timeA ||'-' }}</td>
-                                    <td style="border:0">{{ effInfo.lengthA ||'-' }}</td>
-                                    <td style="border:0">{{ effInfo.weightA ||'-' }}</td>
-                                    <td style="border:0">{{ (effInfo.effA*100).toFixed(0) ||'-' }}%</td>
+                                    <td style="border:0">{{ ReplaceNull(effInfo.timeA,'-') }}</td>
+                                    <td style="border:0">{{ ReplaceNull(effInfo.lengthA,'-') }}</td>
+                                    <td style="border:0">{{ ReplaceNull(effInfo.weightA,'-') }}</td>
+                                    <td style="border:0">{{ ReplaceNull((effInfo.effA*100).toFixed(0),'-') }}%</td>
                                 </tr>
                                 <tr style="font-weight:normal;background-color:transparent;color: #ffffff;background-color: #2dbcd436;font-size: 14px;">
                                     <td style="border:0">B班</td>
-                                    <td style="border:0">{{ effInfo.timeB ||'-' }}</td>
-                                    <td style="border:0">{{ effInfo.lengthB ||'-' }}</td>
-                                    <td style="border:0">{{ effInfo.weightB ||'-' }}</td>
-                                    <td style="border:0">{{ (effInfo.effB*100).toFixed(0) ||'-' }}%</td>
+                                    <td style="border:0">{{ ReplaceNull(effInfo.timeB,'-') }}</td>
+                                    <td style="border:0">{{ ReplaceNull(effInfo.lengthB,'-') }}</td>
+                                    <td style="border:0">{{ ReplaceNull(effInfo.weightB,'-') }}</td>
+                                    <td style="border:0">{{ ReplaceNull((effInfo.effB*100).toFixed(0),'-') }}%</td>
                                 </tr>
                             </tbody>
                         </table>
@@ -118,13 +118,13 @@
                             <div style="width: 50%;">
                                 <div style="color: #fff;"><span>米数</span></div>
                                 <div style="font-size: 22px;color:#27e6ff">
-                                    <span>{{ effInfo.length }}<span class="littleFont">米</span></span>
+                                    <span>{{ ReplaceNull(effInfo.length,'-') }}<span class="littleFont">米</span></span>
                                 </div>                            
                             </div>
                             <div style="width: 50%;">
                                 <div style="color: #fff;"><span>重量</span></div>
                                 <div style="font-size: 22px;color:#27e6ff">
-                                    <span>{{ effInfo.weight }}<span class="littleFont">吨</span></span>
+                                    <span>{{ ReplaceNull(effInfo.weight,'-') }}<span class="littleFont">吨</span></span>
                                 </div>                            
                             </div>
                         </div>
@@ -257,8 +257,8 @@ export default {
                     }
                     deviceStatData.value = res.data;
                     effInfo.value = res.data.eff[currentCXNo.value]; //产线信息
-                    LoadSCLine('Length');
-                    LoadUsedLine('price');
+                    LoadSCLine(buttonCode1.value=='' ? 'Length':buttonCode1.value);
+                    LoadUsedLine(buttonCode2.value==''?'price':buttonCode2.value);
                 });
             }
         }
@@ -621,6 +621,7 @@ export default {
         }
         function backMasterViewByFac(){
             if(player==null || player.Native==null) return;
+            if(window.CurrentTargetType!='IN03') return
             if(BODY_H_RATE>0.9){
                 //全屏模式下的视角
                 player.Native.Camera.moveTo([-91.64839019242504, -186.23753805841608, 166.78946395819892], 
@@ -635,7 +636,7 @@ export default {
             // 使用异步函数
             (async () => {
                 setTimeout(function() {
-                    player.Native.Camera.setAnchorPos([-80.69618225097656,21.59876251220703,11.815500259399414]);
+                    if(window.CurrentTargetType=='IN03') player.Native.Camera.setAnchorPos([-80.69618225097656,21.59876251220703,11.815500259399414]);
                 }, 3000);
             })();
         }

+ 13 - 4
src/pages/main/index.vue

@@ -254,10 +254,6 @@ export default {
                         loadFacModel(Native);
                         break;
                 }                
-                setTimeout(function(){
-                    isLoaded.value=true
-                },2000);
-
                 //调整视角,使其达到最佳初始效果
                 backMasterView();
                 //player.Native.Camera.moveToItem(lastPtr,1);
@@ -357,6 +353,17 @@ export default {
             await player.Native.Settings.set('specularIntensity', 'float', 0.64);//初始化高光强度
             await player.Native.Model.setModelVisible(currentTargetType.value,true);
             await player.Native.CameraAnimation.clearKeyFrame();
+            (async()=>{
+                var cf = "data://models/T_02.pr";
+                await PlayerUtils.call(Native.Model.loadModel, 'IN02', cf);
+                modelLoadState['IN02']=true;
+                await player.Native.Model.setModelVisible('IN02',false);
+                var cf = "data://models/T_03.pr";
+                await PlayerUtils.call(Native.Model.loadModel, 'IN03', cf);
+                modelLoadState['IN03']=true;
+                await player.Native.Model.setModelVisible('IN03',false);
+                isLoaded.value=true
+            })()
         }
         //后整
         async function loadIn05Model(Native){
@@ -422,6 +429,7 @@ export default {
             await player.Native.Model.setModelVisible(currentTargetType.value,true);
             player.Native.CameraAnimation.clearKeyFrame();
             in03modelloadstate.value=true;
+            isLoaded.value=true;
         }
         //经编
         async function loadIn02Model(Native){
@@ -443,6 +451,7 @@ export default {
             await player.Native.Model.setModelVisible(currentTargetType.value,true);
             showMarker(currentTargetType.value);
             in02modelloadstate.value=true;
+            isLoaded.value=true;
         }
         async function showMarker(type){
             console.log(type)