inl-ui 0.0.19 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/index.cjs +43 -0
- package/dist/components/index.d.ts +20 -0
- package/dist/components/index.js +38 -0
- package/dist/directives/index.cjs +74 -0
- package/dist/directives/index.d.ts +15 -0
- package/dist/directives/index.js +69 -0
- package/dist/hooks/index.cjs +133 -0
- package/dist/hooks/index.d.ts +50 -0
- package/dist/hooks/index.js +121 -0
- package/dist/iconfont.js +69 -0
- package/dist/index.cjs +435 -0
- package/dist/index.d.ts +177 -0
- package/dist/index.js +203 -1102
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -0
- package/dist/src/api/thingModel.d.ts +1 -0
- package/dist/src/pageComponent/views/systemManager/orgManager/depManager/batchImportModal.d.ts +20 -0
- package/dist/utils/index.cjs +181 -0
- package/dist/utils/index.d.ts +72 -0
- package/dist/utils/index.js +167 -0
- package/package.json +3 -3
- package/src/api/thingModel.ts +14 -1
- package/src/pageComponent/views/systemManager/orgManager/depManager/batchImportModal.tsx +120 -0
- package/src/pageComponent/views/systemManager/orgManager/depManager/employeeTable.tsx +38 -1
- package/src/pageComponent/views/thingModel/index.tsx +52 -12
package/dist/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import inlCard from 'inl-card';
|
|
2
|
+
import { createVNode, computed, defineComponent, Fragment, resolveComponent, ref, watch, onUnmounted, createTextVNode, reactive, watchEffect, isVNode, nextTick, mergeProps, shallowRef, onMounted, inject, provide, getCurrentInstance, onBeforeUnmount, onBeforeUpdate, withDirectives, vShow, resolveDirective, withModifiers, h, unref } from 'vue';
|
|
2
3
|
import axios from 'axios';
|
|
3
|
-
import _, { isPlainObject, omit, cloneDeep, debounce, isEqual, isNil, isEmpty, isObject as isObject$
|
|
4
|
-
import {
|
|
4
|
+
import _, { isPlainObject, omit, cloneDeep, debounce, isEqual, isNil, isEmpty, isObject as isObject$3, intersection } from 'lodash';
|
|
5
|
+
import { message, Alert, Popconfirm, Button, Card, Modal, FormItem, SelectOption, Input, Select, Switch, InputNumber, Form, Row, Col, Table, Timeline, TimelineItem, Tabs, TabPane, RangePicker, Empty, Popover } from 'ant-design-vue';
|
|
5
6
|
import dayjs, { Dayjs } from 'dayjs';
|
|
6
|
-
import { getEngine, Chart } from '@antv/g2';
|
|
7
|
-
import { VideoCameraFilled, FullscreenOutlined, CloseOutlined, PlusOutlined, SearchOutlined, CloudUploadOutlined, CloudDownloadOutlined, PlusCircleOutlined, CopyOutlined, EditOutlined, DeleteOutlined, HolderOutlined, CheckOutlined, CaretUpOutlined, CaretRightOutlined, FullscreenExitOutlined, PlusSquareOutlined, FormOutlined, ArrowUpOutlined, ArrowDownOutlined, RightOutlined, LeftOutlined, PicLeftOutlined, InfoCircleFilled, InboxOutlined, UpOutlined, DownOutlined, FileExcelTwoTone, MinusCircleFilled, PlusCircleFilled, ApartmentOutlined, UserOutlined, MinusSquareOutlined, CaretDownOutlined, RedoOutlined, ExclamationCircleFilled, UploadOutlined, CloseCircleFilled, ExclamationCircleOutlined, MenuUnfoldOutlined, MenuFoldOutlined, BorderOutlined, FontSizeOutlined, BranchesOutlined, createFromIconfontCN } from '@ant-design/icons-vue';
|
|
8
7
|
import { useRouter, useRoute, RouterView } from 'vue-router';
|
|
8
|
+
import { SearchOutlined, PlusOutlined, CloudUploadOutlined, CloudDownloadOutlined, PlusCircleOutlined, CopyOutlined, EditOutlined, DeleteOutlined, HolderOutlined, CloseOutlined, CheckOutlined, FileExcelTwoTone, InboxOutlined, CaretUpOutlined, CaretRightOutlined, FullscreenExitOutlined, FullscreenOutlined, PlusSquareOutlined, FormOutlined, ArrowUpOutlined, ArrowDownOutlined, RightOutlined, LeftOutlined, PicLeftOutlined, InfoCircleFilled, UpOutlined, DownOutlined, MinusCircleFilled, PlusCircleFilled, ApartmentOutlined, UserOutlined, MinusSquareOutlined, CaretDownOutlined, RedoOutlined, ExclamationCircleFilled, UploadOutlined, CloseCircleFilled, ExclamationCircleOutlined, MenuUnfoldOutlined, MenuFoldOutlined, BorderOutlined, FontSizeOutlined, BranchesOutlined, createFromIconfontCN } from '@ant-design/icons-vue';
|
|
9
9
|
import mitt from 'mitt';
|
|
10
10
|
import moment from 'moment';
|
|
11
|
+
import { Chart } from '@antv/g2';
|
|
11
12
|
import { createStore } from 'vuex';
|
|
12
13
|
import useClipboard from 'vue-clipboard3';
|
|
13
14
|
import { tp } from 'vitevuu';
|
|
@@ -17,1082 +18,7 @@ import { ColorPicker } from 'vue-color-kit';
|
|
|
17
18
|
import 'vue-color-kit/dist/vue-color-kit.css';
|
|
18
19
|
import 'inl-card/dist/style.css';
|
|
19
20
|
|
|
20
|
-
var version
|
|
21
|
-
* @Abstract: 摘要
|
|
22
|
-
* @Author: wang liang
|
|
23
|
-
* @Date: 2022-03-25 10:44:08
|
|
24
|
-
* @LastEditors: wang liang
|
|
25
|
-
* @LastEditTime: 2022-04-19 16:10:57
|
|
26
|
-
*/const getInstance$1=opt=>{const prefix=opt.prefix||"/api/";const instance=axios.create({baseURL:prefix+(opt.serverName||""),timeout:1000*(opt.timeout||10),headers:{"X-Custom-Header":"foobar",clientType:"app","Content-Type":"application/json;charset=UTF-8"}});const getToken=()=>{return `${sessionStorage.getItem("token")}`;};const getUser=()=>{const user=sessionStorage.getItem("userinfo");if(user){return JSON.parse(user);}};instance.interceptors.request.use(conf=>{const corpId=sessionStorage.getItem("corpId")||getUser()?.corpId;conf.headers.token=getToken()||"";conf.headers.userId=getUser()?.userId||localStorage.getItem("userId")||"-1";conf.headers.userName=getUser()?.userName;conf.headers.Authorization="Bearer 3ee4085a-544c-4efb-bc54-4f0fad15143c";const{data={}}=conf;if(isPlainObject(data)){// 把undefined转换为null
|
|
27
|
-
for(const key in data){if(data[key]===undefined){data[key]=null;}}// 去掉不需要的属性
|
|
28
|
-
conf.data=omit(data,"createDt","createUser","updateDt","updateUser");}if(corpId){conf.headers.corpId=corpId;}return conf;},err=>{return Promise.reject(err);});instance.interceptors.response.use(res=>{const resData=res.data;const status=resData.code==="M0000"||resData.code==="0"||resData.code==="ok";if(resData.code==="M4003"){message.error("登录已过期,请重新登录");window.location.hash="login";localStorage.clear();sessionStorage.clear();return Promise.reject(resData);}if(status||resData instanceof Blob){return Promise.resolve(resData);}const msg=res.data?.msg??res.data?.message??"请求失败";message.error(msg);return Promise.reject(resData);},err=>{return Promise.reject(err);});return instance;};const instance$1$1=getInstance$1({});// 初始化接口配置
|
|
29
|
-
let instance$B=getInstance$1({serverName:"cardcenter/v1",timeout:30});// 自定义接口配置
|
|
30
|
-
const setInstance$1$1=({serverName="cardcenter/v1",prefix="/api/",timeout=30})=>{instance$B=getInstance$1({prefix,serverName,timeout});};// 调用接口封装方法
|
|
31
|
-
const defaultApi=async(request,cardType)=>{const res=await instance$B.post(`/card/data?cardType=${cardType}`,request);return res;};// 获取排班id
|
|
32
|
-
const getShiftId=async data=>{const res=await instance$B.post(`/card/shiftId`,data);return res;};const timeFormat={minute:{timeType:"MINUTE",format:"YYYYMMDDHHmm"},hour:{timeType:"MINUTE",format:"YYYYMMDDHHmm"},day:{timeType:"HOUR",format:"YYYYMMDDHH"},week:{timeType:"DAY",format:"YYYYMMDD"},month:{timeType:"DAY",format:"YYYYMMDD"},quarter:{timeType:"MONTH",format:"YYYYMM"},year:{timeType:"MONTH",format:"YYYYMM"},shift:{timeType:"SHIFT",format:"YYYYMMDD"}};// 历史值整合接口所需数据格式
|
|
33
|
-
const historyArr=(e,timeType,number=1,isShift=false)=>{let arr=[];if(e&&typeof e==="string"){if(e.indexOf("&")>-1){e.split("&").forEach(n=>{const ns=n.split("?");arr.push({code:ns[0],startTime:Number(dayjs().subtract(number,isShift?"DAY":timeType).format(timeFormat[timeType].format)),endTime:Number(dayjs().format(timeFormat[timeType].format)),timeType:timeFormat[timeType].timeType,shiftId:ns[1]||"0"});});}else {const es=e.split("?");arr.push({code:es[0],startTime:Number(dayjs().subtract(number,isShift?"DAY":timeType).format(timeFormat[timeType].format)),endTime:Number(dayjs().format(timeFormat[timeType].format)),timeType:timeFormat[timeType].timeType,shiftId:es[1]||"0"});}}else {if(e.length>0){e.forEach(item=>{arr.push({code:item.code||item.id||"",startTime:Number(dayjs().subtract(number,isShift?"DAY":timeType).format(timeFormat[timeType].format)),endTime:Number(dayjs().format(timeFormat[timeType].format)),timeType:timeFormat[timeType].timeType,shiftId:item.shiftId||"0"});});}}return arr;};// 瞬时值整合接口所需数据格式
|
|
34
|
-
const currentArr=e=>{let arr=[];if(e&&typeof e==="string"){if(e.indexOf("&")>-1){e.split("&").forEach(n=>{const ns=n.split("?");arr.push({code:ns[0],pointCode:ns[0],datasource:ns[1],valueType:ns[1]});});}else {const es=e.split("?");arr.push({code:es[0],pointCode:es[0],datasource:es[1],valueType:es[1]});}}else {if(e.length>0){e.forEach(item=>{if(item.code.indexOf("&")>-1){item.code.split("&").forEach(val=>{arr.push({code:val,pointCode:val,datasource:item.datasource,valueType:item.valueType});});}else {arr.push({code:item.code||item.id||"",pointCode:item.code||item.id||"",datasource:item.datasource,valueType:item.valueType});}});}}return arr;};// 整合列表icpc
|
|
35
|
-
const listDataFun=(val,info,data=[])=>{let arr=[];if(typeof info==="string"){val.forEach(item=>{arr.push({code:`${info}__${item.code}`,datasource:item.datasource});});}else {val.forEach(item=>{info.forEach(n=>{arr.push({code:n.code.replaceAll("${item.code}",item.code),datasource:item.datasource});});});}arr=[...arr,...data];return arr;};const historyList=historyData=>{let arr=[];for(const key in historyData){arr=[...arr,...(historyData[key]?.map(item=>({...item,type:key}))||[])];}return arr;};const columns$b$1=[{title:"设备",key:"name",dataIndex:"name",align:"center",width:"30%",ellipsis:true},{title:"运行状态",key:"runningState",dataIndex:"runningState",align:"center",width:"21%"},{title:"当前进程",key:"currentProcess",dataIndex:"currentProcess",width:"22%",align:"center"},{title:"当前计时",key:"currentTime",dataIndex:"currentTime",width:"22%",align:"center"}];const info=[{code:"${item.code}__DEVICE_STATE"},{code:"${item.code}__CUR_PROCESS"},{code:"${item.code}__CUR_TIMER"}];const data=[{code:"2nd_flotation_tail_pressure_system__CUR_UNLOAD_COUNT",datasource:"DATAWAREHOURSE"},{code:"2nd_flotation_tail_pressure_system__SLIME",datasource:"DATAWAREHOURSE"}];const formatColor=val=>{switch(val){case"运行":return "#a0c86a";case"暂停":return "#e89e43";case"待机":return "#b9b9b8";case"故障":return "#cb3e3e";default:return "";}};const dataFun=val=>listDataFun(val,info,data);const props$T={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
36
|
-
};var tailCoalFilterPressCard=defineComponent({name:"tailCoalFilterPress",cname:"尾煤压滤",developer:"前端开发组",equipment:"PC",props:props$T,setup(_props,_ctx){// 自定义接口配置
|
|
37
|
-
setInstance$1$1({prefix:_props.prefix,serverName:_props.serverName,timeout:_props.timeout// 超时时长
|
|
38
|
-
});const setNum=ref("");const plantNum=ref("");const list=ref([]);const http=async()=>{const res=await defaultApi({CURRENT_DATA:currentArr(dataFun(list.value)),HISTORY_DATA:[]},"TAIL_COAL_FILTER_PRESS");list.value=list.value.map(item=>({...item,runningState:res.data.current_DATA[`${item.code}__DEVICE_STATE`],currentProcess:res.data.current_DATA[`${item.code}__CUR_PROCESS`],currentTime:res.data.current_DATA[`${item.code}__CUR_TIMER`]}));setNum.value=res.data.current_DATA["2nd_flotation_tail_pressure_system__CUR_UNLOAD_COUNT"];plantNum.value=res.data.current_DATA["2nd_flotation_tail_pressure_system__SLIME"];height.value=document.getElementById("tailCoalFilterPress-list")?.clientHeight||0;};const height=ref(0);onMounted(()=>{for(let index=8053;index<=8060;index++){list.value.push({name:`${index}压滤机`,code:`${index}`,datasource:"DATAWAREHOURSE",runningState:"",currentProcess:"",currentTime:""});}http();});const timer=setInterval(async()=>{await http();},30000);onUnmounted(()=>{clearInterval(timer);});return ()=>createVNode("div",{"class":"defaultCard tailCoalFilterPress"},[createVNode("div",{"class":"tailCoalFilterPress-top"},[createVNode("div",null,[createVNode("span",null,[createTextVNode("\u5F53\u524D\u5378\u6599\u53F0\u6570\uFF1A")]),createVNode("span",{"class":"val"},[setNum.value])]),createVNode("div",null,[createVNode("span",null,[createTextVNode("\u603B\u677F\u6570\uFF1A")]),createVNode("span",{"class":"val"},[plantNum.value])])]),createVNode("div",{"class":"tailCoalFilterPress-list","id":"tailCoalFilterPress-list"},[createVNode("div",{"class":"tailCoalFilterPress-list-table"},[createVNode("div",{"class":"tailCoalFilterPress-list-table-header"},[createVNode("table",null,[createVNode("tr",null,[columns$b$1.map(item=>createVNode("th",null,[item.title]))])])]),createVNode("div",{"class":"tailCoalFilterPress-list-table-body"},[createVNode("table",null,[list.value.map(item=>createVNode("tr",null,[columns$b$1.map(val=>{if(val.key==="runningState"){return createVNode("td",{"style":`color: ${formatColor(item.runningState)}`},[item.runningState]);}if(val.dataIndex==="currentTime"){return createVNode("td",null,[Number(item.runningState)?`${Number(item.runningState).toFixed(0)}s`:"-"]);}return createVNode("td",null,[item[val.dataIndex]]);})]))])])])])]);}});const tabsList$5=[{name:"当天",id:"CURRENT_DAY"},{name:"近七天",id:"SEVEN_DAYS"}];const toChinese=function(val){let chin_list=["一","二","三","四","五","六","七","八","九","十"];//所有的数值对应的汉字
|
|
39
|
-
let sn=parseInt(val);if(sn<10){return chin_list[sn-1];}else if(sn<100){if(sn<20)return "十"+chin_list[sn%10-1];if(sn%10==0)return chin_list[Math.floor(sn/10)-1]+"十";else return chin_list[Math.floor(sn/10)-1]+"十"+chin_list[sn%10-1];}else if(sn===100)return "一百";};const alarmLevel=level=>{const textLevel=val=>{return `${toChinese(val)}级报警`;};switch(level){case 1:return {name:textLevel(1),color:"#EA5858"};case 2:return {name:textLevel(2),color:"#FF9214"};case 3:return {name:textLevel(3),color:"#FFC414"};case 4:return {name:textLevel(4),color:"#3E7EFF"};default:return {name:"-",color:""};}};const props$S={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
40
|
-
};var alarmStatistics=defineComponent({name:"alarmStatistics",cname:"报警统计",developer:"前端开发组",equipment:"PC",props:props$S,setup(_props,_ctx){// 自定义接口配置
|
|
41
|
-
setInstance$1$1({prefix:_props.prefix,serverName:_props.serverName,timeout:_props.timeout// 超时时长
|
|
42
|
-
});const data=reactive({alertLevelStatistic:[],alertList:[]});ref(0);const http=async()=>{const res=await defaultApi({timeType:_props.tabId||"",status:"ALARMING"},"ALERT_COUNT");data.alertLevelStatistic=res.data.alertLevelStatistic||[];data.alertList=res.data.alertList||[];};watch(()=>_props.tabId,e=>{if(e){http();}},{immediate:true});const alarmStatisticsItem=item=>{return createVNode("div",null,[createVNode("div",{"class":"val","style":{color:alarmLevel(item.level).color}},[item.count]),createVNode("div",null,[alarmLevel(item.level).name])]);};const timer=setInterval(()=>{http();},30000);onMounted(()=>{_ctx.emit("getTabs",tabsList$5);});onUnmounted(()=>{clearInterval(timer);});return ()=>createVNode("div",{"class":"defaultCard alarmStatistics"},[createVNode("div",{"class":"alarmStatistics_top"},[data.alertLevelStatistic?.map(item=>createVNode("div",{"class":"alarmStatistics_top_item"},[alarmStatisticsItem(item)]))]),createVNode("div",{"class":"alarmStatistics_list","style":data.alertList?.length===0?"height:100%":""},[data.alertList?.length>0?createVNode(Fragment,null,[data.alertList?.map(item=>createVNode("div",{"class":"alarmStatistics_list_item"},[createVNode("div",{"class":"alarmStatistics_list_item_name","style":{borderColor:alarmLevel(item.level).color}},[createVNode("span",null,[item.name])]),createVNode("div",{"class":"alarmStatistics_list_item_time"},[dayjs(item.lastAlarmTime||item.firstAlarmTime).format("YYYY-MM-DD HH:mm:ss")])]))]):createVNode(resolveComponent("a-empty"),{"image":Empty.PRESENTED_IMAGE_SIMPLE},null)])]);}});const historyDataInfo$1={6021:[{code:"SYS_1F__CONCENTRATION"},{code:"6001__TURBIDNESS"},{code:"6002__TURBIDNESS"},{code:"6005__TURBIDNESS"}],6028:[{code:"SYS_2F__CONCENTRATION"},{code:"6003__TURBIDNESS"},{code:"6004__TURBIDNESS"}]};const tabsList$4=[{name:"6021",id:"6021"},{name:"6028",id:"6028"}];const chartFormat$a=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-4,-2)}:${`${item.time}`.slice(-2)}`,type:item.type,value:item.value?Number(Number(item.value).toFixed(1)):null,v:item.v?Number(Number(item.v).toFixed(1)):null}));};var initChart$c=(id,data,items,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.tooltip(false);chart.scale({time:{sync:true,nice:true},value:{min:0,sync:true,nice:true},v:{min:0,sync:true,nice:true}});chart.axis("v",{line:{style:{lineWidth:1,stroke:"#BFBFBF"// 设置线的颜色
|
|
43
|
-
}},title:{text:"g/l\n\n\n",style:{fill:"#546A91"},position:"end",autoRotate:false,offset:5}});chart.axis("value",{line:{style:{lineWidth:1,stroke:"#BFBFBF"// 设置线的颜色
|
|
44
|
-
}},title:{text:"NTU\n\n\n",style:{fill:"#546A91"},position:"end",autoRotate:false,offset:5}});chart.legend({custom:true,position:"bottom",items});chart.line().position("time*v").color("type",val=>{const item=items.find(n=>n.id===val);return item.marker.style.fill;});chart.line().position("time*value").color("type",val=>{const item=items.find(n=>n.id===val);return item.marker.style.fill;});chart.removeInteraction("legend-filter");chart.render();return chart;};const props$R={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
45
|
-
};var concentrateDosing=defineComponent({name:"concentrateDosing",cname:"浓缩加药",developer:"前端开发组",equipment:"PC",props:props$R,setup(_props,_ctx){let chart=reactive({});// 自定义接口配置
|
|
46
|
-
setInstance$1$1({prefix:_props.prefix,serverName:_props.serverName,timeout:_props.timeout// 超时时长
|
|
47
|
-
});const info=reactive({current_DATA:{},history_DATA:{}});const showChart=ref(true);const http=async()=>{const res=await defaultApi({CURRENT_DATA:currentArr("3001/2__COAL_CAP?THINGMODEL"),HISTORY_DATA:historyArr(historyDataInfo$1[_props.tabId||""]||[],"hour",3)},"CONCENTRATE_DOSING");info.current_DATA=res.data.current_DATA;info.history_DATA=res.data.history_DATA;const height=document.getElementById("concentrateDosing_bottom")?.clientHeight;const infoNew={turbidness:[],concentrations:[]};const items=[];for(const key in info.history_DATA){if(key.indexOf("CONCENTRATION")>-1){infoNew.concentrations=info.history_DATA[key].map(item=>({time:item.time,type:key,v:item.value}));items.push({name:"入料浓度",value:key,id:key,unchecked:false,marker:{style:{symbol:"circle",fill:"#4F7CF7"}}});}else {infoNew.turbidness=[...infoNew.turbidness,...info.history_DATA[key].map(item=>({...item,type:key}))];const itemArr=key.split("__");const color=val=>{switch(val){case"6001":return "#E89E42";case"6003":return "#E89E42";case"6002":return "#7915F5";case"6004":return "#7915F5";case"6005":return "#80B436";default:return "";}};items.push({name:`${itemArr[0]}浊度`,value:key,id:key,unchecked:false,marker:{style:{symbol:"circle",fill:color(itemArr[0])}}});}}const list=[...infoNew.concentrations,...infoNew.turbidness];if(!chart[`chart${_props.tabId}`]||!showChart.value){showChart.value=true;chart[`chart${_props.tabId}`]=null;await nextTick();chart[`chart${_props.tabId}`]=initChart$c(`${_props.tabId||"chart"}${_props.index}`,chartFormat$a(list),items,height);}else {chart[`chart${_props.tabId}`].legend({custom:true,position:"bottom",items:items});chart[`chart${_props.tabId}`].changeData(chartFormat$a(list));}};const getFlocculant=async()=>{const res=await getShiftId({depId:"385429676876763136",time:dayjs().format("YYYY-MM-DD HH:mm:ss")});const resp=await defaultApi({HISTORY_DATA:historyArr(`${_props.tabId}__FLOCCULANT_KG?${res.data}`,"shift",3,true)},"CONCENTRATE_DOSING");info.current_DATA[`${_props.tabId}__FLOCCULANT_KG`]=resp.data.history_DATA[`${_props.tabId}__FLOCCULANT_KG`][resp.data.history_DATA[`${_props.tabId}__FLOCCULANT_KG`].length-1]?.value||"-";};watch(()=>_props.tabId,async e=>{if(e){showChart.value=false;await http();getFlocculant();}},{immediate:true});const timer=setInterval(async()=>{await http();getFlocculant();},30000);onMounted(()=>{_ctx.emit("getTabs",tabsList$4);});onUnmounted(()=>{clearInterval(timer);});return ()=>createVNode("div",{"class":"defaultCard concentrateDosing"},[createVNode("div",{"class":"concentrateDosing_top"},[createVNode("div",{"class":"concentrateDosing_top_property"},[createVNode("div",{"class":"concentrateDosing_top_name"},[createTextVNode("\u73ED\u52A0\u836F\u91CF\uFF1A")]),createVNode("div",{"style":{color:"#80B436",fontWeight:"bold"}},[createVNode("span",{"class":"concentrateDosing_top_val"},[Number(info.current_DATA[`${_props.tabId}__FLOCCULANT_KG`]).toFixed(2)==="NaN"?"-":Number(info.current_DATA[`${_props.tabId}__FLOCCULANT_KG`]).toFixed(2)]),createVNode("span",{"class":"concentrateDosing_top_unit"},[createTextVNode("kg")])])]),createVNode("div",{"class":"concentrateDosing_top_property"},[createVNode("div",{"class":"concentrateDosing_top_name"},[createTextVNode("\u539F\u7164\u5165\u6D17\u91CF\uFF1A")]),createVNode("div",{"style":{color:"#4F7CF7",fontWeight:"bold"}},[createVNode("span",{"class":"concentrateDosing_top_val"},[Number(info.current_DATA["3001/2__COAL_CAP"]).toFixed(1)==="NaN"?"-":Number(info.current_DATA["3001/2__COAL_CAP"]).toFixed(1)]),createVNode("span",{"class":"concentrateDosing_top_unit"},[createTextVNode("t/h")])])])]),createVNode("div",{"class":"concentrateDosing_bottom","id":"concentrateDosing_bottom"},[showChart.value?createVNode("div",{"id":`${_props.tabId||"chart"}${_props.index}`,"style":{height:"100%"}},null):null])]);}});var initChart$b=(id,data,text,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.tooltip(false);chart.scale({time:{range:[0,1]},value:{min:0,nice:true}});chart.axis("value",{line:{style:{lineWidth:1,stroke:"#BFBFBF"// 设置线的颜色
|
|
48
|
-
}},title:{text:text,style:{fill:"#546A91"},position:"end",autoRotate:false,offset:5}});chart.line().position("time*value");chart.point().position("time*value");chart.render();return chart;};const tabsList$3=[{name:"电耗",id:"system_mt__ELECTRIC_PERRAW"},{name:"介耗",id:"system_mt__SHALLOW_MEDIUM_PERRAW"},{name:"水耗",id:"system_mt__WATER_PERRAW"},{name:"风耗",id:"system_mt__BLOWING_RATE_PERRAW"},{name:"浓缩药耗",id:"system_mt__FLOCCULANT_PERRAW"},{name:"浮选药耗",id:"system_mt__FROTHERS_PERRAW&system_mt_COLLECTOR_PERRAW"}];const chartFormat$9=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}`,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};const props$Q={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
49
|
-
};var energyConsumption=defineComponent({name:"energyConsumption",cname:"能源消耗",developer:"前端开发组",equipment:"PC",props:props$Q,setup(_props,_ctx){let chart;// 自定义接口配置
|
|
50
|
-
setInstance$1$1({prefix:_props.prefix,serverName:_props.serverName,timeout:_props.timeout// 超时时长
|
|
51
|
-
});const info=reactive({current_DATA:{},history_DATA:{}});const http=async()=>{const res=await defaultApi({CURRENT_DATA:[],HISTORY_DATA:historyArr(_props.tabId,"week")||[]},"ENERGY_CONSUME");info.current_DATA=res.data.current_DATA;info.history_DATA=res.data.history_DATA;const height=document.getElementById("energyConsumption")?.clientHeight;if(!chart){chart=initChart$b(`${_props.tabId||"chart"}${_props.index}`,chartFormat$9(historyList(info.history_DATA)),text(_props.tabId),height);}else {chart.axis("value",{line:{style:{lineWidth:1,stroke:"#BFBFBF"// 设置线的颜色
|
|
52
|
-
}},title:{text:text(_props.tabId),style:{fill:"#546A91"},position:"end",autoRotate:false,offset:5}});chart.changeData(chartFormat$9(historyList(info.history_DATA)));}};const text=val=>{switch(val){case"system_mt__SHALLOW_MEDIUM_PERRAW":return "kg/t\n\n\n";case"system_mt__ELECTRIC_PERRAW":return "kWh/t\n\n\n";case"system_mt__WATER_PERRAW":return "m³/t\n\n\n";case"system_mt__BLOWING_RATE_PERRAW":return "m³/t\n\n\n";case"system_mt__FLOCCULANT_PERRAW":return "g/t\n\n\n";case"system_mt__FROTHERS_PERRAW&system_mt_COLLECTOR_PERRAW":return "g/t\n\n\n";}};watch(()=>_props.tabId,async e=>{if(e){await http();}},{immediate:true});const timer=setInterval(async()=>{await http();},30000);onMounted(()=>{_ctx.emit("getTabs",tabsList$3);});onUnmounted(()=>{clearInterval(timer);});return ()=>createVNode("div",{"class":"defaultCard energyConsumption","id":"energyConsumption"},[createVNode("div",{"id":`${_props.tabId||"chart"}${_props.index}`,"style":{height:"100%"}},null)]);}});const historyDataInfo=[{code:"DENSITY_SET"},{code:"DENSITY"}];const currentDataInfo=[{name:"设定密度",unit:"g/cm³",color:"#82CC73",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"当前密度",unit:"g/cm³",color:"#587BEF",code:"DENSITY",datasource:"THINGMODEL"}];const tabsList$2=[{name:"主洗一",id:"heavy_medium_cyclone_system1"},{name:"主洗二",id:"heavy_medium_cyclone_system2"},{name:"主洗三",id:"heavy_medium_cyclone_system3"}];const chartFormat$8=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}:00`,type:item.type,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};const color=["#82CC73","#587BEF"];var initChart$a=(id,data,text,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.tooltip(false);chart.legend(false);chart.scale({time:{range:[0,1]},value:{min:0}});chart.area().adjust("stack").position("time*value").color("type",color);chart.line().adjust("stack").position("time*value").color("type",color);chart.render();return chart;};const props$P={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
53
|
-
};var intellectDensityControl=defineComponent({name:"intellectDensityControl",cname:"智能密控",developer:"前端开发组",equipment:"PC",props:props$P,setup(_props,_ctx){let chart;// 自定义接口配置
|
|
54
|
-
setInstance$1$1({prefix:_props.prefix,serverName:_props.serverName,timeout:_props.timeout// 超时时长
|
|
55
|
-
});const info=reactive({current_DATA:{},history_DATA:{}});const getCode=val=>{switch(val){case"heavy_medium_cyclone_system1":return "3104";case"heavy_medium_cyclone_system2":return "3204";case"heavy_medium_cyclone_system3":return "3304";default:return "";}};const http=async()=>{const res=await defaultApi({CURRENT_DATA:currentArr(listDataFun(currentDataInfo,getCode(_props.tabId||""),[{code:`${_props.tabId}__INPUT_COAL`,datasource:"THINGMODEL"}])),HISTORY_DATA:historyArr(listDataFun(historyDataInfo,getCode(_props.tabId||"")),"day")},"INTELLECT_DENSITY_CONTROL");info.current_DATA=res.data.current_DATA;info.history_DATA=res.data.history_DATA;document.getElementById("intellectDensityControl_bottom")?.clientHeight;if(!chart){chart=initChart$a(`${_props.tabId||"chart"}${_props.index}`,chartFormat$8(historyList(info.history_DATA)));}else {chart.changeData(chartFormat$8(historyList(info.history_DATA)));}};watch(()=>_props.tabId,async e=>{if(e){await http();}},{immediate:true});const timer=setInterval(async()=>{await http();},30000);onMounted(()=>{_ctx.emit("getTabs",tabsList$2);});onUnmounted(()=>{clearInterval(timer);});return ()=>createVNode("div",{"class":"defaultCard intellectDensityControl"},[createVNode("div",{"class":"intellectDensityControl_top"},[createVNode("div",{"class":"intellectDensityControl_top_left"},[createVNode("div",{"class":"intellectDensityControl_top_left_name"},[createTextVNode("\u7164\u79CD\uFF1A")]),createVNode("div",null,[createVNode("span",{"class":"intellectDensityControl_top_left_val"},[createTextVNode("\u9ED8\u8BA4\u7164\u79CD")])])]),createVNode("div",{"class":"intellectDensityControl_top_right"},null)]),createVNode("div",{"class":"intellectDensityControl_bottom","id":"intellectDensityControl_bottom"},[createVNode("div",{"class":"intellectDensityControl_bottom_left"},[currentDataInfo.map(item=>createVNode("div",{"class":"intellectDensityControl_bottom_left_item"},[createVNode("div",{"class":"intellectDensityControl_bottom_left_item_name"},[item.name,item.unit]),createVNode("div",null,[createVNode("span",{"class":"intellectDensityControl_bottom_left_item_val","style":{color:item.color}},[Number(info.current_DATA[`${getCode(_props.tabId)}__${item.code}`]).toFixed(3)==="NaN"?"-":Number(info.current_DATA[`${getCode(_props.tabId)}__${item.code}`]).toFixed(3)])])]))]),createVNode("div",{"class":"intellectDensityControl_bottom_right"},[createVNode("div",{"id":`${_props.tabId||"chart"}${_props.index}`,"style":{height:"100%"}},null)])])]);}});const defaultCard=[tailCoalFilterPressCard,alarmStatistics,concentrateDosing,energyConsumption,intellectDensityControl];const valData=[{name:"瞬时量",unit:"t/h",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"日累计",unit:"t/h",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"月累计",unit:"t/h",code:"DENSITY_SET",datasource:"THINGMODEL"}];const stateData$4=[{name:"101A给料机",functionState:{img:"/micro-assets/bigScreen/vibratingCoalFeeder_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/vibratingCoalFeeder_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/vibratingCoalFeeder_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},code:"101A__RUNS&101A__FAULT_ALARM",valueType:"BOOL"},{name:"101B给料机",functionState:{img:"/micro-assets/bigScreen/vibratingCoalFeeder_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/vibratingCoalFeeder_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/vibratingCoalFeeder_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},code:"101B__RUNS&101B__FAULT_ALARM",valueType:"BOOL"},{name:"101C给料机",functionState:{img:"/micro-assets/bigScreen/vibratingCoalFeeder_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/vibratingCoalFeeder_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/vibratingCoalFeeder_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},code:"101C__RUNS&101C__FAULT_ALARM",valueType:"BOOL"}];const statisticsData$4=[{name:"102A皮带",code:"102A__RUNS?BOOL&102A__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},info:{infoList:[{name:"瞬时量",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"班累计",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"日累计",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"月累计",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"}],code:""}},{name:"102B皮带",code:"102B__RUNS?BOOL&102B__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},info:{infoList:[{name:"瞬时量",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"班累计",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"日累计",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"月累计",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"}],code:""}}];const chartFormat$7=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}:00`,type:item.type,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};const stateFilter$5=(val,code)=>{if(code.indexOf("&")>-1){const codes=code.split("&");if(val[codes[1]]){return "faultState";}else {if(val[codes[0]]){return "functionState";}else {return "overhaulState";}}}return "overhaulState";};var valDom=defineComponent({setup(props,ctx){return ()=>createVNode("div",{"class":"oreInflowOfTheWholePlant-top-val"},[valData.map(item=>createVNode("div",{"class":"oreInflowOfTheWholePlant-top-val-item"},[createVNode("div",{"class":"oreInflowOfTheWholePlant-top-val-item-label"},[item.name,createTextVNode("("),item.unit,createTextVNode(")")]),createVNode("div",{"class":"oreInflowOfTheWholePlant-top-val-item-value"},null)]))]);}});var stateDom$1=defineComponent({setup(props,ctx){const info=reactive({currentData:{},historyDATA:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(stateData$4)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"oreInflowOfTheWholePlant-top-state"},[stateData$4.map(item=>createVNode("div",{"class":"oreInflowOfTheWholePlant-top-state-item"},[createVNode("img",{"src":item[stateFilter$5(info.currentData,item.code)].img,"alt":""},null),createVNode("div",{"class":"oreInflowOfTheWholePlant-top-state-item-info"},[createVNode("div",{"class":"oreInflowOfTheWholePlant-top-state-item-info-name"},[item.name]),createVNode("div",{"class":"oreInflowOfTheWholePlant-top-state-item-info-text","style":{color:item[stateFilter$5(info.currentData,item.code)].color,borderColor:item[stateFilter$5(info.currentData,item.code)].color,background:item[stateFilter$5(info.currentData,item.code)].background}},[item[stateFilter$5(info.currentData,item.code)].text])])]))]);}});var initChart$9=(id,data,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.scale({year:{range:[0,1]},value:{min:0,nice:true}});chart.tooltip(false);chart.line().position("year*value");chart.render();return chart;};const props$O={item:{type:Object,default:{}},index:Number};var statisticsDom$5=defineComponent({props:props$O,setup(props,ctx){let chart;const infoState=reactive({currentData:{},historyData:{}});const getState=async()=>{const res=await defaultApi({currentData:currentArr(props.item.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;infoState.currentData=currentData;}};onMounted(async()=>{await getState();const height=document.getElementById(`oreInflowOfTheWholePlant_chart_${props.index}`)?.clientHeight;if(!chart){chart=initChart$9(`oreInflowOfTheWholePlantChart${props.index}`,chartFormat$7(historyList(infoState.historyData)),height);}else {chart.changeData(chartFormat$7(historyList(infoState.historyData)));}});return ()=>createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics"},[createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics-header"},[createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics-header-info"},[createVNode("i",{"class":"rectangle"},null),createVNode("span",{"class":"oreInflowOfTheWholePlant-bottom-statistics-header-info-name"},[props.item.name]),createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics-header-info-text","style":{color:props.item[stateFilter$5(infoState.currentData,props.item.code)].color,borderColor:props.item[stateFilter$5(infoState.currentData,props.item.code)].color,background:props.item[stateFilter$5(infoState.currentData,props.item.code)].background}},[props.item[stateFilter$5(infoState.currentData,props.item.code)].text])])]),createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics-body"},[createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics-body-left"},[props.item.info.infoList.map(item=>createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics-body-left-item"},[createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics-body-left-item-label"},[item.name,createTextVNode("("),item.unit,createTextVNode(")")]),createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics-body-left-item-value"},[createTextVNode("1111")])]))]),createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom-statistics-body-right","id":`oreInflowOfTheWholePlant_chart_${props.index}`},[createVNode("div",{"id":`oreInflowOfTheWholePlantChart${props.index}`},null)])])]);}});// 初始化接口配置
|
|
56
|
-
getInstance$1({serverName:"card/v1",timeout:30});// 自定义接口配置
|
|
57
|
-
const setInstance$f=({serverName="card/v1",prefix="/api/",timeout=30})=>{getInstance$1({prefix,serverName,timeout});};const props$N={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
58
|
-
};var oreInflowOfTheWholePlant=defineComponent({name:"oreInflowOfTheWholePlant",cname:"全厂入矿量",developer:"前端开发组",equipment:"PC",props:props$N,components:{valDom,stateDom:stateDom$1,statisticsDom:statisticsDom$5},setup(props,ctx){// 自定义接口配置
|
|
59
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
60
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard oreInflowOfTheWholePlant"},[createVNode("div",{"class":"oreInflowOfTheWholePlant-top"},[createVNode(valDom,null,null),createVNode(stateDom$1,null,null)]),createVNode("div",{"class":"oreInflowOfTheWholePlant-bottom"},[statisticsData$4.map((item,index)=>createVNode(statisticsDom$5,{"item":item,"index":index},null))])]);}});const statisticsData$3=[{name:"入磨量",code:"",info:{infoList:[{name:"瞬时量",unit:"t/h",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"日累计",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"品味",unit:"%",code:"DENSITY_SET",datasource:"THINGMODEL"}],code:""}},{name:"精矿量",code:"",info:{infoList:[{name:"瞬时量",unit:"t/h",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"日累计",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"品味",unit:"%",code:"DENSITY_SET",datasource:"THINGMODEL"}],code:""}},{name:"尾煤量",code:"",info:{infoList:[{name:"日累计",unit:"t",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"品味",unit:"%",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"产率",unit:"%",code:"DENSITY_SET",datasource:"THINGMODEL"}],code:""}}];const chartFormat$6=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}:00`,type:item.type,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};var initChart$8=(id,data,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.scale({year:{range:[0,1]},value:{min:0,nice:true}});chart.tooltip(false);chart.line().position("year*value");chart.point().position("year*value");chart.render();return chart;};const props$M={item:{type:Object,default:{}},index:Number};var statisticsDom$4=defineComponent({props:props$M,setup(props,ctx){let chart;const info=reactive({current_DATA:{},history_DATA:{}});onMounted(()=>{const height=document.getElementById(`productionOutputOfTheWholePlant_chart_${props.index}`)?.clientHeight;if(!chart){chart=initChart$8(`productionOutputOfTheWholePlantChart${props.index}`,chartFormat$6(historyList(info.history_DATA)),height);}else {chart.changeData(chartFormat$6(historyList(info.history_DATA)));}});return ()=>createVNode("div",{"class":"productionOutputOfTheWholePlant-statistics"},[createVNode("div",{"class":"productionOutputOfTheWholePlant-statistics-header"},[createVNode("div",{"class":"productionOutputOfTheWholePlant-statistics-header-info"},[createVNode("i",{"class":"rectangle"},null),createVNode("span",{"class":"productionOutputOfTheWholePlant-statistics-header-info-name"},[props.item.name])])]),createVNode("div",{"class":"productionOutputOfTheWholePlant-statistics-body"},[createVNode("div",{"class":"productionOutputOfTheWholePlant-statistics-body-left"},[props.item.info.infoList.map(item=>createVNode("div",{"class":"productionOutputOfTheWholePlant-statistics-body-left-item"},[createVNode("div",{"class":"productionOutputOfTheWholePlant-statistics-body-left-item-label"},[item.name,createTextVNode("("),item.unit,createTextVNode(")")]),createVNode("div",{"class":"productionOutputOfTheWholePlant-statistics-body-left-item-value"},[createTextVNode("1111")])]))]),createVNode("div",{"class":"productionOutputOfTheWholePlant-statistics-body-right","id":`productionOutputOfTheWholePlant_chart_${props.index}`},[createVNode("div",{"id":`productionOutputOfTheWholePlantChart${props.index}`},null)])])]);}});const props$L={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
61
|
-
};var productionOutputOfTheWholePlant=defineComponent({name:"productionOutputOfTheWholePlant",cname:"全厂生产产量",developer:"前端开发组",equipment:"PC",props:props$L,components:{statisticsDom:statisticsDom$4},setup(props,ctx){// 自定义接口配置
|
|
62
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
63
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard productionOutputOfTheWholePlant"},[statisticsData$3.map((item,index)=>createVNode(statisticsDom$4,{"item":item,"index":index},null))]);}});const props$K={item:{type:Object,default:{}},index:Number};var progressDom=defineComponent({props:props$K,setup(props,ctx){reactive({current_DATA:{},history_DATA:{}});const width=ref(0);onMounted(()=>{width.value=document.getElementById(`productionQualityOfTheWholePlant_progress_${props.index}`)?.clientWidth||0;});return ()=>createVNode("div",{"class":"productionQualityOfTheWholePlant-bottom-statistics-body-progress","id":`productionQualityOfTheWholePlant_progress_${props.index}`},[createVNode(resolveComponent("a-progress"),{"type":"circle","percent":75,"width":width.value-20,"trailColor":"#101F4E","strokeColor":"#1CEFFF","strokeWidth":3},{format:percent=>createVNode("span",{"style":{color:"#1CEFFF"}},[percent])}),createVNode("div",{"style":{textAlign:"center",marginTop:"5px"}},[props.item.name])]);}});const props$J={item:{type:Object,default:{}},index:Number};var statisticsDom$3=defineComponent({props:props$J,components:{progressDom},setup(props,ctx){reactive({current_DATA:{},history_DATA:{}});onMounted(()=>{});return ()=>createVNode("div",{"class":"productionQualityOfTheWholePlant-bottom-statistics"},[createVNode("div",{"class":"productionQualityOfTheWholePlant-bottom-statistics-header"},[createVNode("div",{"class":"productionQualityOfTheWholePlant-bottom-statistics-header-info"},[createVNode("i",{"class":"rectangle"},null),createVNode("span",{"class":"productionQualityOfTheWholePlant-bottom-statistics-header-info-name"},[props.item.name])])]),createVNode("div",{"class":"productionQualityOfTheWholePlant-bottom-statistics-body"},[props.item.infoList.map((item,index)=>createVNode(progressDom,{"item":item,"index":index},null))])]);}});const topData$3={name:"平均质量分布",code:""};const statisticsData$2=[{name:"A系统",code:"",infoList:[{name:"精矿品位",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"细度",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"水分",code:"DENSITY_SET",datasource:"THINGMODEL"}]},{name:"B系统",code:"",infoList:[{name:"精矿品位",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"细度",code:"DENSITY_SET",datasource:"THINGMODEL"},{name:"水分",code:"DENSITY_SET",datasource:"THINGMODEL"}]}];const chartFormat$5=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}:00`,type:item.type,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};var initChart$7=(id,data,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.scale("score",{min:0,nice:true});chart.coordinate("polar",{radius:0.8});chart.tooltip(false);chart.legend(false);chart.axis("item",{line:null,tickLine:null,grid:{line:{style:{lineDash:null}}}});chart.axis("score",{line:null,tickLine:null,grid:{line:{type:"line",style:{lineDash:null}}}});chart.line().position("item*score");chart.area().position("item*score");chart.render();return chart;};const props$I={item:{type:Object,default:{}}};var topDom$4=defineComponent({props:props$I,setup(props,ctx){let chart;const info=reactive({current_DATA:{},history_DATA:{}});onMounted(()=>{const height=document.getElementById(`productionQualityOfTheWholePlant_chart`)?.clientHeight;if(!chart){chart=initChart$7(`productionQualityOfTheWholePlantChart`,chartFormat$5(historyList(info.history_DATA)),height);}else {chart.changeData(chartFormat$5(historyList(info.history_DATA)));}});return ()=>createVNode("div",{"class":"productionQualityOfTheWholePlant-top-statistics"},[createVNode("div",{"class":"productionQualityOfTheWholePlant-top-statistics-header"},[createVNode("div",{"class":"productionQualityOfTheWholePlant-top-statistics-header-info"},[createVNode("i",{"class":"rectangle"},null),createVNode("span",{"class":"productionQualityOfTheWholePlant-top-statistics-header-info-name"},[props.item.name])])]),createVNode("div",{"class":"productionQualityOfTheWholePlant-top-statistics-body","id":"productionQualityOfTheWholePlant_chart"},[createVNode("div",{"id":"productionQualityOfTheWholePlantChart"},null)])]);}});const props$H={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
64
|
-
};var productionQualityOfTheWholePlant=defineComponent({name:"productionQualityOfTheWholePlant",cname:"全厂生产质量",developer:"前端开发组",equipment:"PC",props:props$H,components:{statisticsDom:statisticsDom$3,topDom:topDom$4},setup(props,ctx){// 自定义接口配置
|
|
65
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
66
|
-
});// const http=async()=>{
|
|
67
|
-
// const res = await
|
|
68
|
-
// }
|
|
69
|
-
return ()=>createVNode("div",{"class":"bigScreenCard productionQualityOfTheWholePlant"},[createVNode("div",{"class":"productionQualityOfTheWholePlant-top"},[createVNode(topDom$4,{"item":topData$3},null)]),createVNode("div",{"class":"productionQualityOfTheWholePlant-bottom"},[statisticsData$2.map((item,index)=>createVNode(statisticsDom$3,{"item":item,"index":index},null))])]);}});const topData$2=[{name:"311A梯度磁选机",code:"311A__RUNS?BOOL&311A__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png"}},{name:"311B梯度磁选机",code:"311B__RUNS?BOOL&311B__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png"}},{name:"312A梯度磁选机",code:"312A__RUNS?BOOL&312A__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png"}},{name:"312B梯度磁选机",code:"312B__RUNS?BOOL&312B__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png"}}];const centerData$1=[{name:"304AB弱磁尾煤池",code:"304AB-1__LEVEL_PROPORTION?FLT",img:"/micro-assets/bigScreen/tailingPit.png"},{name:"308AB弱磁精矿池",code:"308AB-1__LEVEL_PROPORTION?FLT",img:"/micro-assets/bigScreen/tailingPit.png"}];const bottomData$2=[{name1:"305AB",name2:"尾煤泵",code:"305AB__SPEED?FLT&305AB__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"306AB",name2:"尾煤泵",code:"306AB__SPEED?FLT&306AB__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"307AB",name2:"尾煤泵",code:"307AB__SPEED?FLT&307AB__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"309AB",name2:"精矿泵",code:"309AB__SPEED?FLT&309AB__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"310AB",name2:"精矿泵",code:"310AB__SPEED?FLT&310AB__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"}];const stateFilter$4=(val,code)=>{if(code.indexOf("&")>-1){const codes=code.split("&");if(val[codes[1]]){return "faultState";}else {if(val[codes[0]]){return "functionState";}else {return "overhaulState";}}}return "overhaulState";};const props$G={item:{type:Object,default:{}}};var topDom$3=defineComponent({props:props$G,setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"strongMagneticSeparationSystemAB-top-state"},[createVNode("img",{"src":props.item[stateFilter$4(info.currentData,props.item.code)].img,"alt":""},null),createVNode("div",null,[props.item.name])]);}});const props$F$1={item:{type:Object,default:{}}};var weakMagneticSeparationSystemDom=defineComponent({props:props$F$1,setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"weakMagneticSeparationSystem-state"},[createVNode("div",{"class":"weakMagneticSeparationSystem-state-value"},[createTextVNode("\u6DB2\u4F4D"),createVNode("span",null,[info.currentData[props.item.code]||"0"]),createTextVNode("%")]),createVNode("img",{"src":props.item.img,"alt":""},null),createVNode("div",{"class":"weakMagneticSeparationSystem-name"},[props.item.name])]);}});const props$E$1={item:{type:Object}};var pumpValueDom=defineComponent({props:props$E$1,setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item?.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};const pumpValFilter=code=>{for(const key in info.currentData){if(key.indexOf(code)>-1){return info.currentData[key];}}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"pumpValue"},[createVNode("div",{"class":"pumpValue-header"},[createVNode("div",{"class":props.item?"pumpValue-header-name":"","style":props.item&&props.item.img?{background:`url("${props.item.img}") no-repeat`,backgroundSize:"100% 100%"}:{paddingBottom:"0"}},[createVNode("div",null,[props.item?.name1]),createVNode("div",null,[props.item?.name2])])]),props.item?createVNode("div",{"class":"pumpValue-body"},[createVNode("div",null,[createVNode("span",{"class":"pumpValue-body-value"},[pumpValFilter("CURRENT")||0]),createVNode("span",{"class":"pumpValue-body-unit"},[createTextVNode("A")])]),createVNode("div",null,[createVNode("span",{"class":"pumpValue-body-value"},[pumpValFilter("SPEED")||0]),createVNode("span",{"class":"pumpValue-body-unit"},[createTextVNode("HZ")])])]):createVNode("div",{"class":"pumpValue-body"},[createVNode("div",{"class":"pumpValue-body-text"},[createTextVNode("\u7535\u6D41")]),createVNode("div",{"class":"pumpValue-body-text"},[createTextVNode("\u9891\u7387")])])]);}});const props$D$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
70
|
-
};var strongMagneticSeparationSystemAB=defineComponent({name:"strongMagneticSeparationSystemAB",cname:"强磁分选系统AB",developer:"前端开发组",equipment:"PC",props:props$D$1,components:{topDom:topDom$3,weakMagneticSeparationSystemDom,pumpValueDom},setup(props,ctx){// 自定义接口配置
|
|
71
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
72
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard strongMagneticSeparationSystemAB"},[createVNode("div",{"class":"strongMagneticSeparationSystemAB-top"},[topData$2.map(item=>createVNode(topDom$3,{"item":item},null))]),createVNode("div",{"class":"strongMagneticSeparationSystemAB-center"},[centerData$1.map(item=>createVNode(weakMagneticSeparationSystemDom,{"item":item},null))]),createVNode("div",{"class":"strongMagneticSeparationSystemAB-bottom"},[createVNode(pumpValueDom,null,null),bottomData$2.map((item,index)=>createVNode(pumpValueDom,{"item":item},null))])]);}});const topData$1=[{name:"310C梯度磁选机",code:"310C__RUNS?BOOL&310C__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png"}},{name:"310D梯度磁选机",code:"310D__RUNS?BOOL&310D__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png"}},{name:"311C梯度磁选机",code:"311C__RUNS?BOOL&311C__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png"}},{name:"311D梯度磁选机",code:"311D__RUNS?BOOL&311D__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png"}}];const centerData=[{name:"304CD弱磁尾煤池",code:"304CD-1__LEVEL_PROPORTION?FLT",img:"/micro-assets/bigScreen/tailingPit.png"},{name:"307CD弱磁精矿池",code:"307CD-1__LEVEL_PROPORTION?FLT",img:"/micro-assets/bigScreen/tailingPit.png"}];const bottomData$1=[{name1:"305CD",name2:"尾煤泵",code:"305CD__SPEED?FLT&305CD__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"306CD",name2:"尾煤泵",code:"306CD__SPEED?FLT&306CD__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"308CD",name2:"精矿泵",code:"308CD__SPEED?FLT&308CD__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"309CD",name2:"精矿泵",code:"309CD__SPEED?FLT&309CD__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"}];const stateFilter$3=(val,code)=>{if(code.indexOf("&")>-1){const codes=code.split("&");if(val[codes[1]]){return "faultState";}else {if(val[codes[0]]){return "functionState";}else {return "overhaulState";}}}return "overhaulState";};const props$C$1={item:{type:Object,default:{}}};var topDom$2=defineComponent({props:props$C$1,setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"strongMagneticSeparationSystemCD-top-state"},[createVNode("img",{"src":props.item[stateFilter$3(info.currentData,props.item.code)].img,"alt":""},null),createVNode("div",null,[props.item.name])]);}});const props$B$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
73
|
-
};var strongMagneticSeparationSystemCD=defineComponent({name:"strongMagneticSeparationSystemCD",cname:"强磁分选系统CD",developer:"前端开发组",equipment:"PC",props:props$B$1,components:{topDom:topDom$2,weakMagneticSeparationSystemDom,pumpValueDom},setup(props,ctx){// 自定义接口配置
|
|
74
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
75
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard strongMagneticSeparationSystemCD"},[createVNode("div",{"class":"strongMagneticSeparationSystemCD-top"},[topData$1.map(item=>createVNode(topDom$2,{"item":item},null))]),createVNode("div",{"class":"strongMagneticSeparationSystemCD-center"},[centerData.map(item=>createVNode(weakMagneticSeparationSystemDom,{"item":item},null))]),createVNode("div",{"class":"strongMagneticSeparationSystemCD-bottom"},[createVNode(pumpValueDom,null,null),bottomData$1.map((item,index)=>createVNode(pumpValueDom,{"item":item},null))])]);}});const topData=[{name1:"517入料泵",name2:"521压缩机",code:"",functionState:{img:"/micro-assets/bigScreen/feedPump_green.png"},faultState:{img:"/micro-assets/bigScreen/feedPump_red.png"},overhaulState:{img:"/micro-assets/bigScreen/feedPump_grey.png"}},{name1:"518入料泵",name2:"522压缩机",code:"",functionState:{img:"/micro-assets/bigScreen/feedPump_green.png"},faultState:{img:"/micro-assets/bigScreen/feedPump_red.png"},overhaulState:{img:"/micro-assets/bigScreen/feedPump_grey.png"}},{name1:"519入料泵",name2:"523压缩机",code:"",functionState:{img:"/micro-assets/bigScreen/feedPump_green.png"},faultState:{img:"/micro-assets/bigScreen/feedPump_red.png"},overhaulState:{img:"/micro-assets/bigScreen/feedPump_grey.png"}},{name1:"520入料泵",name2:"524压缩机",code:"",functionState:{img:"/micro-assets/bigScreen/feedPump_green.png"},faultState:{img:"/micro-assets/bigScreen/feedPump_red.png"},overhaulState:{img:"/micro-assets/bigScreen/feedPump_grey.png"}}];const bottomData=[{name:"515-1矿浆搅拌槽",code:"515-1__LEVEL_PROPORTION?FLT"},{name:"516-1矿浆搅拌槽",code:"516-1__LEVEL_PROPORTION?FLT"}];const chartFormat$4=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}:00`,type:item.type,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};var initChart$6=(id,data,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.scale({year:{range:[0,1]},value:{min:0,nice:true}});chart.tooltip(false);chart.line().position("year*value");chart.render();return chart;};const props$A$1={item:{type:Object,default:{}},index:Number};var topDom$1=defineComponent({props:props$A$1,setup(props,ctx){let chart;const info=reactive({currentData:{},historyData:{}});onMounted(()=>{const height=document.getElementById(`tailCoalDewateringSystem_chart_${props.index}`)?.clientHeight;if(!chart){chart=initChart$6(`tailCoalDewateringSystemChart${props.index}`,chartFormat$4(historyList(info.history_DATA)),height);}else {chart.changeData(chartFormat$4(historyList(info.history_DATA)));}});return ()=>createVNode("div",{"class":"tailCoalDewateringSystem-top-statistics"},[createVNode("div",{"class":"tailCoalDewateringSystem-top-statistics-left"},[createVNode("div",{"class":"tailCoalDewateringSystem-top-statistics-left-top"},[props.item.name1]),createVNode("div",{"class":"tailCoalDewateringSystem-top-statistics-left-center"},[createVNode("img",{"src":props.item["faultState"].img,"alt":""},null)]),createVNode("div",{"class":"tailCoalDewateringSystem-top-statistics-left-bottom"},[props.item.name2])]),createVNode("div",{"class":"tailCoalDewateringSystem-top-statistics-right"},[createVNode("div",{"class":"tailCoalDewateringSystem-top-statistics-right-top"},[createTextVNode("\u7535\u6D41"),createVNode("span",null,[createTextVNode("65")]),createTextVNode("A")]),createVNode("div",{"class":"tailCoalDewateringSystem-top-statistics-right-center","id":`tailCoalDewateringSystem_chart_${props.index}`},[createVNode("div",{"id":`tailCoalDewateringSystemChart${props.index}`,"style":{width:"100%"}},null)]),createVNode("div",{"class":"tailCoalDewateringSystem-top-statistics-right-bottom"},[createTextVNode("\u677F\u6570"),createVNode("span",null,[createTextVNode("65")])])])]);}});const props$z$1={item:{type:Object}};var grooveDom=defineComponent({props:props$z$1,setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item?.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"groove"},[createVNode("div",{"class":"groove-title"},[props.item?.name]),createVNode("div",{"class":"groove-body"},[createVNode("div",{"class":"groove-body-left"},[createTextVNode("\u6DB2\u4F4D"),createVNode("span",null,[info.currentData[props.item?.code]||0]),createTextVNode("M")]),createVNode("div",{"class":"groove-body-right"},[createVNode("img",{"src":"/micro-assets/bigScreen/tailingPit.png","alt":""},null)])])]);}});const props$y$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
76
|
-
};var tailCoalDewateringSystem=defineComponent({name:"tailCoalDewateringSystem",cname:"尾煤脱水系统",developer:"前端开发组",equipment:"PC",props:props$y$1,components:{topDom:topDom$1,grooveDom},setup(props,ctx){// 自定义接口配置
|
|
77
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
78
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard tailCoalDewateringSystem"},[createVNode("div",{"class":"tailCoalDewateringSystem-top"},[topData.map((item,index)=>createVNode(topDom$1,{"item":item,"index":index},null))]),createVNode("div",{"class":"tailCoalDewateringSystem-bottom"},[bottomData.map((item,index)=>createVNode("div",{"class":"tailCoalDewateringSystem-bottom-item"},[createVNode(grooveDom,{"item":item},null)]))])]);}});const statisticsData$1=[{name:"PM2.5",code:"SY__PM25?FLT",unit:"μm/m³",info:{code:""}},{name:"PM10",code:"SY__PM10?FLT",unit:"μm/m³",info:{code:""}},{name:"TSP",code:"SY__TSP?FLT",unit:"μm/m³",info:{code:""}},{name:"噪声",code:"SY__NOISE?FLT",unit:"dB",info:{code:""}},{name:"湿度",code:"SY__HUMIDITY?FLT",unit:"%",info:{code:""}},{name:"温度",code:"SY__TEMP?FLT",unit:"℃",info:{code:""}}];const chartFormat$3=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}:00`,type:item.type,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};var initChart$5=(id,data,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.scale({year:{range:[0,1]},value:{min:0,nice:true}});chart.tooltip(false);chart.line().position("year*value");chart.render();return chart;};const props$x$1={item:{type:Object,default:{}},index:Number};var statisticsDom$2=defineComponent({props:props$x$1,setup(props,ctx){let chart;const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item.code),historyData:{DAY:{pointInfos:currentArr(props.item.code)}}},"POINT_DATA");if(res.data){const{currentData,historyData}=res.data;info.currentData=currentData;info.historyData=historyData.DAY;}};onMounted(async()=>{const height=document.getElementById(`environmentalMonitoring_chart_${props.index}`)?.clientHeight;await http();if(!chart){chart=initChart$5(`environmentalMonitoringChart${props.index}`,chartFormat$3(historyList(info.historyData)),height);}else {chart.changeData(chartFormat$3(historyList(info.historyData)));}});return ()=>createVNode("div",{"class":"environmentalMonitoring-statistics"},[createVNode("div",{"class":"environmentalMonitoring-statistics-header"},[createVNode("div",{"class":"environmentalMonitoring-statistics-header-info"},[createVNode("i",{"class":"rectangle"},null),createVNode("span",{"class":"environmentalMonitoring-statistics-header-info-name"},[props.item.name,createTextVNode("("),props.item.unit,createTextVNode(")")]),createVNode("div",{"class":"environmentalMonitoring-statistics-header-info-text"},[info.currentData[props.item.code]||0])])]),createVNode("div",{"class":"environmentalMonitoring-statistics-body","id":`environmentalMonitoring_chart_${props.index}`},[createVNode("div",{"id":`environmentalMonitoringChart${props.index}`},null)])]);}});const props$w$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
79
|
-
};var environmentalMonitoring=defineComponent({name:"environmentalMonitoring",cname:"环境监测",developer:"前端开发组",equipment:"PC",props:props$w$1,components:{statisticsDom:statisticsDom$2},setup(props,ctx){// 自定义接口配置
|
|
80
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
81
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard environmentalMonitoring"},[statisticsData$1.map((item,index)=>createVNode(statisticsDom$2,{"item":item,"index":index},null))]);}});const props$v$1={item:{type:Object,default:[]}};var stateTitleDom=defineComponent({props:props$v$1,setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const infoElectric=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};const getElectric=async()=>{const res=await defaultApi({currentData:currentArr(props.item.electric.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;infoElectric.currentData=currentData;}};const stateFilter=(val,code)=>{if(code.indexOf("&")>-1){const codes=code.split("&");if(val[codes[1]]){return "faultState";}else {if(val[codes[0]]){return "functionState";}else {return "overhaulState";}}}return "overhaulState";};onMounted(async()=>{http();if(props.item.electric){getElectric();}});return ()=>createVNode("div",{"class":"stateBox"},[createVNode("div",{"class":"stateTitle"},[createVNode("span",{"class":"spotBox","style":{background:props.item[stateFilter(info.currentData,props.item.code)].color}},[createVNode("i",{"class":"spot","style":{background:props.item[stateFilter(info.currentData,props.item.code)].color}},null)]),createVNode("span",null,[props.item.name])]),props.item.electric?createVNode("div",{"class":"electricValue"},[createTextVNode("\u7535\u6D41"),createVNode("span",null,[infoElectric.currentData[props.item.electric.code]||0]),createTextVNode("A")]):null]);}});const stateData$3=[{name:"301A磁选机",code:"301A__RUNS?BOOL&301A__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},nameList:[{name:"302A圆筒筛",code:"302A__RUNS?BOOL&302A__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}}]},{name:"301B磁选机",code:"301B__RUNS?BOOL&301B__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},nameList:[{name:"302B圆筒筛",code:"302B__RUNS?BOOL&302B__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}}]},{name:"301C磁选机",code:"301C__RUNS?BOOL&301C__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/cleanCoalMagneticSeparator_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},nameList:[{name:"302C圆筒筛",code:"302C__RUNS?BOOL&302C__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}},{name:"303C圆筒筛",code:"303C__RUNS?BOOL&303C__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}}]}];const stateFilter$2=(val,code)=>{if(code.indexOf("&")>-1){const codes=code.split("&");if(val[codes[1]]){return "faultState";}else {if(val[codes[0]]){return "functionState";}else {return "overhaulState";}}}return "overhaulState";};const props$u$1={item:{type:Object,default:{}}};var stateDom=defineComponent({props:props$u$1,components:{stateTitleDom},setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"auxiliarySystem-state"},[createVNode("div",{"class":"auxiliarySystem-state-name"},[props.item.name]),createVNode("img",{"src":props.item[stateFilter$2(info.currentData,props.item.code)].img,"alt":""},null),createVNode("div",{"class":"auxiliarySystem-state-stateInfo","style":{color:props.item[stateFilter$2(info.currentData,props.item.code)].color,borderColor:props.item[stateFilter$2(info.currentData,props.item.code)].color,background:props.item[stateFilter$2(info.currentData,props.item.code)].background}},[props.item[stateFilter$2(info.currentData,props.item.code)].text]),props.item.nameList.map(item=>createVNode(stateTitleDom,{"item":item},null))]);}});const props$t$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
82
|
-
};var auxiliarySystem=defineComponent({name:"auxiliarySystem",cname:"弱磁分选系统",developer:"前端开发组",equipment:"PC",props:props$t$1,components:{stateDom},setup(props,ctx){// 自定义接口配置
|
|
83
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
84
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard auxiliarySystem"},[stateData$3.map(item=>createVNode(stateDom,{"item":item},null))]);}});const stateData$2=[{name:"601强磁精矿池",code:"",img:"/micro-assets/bigScreen/tailingPit.png"},{name:"605强磁精矿池",code:"",img:"/micro-assets/bigScreen/tailingPit.png"},{name:"613强磁精矿池",code:"",img:"/micro-assets/bigScreen/tailingPit.png"},{name:"615强磁精矿池",code:"",img:"/micro-assets/bigScreen/tailingPit.png"}];const props$s$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
85
|
-
};var weakMagneticSeparationSystem=defineComponent({name:"weakMagneticSeparationSystem",cname:"辅助系统",developer:"前端开发组",equipment:"PC",props:props$s$1,components:{weakMagneticSeparationSystemDom},setup(props,ctx){// 自定义接口配置
|
|
86
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
87
|
-
});return ()=>createVNode("div",{"class":"weakMagneticSeparationSystem"},[stateData$2.map(item=>createVNode(weakMagneticSeparationSystemDom,{"item":item},null))]);}});const props$r$1={item:{type:Object,default:{}}};var topDom=defineComponent({props:props$r$1,components:{stateTitleDom,weakMagneticSeparationSystemDom},setup(props,ctx){return ()=>createVNode("div",{"class":"tailingsClassificationSystem-top-item"},[createVNode(weakMagneticSeparationSystemDom,{"item":props.item},null),createVNode("div",null,[props.item.pumpList.map(item=>createVNode(stateTitleDom,{"item":item},null))])]);}});const stateData$1=[{name:"501-1强磁尾煤池",code:"501-1__LEVEL_PROPORTION?FLT",img:"/micro-assets/bigScreen/tailingPit.png",pumpList:[{name:"502尾煤泵",code:"502__RUNS?BOOL&502__FAULT_ALARM?BOOL",electric:{code:"502__CURRENT?FLT"},functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}},{name:"503尾煤泵",code:"503__RUNS?BOOL&503__FAULT_ALARM?BOOL",electric:{code:"503__CURRENT?FLT"},functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}}]},{name:"504-1尾煤浓缩入料池",code:"504-1__LEVEL_PROPORTION?FLT",img:"/micro-assets/bigScreen/tailingPit.png",pumpList:[{name:"505分级入料泵",code:"505__RUNS?BOOL&505__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}},{name:"506分级入料泵",code:"506__RUNS?BOOL&506__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}}]},{name:"509-1尾煤浓缩入料箱",code:"509-1__LEVEL_PROPORTION?FLT",img:"/micro-assets/bigScreen/tailingPit.png",pumpList:[{name:"510深锥入料泵",code:"510__RUNS?BOOL&510__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}},{name:"511深锥入料泵",code:"511__RUNS?BOOL&511__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}}]}];const deepConeThickener={name:"512深锥浓缩机",code:"512__RUNS?BOOL&512__FAULT_ALARM?BOOL",functionState:{img:"/micro-assets/bigScreen/thickener_green.png",color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/thickener_red.png",color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/thickener_grey.png",color:"#9095A2",background:"rgba(144,149,162,0.2)"},pumpList:[{name:"513深锥入料泵",code:"513__RUNS?BOOL&513__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}},{name:"514深锥入料泵",code:"514__RUNS?BOOL&514__FAULT_ALARM?BOOL",functionState:{color:"#22CC83",background:"rgba(34,204,131,0.2)"},faultState:{color:"#EA5858",background:"rgba(234,88,88,0.2)"},overhaulState:{color:"#9095A2",background:"rgba(144,149,162,0.2)"}}]};const pressureChart=[{name:"旋转压力",unit:"KPa",code:"",valueType:"FLT"},{name:"提耙压力",unit:"KPa",code:"",valueType:"FLT"}];const chartFormat$2=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}:00`,type:item.type,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};const stateFilter$1=(val,code)=>{if(code.indexOf("&")>-1){const codes=code.split("&");if(val[codes[1]]){return "faultState";}else {if(val[codes[0]]){return "functionState";}else {return "overhaulState";}}}return "overhaulState";};const props$q$1={item:Object,default:{}};var deepConeThickenerDom=defineComponent({props:props$q$1,components:{stateTitleDom},setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(deepConeThickener.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"tailingsClassificationSystem-bottom-deepConeThickener"},[createVNode("div",null,[deepConeThickener.name]),createVNode("img",{"src":deepConeThickener[stateFilter$1(info.currentData,deepConeThickener.code)].img,"alt":""},null),deepConeThickener.pumpList.map(item=>createVNode(stateTitleDom,{"item":item},null))]);}});var initChart$4=(id,data,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.scale({year:{range:[0,1]},value:{min:0,nice:true}});chart.tooltip(false);chart.area().position("year*value");chart.line().position("year*value");chart.render();return chart;};var electricDom=defineComponent({setup(props,ctx){let chart;const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(""),historyData:{DAY:{pointInfos:currentArr("")}}},"POINT_DATA");if(res.data){const{currentData,historyData}=res.data;info.currentData=currentData;info.historyData=historyData.DAY;}};onMounted(async()=>{const height=document.getElementById(`tailingsClassificationSystemElectric_chart`)?.clientHeight;await http();if(!chart){chart=initChart$4(`tailingsClassificationSystemElectricChart`,chartFormat$2(historyList(info.historyData)),height);}else {chart.changeData(chartFormat$2(historyList(info.historyData)));}});return ()=>createVNode("div",{"class":"tailingsClassificationSystem-bottom-electric"},[createVNode("div",{"class":"tailingsClassificationSystem-bottom-electric-top"},[createTextVNode("\u7535\u6D41(A) "),createVNode("span",null,[createTextVNode("50")])]),createVNode("div",{"class":"tailingsClassificationSystem-bottom-electric-bottom","id":"tailingsClassificationSystemElectric_chart"},[createVNode("div",{"id":"tailingsClassificationSystemElectricChart"},null)])]);}});var initChart$3=(id,data,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.scale("year",{type:"linear",tickInterval:50});chart.scale("value",{nice:true});chart.tooltip(false);chart.area().adjust("stack").position("year*value").color("country");chart.line().adjust("stack").position("year*value").color("country");chart.render();return chart;};var pressureDom=defineComponent({setup(props,ctx){let chart;const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(pressureChart),historyData:{DAY:{pointInfos:currentArr(pressureChart)}}},"POINT_DATA");if(res.data){const{currentData,historyData}=res.data;info.currentData=currentData;info.historyData=historyData.DAY;}};onMounted(async()=>{const height=document.getElementById(`tailingsClassificationSystemPressure_chart`)?.clientHeight;await http();if(!chart){chart=initChart$3(`tailingsClassificationSystemPressureChart`,chartFormat$2(historyList(info.historyData)),height);}else {chart.changeData(chartFormat$2(historyList(info.historyData)));}});return ()=>createVNode("div",{"class":"tailingsClassificationSystem-bottom-pressure"},[createVNode("div",{"class":"tailingsClassificationSystem-bottom-pressure-top"},[pressureChart.map(item=>createVNode("div",{"class":"tailingsClassificationSystem-bottom-pressure-top-item"},[item.name,createTextVNode("("),item.unit,createTextVNode(") "),createVNode("span",null,[createTextVNode("50")])]))]),createVNode("div",{"class":"tailingsClassificationSystem-bottom-pressure-bottom","id":"tailingsClassificationSystemPressure_chart"},[createVNode("div",{"id":"tailingsClassificationSystemPressureChart"},null)])]);}});var bottomDom=defineComponent({components:{deepConeThickenerDom,electricDom,pressureDom},setup(props,ctx){return ()=>createVNode("div",{"class":"tailingsClassificationSystem-bottom"},[createVNode(deepConeThickenerDom,null,null),createVNode(electricDom,null,null),createVNode(pressureDom,null,null)]);}});const props$p$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
88
|
-
};var tailingsClassificationSystem=defineComponent({name:"tailingsClassificationSystem",cname:"尾煤分级系统",developer:"前端开发组",equipment:"PC",props:props$p$1,components:{topDom,bottomDom},setup(props,ctx){// 自定义接口配置
|
|
89
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
90
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard tailingsClassificationSystem"},[createVNode("div",{"class":"tailingsClassificationSystem-top"},[stateData$1.map(item=>createVNode(topDom,{"item":item},null))]),createVNode(bottomDom,null,null)]);}});const props$o$1={item:{type:Object,default:{}},index:Number};var grindingSystemInfoItemDom=defineComponent({props:props$o$1,setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item?.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"grindingSystem-top-item-statistics-body-right-item"},[createVNode("div",{"class":"grindingSystem-top-item-statistics-body-right-item-label"},[props.item.label]),createVNode("div",{"style":{display:"flex",alignItems:"flex-end",flex:"1"}},[createVNode("div",{"class":"grindingSystem-top-item-statistics-body-right-item-value"},[info.currentData[props.item?.code]||0]),createVNode("div",{"class":"grindingSystem-top-item-statistics-body-right-item-unit"},[props.item.unit])])]);}});var initChart$2=(id,data,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.scale({year:{range:[0,1]},value:{min:0,nice:true}});chart.tooltip(false);chart.line().position("year*value");chart.render();return chart;};const stateData=[[{name:"201A球磨机",code:"",label:"瞬时入磨量",unit:"t/hs",functionState:{img:"/micro-assets/bigScreen/ballMill_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/ballMill_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/ballMill_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},state:{code:"201A__RUNS?BOOL"},infoList:[{code:"201A__TIME_RUNS",valueType:"FLT",label:"运行时长",unit:"h"},{code:"201A__CURRENT_A",valueType:"FLT",label:"A组电流",unit:"A"},{code:"201A__ELECTRIC",valueType:"FLT",label:"耗电量",unit:"kw.h"},{code:"201A__CURRENT_C",valueType:"FLT",label:"C组电流",unit:"A"},{code:"201A__VOLTAGE?",valueType:"FLT",label:"控制电压",unit:"V"},{code:"",valueType:"FLT",label:"电网电压",unit:"V"}]},{name:"205A旋流器",code:"205A__PRESS?FLT",label:"入口压力",unit:"MPa",functionState:{img:"/micro-assets/bigScreen/cycloneGroup_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/cycloneGroup_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/cycloneGroup_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},state:{code:""},chart:{code:""}}],[{name:"201B球磨机",code:"",label:"",unit:"",functionState:{img:"/micro-assets/bigScreen/ballMill_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/ballMill_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/ballMill_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},state:{code:"201B__RUNS?BOOL"},infoList:[{code:"201B__TIME_RUNS",valueType:"FLT",label:"运行时长",unit:"h"},{code:"201B__CURRENT_A",valueType:"FLT",label:"A组电流",unit:"A"},{code:"201B__ELECTRIC",valueType:"FLT",label:"耗电量",unit:"kw.h"},{code:"201B__CURRENT_C",valueType:"FLT",label:"C组电流",unit:"A"},{code:"201B__VOLTAGE?",valueType:"FLT",label:"控制电压",unit:"V"},{code:"",valueType:"FLT",label:"电网电压",unit:"V"}]},{name:"205B旋流器",code:"205B__PRESS?FLT",label:"入口压力",unit:"MPa",functionState:{img:"/micro-assets/bigScreen/cycloneGroup_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/cycloneGroup_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/cycloneGroup_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},state:{code:""},chart:{code:""}}],[{name:"201C球磨机",code:"",label:"瞬时入磨量",unit:"t/hs",functionState:{img:"/micro-assets/bigScreen/ballMill_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/ballMill_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/ballMill_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},state:{code:"201C__RUNS?BOOL"},infoList:[{code:"201C__TIME_RUNS",valueType:"FLT",label:"运行时长",unit:"h"},{code:"201C__CURRENT_A",valueType:"FLT",label:"A组电流",unit:"A"},{code:"201C__ELECTRIC",valueType:"FLT",label:"耗电量",unit:"kw.h"},{code:"201C__CURRENT_C",valueType:"FLT",label:"C组电流",unit:"A"},{code:"201C__VOLTAGE?",valueType:"FLT",label:"控制电压",unit:"V"},{code:"",valueType:"FLT",label:"电网电压",unit:"V"}]},{name:"205C旋流器",code:"205C__PRESS?FLT",label:"入口压力",unit:"MPa",functionState:{img:"/micro-assets/bigScreen/cycloneGroup_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/cycloneGroup_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/cycloneGroup_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},state:{code:""},chart:{code:""}}]];const chartFormat$1=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}:00`,type:item.type,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};const props$n$1={item:{type:Object,default:{}},index:String};var grindingSystemItemDom=defineComponent({props:props$n$1,components:{grindingSystemInfoItemDom},setup(props,ctx){let chart;const info=reactive({currentData:{},historyData:{}});const infoState=reactive({currentData:{},historyData:{}});const getValue=async()=>{const res=await defaultApi({currentData:currentArr(props.item?.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};const getState=async()=>{const res=await defaultApi({currentData:currentArr((props.item?.state).code)},"POINT_DATA");const{currentData}=res.data;infoState.currentData=currentData;};onMounted(async()=>{await getValue();await getState();if(props.item.chart){const height=document.getElementById(`grindingSystem_chart_${props.index}`)?.clientHeight;if(!chart){chart=initChart$2(`grindingSystemChart${props.index}`,chartFormat$1(historyList(info.history_DATA)),height);}else {chart.changeData(chartFormat$1(historyList(info.history_DATA)));}}});return ()=>createVNode("div",{"class":"grindingSystem-top-item-statistics"},[createVNode("div",{"class":"grindingSystem-top-item-statistics-header"},[createVNode("div",{"class":"grindingSystem-top-item-statistics-header-left"},[createVNode("i",{"class":"rectangle"},null),createVNode("span",{"class":"grindingSystem-top-item-statistics-header-left-label"},[props.item.name])]),props.item.label?createVNode("div",{"class":"grindingSystem-top-item-statistics-header-right"},[createVNode("span",{"class":"grindingSystem-top-item-statistics-header-right-label","style":{color:props.item.chart?"#31DBFF":"#389AFF"}},[props.item.label,props.item.unit]),createVNode("span",{"class":"grindingSystem-top-item-statistics-header-right-value","style":{color:props.item.chart?"#31DBFF":"#389AFF",textShadow:`0px 0px 13px ${props.item.chart?"#31DBFF":"#389AFF"}`}},[createTextVNode("1234")])]):null]),createVNode("div",{"class":"grindingSystem-top-item-statistics-body","id":`grindingSystem_chart_${props.index}`},[createVNode("div",{"class":"grindingSystem-top-item-statistics-body-left"},[createVNode("img",{"src":props.item.faultState.img,"alt":""},null),createVNode("div",null,[createVNode("span",{"class":"grindingSystem-top-item-statistics-body-left-text","style":{color:props.item.faultState.color,borderColor:props.item.faultState.color,background:props.item.faultState.background}},[props.item.faultState.text])])]),createVNode("div",{"class":["grindingSystem-top-item-statistics-body-right",props.item.chart?"":"flexWrap"]},[props.item.infoList?props.item.infoList.map(val=>createVNode(grindingSystemInfoItemDom,{"item":val},null)):createVNode("div",{"id":`grindingSystemChart${props.index}`},null)])])]);}});const props$m$1={item:{type:Array,default:[]},index:String};var statisticsDom$1=defineComponent({props:props$m$1,components:{grindingSystemItemDom},setup(props,ctx){return ()=>createVNode("div",{"class":"grindingSystem-top-item"},[props.item.map((item,index)=>createVNode(grindingSystemItemDom,{"item":item,"index":`${props.index}${index}`},null))]);}});const props$l$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
91
|
-
};var grindingSystem=defineComponent({name:"grindingSystem",cname:"磨矿系统",developer:"前端开发组",equipment:"PC",props:props$l$1,components:{statisticsDom:statisticsDom$1},setup(props,ctx){// 自定义接口配置
|
|
92
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
93
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard grindingSystem"},[createVNode("div",{"class":"grindingSystem-top"},[stateData.map((item,index)=>createVNode(statisticsDom$1,{"item":item,"index":`${index}`},null))])]);}});const numericalValueData=[{name:"精矿瞬时量",unit:"t/h",code:""},{name:"班累计",unit:"t",code:""},{name:"日累计",unit:"t",code:""},{name:"月累计",unit:"t",code:""}];const statisticsData=[{name:"411过滤机",code:"",functionState:{img:"/micro-assets/bigScreen/filter_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/filter_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/filter_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},mainMotor:{code:""},mixingMotor:{code:""}},{name:"412过滤机",code:"",functionState:{img:"/micro-assets/bigScreen/filter_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/filter_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/filter_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},mainMotor:{code:""},mixingMotor:{code:""}},{name:"413过滤机",code:"",functionState:{img:"/micro-assets/bigScreen/filter_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/filter_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/filter_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},mainMotor:{code:""},mixingMotor:{code:""}},{name:"414过滤机",code:"",functionState:{img:"/micro-assets/bigScreen/filter_green.png",color:"#22CC83",text:"运行良好",background:"rgba(34,204,131,0.2)"},faultState:{img:"/micro-assets/bigScreen/filter_red.png",color:"#EA5858",text:"故障停机",background:"rgba(234,88,88,0.2)"},overhaulState:{img:"/micro-assets/bigScreen/filter_grey.png",color:"#9095A2",text:"停机检修",background:"rgba(144,149,162,0.2)"},mainMotor:{code:""},mixingMotor:{code:""}}];const pumpValueData=[{name1:"305CD",name2:"尾煤泵",code:"305CD__SPEED?FLT&305CD__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"306CD",name2:"尾煤泵",code:"306CD__SPEED?FLT&306CD__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"308CD",name2:"精矿泵",code:"308CD__SPEED?FLT&308CD__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"},{name1:"309CD",name2:"精矿泵",code:"309CD__SPEED?FLT&309CD__CURRENT?FLT",img:"/micro-assets/bigScreen/base.png"}];const bottomLeftData=[{name1:"",name2:"402精矿泵",code:"305CD__SPEED?FLT&305CD__CURRENT?FLT"},{name1:"",name2:"403精矿泵",code:"306CD__SPEED?FLT&306CD__CURRENT?FLT"}];const grooveData={name:"515-1矿浆搅拌槽",code:"515-1__LEVEL_PROPORTION?FLT"};const chartFormat=data=>{return data.map(item=>({time:`${`${item.time}`.slice(-2)}:00`,type:item.type,value:Number(item.value.toString().match(/^\d+(?:\.\d{0,2})?/))}));};const stateFilter=(val,code)=>{if(code.indexOf("&")>-1){const codes=code.split("&");if(val[codes[1]]){return "faultState";}else {if(val[codes[0]]){return "functionState";}else {return "overhaulState";}}}return "overhaulState";};const props$k$1={item:{type:Object,default:{}}};var numericalValueDom=defineComponent({props:props$k$1,components:{stateTitleDom},setup(props,ctx){const info=reactive({currentData:{},historyData:{}});const http=async()=>{const res=await defaultApi({currentData:currentArr(props.item.code)},"POINT_DATA");if(res.data){const{currentData}=res.data;info.currentData=currentData;}};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"concentrateDewateringSystem-numericalValue"},[numericalValueData.map(item=>createVNode("div",{"class":"concentrateDewateringSystem-numericalValue-item"},[createVNode("div",{"class":"concentrateDewateringSystem-numericalValue-item-label"},[item.name,createTextVNode("("),item.unit,createTextVNode(")")]),createVNode("div",{"class":"concentrateDewateringSystem-numericalValue-item-value"},[createTextVNode("1234")])]))]);}});var chartInit=(id,data,color,height=100)=>{const chart=new Chart({container:id,autoFit:true,height:height});chart.data(data);chart.scale({year:{range:[0,1]},value:{min:0,nice:true}});chart.tooltip(false);chart.area().position("year*value").color(color);chart.line().position("year*value").color(color);chart.render();return chart;};const props$j$1={item:{type:Object,default:{}},index:String};var statisticsDom=defineComponent({props:props$j$1,setup(props,ctx){let mainMotorChart;let mixingMotorChart;const info=reactive({currentData:{},historyData:{}});const mainMotorInfo=reactive({currentData:{},historyData:{}});const mixingMotorInfo=reactive({currentData:{},historyData:{}});onMounted(()=>{const height=document.getElementById(`concentrateDewateringSystem_chart_${props.index}`)?.clientHeight;if(!mainMotorChart){mainMotorChart=chartInit(`concentrateDewateringSystemMainMotorChart${props.index}`,chartFormat(historyList(mainMotorInfo.historyData)),"#dbe0ea",height);}else {mainMotorChart.changeData(chartFormat(historyList(mainMotorInfo.historyData)));}if(!mixingMotorChart){mixingMotorChart=chartInit(`concentrateDewateringSystemMixingMotorChart${props.index}`,chartFormat(historyList(mixingMotorInfo.historyData)),"#31dbff",height);}else {mixingMotorChart.changeData(chartFormat(historyList(mixingMotorInfo.historyData)));}});return ()=>createVNode("div",{"class":"concentrateDewateringSystem-statistics-item","id":`concentrateDewateringSystem_chart_${props.index}`},[createVNode("div",{"class":"concentrateDewateringSystem-statistics-item-state"},[createVNode("div",null,[props.item.name]),createVNode("img",{"src":props.item[stateFilter(info.currentData,props.item.code)].img,"alt":""},null),createVNode("div",{"class":"concentrateDewateringSystem-statistics-item-state-stateInfo"},[createVNode("span",{"style":{color:props.item[stateFilter(info.currentData,props.item.code)].color,borderColor:props.item[stateFilter(info.currentData,props.item.code)].color,background:props.item[stateFilter(info.currentData,props.item.code)].background}},[props.item[stateFilter(info.currentData,props.item.code)].text])])]),createVNode("div",{"class":"concentrateDewateringSystem-statistics-item-mainMotor"},[createVNode("div",{"class":"concentrateDewateringSystem-statistics-item-mainMotor-top"},[createTextVNode("\u4E3B\u7535\u673A\u9891\u7387(Hz) "),createVNode("span",null,[createTextVNode("50")])]),createVNode("div",{"class":"concentrateDewateringSystem-statistics-item-mainMotor-bottom"},[createVNode("div",{"id":`concentrateDewateringSystemMainMotorChart${props.index}`},null)])]),createVNode("div",{"class":"concentrateDewateringSystem-statistics-item-mixingMotor"},[createVNode("div",{"class":"concentrateDewateringSystem-statistics-item-mixingMotor-top"},[createTextVNode("\u6405\u62CC\u7535\u673A\u9891\u7387(Hz) "),createVNode("span",null,[createTextVNode("50")])]),createVNode("div",{"class":"concentrateDewateringSystem-statistics-item-mixingMotor-bottom"},[createVNode("div",{"id":`concentrateDewateringSystemMixingMotorChart${props.index}`},null)])])]);}});const props$i$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
94
|
-
};var concentrateDewateringSystem=defineComponent({name:"concentrateDewateringSystem",cname:"精矿脱水系统",developer:"前端开发组",equipment:"PC",props:props$i$1,components:{numericalValueDom,statisticsDom,pumpValueDom,grooveDom},setup(props,ctx){// 自定义接口配置
|
|
95
|
-
setInstance$f({prefix:props.prefix,serverName:props.serverName,timeout:props.timeout// 超时时长
|
|
96
|
-
});return ()=>createVNode("div",{"class":"bigScreenCard concentrateDewateringSystem"},[createVNode(numericalValueDom,null,null),createVNode("div",{"class":"concentrateDewateringSystem-statistics"},[statisticsData.map((item,index)=>createVNode(statisticsDom,{"item":item,"index":index},null))]),createVNode("div",{"class":"concentrateDewateringSystem-pumpValue"},[createVNode(pumpValueDom,null,null),pumpValueData.map((item,index)=>createVNode(pumpValueDom,{"item":item},null))]),createVNode("div",{"class":"concentrateDewateringSystem-bottom"},[createVNode("div",{"class":"concentrateDewateringSystem-bottom-pumpValue"},[createVNode(pumpValueDom,null,null),bottomLeftData.map((item,index)=>createVNode(pumpValueDom,{"item":item},null))]),createVNode("div",{"class":"concentrateDewateringSystem-bottom-groove"},[createVNode(grooveDom,{"item":grooveData},null)])])]);}});const bigScreenCard=[oreInflowOfTheWholePlant,productionOutputOfTheWholePlant,productionQualityOfTheWholePlant,strongMagneticSeparationSystemAB,strongMagneticSeparationSystemCD,tailCoalDewateringSystem,environmentalMonitoring,auxiliarySystem,weakMagneticSeparationSystem,tailingsClassificationSystem,grindingSystem,concentrateDewateringSystem];/**
|
|
97
|
-
* 列表自动滚动
|
|
98
|
-
*/const autoScroll={mounted(el,{value="ant-table-body",modifiers}){let timer;let timer2;let hover=false;let wait=false;const{self}=modifiers;const _baseWidth=window.innerWidth/window.innerHeight>2?7200:2880;const step=Math.ceil(_baseWidth/window.innerWidth);const onmouseenter=()=>hover=true;const onmouseleave=()=>hover=false;const scrollEl=self?el:el.querySelector(`.${value}`);if(!scrollEl)return;const startScroll=()=>{// 元素被移除 清除事件监听
|
|
99
|
-
if(!document.contains(el)){timer&&clearInterval(timer);el.removeEventListener("mouseenter",onmouseenter);el.removeEventListener("mouseleave",onmouseleave);return;}if(hover)return;const scrollElHeight=scrollEl.getBoundingClientRect().height;// 不需要滚动
|
|
100
|
-
if(scrollElHeight>=scrollEl.scrollHeight){return;}if(!hover&&scrollEl.scrollTop+scrollElHeight>scrollEl.scrollHeight-step){if(timer2)return;timer2=setTimeout(()=>{if(!hover){scrollEl.scrollTop=0;}setTimeout(()=>{if(!hover){wait=false;}},1000);timer2=null;},1000);wait=true;}else {if(!wait){scrollEl.scrollTo({top:scrollEl.scrollTop+step});}}};timer=setInterval(startScroll,100);el.addEventListener("mouseenter",onmouseenter);el.addEventListener("mouseleave",onmouseleave);}};/**
|
|
101
|
-
* 重复执行函数
|
|
102
|
-
* @param fn 需要重复执行的函数
|
|
103
|
-
* @param duration 间隔
|
|
104
|
-
* @param immediate 是否立即执行一次
|
|
105
|
-
* @returns 取消interval函数
|
|
106
|
-
*/function useInterval(fn,duration=3000,immediate=true){const timer=setInterval(fn,duration);immediate&&fn();return function stopInterval(){clearInterval(timer);};}const columns$a$1=[{title:"配电室",dataIndex:"name"},{title:"温度 ℃",dataIndex:"temperature",align:"right"},{title:"湿度 %",dataIndex:"humidity",align:"right"},{title:"门开",align:"right",customRender({record}){return createVNode("div",{"class":["door",{"door-open":record.open}]},[record.open?"开":"关"]);}}];/**
|
|
107
|
-
* 远程配电室
|
|
108
|
-
*/const RemoteSwitchhouse=defineComponent({name:"remoteSwitchhouse",cname:"远程配电室",developer:"前端开发组",equipment:"PC",directives:{autoScroll},props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
109
|
-
},setup(){const list=ref([]);const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"remoteSwitchhouse"});list.value=data.rows;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"remote-switchhouse"},[withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table","pagination":false,"columns":columns$a$1,"scroll":{y:300},"dataSource":list.value},null),[[resolveDirective("autoScroll")]])]);}});const mock$A={"rows|10":[{name:"@cword(4)","temperature|16-30":1,"humidity|20-50":1,"open|1":true}]};const Substation=defineComponent({name:"substation",cname:"35KV变电室",developer:"前端开发组",equipment:"PC",directives:{autoScroll},setup(){const columns=[{title:"变电器名称",dataIndex:"name",align:"left",width:100},{title:"la",dataIndex:"la",align:"right"},{title:"Uab",dataIndex:"Uab",align:"right"},{title:"P",dataIndex:"P",align:"right"},{title:"Q",dataIndex:"Q",align:"right"}];const form=reactive({tableData:[],overhaul:0,function:0,hotStandby:0,coldStandby:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"substation"});form.tableData=data.rows;form.overhaul=data.overhaul;form.function=data.function;form.hotStandby=data.hotStandby;form.coldStandby=data.coldStandby;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"statisticsAndList"},[createVNode("div",{"class":"statistics flex"},[createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u68C0\u4FEE")]),createVNode("div",{"class":"number white"},[form.overhaul])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u8FD0\u884C")]),createVNode("div",{"class":"number green"},[form.function])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u70ED\u5907\u7528")]),createVNode("div",{"class":"number orange"},[form.hotStandby])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u51B7\u5907\u7528")]),createVNode("div",{"class":"number blue"},[form.coldStandby])])]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table","pagination":false,"columns":columns,"dataSource":form.tableData,"scroll":{y:200}},{bodyCell:({column,record})=>{if(column.dataIndex==="name"){if(record.state){return createVNode("div",null,[createVNode("span",{"class":"blue"},[createTextVNode("\u25CF")]),createVNode("span",null,[createTextVNode(" "),record.name])]);}else {return createVNode("div",null,[createVNode("span",{"class":"orange"},[createTextVNode("\u25CF")]),createVNode("span",null,[createTextVNode(" "),record.name])]);}}}}),[[resolveDirective("autoScroll")]])]);}});const mock$z={"rows|10":[{name:"@cword(3)","la|16-30":1,"Uab|20-50":1,"P|100-500":1,"Q|100-500":1,state:"@boolean"}],"overhaul|1-10":1,"function|1-10":1,"hotStandby|1-10":1,"coldStandby|1-10":1};const alarmInfo=defineComponent({name:"alarmInfo",cname:"报警信息",developer:"前端开发组",equipment:"PC",directives:{autoScroll},setup(){const columns=[{title:"故障名称",dataIndex:"name",align:"left"},{title:"故障等级",dataIndex:"level",align:"left"},{title:"故障时间",dataIndex:"failureTime",align:"left"},{title:"故障诊断",dataIndex:"faultDiagnosis",align:"right"}];const form=reactive({tableData:[{name:"right",level:"一级",Uab:444,P:444,Q:444,state:"run"},{name:"right",level:"二级",Uab:444,P:444,Q:444,state:"stop"},{name:"right",level:"二级",Uab:444,P:444,Q:444,state:"stop"},{name:"right",level:"二级",Uab:444,P:444,Q:444,state:"stop"}],level1:0,level2:0,level3:0,level4:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"alarmInfo"});form.tableData=data.rows;form.level1=data.level1;form.level2=data.level2;form.level3=data.level3;form.level4=data.level4;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"statisticsAndList"},[createVNode("div",{"class":"statistics flex"},[createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u4E00\u7EA7\u62A5\u8B66")]),createVNode("div",{"class":"number red"},[form.level1])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u4E8C\u7EA7\u62A5\u8B66")]),createVNode("div",{"class":"number orange"},[form.level2])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u4E09\u7EA7\u62A5\u8B66")]),createVNode("div",{"class":"number yellow"},[form.level3])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u56DB\u7EA7\u62A5\u8B66")]),createVNode("div",{"class":"number blue"},[form.level4])])]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table","pagination":false,"columns":columns,"dataSource":form.tableData,"scroll":{y:150}},{bodyCell:({column,record})=>{if(column.dataIndex==="level"){return createVNode("div",{"class":`alarm alarm${record.level}`},null);}if(column.dataIndex==="faultDiagnosis"){return record.faultDiagnosis?"已处理":"未处理";}}}),[[resolveDirective("autoScroll")]])]);}});const mock$y={"rows|5":[{name:"@ctitle()","level|1-4":1,failureTime:"@date(yyyy-MM-dd HH:mm)",faultDiagnosis:"@boolean"}],"level1|1-20":1,"level2|1-20":1,"level3|1-20":1,"level4|1-20":1};const hiddenTrouble=defineComponent({name:"hiddenTrouble",cname:"隐患分析",developer:"前端开发组",equipment:"PC",directives:{autoScroll},setup(){const columns=[{title:"区域",dataIndex:"region",align:"center",width:100},{title:"设备名称",dataIndex:"name",align:"center"},{title:"上报人",dataIndex:"reportPerson",align:"center"},{title:"隐患内容",dataIndex:"content",align:"center"},{title:"处理情况",dataIndex:"handling",align:"center"}];const form=reactive({tableData:[],escalation:0,unhandled:0,processed:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"hiddenTrouble"});form.tableData=data.rows;form.escalation=data.escalation;form.unhandled=data.unhandled;form.processed=data.processed;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"statisticsAndList"},[createVNode("div",{"class":"statistics flex"},[createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u4E0A\u62A5\u9690\u60A3")]),createVNode("div",{"class":"number red"},[form.escalation])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u672A\u5904\u7406")]),createVNode("div",{"class":"number orange"},[form.unhandled])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u5DF2\u5904\u7406")]),createVNode("div",{"class":"number blue"},[form.processed])])]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table","pagination":false,"columns":columns,"dataSource":form.tableData,"scroll":{y:200}},{bodyCell:({column,record})=>{if(column.dataIndex==="handling"){if(record.handling){return createVNode("div",{"class":"blue"},[createTextVNode("\u5DF2\u5904\u7406")]);}else {return createVNode("div",{"class":"orange"},[createTextVNode("\u672A\u5904\u7406")]);}}}}),[[resolveDirective("autoScroll")]])]);}});const mock$x={"escalation|1-10":1,"unhandled|1-10":1,"processed|1-10":1,"rows|10":[{region:"@cword(1)区",name:"@cword(4)",reportPerson:"@cname",content:"@ctitle",handling:"@boolean"}]};const remoteElectricity=defineComponent({name:"remoteElectricity",cname:"远程停送电",developer:"前端开发组",equipment:"PC",directives:{autoScroll},setup(){const columns=[{title:"设备",dataIndex:"name",align:"left"},{title:"申请人",dataIndex:"applicant",align:"right"},{title:"停电时间",dataIndex:"outageTime",align:"right"},{title:"送电时间",dataIndex:"powerTransmissionTime",align:"right"},{title:"调度验收",dataIndex:"dispatchingAcceptance",align:"right"}];const form=reactive({tableData:[],powerFailure:0,powerTransmission:0,temporary:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"remoteElectricity"});form.tableData=data.rows;form.powerFailure=data.powerFailure;form.powerTransmission=data.powerTransmission;form.temporary=data.temporary;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"statisticsAndList"},[createVNode("div",{"class":"statistics flex"},[createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u4ECA\u65E5\u505C\u7535")]),createVNode("div",{"class":"number red"},[form.powerFailure])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u4ECA\u65E5\u9001\u7535")]),createVNode("div",{"class":"number blue"},[form.powerTransmission])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u8D85\u65F6\u505C\u7535")]),createVNode("div",{"class":"number orange"},[form.temporary])])]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table","pagination":false,"columns":columns,"dataSource":form.tableData,"scroll":{y:150}},{bodyCell:({column,record})=>{if(column.dataIndex==="dispatchingAcceptance"){if(record.dispatchingAcceptance){return createVNode("div",{"class":"blue"},[createTextVNode("\u5DF2\u9A8C\u6536")]);}else {return createVNode("div",{"class":"orange"},[createTextVNode("\u672A\u9A8C\u6536")]);}}}}),[[resolveDirective("autoScroll")]])]);}});const mock$w={"rows|10":[{name:"@cword(3)",applicant:"@cname",outageTime:"@time(HH:mm:ss)",powerTransmissionTime:"@time(HH:mm:ss)",dispatchingAcceptance:"@boolean"}],"powerFailure|1-100":1,"powerTransmission|1-100":1,"temporary|1-100":1};const columns$9$1={fault:[{title:"故障名称",dataIndex:"name"},{title:"故障等级",dataIndex:"level"},{title:"故障时间",dataIndex:"time"},{title:"故障诊断",dataIndex:"state",align:"right"}],alarm:[{title:"报警名称",dataIndex:"name"},{title:"报警等级",dataIndex:"level"},{title:"报警时间",dataIndex:"time"},{title:"报警状态",dataIndex:"state",align:"right"}]};const deviceList=[{key:1,title:"故障上报",code:"fault"},{key:2,title:"设备报警",code:"alarm"}];/**
|
|
110
|
-
* 故障判断
|
|
111
|
-
*/const FaultJudgment=defineComponent({name:"faultJudgment",cname:"故障判断",developer:"前端开发组",equipment:"PC",directives:{autoScroll},props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
112
|
-
},setup(){const form=ref({fault:[],alarm:[]});const activeIndex=ref(0);const activeDevice=computed(()=>deviceList[activeIndex.value]);const handleSelectDevice=index=>{if(deviceList[index]){activeIndex.value=index;}};const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"faultJudgment"});form.value=data;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"fault-judgment"},[createVNode("div",{"class":"statistic-container"},[deviceList.map((item,index)=>createVNode("div",{"key":item.key,"class":["statistic-item",item.key===activeDevice.value?.key&&"active"],"onClick":()=>handleSelectDevice(index)},[item.title,createTextVNode(" "),form.value[item.code].filter(n=>n.state).length,createTextVNode("/"),form.value[item.code].length]))]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table","pagination":false,"columns":columns$9$1[activeDevice.value.code],"scroll":{y:250},"dataSource":form.value[activeDevice.value.code]},{bodyCell:({column,record})=>{if(column.dataIndex==="level"){return createVNode("div",{"class":`level level${record.level}`},null);}if(column.dataIndex==="state"){return record.state?createVNode("div",null,[activeIndex.value===0?"已处理":"已消警"]):createVNode("div",{"style":{color:"#FF9214"}},[activeIndex.value===0?"未处理":"未消警"]);}}}),[[resolveDirective("autoScroll")]])]);}});const mock$v={"fault|24":[{name:"@ctitle","level|1-4":1,time:"@date(yyyy-MM-dd HH:mm)",state:"@boolean"}],"alarm|24":[{name:"@ctitle","level|1-4":1,time:"@date(yyyy-MM-dd HH:mm)",state:"@boolean"}]};/**
|
|
113
|
-
* 重点设备检测
|
|
114
|
-
*/const KeyEquipmentTesting=defineComponent({name:"keyEquipmentTesting",cname:"重点设备检测",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
115
|
-
},setup(){const activeIndex=ref(0);const activeDevice=computed(()=>deviceList.value[activeIndex.value]);const deviceList=ref([{key:1,title:"给煤机",code:"coalFeeder",img:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/avatars/98/988f3e91d15566d8742c5634eab1676aad2a16ad_full.jpg"},{key:2,title:"离心机",code:"centrifuge",img:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/avatars/11/114394a2c78be2488fd7611ccbc3a6fec191364e_full.jpg"},{key:3,title:"浮选机",code:"flotationMachine",img:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/avatars/d2/d28bce867fbbf5b31f6e75b89966923ed90cdb4f_full.jpg"},{key:4,title:"浓缩机",code:"thickener",img:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/avatars/19/19d297d18f5199bb9d3ed54f3f3f8a3774887737_full.jpg"}]);const form=ref({});const handleSelectDevice=index=>{if(deviceList.value[index]){activeIndex.value=index;}};const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"keyEquipmentTesting"});form.value=data.deviceObj;deviceList.value=data.deviceList;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"key-equipment-testing"},[createVNode("div",{"class":"divice-select"},[createVNode(resolveComponent("double-left-outlined"),{"onClick":()=>handleSelectDevice(activeIndex.value-1)},null),createVNode("div",{"class":"device-list"},[deviceList.value.map((item,index)=>createVNode("div",{"key":item.key,"class":["device-item",item.key===activeDevice.value?.key&&"active"],"onClick":()=>handleSelectDevice(index)},[item.title]))]),createVNode(resolveComponent("double-right-outlined"),{"onClick":()=>handleSelectDevice(activeIndex.value+1)},null)]),createVNode("div",{"class":"bottom-container"},[createVNode("div",{"class":"device-image-box"},[createVNode("img",{"src":activeDevice.value.img,"alt":""},null)]),createVNode("div",{"class":"table"},[createVNode("div",{"class":"header"},[createVNode("div",{"class":"cell name"},[createTextVNode("\u8BBE\u5907\u540D\u79F0")]),createVNode("div",{"class":"cell temperture"},[createTextVNode("\u6E29\u5EA6(\u2103)")]),createVNode("div",{"class":"cell amplitude"},[createTextVNode("\u632F\u5E45(mm)")]),createVNode("div",{"class":"cell electric"},[createTextVNode("\u7535\u6D41(A)")])]),createVNode("div",{"class":"body"},[form.value[activeDevice.value.code]?.map(item=>createVNode("div",{"class":"column"},[createVNode("div",{"class":"cell name"},[item.name]),createVNode("div",{"class":`cell temperture ${item.temperture>item.fault?"fault":""}`},[item.temperture]),createVNode("div",{"class":"cell amplitude"},[item.amplitude]),createVNode("div",{"class":"cell electric"},[item.electric])]))])])])]);}});const mock$u={deviceObj:{"coalFeeder|12":[{"name|1000-5000":1,"fault|30-50":1,"temperture|30-50.1":1,"amplitude|1-5.1":1,"electric|100-500":1}],"centrifuge|12":[{"name|1000-5000":1,"fault|30-50":1,"temperture|30-50.1":1,"amplitude|1-5.1":1,"electric|100-500":1}],"flotationMachine|12":[{"name|1000-5000":1,"fault|30-50":1,"temperture|30-50.1":1,"amplitude|1-5.1":1,"electric|100-500":1}],"thickener|12":[{"name|1000-5000":1,"fault|30-50":1,"temperture|30-50.1":1,"amplitude|1-5.1":1,"electric|100-500":1}]},deviceList:[{key:1,title:"给煤机",code:"coalFeeder",img:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/avatars/98/988f3e91d15566d8742c5634eab1676aad2a16ad_full.jpg"},{key:2,title:"离心机",code:"centrifuge",img:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/avatars/11/114394a2c78be2488fd7611ccbc3a6fec191364e_full.jpg"},{key:3,title:"浮选机",code:"flotationMachine",img:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/avatars/d2/d28bce867fbbf5b31f6e75b89966923ed90cdb4f_full.jpg"},{key:4,title:"浓缩机",code:"thickener",img:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/avatars/19/19d297d18f5199bb9d3ed54f3f3f8a3774887737_full.jpg"}]};const columns$8$1=[{title:"区域",dataIndex:"region"},{title:"检修计划",dataIndex:"maintenancePlan"},{title:"计划检修时间",dataIndex:"maintenancePlanTime"},{title:"完成情况",dataIndex:"completion",align:"center"}];/**
|
|
116
|
-
* 运维信息
|
|
117
|
-
*/const OpsInfo=defineComponent({name:"opsInfo",cname:"运维信息",developer:"前端开发组",equipment:"PC",directives:{autoScroll},props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
118
|
-
},setup(){const form=reactive({monthlyActualCompletion:{value:0,total:0},quarterlyPlan:{value:0,total:0},annualPlan:{value:0,total:0},tableData:[]});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"opsInfo"});form.tableData=data.rows;form.monthlyActualCompletion=data.monthlyActualCompletion;form.quarterlyPlan=data.quarterlyPlan;form.annualPlan=data.annualPlan;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"ops-info statisticsAndList"},[createVNode("div",{"class":"statistics flex"},[createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u6708\u5EA6\u5B9E\u9645\u5B8C\u6210\u91CF")]),createVNode("div",{"class":"number"},[createVNode("span",{"class":"value"},[form.monthlyActualCompletion.value]),createVNode("span",{"class":"total"},[createTextVNode("/")]),createVNode("span",{"class":"total"},[form.monthlyActualCompletion.total])])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u5B63\u5EA6\u8BA1\u5212")]),createVNode("div",{"class":"number"},[createVNode("span",{"class":"value"},[form.quarterlyPlan.value]),createVNode("span",{"class":"total"},[createTextVNode("/")]),createVNode("span",{"class":"total"},[form.quarterlyPlan.total])])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u5E74\u5EA6\u8BA1\u5212")]),createVNode("div",{"class":"number"},[createVNode("span",{"class":"value"},[form.annualPlan.value]),createVNode("span",{"class":"total"},[createTextVNode("/")]),createVNode("span",{"class":"total"},[form.annualPlan.total])])])]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table","pagination":false,"scroll":{y:230},"columns":columns$8$1,"dataSource":form.tableData},{bodyCell:({column,record})=>{if(column.dataIndex==="completion"){return record.completion?createVNode("div",null,[createTextVNode("\u5DF2\u5B8C\u6210")]):createVNode("div",{"style":{color:"#FF9214"}},[createTextVNode("\u672A\u5B8C\u6210")]);}}}),[[resolveDirective("autoScroll")]])]);}});const mock$t={monthlyActualCompletion:{"value|100-1000":1,"total|1000-2000":1},quarterlyPlan:{"value|100-1000":1,"total|1000-2000":1},annualPlan:{"value|100-1000":1,"total|1000-2000":1},"rows|10":[{region:"@cword(1)区","maintenancePlan|1000-5000":1,maintenancePlanTime:"@date(yyyy-MM-dd HH:mm)",completion:"@boolean"}]};const tabs$3=[{name:"当日",id:"day"},{name:"当月",id:"month"}];/**
|
|
119
|
-
* 洗选系统处理量
|
|
120
|
-
*/const WashingSystemHandleQuantity=defineComponent({name:"washingSystemHandleQuantity",cname:"洗选系统处理量",developer:"前端开发组",equipment:"PC",directives:{autoScroll},emits:["getTabs"],props:{prefix:String,serverName:String,timeout:Number,tabId:String},setup(props,{emit}){ref([]);const form=ref({day:[],month:[]});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"washingSystemHandleQuantity"});form.value=data;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);onMounted(()=>{emit("getTabs",tabs$3);});return ()=>createVNode("div",{"class":"washing-system-handle-quantity"},[withDirectives(createVNode("div",{"class":"list"},[form.value[props.tabId||""]?.map(item=>createVNode("div",{"class":"row"},[createVNode("div",{"class":"left sys-name"},[item.name]),createVNode("div",{"class":"middle"},[item.middle,createTextVNode("t/h")]),createVNode("div",{"class":"right"},[item.right,createTextVNode("t")])]))]),[[resolveDirective("autoScroll"),null,void 0,{self:true}]])]);}});const mock$s={"day|10":[{name:"@cword(3)","middle|100-1000":1,"right|1000-10000":1}],"month|10":[{name:"@cword(3)","middle|100-1000":1,"right|1000-10000":1}]};/**
|
|
121
|
-
* 自动滚动容器 目前只有向左滚动
|
|
122
|
-
*/const ScrollContainer=defineComponent({name:"ScrollContainer",props:{// 自动开始滚动
|
|
123
|
-
autoStart:{type:Boolean,default:true},// 速度 大于0 小于10
|
|
124
|
-
speed:{type:Number,validate(val){return val>0&&val<=10;},default:5}},setup(props,{emit,slots,expose}){const containerRef=ref();const innerRef=ref();let timer;const containerHeight=computed(()=>{if(innerRef.value){return getComputedStyle(innerRef.value).height;}return 0;});const isScrolling=ref(false);const scroll=()=>{if(!isScrolling.value)return;const containerWidth=parseInt(getComputedStyle(containerRef.value).width);const left=parseInt(getComputedStyle(innerRef.value).left);const innerWidth=parseInt(getComputedStyle(innerRef.value).width);// 没超出外层宽度 不滚动
|
|
125
|
-
if(innerWidth<containerWidth){return;}requestAnimationFrame(()=>{if(innerRef.value){// 滚完一圈 从头开始
|
|
126
|
-
if(-left>innerWidth){innerRef.value.style.left=containerWidth+"px";}else {// 往左滚动1px
|
|
127
|
-
innerRef.value.style.left=left-1+"px";}}});};// 开始滚动
|
|
128
|
-
const startScroll=()=>{isScrolling.value=true;const timeout=20-props.speed;timer=setInterval(()=>{scroll();},timeout);};// 停止滚动
|
|
129
|
-
const stopScroll=()=>{clearInterval(timer);timer=null;};onMounted(()=>{props.autoStart&&startScroll();});onUnmounted(stopScroll);expose({startScroll,stopScroll});return ()=>createVNode("div",{"class":"scroll-container","style":{height:containerHeight.value},"ref":containerRef,"onMouseover":()=>isScrolling.value=false,"onMouseleave":()=>isScrolling.value=true},[createVNode("div",{"class":"scroll-inner","ref":innerRef},[slots.default?.()])]);}});const columns$7$1=[{title:"系统",dataIndex:"system"},{title:"当前状态",dataIndex:"currentState"},{title:"生产时间",dataIndex:"productionTime"},{title:"检修时间",dataIndex:"repairTime"},{title:"煤种",dataIndex:"varietyCoal"},{title:"配洗方案",dataIndex:"washingScheme"},{title:"计划入仓",dataIndex:"plannedWarehousing"},{title:"瞬时量(t/h)",dataIndex:"instantaneousQuantity"},{title:"日累计量(t/h)",dataIndex:"dailyAccumulatedMeasurement"}];/**
|
|
130
|
-
* 系统运行状态 滚动横幅+表格
|
|
131
|
-
*/const SystemRunStatus=defineComponent({name:"systemRunStatus",cname:"系统运行状态",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
132
|
-
},setup(){const message=ref("洗煤压滤系统影响时间总计893分钟,考核时间6514分钟。洗煤压滤系统影响时间总计893分钟,考核时间6514分钟。洗煤压滤系统影响时间总计893分钟,考核时间6514分钟。洗煤压滤系统影响时间总计893分钟,考核时间6514分钟。");const list=ref([]);const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"systemRunStatus"});list.value=data.rows;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"system-run-status"},[createVNode("div",{"class":"message-box"},[createVNode("div",{"class":"msg-img"},[createVNode("img",{"src":"/micro-assets/card/laba.png","alt":""},null)]),createVNode(ScrollContainer,{"style":{flex:"1"}},{default:()=>[createVNode("span",{"class":"message"},[message.value])]})]),createVNode(resolveComponent("a-table"),{"class":"dark-table2 striped","pagination":false,"columns":columns$7$1,"dataSource":list.value},null)]);}});const mock$r={"rows|10":[{system:"@cword(3)","currentState|boolean":1,productionTime:"@date(yyyy-MM-dd HH:mm:ss)",repairTime:"@date(yyyy-MM-dd HH:mm:ss)",varietyCoal:"@cword(2)",washingScheme:"@cword(3)",plannedWarehousing:"@cword(3)","instantaneousQuantity|10-1000":1,"dailyAccumulatedMeasurement|1000-5000":1}]};// 来煤
|
|
133
|
-
const columnsIn=[{title:"后续来煤地点",dataIndex:"place"},{title:"时间",dataIndex:"time"},{title:"后续来煤量(t)",dataIndex:"coalQuantity"},{title:"区域",dataIndex:"region"},{title:"计划入仓",dataIndex:"plannedWarehousing"}];// 外运
|
|
134
|
-
const columnsOut=[{title:"销货商",dataIndex:"seller"},{title:"具体时间",dataIndex:"time"},{title:"车数",dataIndex:"numberOfCars"},{title:"外运量(t)",dataIndex:"outboundVolume"},{title:"区域",dataIndex:"region"},{title:"计划出仓",dataIndex:"plannedExit"}];/**
|
|
135
|
-
* 后续来煤和销货列表
|
|
136
|
-
*/const SendInOutCoalList=defineComponent({name:"sendInOutCoalList",cname:"后续来煤和销货列表",developer:"前端开发组",equipment:"PC",directives:{autoScroll},props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
137
|
-
},setup(){const form=reactive({tableDataIn:[],tableDataOut:[]});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"sendInOutCoalList"});form.tableDataIn=data.tableDataIn;form.tableDataOut=data.tableDataOut;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"send-in-out-coal-list flex"},[withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table2 striped","style":{flex:1},"pagination":false,"scroll":{y:160},"columns":columnsIn,"dataSource":form.tableDataIn},null),[[resolveDirective("autoScroll")]]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table2 striped","style":{flex:1,marginLeft:"26px"},"pagination":false,"scroll":{y:160},"columns":columnsOut,"dataSource":form.tableDataOut},null),[[resolveDirective("autoScroll")]])]);}});const mock$q={"tableDataIn|10":[{place:"@cname",time:"@date(yyyy-MM-dd HH:mm:ss)","coalQuantity|500-1000":1,region:"@cword('东西',1)区",plannedWarehousing:"#@natural(1,5)"}],"tableDataOut|10":[{seller:"@cname",time:"@date(yyyy-MM-dd HH:mm:ss)","numberOfCars|0-50":1,"outboundVolume|1000-5000":1,region:"@cword('东西',1)区",plannedExit:"#@natural(1,5)"}]};const columns$6$1=[{title:"设备名称",dataIndex:"name"},{title:"来源",dataIndex:"source"},{title:"内容",dataIndex:"content"},{title:"报告时间",dataIndex:"reportingTime"}];/**
|
|
138
|
-
* 智能巡检
|
|
139
|
-
*/const SmartInspection=defineComponent({name:"smartInspection",cname:"智能巡检",developer:"前端开发组",equipment:"PC",directives:{autoScroll},props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
140
|
-
},setup(){const list=ref([]);const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"smartInspection"});list.value=data.rows;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"smart-inspection"},[withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table3","pagination":false,"columns":columns$6$1,"scroll":{y:80},"dataSource":list.value,"rowClassName":(record,index)=>index%2&&"active"},null),[[resolveDirective("autoScroll")]])]);}});const mock$p={"rows|3":[{name:"@cword(4)",source:"@cword(2)",content:"@ctitle",reportingTime:"@date(yyyy-MM-dd HH:mm:ss)"}]};const columns$5$1=[{title:"变电器名称",dataIndex:"name"},{title:"la",dataIndex:"la"},{title:"Uab",dataIndex:"Uab"},{title:"P",dataIndex:"P"},{title:"Q",dataIndex:"Q"}];/**
|
|
141
|
-
* 配电监控
|
|
142
|
-
*/const ElectricMonitor=defineComponent({name:"electricMonitor",cname:"配电监控",developer:"前端开发组",equipment:"PC",directives:{autoScroll},props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
143
|
-
},setup(){const form=reactive({tableData:[],overhaul:0,function:0,hotStandby:0,coldStandby:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"electricMonitor"});form.tableData=data.rows;form.overhaul=data.overhaul;form.function=data.function;form.hotStandby=data.hotStandby;form.coldStandby=data.coldStandby;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"electric-monitor statisticsAndList"},[createVNode("div",{"class":"statistics flex"},[createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u68C0\u4FEE")]),createVNode("div",{"class":"number"},[form.overhaul])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u8FD0\u884C")]),createVNode("div",{"class":"number green"},[form.function])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u70ED\u5907\u7528")]),createVNode("div",{"class":"number orange"},[form.hotStandby])]),createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[createTextVNode("\u70ED\u5907\u7528")]),createVNode("div",{"class":"number blue"},[form.coldStandby])])]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table","pagination":false,"columns":columns$5$1,"scroll":{y:150},"dataSource":form.tableData},null),[[resolveDirective("autoScroll")]])]);}});const mock$o={"rows|10":[{name:"@cword(4)","la|16-30":1,"Uab|20-50":1,"P|100-500":1,"Q|100-500":1}],"overhaul|1-10":1,"function|1-10":1,"hotStandby|1-10":1,"coldStandby|1-10":1};const columns$4$1=[{title:" 设备名称",dataIndex:"name"},{title:"来源",dataIndex:"source"},{title:"内容",dataIndex:"content"},{title:"报告时间",dataIndex:"reportingTime"}];const Item$7=({name,value,total,color})=>createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[name]),createVNode("div",{"class":"content"},[createVNode("span",{"class":["value",color]},[value]),createVNode("span",{"class":"total"},[createTextVNode("/")]),createVNode("span",{"class":"total"},[total])])]);/**
|
|
144
|
-
* 故障、报警、隐患
|
|
145
|
-
*/const AlarmFaultDanger=defineComponent({name:"alarmFaultDanger",cname:"故障、报警、隐患",developer:"前端开发组",equipment:"PC",directives:{autoScroll},props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
146
|
-
},setup(){const form=reactive({tableData:[],alarmEquipment:{value:0,total:0},reportHiddenDanger:{value:0,total:0},reportFault:{value:0,total:0}});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"alarmFaultDanger"});form.tableData=data.rows;form.alarmEquipment=data.alarmEquipment;form.reportHiddenDanger=data.reportHiddenDanger;form.reportFault=data.reportFault;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"alarm-fault-danger"},[createVNode("div",{"class":"statistics-container"},[createVNode(Item$7,{"name":"报警设备","color":"red","value":form.alarmEquipment.value,"total":form.alarmEquipment.total},null),createVNode(Item$7,{"name":"上报隐患","color":"blue","value":form.reportHiddenDanger.value,"total":form.reportHiddenDanger.total},null),createVNode(Item$7,{"name":"上报故障","color":"yellow","value":form.reportFault.value,"total":form.reportFault.total},null)]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"table dark-table3","pagination":false,"columns":columns$4$1,"scroll":{y:200},"dataSource":form.tableData},null),[[resolveDirective("autoScroll")]])]);}});const mock$n={alarmEquipment:{"total|25-50":1,"value|1-25":1},reportHiddenDanger:{"total|25-50":1,"value|1-25":1},reportFault:{"total|25-50":1,"value|1-25":1},"rows|3":[{name:"@cword(4)",source:"@cword(2)",content:"@ctitle",reportingTime:"@date(yyyy-MM-dd HH:mm:ss)"}]};const prefix$2="inl-card";const installCom=(component,name)=>{component.install=app=>{app.component(`${prefix$2}-${name}`,component);};return component;};const screen$1={// 退出全屏
|
|
147
|
-
exitFullscreen(id){const dom=document.getElementById(id);dom.addEventListener("click",event=>{if(document.fullscreenElement===dom){document.exitFullscreen();}event.preventDefault();});},// 进入全屏
|
|
148
|
-
requestFullscreen(id){const dom=document.getElementById(id);dom.requestFullscreen();}};const formatMoney=(number,decimals=0,decPoint=".",thousandsSep=",")=>{number=(number+"").replace(/[^0-9+-Ee.]/g,"");let n=!isFinite(+number)?0:+number;let prec=!isFinite(+decimals)?0:Math.abs(decimals);let sep=typeof thousandsSep==="undefined"?",":thousandsSep;let dec=typeof decPoint==="undefined"?".":decPoint;let s;let toFixedFix=function(n,prec){let k=Math.pow(10,prec);return ""+Math.ceil(n*k)/k;};s=(prec?toFixedFix(n,prec):""+Math.round(n)).split(".");let re=/(-?\d+)(\d{3})/;while(re.test(s[0])){s[0]=s[0].replace(re,"$1"+sep+"$2");}if((s[1]||"").length<prec){s[1]=s[1]||"";s[1]+=new Array(prec-s[1].length+1).join("0");}return s.join(dec);};const columns$3$1=[{title:"车号",dataIndex:"licenseNumber"},{title:"重量(t)",dataIndex:"weight"},{title:"起止点",dataIndex:"startingAndEndingPoints"},{title:"运输状态",dataIndex:"transportationStatus"}];const status=value=>{switch(value){case 0:return "待发货";case 1:return "运输中";case 2:return "已送达";default:return "--";}};const Item$6=({name,value})=>{return createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[name]),createVNode("div",{"class":"value"},[value])]);};/**
|
|
149
|
-
* 物流信息
|
|
150
|
-
*/const LogisticsInfo=defineComponent({name:"logisticsInfo",cname:"物流信息",developer:"前端开发组",equipment:"PC",directives:{autoScroll},props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
151
|
-
},setup(){const form=reactive({rows:[],totalTransportation:0,coalFromMine:0,cleanCoalOutwardTransportation:0,exportOfByProducts:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"logisticsInfo"});form.rows=data.rows;form.totalTransportation=data.totalTransportation;form.coalFromMine=data.coalFromMine;form.cleanCoalOutwardTransportation=data.cleanCoalOutwardTransportation;form.exportOfByProducts=data.exportOfByProducts;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"logistics-info"},[createVNode("div",{"class":"statistics-container"},[createVNode(Item$6,{"name":"本月运输总量(t)","value":formatMoney(form.totalTransportation)},null),createVNode(Item$6,{"name":"矿上来煤(t)","value":form.coalFromMine},null),createVNode(Item$6,{"name":"精煤外运(t)","value":form.cleanCoalOutwardTransportation},null),createVNode(Item$6,{"name":"副产品外运(t)","value":form.exportOfByProducts},null)]),withDirectives(createVNode(resolveComponent("a-table"),{"class":"dark-table3","pagination":false,"columns":columns$3$1,"scroll":{y:200},"dataSource":form.rows,"rowClassName":(reocrd,index)=>!reocrd.transportationStatus&&"active"},{bodyCell:({column,record})=>{if(column.dataIndex==="transportationStatus"){return status(record.transportationStatus);}}}),[[resolveDirective("autoScroll")]])]);}});const mock$m={"rows|10":[{licenseNumber:/[A-Z]\d{5,7}/,"weight|100-1000":1,startingAndEndingPoints:"@city(true) - @city(true)","transportationStatus|0-2":1}],"totalTransportation|100000-1000000":1,"coalFromMine|300000-3000000":1,"cleanCoalOutwardTransportation|80000-800000":1,"exportOfByProducts|100000-1000000":1};/**
|
|
152
|
-
* 大宗物资消耗
|
|
153
|
-
*/const CommodityConsume=defineComponent({name:"commodityConsume",cname:"大宗物资消耗",developer:"前端开发组",equipment:"PC",directives:{autoScroll},props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
154
|
-
},setup(){const list=ref([]);const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"commodityConsume"});list.value=data.rows;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>withDirectives(createVNode("div",{"class":"commodity-consume"},[list.value.map(item=>createVNode(Fragment,null,[createVNode("div",{"class":"row"},[createVNode("div",{"class":"name"},[item.name]),createVNode("div",{"class":"value"},[item.value]),createVNode("div",{"class":"unit"},[item.unit])]),item.children.map(val=>createVNode("div",{"class":"row sub-row"},[createVNode("div",{"class":"name"},[val.name]),createVNode("div",{"class":"value"},[val.value]),createVNode("div",{"class":"unit"},[val.unit])]))]))]),[[resolveDirective("autoScroll"),null,void 0,{self:true}]]);}});const mock$l={"rows|10":[{"value|1000000-10000000.1-2":1,name:"全厂生产资料费",unit:"万元","children|2-5":[{name:"选煤厂生产资料费","value|200000-2000000.1-2":1,unit:"万元"}]}]};const dataList$1=[RemoteSwitchhouse,Substation,alarmInfo,hiddenTrouble,remoteElectricity,FaultJudgment,KeyEquipmentTesting,OpsInfo,WashingSystemHandleQuantity,SystemRunStatus,SendInOutCoalList,SmartInspection,ElectricMonitor,AlarmFaultDanger,LogisticsInfo,CommodityConsume];/**
|
|
155
|
-
* 统计
|
|
156
|
-
*/const StatisticsItem=defineComponent({props:{title:{type:String,required:true},planValue:{type:Number,required:true},realValue:{type:Number,required:true},titleColor:{type:String,required:true},progressColor:{type:[String,Object],required:true}},setup(props){const percent=computed(()=>props.planValue!==0?Math.floor(props.realValue/props.planValue*100):0);const formatPercent=()=>createVNode("div",{"class":"percent"},[createVNode("span",{"class":"percent-value"},[percent.value]),createVNode("span",{"class":"unit"},[createTextVNode("%")])]);return ()=>createVNode("div",{"class":"statistics-item"},[createVNode("div",{"class":"left"},[createVNode(resolveComponent("a-progress"),{"type":"circle","strokeLinecap":"square","width":110,"strokeWidth":10,"strokeColor":props.progressColor,"trailColor":"rgba(56, 154, 255, 0.1)","percent":percent.value,"format":formatPercent},null)]),createVNode("div",{"class":"right"},[createVNode("div",{"class":"title","style":{color:props.titleColor}},[props.title]),createVNode("div",{"class":"statistics"},[createVNode("div",{"class":"item"},[createVNode("div",{"class":"label"},[createTextVNode("\u8BA1\u5212\u91CF(t)")]),createVNode("div",{"class":"value"},[props.planValue])]),createVNode("div",{"class":"item"},[createVNode("div",{"class":"label"},[createTextVNode("\u5B9E\u9645\u91CF(t)")]),createVNode("div",{"class":"value"},[props.realValue])])])])]);}});/**
|
|
157
|
-
* 生产计划
|
|
158
|
-
*/const ProductionPlan=defineComponent({name:"productionPlan",cname:"生产计划",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
159
|
-
},setup(){const form=reactive({annualSelection:{planValue:0,realValue:0},monthlySelectionAmount:{planValue:0,realValue:0},dailySelection:{planValue:0,realValue:0},realTimeEnrollment:0,cleanCoalYield:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"productionPlan"});form.annualSelection=data.annualSelection;form.monthlySelectionAmount=data.monthlySelectionAmount;form.dailySelection=data.dailySelection;form.realTimeEnrollment=data.realTimeEnrollment;form.cleanCoalYield=data.cleanCoalYield;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"production-plan"},[createVNode(StatisticsItem,{"key":"year","title":"年入选量","titleColor":"#3b74c3","progressColor":{"0%":"#389AFF","100%":"#165CA9"},"planValue":form.annualSelection.planValue,"realValue":form.annualSelection.realValue},null),createVNode(StatisticsItem,{"key":"month","title":"月入选量","titleColor":"#56abba","progressColor":{"0%":"#08A5B1","100%":"#4DF3FF"},"planValue":form.monthlySelectionAmount.planValue,"realValue":form.monthlySelectionAmount.realValue},null),createVNode(StatisticsItem,{"key":"day","title":"日入选量","titleColor":"#3b74c3","progressColor":{"0%":"#F9B873","100%":"#D4AE3D"},"planValue":form.dailySelection.planValue,"realValue":form.dailySelection.realValue},null),createVNode("div",{"class":"statistics-item"},[createVNode("div",{"class":"item"},[createVNode("div",{"class":"title"},[createTextVNode("\u5B9E\u65F6\u5165\u9009\u91CF")]),createVNode("div",{"class":"value-container"},[createVNode("div",{"class":"value"},[form.realTimeEnrollment]),createVNode("div",{"class":"unit"},[createTextVNode("t/h")])])]),createVNode("div",{"class":"item"},[createVNode("div",{"class":"title"},[createTextVNode("\u7CBE\u7164\u4EA7\u7387")]),createVNode("div",{"class":"value-container"},[createVNode("div",{"class":"value"},[form.cleanCoalYield]),createVNode("div",{"class":"unit"},[createTextVNode("%")])])])])]);}});const mock$k={annualSelection:{"planValue|1000-10000":1,"realValue|1000-10000":1},monthlySelectionAmount:{"planValue|1000-10000":1,"realValue|1000-10000":1},dailySelection:{"planValue|1000-10000":1,"realValue|1000-10000":1},"realTimeEnrollment|1000-10000":1,"cleanCoalYield|1-100":1};// const data = [
|
|
160
|
-
// { name: "临涣", value: 10, percent: 10 },
|
|
161
|
-
// { name: "杨柳", value: 30, percent: 30 },
|
|
162
|
-
// { name: "许瞳", value: 25, percent: 25 },
|
|
163
|
-
// { name: "孙瞳", value: 33, percent: 33 },
|
|
164
|
-
// { name: "青东", value: 44, percent: 44 },
|
|
165
|
-
// { name: "邹庄", value: 20, percent: 20 },
|
|
166
|
-
// { name: "袁一", value: 10, percent: 10 },
|
|
167
|
-
// ];
|
|
168
|
-
const tabs$2=[{name:"当日",id:"day"},{name:"当月",id:"month"}];/**
|
|
169
|
-
* 入洗原煤量
|
|
170
|
-
*/const WashingRawCoalQuantity=defineComponent({name:"washingRawCoalQuantity",cname:"入洗原煤量",developer:"前端开发组",equipment:"PC",emits:["getTabs"],props:{prefix:String,serverName:String,timeout:Number,tabId:String},setup(props,{emit}){const chartRef=ref();let chartIns;const form=ref({day:[],month:[]});const initChart=data=>{chartIns=new Chart({container:chartRef.value,autoFit:true,renderer:"svg",theme:{maxColumnWidth:10},appendPadding:[20,0,20]});chartIns.data(data);chartIns.scale({name:{},value:{alias:"灰分",min:0,nice:true},percent:{alias:"进度",nice:true,min:0// max: 100,
|
|
171
|
-
}});chartIns.axis("name",{tickLine:null,line:null,label:{style:{fill:"#fff",fontSize:19}}});chartIns.axis("value",{grid:{line:{style:{stroke:"rgba(242, 243, 248, 0.04)"}}},label:{style:{fill:"rgba(255, 255, 255, 0.5)",fontSize:23}},title:{text:"单位:万吨",position:"end",spacing:-35,autoRotate:false,style:{fill:"rgba(255, 255, 255, 0.4)",fontSize:23,y:10}}});chartIns.axis("percent",{grid:null,label:{style:{fill:"rgba(255, 255, 255, 0.5)",fontSize:23}},title:{text:"单位:%",position:"end",spacing:-50,autoRotate:false,style:{fill:"rgba(255, 255, 255, 0.4)",fontSize:23,y:10}}});chartIns.legend({position:"bottom",custom:true,itemName:{style:{fill:"#fff",fontSize:19}},items:[{name:"灰分",value:"value",marker:{symbol:"square",style:{fill:"#30DDFF"}}},{name:"进度",value:"percent",marker:{symbol:"square",style:{fill:"#2C6FFF"}}},{name:"目标",value:"",marker:{symbol:"square",style:{fill:"l(90) 0:rgba(71, 87, 108, 0.5) 1:#fff"}}}]});chartIns.tooltip({showCrosshairs:true,shared:true});chartIns.interval().position("name*value").color("#4FAAEB").style({cfg:{fill:"l(90) 0:#389AFF 1:#07143A00"}});chartIns.line().position("name*percent").color("#30DDFF");chartIns.render();};const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"washingRawCoalQuantity"});form.value=data;};watch(()=>[form.value,props.tabId],e=>{if(form.value&&props.tabId){if(form.value[props.tabId].length>0){if(!chartIns){initChart(form.value[props.tabId]);}else {chartIns.changeData(form.value[props.tabId]);}}}},{immediate:true,deep:true});const stopInterval=useInterval(getData,5000);onBeforeUnmount(()=>{chartIns?.destroy();stopInterval();});onMounted(()=>{emit("getTabs",tabs$2);});return ()=>createVNode("div",{"class":"washing-raw-coal-quantity"},[createVNode("div",{"class":"chart","style":{height:"100%"},"ref":chartRef},null)]);}});const mock$j={"day|5":[{name:"@cname","value|10-50":1,"percent|1-100":1}],"month|5":[{name:"@cname","value|10-50":1,"percent|1-100":1}]};/**
|
|
172
|
-
* 卡片头(小) 左侧带橙色点
|
|
173
|
-
*/const CardHeaderSmall=defineComponent({emits:["tabChange"],props:{title:{type:String},tabList:{type:Array}},setup(props,{emit,slots}){const activeTab=ref(props.tabList?.[0]?.id);const handleSwitchTab=index=>{const id=props.tabList[index].id;if(id!==activeTab.value){emit("tabChange",props.tabList[index]);activeTab.value=id;}};return ()=>createVNode("div",{"class":"card-header-small"},[createVNode("div",{"class":"title"},[props.title]),createVNode("div",{"class":"right"},[props.tabList?createVNode("div",{"class":"tab-container"},[props.tabList.map((item,index)=>createVNode("div",{"class":["tab-item",activeTab.value===item.id&&"active"],"key":item.id,"onClick":()=>handleSwitchTab(index)},[item.name]))]):slots.extra?.()])]);}});const tabs$1=[{id:"day",name:"日"},{id:"month",name:"月"}];/**
|
|
174
|
-
* 原煤调入
|
|
175
|
-
*/const RawCoalSendIn=defineComponent({name:"rawCoalSendIn",cname:"原煤调入",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
176
|
-
},setup(){const chartRef=ref();const chartIns=ref();const form=reactive({chartData:{day:[],month:[]},dayTransfer:{value:0,total:0},monthTransfer:{value:0,total:0}});const activeKey=ref("day");const initChart=data=>{chartIns.value=new Chart({container:chartRef.value,autoFit:true,height:500,renderer:"svg",theme:{maxColumnWidth:12}});chartIns.value.data(data);chartIns.value.coordinate().transpose();chartIns.value.scale("value",{});chartIns.value.axis("title",{line:null,tickLine:null,label:{style:{fill:"#fff",fontSize:19}}});chartIns.value.axis("value",{grid:null,label:null});chartIns.value.legend({position:"bottom",itemName:{style:{fill:"#fff",fontSize:19}}});chartIns.value.tooltip({shared:true,showMarkers:false,customItems:items=>{return items.map(item=>{let value=Number(item.value);if(value<0){value=-value;}return {...item,value:`${value}`};});}});chartIns.value.interval().adjust("stack").position("title*value").color("type",["#2C6FFF","#1ACAD7","l(270) 0:#FFC42D 100:#FF9214"]).style("value",(xVal,yVal)=>{if(xVal<0){return {shadowColor:"#0a1233",shadowOffsetX:6,shadowBlur:6};}return {};});chartIns.value.render();};watch(()=>form.chartData,e=>{if(e&&form.chartData[activeKey.value].length>0){if(!chartIns.value){initChart(form.chartData[activeKey.value]);}else {chartIns.value.changeData(form.chartData[activeKey.value]);}}},{immediate:true,deep:true});const tabChange=value=>{activeKey.value=value.id;if(form.chartData&&form.chartData[activeKey.value].length>0){if(!chartIns.value){initChart(form.chartData[activeKey.value]);}else {chartIns.value.changeData(form.chartData[activeKey.value]);}}};const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"rawCoalSendIn"});form.chartData=data.chartData;form.dayTransfer=data.dayTransfer;form.monthTransfer=data.monthTransfer;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(()=>{chartIns.value?.destroy();stopInterval();});return ()=>createVNode("div",{"class":"raw-coal-send-in"},[createVNode("div",{"class":"statistics"},[createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u5F53\u65E5\u8C03\u5165(\u5428)")]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value"},[form.dayTransfer.value]),createVNode("div",{"class":"total"},[form.dayTransfer.total])])]),createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u6708\u8C03\u5165\u7D2F\u8BA1(\u5428)")]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value"},[form.monthTransfer.value]),createVNode("div",{"class":"total"},[form.monthTransfer.total])])])]),createVNode("div",{"class":"chart-container"},[createVNode(CardHeaderSmall,{"title":"矿别统计","tabList":tabs$1,"onTabChange":tabChange},null),createVNode("div",{"class":"chart","ref":chartRef},null)])]);}});const mock$i={chartData:{day:[{title:"临涣焦",type:"东区","value|10-50":1},{title:"临涣焦",type:"西区","value|10-50":1},{title:"临涣焦",type:"车数",value:"@integer(-20,0)"},{title:"青东",type:"东区","value|10-50":1},{title:"青东",type:"西区","value|10-50":1},{title:"青东",type:"车数",value:"@integer(-20,0)"},{title:"孙瞳",type:"东区","value|10-50":1},{title:"孙瞳",type:"西区","value|10-50":1},{title:"孙瞳",type:"车数",value:"@integer(-20,0)"},{title:"杨柳",type:"东区","value|10-50":1},{title:"杨柳",type:"西区","value|10-50":1},{title:"杨柳",type:"车数",value:"@integer(-20,0)"},{title:"邹庄",type:"东区","value|10-50":1},{title:"邹庄",type:"西区","value|10-50":1},{title:"邹庄",type:"车数",value:"@integer(-20,0)"},{title:"袁一8",type:"西区","value|10-50":1},{title:"袁一8",type:"东区","value|10-50":1},{title:"袁一8",type:"车数",value:"@integer(-20,0)"},{title:"青东东",type:"西区","value|10-50":1},{title:"青东东",type:"东区","value|10-50":1},{title:"青东东",type:"车数",value:"@integer(-20,0)"},{title:"芦岭",type:"西区","value|10-50":1},{title:"芦岭",type:"东区","value|10-50":1},{title:"芦岭",type:"车数",value:"@integer(-20,0)"},{title:"许瞳",type:"西区","value|10-50":1},{title:"许瞳",type:"东区","value|10-50":1},{title:"许瞳",type:"车数",value:"@integer(-20,0)"},{title:"童亭",type:"西区","value|10-50":1},{title:"童亭",type:"东区","value|10-50":1},{title:"童亭",type:"车数",value:"@integer(-20,0)"},{title:"袁一10",type:"西区","value|10-50":1},{title:"袁一10",type:"东区","value|10-50":1},{title:"袁一10",type:"车数",value:"@integer(-20,0)"}],month:[{title:"临涣焦",type:"东区","value|10-50":1},{title:"临涣焦",type:"西区","value|10-50":1},{title:"临涣焦",type:"车数",value:"@integer(-20,0)"},{title:"青东",type:"东区","value|10-50":1},{title:"青东",type:"西区","value|10-50":1},{title:"青东",type:"车数",value:"@integer(-20,0)"},{title:"孙瞳",type:"东区","value|10-50":1},{title:"孙瞳",type:"西区","value|10-50":1},{title:"孙瞳",type:"车数",value:"@integer(-20,0)"},{title:"杨柳",type:"东区","value|10-50":1},{title:"杨柳",type:"西区","value|10-50":1},{title:"杨柳",type:"车数",value:"@integer(-20,0)"},{title:"邹庄",type:"东区","value|10-50":1},{title:"邹庄",type:"西区","value|10-50":1},{title:"邹庄",type:"车数",value:"@integer(-20,0)"},{title:"袁一8",type:"西区","value|10-50":1},{title:"袁一8",type:"东区","value|10-50":1},{title:"袁一8",type:"车数",value:"@integer(-20,0)"},{title:"青东东",type:"西区","value|10-50":1},{title:"青东东",type:"东区","value|10-50":1},{title:"青东东",type:"车数",value:"@integer(-20,0)"},{title:"芦岭",type:"西区","value|10-50":1},{title:"芦岭",type:"东区","value|10-50":1},{title:"芦岭",type:"车数",value:"@integer(-20,0)"},{title:"许瞳",type:"西区","value|10-50":1},{title:"许瞳",type:"东区","value|10-50":1},{title:"许瞳",type:"车数",value:"@integer(-20,0)"},{title:"童亭",type:"西区","value|10-50":1},{title:"童亭",type:"东区","value|10-50":1},{title:"童亭",type:"车数",value:"@integer(-20,0)"},{title:"袁一10",type:"西区","value|10-50":1},{title:"袁一10",type:"东区","value|10-50":1},{title:"袁一10",type:"车数",value:"@integer(-20,0)"}]},dayTransfer:{"value|100-300":1,"total|300-400":1},monthTransfer:{"value|1000-3000":1,"total|3000-4000":1}};const initChart$1=(chartId,data)=>{const chart=new Chart({container:chartId,height:120,width:460,autoFit:true,renderer:"svg",theme:{maxColumnWidth:10},appendPadding:[0,20,20]});chart.data(data);chart.scale({name:{},value:{alias:"灰分",min:0,nice:true},percent:{alias:"进度",nice:true}});chart.axis("name",{tickLine:null,line:null,label:{style:{fill:"#fff"}}});chart.axis("value",{grid:{line:{style:{stroke:"rgba(242, 243, 248, 0.04)"}}}// label: false,
|
|
177
|
-
// title: false,
|
|
178
|
-
});chart.legend(false);chart.tooltip({showCrosshairs:true,shared:true});chart.interval().position("name*value").color("#4FAAEB").style({cfg:{fill:"l(90) 0:#389AFF 1:#07143A00"}});chart.interaction("active-region");chart.render();return chart;};const warehouseStorage=defineComponent({name:"warehouseStorage",cname:"仓位存储",developer:"前端开发组",equipment:"PC",setup(props,context){const chartInstances=ref([]);const list=ref([]);const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"warehouseStorage"});list.value=data.rows;};const chartRendering=()=>{list.value.forEach((item,index)=>{if(!chartInstances.value[index]){chartInstances.value.push({chartInstance:initChart$1(`chartId${index+1}`,item.chartData)});}else {chartInstances.value[index].chartInstance.changeData(item.chartData);}});};const stopInterval=useInterval(async()=>{await getData();chartRendering();},5000);onBeforeUnmount(stopInterval);const slotInfo=val=>{return {extra:()=>{return createVNode("div",{"class":"chartHeader flex"},[createVNode("div",{"class":"value"},[val.value]),createVNode("div",{"class":"all"},[createTextVNode("/ "),val.total,createTextVNode(" "),val.unit])]);}};};return ()=>createVNode("div",{"class":"storageChart"},[list.value.map((item,index)=>createVNode(Fragment,null,[createVNode(CardHeaderSmall,{"title":item.title},slotInfo(item)),createVNode("div",{"class":"chart","id":`chartId${index+1}`},null)]))]);}});const mock$h={rows:[{title:"东区原煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]},{title:"东区精煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]},{title:"西区精煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]},{title:"西区精煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]}]};// const tempData = [
|
|
179
|
-
// {
|
|
180
|
-
// name: "东区1#",
|
|
181
|
-
// value: 2000,
|
|
182
|
-
// },
|
|
183
|
-
// {
|
|
184
|
-
// name: "东区1#",
|
|
185
|
-
// percent: 80,
|
|
186
|
-
// type: "产率",
|
|
187
|
-
// },
|
|
188
|
-
// {
|
|
189
|
-
// name: "东区2#",
|
|
190
|
-
// value: 2000,
|
|
191
|
-
// },
|
|
192
|
-
// {
|
|
193
|
-
// name: "东区2#",
|
|
194
|
-
// percent: 80,
|
|
195
|
-
// type: "产率",
|
|
196
|
-
// },
|
|
197
|
-
// {
|
|
198
|
-
// name: "西区1#",
|
|
199
|
-
// value: 2000,
|
|
200
|
-
// },
|
|
201
|
-
// {
|
|
202
|
-
// name: "西区1#",
|
|
203
|
-
// percent: 80,
|
|
204
|
-
// type: "产率",
|
|
205
|
-
// },
|
|
206
|
-
// {
|
|
207
|
-
// name: "西区2#",
|
|
208
|
-
// value: 2000,
|
|
209
|
-
// },
|
|
210
|
-
// {
|
|
211
|
-
// name: "西区2#",
|
|
212
|
-
// percent: 80,
|
|
213
|
-
// type: "产率",
|
|
214
|
-
// },
|
|
215
|
-
// {
|
|
216
|
-
// name: "西区3#",
|
|
217
|
-
// value: 2000,
|
|
218
|
-
// },
|
|
219
|
-
// {
|
|
220
|
-
// name: "西区3#",
|
|
221
|
-
// percent: 80,
|
|
222
|
-
// type: "产率",
|
|
223
|
-
// },
|
|
224
|
-
// ];
|
|
225
|
-
const props$h$1={data:Array};/**
|
|
226
|
-
* 系统生产量统计
|
|
227
|
-
*/const SystemYield=defineComponent({props:props$h$1,setup(props,ctx){const chartRef=ref();const chartIns=ref();const initChart=data=>{chartIns.value=new Chart({container:chartRef.value,autoFit:true,renderer:"svg",theme:{maxColumnWidth:14}});chartIns.value.data(data);chartIns.value.scale({value:{alias:"产量"},percent:{alias:"产率",min:0,max:100}});chartIns.value.axis("value",{position:"left",tickLine:null,label:{style:{fontSize:16,fill:"rgba(158, 172, 198, 0.6)"}},grid:{line:{style:{lineWidth:1,stroke:"rgba(158, 172, 198, 0.1)"}}},title:{text:"(t)",position:"end",offset:20,autoRotate:false,style:{y:10,fontSize:16,fill:"rgba(158, 172, 198, 0.6)"}}});chartIns.value.axis("percent",{position:"right",tickLine:null,grid:null,label:{style:{fontSize:16,fill:"rgba(158, 172, 198, 0.6)"}},title:{text:"(%)",position:"end",offset:20,autoRotate:false,style:{y:10,fontSize:16,fill:"rgba(158, 172, 198, 0.6)"}}});chartIns.value.axis("name",{tickLine:null,line:{style:{stroke:"rgba(158, 172, 198, 0.3)"}},label:{style:{fontSize:16,fill:"#fff"}}});chartIns.value.tooltip({shared:true});chartIns.value.legend({position:"top",itemName:{style:{fontSize:14,fill:"#fff"}},marker:{symbol:"square",style:{fill:"#FF9415"}}});chartIns.value.interval().position("name*value").style({fill:"l(90) 0:#1E70FF 1:#00000000"});chartIns.value.line().position("name*percent").color("type",["#FF9415"]);chartIns.value.render();};watch(()=>props.data,e=>{if(e&&e.length>0){if(!chartIns.value){initChart(e);}else {chartIns.value.changeData(e);}}},{immediate:true,deep:true});// onMounted(initChart);
|
|
228
|
-
onBeforeUnmount(()=>chartIns.value?.destroy());return ()=>createVNode("div",{"class":"systemYield"},[createVNode(CardHeaderSmall,{"title":"系统生产量统计"},null),createVNode("div",{"ref":chartRef},null)]);}});const colorList=["l(90) 0:#5CABFF 1:#00000000","l(90) 0:#FFD85C 1:#00000000","l(90) 0:#F54D59 1:#00000000","l(90) 0:#3A4AB0 1:#00000000","l(90) 0:#22C96A 1:#00000000","l(90) 0:#8F959E 1:#00000000"];// const tempData = [
|
|
229
|
-
// { name: "肥", value: 14000 },
|
|
230
|
-
// { name: "焦", value: 9000 },
|
|
231
|
-
// { name: "1/3焦", value: 8000 },
|
|
232
|
-
// { name: "中", value: 15000 },
|
|
233
|
-
// { name: "煤泥", value: 12000 },
|
|
234
|
-
// { name: "矸石", value: 6000 },
|
|
235
|
-
// ];
|
|
236
|
-
const props$g$1={data:Array};/**
|
|
237
|
-
* 煤种生产量统计
|
|
238
|
-
*/const CoalRankYield=defineComponent({props:props$g$1,setup(props,ctx){const chartRef=ref();const chartIns=ref();const initChart=data=>{chartIns.value=new Chart({container:chartRef.value,autoFit:true,renderer:"svg",appendPadding:[20,0,0,0],theme:{maxColumnWidth:18}});chartIns.value.data(data);chartIns.value.scale({value:{min:0}});chartIns.value.axis("value",{tickLine:null,grid:{line:{style:{stroke:"rgba(242, 243, 248, 0.14)"}}},label:{style:{fontSize:18,fill:"rgba(255, 255, 255, 0.5)"}},title:{text:"单位:t",position:"end",autoRotate:false,offset:30,style:{y:10,fontSize:18,fill:"rgba(255, 255, 255, 0.5)"}}});chartIns.value.axis("name",{tickLine:null,label:{style:{fontSize:18,fill:"rgba(255, 255, 255, 0.5)"}},line:{style:{stroke:"rgba(242, 243, 248, 0.14)"}}});chartIns.value.legend(false);chartIns.value.tooltip({showTitle:false});chartIns.value.interval().position("name*value").color("name",colorList).style({radius:[4,4,0,0]});// chartIns.value.
|
|
239
|
-
chartIns.value.render();};watch(()=>props.data,e=>{if(e&&e.length>0){if(!chartIns.value){initChart(e);}else {chartIns.value.changeData(e);}}},{immediate:true,deep:true});// onMounted(initChart);
|
|
240
|
-
onBeforeUnmount(()=>chartIns.value?.destroy());return ()=>createVNode("div",{"class":"coalRank-yield"},[createVNode(CardHeaderSmall,{"title":"煤种生产量统计"},null),createVNode("div",{"ref":chartRef},null)]);}});const tabsList$1=[{name:"当日",id:"day"},{name:"当月",id:"month"}];/**
|
|
241
|
-
* 生产统计
|
|
242
|
-
*/const ProductionStatistics=defineComponent({name:"productionStatistics",cname:"生产统计",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number,tabId:String},setup(_props,_ctx){const form=reactive({systemYieldData:[],coalRankYieldData:[]});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"productionStatistics"});form.systemYieldData=data.systemYieldData;form.coalRankYieldData=data.coalRankYieldData;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);onMounted(()=>{_ctx.emit("getTabs",tabsList$1);});return ()=>createVNode("div",{"class":"production-statistics"},[createVNode(SystemYield,{"data":form.systemYieldData[_props.tabId||""]},null),createVNode(CoalRankYield,{"data":form.coalRankYieldData[_props.tabId||""]},null)]);}});/**
|
|
243
|
-
* 计划统计信息
|
|
244
|
-
*/const PlanItem=defineComponent({props:{name:{type:String,required:true},value:{type:Number,required:true},percent:{type:Number,default:0}},setup(props){return ()=>createVNode("div",{"class":"plan-item"},[createVNode("div",{"class":"left"},[createVNode("div",{"class":"name"},[props.name]),createVNode("div",{"class":"value"},[props.value])]),createVNode(resolveComponent("a-progress"),{"type":"circle","strokeLinecap":"square","stroke-color":{"0%":"#5EF0FF","100%":"#2C6FFF"// "100%": "#5EF0FF",
|
|
245
|
-
},"strokeWidth":8,"trailColor":"transparent","width":58,"percent":props.percent,"format":percent=>createVNode("div",{"class":"value-container"},[createVNode("span",{"class":"value"},[percent]),createVNode("span",{"class":"unit"},[createTextVNode("%")])])},null)]);}});// const tempData = [
|
|
246
|
-
// { name: "许瞳", type: "东区", value: 50 },
|
|
247
|
-
// { name: "许瞳", type: "西区", value: 70 },
|
|
248
|
-
// { name: "杨柳", type: "东区", value: 30 },
|
|
249
|
-
// { name: "杨柳", type: "西区", value: 40 },
|
|
250
|
-
// { name: "青东", type: "东区", value: 60 },
|
|
251
|
-
// { name: "青东", type: "西区", value: 20 },
|
|
252
|
-
// { name: "临焦", type: "东区", value: 10 },
|
|
253
|
-
// { name: "临焦", type: "西区", value: 60 },
|
|
254
|
-
// { name: "青东东", type: "东区", value: 50 },
|
|
255
|
-
// { name: "青东东", type: "西区", value: 70 },
|
|
256
|
-
// { name: "袁一10", type: "东区", value: 50 },
|
|
257
|
-
// { name: "袁一10", type: "西区", value: 70 },
|
|
258
|
-
// { name: "袁一11", type: "东区", value: 50 },
|
|
259
|
-
// { name: "袁一11", type: "西区", value: 70 },
|
|
260
|
-
// { name: "袁一12", type: "东区", value: 50 },
|
|
261
|
-
// { name: "袁一12", type: "西区", value: 70 },
|
|
262
|
-
// { name: "袁一13", type: "东区", value: 50 },
|
|
263
|
-
// { name: "袁一13", type: "西区", value: 70 },
|
|
264
|
-
// { name: "袁一14", type: "东区", value: 50 },
|
|
265
|
-
// { name: "袁一14", type: "西区", value: 70 },
|
|
266
|
-
// { name: "袁一15", type: "东区", value: 50 },
|
|
267
|
-
// { name: "袁一15", type: "西区", value: 70 },
|
|
268
|
-
// ];
|
|
269
|
-
const props$f$1={data:Array};/**
|
|
270
|
-
* 左侧条形图
|
|
271
|
-
*/const BarChart$1=defineComponent({props:props$f$1,setup(props,ctx){const chartRef=ref();const chartIns=ref();const initChart=data=>{chartIns.value=new Chart({container:chartRef.value,autoFit:true,renderer:"svg",appendPadding:[0,30,0,0],theme:{maxColumnWidth:6}});chartIns.value.coordinate().transpose();chartIns.value.data(data);chartIns.value.scale("value",{alias:"单位:吨"});chartIns.value.axis("value",{label:null,grid:null,tickLine:null});chartIns.value.axis("name",{label:{style:{fill:"#fff",fontSize:14}},line:null,tickLine:null});chartIns.value.tooltip({shared:true,showMarkers:false});chartIns.value.legend({position:"bottom",itemName:{style:{fill:"#fff",fontSize:14}}});chartIns.value.interval().adjust("stack").position("name*value").color("type",["l(0) 0:#00000000 1:#5EF0FF","l(0) 0:#00000000 1:#2C6FFF"]).label("value",{position:"right",style:{x:300,fontSize:14,fill:"#fff"},content:obj=>{if(obj.type==="东区")return "";const res=data.filter(item=>item.name===obj.name).reduce((total,curr)=>{return total+curr.value;},0);return ""+res;}}).style({radius:[3,3,0,0]});chartIns.value.render();};watch(()=>props.data,e=>{if(e&&e.length>0){if(!chartIns.value){initChart(e);}else {chartIns.value.changeData(e);}}},{immediate:true,deep:true});// onMounted();
|
|
272
|
-
onBeforeUnmount(()=>chartIns.value?.destroy());return ()=>createVNode("div",{"class":"bar-chart","ref":chartRef},null);}});// const tempData = [
|
|
273
|
-
// { name: "普肥", value: 13000 },
|
|
274
|
-
// { name: "低肥", value: 6000 },
|
|
275
|
-
// { name: "焦肥", value: 14000 },
|
|
276
|
-
// { name: "1/3肥", value: 8000 },
|
|
277
|
-
// ];
|
|
278
|
-
const props$e$1={data:Array};/**
|
|
279
|
-
* 右侧柱状图
|
|
280
|
-
*/const HistogramChart=defineComponent({props:props$e$1,setup(props,ctx){const chartRef=ref();const chartIns=ref();const initChart=data=>{chartIns.value=new Chart({container:chartRef.value,autoFit:true,renderer:"svg",appendPadding:[40,0,10,0],theme:{maxColumnWidth:12}});chartIns.value.data(data);chartIns.value.scale("value",{min:0,nice:true});chartIns.value.axis("name",{tickLine:null,line:{style:{stroke:"rgba(242, 243, 248, 0.14)"}},label:{style:{fill:"rgba(255, 255, 255, 0.5)",fontSize:17}}});chartIns.value.axis("value",{label:{style:{fill:"rgba(255, 255, 255, 0.5)",fontSize:17}},grid:{line:{style:{stroke:"rgba(242, 243, 248, 0.14)"}}},title:{text:"单位:t",position:"end",autoRotate:false,offset:20,style:{y:20,fill:"rgba(255, 255, 255, 0.5)",fontSize:17}}});chartIns.value.tooltip({showTitle:false});chartIns.value.legend(false);chartIns.value.interval().position("name*value").color("name",["l(90) 0:#5CABFF 1:#00000000","l(90) 0:#FFD85C 1:#00000000","l(90) 0:#F54D59 1:#00000000","l(90) 0:#3A4AB0 1:#00000000"]).style({radius:[4,4,0,0]});chartIns.value.render();};watch(()=>props.data,e=>{if(e&&e.length>0){if(!chartIns.value){initChart(e);}else {chartIns.value.changeData(e);}}},{immediate:true,deep:true});// onMounted(initChart);
|
|
281
|
-
onBeforeUnmount(()=>chartIns.value?.destroy());return ()=>createVNode("div",{"class":"histogram-chart","ref":chartRef},null);}});/**
|
|
282
|
-
* 生产评价2 上方圆环进度条 下方条形图、柱状图
|
|
283
|
-
*/const ProductionPlan2=defineComponent({name:"productionPlan2",cname:"生产评价2",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
284
|
-
},setup(){const form=reactive({annualPlan:{rawCoal:{value:0,percentage:0},cleanCoal:{value:0,percentage:0}},monthlyPlan:{rawCoal:{value:0,percentage:0},cleanCoal:{value:0,percentage:0}},monthlyTransferIn:{value:0,total:0},dayTransferIn:{value:0,total:0},barData:[],histogramData:[]});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"productionPlan2"});form.annualPlan=data.annualPlan;form.monthlyPlan=data.monthlyPlan;form.monthlyTransferIn=data.monthlyTransferIn;form.dayTransferIn=data.dayTransferIn;form.barData=data.barData;form.histogramData=data.histogramData;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"production-plan2"},[createVNode("div",{"class":"plan"},[createVNode("div",{"class":"plan-container"},[createVNode("div",{"class":"plan-title"},[createTextVNode("\u5E74\u8BA1\u5212")]),createVNode("div",{"class":"plan-list"},[createVNode(PlanItem,{"name":"原煤(万吨)","value":form.annualPlan.rawCoal.value,"percent":form.annualPlan.rawCoal.percentage},null),createVNode(PlanItem,{"name":"精煤(万吨)","value":form.annualPlan.cleanCoal.value,"percent":form.annualPlan.cleanCoal.percentage},null)])]),createVNode("div",{"class":"plan-container"},[createVNode("div",{"class":"plan-title"},[createTextVNode("\u6708\u8BA1\u5212")]),createVNode("div",{"class":"plan-list"},[createVNode(PlanItem,{"name":"原煤(万吨)","value":form.monthlyPlan.rawCoal.value,"percent":form.monthlyPlan.rawCoal.percentage},null),createVNode(PlanItem,{"name":"精煤(万吨)","value":form.monthlyPlan.cleanCoal.value,"percent":form.monthlyPlan.cleanCoal.percentage},null)])])]),createVNode("div",{"class":"bottom-container"},[createVNode("div",{"class":"left"},[createVNode(CardHeaderSmall,{"title":"原煤调入量排序"},null),createVNode(BarChart$1,{"data":form.barData},null)]),createVNode("div",{"class":"right"},[createVNode("div",{"class":"statistics-container"},[createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u6708\u8C03\u5165(\u5428)")]),createVNode("div",{"class":"content"},[createVNode("span",{"class":"value"},[form.monthlyTransferIn.value]),createVNode("span",{"class":"total"},[createTextVNode("/")]),createVNode("span",{"class":"total"},[form.monthlyTransferIn.total]),createVNode("span",{"class":"total"},[createTextVNode("t")])])]),createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u5F53\u65E5\u8C03\u5165(\u5428)")]),createVNode("div",{"class":"content"},[createVNode("span",{"class":"value"},[form.dayTransferIn.value]),createVNode("span",{"class":"total"},[createTextVNode("/")]),createVNode("span",{"class":"total"},[form.dayTransferIn.total]),createVNode("span",{"class":"total"},[createTextVNode("t")])])])]),createVNode(HistogramChart,{"data":form.histogramData},null)])])]);}});const mock$g={annualPlan:{rawCoal:{"value|0-100000000":1,"percentage|0-100":1},cleanCoal:{"value|0-100000000":1,"percentage|0-100":1}},monthlyPlan:{rawCoal:{"value|0-2000000":1,"percentage|0-100":1},cleanCoal:{"value|0-2000000":1,"percentage|0-100":1}},monthlyTransferIn:{"value|0-1000000":1,"total|1000000-2000000":1},dayTransferIn:{"value|0-50000":1,"total|50000-100000":1},barData:[{name:"许瞳",type:"东区","value|1-100":1},{name:"许瞳",type:"西区","value|1-100":1},{name:"杨柳",type:"东区","value|1-100":1},{name:"杨柳",type:"西区","value|1-100":1},{name:"青东",type:"东区","value|1-100":1},{name:"青东",type:"西区","value|1-100":1},{name:"临焦",type:"东区","value|1-100":1},{name:"临焦",type:"西区","value|1-100":1},{name:"青东东",type:"东区","value|1-100":1},{name:"青东东",type:"西区","value|1-100":1},{name:"袁一10",type:"东区","value|1-100":1},{name:"袁一10",type:"西区","value|1-100":1},{name:"袁一11",type:"东区","value|1-100":1},{name:"袁一11",type:"西区","value|1-100":1},{name:"袁一12",type:"东区","value|1-100":1},{name:"袁一12",type:"西区","value|1-100":1},{name:"袁一13",type:"东区","value|1-100":1},{name:"袁一13",type:"西区","value|1-100":1},{name:"袁一14",type:"东区","value|1-100":1},{name:"袁一14",type:"西区","value|1-100":1},{name:"袁一15",type:"东区","value|1-100":1},{name:"袁一15",type:"西区","value|1-100":1}],histogramData:[{name:"普肥","value|1000-10000":1},{name:"低肥","value|1000-10000":1},{name:"焦肥","value|1000-10000":1},{name:"1/3肥","value|1000-10000":1}]};const chart=[ProductionPlan,WashingRawCoalQuantity,RawCoalSendIn,warehouseStorage,ProductionStatistics,ProductionPlan2];const props$d$1={name:String,id:String,activeKey:String};var tabsItem=defineComponent({props:props$d$1,setup(_props,_context){const classes=ref("tab_item");const activeKey=ref("");watch(()=>_props.activeKey,e=>{if(e){activeKey.value=e;}classes.value=activeKey?.value===_props.id?"tab_item tab_item_active":"tab_item";},{immediate:true});return ()=>createVNode("div",{"class":classes.value},[_props.name]);}});const props$c$1={tabs:{type:Array},activeKey:{type:String}};var tabs$4=defineComponent({components:{tabsItem},props:props$c$1,emits:["update:activeKey","change"],setup(_props,_context){const activeKey=ref("");watch(()=>_props.activeKey,e=>{activeKey.value=`${e}`;},{immediate:true});return ()=>createVNode("div",{"class":"tab"},[_props.tabs?.map(item=>createVNode(tabsItem,{"activeKey":activeKey.value,"onUpdate:activeKey":$event=>activeKey.value=$event,"name":item.name,"id":item.id,"onClick":()=>{activeKey.value=item.id;_context.emit("update:activeKey",item.id);_context.emit("change",item);}},null))]);}});function _isSlot$1$1(s){return typeof s==='function'||Object.prototype.toString.call(s)==='[object Object]'&&!isVNode(s);}const props$b$1={componentName:{type:String,default:"demoCard",required:true},titleName:{type:String,default:"默认卡片",required:true},tabList:{type:Array},params:{type:Object,default:{}},showHeader:{type:Boolean,default:true},index:{type:Number,default:-1},theme:{type:String,default:"light"},iframeUrl:String};var CardBoxOld=defineComponent({components:{tabs: tabs$4},props:props$b$1,setup(_props,_ctx){const componentName=resolveComponent(`${prefix$2}-${_props.componentName}`);const activeKey=ref("");const tabList=ref([]);watch(()=>_props.tabList,e=>{if(e){tabList.value=e||[];if(tabList.value.length>0){activeKey.value=tabList.value[0].id;}}},{immediate:true,deep:true});return ()=>{let _slot;return createVNode("div",{"class":prefix$2+"_box "+prefix$2+"_box_"+_props.theme},[_props.showHeader?createVNode("div",{"class":prefix$2+"_box-header"},[createVNode("div",{"class":prefix$2+"_box-header-title"},[_props.theme==="dark"?createVNode("img",{"src":"/micro-assets/bigScreen/diamond.png"},null):null,createVNode("span",null,[_props.titleName])]),tabList.value&&tabList.value.length>0?createVNode(resolveComponent("a-tabs"),{"activeKey":activeKey.value,"onUpdate:activeKey":$event=>activeKey.value=$event,"tab-position":"top","size":"small","tabBarGutter":15},_isSlot$1$1(_slot=tabList.value.map(item=>createVNode(resolveComponent("a-tab-pane"),{"key":item.id,"tab":item.name},null)))?_slot:{default:()=>[_slot]}):null]):null,createVNode("div",{"class":prefix$2+"_box-body"},[_props.iframeUrl?createVNode("iframe",{"src":_props.iframeUrl,"frameborder":"0","style":{width:"100%",height:"100%"}},null):createVNode(componentName,{"tabId":activeKey.value,"workShopType":_props.params?.workShopType,"cardCode":_props.params?.cardCode,"prefix":_props.params?.prefix,"serverName":_props.params?.serverName,"timeout":_props.params?.timeout,"index":_props.index,"onGetTabs":data=>{tabList.value=data;activeKey.value=data[0].id;}},null)])]);};}});function _isSlot$15(s){return typeof s==='function'||Object.prototype.toString.call(s)==='[object Object]'&&!isVNode(s);}const props$a$1={componentName:{type:String,default:"demoCard",required:true},titleName:{type:String,default:"默认卡片",required:true},tabList:{type:Array},params:{type:Object,default:{}},showHeader:{type:Boolean,default:true},index:{type:Number,default:-1},theme:{type:String,default:"light"},iframeUrl:String};var CardBoxV2=defineComponent({components:{tabs: tabs$4},props:props$a$1,setup(_props,_ctx){const componentName=resolveComponent(`${prefix$2}-${_props.componentName}`);const activeKey=ref("");const tabList=ref([]);const renderTool=ref(()=>{});watch(()=>_props.tabList,e=>{if(e){tabList.value=e||[];if(tabList.value.length>0){activeKey.value=tabList.value[0].id;}}},{immediate:true,deep:true});return ()=>{let _slot;return createVNode("div",{"class":"boxV2 "+prefix$2+"_box "+prefix$2+"_box_"+_props.theme},[_props.showHeader?createVNode("div",{"class":prefix$2+"_box-header"},[createVNode("div",{"class":prefix$2+"_box-header-title"},[_props.theme==="dark"?createVNode("img",{"src":"/micro-assets/bigScreen/diamond.png","alt":""},null):null,createVNode("span",null,[componentName.cname])]),_ctx.slots.headerTool?_ctx.slots.headerTool():null,renderTool.value(),tabList.value&&tabList.value.length>0?createVNode(resolveComponent("a-tabs"),{"activeKey":activeKey.value,"onUpdate:activeKey":$event=>activeKey.value=$event,"tab-position":"top","size":"small","tabBarGutter":15},_isSlot$15(_slot=tabList.value.map(item=>createVNode(resolveComponent("a-tab-pane"),{"key":item.id,"tab":item.name},null)))?_slot:{default:()=>[_slot]}):null]):null,createVNode("div",{"class":`${prefix$2}_box-body cardBody ${_props.params?.noPadding==="true"?"noPadding":""}`},[_props.iframeUrl?createVNode("iframe",{"src":_props.iframeUrl,"frameborder":"0","style":{width:"100%",height:"100%"}},null):createVNode(componentName,{"tabId":activeKey.value,"workShopType":_props.params?.workShopType,"cardCode":_props.params?.cardCode,"prefix":_props.params?.prefix,"serverName":_props.params?.serverName,"timeout":_props.params?.timeout,"index":_props.index,"onRenderTool":val=>{renderTool.value=val;},"onGetTabs":data=>{tabList.value=data;activeKey.value=data[0].id;}},null)])]);};}});const props$9$1={componentName:{type:String,default:"default",required:true},titleName:{type:String,default:"默认卡片",required:true},tabList:{type:Array},params:{type:Object,default:{}},showHeader:{type:Boolean,default:true},index:{type:Number,default:-1},theme:{type:String,default:"light"},renderStyle:{type:String,default:"Old"},iframeUrl:String};var CardBox=defineComponent({components:{tabs: tabs$4,CardBoxOld,CardBoxV2},props:props$9$1,setup(_props,_ctx){const componentName=resolveComponent(`CardBox${_props.renderStyle}`);return ()=>createVNode("div",{"style":{width:"100%",height:"100%"}},[createVNode(componentName,_props,null)]);}});const storageInfo$2=defineComponent({name:"storageInfo",cname:"仓储信息",developer:"前端开发组",equipment:"PC",components:{CardBox},props:{params:{type:Object,default:{}}},setup(prop,context){const diaData=reactive({showDia:false,noPadding:"true"});const storageData=ref([{name:"原煤仓",value:"33"},{name:"产品仓",value:"334"}]);// simple or detail
|
|
285
|
-
const diaType=ref("simple");const getData=async()=>{const res=await instance$1$1.post("/getCardData",{card:"storageInfo"});storageData.value=res.data;};onMounted(async()=>{diaType.value=prop.params.local;});const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);const openDia=()=>{diaData.showDia=true;};const renderTool=()=>{return createVNode("div",{"class":"btn blue","onClick":()=>{openDia();}},[createTextVNode("\u8BE6\u60C5")]);};context.emit("renderTool",renderTool);// 弹窗
|
|
286
|
-
const renderDia=()=>{return createVNode("div",{"class":"storageDia"},[createVNode(CardBox,{"theme":"dark","titleName":"仓位存储","componentName":diaType.value==="detail"?"storageDia":"storageDiaSimple","params":diaData,"renderStyle":"V2"},null)]);};return ()=>createVNode("div",{"class":"storageInfo flex"},[diaData.showDia?renderDia():"",storageData.value.map(storage=>{return createVNode("div",{"class":"ele"},[createVNode("div",{"class":"name"},[storage.name]),createVNode("div",{"class":"value flex"},[createVNode("div",{"class":"number"},[storage.value]),createVNode("div",{"class":"unit"},[createTextVNode("t")])])]);})]);}});const mock$f=[{name:"原煤仓","value|0-8000":1},{name:"产品仓","value|0-8000":1}];const initChart$d=(chartId,data)=>{const chart=new Chart({container:chartId,height:120,width:460,autoFit:true,renderer:"svg",theme:{maxColumnWidth:10},appendPadding:[0,20,20]});chart.data(data);chart.scale({name:{},value:{alias:"灰分",min:0,nice:true},percent:{alias:"进度",nice:true}});chart.axis("name",{tickLine:null,line:null,label:{style:{fill:"#fff"}}});chart.axis("value",{grid:{line:{style:{stroke:"rgba(242, 243, 248, 0.04)"}}}// label: false,
|
|
287
|
-
// title: false,
|
|
288
|
-
});chart.legend(false);chart.tooltip({showCrosshairs:true,shared:true});chart.interval().position("name*value").color("#4FAAEB").style({cfg:{fill:"l(90) 0:#389AFF 1:#07143A00"}});chart.interaction("active-region");chart.render();return chart;};const storageInfo$1=defineComponent({name:"storageDiaSimple",cname:"仓储弹窗",developer:"前端开发组",equipment:"PC",props:{params:{type:Object,default:{}}},setup(props,context){const chartInstances=ref([]);const list=ref([]);reactive({showDia:false});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"storageDiaSimple"});list.value=data.rows;};const chartRendering=()=>{list.value.forEach((item,index)=>{if(!chartInstances.value[index]){chartInstances.value.push({chartInstance:initChart$d(`chartId${index+1}`,item.chartData)});}else {chartInstances.value[index].chartInstance.changeData(item.chartData);}});};const stopInterval=useInterval(async()=>{await getData();chartRendering();},5000);onBeforeUnmount(stopInterval);const renderTool=()=>{return createVNode("div",{"class":"btn blue","onClick":()=>{props.params.showDia=false;}},[createTextVNode("\xD7")]);};context.emit("renderTool",renderTool);return ()=>createVNode("div",{"class":"storageChart simple"},[list.value.map((item,index)=>createVNode(Fragment,null,[createVNode(CardHeaderSmall,{"title":item.title},null),createVNode("div",{"class":"chart","id":`chartId${index+1}`},null)]))]);}});const mock$e={rows:[{title:"东区原煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]},{title:"东区精煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]},{title:"西区精煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]},{title:"西区精煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]}]};const storageInfo=defineComponent({name:"storageDia",cname:"仓储弹窗",developer:"前端开发组",equipment:"PC",props:{params:{type:Object,default:{}}},setup(props,context){const chartInstances=ref([]);const list=ref([]);reactive({showDia:false});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"storageDia"});list.value=data.rows;};const chartRendering=()=>{list.value.forEach((item,index)=>{if(!chartInstances.value[index]){chartInstances.value.push({chartInstance:initChart$d(`chartId${index+1}`,item.chartData)});}else {chartInstances.value[index].chartInstance.changeData(item.chartData);}});};const stopInterval=useInterval(async()=>{await getData();chartRendering();},5000);onBeforeUnmount(stopInterval);const renderTool=()=>{return createVNode("div",{"class":"btn blue","onClick":()=>{props.params.showDia=false;}},[createTextVNode("\xD7")]);};context.emit("renderTool",renderTool);return ()=>createVNode("div",{"class":"storageChart"},[list.value.map((item,index)=>createVNode(Fragment,null,[createVNode(CardHeaderSmall,{"title":item.title},null),createVNode("div",{"class":"chart","id":`chartId${index+1}`},null)]))]);}});const mock$d={rows:[{title:"东区原煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]},{title:"东区精煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]},{title:"西区精煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]},{title:"西区精煤","total|5000-10000":1,"value|1000-5000":1,unit:"t",chartData:[{name:"临涣","value|10-50":1,"percent|1-100":1},{name:"杨柳","value|10-50":1,"percent|1-100":1},{name:"许瞳","value|10-50":1,"percent|1-100":1},{name:"孙瞳","value|10-50":1,"percent|1-100":1},{name:"青东","value|10-50":1,"percent|1-100":1},{name:"邹庄","value|10-50":1,"percent|1-100":1},{name:"袁一","value|10-50":1,"percent|1-100":1}]}]};const columns$2$1=[{title:"排名",customRender({index}){const rank=index+1;return createVNode("div",{"class":`rank rank${rank}`},[rank]);}},{title:"煤种",dataIndex:"varietyCoal"},{title:"外运量",dataIndex:"outboundTraffic"},{title:"焦化量",dataIndex:"cokingQuantity"},{title:"灰分(%)",dataIndex:"ashContent"},{title:"水分%",dataIndex:"waterContent"}];/**
|
|
289
|
-
* 精煤
|
|
290
|
-
*/const CleanCoal=defineComponent({props:{tabList:{type:Array,required:true},data:{type:Object}},setup(props,ctx){const chartRef=ref();const chartIns=ref();const activeKey=ref("day");const form=ref();const initChart=data=>{chartIns.value=new Chart({container:chartRef.value,autoFit:true,height:240,appendPadding:[20,0,10,40],renderer:"svg",theme:{maxColumnWidth:17}});chartIns.value.data(data);chartIns.value.scale("value",{nice:true});chartIns.value.axis("label",{label:{style:{fill:"rgba(255, 255, 255, 0.5)",fontSize:22}},line:{style:{stroke:"rgba(242, 243, 248, 0.14)",lineHeight:1}},tickLine:null});chartIns.value.axis("value",{title:{text:"单位:t",position:"end",autoRotate:false,spacing:-20,style:{fill:"rgba(255, 255, 255, 0.4)",fontSize:22,x:50,y:10}},label:{style:{fill:"rgba(255, 255, 255, 0.5)",fontSize:22}},grid:{line:{style:{stroke:"rgba(242, 243, 248, 0.14)",lineHeight:1}}}});chartIns.value.tooltip({showMarkers:false});chartIns.value.legend(false);chartIns.value.interaction("active-region");chartIns.value.interval().position("label*value").color("label",["l(270) 0:#00000000 100:#5CABFF","l(270) 0:#00000000 100:#FFD85C","l(270) 0:#00000000 100:#F54D59","l(270) 0:#00000000 100:#3A4AB0"]).style({radius:[4,4,0,0]});chartIns.value.render();};const tabChange=val=>{activeKey.value=val.id;if(!chartIns.value){initChart(form.value?.chartData[activeKey.value]);}else {chartIns.value.changeData(form.value?.chartData[activeKey.value]);}};watch(()=>props.data,e=>{if(e){form.value=e;if(form.value){if(!chartIns.value){initChart(form.value.chartData[activeKey.value]);}else {chartIns.value.changeData(form.value.chartData[activeKey.value]);}}}},{immediate:true,deep:true});onBeforeUnmount(()=>chartIns.value?.destroy());return ()=>createVNode("div",{"class":"clean-coal"},[createVNode(CardHeaderSmall,{"title":"精煤","tabList":props.tabList,"onTabChange":tabChange},null),createVNode("div",{"class":"chart-container"},[createVNode("div",{"ref":chartRef},null)]),createVNode(resolveComponent("a-table"),{"class":"dark-table2 striped","pagination":false,"columns":columns$2$1,"dataSource":form.value?.tableData[activeKey.value].list},{bodyCell:({column,record})=>{if(column.dataIndex==="varietyCoal"){return createVNode("span",{"style":{color:"#1CEFFF"}},[record.varietyCoal]);}},summary:()=>createVNode(resolveComponent("a-table-summary-row"),null,{default:()=>[createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[createTextVNode("\u5408\u8BA1")]}),createVNode(resolveComponent("a-table-summary-cell"),null,null),createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[form.value?.tableData[activeKey.value].total.outboundTraffic]}),createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[form.value?.tableData[activeKey.value].total.cokingQuantity]}),createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[form.value?.tableData[activeKey.value].total.ashContent]}),createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[form.value?.tableData[activeKey.value].total.waterContent]})]})})]);}});const columns$1$1=[{title:"煤种",dataIndex:"varietyCoal"},{title:"电厂",dataIndex:"powerPlant"},{title:"汽运",dataIndex:"carTransport"},{title:"灰分",dataIndex:"ashContent"},{title:"水分",dataIndex:"waterContent"}];/**
|
|
291
|
-
* 煤泥
|
|
292
|
-
*/const CoalSlime=defineComponent({props:{tabList:{type:Array,required:true},data:{type:Object}},setup(props){const form=ref();const activeKey=ref("day");const tabChange=val=>{activeKey.value=val.id;};watch(()=>props.data,e=>{if(e){form.value=e;}},{immediate:true,deep:true});return ()=>createVNode("div",{"class":"coal-slime"},[createVNode(CardHeaderSmall,{"title":"煤泥","tabList":props.tabList,"onTabChange":tabChange},null),createVNode("div",{"class":"statistics"},[createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u5E72\u7164\u6CE5\u5916\u8FD0\u91CF")]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value"},[form.value?.data.drySlime[activeKey.value].value]),createVNode("div",{"class":"total"},[createTextVNode("\u6708")]),createVNode("div",{"class":"total"},[form.value?.data.drySlime[activeKey.value].total])])]),createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u6E7F\u7164\u6CE5\u5916\u8FD0\u91CF")]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value"},[form.value?.data.wetSlime[activeKey.value].value]),createVNode("div",{"class":"total"},[createTextVNode("\u6708")]),createVNode("div",{"class":"total"},[form.value?.data.wetSlime[activeKey.value].total])])])]),createVNode(resolveComponent("a-table"),{"class":"dark-table2","pagination":false,"columns":columns$1$1,"dataSource":form.value?.tableData[activeKey.value].list},{bodyCell:({column,record})=>{if(column.dataIndex==="varietyCoal"){return createVNode("span",{"style":{color:"#1CEFFF"}},[record.varietyCoal]);}},summary:()=>createVNode(resolveComponent("a-table-summary-row"),null,{default:()=>[createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[createTextVNode("\u5408\u8BA1")]}),createVNode(resolveComponent("a-table-summary-cell"),null,null),createVNode(resolveComponent("a-table-summary-cell"),null,null),createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[form.value?.tableData[activeKey.value].total.ashContent]}),createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[form.value?.tableData[activeKey.value].total.waterContent]})]})})]);}});const columns$f=[{title:"煤种",dataIndex:"varietyCoal"},{title:"电厂",dataIndex:"powerPlant"},{title:"汽运",dataIndex:"carTransport"},{title:"灰分",dataIndex:"ashContent"},{title:"水分",dataIndex:"waterContent"}];/**
|
|
293
|
-
* 中矸
|
|
294
|
-
*/const Medium=defineComponent({props:{tabList:{type:Array,required:true},data:{type:Object}},setup(props){const form=ref();const activeKey=ref("day");const tabChange=val=>{activeKey.value=val.id;};watch(()=>props.data,e=>{if(e){form.value=e;}},{immediate:true,deep:true});return ()=>createVNode("div",{"class":"medium"},[createVNode(CardHeaderSmall,{"title":"中矸","tabList":props.tabList,"onTabChange":tabChange},null),createVNode("div",{"class":"statistics"},[createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u4E2D\u77F8\u5916\u8FD0\u91CF")]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value"},[form.value?.data.mediumGangue[activeKey.value].value]),createVNode("div",{"class":"total"},[createTextVNode("\u6708")]),createVNode("div",{"class":"total"},[form.value?.data.mediumGangue[activeKey.value].total])])])]),createVNode(resolveComponent("a-table"),{"class":"dark-table2","pagination":false,"columns":columns$f,"dataSource":form.value?.tableData[activeKey.value].list},{bodyCell:({column,record})=>{if(column.dataIndex==="varietyCoal"){return createVNode("span",{"style":{color:"#1CEFFF"}},[record.varietyCoal]);}},summary:()=>createVNode(resolveComponent("a-table-summary-row"),null,{default:()=>[createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[createTextVNode("\u5408\u8BA1")]}),createVNode(resolveComponent("a-table-summary-cell"),null,null),createVNode(resolveComponent("a-table-summary-cell"),null,null),createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[form.value?.tableData[activeKey.value].total.ashContent]}),createVNode(resolveComponent("a-table-summary-cell"),null,{default:()=>[form.value?.tableData[activeKey.value].total.waterContent]})]})})]);}});const tabList=[{id:"day",name:"日"},{id:"month",name:"月"}];/**
|
|
295
|
-
* 外运统计
|
|
296
|
-
*/const OutTransportStatistics=defineComponent({name:"outTransportStatistics",cname:"外运统计",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
297
|
-
},setup(){const form=reactive({});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"outTransportStatistics"});form.cleanCoal=data.cleanCoal;form.coalSlime=data.coalSlime;form.medium=data.medium;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"out-transport-statistics"},[createVNode("div",{"class":"statistics"},[createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u7CBE\u7164\u5916\u8FD0\u91CF")]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value"},[form.cleanCoal?.value]),createVNode("div",{"class":"total"},[createTextVNode("\u6708")]),createVNode("div",{"class":"total"},[form.cleanCoal?.total])])]),createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u7164\u6CE5\u5916\u8FD0\u91CF")]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value"},[form.coalSlime?.value]),createVNode("div",{"class":"total"},[createTextVNode("\u6708")]),createVNode("div",{"class":"total"},[form.coalSlime?.total])])]),createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[createTextVNode("\u4E2D\u77F8\u5916\u8FD0\u91CF")]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value"},[form.medium?.value]),createVNode("div",{"class":"total"},[createTextVNode("\u6708")]),createVNode("div",{"class":"total"},[form.medium?.total])])])]),createVNode(CleanCoal,{"tabList":tabList,"data":form.cleanCoal},null),createVNode(CoalSlime,{"tabList":tabList,"data":form.coalSlime},null),createVNode(Medium,{"tabList":tabList,"data":form.medium},null)]);}});const mock$c={cleanCoal:{"value|100-500":1,"total|1000-2000":1,chartData:{day:[{label:"普肥","value|5000-20000":1},{label:"低肥","value|5000-20000":1},{label:"焦煤","value|5000-20000":1},{label:"1/3焦","value|5000-20000":1}],month:[{label:"普肥","value|5000-20000":1},{label:"低肥","value|5000-20000":1},{label:"焦煤","value|5000-20000":1},{label:"1/3焦","value|5000-20000":1}]},tableData:{day:{"list|5":[{varietyCoal:"@cword(3)","outboundTraffic|10000-20000":1,"cokingQuantity|1000-2000":1,"ashContent|10-20.2":1,"waterContent|10-20.2":1}],total:{"outboundTraffic|30000-50000":1,"cokingQuantity|20000-40000":1,"ashContent|10-50.2":1,"waterContent|10-50.2":1}},month:{"list|5":[{varietyCoal:"@cword(3)","outboundTraffic|10000-20000":1,"cokingQuantity|1000-2000":1,"ashContent|10-20.2":1,"waterContent|10-20.2":1}],total:{"outboundTraffic|30000-50000":1,"cokingQuantity|20000-40000":1,"ashContent|10-50.2":1,"waterContent|10-50.2":1}}}},coalSlime:{"value|100-500":1,"total|1000-2000":1,data:{drySlime:{day:{"value|100-500":1,"total|1000-2000":1},month:{"value|100-500":1,"total|1000-2000":1}},wetSlime:{day:{"value|100-500":1,"total|1000-2000":1},month:{"value|100-500":1,"total|1000-2000":1}}},tableData:{day:{"list|5":[{varietyCoal:"@cword(3)",powerPlant:"临涣电厂@cword('一二三四五六七八九',1)","powerPlant|1000-2000":1,"ashContent|10-20.2":1,"waterContent|10-20.2":1}],total:{"ashContent|10-20.2":1,"waterContent|10-20.2":1}},month:{"list|5":[{varietyCoal:"@cword(3)",powerPlant:"临涣电厂@cword('一二三四五六七八九',1)","powerPlant|1000-2000":1,"ashContent|10-20.2":1,"waterContent|10-20.2":1}],total:{"ashContent|10-20.2":1,"waterContent|10-20.2":1}}}},medium:{"value|100-500":1,"total|1000-2000":1,data:{mediumGangue:{day:{"value|100-500":1,"total|1000-2000":1},month:{"value|100-500":1,"total|1000-2000":1}}},tableData:{day:{"list|5":[{varietyCoal:"@cword(3)",powerPlant:"临涣电厂@cword('一二三四五六七八九',1)","powerPlant|1000-2000":1,"ashContent|10-20.2":1,"waterContent|10-20.2":1}],total:{"ashContent|10-20.2":1,"waterContent|10-20.2":1}},month:{"list|5":[{varietyCoal:"@cword(3)",powerPlant:"临涣电厂@cword('一二三四五六七八九',1)","powerPlant|1000-2000":1,"ashContent|10-20.2":1,"waterContent|10-20.2":1}],total:{"ashContent|10-20.2":1,"waterContent|10-20.2":1}}}}};// const tempData = [
|
|
298
|
-
// { name: "超灰度", value: 8 },
|
|
299
|
-
// { name: "合格率", value: 80 },
|
|
300
|
-
// { name: "低灰率", value: 12 },
|
|
301
|
-
// ];
|
|
302
|
-
const G$1=getEngine("svg");/**
|
|
303
|
-
* 实时灰分水分
|
|
304
|
-
*/const RealTimeAshWater=defineComponent({name:"realTimeAshWater",cname:"实时灰分水分",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
305
|
-
},setup(){const chartRef=ref();const chartIns=ref();const list=ref([]);const headers=ref([]);const chartData=ref([]);const initChart=data=>{chartIns.value=new Chart({container:chartRef.value,autoFit:true,renderer:"svg",appendPadding:[40,0,0,0]});chartIns.value.data(data);chartIns.value.scale("value",{formatter:val=>{return val+"%";}});chartIns.value.coordinate("theta",{radius:0.75,innerRadius:0.6});chartIns.value.tooltip({showTitle:false,showMarkers:false});chartIns.value.legend(false);chartIns.value.interval().position("value").color("name",["#FF9214","#1E70FF","#0AF9F2"]).label("value",{layout:[{type:"pie-spider"},{type:"hide-overlap"}],style:{fill:"#fff"},position:"middle",labelHeight:64,offsetY:-25,content:(obj,item)=>{const group=new G$1.Group({});const[y0,y1]=item.y||[0,0];const inRight=y0<y1;// const textAlign = inRight ? "left" : "right";
|
|
306
|
-
const textAlign="center";group.addShape({type:"text",attrs:{x:0,y:0,text:obj.name,fill:"rgba(255, 255, 255, 0.45)",fontSize:19,textAlign}});group.addShape({type:"text",attrs:{x:0,y:-4,text:obj.value!==undefined&&obj.value+"%",textAlign,textBaseline:"top",fill:"#fff",fontWeight:700,fontSize:27}});if(!inRight){group.translate(group.getBBox().width,0);}group.translate(0,13);return group;}}).adjust("stack");chartIns.value.interaction("element-active");chartIns.value.render();};const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"realTimeAshWater"});list.value=data.rows;headers.value=data.headers;chartData.value=data.chartData;};watch(()=>chartData.value,e=>{if(e&&e.length>0){if(!chartIns.value){initChart(e);}else {chartIns.value.changeData(e);}}},{immediate:true,deep:true});const stopInterval=useInterval(getData,5000);onBeforeUnmount(()=>{chartIns.value?.destroy();stopInterval();});return ()=>createVNode("div",{"class":"real-time-ash-water"},[createVNode("div",{"ref":chartRef,"class":"chart-container"},null),createVNode("div",{"class":"table"},[createVNode("div",{"class":"table-row"},[createVNode("div",{"class":"item-name"},null),headers.value.map(item=>createVNode("div",{"class":"system-name"},[createVNode("div",{"class":"name-text"},[item.name])]))]),createVNode("div",{"class":"table-row"},[createVNode("div",{"class":"item-name"},null),headers.value.map(item=>createVNode("div",{"class":"system-name"},[createVNode("div",{"class":"table-header"},[createTextVNode("\u7070\u5206(%)")]),createVNode("div",{"class":"table-header"},[createTextVNode("\u6C34\u5206(%)")])]))]),list.value.map(item=>createVNode("div",{"class":"table-row"},[createVNode("div",{"class":"item-name"},[item.name]),headers.value.map((val,index)=>createVNode("div",{"class":"system-name"},[createVNode("div",{"class":"value active"},[item[val.code].ashContent]),createVNode("div",{"class":"value"},[item[val.code].waterContent])]))]))])]);}});const mock$b={headers:[{name:"@cword(2)",code:"xitong1"},{name:"@cword(2)",code:"xitong2"}],"rows|5":[{name:"@cword(2)",xitong1:{"ashContent|1-10.2":1,"waterContent|1-10.2":1},xitong2:{"ashContent|1-10.2":1,"waterContent|1-10.2":1}}],chartData:[{name:"超灰度","value|10-50":1},{name:"合格率","value|10-50":1},{name:"低灰率","value|10-50":1}]};const renderItem=(img,name,value,unit)=>createVNode("div",{"class":"item"},[createVNode("div",{"class":"item-img"},[createVNode("img",{"src":`/micro-assets/card/${img}.png`,"alt":""},null)]),createVNode("div",{"class":"right"},[createVNode("div",{"class":"name"},[name]),createVNode("div",{"class":"content"},[createVNode("span",{"class":"value"},[value]),createVNode("span",{"class":"unit"},[unit])])])]);/**
|
|
307
|
-
* 消耗分析
|
|
308
|
-
*/const ConsumeAnalysis=defineComponent({name:"consumeAnalysis",cname:"消耗分析",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
309
|
-
},setup(){const form=reactive({medium:0,flocculant:0,electric:0,water:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"consumeAnalysis"});form.medium=data.medium;form.flocculant=data.flocculant;form.electric=data.electric;form.water=data.water;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"consume-analysis"},[renderItem("jiezhixiaohao","介质消耗",form.medium,"g/t"),renderItem("xuningjixiaohao","絮凝剂消耗",form.flocculant,"g/t"),renderItem("yongdianxiaohao","用电消耗",form.electric,"KW·h/t"),renderItem("yongshuixiaohao","用水消耗",form.water,"m³/t")]);}});const mock$a={"medium|100-1000":1,"flocculant|100-1000":1,"electric|100-1000":1,"water|100-1000":1};const Item$5=defineComponent({props:{name:{type:String,required:true},planValue:{type:Number},actualValue:{type:Number},processColor:{type:[String,Object]}},setup(props){const percent=computed(()=>{if(props.actualValue===undefined||props.planValue===undefined){return 0;}return Math.floor(props.actualValue/props.planValue*100);});return ()=>createVNode("div",{"class":"item"},[createVNode(resolveComponent("a-progress"),{"class":"progress","type":"circle","width":66,"strokeWidth":10,"strokeColor":props.processColor,"percent":percent.value,"strokeLinecap":"square","trailColor":"rgba(26, 202, 215, 0.1)"},{format:percent=>createVNode("div",{"class":"percent"},[createVNode("div",{"class":"value"},[percent]),createVNode("div",{"class":"unit"},[createTextVNode("%")])])}),createVNode("div",{"class":"right"},[createVNode("div",{"class":"name"},[props.name]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value-item"},[createVNode("div",{"class":"label"},[createTextVNode("\u8BA1\u5212\u91CF(t)")]),createVNode("div",{"class":"value"},[props.planValue])]),createVNode("div",{"class":"value-item"},[createVNode("div",{"class":"label"},[createTextVNode("\u5B9E\u9645\u91CF(t)")]),createVNode("div",{"class":"value value-big"},[props.actualValue])])])])]);}});/**
|
|
310
|
-
* 原煤调入2 (3个圆环进度条)
|
|
311
|
-
*/const RawCoalSendIn2=defineComponent({name:"rawCoalSendIn2",cname:"原煤调入",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
312
|
-
},setup(){const form=reactive({annualTransferIn:{planValue:0,actualValue:0},monthlyTransferIn:{planValue:0,actualValue:0},dayTransferIn:{planValue:0,actualValue:0}});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"rawCoalSendIn2"});form.annualTransferIn=data?.annualTransferIn;form.monthlyTransferIn=data?.monthlyTransferIn;form.dayTransferIn=data?.dayTransferIn;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"raw-coal-send-in2"},[createVNode(Item$5,{"name":"年调入量","processColor":{"0%":"#389AFF","100%":"#165CA9"},"planValue":form.annualTransferIn.planValue,"actualValue":form.annualTransferIn.actualValue},null),createVNode(Item$5,{"name":"月调入量","processColor":{"0%":"#3EF2FF","100%":"#0099A5"},"planValue":form.monthlyTransferIn.planValue,"actualValue":form.monthlyTransferIn.actualValue},null),createVNode(Item$5,{"name":"日调入量","processColor":{"0%":"#FFB867","100%":"#D97400"},"planValue":form.dayTransferIn.planValue,"actualValue":form.dayTransferIn.actualValue},null)]);}});const mock$9={annualTransferIn:{"planValue|5000000-10000000":1,"actualValue|0-5000000":1},monthlyTransferIn:{"planValue|1000000-2000000":1,"actualValue|0-1000000":1},dayTransferIn:{"planValue|50000-100000":1,"actualValue|0-50000":1}};const TopItem=props=>{const hour=Math.floor(props.value/60);const minute=props.value%60;return createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[props.name]),createVNode("div",{"class":"value"},[hour>0&&createVNode("span",null,[hour,createTextVNode("h")]),minute>0&&createVNode("span",null,[minute,createTextVNode("min")])])]);};const BottomItem=({name,unit,value})=>{return createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[`${name} (${unit})`]),createVNode("div",{"class":"value"},[value])]);};/**
|
|
313
|
-
* 台时日统计
|
|
314
|
-
*/const MechineTimeDayStatistics=defineComponent({name:"mechineTimeDayStatistics",cname:"台时日统计",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
315
|
-
},setup(){const form=reactive({eastArea:{production:0,overhaul:0,accident:0,ashContent:0,waterContent:0},westArea:{production:0,overhaul:0,accident:0,ashContent:0,waterContent:0},consumeData:{intermediate:0,electric:0,oil:0}});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"mechineTimeDayStatistics"});form.eastArea=data.eastArea;form.westArea=data.westArea;form.consumeData=data.consumeData;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"mechine-time-day-statistics"},[createVNode("div",{"class":"top-container"},[createVNode("div",{"class":"top-item"},[createVNode("div",{"class":"top-item-name"},[createTextVNode("\u4E1C\u533A")]),createVNode(TopItem,{"name":"生产台时","value":form.eastArea.production},null),createVNode(TopItem,{"name":"检修台时","value":form.eastArea.overhaul},null),createVNode(TopItem,{"name":"事故台时","value":form.eastArea.accident},null)]),createVNode("div",{"class":"top-item"},[createVNode("div",{"class":"top-item-name"},[createTextVNode("\u897F\u533A")]),createVNode(TopItem,{"name":"生产台时","value":form.westArea.production},null),createVNode(TopItem,{"name":"检修台时","value":form.westArea.overhaul},null),createVNode(TopItem,{"name":"事故台时","value":form.westArea.accident},null)])]),createVNode("div",{"class":"ash-water"},[createVNode(CardHeaderSmall,{"title":"灰分水分统计"},null),createVNode("div",{"class":"statistics-container"},[createVNode(BottomItem,{"name":"东区灰分","unit":"%","value":form.eastArea.ashContent},null),createVNode(BottomItem,{"name":"东区水分","unit":"%","value":form.eastArea.waterContent},null),createVNode(BottomItem,{"name":"西区灰分","unit":"%","value":form.westArea.ashContent},null),createVNode(BottomItem,{"name":"西区谁分","unit":"%","value":form.westArea.waterContent},null)])]),createVNode("div",{"class":"consume"},[createVNode(CardHeaderSmall,{"title":"消耗统计"},null),createVNode("div",{"class":"statistics-container"},[createVNode(BottomItem,{"name":"介耗","unit":"kg/t","value":form.consumeData.intermediate},null),createVNode(BottomItem,{"name":"电耗","unit":"kw/t","value":form.consumeData.electric},null),createVNode(BottomItem,{"name":"油耗","unit":"kg/t","value":form.consumeData.oil},null)])])]);}});const mock$8={eastArea:{"production|1-5000":1,"overhaul|1-5000":1,"accident|1-5000":1,"ashContent|0-80.1-2":1,"waterContent|0-90.1-2":1},westArea:{"production|1-5000":1,"overhaul|1-5000":1,"accident|1-5000":1,"ashContent|0-80.1-2":1,"waterContent|0-90.1-2":1},consumeData:{intermediate:/^[0-1]\.[1-5]$/,"electric|1-100.1-2":1,oil:/^0\.[1-5]$/}};// const tempData = [
|
|
316
|
-
// { name: "日常维护", value: 80 },
|
|
317
|
-
// { name: "大修更换", value: 12 },
|
|
318
|
-
// { name: "其他", value: 8 },
|
|
319
|
-
// ];
|
|
320
|
-
const G=getEngine("svg");const props$8$1={data:Array};/**
|
|
321
|
-
* 右侧图表
|
|
322
|
-
*/const ChartContainer=defineComponent({props:props$8$1,setup(props,ctx){const chartRef=ref();const chartIns=ref();const initChart=data=>{chartIns.value=new Chart({container:chartRef.value,autoFit:true,height:200,renderer:"svg",appendPadding:[40,20,20,20]});chartIns.value.data(data);chartIns.value.coordinate("theta",{radius:0.75,innerRadius:0.7});chartIns.value.tooltip({showTitle:false,showMarkers:false});chartIns.value.legend(false);chartIns.value.interval().position("value").color("name",["#1E70FF","#0AF9F2","#FF9214"]).label("name*value",{style:{fill:"#fff"},layout:[{type:"pie-spider"},{type:"hide-overlap"// cfg: { action: "ellipsis" /** 或 translate */ },
|
|
323
|
-
}],labelHeight:45,offsetY:-25,content:(obj,item)=>{const group=new G.Group({});const[y0,y1]=item.y||[0,0];const inRight=y0<y1;// const textAlign = inRight ? "left" : "right";
|
|
324
|
-
const textAlign="center";group.addShape({type:"text",attrs:{x:0,y:0,text:obj.name,fill:"rgba(255, 255, 255, 0.45)",fontSize:13,textAlign}});group.addShape({type:"text",attrs:{x:0,y:-4,text:obj.value!==undefined&&obj.value+"%",textAlign,textBaseline:"top",fill:"#fff",fontWeight:700,fontSize:22}});if(!inRight){group.translate(group.getBBox().width,0);}group.translate(0,13);return group;},labelLine:{style:{}}}).adjust("stack");chartIns.value.interaction("element-active");chartIns.value.render();};watch(()=>props.data,e=>{if(e&&e.length>0){if(!chartIns.value){initChart(e);}else {chartIns.value.changeData(e);}}},{immediate:true,deep:true});// onMounted(initChart);
|
|
325
|
-
onBeforeUnmount(()=>chartIns.value?.destroy());return ()=>createVNode("div",{"class":"chart"},[createVNode("div",{"ref":chartRef},null)]);}});const Item$4=props=>{const{name,value,total}=props;return createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[name]),createVNode("div",{"class":"content"},[createVNode("div",{"class":"value"},[value]),total!==undefined&&createVNode("div",{"class":"total"},[createTextVNode("/"),total])])]);};/**
|
|
326
|
-
* 检修计划
|
|
327
|
-
*/const OverhaulPlan=defineComponent({name:"overhaulPlan",cname:"检修计划",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
328
|
-
},setup(){const form=reactive({repairTime:"",maintain:{total:0,value:0},overhaul:{total:0,value:0},runDripLeak:{total:0,value:0},rows:[]});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"overhaulPlan"});form.repairTime=data.repairTime;form.maintain=data.maintain;form.overhaul=data.overhaul;form.runDripLeak=data.runDripLeak;form.rows=data.rows;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"overhaul-plan"},[createVNode("div",{"class":"statistics-container"},[createVNode(Item$4,{"name":"今日检修时间","value":form.repairTime},null),createVNode(Item$4,{"name":"日常维护(项)","value":form.maintain.value,"total":form.maintain.total},null),createVNode(Item$4,{"name":"大修更换(项)","value":form.overhaul.value,"total":form.overhaul.total},null),createVNode(Item$4,{"name":"跑冒滴漏溅撒(项)","value":form.runDripLeak.value,"total":form.runDripLeak.total},null)]),createVNode(ChartContainer,{"data":form.rows},null)]);}});const mock$7={repairTime:"@time(HH:mm)-@time(HH:mm)",maintain:{"total|25-50":1,"value|1-25":1},overhaul:{"total|25-50":1,"value|1-25":1},runDripLeak:{"total|25-50":1,"value|1-25":1},rows:[{name:"日常维护","value|1-100":1},{name:"大修更换","value|1-100":1},{name:"其他","value|1-100":1}]};// const tempData = [
|
|
329
|
-
// { name: "孙瞳", value: 1500 },
|
|
330
|
-
// { name: "袁一", value: 1200 },
|
|
331
|
-
// { name: "青东", value: 1600 },
|
|
332
|
-
// ];
|
|
333
|
-
/**
|
|
334
|
-
* 柱状图
|
|
335
|
-
*/const BarChart=defineComponent({props:{color:{type:String,required:true},topColor:{type:String,requierd:true},data:{type:Array}},setup(props){const chartRef=ref();const chartIns=ref();const initChart=data=>{chartIns.value=new Chart({container:chartRef.value,autoFit:true,renderer:"svg",// appendPadding: [0, 0, 0, 0],
|
|
336
|
-
theme:{maxColumnWidth:20}});chartIns.value.data(data);chartIns.value.scale("value",{alias:"产量",min:0,tickCount:3});chartIns.value.axis("value",{label:{style:{fill:"rgba(255, 255, 255, 0.5)",fontSize:16}},grid:{line:{style:{stroke:"rgba(242, 243, 248, 0.14)"}}}});chartIns.value.axis("name",{label:{style:{fill:"#fff",fontSize:17}},tickLine:null,line:{style:{stroke:"rgba(242, 243, 248, 0.14)"}}});chartIns.value.interval().position("name*value").style({fill:`l(90) 0:${props.color} 1:#00000000`,shadowColor:props.topColor,shadowOffsetY:-2});chartIns.value.tooltip({showTitle:false});chartIns.value.render();};watch(()=>props.data,e=>{if(e&&e.length>0){if(!chartIns.value){initChart(e);}else {chartIns.value.changeData(e);}}});// onMounted(initChart);
|
|
337
|
-
onBeforeUnmount(()=>chartIns.value?.destroy());return ()=>createVNode("div",{"class":"bar-chart","ref":chartRef},null);}});/**
|
|
338
|
-
* 干选分厂
|
|
339
|
-
*/const DrySeparationPlant=defineComponent({name:"drySeparationPlant",cname:"干选分厂",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
340
|
-
},setup(){const form=reactive({rawCoal:{rows:[]},ashReductionDepth:{rows:[]}});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"drySeparationPlant"});form.rawCoal=data.rawCoal;form.ashReductionDepth=data.ashReductionDepth;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"dry-separation-plant"},[createVNode("div",{"class":"statistics-item"},[createVNode("div",{"class":"list"},[createVNode(CardHeaderSmall,{"title":"原煤"},null),createVNode("div",{"class":"list-container"},[form.rawCoal.rows.map(item=>createVNode("div",{"class":"row"},[createVNode("div",{"class":"name"},[item.name]),createVNode("div",{"class":"content"},[createVNode("span",{"class":"value"},[item.value]),createVNode("span",{"class":"unit"},[item.unit])])]))])]),createVNode("div",{"class":"chart"},[createVNode(BarChart,{"color":"rgba(30, 112, 255, 0.4)","topColor":"#1E70FF","data":form.rawCoal.rows},null)])]),createVNode("div",{"class":"statistics-item"},[createVNode("div",{"class":"list"},[createVNode(CardHeaderSmall,{"title":"降灰深度"},null),createVNode("div",{"class":"list-container"},[form.ashReductionDepth.rows.map(item=>createVNode("div",{"class":"row"},[createVNode("div",{"class":"name"},[item.name]),createVNode("div",{"class":"content"},[createVNode("span",{"class":"value"},[item.value]),createVNode("span",{"class":"unit"},[item.unit])])]))])]),createVNode("div",{"class":"chart"},[createVNode(BarChart,{"color":"rgb(120, 235, 251, 0.5)","topColor":"#78ebfb","data":form.ashReductionDepth.rows},null)])])]);}});const mock$6={rawCoal:{"rows|5":[{name:"@cname","value|1-20000":1,unit:"t"}]// "chart|3": [{ name: "@cname", "value|100-1500": 1 }],
|
|
341
|
-
},ashReductionDepth:{"rows|5":[{name:"@cname","value|1-20000":1,unit:"t"}]// "chart|3": [{ name: "@cname", "value|100-1500": 1 }],
|
|
342
|
-
}};const Item$3=({name,unit,value})=>createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[`${name}(${unit})`]),createVNode("div",{"class":"value"},[value])]);/**
|
|
343
|
-
* 芦岭厂日统计
|
|
344
|
-
*/const LuLingDayStatistics=defineComponent({name:"luLingDayStatistics",cname:"芦岭厂日统计",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
345
|
-
},setup(){const form=reactive({washingVolume:0,cleanCoalProduction:0,byProductOutput:0,rawCoalAshContent:0,cleanCoalAshContent:0,ashContentOfByProduct:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"luLingDayStatistics"});form.washingVolume=data.washingVolume;form.cleanCoalProduction=data.cleanCoalProduction;form.byProductOutput=data.byProductOutput;form.rawCoalAshContent=data.rawCoalAshContent;form.cleanCoalAshContent=data.cleanCoalAshContent;form.ashContentOfByProduct=data.ashContentOfByProduct;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"lu-ling-day-statistics"},[createVNode(Item$3,{"name":"入洗量","unit":"吨","value":form.washingVolume},null),createVNode(Item$3,{"name":"精煤产量","unit":"吨","value":form.cleanCoalProduction},null),createVNode(Item$3,{"name":"副产品产量","unit":"吨","value":form.byProductOutput},null),createVNode(Item$3,{"name":"原煤灰分量","unit":"%","value":form.rawCoalAshContent},null),createVNode(Item$3,{"name":"精煤灰分量","unit":"%","value":form.cleanCoalAshContent},null),createVNode(Item$3,{"name":"副产品灰分量","unit":"%","value":form.ashContentOfByProduct},null)]);}});const mock$5={"washingVolume|2000-20000":1,"cleanCoalProduction|2000-20000":1,"byProductOutput|2000-20000":1,"rawCoalAshContent|1-80":1,"cleanCoalAshContent|1-80":1,"ashContentOfByProduct|1-80":1};const Item$2=({name,value,color})=>createVNode("div",{"class":"item"},[createVNode("div",{"class":"name"},[name]),createVNode("div",{"class":["content",color]},[createVNode("span",{"class":"value"},[value]),createVNode("span",{"class":"unit"},[createTextVNode("\u4EBA")])])]);/**
|
|
346
|
-
* 人力资源
|
|
347
|
-
*/const HumanResources=defineComponent({name:"humanResources",cname:"人力资源",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
348
|
-
},setup(){const form=reactive({operator:0,operationAndMaintenancePersonnel:0,runningServices:0,otherAuxiliary:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"humanResources"});form.operator=data.operator;form.operationAndMaintenancePersonnel=data.operationAndMaintenancePersonnel;form.runningServices=data.runningServices;form.otherAuxiliary=data.otherAuxiliary;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"human-resources"},[createVNode(Item$2,{"name":"操控人员","value":form.operator,"color":"blue"},null),createVNode(Item$2,{"name":"运维人员","value":form.operationAndMaintenancePersonnel,"color":"green"},null),createVNode(Item$2,{"name":"运行服务","value":form.runningServices,"color":"red"},null),createVNode(Item$2,{"name":"其他辅助","value":form.otherAuxiliary,"color":"yellow"},null)]);}});const mock$4={"operator|300-3000":1,"operationAndMaintenancePersonnel|300-3000":1,"runningServices|300-3000":1,"otherAuxiliary|300-3000":1};const Item$1=({name,unit,img,month,day})=>{return createVNode("div",{"class":"item"},[createVNode("div",{"class":"item-img"},[createVNode("img",{"src":`/micro-assets/card/${img}.png`,"alt":""},null)]),createVNode("div",{"class":"right"},[createVNode("div",{"class":"statistics-item"},[createVNode("div",{"class":"name"},[createTextVNode("\u6708\u603B"),name,createTextVNode("\u8017")]),createVNode("div",{"class":"content"},[createVNode("span",{"class":"value"},[month]),createVNode("span",{"class":"unit"},[unit])])]),createVNode("div",{"class":"statistics-item"},[createVNode("div",{"class":"name"},[createTextVNode("\u4ECA\u65E5"),name,createTextVNode("\u8017")]),createVNode("div",{"class":"content"},[createVNode("span",{"class":"value"},[day]),createVNode("span",{"class":"unit"},[unit])])])])]);};/**
|
|
349
|
-
* 能耗信息
|
|
350
|
-
*/const EnergyConsumptionInfo=defineComponent({name:"energyConsumptionInfo",cname:"能耗信息",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
351
|
-
},setup(){const form=reactive({water:{day:0,month:0},oil:{day:0,month:0},electric:{day:0,month:0},vapour:{day:0,month:0}});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"energyConsumptionInfo"});form.water=data.water;form.oil=data.oil;form.electric=data.electric;form.vapour=data.vapour;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"energy-consumption-info"},[createVNode(Item$1,{"name":"水","unit":"t","img":"yongshuixiaohao","day":form.water.day,"month":form.water.month},null),createVNode(Item$1,{"name":"油","unit":"L","img":"xuningjixiaohao","day":form.oil.day,"month":form.oil.month},null),createVNode(Item$1,{"name":"电","unit":"kw","img":"yongdianxiaohao","day":form.electric.day,"month":form.electric.month},null),createVNode(Item$1,{"name":"汽","unit":"m³","img":"qihao","day":form.vapour.day,"month":form.vapour.month},null)]);}});const mock$3={water:{"day|1-1000":1,"month|1-1000":1},oil:{"day|1-20":1,"month|1-400":1},electric:{"day|50000-500000":1,"month|1000000-10000000":1},vapour:{"day|100-1000":1,"month|100-1000":1}};const Item=({name,value,unit,color,img=""})=>createVNode("div",{"class":"item"},[createVNode("div",{"class":"item-img"},[createVNode("img",{"src":`/micro-assets/card/${img}.png`,"alt":""},null)]),createVNode("div",{"class":"right"},[createVNode("div",{"class":"name"},[name]),createVNode("div",{"class":["content",color]},[createVNode("span",{"class":"value"},[value]),createVNode("span",{"class":"unit"},[unit])])])]);/**
|
|
352
|
-
* 设备概况
|
|
353
|
-
*/const DeviceOverview=defineComponent({name:"deviceOverview",cname:"设备概况",developer:"前端开发组",equipment:"PC",props:{prefix:String,serverName:String,timeout:Number// 接口请求超时时长
|
|
354
|
-
},setup(){const form=reactive({electromechanical:0,function:0,fault:0,intactnessRate:0});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"deviceOverview"});form.electromechanical=data.electromechanical;form.function=data.function;form.fault=data.fault;form.intactnessRate=data.intactnessRate;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);return ()=>createVNode("div",{"class":"device-overview"},[createVNode(Item,{"name":"机电设备","unit":"台","color":"blue","value":form.electromechanical,"img":"jidianshebei"},null),createVNode(Item,{"name":"运行设备","unit":"台","color":"green","value":form.function,"img":"yunxingshebei"},null),createVNode(Item,{"name":"故障设备","unit":"台","color":"red","value":form.fault,"img":"guzhangshebei"},null),createVNode(Item,{"name":"完好率","unit":"%","color":"yellow","value":form.intactnessRate,"img":"wanhaolv"},null)]);}});const mock$2={"electromechanical|1000-3900":1,"function|100-1000":1,"fault|100-1000":1,"intactnessRate|1-100":1};const cardList$1=[storageInfo$1,storageInfo,storageInfo$2,OutTransportStatistics,RealTimeAshWater,ConsumeAnalysis,RawCoalSendIn2,MechineTimeDayStatistics,OverhaulPlan,DrySeparationPlant,LuLingDayStatistics,HumanResources,EnergyConsumptionInfo,DeviceOverview];const Events$1$3={WEBRTC_NOT_SUPPORT:"WEBRTC_NOT_SUPPORT",WEBRTC_ICE_CANDIDATE_ERROR:"WEBRTC_ICE_CANDIDATE_ERROR",WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED:"WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED",WEBRTC_ON_REMOTE_STREAMS:"WEBRTC_ON_REMOTE_STREAMS",WEBRTC_ON_LOCAL_STREAM:"WEBRTC_ON_LOCAL_STREAM",WEBRTC_ON_CONNECTION_STATE_CHANGE:"WEBRTC_ON_CONNECTION_STATE_CHANGE",CAPTURE_STREAM_FAILED:"CAPTURE_STREAM_FAILED"};// Copyright (C) <2018> Intel Corporation
|
|
355
|
-
//
|
|
356
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
357
|
-
// eslint-disable-next-line require-jsdoc
|
|
358
|
-
function isFirefox$3(){return window.navigator.userAgent.match("Firefox")!==null;}// eslint-disable-next-line require-jsdoc
|
|
359
|
-
function isChrome$3(){return window.navigator.userAgent.match("Chrome")!==null;}// eslint-disable-next-line require-jsdoc
|
|
360
|
-
function isEdge$3(){return window.navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)!==null;}// eslint-disable-next-line require-jsdoc
|
|
361
|
-
// Copyright (C) <2018> Intel Corporation
|
|
362
|
-
/**
|
|
363
|
-
* @class AudioSourceInfo
|
|
364
|
-
* @classDesc Source info about an audio track. Values: 'mic', 'screen-cast', 'file', 'mixed'.
|
|
365
|
-
* @memberOf Owt.Base
|
|
366
|
-
* @readonly
|
|
367
|
-
* @enum {string}
|
|
368
|
-
*/const AudioSourceInfo$3={MIC:"mic",SCREENCAST:"screen-cast",FILE:"file",MIXED:"mixed"};/**
|
|
369
|
-
* @class VideoSourceInfo
|
|
370
|
-
* @classDesc Source info about a video track. Values: 'camera', 'screen-cast', 'file', 'mixed'.
|
|
371
|
-
* @memberOf Owt.Base
|
|
372
|
-
* @readonly
|
|
373
|
-
* @enum {string}
|
|
374
|
-
*/const VideoSourceInfo$3={CAMERA:"camera",SCREENCAST:"screen-cast",FILE:"file",MIXED:"mixed"};/**
|
|
375
|
-
* @class Resolution
|
|
376
|
-
* @memberOf Owt.Base
|
|
377
|
-
* @classDesc The Resolution defines the size of a rectangle.
|
|
378
|
-
* @constructor
|
|
379
|
-
* @param {number} width
|
|
380
|
-
* @param {number} height
|
|
381
|
-
*/class Resolution$3{// eslint-disable-next-line require-jsdoc
|
|
382
|
-
constructor(width,height){/**
|
|
383
|
-
* @member {number} width
|
|
384
|
-
* @instance
|
|
385
|
-
* @memberof Owt.Base.Resolution
|
|
386
|
-
*/this.width=width;/**
|
|
387
|
-
* @member {number} height
|
|
388
|
-
* @instance
|
|
389
|
-
* @memberof Owt.Base.Resolution
|
|
390
|
-
*/this.height=height;}}/*
|
|
391
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
392
|
-
*
|
|
393
|
-
* Use of this source code is governed by a BSD-style license
|
|
394
|
-
* that can be found in the LICENSE file in the root of the source
|
|
395
|
-
* tree.
|
|
396
|
-
*/let logDisabled_$3=true;let deprecationWarnings_$3=true;/**
|
|
397
|
-
* Extract browser version out of the provided user agent string.
|
|
398
|
-
*
|
|
399
|
-
* @param {!string} uastring userAgent string.
|
|
400
|
-
* @param {!string} expr Regular expression used as match criteria.
|
|
401
|
-
* @param {!number} pos position in the version string to be returned.
|
|
402
|
-
* @return {!number} browser version.
|
|
403
|
-
*/function extractVersion$3(uastring,expr,pos){const match=uastring.match(expr);return match&&match.length>=pos&&parseInt(match[pos],10);}// Wraps the peerconnection event eventNameToWrap in a function
|
|
404
|
-
// which returns the modified event object (or false to prevent
|
|
405
|
-
// the event).
|
|
406
|
-
function wrapPeerConnectionEvent$3(window,eventNameToWrap,wrapper){if(!window.RTCPeerConnection){return;}const proto=window.RTCPeerConnection.prototype;const nativeAddEventListener=proto.addEventListener;proto.addEventListener=function(nativeEventName,cb){if(nativeEventName!==eventNameToWrap){return nativeAddEventListener.apply(this,arguments);}const wrappedCallback=e=>{const modifiedEvent=wrapper(e);if(modifiedEvent){if(cb.handleEvent){cb.handleEvent(modifiedEvent);}else {cb(modifiedEvent);}}};this._eventMap=this._eventMap||{};if(!this._eventMap[eventNameToWrap]){this._eventMap[eventNameToWrap]=new Map();}this._eventMap[eventNameToWrap].set(cb,wrappedCallback);return nativeAddEventListener.apply(this,[nativeEventName,wrappedCallback]);};const nativeRemoveEventListener=proto.removeEventListener;proto.removeEventListener=function(nativeEventName,cb){if(nativeEventName!==eventNameToWrap||!this._eventMap||!this._eventMap[eventNameToWrap]){return nativeRemoveEventListener.apply(this,arguments);}if(!this._eventMap[eventNameToWrap].has(cb)){return nativeRemoveEventListener.apply(this,arguments);}const unwrappedCb=this._eventMap[eventNameToWrap].get(cb);this._eventMap[eventNameToWrap].delete(cb);if(this._eventMap[eventNameToWrap].size===0){delete this._eventMap[eventNameToWrap];}if(Object.keys(this._eventMap).length===0){delete this._eventMap;}return nativeRemoveEventListener.apply(this,[nativeEventName,unwrappedCb]);};Object.defineProperty(proto,"on"+eventNameToWrap,{get(){return this["_on"+eventNameToWrap];},set(cb){if(this["_on"+eventNameToWrap]){this.removeEventListener(eventNameToWrap,this["_on"+eventNameToWrap]);delete this["_on"+eventNameToWrap];}if(cb){this.addEventListener(eventNameToWrap,this["_on"+eventNameToWrap]=cb);}},enumerable:true,configurable:true});}function disableLog$3(bool){if(typeof bool!=="boolean"){return new Error("Argument type: "+typeof bool+". Please use a boolean.");}logDisabled_$3=bool;return bool?"adapter.js logging disabled":"adapter.js logging enabled";}/**
|
|
407
|
-
* Disable or enable deprecation warnings
|
|
408
|
-
* @param {!boolean} bool set to true to disable warnings.
|
|
409
|
-
*/function disableWarnings$3(bool){if(typeof bool!=="boolean"){return new Error("Argument type: "+typeof bool+". Please use a boolean.");}deprecationWarnings_$3=!bool;return "adapter.js deprecation warnings "+(bool?"disabled":"enabled");}function log$1$3(){if(typeof window==="object"){if(logDisabled_$3){return;}if(typeof console!=="undefined"&&typeof console.log==="function"){console.log.apply(console,arguments);}}}/**
|
|
410
|
-
* Shows a deprecation warning suggesting the modern and spec-compatible API.
|
|
411
|
-
*/function deprecated$3(oldMethod,newMethod){if(!deprecationWarnings_$3){return;}console.warn(oldMethod+" is deprecated, please use "+newMethod+" instead.");}/**
|
|
412
|
-
* Browser detector.
|
|
413
|
-
*
|
|
414
|
-
* @return {object} result containing browser and version
|
|
415
|
-
* properties.
|
|
416
|
-
*/function detectBrowser$3(window){// Returned result object.
|
|
417
|
-
const result={browser:null,version:null};// Fail early if it's not a browser
|
|
418
|
-
if(typeof window==="undefined"||!window.navigator){result.browser="Not a browser.";return result;}const{navigator}=window;if(navigator.mozGetUserMedia){// Firefox.
|
|
419
|
-
result.browser="firefox";result.version=extractVersion$3(navigator.userAgent,/Firefox\/(\d+)\./,1);}else if(navigator.webkitGetUserMedia||window.isSecureContext===false&&window.webkitRTCPeerConnection&&!window.RTCIceGatherer){// Chrome, Chromium, Webview, Opera.
|
|
420
|
-
// Version matches Chrome/WebRTC version.
|
|
421
|
-
// Chrome 74 removed webkitGetUserMedia on http as well so we need the
|
|
422
|
-
// more complicated fallback to webkitRTCPeerConnection.
|
|
423
|
-
result.browser="chrome";result.version=extractVersion$3(navigator.userAgent,/Chrom(e|ium)\/(\d+)\./,2);}else if(navigator.mediaDevices&&navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)){// Edge.
|
|
424
|
-
result.browser="edge";result.version=extractVersion$3(navigator.userAgent,/Edge\/(\d+).(\d+)$/,2);}else if(window.RTCPeerConnection&&navigator.userAgent.match(/AppleWebKit\/(\d+)\./)){// Safari.
|
|
425
|
-
result.browser="safari";result.version=extractVersion$3(navigator.userAgent,/AppleWebKit\/(\d+)\./,1);result.supportsUnifiedPlan=window.RTCRtpTransceiver&&"currentDirection"in window.RTCRtpTransceiver.prototype;}else {// Default fallthrough: not supported.
|
|
426
|
-
result.browser="Not a supported browser.";return result;}return result;}/**
|
|
427
|
-
* Checks if something is an object.
|
|
428
|
-
*
|
|
429
|
-
* @param {*} val The something you want to check.
|
|
430
|
-
* @return true if val is an object, false otherwise.
|
|
431
|
-
*/function isObject$3(val){return Object.prototype.toString.call(val)==="[object Object]";}/**
|
|
432
|
-
* Remove all empty objects and undefined values
|
|
433
|
-
* from a nested object -- an enhanced and vanilla version
|
|
434
|
-
* of Lodash's `compact`.
|
|
435
|
-
*/function compactObject$3(data){if(!isObject$3(data)){return data;}return Object.keys(data).reduce(function(accumulator,key){const isObj=isObject$3(data[key]);const value=isObj?compactObject$3(data[key]):data[key];const isEmptyObject=isObj&&!Object.keys(value).length;if(value===undefined||isEmptyObject){return accumulator;}return Object.assign(accumulator,{[key]:value});},{});}/* iterates the stats graph recursively. */function walkStats$3(stats,base,resultSet){if(!base||resultSet.has(base.id)){return;}resultSet.set(base.id,base);Object.keys(base).forEach(name=>{if(name.endsWith("Id")){walkStats$3(stats,stats.get(base[name]),resultSet);}else if(name.endsWith("Ids")){base[name].forEach(id=>{walkStats$3(stats,stats.get(id),resultSet);});}});}/* filter getStats for a sender/receiver track. */function filterStats$3(result,track,outbound){const streamStatsType=outbound?"outbound-rtp":"inbound-rtp";const filteredResult=new Map();if(track===null){return filteredResult;}const trackStats=[];result.forEach(value=>{if(value.type==="track"&&value.trackIdentifier===track.id){trackStats.push(value);}});trackStats.forEach(trackStat=>{result.forEach(stats=>{if(stats.type===streamStatsType&&stats.trackId===trackStat.id){walkStats$3(result,stats,filteredResult);}});});return filteredResult;}/*
|
|
436
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
437
|
-
*
|
|
438
|
-
* Use of this source code is governed by a BSD-style license
|
|
439
|
-
* that can be found in the LICENSE file in the root of the source
|
|
440
|
-
* tree.
|
|
441
|
-
*/const logging$3=log$1$3;function shimGetUserMedia$3$3(window,browserDetails){const navigator=window&&window.navigator;if(!navigator.mediaDevices){return;}const constraintsToChrome_=function(c){if(typeof c!=="object"||c.mandatory||c.optional){return c;}const cc={};Object.keys(c).forEach(key=>{if(key==="require"||key==="advanced"||key==="mediaSource"){return;}const r=typeof c[key]==="object"?c[key]:{ideal:c[key]};if(r.exact!==undefined&&typeof r.exact==="number"){r.min=r.max=r.exact;}const oldname_=function(prefix,name){if(prefix){return prefix+name.charAt(0).toUpperCase()+name.slice(1);}return name==="deviceId"?"sourceId":name;};if(r.ideal!==undefined){cc.optional=cc.optional||[];let oc={};if(typeof r.ideal==="number"){oc[oldname_("min",key)]=r.ideal;cc.optional.push(oc);oc={};oc[oldname_("max",key)]=r.ideal;cc.optional.push(oc);}else {oc[oldname_("",key)]=r.ideal;cc.optional.push(oc);}}if(r.exact!==undefined&&typeof r.exact!=="number"){cc.mandatory=cc.mandatory||{};cc.mandatory[oldname_("",key)]=r.exact;}else {["min","max"].forEach(mix=>{if(r[mix]!==undefined){cc.mandatory=cc.mandatory||{};cc.mandatory[oldname_(mix,key)]=r[mix];}});}});if(c.advanced){cc.optional=(cc.optional||[]).concat(c.advanced);}return cc;};const shimConstraints_=function(constraints,func){if(browserDetails.version>=61){return func(constraints);}constraints=JSON.parse(JSON.stringify(constraints));if(constraints&&typeof constraints.audio==="object"){const remap=function(obj,a,b){if(a in obj&&!(b in obj)){obj[b]=obj[a];delete obj[a];}};constraints=JSON.parse(JSON.stringify(constraints));remap(constraints.audio,"autoGainControl","googAutoGainControl");remap(constraints.audio,"noiseSuppression","googNoiseSuppression");constraints.audio=constraintsToChrome_(constraints.audio);}if(constraints&&typeof constraints.video==="object"){// Shim facingMode for mobile & surface pro.
|
|
442
|
-
let face=constraints.video.facingMode;face=face&&(typeof face==="object"?face:{ideal:face});const getSupportedFacingModeLies=browserDetails.version<66;if(face&&(face.exact==="user"||face.exact==="environment"||face.ideal==="user"||face.ideal==="environment")&&!(navigator.mediaDevices.getSupportedConstraints&&navigator.mediaDevices.getSupportedConstraints().facingMode&&!getSupportedFacingModeLies)){delete constraints.video.facingMode;let matches;if(face.exact==="environment"||face.ideal==="environment"){matches=["back","rear"];}else if(face.exact==="user"||face.ideal==="user"){matches=["front"];}if(matches){// Look for matches in label, or use last cam for back (typical).
|
|
443
|
-
return navigator.mediaDevices.enumerateDevices().then(devices=>{devices=devices.filter(d=>d.kind==="videoinput");let dev=devices.find(d=>matches.some(match=>d.label.toLowerCase().includes(match)));if(!dev&&devices.length&&matches.includes("back")){dev=devices[devices.length-1];// more likely the back cam
|
|
444
|
-
}if(dev){constraints.video.deviceId=face.exact?{exact:dev.deviceId}:{ideal:dev.deviceId};}constraints.video=constraintsToChrome_(constraints.video);logging$3("chrome: "+JSON.stringify(constraints));return func(constraints);});}}constraints.video=constraintsToChrome_(constraints.video);}logging$3("chrome: "+JSON.stringify(constraints));return func(constraints);};const shimError_=function(e){if(browserDetails.version>=64){return e;}return {name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message;}};};const getUserMedia_=function(constraints,onSuccess,onError){shimConstraints_(constraints,c=>{navigator.webkitGetUserMedia(c,onSuccess,e=>{if(onError){onError(shimError_(e));}});});};navigator.getUserMedia=getUserMedia_.bind(navigator);// Even though Chrome 45 has navigator.mediaDevices and a getUserMedia
|
|
445
|
-
// function which returns a Promise, it does not accept spec-style
|
|
446
|
-
// constraints.
|
|
447
|
-
if(navigator.mediaDevices.getUserMedia){const origGetUserMedia=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(cs){return shimConstraints_(cs,c=>origGetUserMedia(c).then(stream=>{if(c.audio&&!stream.getAudioTracks().length||c.video&&!stream.getVideoTracks().length){stream.getTracks().forEach(track=>{track.stop();});throw new DOMException("","NotFoundError");}return stream;},e=>Promise.reject(shimError_(e))));};}}/*
|
|
448
|
-
* Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.
|
|
449
|
-
*
|
|
450
|
-
* Use of this source code is governed by a BSD-style license
|
|
451
|
-
* that can be found in the LICENSE file in the root of the source
|
|
452
|
-
* tree.
|
|
453
|
-
*/function shimGetDisplayMedia$2$3(window,getSourceId){if(window.navigator.mediaDevices&&"getDisplayMedia"in window.navigator.mediaDevices){return;}if(!window.navigator.mediaDevices){return;}// getSourceId is a function that returns a promise resolving with
|
|
454
|
-
// the sourceId of the screen/window/tab to be shared.
|
|
455
|
-
if(typeof getSourceId!=="function"){console.error("shimGetDisplayMedia: getSourceId argument is not "+"a function");return;}window.navigator.mediaDevices.getDisplayMedia=function getDisplayMedia(constraints){return getSourceId(constraints).then(sourceId=>{const widthSpecified=constraints.video&&constraints.video.width;const heightSpecified=constraints.video&&constraints.video.height;const frameRateSpecified=constraints.video&&constraints.video.frameRate;constraints.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:sourceId,maxFrameRate:frameRateSpecified||3}};if(widthSpecified){constraints.video.mandatory.maxWidth=widthSpecified;}if(heightSpecified){constraints.video.mandatory.maxHeight=heightSpecified;}return window.navigator.mediaDevices.getUserMedia(constraints);});};}/*
|
|
456
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
457
|
-
*
|
|
458
|
-
* Use of this source code is governed by a BSD-style license
|
|
459
|
-
* that can be found in the LICENSE file in the root of the source
|
|
460
|
-
* tree.
|
|
461
|
-
*/function shimMediaStream$3(window){window.MediaStream=window.MediaStream||window.webkitMediaStream;}function shimOnTrack$1$3(window){if(typeof window==="object"&&window.RTCPeerConnection&&!("ontrack"in window.RTCPeerConnection.prototype)){Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack;},set(f){if(this._ontrack){this.removeEventListener("track",this._ontrack);}this.addEventListener("track",this._ontrack=f);},enumerable:true,configurable:true});const origSetRemoteDescription=window.RTCPeerConnection.prototype.setRemoteDescription;window.RTCPeerConnection.prototype.setRemoteDescription=function setRemoteDescription(){if(!this._ontrackpoly){this._ontrackpoly=e=>{// onaddstream does not fire when a track is added to an existing
|
|
462
|
-
// stream. But stream.onaddtrack is implemented so we use that.
|
|
463
|
-
e.stream.addEventListener("addtrack",te=>{let receiver;if(window.RTCPeerConnection.prototype.getReceivers){receiver=this.getReceivers().find(r=>r.track&&r.track.id===te.track.id);}else {receiver={track:te.track};}const event=new Event("track");event.track=te.track;event.receiver=receiver;event.transceiver={receiver};event.streams=[e.stream];this.dispatchEvent(event);});e.stream.getTracks().forEach(track=>{let receiver;if(window.RTCPeerConnection.prototype.getReceivers){receiver=this.getReceivers().find(r=>r.track&&r.track.id===track.id);}else {receiver={track};}const event=new Event("track");event.track=track;event.receiver=receiver;event.transceiver={receiver};event.streams=[e.stream];this.dispatchEvent(event);});};this.addEventListener("addstream",this._ontrackpoly);}return origSetRemoteDescription.apply(this,arguments);};}else {// even if RTCRtpTransceiver is in window, it is only used and
|
|
464
|
-
// emitted in unified-plan. Unfortunately this means we need
|
|
465
|
-
// to unconditionally wrap the event.
|
|
466
|
-
wrapPeerConnectionEvent$3(window,"track",e=>{if(!e.transceiver){Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}});}return e;});}}function shimGetSendersWithDtmf$3(window){// Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack.
|
|
467
|
-
if(typeof window==="object"&&window.RTCPeerConnection&&!("getSenders"in window.RTCPeerConnection.prototype)&&"createDTMFSender"in window.RTCPeerConnection.prototype){const shimSenderWithDtmf=function(pc,track){return {track,get dtmf(){if(this._dtmf===undefined){if(track.kind==="audio"){this._dtmf=pc.createDTMFSender(track);}else {this._dtmf=null;}}return this._dtmf;},_pc:pc};};// augment addTrack when getSenders is not available.
|
|
468
|
-
if(!window.RTCPeerConnection.prototype.getSenders){window.RTCPeerConnection.prototype.getSenders=function getSenders(){this._senders=this._senders||[];return this._senders.slice();// return a copy of the internal state.
|
|
469
|
-
};const origAddTrack=window.RTCPeerConnection.prototype.addTrack;window.RTCPeerConnection.prototype.addTrack=function addTrack(track,stream){let sender=origAddTrack.apply(this,arguments);if(!sender){sender=shimSenderWithDtmf(this,track);this._senders.push(sender);}return sender;};const origRemoveTrack=window.RTCPeerConnection.prototype.removeTrack;window.RTCPeerConnection.prototype.removeTrack=function removeTrack(sender){origRemoveTrack.apply(this,arguments);const idx=this._senders.indexOf(sender);if(idx!==-1){this._senders.splice(idx,1);}};}const origAddStream=window.RTCPeerConnection.prototype.addStream;window.RTCPeerConnection.prototype.addStream=function addStream(stream){this._senders=this._senders||[];origAddStream.apply(this,[stream]);stream.getTracks().forEach(track=>{this._senders.push(shimSenderWithDtmf(this,track));});};const origRemoveStream=window.RTCPeerConnection.prototype.removeStream;window.RTCPeerConnection.prototype.removeStream=function removeStream(stream){this._senders=this._senders||[];origRemoveStream.apply(this,[stream]);stream.getTracks().forEach(track=>{const sender=this._senders.find(s=>s.track===track);if(sender){// remove sender
|
|
470
|
-
this._senders.splice(this._senders.indexOf(sender),1);}});};}else if(typeof window==="object"&&window.RTCPeerConnection&&"getSenders"in window.RTCPeerConnection.prototype&&"createDTMFSender"in window.RTCPeerConnection.prototype&&window.RTCRtpSender&&!("dtmf"in window.RTCRtpSender.prototype)){const origGetSenders=window.RTCPeerConnection.prototype.getSenders;window.RTCPeerConnection.prototype.getSenders=function getSenders(){const senders=origGetSenders.apply(this,[]);senders.forEach(sender=>sender._pc=this);return senders;};Object.defineProperty(window.RTCRtpSender.prototype,"dtmf",{get(){if(this._dtmf===undefined){if(this.track.kind==="audio"){this._dtmf=this._pc.createDTMFSender(this.track);}else {this._dtmf=null;}}return this._dtmf;}});}}function shimGetStats$3(window){if(!window.RTCPeerConnection){return;}const origGetStats=window.RTCPeerConnection.prototype.getStats;window.RTCPeerConnection.prototype.getStats=function getStats(){const[selector,onSucc,onErr]=arguments;// If selector is a function then we are in the old style stats so just
|
|
471
|
-
// pass back the original getStats format to avoid breaking old users.
|
|
472
|
-
if(arguments.length>0&&typeof selector==="function"){return origGetStats.apply(this,arguments);}// When spec-style getStats is supported, return those when called with
|
|
473
|
-
// either no arguments or the selector argument is null.
|
|
474
|
-
if(origGetStats.length===0&&(arguments.length===0||typeof selector!=="function")){return origGetStats.apply(this,[]);}const fixChromeStats_=function(response){const standardReport={};const reports=response.result();reports.forEach(report=>{const standardStats={id:report.id,timestamp:report.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[report.type]||report.type};report.names().forEach(name=>{standardStats[name]=report.stat(name);});standardReport[standardStats.id]=standardStats;});return standardReport;};// shim getStats with maplike support
|
|
475
|
-
const makeMapStats=function(stats){return new Map(Object.keys(stats).map(key=>[key,stats[key]]));};if(arguments.length>=2){const successCallbackWrapper_=function(response){onSucc(makeMapStats(fixChromeStats_(response)));};return origGetStats.apply(this,[successCallbackWrapper_,selector]);}// promise-support
|
|
476
|
-
return new Promise((resolve,reject)=>{origGetStats.apply(this,[function(response){resolve(makeMapStats(fixChromeStats_(response)));},reject]);}).then(onSucc,onErr);};}function shimSenderReceiverGetStats$3(window){if(!(typeof window==="object"&&window.RTCPeerConnection&&window.RTCRtpSender&&window.RTCRtpReceiver)){return;}// shim sender stats.
|
|
477
|
-
if(!("getStats"in window.RTCRtpSender.prototype)){const origGetSenders=window.RTCPeerConnection.prototype.getSenders;if(origGetSenders){window.RTCPeerConnection.prototype.getSenders=function getSenders(){const senders=origGetSenders.apply(this,[]);senders.forEach(sender=>sender._pc=this);return senders;};}const origAddTrack=window.RTCPeerConnection.prototype.addTrack;if(origAddTrack){window.RTCPeerConnection.prototype.addTrack=function addTrack(){const sender=origAddTrack.apply(this,arguments);sender._pc=this;return sender;};}window.RTCRtpSender.prototype.getStats=function getStats(){const sender=this;return this._pc.getStats().then(result=>/* Note: this will include stats of all senders that
|
|
478
|
-
* send a track with the same id as sender.track as
|
|
479
|
-
* it is not possible to identify the RTCRtpSender.
|
|
480
|
-
*/filterStats$3(result,sender.track,true));};}// shim receiver stats.
|
|
481
|
-
if(!("getStats"in window.RTCRtpReceiver.prototype)){const origGetReceivers=window.RTCPeerConnection.prototype.getReceivers;if(origGetReceivers){window.RTCPeerConnection.prototype.getReceivers=function getReceivers(){const receivers=origGetReceivers.apply(this,[]);receivers.forEach(receiver=>receiver._pc=this);return receivers;};}wrapPeerConnectionEvent$3(window,"track",e=>{e.receiver._pc=e.srcElement;return e;});window.RTCRtpReceiver.prototype.getStats=function getStats(){const receiver=this;return this._pc.getStats().then(result=>filterStats$3(result,receiver.track,false));};}if(!("getStats"in window.RTCRtpSender.prototype&&"getStats"in window.RTCRtpReceiver.prototype)){return;}// shim RTCPeerConnection.getStats(track).
|
|
482
|
-
const origGetStats=window.RTCPeerConnection.prototype.getStats;window.RTCPeerConnection.prototype.getStats=function getStats(){if(arguments.length>0&&arguments[0]instanceof window.MediaStreamTrack){const track=arguments[0];let sender;let receiver;let err;this.getSenders().forEach(s=>{if(s.track===track){if(sender){err=true;}else {sender=s;}}});this.getReceivers().forEach(r=>{if(r.track===track){if(receiver){err=true;}else {receiver=r;}}return r.track===track;});if(err||sender&&receiver){return Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError"));}else if(sender){return sender.getStats();}else if(receiver){return receiver.getStats();}return Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"));}return origGetStats.apply(this,arguments);};}function shimAddTrackRemoveTrackWithNative$3(window){// shim addTrack/removeTrack with native variants in order to make
|
|
483
|
-
// the interactions with legacy getLocalStreams behave as in other browsers.
|
|
484
|
-
// Keeps a mapping stream.id => [stream, rtpsenders...]
|
|
485
|
-
window.RTCPeerConnection.prototype.getLocalStreams=function getLocalStreams(){this._shimmedLocalStreams=this._shimmedLocalStreams||{};return Object.keys(this._shimmedLocalStreams).map(streamId=>this._shimmedLocalStreams[streamId][0]);};const origAddTrack=window.RTCPeerConnection.prototype.addTrack;window.RTCPeerConnection.prototype.addTrack=function addTrack(track,stream){if(!stream){return origAddTrack.apply(this,arguments);}this._shimmedLocalStreams=this._shimmedLocalStreams||{};const sender=origAddTrack.apply(this,arguments);if(!this._shimmedLocalStreams[stream.id]){this._shimmedLocalStreams[stream.id]=[stream,sender];}else if(this._shimmedLocalStreams[stream.id].indexOf(sender)===-1){this._shimmedLocalStreams[stream.id].push(sender);}return sender;};const origAddStream=window.RTCPeerConnection.prototype.addStream;window.RTCPeerConnection.prototype.addStream=function addStream(stream){this._shimmedLocalStreams=this._shimmedLocalStreams||{};stream.getTracks().forEach(track=>{const alreadyExists=this.getSenders().find(s=>s.track===track);if(alreadyExists){throw new DOMException("Track already exists.","InvalidAccessError");}});const existingSenders=this.getSenders();origAddStream.apply(this,arguments);const newSenders=this.getSenders().filter(newSender=>existingSenders.indexOf(newSender)===-1);this._shimmedLocalStreams[stream.id]=[stream].concat(newSenders);};const origRemoveStream=window.RTCPeerConnection.prototype.removeStream;window.RTCPeerConnection.prototype.removeStream=function removeStream(stream){this._shimmedLocalStreams=this._shimmedLocalStreams||{};delete this._shimmedLocalStreams[stream.id];return origRemoveStream.apply(this,arguments);};const origRemoveTrack=window.RTCPeerConnection.prototype.removeTrack;window.RTCPeerConnection.prototype.removeTrack=function removeTrack(sender){this._shimmedLocalStreams=this._shimmedLocalStreams||{};if(sender){Object.keys(this._shimmedLocalStreams).forEach(streamId=>{const idx=this._shimmedLocalStreams[streamId].indexOf(sender);if(idx!==-1){this._shimmedLocalStreams[streamId].splice(idx,1);}if(this._shimmedLocalStreams[streamId].length===1){delete this._shimmedLocalStreams[streamId];}});}return origRemoveTrack.apply(this,arguments);};}function shimAddTrackRemoveTrack$3(window,browserDetails){if(!window.RTCPeerConnection){return;}// shim addTrack and removeTrack.
|
|
486
|
-
if(window.RTCPeerConnection.prototype.addTrack&&browserDetails.version>=65){return shimAddTrackRemoveTrackWithNative$3(window);}// also shim pc.getLocalStreams when addTrack is shimmed
|
|
487
|
-
// to return the original streams.
|
|
488
|
-
const origGetLocalStreams=window.RTCPeerConnection.prototype.getLocalStreams;window.RTCPeerConnection.prototype.getLocalStreams=function getLocalStreams(){const nativeStreams=origGetLocalStreams.apply(this);this._reverseStreams=this._reverseStreams||{};return nativeStreams.map(stream=>this._reverseStreams[stream.id]);};const origAddStream=window.RTCPeerConnection.prototype.addStream;window.RTCPeerConnection.prototype.addStream=function addStream(stream){this._streams=this._streams||{};this._reverseStreams=this._reverseStreams||{};stream.getTracks().forEach(track=>{const alreadyExists=this.getSenders().find(s=>s.track===track);if(alreadyExists){throw new DOMException("Track already exists.","InvalidAccessError");}});// Add identity mapping for consistency with addTrack.
|
|
489
|
-
// Unless this is being used with a stream from addTrack.
|
|
490
|
-
if(!this._reverseStreams[stream.id]){const newStream=new window.MediaStream(stream.getTracks());this._streams[stream.id]=newStream;this._reverseStreams[newStream.id]=stream;stream=newStream;}origAddStream.apply(this,[stream]);};const origRemoveStream=window.RTCPeerConnection.prototype.removeStream;window.RTCPeerConnection.prototype.removeStream=function removeStream(stream){this._streams=this._streams||{};this._reverseStreams=this._reverseStreams||{};origRemoveStream.apply(this,[this._streams[stream.id]||stream]);delete this._reverseStreams[this._streams[stream.id]?this._streams[stream.id].id:stream.id];delete this._streams[stream.id];};window.RTCPeerConnection.prototype.addTrack=function addTrack(track,stream){if(this.signalingState==="closed"){throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");}const streams=[].slice.call(arguments,1);if(streams.length!==1||!streams[0].getTracks().find(t=>t===track)){// this is not fully correct but all we can manage without
|
|
491
|
-
// [[associated MediaStreams]] internal slot.
|
|
492
|
-
throw new DOMException("The adapter.js addTrack polyfill only supports a single "+" stream which is associated with the specified track.","NotSupportedError");}const alreadyExists=this.getSenders().find(s=>s.track===track);if(alreadyExists){throw new DOMException("Track already exists.","InvalidAccessError");}this._streams=this._streams||{};this._reverseStreams=this._reverseStreams||{};const oldStream=this._streams[stream.id];if(oldStream){// this is using odd Chrome behaviour, use with caution:
|
|
493
|
-
// https://bugs.chromium.org/p/webrtc/issues/detail?id=7815
|
|
494
|
-
// Note: we rely on the high-level addTrack/dtmf shim to
|
|
495
|
-
// create the sender with a dtmf sender.
|
|
496
|
-
oldStream.addTrack(track);// Trigger ONN async.
|
|
497
|
-
Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"));});}else {const newStream=new window.MediaStream([track]);this._streams[stream.id]=newStream;this._reverseStreams[newStream.id]=stream;this.addStream(newStream);}return this.getSenders().find(s=>s.track===track);};// replace the internal stream id with the external one and
|
|
498
|
-
// vice versa.
|
|
499
|
-
function replaceInternalStreamId(pc,description){let sdp=description.sdp;Object.keys(pc._reverseStreams||[]).forEach(internalId=>{const externalStream=pc._reverseStreams[internalId];const internalStream=pc._streams[externalStream.id];sdp=sdp.replace(new RegExp(internalStream.id,"g"),externalStream.id);});return new RTCSessionDescription({type:description.type,sdp});}function replaceExternalStreamId(pc,description){let sdp=description.sdp;Object.keys(pc._reverseStreams||[]).forEach(internalId=>{const externalStream=pc._reverseStreams[internalId];const internalStream=pc._streams[externalStream.id];sdp=sdp.replace(new RegExp(externalStream.id,"g"),internalStream.id);});return new RTCSessionDescription({type:description.type,sdp});}["createOffer","createAnswer"].forEach(function(method){const nativeMethod=window.RTCPeerConnection.prototype[method];const methodObj={[method](){const args=arguments;const isLegacyCall=arguments.length&&typeof arguments[0]==="function";if(isLegacyCall){return nativeMethod.apply(this,[description=>{const desc=replaceInternalStreamId(this,description);args[0].apply(null,[desc]);},err=>{if(args[1]){args[1].apply(null,err);}},arguments[2]]);}return nativeMethod.apply(this,arguments).then(description=>replaceInternalStreamId(this,description));}};window.RTCPeerConnection.prototype[method]=methodObj[method];});const origSetLocalDescription=window.RTCPeerConnection.prototype.setLocalDescription;window.RTCPeerConnection.prototype.setLocalDescription=function setLocalDescription(){if(!arguments.length||!arguments[0].type){return origSetLocalDescription.apply(this,arguments);}arguments[0]=replaceExternalStreamId(this,arguments[0]);return origSetLocalDescription.apply(this,arguments);};// TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier
|
|
500
|
-
const origLocalDescription=Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(window.RTCPeerConnection.prototype,"localDescription",{get(){const description=origLocalDescription.get.apply(this);if(description.type===""){return description;}return replaceInternalStreamId(this,description);}});window.RTCPeerConnection.prototype.removeTrack=function removeTrack(sender){if(this.signalingState==="closed"){throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");}// We can not yet check for sender instanceof RTCRtpSender
|
|
501
|
-
// since we shim RTPSender. So we check if sender._pc is set.
|
|
502
|
-
if(!sender._pc){throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack "+"does not implement interface RTCRtpSender.","TypeError");}const isLocal=sender._pc===this;if(!isLocal){throw new DOMException("Sender was not created by this connection.","InvalidAccessError");}// Search for the native stream the senders track belongs to.
|
|
503
|
-
this._streams=this._streams||{};let stream;Object.keys(this._streams).forEach(streamid=>{const hasTrack=this._streams[streamid].getTracks().find(track=>sender.track===track);if(hasTrack){stream=this._streams[streamid];}});if(stream){if(stream.getTracks().length===1){// if this is the last track of the stream, remove the stream. This
|
|
504
|
-
// takes care of any shimmed _senders.
|
|
505
|
-
this.removeStream(this._reverseStreams[stream.id]);}else {// relying on the same odd chrome behaviour as above.
|
|
506
|
-
stream.removeTrack(sender.track);}this.dispatchEvent(new Event("negotiationneeded"));}};}function shimPeerConnection$2$3(window,browserDetails){if(!window.RTCPeerConnection&&window.webkitRTCPeerConnection){// very basic support for old versions.
|
|
507
|
-
window.RTCPeerConnection=window.webkitRTCPeerConnection;}if(!window.RTCPeerConnection){return;}// shim implicit creation of RTCSessionDescription/RTCIceCandidate
|
|
508
|
-
if(browserDetails.version<53){["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(method){const nativeMethod=window.RTCPeerConnection.prototype[method];const methodObj={[method](){arguments[0]=new(method==="addIceCandidate"?window.RTCIceCandidate:window.RTCSessionDescription)(arguments[0]);return nativeMethod.apply(this,arguments);}};window.RTCPeerConnection.prototype[method]=methodObj[method];});}}// Attempt to fix ONN in plan-b mode.
|
|
509
|
-
function fixNegotiationNeeded$3(window,browserDetails){wrapPeerConnectionEvent$3(window,"negotiationneeded",e=>{const pc=e.target;if(browserDetails.version<72||pc.getConfiguration&&pc.getConfiguration().sdpSemantics==="plan-b"){if(pc.signalingState!=="stable"){return;}}return e;});}var chromeShim$3=/*#__PURE__*/Object.freeze({__proto__:null,shimMediaStream:shimMediaStream$3,shimOnTrack:shimOnTrack$1$3,shimGetSendersWithDtmf:shimGetSendersWithDtmf$3,shimGetStats:shimGetStats$3,shimSenderReceiverGetStats:shimSenderReceiverGetStats$3,shimAddTrackRemoveTrackWithNative:shimAddTrackRemoveTrackWithNative$3,shimAddTrackRemoveTrack:shimAddTrackRemoveTrack$3,shimPeerConnection:shimPeerConnection$2$3,fixNegotiationNeeded:fixNegotiationNeeded$3,shimGetUserMedia:shimGetUserMedia$3$3,shimGetDisplayMedia:shimGetDisplayMedia$2$3});/*
|
|
510
|
-
* Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
|
|
511
|
-
*
|
|
512
|
-
* Use of this source code is governed by a BSD-style license
|
|
513
|
-
* that can be found in the LICENSE file in the root of the source
|
|
514
|
-
* tree.
|
|
515
|
-
*/ // Edge does not like
|
|
516
|
-
// 1) stun: filtered after 14393 unless ?transport=udp is present
|
|
517
|
-
// 2) turn: that does not have all of turn:host:port?transport=udp
|
|
518
|
-
// 3) turn: with ipv6 addresses
|
|
519
|
-
// 4) turn: occurring muliple times
|
|
520
|
-
function filterIceServers$1$3(iceServers,edgeVersion){let hasTurn=false;iceServers=JSON.parse(JSON.stringify(iceServers));return iceServers.filter(server=>{if(server&&(server.urls||server.url)){let urls=server.urls||server.url;if(server.url&&!server.urls){deprecated$3("RTCIceServer.url","RTCIceServer.urls");}const isString=typeof urls==="string";if(isString){urls=[urls];}urls=urls.filter(url=>{// filter STUN unconditionally.
|
|
521
|
-
if(url.indexOf("stun:")===0){return false;}const validTurn=url.startsWith("turn")&&!url.startsWith("turn:[")&&url.includes("transport=udp");if(validTurn&&!hasTurn){hasTurn=true;return true;}return validTurn&&!hasTurn;});delete server.url;server.urls=isString?urls[0]:urls;return !!urls.length;}});}function createCommonjsModule$3(fn){var module={exports:{}};return fn(module,module.exports),module.exports;}/* eslint-env node */var sdp$3=createCommonjsModule$3(function(module){// SDP helpers.
|
|
522
|
-
var SDPUtils={};// Generate an alphanumeric identifier for cname or mids.
|
|
523
|
-
// TODO: use UUIDs instead? https://gist.github.com/jed/982883
|
|
524
|
-
SDPUtils.generateIdentifier=function(){return Math.random().toString(36).substr(2,10);};// The RTCP CNAME used by all peerconnections from the same JS.
|
|
525
|
-
SDPUtils.localCName=SDPUtils.generateIdentifier();// Splits SDP into lines, dealing with both CRLF and LF.
|
|
526
|
-
SDPUtils.splitLines=function(blob){return blob.trim().split("\n").map(function(line){return line.trim();});};// Splits SDP into sessionpart and mediasections. Ensures CRLF.
|
|
527
|
-
SDPUtils.splitSections=function(blob){var parts=blob.split("\nm=");return parts.map(function(part,index){return (index>0?"m="+part:part).trim()+"\r\n";});};// returns the session description.
|
|
528
|
-
SDPUtils.getDescription=function(blob){var sections=SDPUtils.splitSections(blob);return sections&§ions[0];};// returns the individual media sections.
|
|
529
|
-
SDPUtils.getMediaSections=function(blob){var sections=SDPUtils.splitSections(blob);sections.shift();return sections;};// Returns lines that start with a certain prefix.
|
|
530
|
-
SDPUtils.matchPrefix=function(blob,prefix){return SDPUtils.splitLines(blob).filter(function(line){return line.indexOf(prefix)===0;});};// Parses an ICE candidate line. Sample input:
|
|
531
|
-
// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8
|
|
532
|
-
// rport 55996"
|
|
533
|
-
SDPUtils.parseCandidate=function(line){var parts;// Parse both variants.
|
|
534
|
-
if(line.indexOf("a=candidate:")===0){parts=line.substring(12).split(" ");}else {parts=line.substring(10).split(" ");}var candidate={foundation:parts[0],component:parseInt(parts[1],10),protocol:parts[2].toLowerCase(),priority:parseInt(parts[3],10),ip:parts[4],address:parts[4],// address is an alias for ip.
|
|
535
|
-
port:parseInt(parts[5],10),// skip parts[6] == 'typ'
|
|
536
|
-
type:parts[7]};for(var i=8;i<parts.length;i+=2){switch(parts[i]){case"raddr":candidate.relatedAddress=parts[i+1];break;case"rport":candidate.relatedPort=parseInt(parts[i+1],10);break;case"tcptype":candidate.tcpType=parts[i+1];break;case"ufrag":candidate.ufrag=parts[i+1];// for backward compability.
|
|
537
|
-
candidate.usernameFragment=parts[i+1];break;default:// extension handling, in particular ufrag
|
|
538
|
-
candidate[parts[i]]=parts[i+1];break;}}return candidate;};// Translates a candidate object into SDP candidate attribute.
|
|
539
|
-
SDPUtils.writeCandidate=function(candidate){var sdp=[];sdp.push(candidate.foundation);sdp.push(candidate.component);sdp.push(candidate.protocol.toUpperCase());sdp.push(candidate.priority);sdp.push(candidate.address||candidate.ip);sdp.push(candidate.port);var type=candidate.type;sdp.push("typ");sdp.push(type);if(type!=="host"&&candidate.relatedAddress&&candidate.relatedPort){sdp.push("raddr");sdp.push(candidate.relatedAddress);sdp.push("rport");sdp.push(candidate.relatedPort);}if(candidate.tcpType&&candidate.protocol.toLowerCase()==="tcp"){sdp.push("tcptype");sdp.push(candidate.tcpType);}if(candidate.usernameFragment||candidate.ufrag){sdp.push("ufrag");sdp.push(candidate.usernameFragment||candidate.ufrag);}return "candidate:"+sdp.join(" ");};// Parses an ice-options line, returns an array of option tags.
|
|
540
|
-
// a=ice-options:foo bar
|
|
541
|
-
SDPUtils.parseIceOptions=function(line){return line.substr(14).split(" ");};// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:
|
|
542
|
-
// a=rtpmap:111 opus/48000/2
|
|
543
|
-
SDPUtils.parseRtpMap=function(line){var parts=line.substr(9).split(" ");var parsed={payloadType:parseInt(parts.shift(),10)// was: id
|
|
544
|
-
};parts=parts[0].split("/");parsed.name=parts[0];parsed.clockRate=parseInt(parts[1],10);// was: clockrate
|
|
545
|
-
parsed.channels=parts.length===3?parseInt(parts[2],10):1;// legacy alias, got renamed back to channels in ORTC.
|
|
546
|
-
parsed.numChannels=parsed.channels;return parsed;};// Generate an a=rtpmap line from RTCRtpCodecCapability or
|
|
547
|
-
// RTCRtpCodecParameters.
|
|
548
|
-
SDPUtils.writeRtpMap=function(codec){var pt=codec.payloadType;if(codec.preferredPayloadType!==undefined){pt=codec.preferredPayloadType;}var channels=codec.channels||codec.numChannels||1;return "a=rtpmap:"+pt+" "+codec.name+"/"+codec.clockRate+(channels!==1?"/"+channels:"")+"\r\n";};// Parses an a=extmap line (headerextension from RFC 5285). Sample input:
|
|
549
|
-
// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset
|
|
550
|
-
// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset
|
|
551
|
-
SDPUtils.parseExtmap=function(line){var parts=line.substr(9).split(" ");return {id:parseInt(parts[0],10),direction:parts[0].indexOf("/")>0?parts[0].split("/")[1]:"sendrecv",uri:parts[1]};};// Generates a=extmap line from RTCRtpHeaderExtensionParameters or
|
|
552
|
-
// RTCRtpHeaderExtension.
|
|
553
|
-
SDPUtils.writeExtmap=function(headerExtension){return "a=extmap:"+(headerExtension.id||headerExtension.preferredId)+(headerExtension.direction&&headerExtension.direction!=="sendrecv"?"/"+headerExtension.direction:"")+" "+headerExtension.uri+"\r\n";};// Parses an ftmp line, returns dictionary. Sample input:
|
|
554
|
-
// a=fmtp:96 vbr=on;cng=on
|
|
555
|
-
// Also deals with vbr=on; cng=on
|
|
556
|
-
SDPUtils.parseFmtp=function(line){var parsed={};var kv;var parts=line.substr(line.indexOf(" ")+1).split(";");for(var j=0;j<parts.length;j++){kv=parts[j].trim().split("=");parsed[kv[0].trim()]=kv[1];}return parsed;};// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.
|
|
557
|
-
SDPUtils.writeFmtp=function(codec){var line="";var pt=codec.payloadType;if(codec.preferredPayloadType!==undefined){pt=codec.preferredPayloadType;}if(codec.parameters&&Object.keys(codec.parameters).length){var params=[];Object.keys(codec.parameters).forEach(function(param){if(codec.parameters[param]){params.push(param+"="+codec.parameters[param]);}else {params.push(param);}});line+="a=fmtp:"+pt+" "+params.join(";")+"\r\n";}return line;};// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:
|
|
558
|
-
// a=rtcp-fb:98 nack rpsi
|
|
559
|
-
SDPUtils.parseRtcpFb=function(line){var parts=line.substr(line.indexOf(" ")+1).split(" ");return {type:parts.shift(),parameter:parts.join(" ")};};// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.
|
|
560
|
-
SDPUtils.writeRtcpFb=function(codec){var lines="";var pt=codec.payloadType;if(codec.preferredPayloadType!==undefined){pt=codec.preferredPayloadType;}if(codec.rtcpFeedback&&codec.rtcpFeedback.length){// FIXME: special handling for trr-int?
|
|
561
|
-
codec.rtcpFeedback.forEach(function(fb){lines+="a=rtcp-fb:"+pt+" "+fb.type+(fb.parameter&&fb.parameter.length?" "+fb.parameter:"")+"\r\n";});}return lines;};// Parses an RFC 5576 ssrc media attribute. Sample input:
|
|
562
|
-
// a=ssrc:3735928559 cname:something
|
|
563
|
-
SDPUtils.parseSsrcMedia=function(line){var sp=line.indexOf(" ");var parts={ssrc:parseInt(line.substr(7,sp-7),10)};var colon=line.indexOf(":",sp);if(colon>-1){parts.attribute=line.substr(sp+1,colon-sp-1);parts.value=line.substr(colon+1);}else {parts.attribute=line.substr(sp+1);}return parts;};SDPUtils.parseSsrcGroup=function(line){var parts=line.substr(13).split(" ");return {semantics:parts.shift(),ssrcs:parts.map(function(ssrc){return parseInt(ssrc,10);})};};// Extracts the MID (RFC 5888) from a media section.
|
|
564
|
-
// returns the MID or undefined if no mid line was found.
|
|
565
|
-
SDPUtils.getMid=function(mediaSection){var mid=SDPUtils.matchPrefix(mediaSection,"a=mid:")[0];if(mid){return mid.substr(6);}};SDPUtils.parseFingerprint=function(line){var parts=line.substr(14).split(" ");return {algorithm:parts[0].toLowerCase(),// algorithm is case-sensitive in Edge.
|
|
566
|
-
value:parts[1]};};// Extracts DTLS parameters from SDP media section or sessionpart.
|
|
567
|
-
// FIXME: for consistency with other functions this should only
|
|
568
|
-
// get the fingerprint line as input. See also getIceParameters.
|
|
569
|
-
SDPUtils.getDtlsParameters=function(mediaSection,sessionpart){var lines=SDPUtils.matchPrefix(mediaSection+sessionpart,"a=fingerprint:");// Note: a=setup line is ignored since we use the 'auto' role.
|
|
570
|
-
// Note2: 'algorithm' is not case sensitive except in Edge.
|
|
571
|
-
return {role:"auto",fingerprints:lines.map(SDPUtils.parseFingerprint)};};// Serializes DTLS parameters to SDP.
|
|
572
|
-
SDPUtils.writeDtlsParameters=function(params,setupType){var sdp="a=setup:"+setupType+"\r\n";params.fingerprints.forEach(function(fp){sdp+="a=fingerprint:"+fp.algorithm+" "+fp.value+"\r\n";});return sdp;};// Parses a=crypto lines into
|
|
573
|
-
// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members
|
|
574
|
-
SDPUtils.parseCryptoLine=function(line){var parts=line.substr(9).split(" ");return {tag:parseInt(parts[0],10),cryptoSuite:parts[1],keyParams:parts[2],sessionParams:parts.slice(3)};};SDPUtils.writeCryptoLine=function(parameters){return "a=crypto:"+parameters.tag+" "+parameters.cryptoSuite+" "+(typeof parameters.keyParams==="object"?SDPUtils.writeCryptoKeyParams(parameters.keyParams):parameters.keyParams)+(parameters.sessionParams?" "+parameters.sessionParams.join(" "):"")+"\r\n";};// Parses the crypto key parameters into
|
|
575
|
-
// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam*
|
|
576
|
-
SDPUtils.parseCryptoKeyParams=function(keyParams){if(keyParams.indexOf("inline:")!==0){return null;}var parts=keyParams.substr(7).split("|");return {keyMethod:"inline",keySalt:parts[0],lifeTime:parts[1],mkiValue:parts[2]?parts[2].split(":")[0]:undefined,mkiLength:parts[2]?parts[2].split(":")[1]:undefined};};SDPUtils.writeCryptoKeyParams=function(keyParams){return keyParams.keyMethod+":"+keyParams.keySalt+(keyParams.lifeTime?"|"+keyParams.lifeTime:"")+(keyParams.mkiValue&&keyParams.mkiLength?"|"+keyParams.mkiValue+":"+keyParams.mkiLength:"");};// Extracts all SDES paramters.
|
|
577
|
-
SDPUtils.getCryptoParameters=function(mediaSection,sessionpart){var lines=SDPUtils.matchPrefix(mediaSection+sessionpart,"a=crypto:");return lines.map(SDPUtils.parseCryptoLine);};// Parses ICE information from SDP media section or sessionpart.
|
|
578
|
-
// FIXME: for consistency with other functions this should only
|
|
579
|
-
// get the ice-ufrag and ice-pwd lines as input.
|
|
580
|
-
SDPUtils.getIceParameters=function(mediaSection,sessionpart){var ufrag=SDPUtils.matchPrefix(mediaSection+sessionpart,"a=ice-ufrag:")[0];var pwd=SDPUtils.matchPrefix(mediaSection+sessionpart,"a=ice-pwd:")[0];if(!(ufrag&&pwd)){return null;}return {usernameFragment:ufrag.substr(12),password:pwd.substr(10)};};// Serializes ICE parameters to SDP.
|
|
581
|
-
SDPUtils.writeIceParameters=function(params){return "a=ice-ufrag:"+params.usernameFragment+"\r\n"+"a=ice-pwd:"+params.password+"\r\n";};// Parses the SDP media section and returns RTCRtpParameters.
|
|
582
|
-
SDPUtils.parseRtpParameters=function(mediaSection){var description={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]};var lines=SDPUtils.splitLines(mediaSection);var mline=lines[0].split(" ");for(var i=3;i<mline.length;i++){// find all codecs from mline[3..]
|
|
583
|
-
var pt=mline[i];var rtpmapline=SDPUtils.matchPrefix(mediaSection,"a=rtpmap:"+pt+" ")[0];if(rtpmapline){var codec=SDPUtils.parseRtpMap(rtpmapline);var fmtps=SDPUtils.matchPrefix(mediaSection,"a=fmtp:"+pt+" ");// Only the first a=fmtp:<pt> is considered.
|
|
584
|
-
codec.parameters=fmtps.length?SDPUtils.parseFmtp(fmtps[0]):{};codec.rtcpFeedback=SDPUtils.matchPrefix(mediaSection,"a=rtcp-fb:"+pt+" ").map(SDPUtils.parseRtcpFb);description.codecs.push(codec);// parse FEC mechanisms from rtpmap lines.
|
|
585
|
-
switch(codec.name.toUpperCase()){case"RED":case"ULPFEC":description.fecMechanisms.push(codec.name.toUpperCase());break;}}}SDPUtils.matchPrefix(mediaSection,"a=extmap:").forEach(function(line){description.headerExtensions.push(SDPUtils.parseExtmap(line));});// FIXME: parse rtcp.
|
|
586
|
-
return description;};// Generates parts of the SDP media section describing the capabilities /
|
|
587
|
-
// parameters.
|
|
588
|
-
SDPUtils.writeRtpDescription=function(kind,caps){var sdp="";// Build the mline.
|
|
589
|
-
sdp+="m="+kind+" ";sdp+=caps.codecs.length>0?"9":"0";// reject if no codecs.
|
|
590
|
-
sdp+=" UDP/TLS/RTP/SAVPF ";sdp+=caps.codecs.map(function(codec){if(codec.preferredPayloadType!==undefined){return codec.preferredPayloadType;}return codec.payloadType;}).join(" ")+"\r\n";sdp+="c=IN IP4 0.0.0.0\r\n";sdp+="a=rtcp:9 IN IP4 0.0.0.0\r\n";// Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.
|
|
591
|
-
caps.codecs.forEach(function(codec){sdp+=SDPUtils.writeRtpMap(codec);sdp+=SDPUtils.writeFmtp(codec);sdp+=SDPUtils.writeRtcpFb(codec);});var maxptime=0;caps.codecs.forEach(function(codec){if(codec.maxptime>maxptime){maxptime=codec.maxptime;}});if(maxptime>0){sdp+="a=maxptime:"+maxptime+"\r\n";}sdp+="a=rtcp-mux\r\n";if(caps.headerExtensions){caps.headerExtensions.forEach(function(extension){sdp+=SDPUtils.writeExtmap(extension);});}// FIXME: write fecMechanisms.
|
|
592
|
-
return sdp;};// Parses the SDP media section and returns an array of
|
|
593
|
-
// RTCRtpEncodingParameters.
|
|
594
|
-
SDPUtils.parseRtpEncodingParameters=function(mediaSection){var encodingParameters=[];var description=SDPUtils.parseRtpParameters(mediaSection);var hasRed=description.fecMechanisms.indexOf("RED")!==-1;var hasUlpfec=description.fecMechanisms.indexOf("ULPFEC")!==-1;// filter a=ssrc:... cname:, ignore PlanB-msid
|
|
595
|
-
var ssrcs=SDPUtils.matchPrefix(mediaSection,"a=ssrc:").map(function(line){return SDPUtils.parseSsrcMedia(line);}).filter(function(parts){return parts.attribute==="cname";});var primarySsrc=ssrcs.length>0&&ssrcs[0].ssrc;var secondarySsrc;var flows=SDPUtils.matchPrefix(mediaSection,"a=ssrc-group:FID").map(function(line){var parts=line.substr(17).split(" ");return parts.map(function(part){return parseInt(part,10);});});if(flows.length>0&&flows[0].length>1&&flows[0][0]===primarySsrc){secondarySsrc=flows[0][1];}description.codecs.forEach(function(codec){if(codec.name.toUpperCase()==="RTX"&&codec.parameters.apt){var encParam={ssrc:primarySsrc,codecPayloadType:parseInt(codec.parameters.apt,10)};if(primarySsrc&&secondarySsrc){encParam.rtx={ssrc:secondarySsrc};}encodingParameters.push(encParam);if(hasRed){encParam=JSON.parse(JSON.stringify(encParam));encParam.fec={ssrc:primarySsrc,mechanism:hasUlpfec?"red+ulpfec":"red"};encodingParameters.push(encParam);}}});if(encodingParameters.length===0&&primarySsrc){encodingParameters.push({ssrc:primarySsrc});}// we support both b=AS and b=TIAS but interpret AS as TIAS.
|
|
596
|
-
var bandwidth=SDPUtils.matchPrefix(mediaSection,"b=");if(bandwidth.length){if(bandwidth[0].indexOf("b=TIAS:")===0){bandwidth=parseInt(bandwidth[0].substr(7),10);}else if(bandwidth[0].indexOf("b=AS:")===0){// use formula from JSEP to convert b=AS to TIAS value.
|
|
597
|
-
bandwidth=parseInt(bandwidth[0].substr(5),10)*1000*0.95-50*40*8;}else {bandwidth=undefined;}encodingParameters.forEach(function(params){params.maxBitrate=bandwidth;});}return encodingParameters;};// parses http://draft.ortc.org/#rtcrtcpparameters*
|
|
598
|
-
SDPUtils.parseRtcpParameters=function(mediaSection){var rtcpParameters={};// Gets the first SSRC. Note tha with RTX there might be multiple
|
|
599
|
-
// SSRCs.
|
|
600
|
-
var remoteSsrc=SDPUtils.matchPrefix(mediaSection,"a=ssrc:").map(function(line){return SDPUtils.parseSsrcMedia(line);}).filter(function(obj){return obj.attribute==="cname";})[0];if(remoteSsrc){rtcpParameters.cname=remoteSsrc.value;rtcpParameters.ssrc=remoteSsrc.ssrc;}// Edge uses the compound attribute instead of reducedSize
|
|
601
|
-
// compound is !reducedSize
|
|
602
|
-
var rsize=SDPUtils.matchPrefix(mediaSection,"a=rtcp-rsize");rtcpParameters.reducedSize=rsize.length>0;rtcpParameters.compound=rsize.length===0;// parses the rtcp-mux attrіbute.
|
|
603
|
-
// Note that Edge does not support unmuxed RTCP.
|
|
604
|
-
var mux=SDPUtils.matchPrefix(mediaSection,"a=rtcp-mux");rtcpParameters.mux=mux.length>0;return rtcpParameters;};// parses either a=msid: or a=ssrc:... msid lines and returns
|
|
605
|
-
// the id of the MediaStream and MediaStreamTrack.
|
|
606
|
-
SDPUtils.parseMsid=function(mediaSection){var parts;var spec=SDPUtils.matchPrefix(mediaSection,"a=msid:");if(spec.length===1){parts=spec[0].substr(7).split(" ");return {stream:parts[0],track:parts[1]};}var planB=SDPUtils.matchPrefix(mediaSection,"a=ssrc:").map(function(line){return SDPUtils.parseSsrcMedia(line);}).filter(function(msidParts){return msidParts.attribute==="msid";});if(planB.length>0){parts=planB[0].value.split(" ");return {stream:parts[0],track:parts[1]};}};// SCTP
|
|
607
|
-
// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back
|
|
608
|
-
// to draft-ietf-mmusic-sctp-sdp-05
|
|
609
|
-
SDPUtils.parseSctpDescription=function(mediaSection){var mline=SDPUtils.parseMLine(mediaSection);var maxSizeLine=SDPUtils.matchPrefix(mediaSection,"a=max-message-size:");var maxMessageSize;if(maxSizeLine.length>0){maxMessageSize=parseInt(maxSizeLine[0].substr(19),10);}if(isNaN(maxMessageSize)){maxMessageSize=65536;}var sctpPort=SDPUtils.matchPrefix(mediaSection,"a=sctp-port:");if(sctpPort.length>0){return {port:parseInt(sctpPort[0].substr(12),10),protocol:mline.fmt,maxMessageSize:maxMessageSize};}var sctpMapLines=SDPUtils.matchPrefix(mediaSection,"a=sctpmap:");if(sctpMapLines.length>0){var parts=SDPUtils.matchPrefix(mediaSection,"a=sctpmap:")[0].substr(10).split(" ");return {port:parseInt(parts[0],10),protocol:parts[1],maxMessageSize:maxMessageSize};}};// SCTP
|
|
610
|
-
// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers
|
|
611
|
-
// support by now receiving in this format, unless we originally parsed
|
|
612
|
-
// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line
|
|
613
|
-
// protocol of DTLS/SCTP -- without UDP/ or TCP/)
|
|
614
|
-
SDPUtils.writeSctpDescription=function(media,sctp){var output=[];if(media.protocol!=="DTLS/SCTP"){output=["m="+media.kind+" 9 "+media.protocol+" "+sctp.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+sctp.port+"\r\n"];}else {output=["m="+media.kind+" 9 "+media.protocol+" "+sctp.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+sctp.port+" "+sctp.protocol+" 65535\r\n"];}if(sctp.maxMessageSize!==undefined){output.push("a=max-message-size:"+sctp.maxMessageSize+"\r\n");}return output.join("");};// Generate a session ID for SDP.
|
|
615
|
-
// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1
|
|
616
|
-
// recommends using a cryptographically random +ve 64-bit value
|
|
617
|
-
// but right now this should be acceptable and within the right range
|
|
618
|
-
SDPUtils.generateSessionId=function(){return Math.random().toString().substr(2,21);};// Write boilder plate for start of SDP
|
|
619
|
-
// sessId argument is optional - if not supplied it will
|
|
620
|
-
// be generated randomly
|
|
621
|
-
// sessVersion is optional and defaults to 2
|
|
622
|
-
// sessUser is optional and defaults to 'thisisadapterortc'
|
|
623
|
-
SDPUtils.writeSessionBoilerplate=function(sessId,sessVer,sessUser){var sessionId;var version=sessVer!==undefined?sessVer:2;if(sessId){sessionId=sessId;}else {sessionId=SDPUtils.generateSessionId();}var user=sessUser||"thisisadapterortc";// FIXME: sess-id should be an NTP timestamp.
|
|
624
|
-
return "v=0\r\n"+"o="+user+" "+sessionId+" "+version+" IN IP4 127.0.0.1\r\n"+"s=-\r\n"+"t=0 0\r\n";};SDPUtils.writeMediaSection=function(transceiver,caps,type,stream){var sdp=SDPUtils.writeRtpDescription(transceiver.kind,caps);// Map ICE parameters (ufrag, pwd) to SDP.
|
|
625
|
-
sdp+=SDPUtils.writeIceParameters(transceiver.iceGatherer.getLocalParameters());// Map DTLS parameters to SDP.
|
|
626
|
-
sdp+=SDPUtils.writeDtlsParameters(transceiver.dtlsTransport.getLocalParameters(),type==="offer"?"actpass":"active");sdp+="a=mid:"+transceiver.mid+"\r\n";if(transceiver.direction){sdp+="a="+transceiver.direction+"\r\n";}else if(transceiver.rtpSender&&transceiver.rtpReceiver){sdp+="a=sendrecv\r\n";}else if(transceiver.rtpSender){sdp+="a=sendonly\r\n";}else if(transceiver.rtpReceiver){sdp+="a=recvonly\r\n";}else {sdp+="a=inactive\r\n";}if(transceiver.rtpSender){// spec.
|
|
627
|
-
var msid="msid:"+stream.id+" "+transceiver.rtpSender.track.id+"\r\n";sdp+="a="+msid;// for Chrome.
|
|
628
|
-
sdp+="a=ssrc:"+transceiver.sendEncodingParameters[0].ssrc+" "+msid;if(transceiver.sendEncodingParameters[0].rtx){sdp+="a=ssrc:"+transceiver.sendEncodingParameters[0].rtx.ssrc+" "+msid;sdp+="a=ssrc-group:FID "+transceiver.sendEncodingParameters[0].ssrc+" "+transceiver.sendEncodingParameters[0].rtx.ssrc+"\r\n";}}// FIXME: this should be written by writeRtpDescription.
|
|
629
|
-
sdp+="a=ssrc:"+transceiver.sendEncodingParameters[0].ssrc+" cname:"+SDPUtils.localCName+"\r\n";if(transceiver.rtpSender&&transceiver.sendEncodingParameters[0].rtx){sdp+="a=ssrc:"+transceiver.sendEncodingParameters[0].rtx.ssrc+" cname:"+SDPUtils.localCName+"\r\n";}return sdp;};// Gets the direction from the mediaSection or the sessionpart.
|
|
630
|
-
SDPUtils.getDirection=function(mediaSection,sessionpart){// Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.
|
|
631
|
-
var lines=SDPUtils.splitLines(mediaSection);for(var i=0;i<lines.length;i++){switch(lines[i]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return lines[i].substr(2);// FIXME: What should happen here?
|
|
632
|
-
}}if(sessionpart){return SDPUtils.getDirection(sessionpart);}return "sendrecv";};SDPUtils.getKind=function(mediaSection){var lines=SDPUtils.splitLines(mediaSection);var mline=lines[0].split(" ");return mline[0].substr(2);};SDPUtils.isRejected=function(mediaSection){return mediaSection.split(" ",2)[1]==="0";};SDPUtils.parseMLine=function(mediaSection){var lines=SDPUtils.splitLines(mediaSection);var parts=lines[0].substr(2).split(" ");return {kind:parts[0],port:parseInt(parts[1],10),protocol:parts[2],fmt:parts.slice(3).join(" ")};};SDPUtils.parseOLine=function(mediaSection){var line=SDPUtils.matchPrefix(mediaSection,"o=")[0];var parts=line.substr(2).split(" ");return {username:parts[0],sessionId:parts[1],sessionVersion:parseInt(parts[2],10),netType:parts[3],addressType:parts[4],address:parts[5]};};// a very naive interpretation of a valid SDP.
|
|
633
|
-
SDPUtils.isValidSDP=function(blob){if(typeof blob!=="string"||blob.length===0){return false;}var lines=SDPUtils.splitLines(blob);for(var i=0;i<lines.length;i++){if(lines[i].length<2||lines[i].charAt(1)!=="="){return false;}// TODO: check the modifier a bit more.
|
|
634
|
-
}return true;};// Expose public methods.
|
|
635
|
-
{module.exports=SDPUtils;}});/*
|
|
636
|
-
* Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
|
|
637
|
-
*
|
|
638
|
-
* Use of this source code is governed by a BSD-style license
|
|
639
|
-
* that can be found in the LICENSE file in the root of the source
|
|
640
|
-
* tree.
|
|
641
|
-
*/function fixStatsType$3(stat){return {inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[stat.type]||stat.type;}function writeMediaSection$3(transceiver,caps,type,stream,dtlsRole){var sdp$1=sdp$3.writeRtpDescription(transceiver.kind,caps);// Map ICE parameters (ufrag, pwd) to SDP.
|
|
642
|
-
sdp$1+=sdp$3.writeIceParameters(transceiver.iceGatherer.getLocalParameters());// Map DTLS parameters to SDP.
|
|
643
|
-
sdp$1+=sdp$3.writeDtlsParameters(transceiver.dtlsTransport.getLocalParameters(),type==="offer"?"actpass":dtlsRole||"active");sdp$1+="a=mid:"+transceiver.mid+"\r\n";if(transceiver.rtpSender&&transceiver.rtpReceiver){sdp$1+="a=sendrecv\r\n";}else if(transceiver.rtpSender){sdp$1+="a=sendonly\r\n";}else if(transceiver.rtpReceiver){sdp$1+="a=recvonly\r\n";}else {sdp$1+="a=inactive\r\n";}if(transceiver.rtpSender){var trackId=transceiver.rtpSender._initialTrackId||transceiver.rtpSender.track.id;transceiver.rtpSender._initialTrackId=trackId;// spec.
|
|
644
|
-
var msid="msid:"+(stream?stream.id:"-")+" "+trackId+"\r\n";sdp$1+="a="+msid;// for Chrome. Legacy should no longer be required.
|
|
645
|
-
sdp$1+="a=ssrc:"+transceiver.sendEncodingParameters[0].ssrc+" "+msid;// RTX
|
|
646
|
-
if(transceiver.sendEncodingParameters[0].rtx){sdp$1+="a=ssrc:"+transceiver.sendEncodingParameters[0].rtx.ssrc+" "+msid;sdp$1+="a=ssrc-group:FID "+transceiver.sendEncodingParameters[0].ssrc+" "+transceiver.sendEncodingParameters[0].rtx.ssrc+"\r\n";}}// FIXME: this should be written by writeRtpDescription.
|
|
647
|
-
sdp$1+="a=ssrc:"+transceiver.sendEncodingParameters[0].ssrc+" cname:"+sdp$3.localCName+"\r\n";if(transceiver.rtpSender&&transceiver.sendEncodingParameters[0].rtx){sdp$1+="a=ssrc:"+transceiver.sendEncodingParameters[0].rtx.ssrc+" cname:"+sdp$3.localCName+"\r\n";}return sdp$1;}// Edge does not like
|
|
648
|
-
// 1) stun: filtered after 14393 unless ?transport=udp is present
|
|
649
|
-
// 2) turn: that does not have all of turn:host:port?transport=udp
|
|
650
|
-
// 3) turn: with ipv6 addresses
|
|
651
|
-
// 4) turn: occurring muliple times
|
|
652
|
-
function filterIceServers$4(iceServers,edgeVersion){var hasTurn=false;iceServers=JSON.parse(JSON.stringify(iceServers));return iceServers.filter(function(server){if(server&&(server.urls||server.url)){var urls=server.urls||server.url;if(server.url&&!server.urls){console.warn("RTCIceServer.url is deprecated! Use urls instead.");}var isString=typeof urls==="string";if(isString){urls=[urls];}urls=urls.filter(function(url){var validTurn=url.indexOf("turn:")===0&&url.indexOf("transport=udp")!==-1&&url.indexOf("turn:[")===-1&&!hasTurn;if(validTurn){hasTurn=true;return true;}return url.indexOf("stun:")===0&&edgeVersion>=14393&&url.indexOf("?transport=udp")===-1;});delete server.url;server.urls=isString?urls[0]:urls;return !!urls.length;}});}// Determines the intersection of local and remote capabilities.
|
|
653
|
-
function getCommonCapabilities$3(localCapabilities,remoteCapabilities){var commonCapabilities={codecs:[],headerExtensions:[],fecMechanisms:[]};var findCodecByPayloadType=function(pt,codecs){pt=parseInt(pt,10);for(var i=0;i<codecs.length;i++){if(codecs[i].payloadType===pt||codecs[i].preferredPayloadType===pt){return codecs[i];}}};var rtxCapabilityMatches=function(lRtx,rRtx,lCodecs,rCodecs){var lCodec=findCodecByPayloadType(lRtx.parameters.apt,lCodecs);var rCodec=findCodecByPayloadType(rRtx.parameters.apt,rCodecs);return lCodec&&rCodec&&lCodec.name.toLowerCase()===rCodec.name.toLowerCase();};localCapabilities.codecs.forEach(function(lCodec){for(var i=0;i<remoteCapabilities.codecs.length;i++){var rCodec=remoteCapabilities.codecs[i];if(lCodec.name.toLowerCase()===rCodec.name.toLowerCase()&&lCodec.clockRate===rCodec.clockRate){if(lCodec.name.toLowerCase()==="rtx"&&lCodec.parameters&&rCodec.parameters.apt){// for RTX we need to find the local rtx that has a apt
|
|
654
|
-
// which points to the same local codec as the remote one.
|
|
655
|
-
if(!rtxCapabilityMatches(lCodec,rCodec,localCapabilities.codecs,remoteCapabilities.codecs)){continue;}}rCodec=JSON.parse(JSON.stringify(rCodec));// deepcopy
|
|
656
|
-
// number of channels is the highest common number of channels
|
|
657
|
-
rCodec.numChannels=Math.min(lCodec.numChannels,rCodec.numChannels);// push rCodec so we reply with offerer payload type
|
|
658
|
-
commonCapabilities.codecs.push(rCodec);// determine common feedback mechanisms
|
|
659
|
-
rCodec.rtcpFeedback=rCodec.rtcpFeedback.filter(function(fb){for(var j=0;j<lCodec.rtcpFeedback.length;j++){if(lCodec.rtcpFeedback[j].type===fb.type&&lCodec.rtcpFeedback[j].parameter===fb.parameter){return true;}}return false;});// FIXME: also need to determine .parameters
|
|
660
|
-
// see https://github.com/openpeer/ortc/issues/569
|
|
661
|
-
break;}}});localCapabilities.headerExtensions.forEach(function(lHeaderExtension){for(var i=0;i<remoteCapabilities.headerExtensions.length;i++){var rHeaderExtension=remoteCapabilities.headerExtensions[i];if(lHeaderExtension.uri===rHeaderExtension.uri){commonCapabilities.headerExtensions.push(rHeaderExtension);break;}}});// FIXME: fecMechanisms
|
|
662
|
-
return commonCapabilities;}// is action=setLocalDescription with type allowed in signalingState
|
|
663
|
-
function isActionAllowedInSignalingState$3(action,type,signalingState){return {offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[type][action].indexOf(signalingState)!==-1;}function maybeAddCandidate$3(iceTransport,candidate){// Edge's internal representation adds some fields therefore
|
|
664
|
-
// not all fieldѕ are taken into account.
|
|
665
|
-
var alreadyAdded=iceTransport.getRemoteCandidates().find(function(remoteCandidate){return candidate.foundation===remoteCandidate.foundation&&candidate.ip===remoteCandidate.ip&&candidate.port===remoteCandidate.port&&candidate.priority===remoteCandidate.priority&&candidate.protocol===remoteCandidate.protocol&&candidate.type===remoteCandidate.type;});if(!alreadyAdded){iceTransport.addRemoteCandidate(candidate);}return !alreadyAdded;}function makeError$3(name,description){var e=new Error(description);e.name=name;// legacy error codes from https://heycam.github.io/webidl/#idl-DOMException-error-names
|
|
666
|
-
e.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:undefined,OperationError:undefined}[name];return e;}var rtcpeerconnection$3=function(window,edgeVersion){// https://w3c.github.io/mediacapture-main/#mediastream
|
|
667
|
-
// Helper function to add the track to the stream and
|
|
668
|
-
// dispatch the event ourselves.
|
|
669
|
-
function addTrackToStreamAndFireEvent(track,stream){stream.addTrack(track);stream.dispatchEvent(new window.MediaStreamTrackEvent("addtrack",{track:track}));}function removeTrackFromStreamAndFireEvent(track,stream){stream.removeTrack(track);stream.dispatchEvent(new window.MediaStreamTrackEvent("removetrack",{track:track}));}function fireAddTrack(pc,track,receiver,streams){var trackEvent=new Event("track");trackEvent.track=track;trackEvent.receiver=receiver;trackEvent.transceiver={receiver:receiver};trackEvent.streams=streams;window.setTimeout(function(){pc._dispatchEvent("track",trackEvent);});}var RTCPeerConnection=function(config){var pc=this;var _eventTarget=document.createDocumentFragment();["addEventListener","removeEventListener","dispatchEvent"].forEach(function(method){pc[method]=_eventTarget[method].bind(_eventTarget);});this.canTrickleIceCandidates=null;this.needNegotiation=false;this.localStreams=[];this.remoteStreams=[];this._localDescription=null;this._remoteDescription=null;this.signalingState="stable";this.iceConnectionState="new";this.connectionState="new";this.iceGatheringState="new";config=JSON.parse(JSON.stringify(config||{}));this.usingBundle=config.bundlePolicy==="max-bundle";if(config.rtcpMuxPolicy==="negotiate"){throw makeError$3("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");}else if(!config.rtcpMuxPolicy){config.rtcpMuxPolicy="require";}switch(config.iceTransportPolicy){case"all":case"relay":break;default:config.iceTransportPolicy="all";break;}switch(config.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:config.bundlePolicy="balanced";break;}config.iceServers=filterIceServers$4(config.iceServers||[],edgeVersion);this._iceGatherers=[];if(config.iceCandidatePoolSize){for(var i=config.iceCandidatePoolSize;i>0;i--){this._iceGatherers.push(new window.RTCIceGatherer({iceServers:config.iceServers,gatherPolicy:config.iceTransportPolicy}));}}else {config.iceCandidatePoolSize=0;}this._config=config;// per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...
|
|
670
|
-
// everything that is needed to describe a SDP m-line.
|
|
671
|
-
this.transceivers=[];this._sdpSessionId=sdp$3.generateSessionId();this._sdpSessionVersion=0;this._dtlsRole=undefined;// role for a=setup to use in answers.
|
|
672
|
-
this._isClosed=false;};Object.defineProperty(RTCPeerConnection.prototype,"localDescription",{configurable:true,get:function(){return this._localDescription;}});Object.defineProperty(RTCPeerConnection.prototype,"remoteDescription",{configurable:true,get:function(){return this._remoteDescription;}});// set up event handlers on prototype
|
|
673
|
-
RTCPeerConnection.prototype.onicecandidate=null;RTCPeerConnection.prototype.onaddstream=null;RTCPeerConnection.prototype.ontrack=null;RTCPeerConnection.prototype.onremovestream=null;RTCPeerConnection.prototype.onsignalingstatechange=null;RTCPeerConnection.prototype.oniceconnectionstatechange=null;RTCPeerConnection.prototype.onconnectionstatechange=null;RTCPeerConnection.prototype.onicegatheringstatechange=null;RTCPeerConnection.prototype.onnegotiationneeded=null;RTCPeerConnection.prototype.ondatachannel=null;RTCPeerConnection.prototype._dispatchEvent=function(name,event){if(this._isClosed){return;}this.dispatchEvent(event);if(typeof this["on"+name]==="function"){this["on"+name](event);}};RTCPeerConnection.prototype._emitGatheringStateChange=function(){var event=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",event);};RTCPeerConnection.prototype.getConfiguration=function(){return this._config;};RTCPeerConnection.prototype.getLocalStreams=function(){return this.localStreams;};RTCPeerConnection.prototype.getRemoteStreams=function(){return this.remoteStreams;};// internal helper to create a transceiver object.
|
|
674
|
-
// (which is not yet the same as the WebRTC 1.0 transceiver)
|
|
675
|
-
RTCPeerConnection.prototype._createTransceiver=function(kind,doNotAdd){var hasBundleTransport=this.transceivers.length>0;var transceiver={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:kind,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:true};if(this.usingBundle&&hasBundleTransport){transceiver.iceTransport=this.transceivers[0].iceTransport;transceiver.dtlsTransport=this.transceivers[0].dtlsTransport;}else {var transports=this._createIceAndDtlsTransports();transceiver.iceTransport=transports.iceTransport;transceiver.dtlsTransport=transports.dtlsTransport;}if(!doNotAdd){this.transceivers.push(transceiver);}return transceiver;};RTCPeerConnection.prototype.addTrack=function(track,stream){if(this._isClosed){throw makeError$3("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");}var alreadyExists=this.transceivers.find(function(s){return s.track===track;});if(alreadyExists){throw makeError$3("InvalidAccessError","Track already exists.");}var transceiver;for(var i=0;i<this.transceivers.length;i++){if(!this.transceivers[i].track&&this.transceivers[i].kind===track.kind){transceiver=this.transceivers[i];}}if(!transceiver){transceiver=this._createTransceiver(track.kind);}this._maybeFireNegotiationNeeded();if(this.localStreams.indexOf(stream)===-1){this.localStreams.push(stream);}transceiver.track=track;transceiver.stream=stream;transceiver.rtpSender=new window.RTCRtpSender(track,transceiver.dtlsTransport);return transceiver.rtpSender;};RTCPeerConnection.prototype.addStream=function(stream){var pc=this;if(edgeVersion>=15025){stream.getTracks().forEach(function(track){pc.addTrack(track,stream);});}else {// Clone is necessary for local demos mostly, attaching directly
|
|
676
|
-
// to two different senders does not work (build 10547).
|
|
677
|
-
// Fixed in 15025 (or earlier)
|
|
678
|
-
var clonedStream=stream.clone();stream.getTracks().forEach(function(track,idx){var clonedTrack=clonedStream.getTracks()[idx];track.addEventListener("enabled",function(event){clonedTrack.enabled=event.enabled;});});clonedStream.getTracks().forEach(function(track){pc.addTrack(track,clonedStream);});}};RTCPeerConnection.prototype.removeTrack=function(sender){if(this._isClosed){throw makeError$3("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");}if(!(sender instanceof window.RTCRtpSender)){throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack "+"does not implement interface RTCRtpSender.");}var transceiver=this.transceivers.find(function(t){return t.rtpSender===sender;});if(!transceiver){throw makeError$3("InvalidAccessError","Sender was not created by this connection.");}var stream=transceiver.stream;transceiver.rtpSender.stop();transceiver.rtpSender=null;transceiver.track=null;transceiver.stream=null;// remove the stream from the set of local streams
|
|
679
|
-
var localStreams=this.transceivers.map(function(t){return t.stream;});if(localStreams.indexOf(stream)===-1&&this.localStreams.indexOf(stream)>-1){this.localStreams.splice(this.localStreams.indexOf(stream),1);}this._maybeFireNegotiationNeeded();};RTCPeerConnection.prototype.removeStream=function(stream){var pc=this;stream.getTracks().forEach(function(track){var sender=pc.getSenders().find(function(s){return s.track===track;});if(sender){pc.removeTrack(sender);}});};RTCPeerConnection.prototype.getSenders=function(){return this.transceivers.filter(function(transceiver){return !!transceiver.rtpSender;}).map(function(transceiver){return transceiver.rtpSender;});};RTCPeerConnection.prototype.getReceivers=function(){return this.transceivers.filter(function(transceiver){return !!transceiver.rtpReceiver;}).map(function(transceiver){return transceiver.rtpReceiver;});};RTCPeerConnection.prototype._createIceGatherer=function(sdpMLineIndex,usingBundle){var pc=this;if(usingBundle&&sdpMLineIndex>0){return this.transceivers[0].iceGatherer;}else if(this._iceGatherers.length){return this._iceGatherers.shift();}var iceGatherer=new window.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});Object.defineProperty(iceGatherer,"state",{value:"new",writable:true});this.transceivers[sdpMLineIndex].bufferedCandidateEvents=[];this.transceivers[sdpMLineIndex].bufferCandidates=function(event){var end=!event.candidate||Object.keys(event.candidate).length===0;// polyfill since RTCIceGatherer.state is not implemented in
|
|
680
|
-
// Edge 10547 yet.
|
|
681
|
-
iceGatherer.state=end?"completed":"gathering";if(pc.transceivers[sdpMLineIndex].bufferedCandidateEvents!==null){pc.transceivers[sdpMLineIndex].bufferedCandidateEvents.push(event);}};iceGatherer.addEventListener("localcandidate",this.transceivers[sdpMLineIndex].bufferCandidates);return iceGatherer;};// start gathering from an RTCIceGatherer.
|
|
682
|
-
RTCPeerConnection.prototype._gather=function(mid,sdpMLineIndex){var pc=this;var iceGatherer=this.transceivers[sdpMLineIndex].iceGatherer;if(iceGatherer.onlocalcandidate){return;}var bufferedCandidateEvents=this.transceivers[sdpMLineIndex].bufferedCandidateEvents;this.transceivers[sdpMLineIndex].bufferedCandidateEvents=null;iceGatherer.removeEventListener("localcandidate",this.transceivers[sdpMLineIndex].bufferCandidates);iceGatherer.onlocalcandidate=function(evt){if(pc.usingBundle&&sdpMLineIndex>0){// if we know that we use bundle we can drop candidates with
|
|
683
|
-
// ѕdpMLineIndex > 0. If we don't do this then our state gets
|
|
684
|
-
// confused since we dispose the extra ice gatherer.
|
|
685
|
-
return;}var event=new Event("icecandidate");event.candidate={sdpMid:mid,sdpMLineIndex:sdpMLineIndex};var cand=evt.candidate;// Edge emits an empty object for RTCIceCandidateComplete‥
|
|
686
|
-
var end=!cand||Object.keys(cand).length===0;if(end){// polyfill since RTCIceGatherer.state is not implemented in
|
|
687
|
-
// Edge 10547 yet.
|
|
688
|
-
if(iceGatherer.state==="new"||iceGatherer.state==="gathering"){iceGatherer.state="completed";}}else {if(iceGatherer.state==="new"){iceGatherer.state="gathering";}// RTCIceCandidate doesn't have a component, needs to be added
|
|
689
|
-
cand.component=1;// also the usernameFragment. TODO: update SDP to take both variants.
|
|
690
|
-
cand.ufrag=iceGatherer.getLocalParameters().usernameFragment;var serializedCandidate=sdp$3.writeCandidate(cand);event.candidate=Object.assign(event.candidate,sdp$3.parseCandidate(serializedCandidate));event.candidate.candidate=serializedCandidate;event.candidate.toJSON=function(){return {candidate:event.candidate.candidate,sdpMid:event.candidate.sdpMid,sdpMLineIndex:event.candidate.sdpMLineIndex,usernameFragment:event.candidate.usernameFragment};};}// update local description.
|
|
691
|
-
var sections=sdp$3.getMediaSections(pc._localDescription.sdp);if(!end){sections[event.candidate.sdpMLineIndex]+="a="+event.candidate.candidate+"\r\n";}else {sections[event.candidate.sdpMLineIndex]+="a=end-of-candidates\r\n";}pc._localDescription.sdp=sdp$3.getDescription(pc._localDescription.sdp)+sections.join("");var complete=pc.transceivers.every(function(transceiver){return transceiver.iceGatherer&&transceiver.iceGatherer.state==="completed";});if(pc.iceGatheringState!=="gathering"){pc.iceGatheringState="gathering";pc._emitGatheringStateChange();}// Emit candidate. Also emit null candidate when all gatherers are
|
|
692
|
-
// complete.
|
|
693
|
-
if(!end){pc._dispatchEvent("icecandidate",event);}if(complete){pc._dispatchEvent("icecandidate",new Event("icecandidate"));pc.iceGatheringState="complete";pc._emitGatheringStateChange();}};// emit already gathered candidates.
|
|
694
|
-
window.setTimeout(function(){bufferedCandidateEvents.forEach(function(e){iceGatherer.onlocalcandidate(e);});},0);};// Create ICE transport and DTLS transport.
|
|
695
|
-
RTCPeerConnection.prototype._createIceAndDtlsTransports=function(){var pc=this;var iceTransport=new window.RTCIceTransport(null);iceTransport.onicestatechange=function(){pc._updateIceConnectionState();pc._updateConnectionState();};var dtlsTransport=new window.RTCDtlsTransport(iceTransport);dtlsTransport.ondtlsstatechange=function(){pc._updateConnectionState();};dtlsTransport.onerror=function(){// onerror does not set state to failed by itself.
|
|
696
|
-
Object.defineProperty(dtlsTransport,"state",{value:"failed",writable:true});pc._updateConnectionState();};return {iceTransport:iceTransport,dtlsTransport:dtlsTransport};};// Destroy ICE gatherer, ICE transport and DTLS transport.
|
|
697
|
-
// Without triggering the callbacks.
|
|
698
|
-
RTCPeerConnection.prototype._disposeIceAndDtlsTransports=function(sdpMLineIndex){var iceGatherer=this.transceivers[sdpMLineIndex].iceGatherer;if(iceGatherer){delete iceGatherer.onlocalcandidate;delete this.transceivers[sdpMLineIndex].iceGatherer;}var iceTransport=this.transceivers[sdpMLineIndex].iceTransport;if(iceTransport){delete iceTransport.onicestatechange;delete this.transceivers[sdpMLineIndex].iceTransport;}var dtlsTransport=this.transceivers[sdpMLineIndex].dtlsTransport;if(dtlsTransport){delete dtlsTransport.ondtlsstatechange;delete dtlsTransport.onerror;delete this.transceivers[sdpMLineIndex].dtlsTransport;}};// Start the RTP Sender and Receiver for a transceiver.
|
|
699
|
-
RTCPeerConnection.prototype._transceive=function(transceiver,send,recv){var params=getCommonCapabilities$3(transceiver.localCapabilities,transceiver.remoteCapabilities);if(send&&transceiver.rtpSender){params.encodings=transceiver.sendEncodingParameters;params.rtcp={cname:sdp$3.localCName,compound:transceiver.rtcpParameters.compound};if(transceiver.recvEncodingParameters.length){params.rtcp.ssrc=transceiver.recvEncodingParameters[0].ssrc;}transceiver.rtpSender.send(params);}if(recv&&transceiver.rtpReceiver&¶ms.codecs.length>0){// remove RTX field in Edge 14942
|
|
700
|
-
if(transceiver.kind==="video"&&transceiver.recvEncodingParameters&&edgeVersion<15019){transceiver.recvEncodingParameters.forEach(function(p){delete p.rtx;});}if(transceiver.recvEncodingParameters.length){params.encodings=transceiver.recvEncodingParameters;}else {params.encodings=[{}];}params.rtcp={compound:transceiver.rtcpParameters.compound};if(transceiver.rtcpParameters.cname){params.rtcp.cname=transceiver.rtcpParameters.cname;}if(transceiver.sendEncodingParameters.length){params.rtcp.ssrc=transceiver.sendEncodingParameters[0].ssrc;}transceiver.rtpReceiver.receive(params);}};RTCPeerConnection.prototype.setLocalDescription=function(description){var pc=this;// Note: pranswer is not supported.
|
|
701
|
-
if(["offer","answer"].indexOf(description.type)===-1){return Promise.reject(makeError$3("TypeError",'Unsupported type "'+description.type+'"'));}if(!isActionAllowedInSignalingState$3("setLocalDescription",description.type,pc.signalingState)||pc._isClosed){return Promise.reject(makeError$3("InvalidStateError","Can not set local "+description.type+" in state "+pc.signalingState));}var sections;var sessionpart;if(description.type==="offer"){// VERY limited support for SDP munging. Limited to:
|
|
702
|
-
// * changing the order of codecs
|
|
703
|
-
sections=sdp$3.splitSections(description.sdp);sessionpart=sections.shift();sections.forEach(function(mediaSection,sdpMLineIndex){var caps=sdp$3.parseRtpParameters(mediaSection);pc.transceivers[sdpMLineIndex].localCapabilities=caps;});pc.transceivers.forEach(function(transceiver,sdpMLineIndex){pc._gather(transceiver.mid,sdpMLineIndex);});}else if(description.type==="answer"){sections=sdp$3.splitSections(pc._remoteDescription.sdp);sessionpart=sections.shift();var isIceLite=sdp$3.matchPrefix(sessionpart,"a=ice-lite").length>0;sections.forEach(function(mediaSection,sdpMLineIndex){var transceiver=pc.transceivers[sdpMLineIndex];var iceGatherer=transceiver.iceGatherer;var iceTransport=transceiver.iceTransport;var dtlsTransport=transceiver.dtlsTransport;var localCapabilities=transceiver.localCapabilities;var remoteCapabilities=transceiver.remoteCapabilities;// treat bundle-only as not-rejected.
|
|
704
|
-
var rejected=sdp$3.isRejected(mediaSection)&&sdp$3.matchPrefix(mediaSection,"a=bundle-only").length===0;if(!rejected&&!transceiver.rejected){var remoteIceParameters=sdp$3.getIceParameters(mediaSection,sessionpart);var remoteDtlsParameters=sdp$3.getDtlsParameters(mediaSection,sessionpart);if(isIceLite){remoteDtlsParameters.role="server";}if(!pc.usingBundle||sdpMLineIndex===0){pc._gather(transceiver.mid,sdpMLineIndex);if(iceTransport.state==="new"){iceTransport.start(iceGatherer,remoteIceParameters,isIceLite?"controlling":"controlled");}if(dtlsTransport.state==="new"){dtlsTransport.start(remoteDtlsParameters);}}// Calculate intersection of capabilities.
|
|
705
|
-
var params=getCommonCapabilities$3(localCapabilities,remoteCapabilities);// Start the RTCRtpSender. The RTCRtpReceiver for this
|
|
706
|
-
// transceiver has already been started in setRemoteDescription.
|
|
707
|
-
pc._transceive(transceiver,params.codecs.length>0,false);}});}pc._localDescription={type:description.type,sdp:description.sdp};if(description.type==="offer"){pc._updateSignalingState("have-local-offer");}else {pc._updateSignalingState("stable");}return Promise.resolve();};RTCPeerConnection.prototype.setRemoteDescription=function(description){var pc=this;// Note: pranswer is not supported.
|
|
708
|
-
if(["offer","answer"].indexOf(description.type)===-1){return Promise.reject(makeError$3("TypeError",'Unsupported type "'+description.type+'"'));}if(!isActionAllowedInSignalingState$3("setRemoteDescription",description.type,pc.signalingState)||pc._isClosed){return Promise.reject(makeError$3("InvalidStateError","Can not set remote "+description.type+" in state "+pc.signalingState));}var streams={};pc.remoteStreams.forEach(function(stream){streams[stream.id]=stream;});var receiverList=[];var sections=sdp$3.splitSections(description.sdp);var sessionpart=sections.shift();var isIceLite=sdp$3.matchPrefix(sessionpart,"a=ice-lite").length>0;var usingBundle=sdp$3.matchPrefix(sessionpart,"a=group:BUNDLE ").length>0;pc.usingBundle=usingBundle;var iceOptions=sdp$3.matchPrefix(sessionpart,"a=ice-options:")[0];if(iceOptions){pc.canTrickleIceCandidates=iceOptions.substr(14).split(" ").indexOf("trickle")>=0;}else {pc.canTrickleIceCandidates=false;}sections.forEach(function(mediaSection,sdpMLineIndex){var lines=sdp$3.splitLines(mediaSection);var kind=sdp$3.getKind(mediaSection);// treat bundle-only as not-rejected.
|
|
709
|
-
var rejected=sdp$3.isRejected(mediaSection)&&sdp$3.matchPrefix(mediaSection,"a=bundle-only").length===0;var protocol=lines[0].substr(2).split(" ")[2];var direction=sdp$3.getDirection(mediaSection,sessionpart);var remoteMsid=sdp$3.parseMsid(mediaSection);var mid=sdp$3.getMid(mediaSection)||sdp$3.generateIdentifier();// Reject datachannels which are not implemented yet.
|
|
710
|
-
if(rejected||kind==="application"&&(protocol==="DTLS/SCTP"||protocol==="UDP/DTLS/SCTP")){// TODO: this is dangerous in the case where a non-rejected m-line
|
|
711
|
-
// becomes rejected.
|
|
712
|
-
pc.transceivers[sdpMLineIndex]={mid:mid,kind:kind,protocol:protocol,rejected:true};return;}if(!rejected&&pc.transceivers[sdpMLineIndex]&&pc.transceivers[sdpMLineIndex].rejected){// recycle a rejected transceiver.
|
|
713
|
-
pc.transceivers[sdpMLineIndex]=pc._createTransceiver(kind,true);}var transceiver;var iceGatherer;var iceTransport;var dtlsTransport;var rtpReceiver;var sendEncodingParameters;var recvEncodingParameters;var localCapabilities;var track;// FIXME: ensure the mediaSection has rtcp-mux set.
|
|
714
|
-
var remoteCapabilities=sdp$3.parseRtpParameters(mediaSection);var remoteIceParameters;var remoteDtlsParameters;if(!rejected){remoteIceParameters=sdp$3.getIceParameters(mediaSection,sessionpart);remoteDtlsParameters=sdp$3.getDtlsParameters(mediaSection,sessionpart);remoteDtlsParameters.role="client";}recvEncodingParameters=sdp$3.parseRtpEncodingParameters(mediaSection);var rtcpParameters=sdp$3.parseRtcpParameters(mediaSection);var isComplete=sdp$3.matchPrefix(mediaSection,"a=end-of-candidates",sessionpart).length>0;var cands=sdp$3.matchPrefix(mediaSection,"a=candidate:").map(function(cand){return sdp$3.parseCandidate(cand);}).filter(function(cand){return cand.component===1;});// Check if we can use BUNDLE and dispose transports.
|
|
715
|
-
if((description.type==="offer"||description.type==="answer")&&!rejected&&usingBundle&&sdpMLineIndex>0&&pc.transceivers[sdpMLineIndex]){pc._disposeIceAndDtlsTransports(sdpMLineIndex);pc.transceivers[sdpMLineIndex].iceGatherer=pc.transceivers[0].iceGatherer;pc.transceivers[sdpMLineIndex].iceTransport=pc.transceivers[0].iceTransport;pc.transceivers[sdpMLineIndex].dtlsTransport=pc.transceivers[0].dtlsTransport;if(pc.transceivers[sdpMLineIndex].rtpSender){pc.transceivers[sdpMLineIndex].rtpSender.setTransport(pc.transceivers[0].dtlsTransport);}if(pc.transceivers[sdpMLineIndex].rtpReceiver){pc.transceivers[sdpMLineIndex].rtpReceiver.setTransport(pc.transceivers[0].dtlsTransport);}}if(description.type==="offer"&&!rejected){transceiver=pc.transceivers[sdpMLineIndex]||pc._createTransceiver(kind);transceiver.mid=mid;if(!transceiver.iceGatherer){transceiver.iceGatherer=pc._createIceGatherer(sdpMLineIndex,usingBundle);}if(cands.length&&transceiver.iceTransport.state==="new"){if(isComplete&&(!usingBundle||sdpMLineIndex===0)){transceiver.iceTransport.setRemoteCandidates(cands);}else {cands.forEach(function(candidate){maybeAddCandidate$3(transceiver.iceTransport,candidate);});}}localCapabilities=window.RTCRtpReceiver.getCapabilities(kind);// filter RTX until additional stuff needed for RTX is implemented
|
|
716
|
-
// in adapter.js
|
|
717
|
-
if(edgeVersion<15019){localCapabilities.codecs=localCapabilities.codecs.filter(function(codec){return codec.name!=="rtx";});}sendEncodingParameters=transceiver.sendEncodingParameters||[{ssrc:(2*sdpMLineIndex+2)*1001}];// TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams
|
|
718
|
-
var isNewTrack=false;if(direction==="sendrecv"||direction==="sendonly"){isNewTrack=!transceiver.rtpReceiver;rtpReceiver=transceiver.rtpReceiver||new window.RTCRtpReceiver(transceiver.dtlsTransport,kind);if(isNewTrack){var stream;track=rtpReceiver.track;// FIXME: does not work with Plan B.
|
|
719
|
-
if(remoteMsid&&remoteMsid.stream==="-");else if(remoteMsid){if(!streams[remoteMsid.stream]){streams[remoteMsid.stream]=new window.MediaStream();Object.defineProperty(streams[remoteMsid.stream],"id",{get:function(){return remoteMsid.stream;}});}Object.defineProperty(track,"id",{get:function(){return remoteMsid.track;}});stream=streams[remoteMsid.stream];}else {if(!streams.default){streams.default=new window.MediaStream();}stream=streams.default;}if(stream){addTrackToStreamAndFireEvent(track,stream);transceiver.associatedRemoteMediaStreams.push(stream);}receiverList.push([track,rtpReceiver,stream]);}}else if(transceiver.rtpReceiver&&transceiver.rtpReceiver.track){transceiver.associatedRemoteMediaStreams.forEach(function(s){var nativeTrack=s.getTracks().find(function(t){return t.id===transceiver.rtpReceiver.track.id;});if(nativeTrack){removeTrackFromStreamAndFireEvent(nativeTrack,s);}});transceiver.associatedRemoteMediaStreams=[];}transceiver.localCapabilities=localCapabilities;transceiver.remoteCapabilities=remoteCapabilities;transceiver.rtpReceiver=rtpReceiver;transceiver.rtcpParameters=rtcpParameters;transceiver.sendEncodingParameters=sendEncodingParameters;transceiver.recvEncodingParameters=recvEncodingParameters;// Start the RTCRtpReceiver now. The RTPSender is started in
|
|
720
|
-
// setLocalDescription.
|
|
721
|
-
pc._transceive(pc.transceivers[sdpMLineIndex],false,isNewTrack);}else if(description.type==="answer"&&!rejected){transceiver=pc.transceivers[sdpMLineIndex];iceGatherer=transceiver.iceGatherer;iceTransport=transceiver.iceTransport;dtlsTransport=transceiver.dtlsTransport;rtpReceiver=transceiver.rtpReceiver;sendEncodingParameters=transceiver.sendEncodingParameters;localCapabilities=transceiver.localCapabilities;pc.transceivers[sdpMLineIndex].recvEncodingParameters=recvEncodingParameters;pc.transceivers[sdpMLineIndex].remoteCapabilities=remoteCapabilities;pc.transceivers[sdpMLineIndex].rtcpParameters=rtcpParameters;if(cands.length&&iceTransport.state==="new"){if((isIceLite||isComplete)&&(!usingBundle||sdpMLineIndex===0)){iceTransport.setRemoteCandidates(cands);}else {cands.forEach(function(candidate){maybeAddCandidate$3(transceiver.iceTransport,candidate);});}}if(!usingBundle||sdpMLineIndex===0){if(iceTransport.state==="new"){iceTransport.start(iceGatherer,remoteIceParameters,"controlling");}if(dtlsTransport.state==="new"){dtlsTransport.start(remoteDtlsParameters);}}// If the offer contained RTX but the answer did not,
|
|
722
|
-
// remove RTX from sendEncodingParameters.
|
|
723
|
-
var commonCapabilities=getCommonCapabilities$3(transceiver.localCapabilities,transceiver.remoteCapabilities);var hasRtx=commonCapabilities.codecs.filter(function(c){return c.name.toLowerCase()==="rtx";}).length;if(!hasRtx&&transceiver.sendEncodingParameters[0].rtx){delete transceiver.sendEncodingParameters[0].rtx;}pc._transceive(transceiver,direction==="sendrecv"||direction==="recvonly",direction==="sendrecv"||direction==="sendonly");// TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams
|
|
724
|
-
if(rtpReceiver&&(direction==="sendrecv"||direction==="sendonly")){track=rtpReceiver.track;if(remoteMsid){if(!streams[remoteMsid.stream]){streams[remoteMsid.stream]=new window.MediaStream();}addTrackToStreamAndFireEvent(track,streams[remoteMsid.stream]);receiverList.push([track,rtpReceiver,streams[remoteMsid.stream]]);}else {if(!streams.default){streams.default=new window.MediaStream();}addTrackToStreamAndFireEvent(track,streams.default);receiverList.push([track,rtpReceiver,streams.default]);}}else {// FIXME: actually the receiver should be created later.
|
|
725
|
-
delete transceiver.rtpReceiver;}}});if(pc._dtlsRole===undefined){pc._dtlsRole=description.type==="offer"?"active":"passive";}pc._remoteDescription={type:description.type,sdp:description.sdp};if(description.type==="offer"){pc._updateSignalingState("have-remote-offer");}else {pc._updateSignalingState("stable");}Object.keys(streams).forEach(function(sid){var stream=streams[sid];if(stream.getTracks().length){if(pc.remoteStreams.indexOf(stream)===-1){pc.remoteStreams.push(stream);var event=new Event("addstream");event.stream=stream;window.setTimeout(function(){pc._dispatchEvent("addstream",event);});}receiverList.forEach(function(item){var track=item[0];var receiver=item[1];if(stream.id!==item[2].id){return;}fireAddTrack(pc,track,receiver,[stream]);});}});receiverList.forEach(function(item){if(item[2]){return;}fireAddTrack(pc,item[0],item[1],[]);});// check whether addIceCandidate({}) was called within four seconds after
|
|
726
|
-
// setRemoteDescription.
|
|
727
|
-
window.setTimeout(function(){if(!(pc&&pc.transceivers)){return;}pc.transceivers.forEach(function(transceiver){if(transceiver.iceTransport&&transceiver.iceTransport.state==="new"&&transceiver.iceTransport.getRemoteCandidates().length>0){console.warn("Timeout for addRemoteCandidate. Consider sending "+"an end-of-candidates notification");transceiver.iceTransport.addRemoteCandidate({});}});},4000);return Promise.resolve();};RTCPeerConnection.prototype.close=function(){this.transceivers.forEach(function(transceiver){/* not yet
|
|
728
|
-
if (transceiver.iceGatherer) {
|
|
729
|
-
transceiver.iceGatherer.close();
|
|
730
|
-
}
|
|
731
|
-
*/if(transceiver.iceTransport){transceiver.iceTransport.stop();}if(transceiver.dtlsTransport){transceiver.dtlsTransport.stop();}if(transceiver.rtpSender){transceiver.rtpSender.stop();}if(transceiver.rtpReceiver){transceiver.rtpReceiver.stop();}});// FIXME: clean up tracks, local streams, remote streams, etc
|
|
732
|
-
this._isClosed=true;this._updateSignalingState("closed");};// Update the signaling state.
|
|
733
|
-
RTCPeerConnection.prototype._updateSignalingState=function(newState){this.signalingState=newState;var event=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",event);};// Determine whether to fire the negotiationneeded event.
|
|
734
|
-
RTCPeerConnection.prototype._maybeFireNegotiationNeeded=function(){var pc=this;if(this.signalingState!=="stable"||this.needNegotiation===true){return;}this.needNegotiation=true;window.setTimeout(function(){if(pc.needNegotiation){pc.needNegotiation=false;var event=new Event("negotiationneeded");pc._dispatchEvent("negotiationneeded",event);}},0);};// Update the ice connection state.
|
|
735
|
-
RTCPeerConnection.prototype._updateIceConnectionState=function(){var newState;var states={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};this.transceivers.forEach(function(transceiver){if(transceiver.iceTransport&&!transceiver.rejected){states[transceiver.iceTransport.state]++;}});newState="new";if(states.failed>0){newState="failed";}else if(states.checking>0){newState="checking";}else if(states.disconnected>0){newState="disconnected";}else if(states.new>0){newState="new";}else if(states.connected>0){newState="connected";}else if(states.completed>0){newState="completed";}if(newState!==this.iceConnectionState){this.iceConnectionState=newState;var event=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",event);}};// Update the connection state.
|
|
736
|
-
RTCPeerConnection.prototype._updateConnectionState=function(){var newState;var states={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};this.transceivers.forEach(function(transceiver){if(transceiver.iceTransport&&transceiver.dtlsTransport&&!transceiver.rejected){states[transceiver.iceTransport.state]++;states[transceiver.dtlsTransport.state]++;}});// ICETransport.completed and connected are the same for this purpose.
|
|
737
|
-
states.connected+=states.completed;newState="new";if(states.failed>0){newState="failed";}else if(states.connecting>0){newState="connecting";}else if(states.disconnected>0){newState="disconnected";}else if(states.new>0){newState="new";}else if(states.connected>0){newState="connected";}if(newState!==this.connectionState){this.connectionState=newState;var event=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",event);}};RTCPeerConnection.prototype.createOffer=function(){var pc=this;if(pc._isClosed){return Promise.reject(makeError$3("InvalidStateError","Can not call createOffer after close"));}var numAudioTracks=pc.transceivers.filter(function(t){return t.kind==="audio";}).length;var numVideoTracks=pc.transceivers.filter(function(t){return t.kind==="video";}).length;// Determine number of audio and video tracks we need to send/recv.
|
|
738
|
-
var offerOptions=arguments[0];if(offerOptions){// Reject Chrome legacy constraints.
|
|
739
|
-
if(offerOptions.mandatory||offerOptions.optional){throw new TypeError("Legacy mandatory/optional constraints not supported.");}if(offerOptions.offerToReceiveAudio!==undefined){if(offerOptions.offerToReceiveAudio===true){numAudioTracks=1;}else if(offerOptions.offerToReceiveAudio===false){numAudioTracks=0;}else {numAudioTracks=offerOptions.offerToReceiveAudio;}}if(offerOptions.offerToReceiveVideo!==undefined){if(offerOptions.offerToReceiveVideo===true){numVideoTracks=1;}else if(offerOptions.offerToReceiveVideo===false){numVideoTracks=0;}else {numVideoTracks=offerOptions.offerToReceiveVideo;}}}pc.transceivers.forEach(function(transceiver){if(transceiver.kind==="audio"){numAudioTracks--;if(numAudioTracks<0){transceiver.wantReceive=false;}}else if(transceiver.kind==="video"){numVideoTracks--;if(numVideoTracks<0){transceiver.wantReceive=false;}}});// Create M-lines for recvonly streams.
|
|
740
|
-
while(numAudioTracks>0||numVideoTracks>0){if(numAudioTracks>0){pc._createTransceiver("audio");numAudioTracks--;}if(numVideoTracks>0){pc._createTransceiver("video");numVideoTracks--;}}var sdp$1=sdp$3.writeSessionBoilerplate(pc._sdpSessionId,pc._sdpSessionVersion++);pc.transceivers.forEach(function(transceiver,sdpMLineIndex){// For each track, create an ice gatherer, ice transport,
|
|
741
|
-
// dtls transport, potentially rtpsender and rtpreceiver.
|
|
742
|
-
var track=transceiver.track;var kind=transceiver.kind;var mid=transceiver.mid||sdp$3.generateIdentifier();transceiver.mid=mid;if(!transceiver.iceGatherer){transceiver.iceGatherer=pc._createIceGatherer(sdpMLineIndex,pc.usingBundle);}var localCapabilities=window.RTCRtpSender.getCapabilities(kind);// filter RTX until additional stuff needed for RTX is implemented
|
|
743
|
-
// in adapter.js
|
|
744
|
-
if(edgeVersion<15019){localCapabilities.codecs=localCapabilities.codecs.filter(function(codec){return codec.name!=="rtx";});}localCapabilities.codecs.forEach(function(codec){// work around https://bugs.chromium.org/p/webrtc/issues/detail?id=6552
|
|
745
|
-
// by adding level-asymmetry-allowed=1
|
|
746
|
-
if(codec.name==="H264"&&codec.parameters["level-asymmetry-allowed"]===undefined){codec.parameters["level-asymmetry-allowed"]="1";}// for subsequent offers, we might have to re-use the payload
|
|
747
|
-
// type of the last offer.
|
|
748
|
-
if(transceiver.remoteCapabilities&&transceiver.remoteCapabilities.codecs){transceiver.remoteCapabilities.codecs.forEach(function(remoteCodec){if(codec.name.toLowerCase()===remoteCodec.name.toLowerCase()&&codec.clockRate===remoteCodec.clockRate){codec.preferredPayloadType=remoteCodec.payloadType;}});}});localCapabilities.headerExtensions.forEach(function(hdrExt){var remoteExtensions=transceiver.remoteCapabilities&&transceiver.remoteCapabilities.headerExtensions||[];remoteExtensions.forEach(function(rHdrExt){if(hdrExt.uri===rHdrExt.uri){hdrExt.id=rHdrExt.id;}});});// generate an ssrc now, to be used later in rtpSender.send
|
|
749
|
-
var sendEncodingParameters=transceiver.sendEncodingParameters||[{ssrc:(2*sdpMLineIndex+1)*1001}];if(track){// add RTX
|
|
750
|
-
if(edgeVersion>=15019&&kind==="video"&&!sendEncodingParameters[0].rtx){sendEncodingParameters[0].rtx={ssrc:sendEncodingParameters[0].ssrc+1};}}if(transceiver.wantReceive){transceiver.rtpReceiver=new window.RTCRtpReceiver(transceiver.dtlsTransport,kind);}transceiver.localCapabilities=localCapabilities;transceiver.sendEncodingParameters=sendEncodingParameters;});// always offer BUNDLE and dispose on return if not supported.
|
|
751
|
-
if(pc._config.bundlePolicy!=="max-compat"){sdp$1+="a=group:BUNDLE "+pc.transceivers.map(function(t){return t.mid;}).join(" ")+"\r\n";}sdp$1+="a=ice-options:trickle\r\n";pc.transceivers.forEach(function(transceiver,sdpMLineIndex){sdp$1+=writeMediaSection$3(transceiver,transceiver.localCapabilities,"offer",transceiver.stream,pc._dtlsRole);sdp$1+="a=rtcp-rsize\r\n";if(transceiver.iceGatherer&&pc.iceGatheringState!=="new"&&(sdpMLineIndex===0||!pc.usingBundle)){transceiver.iceGatherer.getLocalCandidates().forEach(function(cand){cand.component=1;sdp$1+="a="+sdp$3.writeCandidate(cand)+"\r\n";});if(transceiver.iceGatherer.state==="completed"){sdp$1+="a=end-of-candidates\r\n";}}});var desc=new window.RTCSessionDescription({type:"offer",sdp:sdp$1});return Promise.resolve(desc);};RTCPeerConnection.prototype.createAnswer=function(){var pc=this;if(pc._isClosed){return Promise.reject(makeError$3("InvalidStateError","Can not call createAnswer after close"));}if(!(pc.signalingState==="have-remote-offer"||pc.signalingState==="have-local-pranswer")){return Promise.reject(makeError$3("InvalidStateError","Can not call createAnswer in signalingState "+pc.signalingState));}var sdp$1=sdp$3.writeSessionBoilerplate(pc._sdpSessionId,pc._sdpSessionVersion++);if(pc.usingBundle){sdp$1+="a=group:BUNDLE "+pc.transceivers.map(function(t){return t.mid;}).join(" ")+"\r\n";}sdp$1+="a=ice-options:trickle\r\n";var mediaSectionsInOffer=sdp$3.getMediaSections(pc._remoteDescription.sdp).length;pc.transceivers.forEach(function(transceiver,sdpMLineIndex){if(sdpMLineIndex+1>mediaSectionsInOffer){return;}if(transceiver.rejected){if(transceiver.kind==="application"){if(transceiver.protocol==="DTLS/SCTP"){// legacy fmt
|
|
752
|
-
sdp$1+="m=application 0 DTLS/SCTP 5000\r\n";}else {sdp$1+="m=application 0 "+transceiver.protocol+" webrtc-datachannel\r\n";}}else if(transceiver.kind==="audio"){sdp$1+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\n"+"a=rtpmap:0 PCMU/8000\r\n";}else if(transceiver.kind==="video"){sdp$1+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\n"+"a=rtpmap:120 VP8/90000\r\n";}sdp$1+="c=IN IP4 0.0.0.0\r\n"+"a=inactive\r\n"+"a=mid:"+transceiver.mid+"\r\n";return;}// FIXME: look at direction.
|
|
753
|
-
if(transceiver.stream){var localTrack;if(transceiver.kind==="audio"){localTrack=transceiver.stream.getAudioTracks()[0];}else if(transceiver.kind==="video"){localTrack=transceiver.stream.getVideoTracks()[0];}if(localTrack){// add RTX
|
|
754
|
-
if(edgeVersion>=15019&&transceiver.kind==="video"&&!transceiver.sendEncodingParameters[0].rtx){transceiver.sendEncodingParameters[0].rtx={ssrc:transceiver.sendEncodingParameters[0].ssrc+1};}}}// Calculate intersection of capabilities.
|
|
755
|
-
var commonCapabilities=getCommonCapabilities$3(transceiver.localCapabilities,transceiver.remoteCapabilities);var hasRtx=commonCapabilities.codecs.filter(function(c){return c.name.toLowerCase()==="rtx";}).length;if(!hasRtx&&transceiver.sendEncodingParameters[0].rtx){delete transceiver.sendEncodingParameters[0].rtx;}sdp$1+=writeMediaSection$3(transceiver,commonCapabilities,"answer",transceiver.stream,pc._dtlsRole);if(transceiver.rtcpParameters&&transceiver.rtcpParameters.reducedSize){sdp$1+="a=rtcp-rsize\r\n";}});var desc=new window.RTCSessionDescription({type:"answer",sdp:sdp$1});return Promise.resolve(desc);};RTCPeerConnection.prototype.addIceCandidate=function(candidate){var pc=this;var sections;if(candidate&&!(candidate.sdpMLineIndex!==undefined||candidate.sdpMid)){return Promise.reject(new TypeError("sdpMLineIndex or sdpMid required"));}// TODO: needs to go into ops queue.
|
|
756
|
-
return new Promise(function(resolve,reject){if(!pc._remoteDescription){return reject(makeError$3("InvalidStateError","Can not add ICE candidate without a remote description"));}else if(!candidate||candidate.candidate===""){for(var j=0;j<pc.transceivers.length;j++){if(pc.transceivers[j].rejected){continue;}pc.transceivers[j].iceTransport.addRemoteCandidate({});sections=sdp$3.getMediaSections(pc._remoteDescription.sdp);sections[j]+="a=end-of-candidates\r\n";pc._remoteDescription.sdp=sdp$3.getDescription(pc._remoteDescription.sdp)+sections.join("");if(pc.usingBundle){break;}}}else {var sdpMLineIndex=candidate.sdpMLineIndex;if(candidate.sdpMid){for(var i=0;i<pc.transceivers.length;i++){if(pc.transceivers[i].mid===candidate.sdpMid){sdpMLineIndex=i;break;}}}var transceiver=pc.transceivers[sdpMLineIndex];if(transceiver){if(transceiver.rejected){return resolve();}var cand=Object.keys(candidate.candidate).length>0?sdp$3.parseCandidate(candidate.candidate):{};// Ignore Chrome's invalid candidates since Edge does not like them.
|
|
757
|
-
if(cand.protocol==="tcp"&&(cand.port===0||cand.port===9)){return resolve();}// Ignore RTCP candidates, we assume RTCP-MUX.
|
|
758
|
-
if(cand.component&&cand.component!==1){return resolve();}// when using bundle, avoid adding candidates to the wrong
|
|
759
|
-
// ice transport. And avoid adding candidates added in the SDP.
|
|
760
|
-
if(sdpMLineIndex===0||sdpMLineIndex>0&&transceiver.iceTransport!==pc.transceivers[0].iceTransport){if(!maybeAddCandidate$3(transceiver.iceTransport,cand)){return reject(makeError$3("OperationError","Can not add ICE candidate"));}}// update the remoteDescription.
|
|
761
|
-
var candidateString=candidate.candidate.trim();if(candidateString.indexOf("a=")===0){candidateString=candidateString.substr(2);}sections=sdp$3.getMediaSections(pc._remoteDescription.sdp);sections[sdpMLineIndex]+="a="+(cand.type?candidateString:"end-of-candidates")+"\r\n";pc._remoteDescription.sdp=sdp$3.getDescription(pc._remoteDescription.sdp)+sections.join("");}else {return reject(makeError$3("OperationError","Can not add ICE candidate"));}}resolve();});};RTCPeerConnection.prototype.getStats=function(selector){if(selector&&selector instanceof window.MediaStreamTrack){var senderOrReceiver=null;this.transceivers.forEach(function(transceiver){if(transceiver.rtpSender&&transceiver.rtpSender.track===selector){senderOrReceiver=transceiver.rtpSender;}else if(transceiver.rtpReceiver&&transceiver.rtpReceiver.track===selector){senderOrReceiver=transceiver.rtpReceiver;}});if(!senderOrReceiver){throw makeError$3("InvalidAccessError","Invalid selector.");}return senderOrReceiver.getStats();}var promises=[];this.transceivers.forEach(function(transceiver){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(method){if(transceiver[method]){promises.push(transceiver[method].getStats());}});});return Promise.all(promises).then(function(allStats){var results=new Map();allStats.forEach(function(stats){stats.forEach(function(stat){results.set(stat.id,stat);});});return results;});};// fix low-level stat names and return Map instead of object.
|
|
762
|
-
var ortcObjects=["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"];ortcObjects.forEach(function(ortcObjectName){var obj=window[ortcObjectName];if(obj&&obj.prototype&&obj.prototype.getStats){var nativeGetstats=obj.prototype.getStats;obj.prototype.getStats=function(){return nativeGetstats.apply(this).then(function(nativeStats){var mapStats=new Map();Object.keys(nativeStats).forEach(function(id){nativeStats[id].type=fixStatsType$3(nativeStats[id]);mapStats.set(id,nativeStats[id]);});return mapStats;});};}});// legacy callback shims. Should be moved to adapter.js some days.
|
|
763
|
-
var methods=["createOffer","createAnswer"];methods.forEach(function(method){var nativeMethod=RTCPeerConnection.prototype[method];RTCPeerConnection.prototype[method]=function(){var args=arguments;if(typeof args[0]==="function"||typeof args[1]==="function"){// legacy
|
|
764
|
-
return nativeMethod.apply(this,[arguments[2]]).then(function(description){if(typeof args[0]==="function"){args[0].apply(null,[description]);}},function(error){if(typeof args[1]==="function"){args[1].apply(null,[error]);}});}return nativeMethod.apply(this,arguments);};});methods=["setLocalDescription","setRemoteDescription","addIceCandidate"];methods.forEach(function(method){var nativeMethod=RTCPeerConnection.prototype[method];RTCPeerConnection.prototype[method]=function(){var args=arguments;if(typeof args[1]==="function"||typeof args[2]==="function"){// legacy
|
|
765
|
-
return nativeMethod.apply(this,arguments).then(function(){if(typeof args[1]==="function"){args[1].apply(null);}},function(error){if(typeof args[2]==="function"){args[2].apply(null,[error]);}});}return nativeMethod.apply(this,arguments);};});// getStats is special. It doesn't have a spec legacy method yet we support
|
|
766
|
-
// getStats(something, cb) without error callbacks.
|
|
767
|
-
["getStats"].forEach(function(method){var nativeMethod=RTCPeerConnection.prototype[method];RTCPeerConnection.prototype[method]=function(){var args=arguments;if(typeof args[1]==="function"){return nativeMethod.apply(this,arguments).then(function(){if(typeof args[1]==="function"){args[1].apply(null);}});}return nativeMethod.apply(this,arguments);};});return RTCPeerConnection;};/*
|
|
768
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
769
|
-
*
|
|
770
|
-
* Use of this source code is governed by a BSD-style license
|
|
771
|
-
* that can be found in the LICENSE file in the root of the source
|
|
772
|
-
* tree.
|
|
773
|
-
*/function shimGetUserMedia$2$3(window){const navigator=window&&window.navigator;const shimError_=function(e){return {name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name;}};};// getUserMedia error shim.
|
|
774
|
-
const origGetUserMedia=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(c){return origGetUserMedia(c).catch(e=>Promise.reject(shimError_(e)));};}/*
|
|
775
|
-
* Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.
|
|
776
|
-
*
|
|
777
|
-
* Use of this source code is governed by a BSD-style license
|
|
778
|
-
* that can be found in the LICENSE file in the root of the source
|
|
779
|
-
* tree.
|
|
780
|
-
*/function shimGetDisplayMedia$1$3(window){if(!("getDisplayMedia"in window.navigator)){return;}if(!window.navigator.mediaDevices){return;}if(window.navigator.mediaDevices&&"getDisplayMedia"in window.navigator.mediaDevices){return;}window.navigator.mediaDevices.getDisplayMedia=window.navigator.getDisplayMedia.bind(window.navigator);}/*
|
|
781
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
782
|
-
*
|
|
783
|
-
* Use of this source code is governed by a BSD-style license
|
|
784
|
-
* that can be found in the LICENSE file in the root of the source
|
|
785
|
-
* tree.
|
|
786
|
-
*/function shimPeerConnection$1$3(window,browserDetails){if(window.RTCIceGatherer){if(!window.RTCIceCandidate){window.RTCIceCandidate=function RTCIceCandidate(args){return args;};}if(!window.RTCSessionDescription){window.RTCSessionDescription=function RTCSessionDescription(args){return args;};}// this adds an additional event listener to MediaStrackTrack that signals
|
|
787
|
-
// when a tracks enabled property was changed. Workaround for a bug in
|
|
788
|
-
// addStream, see below. No longer required in 15025+
|
|
789
|
-
if(browserDetails.version<15025){const origMSTEnabled=Object.getOwnPropertyDescriptor(window.MediaStreamTrack.prototype,"enabled");Object.defineProperty(window.MediaStreamTrack.prototype,"enabled",{set(value){origMSTEnabled.set.call(this,value);const ev=new Event("enabled");ev.enabled=value;this.dispatchEvent(ev);}});}}// ORTC defines the DTMF sender a bit different.
|
|
790
|
-
// https://github.com/w3c/ortc/issues/714
|
|
791
|
-
if(window.RTCRtpSender&&!("dtmf"in window.RTCRtpSender.prototype)){Object.defineProperty(window.RTCRtpSender.prototype,"dtmf",{get(){if(this._dtmf===undefined){if(this.track.kind==="audio"){this._dtmf=new window.RTCDtmfSender(this);}else if(this.track.kind==="video"){this._dtmf=null;}}return this._dtmf;}});}// Edge currently only implements the RTCDtmfSender, not the
|
|
792
|
-
// RTCDTMFSender alias. See http://draft.ortc.org/#rtcdtmfsender2*
|
|
793
|
-
if(window.RTCDtmfSender&&!window.RTCDTMFSender){window.RTCDTMFSender=window.RTCDtmfSender;}const RTCPeerConnectionShim=rtcpeerconnection$3(window,browserDetails.version);window.RTCPeerConnection=function RTCPeerConnection(config){if(config&&config.iceServers){config.iceServers=filterIceServers$1$3(config.iceServers,browserDetails.version);log$1$3("ICE servers after filtering:",config.iceServers);}return new RTCPeerConnectionShim(config);};window.RTCPeerConnection.prototype=RTCPeerConnectionShim.prototype;}function shimReplaceTrack$3(window){// ORTC has replaceTrack -- https://github.com/w3c/ortc/issues/614
|
|
794
|
-
if(window.RTCRtpSender&&!("replaceTrack"in window.RTCRtpSender.prototype)){window.RTCRtpSender.prototype.replaceTrack=window.RTCRtpSender.prototype.setTrack;}}var edgeShim$3=/*#__PURE__*/Object.freeze({__proto__:null,shimPeerConnection:shimPeerConnection$1$3,shimReplaceTrack:shimReplaceTrack$3,shimGetUserMedia:shimGetUserMedia$2$3,shimGetDisplayMedia:shimGetDisplayMedia$1$3});/*
|
|
795
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
796
|
-
*
|
|
797
|
-
* Use of this source code is governed by a BSD-style license
|
|
798
|
-
* that can be found in the LICENSE file in the root of the source
|
|
799
|
-
* tree.
|
|
800
|
-
*/function shimGetUserMedia$1$3(window,browserDetails){const navigator=window&&window.navigator;const MediaStreamTrack=window&&window.MediaStreamTrack;navigator.getUserMedia=function(constraints,onSuccess,onError){// Replace Firefox 44+'s deprecation warning with unprefixed version.
|
|
801
|
-
deprecated$3("navigator.getUserMedia","navigator.mediaDevices.getUserMedia");navigator.mediaDevices.getUserMedia(constraints).then(onSuccess,onError);};if(!(browserDetails.version>55&&"autoGainControl"in navigator.mediaDevices.getSupportedConstraints())){const remap=function(obj,a,b){if(a in obj&&!(b in obj)){obj[b]=obj[a];delete obj[a];}};const nativeGetUserMedia=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(c){if(typeof c==="object"&&typeof c.audio==="object"){c=JSON.parse(JSON.stringify(c));remap(c.audio,"autoGainControl","mozAutoGainControl");remap(c.audio,"noiseSuppression","mozNoiseSuppression");}return nativeGetUserMedia(c);};if(MediaStreamTrack&&MediaStreamTrack.prototype.getSettings){const nativeGetSettings=MediaStreamTrack.prototype.getSettings;MediaStreamTrack.prototype.getSettings=function(){const obj=nativeGetSettings.apply(this,arguments);remap(obj,"mozAutoGainControl","autoGainControl");remap(obj,"mozNoiseSuppression","noiseSuppression");return obj;};}if(MediaStreamTrack&&MediaStreamTrack.prototype.applyConstraints){const nativeApplyConstraints=MediaStreamTrack.prototype.applyConstraints;MediaStreamTrack.prototype.applyConstraints=function(c){if(this.kind==="audio"&&typeof c==="object"){c=JSON.parse(JSON.stringify(c));remap(c,"autoGainControl","mozAutoGainControl");remap(c,"noiseSuppression","mozNoiseSuppression");}return nativeApplyConstraints.apply(this,[c]);};}}}/*
|
|
802
|
-
* Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.
|
|
803
|
-
*
|
|
804
|
-
* Use of this source code is governed by a BSD-style license
|
|
805
|
-
* that can be found in the LICENSE file in the root of the source
|
|
806
|
-
* tree.
|
|
807
|
-
*/function shimGetDisplayMedia$5(window,preferredMediaSource){if(window.navigator.mediaDevices&&"getDisplayMedia"in window.navigator.mediaDevices){return;}if(!window.navigator.mediaDevices){return;}window.navigator.mediaDevices.getDisplayMedia=function getDisplayMedia(constraints){if(!(constraints&&constraints.video)){const err=new DOMException("getDisplayMedia without video "+"constraints is undefined");err.name="NotFoundError";// from https://heycam.github.io/webidl/#idl-DOMException-error-names
|
|
808
|
-
err.code=8;return Promise.reject(err);}if(constraints.video===true){constraints.video={mediaSource:preferredMediaSource};}else {constraints.video.mediaSource=preferredMediaSource;}return window.navigator.mediaDevices.getUserMedia(constraints);};}/*
|
|
809
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
810
|
-
*
|
|
811
|
-
* Use of this source code is governed by a BSD-style license
|
|
812
|
-
* that can be found in the LICENSE file in the root of the source
|
|
813
|
-
* tree.
|
|
814
|
-
*/function shimOnTrack$4(window){if(typeof window==="object"&&window.RTCTrackEvent&&"receiver"in window.RTCTrackEvent.prototype&&!("transceiver"in window.RTCTrackEvent.prototype)){Object.defineProperty(window.RTCTrackEvent.prototype,"transceiver",{get(){return {receiver:this.receiver};}});}}function shimPeerConnection$5(window,browserDetails){if(typeof window!=="object"||!(window.RTCPeerConnection||window.mozRTCPeerConnection)){return;// probably media.peerconnection.enabled=false in about:config
|
|
815
|
-
}if(!window.RTCPeerConnection&&window.mozRTCPeerConnection){// very basic support for old versions.
|
|
816
|
-
window.RTCPeerConnection=window.mozRTCPeerConnection;}if(browserDetails.version<53){// shim away need for obsolete RTCIceCandidate/RTCSessionDescription.
|
|
817
|
-
["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(method){const nativeMethod=window.RTCPeerConnection.prototype[method];const methodObj={[method](){arguments[0]=new(method==="addIceCandidate"?window.RTCIceCandidate:window.RTCSessionDescription)(arguments[0]);return nativeMethod.apply(this,arguments);}};window.RTCPeerConnection.prototype[method]=methodObj[method];});}const modernStatsTypes={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"};const nativeGetStats=window.RTCPeerConnection.prototype.getStats;window.RTCPeerConnection.prototype.getStats=function getStats(){const[selector,onSucc,onErr]=arguments;return nativeGetStats.apply(this,[selector||null]).then(stats=>{if(browserDetails.version<53&&!onSucc){// Shim only promise getStats with spec-hyphens in type names
|
|
818
|
-
// Leave callback version alone; misc old uses of forEach before Map
|
|
819
|
-
try{stats.forEach(stat=>{stat.type=modernStatsTypes[stat.type]||stat.type;});}catch(e){if(e.name!=="TypeError"){throw e;}// Avoid TypeError: "type" is read-only, in old versions. 34-43ish
|
|
820
|
-
stats.forEach((stat,i)=>{stats.set(i,Object.assign({},stat,{type:modernStatsTypes[stat.type]||stat.type}));});}}return stats;}).then(onSucc,onErr);};}function shimSenderGetStats$3(window){if(!(typeof window==="object"&&window.RTCPeerConnection&&window.RTCRtpSender)){return;}if(window.RTCRtpSender&&"getStats"in window.RTCRtpSender.prototype){return;}const origGetSenders=window.RTCPeerConnection.prototype.getSenders;if(origGetSenders){window.RTCPeerConnection.prototype.getSenders=function getSenders(){const senders=origGetSenders.apply(this,[]);senders.forEach(sender=>sender._pc=this);return senders;};}const origAddTrack=window.RTCPeerConnection.prototype.addTrack;if(origAddTrack){window.RTCPeerConnection.prototype.addTrack=function addTrack(){const sender=origAddTrack.apply(this,arguments);sender._pc=this;return sender;};}window.RTCRtpSender.prototype.getStats=function getStats(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map());};}function shimReceiverGetStats$3(window){if(!(typeof window==="object"&&window.RTCPeerConnection&&window.RTCRtpSender)){return;}if(window.RTCRtpSender&&"getStats"in window.RTCRtpReceiver.prototype){return;}const origGetReceivers=window.RTCPeerConnection.prototype.getReceivers;if(origGetReceivers){window.RTCPeerConnection.prototype.getReceivers=function getReceivers(){const receivers=origGetReceivers.apply(this,[]);receivers.forEach(receiver=>receiver._pc=this);return receivers;};}wrapPeerConnectionEvent$3(window,"track",e=>{e.receiver._pc=e.srcElement;return e;});window.RTCRtpReceiver.prototype.getStats=function getStats(){return this._pc.getStats(this.track);};}function shimRemoveStream$3(window){if(!window.RTCPeerConnection||"removeStream"in window.RTCPeerConnection.prototype){return;}window.RTCPeerConnection.prototype.removeStream=function removeStream(stream){deprecated$3("removeStream","removeTrack");this.getSenders().forEach(sender=>{if(sender.track&&stream.getTracks().includes(sender.track)){this.removeTrack(sender);}});};}function shimRTCDataChannel$3(window){// rename DataChannel to RTCDataChannel (native fix in FF60):
|
|
821
|
-
// https://bugzilla.mozilla.org/show_bug.cgi?id=1173851
|
|
822
|
-
if(window.DataChannel&&!window.RTCDataChannel){window.RTCDataChannel=window.DataChannel;}}function shimAddTransceiver$3(window){// https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647
|
|
823
|
-
// Firefox ignores the init sendEncodings options passed to addTransceiver
|
|
824
|
-
// https://bugzilla.mozilla.org/show_bug.cgi?id=1396918
|
|
825
|
-
if(!(typeof window==="object"&&window.RTCPeerConnection)){return;}const origAddTransceiver=window.RTCPeerConnection.prototype.addTransceiver;if(origAddTransceiver){window.RTCPeerConnection.prototype.addTransceiver=function addTransceiver(){this.setParametersPromises=[];const initParameters=arguments[1];const shouldPerformCheck=initParameters&&"sendEncodings"in initParameters;if(shouldPerformCheck){// If sendEncodings params are provided, validate grammar
|
|
826
|
-
initParameters.sendEncodings.forEach(encodingParam=>{if("rid"in encodingParam){const ridRegex=/^[a-z0-9]{0,16}$/i;if(!ridRegex.test(encodingParam.rid)){throw new TypeError("Invalid RID value provided.");}}if("scaleResolutionDownBy"in encodingParam){if(!(parseFloat(encodingParam.scaleResolutionDownBy)>=1.0)){throw new RangeError("scale_resolution_down_by must be >= 1.0");}}if("maxFramerate"in encodingParam){if(!(parseFloat(encodingParam.maxFramerate)>=0)){throw new RangeError("max_framerate must be >= 0.0");}}});}const transceiver=origAddTransceiver.apply(this,arguments);if(shouldPerformCheck){// Check if the init options were applied. If not we do this in an
|
|
827
|
-
// asynchronous way and save the promise reference in a global object.
|
|
828
|
-
// This is an ugly hack, but at the same time is way more robust than
|
|
829
|
-
// checking the sender parameters before and after the createOffer
|
|
830
|
-
// Also note that after the createoffer we are not 100% sure that
|
|
831
|
-
// the params were asynchronously applied so we might miss the
|
|
832
|
-
// opportunity to recreate offer.
|
|
833
|
-
const{sender}=transceiver;const params=sender.getParameters();if(!("encodings"in params)||// Avoid being fooled by patched getParameters() below.
|
|
834
|
-
params.encodings.length===1&&Object.keys(params.encodings[0]).length===0){params.encodings=initParameters.sendEncodings;sender.sendEncodings=initParameters.sendEncodings;this.setParametersPromises.push(sender.setParameters(params).then(()=>{delete sender.sendEncodings;}).catch(()=>{delete sender.sendEncodings;}));}}return transceiver;};}}function shimGetParameters$3(window){if(!(typeof window==="object"&&window.RTCRtpSender)){return;}const origGetParameters=window.RTCRtpSender.prototype.getParameters;if(origGetParameters){window.RTCRtpSender.prototype.getParameters=function getParameters(){const params=origGetParameters.apply(this,arguments);if(!("encodings"in params)){params.encodings=[].concat(this.sendEncodings||[{}]);}return params;};}}function shimCreateOffer$3(window){// https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647
|
|
835
|
-
// Firefox ignores the init sendEncodings options passed to addTransceiver
|
|
836
|
-
// https://bugzilla.mozilla.org/show_bug.cgi?id=1396918
|
|
837
|
-
if(!(typeof window==="object"&&window.RTCPeerConnection)){return;}const origCreateOffer=window.RTCPeerConnection.prototype.createOffer;window.RTCPeerConnection.prototype.createOffer=function createOffer(){if(this.setParametersPromises&&this.setParametersPromises.length){return Promise.all(this.setParametersPromises).then(()=>{return origCreateOffer.apply(this,arguments);}).finally(()=>{this.setParametersPromises=[];});}return origCreateOffer.apply(this,arguments);};}function shimCreateAnswer$3(window){// https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647
|
|
838
|
-
// Firefox ignores the init sendEncodings options passed to addTransceiver
|
|
839
|
-
// https://bugzilla.mozilla.org/show_bug.cgi?id=1396918
|
|
840
|
-
if(!(typeof window==="object"&&window.RTCPeerConnection)){return;}const origCreateAnswer=window.RTCPeerConnection.prototype.createAnswer;window.RTCPeerConnection.prototype.createAnswer=function createAnswer(){if(this.setParametersPromises&&this.setParametersPromises.length){return Promise.all(this.setParametersPromises).then(()=>{return origCreateAnswer.apply(this,arguments);}).finally(()=>{this.setParametersPromises=[];});}return origCreateAnswer.apply(this,arguments);};}var firefoxShim$3=/*#__PURE__*/Object.freeze({__proto__:null,shimOnTrack:shimOnTrack$4,shimPeerConnection:shimPeerConnection$5,shimSenderGetStats:shimSenderGetStats$3,shimReceiverGetStats:shimReceiverGetStats$3,shimRemoveStream:shimRemoveStream$3,shimRTCDataChannel:shimRTCDataChannel$3,shimAddTransceiver:shimAddTransceiver$3,shimGetParameters:shimGetParameters$3,shimCreateOffer:shimCreateOffer$3,shimCreateAnswer:shimCreateAnswer$3,shimGetUserMedia:shimGetUserMedia$1$3,shimGetDisplayMedia:shimGetDisplayMedia$5});/*
|
|
841
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
842
|
-
*
|
|
843
|
-
* Use of this source code is governed by a BSD-style license
|
|
844
|
-
* that can be found in the LICENSE file in the root of the source
|
|
845
|
-
* tree.
|
|
846
|
-
*/function shimLocalStreamsAPI$3(window){if(typeof window!=="object"||!window.RTCPeerConnection){return;}if(!("getLocalStreams"in window.RTCPeerConnection.prototype)){window.RTCPeerConnection.prototype.getLocalStreams=function getLocalStreams(){if(!this._localStreams){this._localStreams=[];}return this._localStreams;};}if(!("addStream"in window.RTCPeerConnection.prototype)){const _addTrack=window.RTCPeerConnection.prototype.addTrack;window.RTCPeerConnection.prototype.addStream=function addStream(stream){if(!this._localStreams){this._localStreams=[];}if(!this._localStreams.includes(stream)){this._localStreams.push(stream);}// Try to emulate Chrome's behaviour of adding in audio-video order.
|
|
847
|
-
// Safari orders by track id.
|
|
848
|
-
stream.getAudioTracks().forEach(track=>_addTrack.call(this,track,stream));stream.getVideoTracks().forEach(track=>_addTrack.call(this,track,stream));};window.RTCPeerConnection.prototype.addTrack=function addTrack(track,...streams){if(streams){streams.forEach(stream=>{if(!this._localStreams){this._localStreams=[stream];}else if(!this._localStreams.includes(stream)){this._localStreams.push(stream);}});}return _addTrack.apply(this,arguments);};}if(!("removeStream"in window.RTCPeerConnection.prototype)){window.RTCPeerConnection.prototype.removeStream=function removeStream(stream){if(!this._localStreams){this._localStreams=[];}const index=this._localStreams.indexOf(stream);if(index===-1){return;}this._localStreams.splice(index,1);const tracks=stream.getTracks();this.getSenders().forEach(sender=>{if(tracks.includes(sender.track)){this.removeTrack(sender);}});};}}function shimRemoteStreamsAPI$3(window){if(typeof window!=="object"||!window.RTCPeerConnection){return;}if(!("getRemoteStreams"in window.RTCPeerConnection.prototype)){window.RTCPeerConnection.prototype.getRemoteStreams=function getRemoteStreams(){return this._remoteStreams?this._remoteStreams:[];};}if(!("onaddstream"in window.RTCPeerConnection.prototype)){Object.defineProperty(window.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream;},set(f){if(this._onaddstream){this.removeEventListener("addstream",this._onaddstream);this.removeEventListener("track",this._onaddstreampoly);}this.addEventListener("addstream",this._onaddstream=f);this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach(stream=>{if(!this._remoteStreams){this._remoteStreams=[];}if(this._remoteStreams.includes(stream)){return;}this._remoteStreams.push(stream);const event=new Event("addstream");event.stream=stream;this.dispatchEvent(event);});});}});const origSetRemoteDescription=window.RTCPeerConnection.prototype.setRemoteDescription;window.RTCPeerConnection.prototype.setRemoteDescription=function setRemoteDescription(){const pc=this;if(!this._onaddstreampoly){this.addEventListener("track",this._onaddstreampoly=function(e){e.streams.forEach(stream=>{if(!pc._remoteStreams){pc._remoteStreams=[];}if(pc._remoteStreams.indexOf(stream)>=0){return;}pc._remoteStreams.push(stream);const event=new Event("addstream");event.stream=stream;pc.dispatchEvent(event);});});}return origSetRemoteDescription.apply(pc,arguments);};}}function shimCallbacksAPI$3(window){if(typeof window!=="object"||!window.RTCPeerConnection){return;}const prototype=window.RTCPeerConnection.prototype;const origCreateOffer=prototype.createOffer;const origCreateAnswer=prototype.createAnswer;const setLocalDescription=prototype.setLocalDescription;const setRemoteDescription=prototype.setRemoteDescription;const addIceCandidate=prototype.addIceCandidate;prototype.createOffer=function createOffer(successCallback,failureCallback){const options=arguments.length>=2?arguments[2]:arguments[0];const promise=origCreateOffer.apply(this,[options]);if(!failureCallback){return promise;}promise.then(successCallback,failureCallback);return Promise.resolve();};prototype.createAnswer=function createAnswer(successCallback,failureCallback){const options=arguments.length>=2?arguments[2]:arguments[0];const promise=origCreateAnswer.apply(this,[options]);if(!failureCallback){return promise;}promise.then(successCallback,failureCallback);return Promise.resolve();};let withCallback=function(description,successCallback,failureCallback){const promise=setLocalDescription.apply(this,[description]);if(!failureCallback){return promise;}promise.then(successCallback,failureCallback);return Promise.resolve();};prototype.setLocalDescription=withCallback;withCallback=function(description,successCallback,failureCallback){const promise=setRemoteDescription.apply(this,[description]);if(!failureCallback){return promise;}promise.then(successCallback,failureCallback);return Promise.resolve();};prototype.setRemoteDescription=withCallback;withCallback=function(candidate,successCallback,failureCallback){const promise=addIceCandidate.apply(this,[candidate]);if(!failureCallback){return promise;}promise.then(successCallback,failureCallback);return Promise.resolve();};prototype.addIceCandidate=withCallback;}function shimGetUserMedia$6(window){const navigator=window&&window.navigator;if(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){// shim not needed in Safari 12.1
|
|
849
|
-
const mediaDevices=navigator.mediaDevices;const _getUserMedia=mediaDevices.getUserMedia.bind(mediaDevices);navigator.mediaDevices.getUserMedia=constraints=>{return _getUserMedia(shimConstraints$3(constraints));};}if(!navigator.getUserMedia&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){navigator.getUserMedia=function getUserMedia(constraints,cb,errcb){navigator.mediaDevices.getUserMedia(constraints).then(cb,errcb);}.bind(navigator);}}function shimConstraints$3(constraints){if(constraints&&constraints.video!==undefined){return Object.assign({},constraints,{video:compactObject$3(constraints.video)});}return constraints;}function shimRTCIceServerUrls$3(window){if(!window.RTCPeerConnection){return;}// migrate from non-spec RTCIceServer.url to RTCIceServer.urls
|
|
850
|
-
const OrigPeerConnection=window.RTCPeerConnection;window.RTCPeerConnection=function RTCPeerConnection(pcConfig,pcConstraints){if(pcConfig&&pcConfig.iceServers){const newIceServers=[];for(let i=0;i<pcConfig.iceServers.length;i++){let server=pcConfig.iceServers[i];if(!server.hasOwnProperty("urls")&&server.hasOwnProperty("url")){deprecated$3("RTCIceServer.url","RTCIceServer.urls");server=JSON.parse(JSON.stringify(server));server.urls=server.url;delete server.url;newIceServers.push(server);}else {newIceServers.push(pcConfig.iceServers[i]);}}pcConfig.iceServers=newIceServers;}return new OrigPeerConnection(pcConfig,pcConstraints);};window.RTCPeerConnection.prototype=OrigPeerConnection.prototype;// wrap static methods. Currently just generateCertificate.
|
|
851
|
-
if("generateCertificate"in OrigPeerConnection){Object.defineProperty(window.RTCPeerConnection,"generateCertificate",{get(){return OrigPeerConnection.generateCertificate;}});}}function shimTrackEventTransceiver$3(window){// Add event.transceiver member over deprecated event.receiver
|
|
852
|
-
if(typeof window==="object"&&window.RTCTrackEvent&&"receiver"in window.RTCTrackEvent.prototype&&!("transceiver"in window.RTCTrackEvent.prototype)){Object.defineProperty(window.RTCTrackEvent.prototype,"transceiver",{get(){return {receiver:this.receiver};}});}}function shimCreateOfferLegacy$3(window){const origCreateOffer=window.RTCPeerConnection.prototype.createOffer;window.RTCPeerConnection.prototype.createOffer=function createOffer(offerOptions){if(offerOptions){if(typeof offerOptions.offerToReceiveAudio!=="undefined"){// support bit values
|
|
853
|
-
offerOptions.offerToReceiveAudio=!!offerOptions.offerToReceiveAudio;}const audioTransceiver=this.getTransceivers().find(transceiver=>transceiver.receiver.track.kind==="audio");if(offerOptions.offerToReceiveAudio===false&&audioTransceiver){if(audioTransceiver.direction==="sendrecv"){if(audioTransceiver.setDirection){audioTransceiver.setDirection("sendonly");}else {audioTransceiver.direction="sendonly";}}else if(audioTransceiver.direction==="recvonly"){if(audioTransceiver.setDirection){audioTransceiver.setDirection("inactive");}else {audioTransceiver.direction="inactive";}}}else if(offerOptions.offerToReceiveAudio===true&&!audioTransceiver){this.addTransceiver("audio");}if(typeof offerOptions.offerToReceiveVideo!=="undefined"){// support bit values
|
|
854
|
-
offerOptions.offerToReceiveVideo=!!offerOptions.offerToReceiveVideo;}const videoTransceiver=this.getTransceivers().find(transceiver=>transceiver.receiver.track.kind==="video");if(offerOptions.offerToReceiveVideo===false&&videoTransceiver){if(videoTransceiver.direction==="sendrecv"){if(videoTransceiver.setDirection){videoTransceiver.setDirection("sendonly");}else {videoTransceiver.direction="sendonly";}}else if(videoTransceiver.direction==="recvonly"){if(videoTransceiver.setDirection){videoTransceiver.setDirection("inactive");}else {videoTransceiver.direction="inactive";}}}else if(offerOptions.offerToReceiveVideo===true&&!videoTransceiver){this.addTransceiver("video");}}return origCreateOffer.apply(this,arguments);};}function shimAudioContext$3(window){if(typeof window!=="object"||window.AudioContext){return;}window.AudioContext=window.webkitAudioContext;}var safariShim$3=/*#__PURE__*/Object.freeze({__proto__:null,shimLocalStreamsAPI:shimLocalStreamsAPI$3,shimRemoteStreamsAPI:shimRemoteStreamsAPI$3,shimCallbacksAPI:shimCallbacksAPI$3,shimGetUserMedia:shimGetUserMedia$6,shimConstraints:shimConstraints$3,shimRTCIceServerUrls:shimRTCIceServerUrls$3,shimTrackEventTransceiver:shimTrackEventTransceiver$3,shimCreateOfferLegacy:shimCreateOfferLegacy$3,shimAudioContext:shimAudioContext$3});/*
|
|
855
|
-
* Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
|
|
856
|
-
*
|
|
857
|
-
* Use of this source code is governed by a BSD-style license
|
|
858
|
-
* that can be found in the LICENSE file in the root of the source
|
|
859
|
-
* tree.
|
|
860
|
-
*/function shimRTCIceCandidate$3(window){// foundation is arbitrarily chosen as an indicator for full support for
|
|
861
|
-
// https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface
|
|
862
|
-
if(!window.RTCIceCandidate||window.RTCIceCandidate&&"foundation"in window.RTCIceCandidate.prototype){return;}const NativeRTCIceCandidate=window.RTCIceCandidate;window.RTCIceCandidate=function RTCIceCandidate(args){// Remove the a= which shouldn't be part of the candidate string.
|
|
863
|
-
if(typeof args==="object"&&args.candidate&&args.candidate.indexOf("a=")===0){args=JSON.parse(JSON.stringify(args));args.candidate=args.candidate.substr(2);}if(args.candidate&&args.candidate.length){// Augment the native candidate with the parsed fields.
|
|
864
|
-
const nativeCandidate=new NativeRTCIceCandidate(args);const parsedCandidate=sdp$3.parseCandidate(args.candidate);const augmentedCandidate=Object.assign(nativeCandidate,parsedCandidate);// Add a serializer that does not serialize the extra attributes.
|
|
865
|
-
augmentedCandidate.toJSON=function toJSON(){return {candidate:augmentedCandidate.candidate,sdpMid:augmentedCandidate.sdpMid,sdpMLineIndex:augmentedCandidate.sdpMLineIndex,usernameFragment:augmentedCandidate.usernameFragment};};return augmentedCandidate;}return new NativeRTCIceCandidate(args);};window.RTCIceCandidate.prototype=NativeRTCIceCandidate.prototype;// Hook up the augmented candidate in onicecandidate and
|
|
866
|
-
// addEventListener('icecandidate', ...)
|
|
867
|
-
wrapPeerConnectionEvent$3(window,"icecandidate",e=>{if(e.candidate){Object.defineProperty(e,"candidate",{value:new window.RTCIceCandidate(e.candidate),writable:"false"});}return e;});}function shimMaxMessageSize$3(window,browserDetails){if(!window.RTCPeerConnection){return;}if(!("sctp"in window.RTCPeerConnection.prototype)){Object.defineProperty(window.RTCPeerConnection.prototype,"sctp",{get(){return typeof this._sctp==="undefined"?null:this._sctp;}});}const sctpInDescription=function(description){if(!description||!description.sdp){return false;}const sections=sdp$3.splitSections(description.sdp);sections.shift();return sections.some(mediaSection=>{const mLine=sdp$3.parseMLine(mediaSection);return mLine&&mLine.kind==="application"&&mLine.protocol.indexOf("SCTP")!==-1;});};const getRemoteFirefoxVersion=function(description){// TODO: Is there a better solution for detecting Firefox?
|
|
868
|
-
const match=description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(match===null||match.length<2){return -1;}const version=parseInt(match[1],10);// Test for NaN (yes, this is ugly)
|
|
869
|
-
return version!==version?-1:version;};const getCanSendMaxMessageSize=function(remoteIsFirefox){// Every implementation we know can send at least 64 KiB.
|
|
870
|
-
// Note: Although Chrome is technically able to send up to 256 KiB, the
|
|
871
|
-
// data does not reach the other peer reliably.
|
|
872
|
-
// See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419
|
|
873
|
-
let canSendMaxMessageSize=65536;if(browserDetails.browser==="firefox"){if(browserDetails.version<57){if(remoteIsFirefox===-1){// FF < 57 will send in 16 KiB chunks using the deprecated PPID
|
|
874
|
-
// fragmentation.
|
|
875
|
-
canSendMaxMessageSize=16384;}else {// However, other FF (and RAWRTC) can reassemble PPID-fragmented
|
|
876
|
-
// messages. Thus, supporting ~2 GiB when sending.
|
|
877
|
-
canSendMaxMessageSize=2147483637;}}else if(browserDetails.version<60){// Currently, all FF >= 57 will reset the remote maximum message size
|
|
878
|
-
// to the default value when a data channel is created at a later
|
|
879
|
-
// stage. :(
|
|
880
|
-
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831
|
|
881
|
-
canSendMaxMessageSize=browserDetails.version===57?65535:65536;}else {// FF >= 60 supports sending ~2 GiB
|
|
882
|
-
canSendMaxMessageSize=2147483637;}}return canSendMaxMessageSize;};const getMaxMessageSize=function(description,remoteIsFirefox){// Note: 65536 bytes is the default value from the SDP spec. Also,
|
|
883
|
-
// every implementation we know supports receiving 65536 bytes.
|
|
884
|
-
let maxMessageSize=65536;// FF 57 has a slightly incorrect default remote max message size, so
|
|
885
|
-
// we need to adjust it here to avoid a failure when sending.
|
|
886
|
-
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697
|
|
887
|
-
if(browserDetails.browser==="firefox"&&browserDetails.version===57){maxMessageSize=65535;}const match=sdp$3.matchPrefix(description.sdp,"a=max-message-size:");if(match.length>0){maxMessageSize=parseInt(match[0].substr(19),10);}else if(browserDetails.browser==="firefox"&&remoteIsFirefox!==-1){// If the maximum message size is not present in the remote SDP and
|
|
888
|
-
// both local and remote are Firefox, the remote peer can receive
|
|
889
|
-
// ~2 GiB.
|
|
890
|
-
maxMessageSize=2147483637;}return maxMessageSize;};const origSetRemoteDescription=window.RTCPeerConnection.prototype.setRemoteDescription;window.RTCPeerConnection.prototype.setRemoteDescription=function setRemoteDescription(){this._sctp=null;// Chrome decided to not expose .sctp in plan-b mode.
|
|
891
|
-
// As usual, adapter.js has to do an 'ugly worakaround'
|
|
892
|
-
// to cover up the mess.
|
|
893
|
-
if(browserDetails.browser==="chrome"&&browserDetails.version>=76){const{sdpSemantics}=this.getConfiguration();if(sdpSemantics==="plan-b"){Object.defineProperty(this,"sctp",{get(){return typeof this._sctp==="undefined"?null:this._sctp;},enumerable:true,configurable:true});}}if(sctpInDescription(arguments[0])){// Check if the remote is FF.
|
|
894
|
-
const isFirefox=getRemoteFirefoxVersion(arguments[0]);// Get the maximum message size the local peer is capable of sending
|
|
895
|
-
const canSendMMS=getCanSendMaxMessageSize(isFirefox);// Get the maximum message size of the remote peer.
|
|
896
|
-
const remoteMMS=getMaxMessageSize(arguments[0],isFirefox);// Determine final maximum message size
|
|
897
|
-
let maxMessageSize;if(canSendMMS===0&&remoteMMS===0){maxMessageSize=Number.POSITIVE_INFINITY;}else if(canSendMMS===0||remoteMMS===0){maxMessageSize=Math.max(canSendMMS,remoteMMS);}else {maxMessageSize=Math.min(canSendMMS,remoteMMS);}// Create a dummy RTCSctpTransport object and the 'maxMessageSize'
|
|
898
|
-
// attribute.
|
|
899
|
-
const sctp={};Object.defineProperty(sctp,"maxMessageSize",{get(){return maxMessageSize;}});this._sctp=sctp;}return origSetRemoteDescription.apply(this,arguments);};}function shimSendThrowTypeError$3(window){if(!(window.RTCPeerConnection&&"createDataChannel"in window.RTCPeerConnection.prototype)){return;}// Note: Although Firefox >= 57 has a native implementation, the maximum
|
|
900
|
-
// message size can be reset for all data channels at a later stage.
|
|
901
|
-
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831
|
|
902
|
-
function wrapDcSend(dc,pc){const origDataChannelSend=dc.send;dc.send=function send(){const data=arguments[0];const length=data.length||data.size||data.byteLength;if(dc.readyState==="open"&&pc.sctp&&length>pc.sctp.maxMessageSize){throw new TypeError("Message too large (can send a maximum of "+pc.sctp.maxMessageSize+" bytes)");}return origDataChannelSend.apply(dc,arguments);};}const origCreateDataChannel=window.RTCPeerConnection.prototype.createDataChannel;window.RTCPeerConnection.prototype.createDataChannel=function createDataChannel(){const dataChannel=origCreateDataChannel.apply(this,arguments);wrapDcSend(dataChannel,this);return dataChannel;};wrapPeerConnectionEvent$3(window,"datachannel",e=>{wrapDcSend(e.channel,e.target);return e;});}/* shims RTCConnectionState by pretending it is the same as iceConnectionState.
|
|
903
|
-
* See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12
|
|
904
|
-
* for why this is a valid hack in Chrome. In Firefox it is slightly incorrect
|
|
905
|
-
* since DTLS failures would be hidden. See
|
|
906
|
-
* https://bugzilla.mozilla.org/show_bug.cgi?id=1265827
|
|
907
|
-
* for the Firefox tracking bug.
|
|
908
|
-
*/function shimConnectionState$3(window){if(!window.RTCPeerConnection||"connectionState"in window.RTCPeerConnection.prototype){return;}const proto=window.RTCPeerConnection.prototype;Object.defineProperty(proto,"connectionState",{get(){return {completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState;},enumerable:true,configurable:true});Object.defineProperty(proto,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null;},set(cb){if(this._onconnectionstatechange){this.removeEventListener("connectionstatechange",this._onconnectionstatechange);delete this._onconnectionstatechange;}if(cb){this.addEventListener("connectionstatechange",this._onconnectionstatechange=cb);}},enumerable:true,configurable:true});["setLocalDescription","setRemoteDescription"].forEach(method=>{const origMethod=proto[method];proto[method]=function(){if(!this._connectionstatechangepoly){this._connectionstatechangepoly=e=>{const pc=e.target;if(pc._lastConnectionState!==pc.connectionState){pc._lastConnectionState=pc.connectionState;const newEvent=new Event("connectionstatechange",e);pc.dispatchEvent(newEvent);}return e;};this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly);}return origMethod.apply(this,arguments);};});}function removeExtmapAllowMixed$3(window,browserDetails){/* remove a=extmap-allow-mixed for webrtc.org < M71 */if(!window.RTCPeerConnection){return;}if(browserDetails.browser==="chrome"&&browserDetails.version>=71){return;}if(browserDetails.browser==="safari"&&browserDetails.version>=605){return;}const nativeSRD=window.RTCPeerConnection.prototype.setRemoteDescription;window.RTCPeerConnection.prototype.setRemoteDescription=function setRemoteDescription(desc){if(desc&&desc.sdp&&desc.sdp.indexOf("\na=extmap-allow-mixed")!==-1){const sdp=desc.sdp.split("\n").filter(line=>{return line.trim()!=="a=extmap-allow-mixed";}).join("\n");// Safari enforces read-only-ness of RTCSessionDescription fields.
|
|
909
|
-
if(window.RTCSessionDescription&&desc instanceof window.RTCSessionDescription){arguments[0]=new window.RTCSessionDescription({type:desc.type,sdp});}else {desc.sdp=sdp;}}return nativeSRD.apply(this,arguments);};}function shimAddIceCandidateNullOrEmpty$3(window,browserDetails){// Support for addIceCandidate(null or undefined)
|
|
910
|
-
// as well as addIceCandidate({candidate: "", ...})
|
|
911
|
-
// https://bugs.chromium.org/p/chromium/issues/detail?id=978582
|
|
912
|
-
// Note: must be called before other polyfills which change the signature.
|
|
913
|
-
if(!(window.RTCPeerConnection&&window.RTCPeerConnection.prototype)){return;}const nativeAddIceCandidate=window.RTCPeerConnection.prototype.addIceCandidate;if(!nativeAddIceCandidate||nativeAddIceCandidate.length===0){return;}window.RTCPeerConnection.prototype.addIceCandidate=function addIceCandidate(){if(!arguments[0]){if(arguments[1]){arguments[1].apply(null);}return Promise.resolve();}// Firefox 68+ emits and processes {candidate: "", ...}, ignore
|
|
914
|
-
// in older versions.
|
|
915
|
-
// Native support for ignoring exists for Chrome M77+.
|
|
916
|
-
// Safari ignores as well, exact version unknown but works in the same
|
|
917
|
-
// version that also ignores addIceCandidate(null).
|
|
918
|
-
if((browserDetails.browser==="chrome"&&browserDetails.version<78||browserDetails.browser==="firefox"&&browserDetails.version<68||browserDetails.browser==="safari")&&arguments[0]&&arguments[0].candidate===""){return Promise.resolve();}return nativeAddIceCandidate.apply(this,arguments);};}var commonShim$3=/*#__PURE__*/Object.freeze({__proto__:null,shimRTCIceCandidate:shimRTCIceCandidate$3,shimMaxMessageSize:shimMaxMessageSize$3,shimSendThrowTypeError:shimSendThrowTypeError$3,shimConnectionState:shimConnectionState$3,removeExtmapAllowMixed:removeExtmapAllowMixed$3,shimAddIceCandidateNullOrEmpty:shimAddIceCandidateNullOrEmpty$3});/*
|
|
919
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
920
|
-
*
|
|
921
|
-
* Use of this source code is governed by a BSD-style license
|
|
922
|
-
* that can be found in the LICENSE file in the root of the source
|
|
923
|
-
* tree.
|
|
924
|
-
*/ // Shimming starts here.
|
|
925
|
-
function adapterFactory$3({window}={},options={shimChrome:true,shimFirefox:true,shimEdge:true,shimSafari:true}){// Utils.
|
|
926
|
-
const logging=log$1$3;const browserDetails=detectBrowser$3(window);const adapter={browserDetails,commonShim: commonShim$3,extractVersion:extractVersion$3,disableLog:disableLog$3,disableWarnings:disableWarnings$3};// Shim browser if found.
|
|
927
|
-
switch(browserDetails.browser){case"chrome":if(!chromeShim$3||!shimPeerConnection$2$3||!options.shimChrome){logging("Chrome shim is not included in this adapter release.");return adapter;}if(browserDetails.version===null){logging("Chrome shim can not determine version, not shimming.");return adapter;}logging("adapter.js shimming chrome.");// Export to the adapter global object visible in the browser.
|
|
928
|
-
adapter.browserShim=chromeShim$3;// Must be called before shimPeerConnection.
|
|
929
|
-
shimAddIceCandidateNullOrEmpty$3(window,browserDetails);shimGetUserMedia$3$3(window,browserDetails);shimMediaStream$3(window);shimPeerConnection$2$3(window,browserDetails);shimOnTrack$1$3(window);shimAddTrackRemoveTrack$3(window,browserDetails);shimGetSendersWithDtmf$3(window);shimGetStats$3(window);shimSenderReceiverGetStats$3(window);fixNegotiationNeeded$3(window,browserDetails);shimRTCIceCandidate$3(window);shimConnectionState$3(window);shimMaxMessageSize$3(window,browserDetails);shimSendThrowTypeError$3(window);removeExtmapAllowMixed$3(window,browserDetails);break;case"firefox":if(!firefoxShim$3||!shimPeerConnection$5||!options.shimFirefox){logging("Firefox shim is not included in this adapter release.");return adapter;}logging("adapter.js shimming firefox.");// Export to the adapter global object visible in the browser.
|
|
930
|
-
adapter.browserShim=firefoxShim$3;// Must be called before shimPeerConnection.
|
|
931
|
-
shimAddIceCandidateNullOrEmpty$3(window,browserDetails);shimGetUserMedia$1$3(window,browserDetails);shimPeerConnection$5(window,browserDetails);shimOnTrack$4(window);shimRemoveStream$3(window);shimSenderGetStats$3(window);shimReceiverGetStats$3(window);shimRTCDataChannel$3(window);shimAddTransceiver$3(window);shimGetParameters$3(window);shimCreateOffer$3(window);shimCreateAnswer$3(window);shimRTCIceCandidate$3(window);shimConnectionState$3(window);shimMaxMessageSize$3(window,browserDetails);shimSendThrowTypeError$3(window);break;case"edge":if(!edgeShim$3||!shimPeerConnection$1$3||!options.shimEdge){logging("MS edge shim is not included in this adapter release.");return adapter;}logging("adapter.js shimming edge.");// Export to the adapter global object visible in the browser.
|
|
932
|
-
adapter.browserShim=edgeShim$3;shimGetUserMedia$2$3(window);shimGetDisplayMedia$1$3(window);shimPeerConnection$1$3(window,browserDetails);shimReplaceTrack$3(window);// the edge shim implements the full RTCIceCandidate object.
|
|
933
|
-
shimMaxMessageSize$3(window,browserDetails);shimSendThrowTypeError$3(window);break;case"safari":if(!safariShim$3||!options.shimSafari){logging("Safari shim is not included in this adapter release.");return adapter;}logging("adapter.js shimming safari.");// Export to the adapter global object visible in the browser.
|
|
934
|
-
adapter.browserShim=safariShim$3;// Must be called before shimCallbackAPI.
|
|
935
|
-
shimAddIceCandidateNullOrEmpty$3(window,browserDetails);shimRTCIceServerUrls$3(window);shimCreateOfferLegacy$3(window);shimCallbacksAPI$3(window);shimLocalStreamsAPI$3(window);shimRemoteStreamsAPI$3(window);shimTrackEventTransceiver$3(window);shimGetUserMedia$6(window);shimAudioContext$3(window);shimRTCIceCandidate$3(window);shimMaxMessageSize$3(window,browserDetails);shimSendThrowTypeError$3(window);removeExtmapAllowMixed$3(window,browserDetails);break;default:logging("Unsupported browser!");break;}return adapter;}/*
|
|
936
|
-
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
937
|
-
*
|
|
938
|
-
* Use of this source code is governed by a BSD-style license
|
|
939
|
-
* that can be found in the LICENSE file in the root of the source
|
|
940
|
-
* tree.
|
|
941
|
-
*/adapterFactory$3({window:typeof window==="undefined"?undefined:window});/**
|
|
942
|
-
* @class AudioTrackConstraints
|
|
943
|
-
* @classDesc Constraints for creating an audio MediaStreamTrack.
|
|
944
|
-
* @memberof Owt.Base
|
|
945
|
-
* @constructor
|
|
946
|
-
* @param {Owt.Base.AudioSourceInfo} source Source info of this audio track.
|
|
947
|
-
*/class AudioTrackConstraints$3{// eslint-disable-next-line require-jsdoc
|
|
948
|
-
constructor(source){if(!Object.values(AudioSourceInfo$3).some(v=>v===source)){throw new TypeError("Invalid source.");}/**
|
|
949
|
-
* @member {string} source
|
|
950
|
-
* @memberof Owt.Base.AudioTrackConstraints
|
|
951
|
-
* @desc Values could be "mic", "screen-cast", "file" or "mixed".
|
|
952
|
-
* @instance
|
|
953
|
-
*/this.source=source;/**
|
|
954
|
-
* @member {string} deviceId
|
|
955
|
-
* @memberof Owt.Base.AudioTrackConstraints
|
|
956
|
-
* @desc Do not provide deviceId if source is not "mic".
|
|
957
|
-
* @instance
|
|
958
|
-
* @see https://w3c.github.io/mediacapture-main/#def-constraint-deviceId
|
|
959
|
-
*/this.deviceId=undefined;}}/**
|
|
960
|
-
* @class VideoTrackConstraints
|
|
961
|
-
* @classDesc Constraints for creating a video MediaStreamTrack.
|
|
962
|
-
* @memberof Owt.Base
|
|
963
|
-
* @constructor
|
|
964
|
-
* @param {Owt.Base.VideoSourceInfo} source Source info of this video track.
|
|
965
|
-
*/class VideoTrackConstraints$3{// eslint-disable-next-line require-jsdoc
|
|
966
|
-
constructor(source){if(!Object.values(VideoSourceInfo$3).some(v=>v===source)){throw new TypeError("Invalid source.");}/**
|
|
967
|
-
* @member {string} source
|
|
968
|
-
* @memberof Owt.Base.VideoTrackConstraints
|
|
969
|
-
* @desc Values could be "camera", "screen-cast", "file" or "mixed".
|
|
970
|
-
* @instance
|
|
971
|
-
*/this.source=source;/**
|
|
972
|
-
* @member {string} deviceId
|
|
973
|
-
* @memberof Owt.Base.VideoTrackConstraints
|
|
974
|
-
* @desc Do not provide deviceId if source is not "camera".
|
|
975
|
-
* @instance
|
|
976
|
-
* @see https://w3c.github.io/mediacapture-main/#def-constraint-deviceId
|
|
977
|
-
*/this.deviceId=undefined;/**
|
|
978
|
-
* @member {Owt.Base.Resolution} resolution
|
|
979
|
-
* @memberof Owt.Base.VideoTrackConstraints
|
|
980
|
-
* @instance
|
|
981
|
-
*/this.resolution=undefined;/**
|
|
982
|
-
* @member {number} frameRate
|
|
983
|
-
* @memberof Owt.Base.VideoTrackConstraints
|
|
984
|
-
* @instance
|
|
985
|
-
*/this.frameRate=undefined;}}/**
|
|
986
|
-
* @class StreamConstraints
|
|
987
|
-
* @classDesc Constraints for creating a MediaStream from screen mic and camera.
|
|
988
|
-
* @memberof Owt.Base
|
|
989
|
-
* @constructor
|
|
990
|
-
* @param {?Owt.Base.AudioTrackConstraints} audioConstraints
|
|
991
|
-
* @param {?Owt.Base.VideoTrackConstraints} videoConstraints
|
|
992
|
-
*/class StreamConstraints$3{// eslint-disable-next-line require-jsdoc
|
|
993
|
-
constructor(audioConstraints=false,videoConstraints=false){/**
|
|
994
|
-
* @member {Owt.Base.MediaStreamTrackDeviceConstraintsForAudio} audio
|
|
995
|
-
* @memberof Owt.Base.MediaStreamDeviceConstraints
|
|
996
|
-
* @instance
|
|
997
|
-
*/this.audio=audioConstraints;/**
|
|
998
|
-
* @member {Owt.Base.MediaStreamTrackDeviceConstraintsForVideo} Video
|
|
999
|
-
* @memberof Owt.Base.MediaStreamDeviceConstraints
|
|
1000
|
-
* @instance
|
|
1001
|
-
*/this.video=videoConstraints;}}// eslint-disable-next-line require-jsdoc
|
|
1002
|
-
function isVideoConstrainsForScreenCast$3(constraints){return typeof constraints.video==="object"&&constraints.video.source===VideoSourceInfo$3.SCREENCAST;}/**
|
|
1003
|
-
* @class MediaStreamFactory
|
|
1004
|
-
* @classDesc A factory to create MediaStream. You can also create MediaStream by yourself.
|
|
1005
|
-
* @memberof Owt.Base
|
|
1006
|
-
*/class MediaStreamFactory$3{/**
|
|
1007
|
-
* @function createMediaStream
|
|
1008
|
-
* @static
|
|
1009
|
-
* @desc Create a MediaStream with given constraints. If you want to create a MediaStream for screen cast, please make sure both audio and video's source are "screen-cast".
|
|
1010
|
-
* @memberof Owt.Base.MediaStreamFactory
|
|
1011
|
-
* @return {Promise<MediaStream, Error>} Return a promise that is resolved when stream is successfully created, or rejected if one of the following error happened:
|
|
1012
|
-
* - One or more parameters cannot be satisfied.
|
|
1013
|
-
* - Specified device is busy.
|
|
1014
|
-
* - Cannot obtain necessary permission or operation is canceled by user.
|
|
1015
|
-
* - Video source is screen cast, while audio source is not.
|
|
1016
|
-
* - Audio source is screen cast, while video source is disabled.
|
|
1017
|
-
* @param {Owt.Base.StreamConstraints} constraints
|
|
1018
|
-
*/static createMediaStream(constraints){if(typeof constraints!=="object"||!constraints.audio&&!constraints.video){return Promise.reject(new TypeError("Invalid constrains"));}if(!isVideoConstrainsForScreenCast$3(constraints)&&typeof constraints.audio==="object"&&constraints.audio.source===AudioSourceInfo$3.SCREENCAST){return Promise.reject(new TypeError("Cannot share screen without video."));}if(isVideoConstrainsForScreenCast$3(constraints)&&!isChrome$3()&&!isFirefox$3()){return Promise.reject(new TypeError("Screen sharing only supports Chrome and Firefox."));}if(isVideoConstrainsForScreenCast$3(constraints)&&typeof constraints.audio==="object"&&constraints.audio.source!==AudioSourceInfo$3.SCREENCAST){return Promise.reject(new TypeError("Cannot capture video from screen cast while capture audio from"+" other source."));}// Check and convert constraints.
|
|
1019
|
-
if(!constraints.audio&&!constraints.video){return Promise.reject(new TypeError("At least one of audio and video must be requested."));}const mediaConstraints=Object.create({});if(typeof constraints.audio==="object"&&constraints.audio.source===AudioSourceInfo$3.MIC){mediaConstraints.audio=Object.create({});if(isEdge$3()){mediaConstraints.audio.deviceId=constraints.audio.deviceId;}else {mediaConstraints.audio.deviceId={exact:constraints.audio.deviceId};}}else {if(constraints.audio.source===AudioSourceInfo$3.SCREENCAST){mediaConstraints.audio=true;}else {mediaConstraints.audio=constraints.audio;}}if(typeof constraints.video==="object"){mediaConstraints.video=Object.create({});if(typeof constraints.video.frameRate==="number"){mediaConstraints.video.frameRate=constraints.video.frameRate;}if(constraints.video.resolution&&constraints.video.resolution.width&&constraints.video.resolution.height){if(constraints.video.source===VideoSourceInfo$3.SCREENCAST){mediaConstraints.video.width=constraints.video.resolution.width;mediaConstraints.video.height=constraints.video.resolution.height;}else {mediaConstraints.video.width=Object.create({});mediaConstraints.video.width.exact=constraints.video.resolution.width;mediaConstraints.video.height=Object.create({});mediaConstraints.video.height.exact=constraints.video.resolution.height;}}if(typeof constraints.video.deviceId==="string"){mediaConstraints.video.deviceId={exact:constraints.video.deviceId};}if(isFirefox$3()&&constraints.video.source===VideoSourceInfo$3.SCREENCAST){mediaConstraints.video.mediaSource="screen";}}else {mediaConstraints.video=constraints.video;}if(isVideoConstrainsForScreenCast$3(constraints)){return navigator.mediaDevices.getDisplayMedia(mediaConstraints);}else {return navigator.mediaDevices.getUserMedia(mediaConstraints);}}}let logger$3;let errorLogger$3;function setLogger$3(){/*eslint-disable */logger$3=console.log;errorLogger$3=console.error;/*eslint-enable */}function log$4(message,...optionalParams){if(logger$3){logger$3(message,...optionalParams);}}function error$3(message,...optionalParams){if(errorLogger$3){errorLogger$3(message,...optionalParams);}}class Event$1$4{constructor(type){this.listener={};this.type=type|"";}on(event,fn){if(!this.listener[event]){this.listener[event]=[];}this.listener[event].push(fn);return true;}off(event,fn){if(this.listener[event]){var index=this.listener[event].indexOf(fn);if(index>-1){this.listener[event].splice(index,1);}return true;}return false;}offAll(){this.listener={};}dispatch(event,data){if(this.listener[event]){this.listener[event].map(each=>{each.apply(null,[data]);});return true;}return false;}}class RTCEndpoint$3 extends Event$1$4{constructor(options){super("RTCPusherPlayer");this.TAG="[RTCPusherPlayer]";let defaults={element:"",// html video element
|
|
1020
|
-
debug:false,// if output debug log
|
|
1021
|
-
zlmsdpUrl:"",simulcast:false,useCamera:true,audioEnable:true,videoEnable:true,recvOnly:false,resolution:{w:0,h:0}};this.options=Object.assign({},defaults,options);if(this.options.debug){setLogger$3();}this.e={onicecandidate:this._onIceCandidate.bind(this),ontrack:this._onTrack.bind(this),onicecandidateerror:this._onIceCandidateError.bind(this),onconnectionstatechange:this._onconnectionstatechange.bind(this)};this._remoteStream=null;this._localStream=null;this.pc=new RTCPeerConnection(null);this.pc.onicecandidate=this.e.onicecandidate;this.pc.onicecandidateerror=this.e.onicecandidateerror;this.pc.ontrack=this.e.ontrack;this.pc.onconnectionstatechange=this.e.onconnectionstatechange;if(!this.options.recvOnly&&(this.options.audioEnable||this.options.videoEnable))this.start();else this.receive();}receive(){const AudioTransceiverInit={direction:"recvonly",sendEncodings:[]};const VideoTransceiverInit={direction:"recvonly",sendEncodings:[]};this.pc.addTransceiver("audio",AudioTransceiverInit);this.pc.addTransceiver("video",VideoTransceiverInit);this.pc.createOffer().then(desc=>{log$4(this.TAG,"offer:",desc.sdp);this.pc.setLocalDescription(desc).then(()=>{axios({method:"post",url:this.options.zlmsdpUrl,responseType:"json",data:desc.sdp,headers:{"Content-Type":"text/plain;charset=utf-8"}}).then(response=>{let ret=response.data;//JSON.parse(response.data);
|
|
1022
|
-
if(ret.code!=0){// mean failed for offer/anwser exchange
|
|
1023
|
-
this.dispatch(Events$1$3.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED,ret);return;}let anwser={};anwser.sdp=ret.sdp;anwser.type="answer";log$4(this.TAG,"answer:",ret.sdp);this.pc.setRemoteDescription(anwser).then(()=>{log$4(this.TAG,"set remote sucess");}).catch(e=>{error$3(this.TAG,e);});});});}).catch(e=>{error$3(this.TAG,e);});}start(){let videoConstraints=false;let audioConstraints=false;if(this.options.useCamera){if(this.options.videoEnable)videoConstraints=new VideoTrackConstraints$3(VideoSourceInfo$3.CAMERA);if(this.options.audioEnable)audioConstraints=new AudioTrackConstraints$3(AudioSourceInfo$3.MIC);}else {if(this.options.videoEnable){videoConstraints=new VideoTrackConstraints$3(VideoSourceInfo$3.SCREENCAST);if(this.options.audioEnable)audioConstraints=new AudioTrackConstraints$3(AudioSourceInfo$3.SCREENCAST);}else {if(this.options.audioEnable)audioConstraints=new AudioTrackConstraints$3(AudioSourceInfo$3.MIC);else {// error shared display media not only audio
|
|
1024
|
-
error$3(this.TAG,"error paramter");}}}if(this.options.resolution.w!=0&&this.options.resolution.h!=0&&typeof videoConstraints=="object"){videoConstraints.resolution=new Resolution$3(this.options.resolution.w,this.options.resolution.h);}MediaStreamFactory$3.createMediaStream(new StreamConstraints$3(audioConstraints,videoConstraints)).then(stream=>{this._localStream=stream;this.dispatch(Events$1$3.WEBRTC_ON_LOCAL_STREAM,stream);const AudioTransceiverInit={direction:"sendrecv",sendEncodings:[]};const VideoTransceiverInit={direction:"sendrecv",sendEncodings:[]};if(this.options.simulcast&&stream.getVideoTracks().length>0){VideoTransceiverInit.sendEncodings=[{rid:"h",active:true,maxBitrate:1000000},{rid:"m",active:true,maxBitrate:500000,scaleResolutionDownBy:2},{rid:"l",active:true,maxBitrate:200000,scaleResolutionDownBy:4}];}if(stream.getAudioTracks().length>0){this.pc.addTransceiver(stream.getAudioTracks()[0],AudioTransceiverInit);}else {AudioTransceiverInit.direction="recvonly";this.pc.addTransceiver("audio",AudioTransceiverInit);}if(stream.getVideoTracks().length>0){this.pc.addTransceiver(stream.getVideoTracks()[0],VideoTransceiverInit);}else {VideoTransceiverInit.direction="recvonly";this.pc.addTransceiver("video",VideoTransceiverInit);}/*
|
|
1025
|
-
stream.getTracks().forEach((track,idx)=>{
|
|
1026
|
-
debug.log(this.TAG,track);
|
|
1027
|
-
this.pc.addTrack(track);
|
|
1028
|
-
});
|
|
1029
|
-
*/this.pc.createOffer().then(desc=>{log$4(this.TAG,"offer:",desc.sdp);this.pc.setLocalDescription(desc).then(()=>{axios({method:"post",url:this.options.zlmsdpUrl,responseType:"json",data:desc.sdp,headers:{"Content-Type":"text/plain;charset=utf-8"}}).then(response=>{let ret=response.data;//JSON.parse(response.data);
|
|
1030
|
-
if(ret.code!=0){// mean failed for offer/anwser exchange
|
|
1031
|
-
this.dispatch(Events$1$3.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED,ret);return;}let anwser={};anwser.sdp=ret.sdp;anwser.type="answer";log$4(this.TAG,"answer:",ret.sdp);this.pc.setRemoteDescription(anwser).then(()=>{log$4(this.TAG,"set remote sucess");}).catch(e=>{error$3(this.TAG,e);});});});}).catch(e=>{error$3(this.TAG,e);});}).catch(e=>{this.dispatch(Events$1$3.CAPTURE_STREAM_FAILED);//debug.error(this.TAG,e);
|
|
1032
|
-
});//const offerOptions = {};
|
|
1033
|
-
/*
|
|
1034
|
-
if (typeof this.pc.addTransceiver === 'function') {
|
|
1035
|
-
// |direction| seems not working on Safari.
|
|
1036
|
-
this.pc.addTransceiver('audio', { direction: 'recvonly' });
|
|
1037
|
-
this.pc.addTransceiver('video', { direction: 'recvonly' });
|
|
1038
|
-
} else {
|
|
1039
|
-
offerOptions.offerToReceiveAudio = true;
|
|
1040
|
-
offerOptions.offerToReceiveVideo = true;
|
|
1041
|
-
}
|
|
1042
|
-
*/}_onIceCandidate(event){if(event.candidate){log$4("Remote ICE candidate: \n "+event.candidate.candidate);// Send the candidate to the remote peer
|
|
1043
|
-
}}_onTrack(event){if(this.options.element&&event.streams&&event.streams.length>0){this.options.element.srcObject=event.streams[0];this._remoteStream=event.streams[0];this.dispatch(Events$1$3.WEBRTC_ON_REMOTE_STREAMS,event);}else {error$3("element pararm is failed");}}_onIceCandidateError(event){this.dispatch(Events$1$3.WEBRTC_ICE_CANDIDATE_ERROR,event);}_onconnectionstatechange(event){this.dispatch(Events$1$3.WEBRTC_ON_CONNECTION_STATE_CHANGE,this.pc.connectionState);}close(){if(this.pc){this.pc.close();this.pc=null;}if(this.options){this.options=null;}if(this._localStream){this._localStream.getTracks().forEach((track,idx)=>{track.stop();});}if(this._remoteStream){this._remoteStream.getTracks().forEach((track,idx)=>{track.stop();});}}get remoteStream(){return this._remoteStream;}get localStream(){return this._localStream;}}const Events$5=Events$1$3;const Endpoint$3=RTCEndpoint$3;const appName$3="live";class WebRtcMt$3{constructor(opt){this.init(opt);}p_player;// 返回播放视频数据
|
|
1044
|
-
instance=axios.create({timeout:60000});playerMap=new Map();streamMap=new Map();mediaServerAddrMap=new Map();config={w:100,h:100,endpointConfig:{}};// 根据参数配置组装相关url
|
|
1045
|
-
createRtspUrl(plays){const{cameraUserName,cameraPwd,cameraIp,cameraRtspPort,cameraChannel,cameraStream,videoElm,mediaServerAddr,addRtspProxyUrl}=plays;// const rtsp = `rtsp://${cameraUserName}:${cameraPwd}@${cameraIp}:${cameraRtspPort}/id=${cameraChannel}%26type=${cameraStream}`;
|
|
1046
|
-
const hkNvrRtsp=`rtsp://%s:%s@%s:%s/Streaming/tracks/%s01/`;const stream=`v${cameraIp}-${cameraRtspPort}-${cameraChannel}-${cameraStream}`;// const addRtspProxyUrl = `${mediaServerAddr}/index/api/addStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=__defaultVhost__&app=${appName}&stream=${stream}&url=${rtsp}`;
|
|
1047
|
-
const sdpUrl=`${mediaServerAddr}/index/api/webrtc?app=${appName$3}&stream=${stream}&type=play`;const rtsp="";this.streamMap.set(videoElm,stream);return {rtsp,stream,addRtspProxyUrl,sdpUrl,hkNvrRtsp};}// 初始化
|
|
1048
|
-
init(opt){// 初始化视频播放器配置
|
|
1049
|
-
if(opt.endpointConfig){this.config.endpointConfig=opt.endpointConfig;}// 初始化视频播放器宽高分辨率
|
|
1050
|
-
if(opt.h)this.config.h=opt.h;if(opt.w)this.config.w=opt.w;// 判断是否是多个视频同时播放
|
|
1051
|
-
if(Object.prototype.toString.call(opt.plays)==="[object Object]"){// 单个视频播放
|
|
1052
|
-
this.p_player=this.createVideo(opt.plays);}else {// 多个视频播放
|
|
1053
|
-
for(const i of opt.plays){this.createVideo(i);}}}// 拉流创建播放器
|
|
1054
|
-
createVideo(plays){this.mediaServerAddrMap.set(plays.videoElm,plays);const{addRtspProxyUrl}=this.createRtspUrl(plays);return new Promise((resolve,reject)=>{this.instance.get(addRtspProxyUrl).then(res=>{if(res.data.code===0){// 拉流成功
|
|
1055
|
-
this.startPlay(plays);resolve(res.data);}else {// 拉流失败删除缓存信息
|
|
1056
|
-
this.mediaServerAddrMap.delete(plays.videoElm);reject();this.log("err","从服务端拉流失败,请重试");}});});}log(type,text){switch(type){case"err":throw new Error(text);case"warn":console.warn(text);break;default:console.info(text);}}// 停止播放0
|
|
1057
|
-
stopPlay(id){if(id){// 关闭指定video
|
|
1058
|
-
let player=this.playerMap.get(id);if(player){player.close();this.playerMap.delete(id);this.mediaServerAddrMap.delete(id);player=null;}}else {// 关闭所有video
|
|
1059
|
-
this.playerMap.forEach(item=>{item.close();item=null;});this.playerMap.clear();this.mediaServerAddrMap.clear();}}// 注册事件监听
|
|
1060
|
-
playEvent(player,videoElm,sdpUrl){// 下边监听事件如果出现问题得重启一下服务器才行。
|
|
1061
|
-
player.on(Events$5.WEBRTC_ICE_CANDIDATE_ERROR,e=>{// ICE 协商出错
|
|
1062
|
-
this.log("err","ICE 协商出错");this.rePlay(videoElm);});player.on(Events$5.WEBRTC_ON_REMOTE_STREAMS,e=>{// 获取到了远端流,可以播放
|
|
1063
|
-
});player.on(Events$5.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED,e=>{// offer anwser 交换失败,这里前端得重新调用添加视频拉流代码。
|
|
1064
|
-
this.log("warn",`offer anwser 交换失败,获取视频流失败, ${e}`);this.rePlay(videoElm);});player.on(Events$5.DISCONNECTED,e=>{this.log("warn",`事件检测到连接断开${videoElm}`);this.rePlay(videoElm);});player.on(Events$5.LOST_SERVER,e=>{this.log("warn",`事件检测到视频服务器丢失${videoElm}`);this.rePlay(videoElm);});player.on(Events$5.WEBRTC_ON_CONNECTION_STATE_CHANGE,state=>{// RTC 状态变化 ,详情参考 https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/connectionState
|
|
1065
|
-
if(state==="disconnected"||state==="failed"){this.rePlay(videoElm);}});}// 重播
|
|
1066
|
-
rePlay(videoElm){// const data = this.mediaServerAddrMap.get(videoElm);
|
|
1067
|
-
// this.startPlay(data);
|
|
1068
|
-
// if (this.playerMap.has(videoElm)) {
|
|
1069
|
-
setTimeout(()=>{this.play(videoElm);},3000);// }
|
|
1070
|
-
}// 播放
|
|
1071
|
-
play(videoElm){const plays=this.mediaServerAddrMap.get(videoElm);const{sdpUrl}=this.createRtspUrl(plays);const{w,h}=this.config;const EndpointConfig={element:document.getElementById(videoElm),debug:false,zlmsdpUrl:sdpUrl,simulcast:false,useCamera:false,audioEnable:false,videoEnable:true,recvOnly:true,resolution:{w,h}};const player=new Endpoint$3({...Object.assign(EndpointConfig,this.config.endpointConfig)});this.playEvent(player,videoElm,sdpUrl);this.playerMap.set(videoElm,player);}// 开始播放
|
|
1072
|
-
startPlay(plays){setTimeout(()=>{this.play(plays.videoElm);},100);}}const props$7$1={// 视频信息|视频源uuid
|
|
1073
|
-
camera:{type:[Object,String]},index:Number,default:null};const time$1=dayjs().valueOf();const VideoPlayer$2=defineComponent({name:"videoPlayer",props:props$7$1,setup(_prop,_context){// 视频实例
|
|
1074
|
-
let play;const videoInfo=ref({});// 停止播放
|
|
1075
|
-
const stopPlay=()=>{if(play){play.stopPlay(`videoPlayer${time$1}${_prop.index||0}`);}};// 初始化视频
|
|
1076
|
-
const init=()=>{play=null;const camera=videoInfo.value;const{channel,streamType}=camera;let url=camera.webrtcTemplateMerged;if(channel&&streamType&&url.indexOf("${channel}")>-1&&url.indexOf("${streamType}")>-1){url=url.replaceAll("${channel}",channel);url=url.replaceAll("${streamType}",streamType);play=new WebRtcMt$3({plays:{videoElm:`videoPlayer${time$1}${_prop.index||0}`,mediaServerAddr:camera.mediaServerPo.url,cameraUserName:camera.user,cameraPwd:camera.pass,cameraIp:camera.ip,cameraRtspPort:camera.rtspPort,cameraChannel:camera.channel,cameraStream:camera.streamType,addRtspProxyUrl:url}});}else {message.error("缺少参数");}};const stopV=id=>{const videoElement=document.getElementById(id);if(videoElement){videoElement.pause();videoElement.removeAttribute("src");// empty source
|
|
1077
|
-
videoElement.load();}};const timer=setInterval(()=>{stopPlay();stopV(`videoPlayer${timer}${_prop.index||0}`);init();},3600000);// 播放信息变化初始化视频
|
|
1078
|
-
watch(()=>_prop.camera,async e=>{stopPlay();stopV(`videoPlayer${timer}${_prop.index||0}`);if(e&&typeof e==="object"){videoInfo.value=e;init();}else if(e&&typeof e==="string"){const res=await instance$1$1.get("vms/v1/camera/getByUuid",{params:{uuid:e}});if(res.data){videoInfo.value=res.data;init();}}},{immediate:true,deep:true});// 页面销毁时停止播放视频流
|
|
1079
|
-
onUnmounted(()=>{stopPlay();stopV(`videoPlayer${timer}${_prop.index||0}`);clearInterval(timer);});return ()=>createVNode("video",{"id":`videoPlayer${time$1}${_prop.index||0}`,"style":"height:100%;width:100%;position: relative;background-color: #000000;","muted":true,"autoplay":true},null);}});const props$6$1={data:{type:Object},index:Number};const video=defineComponent({props:props$6$1,components:{VideoPlayer: VideoPlayer$2},setup(props,ctx){return ()=>createVNode("div",{"class":"video"},[createTextVNode("23"),createVNode("div",{"class":"tool flex"},[createVNode(VideoCameraFilled,{"class":"icon blue"},null),createVNode("div",{"class":"flex1"},[props.data?.name]),createVNode("div",{"class":"full"},[createVNode(FullscreenOutlined,{"class":"yellow"},null)])])]);}});const videos=defineComponent({name:"videos",cname:"视频",developer:"前端开发组",equipment:"PC",setup(){const videoList=ref([]);const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"videos"});videoList.value=data.rows;};onMounted(getData);return ()=>createVNode("div",{"class":"videos"},[videoList.value.map((ele,index)=>{return createVNode(video,{"data":ele,"index":index},null);})]);}});const mock$1={"rows|9":[{name:"@cword('东西',1)区@cword('装卸')车",camera:"c360022543485562880"}]};const props$5$1={tabId:String,workShopType:String,cardCode:String,prefix:String,serverName:String,timeout:Number,index:Number// 索引值
|
|
1080
|
-
};var demoCard=defineComponent({name:"demoCard",cname:"默认卡片",developer:"前端开发组",equipment:"PC",props:props$5$1,setup(_props,_ctx){// 自定义接口配置
|
|
1081
|
-
setInstance$1$1({prefix:_props.prefix,serverName:_props.serverName,timeout:_props.timeout// 超时时长
|
|
1082
|
-
});const http=async()=>{await defaultApi({CURRENT_DATA:[{code:"flow_monitor_air2__FLOW",datasource:"DATAWAREHOURSE"}],HISTORY_DATA:[{code:"flow_monitor_air1__FLOW",startTime:2022,endTime:2023,timeType:"YEAR",shiftId:"0"}]},"TAIL_COAL_FILTER_PRESS");};onMounted(()=>{http();});return ()=>createVNode("div",{"class":"default"},[createTextVNode("111")]);}});const cards=[...defaultCard,...bigScreenCard,...dataList$1,...chart,...cardList$1,videos,demoCard];const props$4$1={layout:{type:String,default:"pc"},row:{type:Number,default:4},col:{type:Number,default:5},cards:{type:Array,default:[{name:"默认卡片",componentName:"default",row:"1/1",col:"3/1",params:{workShopType:"index",cardCode:"",prefix:"/api/",serverName:"card/v1",timeout:30// 超时时间 单位:s
|
|
1083
|
-
},tabs:[{name:"tab1",id:"1"},{name:"tab2",id:"2"}]},{name:"生产情况",componentName:"production",params:{workShopType:"index"},row:"1/2",col:"1/1"},{name:"气象站环境数据",componentName:"meteorological",params:{workShopType:"index"},row:"3/1",col:"1/1"},{name:"能源消耗",componentName:"energy",params:{workShopType:"Preparation",cardCode:"EnergyHierarchy"},row:"1/1",col:"5/1",tabs:[{name:"药耗",id:"0"},{name:"介耗",id:"1"},{name:"水耗",id:"2"},{name:"电耗",id:"3"}]},{name:"生产时长",componentName:"productionTime",row:"2/1",col:"5/1",params:{workShopType:"index"},tabs:[{name:"天",id:"DAY"},{name:"月",id:"MONTH"}]},{name:"安全监测",componentName:"safe",params:{workShopType:"index"}},{name:"报警信息",componentName:"alarm",params:{workShopType:"index"},row:"1/2",col:"4/1"}]}};var Layout=defineComponent({props:props$4$1,setup(prop,ctx){const classname=prefix$2+"_layout";const row=1/prop.row*100+"%";const col=1/prop.col*100+"%";const layoutStyle={gridTemplateColumns:`repeat(${prop.col}, ${col})`,gridTemplateRows:`repeat(${prop.row}, ${row})`};return ()=>createVNode("div",{"class":[classname,`${classname}_${prop.layout}`],"style":layoutStyle},[prop.cards.map(item=>{let com=createVNode(resolveComponent("inl-card-box"),{"componentName":item.componentName,"tabList":item.tabs,"titleName":item.name},null);if(item.col&&item.row){const rows=item.row.split("/");const cols=item.col.split("/");const rowStart=rows[0];const rowEnd=`span ${rows[1]}`;const colStart=cols[0];const colEnd=`span ${cols[1]}`;const gridArea=`${rowStart} / ${colStart} / ${rowEnd} / ${colEnd}`;com=createVNode(resolveComponent("inl-card-box"),{"style":{gridArea},"componentName":item.componentName,"tabList":item.tabs,"titleName":item.name,"params":item.params},null);}return com;})]);}});const props$3$1={row:{type:Number},col:{type:Number},len:{type:Number,default:0}};var draw=defineComponent({props:props$3$1,setup(prop,ctx){const state=ref(false);const start=ref({col:0,row:0});const end=ref({col:0,row:0});const classname=prefix$2+"_layout_editor_preview";const finishDraw=cb=>{state.value=false;if(cb&&typeof cb==="function"){cb();}};const resetStartEnd=()=>{nextTick(()=>{start.value={col:0,row:0};end.value={col:0,row:0};});};const computedCR=(i,type)=>{const index=i+1;const col=index%prop.col?index%prop.col:prop.col;const row=Math.ceil(index/prop.col);if(type==="s"){start.value={col,row};}else {end.value={col,row};let[startRow,endRow]=start.value.row<=end.value.row?[start.value.row,end.value.row]:[end.value.row,start.value.row];let[startCol,endCol]=start.value.col<=end.value.col?[start.value.col,end.value.col]:[end.value.col,start.value.col];const gridArea=`${startRow} / ${startCol} / ${endRow+1} / ${endCol+1}`;ctx.emit("drawEnd",{gridArea});resetStartEnd();}};const grids=()=>{const elms=[];for(let i=0;i<prop.len;i++){elms.push(createVNode("div",{"class":classname+"_griditem","onMousedown":e=>{state.value=true;computedCR(i,"s");},"onMouseup":e=>{finishDraw(()=>{computedCR(i,"e");});}},null));}return elms;};return ()=>createVNode("div",{"onMousemove":e=>{if(state.value);},"onMouseleave":()=>{if(state.value){finishDraw(()=>{message.error("因鼠标离开了绘制区域,绘制强制结束.",10);resetStartEnd();});}}},[grids()]);}});const props$2$1={row:{type:Number,default:5},col:{type:Number,default:5},colgap:{type:Number,default:5},rowgap:{type:Number,default:5},domArr:{type:Array,default:[]},isEditor:{type:Boolean,default:true},preview:{type:Boolean,default:false},layoutType:{type:String}};var GridPreview=defineComponent({emits:["addChild","addCard","remove"],props:props$2$1,components:{draw},setup(prop,ctx){const classname=prefix$2+"_layout_editor_preview";const classnameOpt=classname+"_opt";const classnameBox=classname+"_box";const layoutStyle=computed(()=>{return {display:"grid",gap:`${prop.rowgap}px ${prop.colgap}px`,gridTemplateColumns:`repeat(${prop.col}, 1fr)`,gridTemplateRows:`repeat(${prop.row}, 1fr)`};});return ()=>createVNode("div",{"class":classname},[!prop.isEditor?"":createVNode(draw,{"class":`${classnameBox} ${prop.preview?"show":""}`,"style":layoutStyle.value,"len":prop.col*prop.row,"row":prop.row,"col":prop.col,"onDrawEnd":gridArea=>{ctx.emit("addChild",gridArea);}},null),createVNode("div",{"id":classnameOpt,"class":`${classnameOpt} ${prop.preview?"show":""}`,"style":layoutStyle.value},[prop.domArr.map((item,index)=>{const renderBox=item=>{if(item.componentInfo){let parameter={};try{parameter=JSON.parse(item.componentInfo.parameter??"{}")??{};}catch(e){console.log(e);}return createVNode(resolveComponent("inl-card-box"),mergeProps({"componentName":item.componentInfo.name,"titleName":item.componentInfo.cname},parameter),null);}};return createVNode("div",{"style":{gridArea:item.gridArea},"class":`${classnameOpt}_area`},[renderBox(item),prop.isEditor?createVNode(Fragment,null,[createVNode(CloseOutlined,{"onClick":()=>{ctx.emit("remove",index);}},null),prop.preview?"":// 加号
|
|
1084
|
-
createVNode("div",{"class":`${classnameOpt}_area_add`,"onClick":()=>{ctx.emit("addCard",index);},"draggable":"true","onDragstart":()=>{console.log("start");},"onDragend":()=>{console.log("end");}},[createVNode(PlusOutlined,null,null)])]):""]);})])]);}});const props$1$1={col:{type:Object,default:5},row:{type:Object,default:5},rowgap:{type:Object,default:5},colgap:{type:Object,default:5},penetrate:{type:Object,default:false},preview:{type:Boolean,default:false},isEditor:{type:Boolean,default:true}};var LayoutEditorForm=defineComponent({props:props$1$1,emits:["submit","reset","preview","fullscreenPreview"],setup(prop,ctx){const classname=prefix$2+"_layout_editor_form";const preview=state=>{if(state==="fullscreen"){screen$1.requestFullscreen("inl-card_layout_editor_preview_opt");ctx.emit("fullscreenPreview");}else {ctx.emit("preview");}};return ()=>createVNode("div",{"class":classname},[createVNode(resolveComponent("a-form"),{"layout":"inline"},{default:()=>[createVNode(resolveComponent("a-form-item"),{"label":"列"},{default:()=>[createVNode(resolveComponent("a-input-number"),{"value":prop.col.value,"onUpdate:value":$event=>prop.col.value=$event},null)]}),createVNode(resolveComponent("a-form-item"),{"label":"行"},{default:()=>[createVNode(resolveComponent("a-input-number"),{"value":prop.row.value,"onUpdate:value":$event=>prop.row.value=$event},null)]}),createVNode(resolveComponent("a-form-item"),{"label":"列间距"},{default:()=>[createVNode(resolveComponent("a-input-number"),{"value":prop.colgap.value,"onUpdate:value":$event=>prop.colgap.value=$event},null)]}),createVNode(resolveComponent("a-form-item"),{"label":"行间距"},{default:()=>[createVNode(resolveComponent("a-input-number"),{"value":prop.rowgap.value,"onUpdate:value":$event=>prop.rowgap.value=$event},null)]}),createVNode(resolveComponent("a-form-item"),{"label":""},{default:()=>[createVNode(resolveComponent("a-checkbox"),{"checked":prop.penetrate.value,"onUpdate:checked":$event=>prop.penetrate.value=$event},{default:()=>[createTextVNode("\u662F\u5426\u5141\u8BB8\u7A7F\u900F")]})]}),createVNode(resolveComponent("a-form-item"),{"label":""},{default:()=>[createVNode(resolveComponent("a-button"),{"type":"primary","onClick":()=>{ctx.emit("submit","");}},{default:()=>[createTextVNode("\u4F7F\u7528\u5E03\u5C40")]})," ",createTextVNode("\xA0"),createVNode(resolveComponent("a-button"),{"type":"dashed","onClick":()=>{ctx.emit("reset","");}},{default:()=>[createTextVNode("\u91CD\u7F6E\u5E03\u5C40")]}),createTextVNode("\xA0"),createVNode(resolveComponent("a-button"),{"type":"dashed","onClick":()=>{preview();}},{default:()=>[prop.isEditor?"预览":"取消预览"]}),createTextVNode("\xA0"),createVNode(resolveComponent("a-button"),{"type":"dashed","onClick":()=>{preview("fullscreen");}},{default:()=>[createTextVNode("\u5168\u5C4F\u9884\u89C8")]})]})]})]);}});const tmgc={child:[{gridArea:"1 / 1 / 2 / 2"},{gridArea:"2 / 1 / 3 / 2"},{gridArea:"3 / 1 / 4 / 2"},{gridArea:"4 / 1 / 5 / 2"},{gridArea:"1 / 5 / 2 / 6"},{gridArea:"2 / 5 / 3 / 6"},{gridArea:"3 / 5 / 4 / 6"},{gridArea:"4 / 5 / 5 / 6"}],col:5,colgap:5,penetrate:false,row:4,rowgap:5};const jd={child:[{gridArea:"1 / 1 / 2 / 2"},{gridArea:"2 / 1 / 3 / 2"},{gridArea:"3 / 1 / 4 / 2"},{gridArea:"4 / 1 / 5 / 2"},{gridArea:"1 / 2 / 2 / 3"},{gridArea:"2 / 2 / 3 / 3"},{gridArea:"3 / 2 / 4 / 3"},{gridArea:"4 / 2 / 5 / 3"},{gridArea:"1 / 3 / 2 / 4"},{gridArea:"2 / 3 / 3 / 4"},{gridArea:"3 / 3 / 4 / 4"},{gridArea:"4 / 3 / 5 / 4"},{gridArea:"1 / 4 / 2 / 5"},{gridArea:"2 / 4 / 3 / 5"},{gridArea:"3 / 4 / 4 / 5"},{gridArea:"4 / 4 / 5 / 5"}],col:4,colgap:5,penetrate:false,row:4,rowgap:5};var layoutData={tmgc,jd};const props$U={row:{type:Number,default:5},col:{type:Number,default:5},colgap:{type:Number,default:5},rowgap:{type:Number,default:5},domArr:{type:Array,default:[]},isEditor:{type:Boolean,default:true},preview:{type:Boolean,default:false},layoutType:{type:String,default:"jd"}};var layoutEditor=defineComponent({emits:["submit","addCard"],props: props$U,components:{GridPreview},setup(prop,ctx){const classname=prefix$2+"_layout_editor";const col=ref(prop.col);const row=ref(prop.row);const colgap=ref(prop.colgap);const rowgap=ref(prop.rowgap);const penetrate=ref(false);const domArray=ref(prop.domArr);const isEditor=ref(prop.isEditor);watch(()=>prop.layoutType,e=>{// 当前不是演示状态
|
|
1085
|
-
if(!prop.preview&&prop.layoutType!=="custom"&&layoutData[prop.layoutType]){const lay=layoutData[prop.layoutType];col.value=lay.col;row.value=lay.row;colgap.value=lay.colgap;rowgap.value=lay.rowgap;penetrate.value=lay.penetrate;domArray.value=lay.child;}},{immediate:true});return ()=>createVNode("div",{"class":classname},[!prop.preview?createVNode(LayoutEditorForm,{"preview":prop.preview,"onPreview":()=>{isEditor.value=!isEditor.value;},"onFullscreenPreview":()=>{isEditor.value=false;},"col":col,"row":row,"colgap":colgap,"rowgap":rowgap,"penetrate":penetrate,"isEditor":isEditor.value,"onSubmit":()=>{const submitData={child:domArray.value,penetrate:penetrate.value,row:row.value,col:col.value,colgap:colgap.value,rowgap:rowgap.value};ctx.emit("submit",submitData);},"onReset":()=>{domArray.value=[];col.value=5;row.value=5;colgap.value=5;rowgap.value=5;}},null):"",createVNode(GridPreview,{"isEditor":isEditor.value,"preview":prop.preview,"col":col.value,"row":row.value,"colgap":colgap.value,"rowgap":rowgap.value,"domArr":domArray.value,"layoutType":prop.layoutType,"onAddChild":gridArea=>{if(prop.isEditor){domArray.value.push(gridArea);}},"onAddCard":e=>{ctx.emit("addCard",componentInfo=>{return new Promise((res,rej)=>{if(!componentInfo){rej({type:"err",msg:"组件信息不能为空,为卡片添加组件失败。"});}else {try{domArray.value[e].componentInfo=componentInfo;res({type:"success",msg:"组件添加成功"});}catch(error){rej({type:"err",msg:"未知错误,为卡片添加组件失败。"});}}});});},"onRemove":e=>{domArray.value.splice(e,1);}},null)]);}});const tabsList=[{name:"当日",id:"day"},{name:"当月",id:"month"}];/**
|
|
1086
|
-
* 生产统计
|
|
1087
|
-
*/defineComponent({name:"productionStatistics",cname:"生产统计",// 卡片名称
|
|
1088
|
-
developer:"前端开发组",// 开发者名称
|
|
1089
|
-
equipment:"PC",// 所属设备 PC:电脑 PHONE:手机 PAD:平板
|
|
1090
|
-
props:{prefix:String,// 接口前缀
|
|
1091
|
-
serverName:String,// 接口文件名
|
|
1092
|
-
timeout:Number,// 接口请求超时时长
|
|
1093
|
-
tabId:String},setup(_props,_ctx){const form=reactive({systemYieldData:[],coalRankYieldData:[]});const getData=async()=>{const{data}=await instance$1$1.post("/getCardData",{card:"productionStatistics"});form.systemYieldData=data.systemYieldData;form.coalRankYieldData=data.coalRankYieldData;};const stopInterval=useInterval(getData,5000);onBeforeUnmount(stopInterval);onMounted(()=>{_ctx.emit("getTabs",tabsList);});return ()=>createVNode("div",{"class":"production-statistics"},[createVNode(SystemYield,{"data":form.systemYieldData[_props.tabId||""]},null),createVNode(CoalRankYield,{"data":form.coalRankYieldData[_props.tabId||""]},null)]);}});const mock={systemYieldData:{day:[{name:"东区1#","value|0-20000":1},{name:"东区1#","percent|0-100":1,type:"产率"},{name:"东区2#","value|0-20000":1},{name:"东区2#","percent|0-100":1,type:"产率"},{name:"西区1#","value|0-20000":1},{name:"西区1#","percent|0-100":1,type:"产率"},{name:"西区2#","value|0-20000":1},{name:"西区2#","percent|0-100":1,type:"产率"},{name:"西区3#","value|0-20000":1},{name:"西区3#","percent|0-100":1,type:"产率"}],month:[{name:"东区1#","value|0-20000":1},{name:"东区1#","percent|0-100":1,type:"产率"},{name:"东区2#","value|0-20000":1},{name:"东区2#","percent|0-100":1,type:"产率"},{name:"西区1#","value|0-20000":1},{name:"西区1#","percent|0-100":1,type:"产率"},{name:"西区2#","value|0-20000":1},{name:"西区2#","percent|0-100":1,type:"产率"},{name:"西区3#","value|0-20000":1},{name:"西区3#","percent|0-100":1,type:"产率"}]},coalRankYieldData:{day:[{name:"肥","value|1000-20000":1},{name:"焦","value|1000-20000":1},{name:"1/3焦","value|1000-20000":1},{name:"中","value|1000-20000":1},{name:"煤泥","value|1000-20000":1},{name:"矸石","value|1000-20000":1}],month:[{name:"肥","value|1000-20000":1},{name:"焦","value|1000-20000":1},{name:"1/3焦","value|1000-20000":1},{name:"中","value|1000-20000":1},{name:"煤泥","value|1000-20000":1},{name:"矸石","value|1000-20000":1}]}};var mockData={storageInfo:mock$f,remoteSwitchhouse:mock$A,substation:mock$z,electricMonitor:mock$o,rawCoalSendIn2:mock$9,productionPlan2:mock$g,productionStatistics:mock,mechineTimeDayStatistics:mock$8,drySeparationPlant:mock$6,luLingDayStatistics:mock$5,humanResources:mock$4,energyConsumptionInfo:mock$3,logisticsInfo:mock$m,commodityConsume:mock$l,deviceOverview:mock$2,overhaulPlan:mock$7,smartInspection:mock$p,remoteElectricity:mock$w,alarmFaultDanger:mock$n,productionPlan:mock$k,washingRawCoalQuantity:mock$j,washingSystemHandleQuantity:mock$s,systemRunStatus:mock$r,realTimeAshWater:mock$b,consumeAnalysis:mock$a,alarmInfo:mock$y,keyEquipmentTesting:mock$u,opsInfo:mock$t,hiddenTrouble:mock$x,faultJudgment:mock$v,rawCoalSendIn:mock$i,warehouseStorage:mock$h,sendInOutCoalList:mock$q,outTransportStatistics:mock$c,videos:mock$1,storageDia:mock$d,storageDiaSimple:mock$e};const cardList=[];const coms=[];const createComp=()=>{coms.push(installCom(Layout,"layout"));coms.push(installCom(CardBox,"box"));coms.push(installCom(layoutEditor,"layout-editor"));for(let i of cards){const com=installCom(i,i.name);coms.push(com);cardList.push({name:i.name,cname:i.cname,developer:i.developer,equipment:i.equipment,version: version$1});}};createComp();var index$1={install(app){for(let i of coms){app.use(i);}},cards:cardList,mockData:mockData,version: version$1};
|
|
1094
|
-
|
|
1095
|
-
var version = "0.0.17";
|
|
21
|
+
var version = "0.0.20";
|
|
1096
22
|
|
|
1097
23
|
const config$1 = {
|
|
1098
24
|
prefix: "inl"
|
|
@@ -14255,6 +13181,112 @@ const UpdateEmployeeDialog = defineComponent({
|
|
|
14255
13181
|
}
|
|
14256
13182
|
});
|
|
14257
13183
|
|
|
13184
|
+
/**
|
|
13185
|
+
* 批量导入人员
|
|
13186
|
+
*/
|
|
13187
|
+
const BatchImportModal = defineComponent({
|
|
13188
|
+
emits: ["update:visible", "refresh"],
|
|
13189
|
+
props: {
|
|
13190
|
+
visible: {
|
|
13191
|
+
type: Boolean,
|
|
13192
|
+
default: false
|
|
13193
|
+
}
|
|
13194
|
+
},
|
|
13195
|
+
setup(props, {
|
|
13196
|
+
emit
|
|
13197
|
+
}) {
|
|
13198
|
+
const isVisible = useVModel$1(props, "visible", emit);
|
|
13199
|
+
const isLoading = ref(false);
|
|
13200
|
+
const fileList = ref([]);
|
|
13201
|
+
const handleUpload = async () => {
|
|
13202
|
+
isLoading.value = true;
|
|
13203
|
+
setTimeout(() => {
|
|
13204
|
+
message.success("导入成功");
|
|
13205
|
+
isVisible.value = false;
|
|
13206
|
+
emit("refresh");
|
|
13207
|
+
}, 1000);
|
|
13208
|
+
};
|
|
13209
|
+
// 关闭后清空上传列表
|
|
13210
|
+
watch(isVisible, val => {
|
|
13211
|
+
if (!val) {
|
|
13212
|
+
fileList.value = [];
|
|
13213
|
+
isLoading.value = false;
|
|
13214
|
+
}
|
|
13215
|
+
});
|
|
13216
|
+
return () => createVNode("div", {
|
|
13217
|
+
"class": "batchImportModal"
|
|
13218
|
+
}, [createVNode(resolveComponent("a-modal"), {
|
|
13219
|
+
"title": "批量导入",
|
|
13220
|
+
"visible": isVisible.value,
|
|
13221
|
+
"onUpdate:visible": $event => isVisible.value = $event
|
|
13222
|
+
}, {
|
|
13223
|
+
default: () => [createVNode(resolveComponent("a-alert"), {
|
|
13224
|
+
"showIcon": true,
|
|
13225
|
+
"type": "warning"
|
|
13226
|
+
}, {
|
|
13227
|
+
message: () => createVNode("span", {
|
|
13228
|
+
"style": {
|
|
13229
|
+
display: "flex",
|
|
13230
|
+
justifyContent: "space-between"
|
|
13231
|
+
}
|
|
13232
|
+
}, [createVNode("span", {
|
|
13233
|
+
"style": {
|
|
13234
|
+
color: "#915B28"
|
|
13235
|
+
}
|
|
13236
|
+
}, [createTextVNode("\u8BF7\u5148\u4E0B\u8F7D\u6A21\u7248\u5E76\u6309\u8981\u6C42\u586B\u5199\u4FE1\u606F\uFF0C\u5426\u5219\u53EF\u80FD\u5BFC\u5165\u5931\u8D25")]), createVNode("a", {
|
|
13237
|
+
"target": "_BLANK",
|
|
13238
|
+
"href": "/api/common/v1/employee/export/template"
|
|
13239
|
+
}, [createTextVNode("\u4EBA\u5458\u6A21\u7248")])])
|
|
13240
|
+
}), createVNode(resolveComponent("a-upload-dragger"), {
|
|
13241
|
+
"style": {
|
|
13242
|
+
margin: "16px 0"
|
|
13243
|
+
},
|
|
13244
|
+
"showUploadList": false,
|
|
13245
|
+
"beforeUpload": () => false,
|
|
13246
|
+
"multiple": false,
|
|
13247
|
+
"onChange": ({
|
|
13248
|
+
file
|
|
13249
|
+
}) => fileList.value = [file],
|
|
13250
|
+
"accept": "application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
13251
|
+
"fileList": fileList.value,
|
|
13252
|
+
"onUpdate:fileList": $event => fileList.value = $event
|
|
13253
|
+
}, {
|
|
13254
|
+
default: () => [fileList.value.length ? createVNode(Fragment, null, [createVNode("p", {
|
|
13255
|
+
"class": "ant-upload-drag-icon"
|
|
13256
|
+
}, [createVNode(FileExcelTwoTone, {
|
|
13257
|
+
"twoToneColor": "#00C090"
|
|
13258
|
+
}, null)]), createVNode("p", {
|
|
13259
|
+
"class": "ant-upload-text"
|
|
13260
|
+
}, [fileList.value[0].name]), createVNode("p", {
|
|
13261
|
+
"class": "ant-upload-hint"
|
|
13262
|
+
}, [createVNode(resolveComponent("a-button"), null, {
|
|
13263
|
+
default: () => [createTextVNode("\u91CD\u65B0\u4E0A\u4F20")]
|
|
13264
|
+
})])]) : createVNode(Fragment, null, [createVNode("p", {
|
|
13265
|
+
"class": "ant-upload-drag-icon"
|
|
13266
|
+
}, [createVNode(InboxOutlined, null, null)]), createVNode("p", {
|
|
13267
|
+
"class": "ant-upload-text"
|
|
13268
|
+
}, [createTextVNode("\u70B9\u51FB\u6216\u5C06\u6587\u4EF6\u62D6\u62FD\u5230\u8FD9\u91CC\u4E0A\u4F20")]), createVNode("p", {
|
|
13269
|
+
"class": "ant-upload-hint"
|
|
13270
|
+
}, [createTextVNode("\u652F\u6301\u683C\u5F0F: xls/xlsx")])])]
|
|
13271
|
+
})],
|
|
13272
|
+
footer: () => createVNode(resolveComponent("a-space"), null, {
|
|
13273
|
+
default: () => [createVNode(resolveComponent("a-button"), {
|
|
13274
|
+
"type": "primary",
|
|
13275
|
+
"disabled": !fileList.value.length,
|
|
13276
|
+
"loading": isLoading.value,
|
|
13277
|
+
"onClick": handleUpload
|
|
13278
|
+
}, {
|
|
13279
|
+
default: () => [createTextVNode("\u4E0A\u4F20\u6587\u4EF6")]
|
|
13280
|
+
}), createVNode(resolveComponent("a-button"), {
|
|
13281
|
+
"onClick": () => isVisible.value = false
|
|
13282
|
+
}, {
|
|
13283
|
+
default: () => [createTextVNode("\u53D6\u6D88")]
|
|
13284
|
+
})]
|
|
13285
|
+
})
|
|
13286
|
+
})]);
|
|
13287
|
+
}
|
|
13288
|
+
});
|
|
13289
|
+
|
|
14258
13290
|
const columns$c = [{
|
|
14259
13291
|
title: "姓名",
|
|
14260
13292
|
dataIndex: "name",
|
|
@@ -14353,11 +13385,23 @@ const EmployeeTable = defineComponent({
|
|
|
14353
13385
|
await api$g.deleteEmployeeById(urlMap.deleteEmp)(record.id);
|
|
14354
13386
|
refresh();
|
|
14355
13387
|
};
|
|
13388
|
+
// 批量导入/导出
|
|
13389
|
+
const [isImportDialogShow, handleImportClick] = useModalVisibleControl();
|
|
13390
|
+
const selectIdList = ref([]);
|
|
13391
|
+
watch(() => props.depId, () => selectIdList.value = []);
|
|
13392
|
+
const handleSelect = selectedRowKeys => {
|
|
13393
|
+
selectIdList.value = selectedRowKeys;
|
|
13394
|
+
};
|
|
13395
|
+
const handleExport = () => {
|
|
13396
|
+
const day = dayjs();
|
|
13397
|
+
const aEl = document.createElement("a");
|
|
13398
|
+
aEl.href = "/api/common/v1/employee/export/multi";
|
|
13399
|
+
aEl.download = `批量导出成员_${day.format("YYYY_M_D_ms")}`;
|
|
13400
|
+
aEl.click();
|
|
13401
|
+
};
|
|
14356
13402
|
return () => createVNode("div", {
|
|
14357
13403
|
"class": "employee-table"
|
|
14358
|
-
}, [createVNode("
|
|
14359
|
-
"class": "部门人员详情"
|
|
14360
|
-
}, null), createVNode("div", {
|
|
13404
|
+
}, [createVNode("div", {
|
|
14361
13405
|
"class": "operation"
|
|
14362
13406
|
}, [createVNode(resolveComponent("a-space"), null, {
|
|
14363
13407
|
default: () => [createVNode(resolveComponent("a-button"), {
|
|
@@ -14366,6 +13410,15 @@ const EmployeeTable = defineComponent({
|
|
|
14366
13410
|
"onClick": handleAddClick
|
|
14367
13411
|
}, {
|
|
14368
13412
|
default: () => [createTextVNode("\u65B0\u5EFA")]
|
|
13413
|
+
}), createVNode(resolveComponent("a-button"), {
|
|
13414
|
+
"onClick": handleImportClick
|
|
13415
|
+
}, {
|
|
13416
|
+
default: () => [createTextVNode("\u6279\u91CF\u5BFC\u5165")]
|
|
13417
|
+
}), createVNode(resolveComponent("a-button"), {
|
|
13418
|
+
"disabled": !selectIdList.value.length,
|
|
13419
|
+
"onClick": handleExport
|
|
13420
|
+
}, {
|
|
13421
|
+
default: () => [createTextVNode("\u6279\u91CF\u5BFC\u51FA")]
|
|
14369
13422
|
})]
|
|
14370
13423
|
}), createVNode(resolveComponent("a-input"), {
|
|
14371
13424
|
"style": {
|
|
@@ -14378,9 +13431,14 @@ const EmployeeTable = defineComponent({
|
|
|
14378
13431
|
"onInput": refresh,
|
|
14379
13432
|
"suffix": createVNode(resolveComponent("search-outlined"), null, null)
|
|
14380
13433
|
}, null)]), createVNode(resolveComponent("a-table"), {
|
|
13434
|
+
"rowKey": "id",
|
|
14381
13435
|
"loading": isLoading.value,
|
|
14382
13436
|
"columns": columns$c,
|
|
14383
13437
|
"dataSource": tableList.value,
|
|
13438
|
+
"rowSelection": {
|
|
13439
|
+
selectedRowKeys: selectIdList.value,
|
|
13440
|
+
onChange: handleSelect
|
|
13441
|
+
},
|
|
14384
13442
|
"pagination": {
|
|
14385
13443
|
pageSize: pageSize.value,
|
|
14386
13444
|
current: currPage.value,
|
|
@@ -14439,6 +13497,10 @@ const EmployeeTable = defineComponent({
|
|
|
14439
13497
|
"visible": isEditDialogShow.value,
|
|
14440
13498
|
"onUpdate:visible": $event => isEditDialogShow.value = $event,
|
|
14441
13499
|
"onRefresh": refresh
|
|
13500
|
+
}, null), createVNode(BatchImportModal, {
|
|
13501
|
+
"visible": isImportDialogShow.value,
|
|
13502
|
+
"onUpdate:visible": $event => isImportDialogShow.value = $event,
|
|
13503
|
+
"onRefresh": refresh
|
|
14442
13504
|
}, null)]);
|
|
14443
13505
|
}
|
|
14444
13506
|
});
|
|
@@ -15389,7 +14451,7 @@ const ProFormItem = defineComponent({
|
|
|
15389
14451
|
});
|
|
15390
14452
|
// 输入框变化回调
|
|
15391
14453
|
const handleValueChange = e => {
|
|
15392
|
-
if (isObject$
|
|
14454
|
+
if (isObject$3(e)) {
|
|
15393
14455
|
inputValue.value = e.target.value;
|
|
15394
14456
|
} else {
|
|
15395
14457
|
inputValue.value = e;
|
|
@@ -46242,7 +45304,8 @@ const uploadCommon = (data, headers) => instance$A.post(`/thing/v1/core/thing/up
|
|
|
46242
45304
|
const importExcel = data => instance$A.post(`/thing/v1/core/excelOpt/thing/importExcel`, data, {
|
|
46243
45305
|
headers: {
|
|
46244
45306
|
"Content-Type": "multipart/form-data"
|
|
46245
|
-
}
|
|
45307
|
+
},
|
|
45308
|
+
timeout: 1000 * 180
|
|
46246
45309
|
});
|
|
46247
45310
|
// 导出全部
|
|
46248
45311
|
const exportExcelTemplate = () => instance$A.post(`/thing/v1/core/excelOpt/thing/exportExcelTemplate`, {}, {
|
|
@@ -46253,6 +45316,14 @@ const exportExcelTemplate = () => instance$A.post(`/thing/v1/core/excelOpt/thing
|
|
|
46253
45316
|
},
|
|
46254
45317
|
timeout: 1000 * 30
|
|
46255
45318
|
});
|
|
45319
|
+
// 下载模板
|
|
45320
|
+
const downExcelTemplate = () => instance$A.post(`/thing/v1/core/excelOpt/thing/exportNullExcelTemplate`, {}, {
|
|
45321
|
+
responseType: "blob",
|
|
45322
|
+
headers: {
|
|
45323
|
+
"Content-Disposition": "attachment",
|
|
45324
|
+
"Content-Type": "text/html;charset=UTF-8"
|
|
45325
|
+
}
|
|
45326
|
+
});
|
|
46256
45327
|
// 校验实例code是否重复
|
|
46257
45328
|
const checkCode = code => instance$A.get(`/thing/v1/core/thing/hasThingcode/${code}`);
|
|
46258
45329
|
|
|
@@ -48132,14 +47203,22 @@ const com$b = defineComponent({
|
|
|
48132
47203
|
} = options;
|
|
48133
47204
|
const fileData = new FormData();
|
|
48134
47205
|
fileData.append("file", file);
|
|
48135
|
-
const
|
|
48136
|
-
|
|
48137
|
-
|
|
48138
|
-
|
|
48139
|
-
|
|
48140
|
-
|
|
48141
|
-
|
|
48142
|
-
|
|
47206
|
+
const hide = message.info({
|
|
47207
|
+
duration: 0,
|
|
47208
|
+
content: "正在导入,请稍后"
|
|
47209
|
+
});
|
|
47210
|
+
importExcel(fileData).then(res => {
|
|
47211
|
+
if (res.data === true) {
|
|
47212
|
+
message.success("导入成功");
|
|
47213
|
+
onSuccess("response", file);
|
|
47214
|
+
} else {
|
|
47215
|
+
message.error("导入失败");
|
|
47216
|
+
onError("error", file);
|
|
47217
|
+
downFile(res.data, "错误信息.txt");
|
|
47218
|
+
}
|
|
47219
|
+
}).finally(() => {
|
|
47220
|
+
hide();
|
|
47221
|
+
});
|
|
48143
47222
|
};
|
|
48144
47223
|
const exportFun = async () => {
|
|
48145
47224
|
message.info({
|
|
@@ -48147,19 +47226,33 @@ const com$b = defineComponent({
|
|
|
48147
47226
|
content: "正在导出,请稍后"
|
|
48148
47227
|
});
|
|
48149
47228
|
const res = await exportExcelTemplate();
|
|
47229
|
+
downFile(res, "物模型数据_" + moment().format("YYYY_MM_DD_HHmm") + ".xls");
|
|
47230
|
+
setTimeout(() => {
|
|
47231
|
+
message.destroy();
|
|
47232
|
+
}, 666);
|
|
47233
|
+
};
|
|
47234
|
+
const downFun = async () => {
|
|
47235
|
+
message.info({
|
|
47236
|
+
duration: 0,
|
|
47237
|
+
content: "正在下载,请稍后"
|
|
47238
|
+
});
|
|
47239
|
+
const res = await downExcelTemplate();
|
|
47240
|
+
downFile(res, "【模板】物模型数据_" + moment().format("YYYY_MM_DD_HHmm") + ".xls");
|
|
47241
|
+
setTimeout(() => {
|
|
47242
|
+
message.destroy();
|
|
47243
|
+
}, 666);
|
|
47244
|
+
};
|
|
47245
|
+
const downFile = (res, filename) => {
|
|
48150
47246
|
const blob = new Blob([res], {
|
|
48151
47247
|
type: "text/html;charset=UTF-8"
|
|
48152
47248
|
});
|
|
48153
47249
|
const a = document.createElement("a");
|
|
48154
47250
|
a.href = URL.createObjectURL(blob);
|
|
48155
|
-
a.download =
|
|
47251
|
+
a.download = filename;
|
|
48156
47252
|
a.style.display = "none";
|
|
48157
47253
|
document.body.appendChild(a);
|
|
48158
47254
|
a.click();
|
|
48159
47255
|
a.remove();
|
|
48160
|
-
setTimeout(() => {
|
|
48161
|
-
message.destroy();
|
|
48162
|
-
}, 666);
|
|
48163
47256
|
};
|
|
48164
47257
|
const openModal = () => {
|
|
48165
47258
|
updateModalRef.value.open(true);
|
|
@@ -48299,6 +47392,14 @@ const com$b = defineComponent({
|
|
|
48299
47392
|
"ghost": true
|
|
48300
47393
|
}, {
|
|
48301
47394
|
default: () => [createTextVNode("\u5BFC\u51FA\u5168\u90E8")]
|
|
47395
|
+
}), createVNode(resolveComponent("a-button"), {
|
|
47396
|
+
"type": "primary",
|
|
47397
|
+
"onClick": () => {
|
|
47398
|
+
downFun();
|
|
47399
|
+
},
|
|
47400
|
+
"ghost": true
|
|
47401
|
+
}, {
|
|
47402
|
+
default: () => [createTextVNode("\u4E0B\u8F7D\u6A21\u677F")]
|
|
48302
47403
|
})]
|
|
48303
47404
|
}), createVNode("div", {
|
|
48304
47405
|
"class": "mar-t-20"
|
|
@@ -52566,7 +51667,7 @@ var cardDetail = defineComponent({
|
|
|
52566
51667
|
deep: true
|
|
52567
51668
|
});
|
|
52568
51669
|
onMounted(() => {
|
|
52569
|
-
cards.value =
|
|
51670
|
+
cards.value = inlCard.cards;
|
|
52570
51671
|
formRef.value.resetFields();
|
|
52571
51672
|
});
|
|
52572
51673
|
return () => createVNode("div", {
|
|
@@ -53067,7 +52168,7 @@ const CardWareHouse = defineComponent({
|
|
|
53067
52168
|
color: "#ccc",
|
|
53068
52169
|
marginLeft: "10px"
|
|
53069
52170
|
}
|
|
53070
|
-
}, [createTextVNode("v"),
|
|
52171
|
+
}, [createTextVNode("v"), inlCard.version])]), createVNode(resolveComponent("a-radio-group"), {
|
|
53071
52172
|
"value": pattern.value,
|
|
53072
52173
|
"onUpdate:value": $event => pattern.value = $event,
|
|
53073
52174
|
"size": "small",
|
|
@@ -53629,7 +52730,7 @@ var selectCard = defineComponent({
|
|
|
53629
52730
|
};
|
|
53630
52731
|
refresh();
|
|
53631
52732
|
onMounted(() => {
|
|
53632
|
-
cards.value =
|
|
52733
|
+
cards.value = inlCard.cards;
|
|
53633
52734
|
});
|
|
53634
52735
|
return () => {
|
|
53635
52736
|
let _slot;
|
|
@@ -66953,7 +66054,7 @@ const comps = [...pageComponents, ...components$1];
|
|
|
66953
66054
|
const IconFont = createFromIconfontCN({});
|
|
66954
66055
|
var index = {
|
|
66955
66056
|
install(app) {
|
|
66956
|
-
app.use(
|
|
66057
|
+
app.use(inlCard);
|
|
66957
66058
|
app.component("icon-font", IconFont);
|
|
66958
66059
|
for (let i of comps) {
|
|
66959
66060
|
app.use(i);
|