{"version":3,"file":"owosdk.mjs","sources":["../../../projects/owosdk/src/lib/protocol/rtc/cache.ts","../../../projects/owosdk/src/lib/protocol/rtc/icstDefines.ts","../../../projects/owosdk/src/lib/protocol/rtc/resource.ts","../../../projects/owosdk/src/lib/protocol/rtc/web.service.ts","../../../projects/owosdk/src/lib/protocol/rtc/rx.service.ts","../../../projects/owosdk/src/lib/protocol/resource/resource.service.ts","../../../projects/owosdk/src/lib/common/overall.service.ts","../../../projects/owosdk/src/lib/protocol/rtc/av.service.ts","../../../projects/owosdk/src/lib/vod/vod.ts","../../../projects/owosdk/src/lib/components/tree/tree.component.ts","../../../projects/owosdk/src/lib/components/tree/tree.component.html","../../../projects/owosdk/src/lib/components/hint/hint.component.ts","../../../projects/owosdk/src/lib/components/hint/hint.component.html","../../../projects/owosdk/src/lib/components/equipment-tree/equipment-tree.component.ts","../../../projects/owosdk/src/lib/components/equipment-tree/equipment-tree.component.html","../../../projects/owosdk/src/lib/vod/onevideo/onevideo.component.ts","../../../projects/owosdk/src/lib/vod/onevideo/onevideo.component.html","../../../projects/owosdk/src/lib/common/drag.ts","../../../projects/owosdk/src/lib/vod/vod.component.ts","../../../projects/owosdk/src/lib/vod/vod.component.html","../../../projects/owosdk/src/lib/components/add-member/add-member.component.ts","../../../projects/owosdk/src/lib/components/add-member/add-member.component.html","../../../projects/owosdk/src/lib/components/image-display/image-display.component.ts","../../../projects/owosdk/src/lib/components/image-display/image-display.component.html","../../../projects/owosdk/src/lib/message/message.component.ts","../../../projects/owosdk/src/lib/message/message.component.html","../../../projects/owosdk/src/lib/components/group-tree/group-tree.component.ts","../../../projects/owosdk/src/lib/components/group-tree/group-tree.component.html","../../../projects/owosdk/src/lib/components/select-group/select-group.component.ts","../../../projects/owosdk/src/lib/components/select-group/select-group.component.html","../../../projects/owosdk/src/lib/group/group.component.ts","../../../projects/owosdk/src/lib/group/group.component.html","../../../projects/owosdk/src/lib/meeting/videomeeting/videomeeting.component.ts","../../../projects/owosdk/src/lib/meeting/videomeeting/videomeeting.component.html","../../../projects/owosdk/src/lib/common/pipe/arr.pipe.ts","../../../projects/owosdk/src/lib/components/excel/excel.component.ts","../../../projects/owosdk/src/lib/components/excel/excel.component.html","../../../projects/owosdk/src/lib/components/cut-meeting/cut-meeting.component.ts","../../../projects/owosdk/src/lib/components/cut-meeting/cut-meeting.component.html","../../../projects/owosdk/src/lib/meeting/meeting.component.ts","../../../projects/owosdk/src/lib/meeting/meeting.component.html","../../../projects/owosdk/src/lib/components/personalinformation/personalinformation.component.ts","../../../projects/owosdk/src/lib/components/personalinformation/personalinformation.component.html","../../../projects/owosdk/src/lib/equipment/equipmentframe/equipmentframe.component.ts","../../../projects/owosdk/src/lib/equipment/equipmentframe/equipmentframe.component.html","../../../projects/owosdk/src/lib/map/map.component.ts","../../../projects/owosdk/src/lib/map/map.component.html","../../../projects/owosdk/src/lib/history/historyav/historyav.component.ts","../../../projects/owosdk/src/lib/history/historyav/historyav.component.html","../../../projects/owosdk/src/lib/components/inquire-tree/inquire-tree.component.ts","../../../projects/owosdk/src/lib/components/inquire-tree/inquire-tree.component.html","../../../projects/owosdk/src/lib/components/inquire-equipment/inquire-equipment.component.ts","../../../projects/owosdk/src/lib/components/inquire-equipment/inquire-equipment.component.html","../../../projects/owosdk/src/lib/history/history.component.ts","../../../projects/owosdk/src/lib/history/history.component.html","../../../projects/owosdk/src/lib/person/person.component.ts","../../../projects/owosdk/src/lib/person/person.component.html","../../../projects/owosdk/src/lib/equipment/equimenttree/equimenttree.component.ts","../../../projects/owosdk/src/lib/equipment/equimenttree/equimenttree.component.html","../../../projects/owosdk/src/lib/equipment/equimenttranstion/equimenttranstion.component.ts","../../../projects/owosdk/src/lib/equipment/equimenttranstion/equimenttranstion.component.html","../../../projects/owosdk/src/lib/equipment/equipment.component.ts","../../../projects/owosdk/src/lib/equipment/equipment.component.html","../../../projects/owosdk/src/lib/largescreen/largescreen.component.ts","../../../projects/owosdk/src/lib/largescreen/largescreen.component.html","../../../projects/owosdk/src/lib/flowchart/CamundaModdleDescriptor.ts","../../../projects/owosdk/src/lib/flowchart/customTranslate/translations.js","../../../projects/owosdk/src/lib/flowchart/customTranslate/customTranslate.js","../../../projects/owosdk/src/lib/flowchart/customBpmn/custom/CustomPalette.js","../../../projects/owosdk/src/lib/flowchart/customBpmn/CustomRenderer/util/index.js","../../../projects/owosdk/src/lib/flowchart/customBpmn/CustomRenderer/CustomRenderer.js","../../../projects/owosdk/src/lib/flowchart/customBpmn/custom/index.js","../../../projects/owosdk/src/lib/flowchart/customBpmn/index.js","../../../projects/owosdk/src/lib/flowchart/customBpmn/contextPad/CustomContextPad.js","../../../projects/owosdk/src/lib/flowchart/customBpmn/contextPad/index.js","../../../projects/owosdk/src/lib/flowchart/node/node.component.ts","../../../projects/owosdk/src/lib/flowchart/node/node.component.html","../../../projects/owosdk/src/lib/flowchart/bpmn/bpmn.component.ts","../../../projects/owosdk/src/lib/flowchart/bpmn/bpmn.component.html","../../../projects/owosdk/src/lib/flowchart/flowchart.component.ts","../../../projects/owosdk/src/lib/flowchart/flowchart.component.html","../../../projects/owosdk/src/lib/broadcast/broadcast-handle/audio-menu/audio-menu.component.ts","../../../projects/owosdk/src/lib/broadcast/broadcast-handle/audio-menu/audio-menu.component.html","../../../projects/owosdk/src/lib/broadcast/broadcast-handle/cycle-select/cycle-select.component.ts","../../../projects/owosdk/src/lib/broadcast/broadcast-handle/cycle-select/cycle-select.component.html","../../../projects/owosdk/src/lib/broadcast/broadcast-handle/broadcast-handle.component.ts","../../../projects/owosdk/src/lib/broadcast/broadcast-handle/broadcast-handle.component.html","../../../projects/owosdk/src/lib/broadcast/broadcast-locality/broadcast-locality.component.ts","../../../projects/owosdk/src/lib/broadcast/broadcast-locality/broadcast-locality.component.html","../../../projects/owosdk/src/lib/broadcast/add-broadcast/add-broadcast.component.ts","../../../projects/owosdk/src/lib/broadcast/add-broadcast/add-broadcast.component.html","../../../projects/owosdk/src/lib/broadcast/select-broadcast/broadcast-tree/broadcast-tree.component.ts","../../../projects/owosdk/src/lib/broadcast/select-broadcast/broadcast-tree/broadcast-tree.component.html","../../../projects/owosdk/src/lib/broadcast/select-broadcast/select-broadcast.component.ts","../../../projects/owosdk/src/lib/broadcast/select-broadcast/select-broadcast.component.html","../../../projects/owosdk/src/lib/broadcast/broadcast.component.ts","../../../projects/owosdk/src/lib/broadcast/broadcast.component.html","../../../projects/owosdk/src/lib/warning/warning.component.ts","../../../projects/owosdk/src/lib/warning/warning.component.html","../../../projects/owosdk/src/lib/information/information.component.ts","../../../projects/owosdk/src/lib/information/information.component.html","../../../projects/owosdk/src/lib/components/timer/timer.component.ts","../../../projects/owosdk/src/lib/components/timer/timer.component.html","../../../projects/owosdk/src/lib/components/voice/voice.component.ts","../../../projects/owosdk/src/lib/components/voice/voice.component.html","../../../projects/owosdk/src/lib/components/video/video.component.ts","../../../projects/owosdk/src/lib/components/video/video.component.html","../../../projects/owosdk/src/lib/common/ngmodal.service.ts","../../../projects/owosdk/src/lib/chat/chat.component.ts","../../../projects/owosdk/src/lib/chat/chat.component.html","../../../projects/owosdk/src/lib/components/select-tree/select-tree.component.ts","../../../projects/owosdk/src/lib/components/select-tree/select-tree.component.html","../../../projects/owosdk/src/lib/components/multiaction/multiaction.component.ts","../../../projects/owosdk/src/lib/components/multiaction/multiaction.component.html","../../../projects/owosdk/src/lib/components/personal/personal.component.ts","../../../projects/owosdk/src/lib/components/personal/personal.component.html","../../../projects/owosdk/src/lib/components/group-busy/group-busy.component.ts","../../../projects/owosdk/src/lib/components/group-busy/group-busy.component.html","../../../projects/owosdk/src/lib/components/hotline/hotline.component.ts","../../../projects/owosdk/src/lib/components/hotline/hotline.component.html","../../../projects/owosdk/src/lib/components/localityvideo/localityvideo.component.ts","../../../projects/owosdk/src/lib/components/localityvideo/localityvideo.component.html","../../../projects/owosdk/src/lib/person/avradiotree/avradiotree.component.ts","../../../projects/owosdk/src/lib/person/avradiotree/avradiotree.component.html","../../../projects/owosdk/src/lib/person/avtransition/avtransition.component.ts","../../../projects/owosdk/src/lib/person/avtransition/avtransition.component.html","../../../projects/owosdk/src/lib/components/dial/dial.component.ts","../../../projects/owosdk/src/lib/components/dial/dial.component.html","../../../projects/owosdk/src/lib/components/selectbroad/selectbroad.component.ts","../../../projects/owosdk/src/lib/components/selectbroad/selectbroad.component.html","../../../projects/owosdk/src/lib/owosdk.component.ts","../../../projects/owosdk/src/lib/owosdk.component.html","../../../projects/owosdk/src/lib/components/spilt-screen/spilt-screen.component.ts","../../../projects/owosdk/src/lib/components/spilt-screen/spilt-screen.component.html","../../../projects/owosdk/src/lib/common/click-outside.directive.ts","../../../projects/owosdk/src/lib/owosdk.module.ts","../../../projects/owosdk/src/lib/protocol/rtc/connect.service.ts","../../../projects/owosdk/src/lib/common/callservie.service.ts","../../../projects/owosdk/src/public-api.ts","../../../projects/owosdk/src/owosdk.ts"],"sourcesContent":["export const cache = {\r\n  group: '',\r\n  broadcast:'',\r\n  person: '',\r\n  equipment: '',\r\n  answer: '手动应答',\r\n  videoFlag: \"手动接收\",\r\n  voice: '声音',\r\n  resolution: '1280x960',\r\n  fps: '30',\r\n  coderate: '500000',\r\n  transfer: '2',\r\n  echo: '100ms',\r\n  personlist: <any[]>[],\r\n  equipmentlist: <any[]>[],\r\n  message: <any[]>[],\r\n  setting: <any[]>[\r\n    {\r\n      name: '热线1',\r\n      type: '用户',\r\n      phone: '',\r\n    },\r\n    {\r\n      name: '热线2',\r\n      type: '用户',\r\n      phone: '',\r\n    },\r\n    {\r\n      name: '热线3',\r\n      type: '用户',\r\n      phone: '',\r\n    },\r\n    {\r\n      name: '热线4',\r\n      type: '用户',\r\n      phone: '',\r\n    },\r\n  ],\r\n  largelist: <any[]>[],\r\n  meetingchecked: true,\r\n  videochecked: true,\r\n};\r\n","export const state = {\r\n  /////////////////////////事件定义//////////////////////\r\n  OWO_EVENT_SYSTEM_MESSAGE: 100001, //系统消息\r\n  OWO_EVENT_USER_STATUS_CHANGED: 100002, //用户状态发生变化\r\n  OWO_EVENT_USER_ONLINE: 100003, //用户上线（登陆）\r\n  OWO_EVENT_USER_OFFLINE: 100004, //用户离线（退出或掉线）\r\n  OWO_EVENT_CHAT_STATUS_CHANGED: 100101, //呼叫状态发生变化\r\n  /////////////////////////命令定义////////////////////////////\r\n  //登录\r\n  OWO_CMD_LOGIN: 500001, //登录\r\n  OWO_CMD_LOGOUT: 500003, //退出\r\n  OWO_CMD_SEND_STATUS: 500005, //上报自身状态\r\n  OWO_CMD_GET_MEMLIST: 500007, //获取成员列表\r\n  OWO_CMD_GET_MEMLIST_STATUS: 500009, //获取成员列表状态\r\n  OWO_CMD_OTHER_LOGIN: 500011, //异地登录\r\n  OWO_CMD_USER_OFFLINE: 500013, //用户掉线\r\n  OWO_CMD_EVENT_NOTIFY: 500015, //事件通知\r\n  OWO_CMD_MODIFY_PASSWORD: 500017, //修改用户密码\r\n  OWO_CMD_MSG_HEART_BEAT: 500019, //消息命令长连接心跳\r\n  //用户\r\n  OWO_CMD_USER_LOAD_CACHE: 500101, //从服务端读取用户个性化设置参数及长期缓存数据（json格式）cache\r\n  OWO_CMD_USER_SAVE_CACHE: 500103, //向服务端保存用户个性化设置参数及长期缓存数据（json格式）\r\n  //设备\r\n  OWO_CMD_GET_DEV_LIST: 510001, //获取设备列表\r\n  OWO_CMD_GET_DEV_LIST_STATUS: 510003, //获取设备列表状态\r\n  //视频会议\r\n  OWO_CMD_VIDEOMEET_GET_LIST: 501001, //获取视频会议列表\r\n  OWO_CMD_VIDEOMEET_ADDMEM: 501003, //视频会议添加成员\r\n  OWO_CMD_VIDEOMEET_DELMEM: 501005, //视频会议删除成员\r\n  OWO_CMD_VIDEOMEET_START: 501007, //打开视频会议\r\n  OWO_CMD_VIDEOMEET_STOP: 501009, //关闭视频会议\r\n  OWO_CMD_VIDEOMEET_MIC_SWITCH: 501011, //禁言开关 1：禁言功能打开，客户端不能讲话 0：禁言功能关闭，客户端可以讲话\r\n  OWO_CMD_VIDEOMEET_LISTEN_SWITCH: 501013, //禁听开关， 1：可以听， 0：不可以听\r\n  OWO_CMD_VIDEOMEET_OPEN_VIDEO: 501015, //视频会议打开成员视频\r\n  OWO_CMD_VIDEOMEET_CLOSE_VIDEO: 501017, //视频会议关闭成员视频\r\n  OWO_CMD_VIDEOMEET_CREATE: 501019, //创建视频会议\r\n  OWO_CMD_VIDEOMEET_DESTROY: 501021, //删除视频会议\r\n  OWO_CMD_VIDEOMEET_MODIFY: 501023, //修改视频会议\r\n  OWO_CMD_VIDEOMEET_PUSH_MEM: 501025, //视频会议_视频推送（单人_多人）\r\n  OWO_CMD_VIDEOMEET_PUSH_GROUP: 501027, //视频会议_视频推送（群组）\r\n  OWO_CMD_VIDEOMEET_JOIN: 501029, //加入视频会议\r\n  OWO_CMD_VIDEOMEET_EXIT: 501031, //退出视频会议\r\n  OWO_CMD_VIDEOMEET_START_RESULT: 501033, //是否同意加入视频会议\r\n  OWO_CMD_VIDEOMEET_OPENVIDEO_RESULT: 501129, //成员进入会议成功 返回结果\r\n  OWO_CMD_VIDEOMEET_ENTER: 501131, //成员进入会议\r\n  OWO_CMD_VIDEOMEET_LEAVE: 501133, //成员离开会议\r\n  //音频会议\r\n  OWO_CMD_AUDIOMEET_GET_LIST: 502001, //获取音频会议列表\r\n  OWO_CMD_AUDIOMEET_ADDMEM: 502003, //音频会议添加成员\r\n  OWO_CMD_AUDIOMEET_DELMEM: 502005, //音频会议删除成员\r\n  OWO_CMD_AUDIOMEET_START: 502007, //打开音频会议\r\n  OWO_CMD_AUDIOMEET_STOP: 502009, //关闭音频会议\r\n  OWO_CMD_AUDIOMEET_MIC_SWITCH: 502011, //禁言开关， 1：禁言功能打开，客户端不能讲话 0：禁言功能关闭，客户端可以讲话\r\n  OWO_CMD_AUDIOMEET_LISTEN_SWITCH: 502013, //禁听开关， 1：可以听， 0：不可以听\r\n  OWO_CMD_AUDIOMEET_CREATE: 502015, //创建音频会议\r\n  OWO_CMD_AUDIOMEET_DESTROY: 502017, //删除音频会议\r\n  OWO_CMD_AUDIOMEET_MODIFY: 502019, //修改音频会议\r\n  OWO_CMD_AUDIOMEET_JOIN: 502025, //加入音频会议\r\n  OWO_CMD_AUDIOMEET_EXIT: 502027, //退出音频会议\r\n  OWO_CMD_AUDIOMEET_ENTER: 501131, //成员进入会议\r\n  OWO_CMD_AUDIOMEET_LEAVE: 501133, //成员离开会议\r\n  //对讲组\r\n  OWO_CMD_TALKGROUP_GET_LIST: 503001, //获取对讲组列表\r\n  OWO_CMD_TALKGROUP_ADDMEM: 503003, //对讲组添加成员\r\n  OWO_CMD_TALKGROUP_DELMEM: 503005, //对讲组删除成员\r\n  OWO_CMD_TALKGROUP_START: 503007, //打开对讲组\r\n  OWO_CMD_TALKGROUP_STOP: 503009, //关闭对讲组\r\n  OWO_CMD_TALKGROUP_GET_TALK_LIMITS: 503011, //获取对讲组讲话权限\r\n  OWO_CMD_TALKGROUP_FREE_TALK_LIMITS: 503013, //释放对讲组讲话权限\r\n  OWO_CMD_TALKGROUP_SEND_AUDIO: 503015, //发送音频数据\r\n  OWO_CMD_TALKGROUP_RECV_AUDIO: 503017, //接收音频数据\r\n  OWO_CMD_TALKGROUP_SET_SPEAKER: 503019, //设置当前讲话人1\r\n  OWO_CMD_TALKGROUP_CLEAR_SPEAKER: 503021, //清空当前对讲人1\r\n  OWO_CMD_TALKGROUP_CREATE: 503023, //创建对讲组\r\n  OWO_CMD_TALKGROUP_DESTROY: 503025, //删除对讲组\r\n  OWO_CMD_TALKGROUP_JOIN: 503027, //进入对讲组(成员在对讲组中,对讲组已开启，可加入成功）\r\n  OWO_CMD_TALKGROUP_EXIT: 503029, //退出对讲组(不真正退出，成员还在对讲组中）\r\n  OWO_CMD_TALKGROUP_BARRING: 503031, //成员禁话，可以收听，不能抢话\r\n  //广播组\r\n  OWO_CMD_BROADCASTGROUP_GET_LIST: 504001, //获取广播组列表\r\n  OWO_CMD_BROADCASTGROUP_ADDMEM: 504003, //广播组添加成员\r\n  OWO_CMD_BROADCASTGROUP_DELMEM: 504005, //广播组删除成员\r\n  OWO_CMD_BROADCASTGROUP_START: 504007, //打开广播组\r\n  OWO_CMD_BROADCASTGROUP_STOP: 504009, //关闭广播组;\r\n  OWO_CMD_BROADCASTGROUP_BROADCAST_START: 504011, //开始广播\r\n  OWO_CMD_BROADCASTGROUP_BROADCAST_STOP: 504013, //停止广播\r\n  OWO_CMD_BROADCASTGROUP_SET_SPEAKER: 504019, //设置当前讲话人\r\n  OWO_CMD_BROADCASTGROUP_CLEAR_SPEAKER: 504021, //清空当前广播人\r\n  OWO_CMD_BROADCASTGROUP_CREATE: 504023, //创建广播组\r\n  OWO_CMD_BROADCASTGROUP_DESTROY: 504025, //删除广播组\r\n  OWO_CMD_BROADCASTGROUP_JOIN: 504027, //进入广播组(成员在广播组中,广播组已开启，可加入成功）\r\n  OWO_CMD_BROADCASTGROUP_EXIT: 504029, //退出广播组(不真正退出，成员还在广播组中）\r\n\r\n  //即时消息\r\n  OWO_CMD_MSGDLG_SEND_MSG: 505001, //发送消息\r\n  OWO_CMD_MSGGROUP_CREATE: 505003, //创建消息组\r\n  OWO_CMD_MSGGROUP_DESTROY: 505005, //删除消息组\r\n  OWO_CMD_MSGGROUP_ADDMEM: 505007, //消息组添加成员\r\n  OWO_CMD_MSGGROUP_DELMEM: 505009, //消息组删除成员\r\n  OWO_CMD_MSGGROUP_SEND_MSG: 505011, //消息组发送消息\r\n  OWO_CMD_MSGGROUP_FILE_UPDOWN_INFO: 505013, //消息组文件上传下载信息\r\n  OWO_CMD_MSGDLG_ADD_MSG_RECORD: 505015, //添加消息记录\r\n  OWO_CMD_MSGDLG_DELETE_MSG_RECORD: 505017, //删除消息记录\r\n  OWO_CMD_MSGDLG_GET_MSG_COUNT: 505019, //查询消息总数\r\n  OWO_CMD_MSGDLG_GET_MSG_RECORD: 505021, //查询消息记录\r\n\r\n  //视频点播\r\n  OWO_CMD_VOD_OPEN_VIDEO: 506001, //客户端打开视频\r\n  OWO_CMD_VOD_CLOSE_VIDEO: 506003, //客户端关闭视频\r\n  OWO_CMD_VOD_MIC_SWITCH: 506005, //客户端音频开关\r\n  OWO_CMD_VOD_OPEN_VIDEO_BK: 506101, //被点播端返回消息\r\n  OWO_CMD_VOD_LEAVE: 506103, //成员退出视频点播\r\n  //音视频呼叫\r\n  OWO_CMD_CHAT_REQUEST: 507001, //请求一对一音视频呼叫\r\n  OWO_CMD_CHAT_REQUEST_BK: 507101, //请求一对一音视频呼叫 返回结果\r\n  OWO_CMD_CHAT_CLOSE: 507003, //关闭一对一音视频呼叫\r\n  OWO_CMD_CHAT_GET_INFO: 507009, //获取列表用户通话详情\r\n  OWO_CMD_CHAT_TRANSTYPE_ENSURE: 507011, //呼叫传输模式确认\r\n  OWO_CMD_CHAT_TRANSTYPE_CHANGE: 507013, //切换呼叫传输模式\r\n  OWO_CMD_CHAT_BARGE_IN: 507015, //强插\r\n  OWO_CMD_CHAT_INTERCEPT: 507017, //强拆\r\n  OWO_CMD_CHAT_MONITOR: 507019, //监听\r\n  OWO_CMD_CHAT_BARRING: 507021, //禁话\r\n  OWO_CMD_CHAT_TRANSFER: 507023, //转接\r\n  OWO_CMD_CHAT_PICKUP: 507025, //代答\r\n  OWO_CMD_CHAT_THROUGH: 507027, //直通\r\n\r\n  //MAP\r\n  OWO_CMD_MAP_GPS_SEND: 508001, //上传GPS数据\r\n  OWO_CMD_MAP_GPS_GET: 508003, //获取GPS数据\r\n  OWO_CMD_MAP_GPS_TRACK: 508005, //获取用户轨迹\r\n  OWO_CMD_MAP_STATIC_POINT_ADD: 508011, //添加静态标注点\r\n  OWO_CMD_MAP_STATIC_POINT_MODIFY: 508013, //修改静态标注点\r\n  OWO_CMD_MAP_STATIC_POINT_DEL: 508015, //删除静态标注点\r\n  OWO_CMD_MAP_STATIC_POINT_GET: 508017, //获取所有静态标注点\r\n  OWO_CMD_MAP_ELECTRIC_FENCE_ADD: 508021, // 添加电子围栏\r\n  OWO_CMD_MAP_ELECTRIC_FENCE_MODIFY: 508023, // 修改电子围栏\r\n  OWO_CMD_MAP_ELECTRIC_FENCE_DEL: 508025, // 删除电子围栏\r\n  OWO_CMD_MAP_ELECTRIC_FENCE_GET: 508027, // 获取所有电子围栏\r\n\r\n  //网络穿透\r\n  OWO_CMD_P2P_REGISTER: 600001, //Client登录时向服务器发送的消息\r\n  OWO_CMD_P2P_UNREGISTER: 600003, //Client注销时发送的消息\r\n  OWO_CMD_P2P_TRANSTER: 600005, //通知服务端，发起向另一客户端 发送打洞消息\r\n  OWO_CMD_P2P_CLIENT_TRANS: 600007, //打洞双方客户端互相发送打洞消息\r\n  OWO_CMD_P2P_TRANS_TYPE_BK: 600009, //返回穿透结果\r\n  OWO_CMD_P2P_TRANS_TYPE_CHANGE: 600011, //通知客户端传输类型发生变化\r\n  //WebRtc\r\n  OWO_CMD_RTC_OFFER: 700001, //RTC通道呼叫\r\n  OWO_CMD_RTC_ANSWER: 700003, //RTC通道应答\r\n  OWO_CMD_RTC_CANDIDATE: 700005, //RTC通道交换地址\r\n  //存储\r\n  OWO_CMD_STORE_ADD_FILE: 800001, //添加存储文件记录\r\n  OWO_CMD_STORE_GET_FILE_COUNT: 800003, //获取存储文件总数\r\n  OWO_CMD_STORE_GET_FILE_RECORD: 800005, //获取存储文件记录\r\n  //数据\r\n  OWO_CMD_DATA_RECORD_SEND: 801001, //指标数据\r\n  //告警\r\n  OWO_CMD_ALARM_RECORD_SEND: 802001, //指标数据\r\n  //大屏\r\n  OWO_CMD_SCREEN_PUSH_START: 509001, //视频投屏\r\n  OWO_CMD_SCREEN_PUSH_STOP: 509003, //停止投屏\r\n};\r\n","export class Resource {\r\n  constructor() {}\r\n}\r\nexport class Userlist extends Resource {\r\n  static userlist: any = '';\r\n  storage(userlist: any) {\r\n    Userlist.userlist = userlist;\r\n  }\r\n}\r\nexport class UserType extends Resource {\r\n  static userType: any = '';\r\n  storage(userType: any) {\r\n    UserType.userType = userType;\r\n  }\r\n}\r\nexport class Equipmentlist extends Resource {\r\n  static  equipmentlist: any = '';\r\n  storage(equipmentlist: any) {\r\n    Equipmentlist.equipmentlist = equipmentlist;\r\n  }\r\n}\r\nexport class TalkGroupList extends Resource {\r\n  static talkGroupList: any = '';\r\n  storage(talkGroupList: any) {\r\n    TalkGroupList.talkGroupList = talkGroupList;\r\n  }\r\n}\r\nexport class VideoMeetList extends Resource {\r\n  static videoMeetList: any = '';\r\n  storage(videoMeetList: any) {\r\n    VideoMeetList.videoMeetList = videoMeetList;\r\n  }\r\n}\r\nexport class AudioMeetList extends Resource {\r\n  static audioMeetList: any = '';\r\n  storage(audioMeetList: any) {\r\n    AudioMeetList.audioMeetList = audioMeetList;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport enum SocketEventType {\n  Baotou = 0x66ff22aa, //包头\n  versions = 0x00000001, //版本号\n  Package = 0x66fe22ab, //包尾\n}\n@Injectable({\n  providedIn: 'root',\n})\nexport class WebService {\n  ws: any;\n  serial = 1;\n  subjects = new Subject<any>();\n  wssend$: Observable<any> = this.subjects.asObservable();\n  constructor() {}\n  public initSocket(url: string): void {\n    this.ws = new WebSocket(url);\n    this.ws.onopen = () => {\n      console.log('连接了');\n    };\n    this.ws.onmessage = (evt: any) => {\n      let buffer = evt.data;\n      let view = new DataView(buffer);\n      let pkgHeader = view.getUint32(0);\n      let pkgLen = view.getUint32(4);\n      let versions = view.getUint32(8);\n      let serial = view.getUint32(12);\n      // console.log(serial);\n      let jsonLen = view.getUint32(16);\n      let jsonBuf = buffer.slice(20, 20 + jsonLen);\n      let jsonStr = this.utf8ByteToUnicodeStr(new Uint8Array(jsonBuf));\n      let pkgTail = view.getUint32(20 + jsonLen);\n      let data = {\n        serial: serial,\n        jsonStr: jsonStr,\n      };\n      this.subjects.next(data);\n    };\n    this.ws.onclose = () => {\n      // console.log('关闭了');\n      setTimeout(() => {\n        // this.initSocket('wss://172.16.133.101:7443');\n        this.initSocket('wss://222.128.117.18:7443');\n      }, 5000);\n    };\n  }\n  public send(data: any, seri?: any): void {\n    let offset = 0;\n    let buffer = new ArrayBuffer(100000);\n    let view = new DataView(buffer);\n    let jsonBytes = this.stringToByte(JSON.stringify(data));\n    let j = 0;\n    let jsonLen = jsonBytes.length; //字符串长度\n    let encaseleng = jsonLen + 12;\n    view.setUint32(offset, SocketEventType.Baotou); //包头\n    offset += 4;\n    view.setUint32(offset, encaseleng); //包体长度\n    offset += 4;\n    view.setUint32(offset, SocketEventType.versions); //版本号\n    offset += 4;\n    let sequence: any\n    if (seri) {\n      sequence = seri;\n    } else {\n      sequence= this.serial+1;\n      this.serial +=1\n    }\n    // console.log(sequence);\n    view.setUint32(offset, sequence); //序列号\n    offset += 4;\n    view.setUint32(offset, jsonLen); //Json串长度\n    offset += 4;\n    for (j = 0; j < jsonLen; j++) {\n      view.setInt8(offset + j, jsonBytes[j]); //Json串内容\n    }\n    view.setUint32(offset + jsonLen, SocketEventType.Package); //包尾\n    let PackageLen = offset + jsonLen + 4;\n    const command = buffer.slice(0, PackageLen);\n    this.ws.binaryType = 'arraybuffer';\n    this.ws.send(command);\n  }\n  stringToByte(str: string) {\n    var bytes = new Array();\n    var len, c;\n    len = str.length;\n    for (var i = 0; i < len; i++) {\n      c = str.charCodeAt(i);\n      if (c >= 0x010000 && c <= 0x10ffff) {\n        bytes.push(((c >> 18) & 0x07) | 0xf0);\n        bytes.push(((c >> 12) & 0x3f) | 0x80);\n        bytes.push(((c >> 6) & 0x3f) | 0x80);\n        bytes.push((c & 0x3f) | 0x80);\n      } else if (c >= 0x000800 && c <= 0x00ffff) {\n        bytes.push(((c >> 12) & 0x0f) | 0xe0);\n        bytes.push(((c >> 6) & 0x3f) | 0x80);\n        bytes.push((c & 0x3f) | 0x80);\n      } else if (c >= 0x000080 && c <= 0x0007ff) {\n        bytes.push(((c >> 6) & 0x1f) | 0xc0);\n        bytes.push((c & 0x3f) | 0x80);\n      } else {\n        bytes.push(c & 0xff);\n      }\n    }\n    return bytes;\n  }\n  // 反解码\n  utf8ByteToUnicodeStr(utf8Bytes: any) {\n    // console.log(utf8Bytes);\n    var unicodeStr = '';\n    for (var pos = 0; pos < utf8Bytes.length; ) {\n      var flag = utf8Bytes[pos];\n      var unicode = 0;\n      if (flag >>> 7 === 0) {\n        unicodeStr += String.fromCharCode(utf8Bytes[pos]);\n        pos += 1;\n      } else if ((flag & 0xfc) === 0xfc) {\n        unicode = (utf8Bytes[pos] & 0x3) << 30;\n        unicode |= (utf8Bytes[pos + 1] & 0x3f) << 24;\n        unicode |= (utf8Bytes[pos + 2] & 0x3f) << 18;\n        unicode |= (utf8Bytes[pos + 3] & 0x3f) << 12;\n        unicode |= (utf8Bytes[pos + 4] & 0x3f) << 6;\n        unicode |= utf8Bytes[pos + 5] & 0x3f;\n        unicodeStr += String.fromCharCode(unicode);\n        pos += 6;\n      } else if ((flag & 0xf8) === 0xf8) {\n        unicode = (utf8Bytes[pos] & 0x7) << 24;\n        unicode |= (utf8Bytes[pos + 1] & 0x3f) << 18;\n        unicode |= (utf8Bytes[pos + 2] & 0x3f) << 12;\n        unicode |= (utf8Bytes[pos + 3] & 0x3f) << 6;\n        unicode |= utf8Bytes[pos + 4] & 0x3f;\n        unicodeStr += String.fromCharCode(unicode);\n        pos += 5;\n      } else if ((flag & 0xf0) === 0xf0) {\n        unicode = (utf8Bytes[pos] & 0xf) << 18;\n        unicode |= (utf8Bytes[pos + 1] & 0x3f) << 12;\n        unicode |= (utf8Bytes[pos + 2] & 0x3f) << 6;\n        unicode |= utf8Bytes[pos + 3] & 0x3f;\n        unicodeStr += String.fromCharCode(unicode);\n        pos += 4;\n      } else if ((flag & 0xe0) === 0xe0) {\n        unicode = (utf8Bytes[pos] & 0x1f) << 12;\n        unicode |= (utf8Bytes[pos + 1] & 0x3f) << 6;\n        unicode |= utf8Bytes[pos + 2] & 0x3f;\n        unicodeStr += String.fromCharCode(unicode);\n        pos += 3;\n      } else if ((flag & 0xc0) === 0xc0) {\n        //110\n        unicode = (utf8Bytes[pos] & 0x3f) << 6;\n        unicode |= utf8Bytes[pos + 1] & 0x3f;\n        unicodeStr += String.fromCharCode(unicode);\n        pos += 2;\n      } else {\n        unicodeStr += String.fromCharCode(utf8Bytes[pos]);\n        pos += 1;\n      }\n    }\n    return unicodeStr;\n  }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { cache } from './cache';\nimport { state } from './icstDefines';\nimport { WebService } from './web.service';\n@Injectable({\n  providedIn: 'root',\n})\nexport class RxService {\n  public signEventEmit: any;\n  public uiEventEmit: any;\n  sessionID = '';\n  userID = '';\n  userName = '';\n  tenantID = '';\n  userType = '';\n  timeout = 50;\n\n  constructor(private ws: WebService) {\n    this.signEventEmit = new EventEmitter();\n  }\n  emitSignMessage(msg: any) {\n    this.signEventEmit.emit(msg);\n  }\n  subscribeSignMessage(SignMessageHandle: (value: any) => any) {\n    this.signEventEmit.subscribe(SignMessageHandle);\n  }\n  emitUIMessage(msg: any) {\n    this.uiEventEmit.emit(msg);\n  }\n  subscribeUIMessage(UIMessageHandle: (value: any) => any) {\n    this.uiEventEmit.subscribe(UIMessageHandle);\n  }\n  // 登录\n  login(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_LOGIN,\n      cmdBody: {\n        tenantID: ev.tenantID,\n        userID: ev.userID,\n        passWord: ev.passWord,\n        localIP: ev.localIP,\n      },\n    };\n    this.tenantID = ev.tenantID;\n    this.ws.send(data);\n  }\n  //退出\n  quit() {\n    let data = {\n      cmdID: state.OWO_CMD_LOGOUT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n      },\n    };\n    this.ws.send(data);\n  }\n  //PC状态上报\n  state() {\n    let data = {\n      cmdID: state.OWO_CMD_SEND_STATUS,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  //获取所属设备列表\n  gainList() {\n    let data = {\n      cmdID: state.OWO_CMD_GET_MEMLIST,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n      },\n    };\n    this.ws.send(data);\n  }\n  //获取列表状态\n  gainState(): any {\n    let data = {\n      cmdID: state.OWO_CMD_GET_MEMLIST_STATUS,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n      },\n    };\n    this.ws.send(data);\n  }\n  //账户异地登录\n  accounTallopatric() {\n    let data = {\n      cmdID: state.OWO_CMD_OTHER_LOGIN,\n      cmdBody: {\n        sessionID: this.sessionID,\n      },\n    };\n    this.ws.send(data);\n  }\n  //账户修改密码\n  modifypassword(oldPassword: any, newPassword: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MODIFY_PASSWORD,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n        oldPassword: oldPassword,\n        newPassword: newPassword,\n      },\n    };\n    this.ws.send(data);\n  }\n  //获取热力设备列表\n  equipmentList() {\n    let data = {\n      cmdID: state.OWO_CMD_GET_DEV_LIST,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n      },\n    };\n    this.ws.send(data);\n  }\n\n  //获取热力设备列表状态\n  equipmentStatc() {\n    let data = {\n      cmdID: state.OWO_CMD_GET_DEV_LIST_STATUS,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n      },\n    };\n    this.ws.send(data);\n  }\n  //消息命令长连接心跳\n  heartBeateven() {\n    let data = {\n      cmdID: state.OWO_CMD_MSG_HEART_BEAT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  //从服务端读取用户个性化设置参数及长期缓存数据（json格式）\n  loadcache() {\n    let data = {\n      cmdID: state.OWO_CMD_USER_LOAD_CACHE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  //向服务端保存用户个性化设置参数及长期缓存数据（json格式）\n  savecache(cache: any) {\n    let data = {\n      cmdID: state.OWO_CMD_USER_SAVE_CACHE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n        cache: cache,\n      },\n    };\n\n    this.ws.send(data);\n  }\n  //通知消息\n  notification() {\n    let data = {\n      cmdID: 500019,\n      // cmdBody: {\n      //   \"notify\"\n      // },\n    };\n    this.ws.send(data);\n  }\n  //打开视频视频点播\n  openVideo(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VOD_OPEN_VIDEO,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dstID: ev.info.userID,\n        type: ev.info.userType,\n        //\"transType\"\t\t    : \"转发类型， 1：UDP， 2：TCP， 3：组播\",\n        //\" transIP \"\t\t\t:\"转发IP\", //不组播时有效\n        //\"transPort\"\t\t\t:\"转发端口\" //不组播时有效\n        timeout: this.timeout,\n      },\n    };\n    this.ws.send(data);\n  }\n  replyCmsVideoBk(serial: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VOD_OPEN_VIDEO_BK + 1,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n      },\n    };\n\n    this.ws.send(data, serial);\n  }\n  replycmsLeave(serial: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VOD_LEAVE + 1,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n      },\n    };\n    this.ws.send(data, serial);\n  }\n  // 关闭视频\n  closrVideo(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VOD_CLOSE_VIDEO,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dstID: ev,\n        type: '1',\n        //\"transType\"\t\t    : \"转发类型， 1：UDP， 2：TCP， 3：组播\",\n        //\" transIP \"\t\t\t:\"转发IP\", //不组播时有效\n        //\"transPort\"\t\t\t:\"转发端口\" //不组播时有效\n        timeout: this.timeout,\n      },\n    };\n    this.ws.send(data);\n  }\n\n  // 音频开关\n  frequencySwitch(ev: number) {\n    let micFlag = ev;\n    let data = {\n      cmdID: state.OWO_CMD_VOD_MIC_SWITCH,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dstID: '目标ID',\n        type: '目标类型',\n        micFlag: micFlag, //1\"开  0：关\"\n        timeout: '超时时间',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 被点播端是否同意打开视频\n  whetherConsent() {\n    let data = {\n      cmdID: state.OWO_CMD_VOD_OPEN_VIDEO_BK,\n      cmdBody: {\n        reqUserID: '被请求方ID', //被点播端的ID\n        srcUserID: '请求方ID', //接收命令端用户ID，\n        //用于判断是否为请求方发出请求\n        sessionID: this.sessionID,\n        permission: '1:同意， 2：拒绝， 3：忙线中',\n        video: '视频格式,H264, H265',\n        resolution: ' 分辨率1080P,720p,D1,2CIF,CIF,QCIF',\n        bitrate: '码率（整型）',\n        fps: '帧率（整型）',\n        audio: '音频格式，G711',\n        bits: '采样位数（整型）',\n        samp: '采样频率（整型）',\n        audioBit: '比特率',\n      },\n    };\n    this.ws.send(data);\n  }\n  //被点播端关闭视频\n  consentColse() {\n    let data = {\n      cmdID: state.OWO_CMD_VOD_LEAVE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        memID: '用户ID',\n        memType: '用户类型',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 获取视频会议列表\n  viodeList() {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_GET_LIST,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 添加设备到视频会议\n  addVideoConference(videoMeetID: any, userID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_ADDMEM,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: userID, //添加设备id\n        videoMeetID: videoMeetID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 删除视频会议中设备\n  removeVideoEquipment(videoMeetID: any, userID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_DELMEM,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: videoMeetID,\n        userID: userID, //删除设备id\n      },\n    };\n    this.ws.send(data);\n  }\n  // 开始视频会议\n  beginVideoconFerence(videoMeetID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_START,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: videoMeetID,\n        videoNum: '4',\n        transType: '2', // 1：UDP， 2：TCP， 3：组播'\n        transIP: '192.168.1.122', //UDP时有效\n        transBasePort: '', //UDP时有效\n        cameraFlag: '1', // 1：打开   0：未打开\n        micFlag: '1', // 1：打开   0：未打开\n      },\n    };\n\n    this.ws.send(data);\n  }\n  // 关闭视频会议\n  closeVideoconFerence(videoMeetID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_STOP,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: videoMeetID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // OWO_CMD_VIDEOMEET_LISTEN_SWITCH: 501013, //禁听开关， 1：可以听， 0：不可以听\n  // 会议禁言\n  conferenceBanned() {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_MIC_SWITCH,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: '会议ID',\n        userID: '设备ID',\n        userType: '添加类型',\n        micFlag: '', // 功能开关1：禁言功能打开客户端不能讲话0：禁言功能关闭客户端可以讲话\n      },\n    };\n    this.ws.send(data);\n  }\n  //打开会议中设备视频\n  openConferenceVideo() {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_OPEN_VIDEO,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: '会议ID',\n        userID: '设备ID',\n        userType: '类型',\n        //\"transType\":\"转发类型， 1：UDP， 2：TCP， 3：组播\",\n        //\" transIP \":\"转发IP\", //不组播时有效\n        //\"transPort\":\"转发端口\" //不组播时有效\n        //\"timeout\":\"超时时间\"\n      },\n    };\n    this.ws.send(data);\n  }\n  //关闭会议中设备视频\n  closeConferenceVideo(userID: any, videoMeetID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_CLOSE_VIDEO,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: videoMeetID,\n        userID: userID,\n        userType: '', //添加类型\n        timeout: '', //超时时间\n      },\n    };\n    this.ws.send(data);\n  }\n  // 创建视频会议\n  establishVideoConference(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_CREATE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoName: ev.videoName,\n        creater: this.userID,\n        createTime: ev.createTime,\n        member: ev.member,\n        triggerMode: '1',\n        triggerNum: '11',\n        startLimit: '1',\n        talkLimit: ev.talkLimit,\n        taklLimitMem: '',\n        inviteLimit: ev.inviteLimit,\n        callMode: '0',\n        callTimes: ev.callTimes,\n        callInterval: ev.callInterval,\n        recordMode: '0',\n        meetingBeginTime: ev.meetingBeginTime,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 删除视频会议\n  removeVideoConference(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_DESTROY,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: ev,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 修改视频会议\n  modificationVideoConference(ev?: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_MODIFY,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoName: ev.videoName,\n        creater: ev.creater,\n        createTime: ev.createTime,\n        member: ev.member,\n        triggerMode: ev.triggerMode,\n        triggerNum: ev.triggerNum,\n        startLimit: ev.startLimit,\n        talkLimit: ev.talkLimit,\n        taklLimitMem: ev.taklLimitMem,\n        inviteLimit: ev.inviteLimit,\n        callMode: ev.callMode,\n        callTimes: ev.callTimes,\n        callInterval: ev.callInterval,\n        recordMode: ev.recordMode,\n        meetingBeginTime: ev.meetingBeginTime,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 视频推送（单人__多人）\n  videoPush(videoMeetID: string, srcUserID: string, dstListID: string) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_PUSH_MEM,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: videoMeetID,\n        srcUserID: srcUserID, //'推送源ID'\n        dstListID: dstListID, //推送目标ID列表 ；分隔\n      },\n    };\n    this.ws.send(data);\n  }\n  //视频推送（组）\n  videoPushGroup() {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_PUSH_GROUP,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: '会议ID',\n        srcUserID: '推送源ID',\n        dstListID: '推送目标ID列表 ；分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 申请加入视频会议\n  applyforAddVideoPush(videoMeetID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_JOIN,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: videoMeetID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 申请退出视频会议\n  applyforQuitVideoPush(videoMeetID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_EXIT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: videoMeetID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 是否同意加入视频会议\n  whetherConsentApplyforAddVideoPush(videoMeetID: any, allow: any) {\n    let data = {\n      cmdID: state.OWO_CMD_VIDEOMEET_START_RESULT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        videoMeetID: videoMeetID,\n        allow: allow, // 2：已经在会议中\n      },\n    };\n    this.ws.send(data);\n  }\n  // PC端响应命令\n  // 视频会议添加成员\n  addArriveVideoPush() {\n    let data = {\n      cmdID: 501103,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        memID: '用户ID',\n        memType: '用户类型',\n        addMemIDList: '添加成员ID列表， ；分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 视频会议删除成员\n  removeArriveVideoPush() {\n    let data = {\n      cmdID: 501105,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        memID: '用户ID',\n        memType: '用户类型',\n        delMemIDList: ' 删除成员ID列表， ；分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.3视频会议开始（CMS-->PC）\n  videoPushBegin() {\n    let data = {\n      cmdID: 501107,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        memID: '用户ID',\n        memType: '用户类型',\n        delMemIDList: ' 删除成员ID列表， ；分隔',\n        videoMeetName: '会议名称',\n        //转发时有效\n        transType: '转发类型，  3：转发_下行UDP， 4：转发_下行TCP',\n        recvIP: '服务端收发数据IP（音视频混合）', //（PC 上传，接收）\n        recvRtpPort: '服务端收发数据rtp端口（音视频混合）',\n        recvRtcpPort: '服务端收发数据rtcp端口（音视频混合）',\n        cameraFlag: '发起人摄像头打开标记', // 1：打开   0：未打开\n        micFlag: '发起人麦克打开标记', //1：打开   0：未打开\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.4视频会议关闭（CMS-->PC）\n  videoPushClose() {\n    let data = {\n      cmdID: 501109,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        memID: '用户ID',\n        memType: '用户类型',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 会议禁言（CMS-->PC）\n  videoPushBanned() {\n    let data = {\n      cmdID: 501115,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        memID: '用户ID',\n        memType: '用户类型',\n        micFlag:\n          ' 功能开关1：禁言功能打开客户端不能讲话 0：禁言功能关闭客户端可以讲话',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.6会议禁听（CMS-->PC）\n  videoPushForbidden() {\n    let data = {\n      cmdID: 501117,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        memID: '用户ID',\n        memType: '用户类型',\n        listenFlag: '禁听开关（1不能听，0 可以听）',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 视频推送（单人__多人）（CMS-->PC）\n  CMSVideoPush() {\n    let data = {\n      cmdID: 501119,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        srcID: '推送视频源ID',\n        //转发时有效\n        transType: '转发类型，  3：转发_下行UDP，4：转发_下行TCP',\n        transIP: '服务端发送数据IP（设备视频流）', //（PC 接收）\n        transRtpPort: '服务端发送数据rtp端口（设备视频流）',\n        transRtcpPort: '服务端发送数据rtcp端口（设备视频流）',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.8视频推送（组）（CMS-->PC）\n  CMSVideoPushgroup() {\n    let data = {\n      cmdID: 501121,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        devID: '手机设备ID',\n        devType: '设备类型',\n        transIP: '转发IP（手机接收目标）',\n        transPort: '转发端口（手机接收目标）（整型）',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.9视频会议成员打开视频（CMS--->PC）\n  CMSMemberOpenVideo() {\n    let data = {\n      cmdID: 501123,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        memID: '点播视频ID号',\n        memType: '用户类型',\n        //\"recvIP\":\"接收IP（流媒体）\",共用音频上传接口\n        //\"recvPort\":接收端口（整型）\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.10视频会议成员关闭视频（CMS--->PC）\n  CMSMemberCloseVideo() {\n    let data = {\n      cmdID: 501125,\n      cmdBody: {\n        videoMeetID: '会议ID',\n        memID: '点播视频ID号',\n        memType: '用户类型',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.11开启视频会议返回命令（CMS--->PC）\n  CMSMemberCloseVideoReturn() {\n    let data = {\n      cmdID: 501127,\n      cmdBody: {\n        sessionID: this.sessionID,\n        videoMeetID: '会议ID',\n        result: '会议开启结果， 1：成功， 0：失败',\n        //（PC上传本地音视频, 接收视频会议音频）\n        //转发时有效\n        transType: '转发类型，  3：转发_下行UDP， 4：转发_下行TCP',\n        recvIP: '服务端接收数据IP（音视频混合）',\n        recvRtpPort: '服务端接收数据rtp端口（音视频混合）',\n        recvRtcpPort: '服务端接收数据rtcp端口（音视频混合）',\n        audio: '音频格式，G711',\n        bits: '采样位数',\n        samp: '采样频率',\n        audioBit: '比特率',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.12视频会议成员打开视频流成功（CMS--->PC）\n  CMSMemberCloseCideoSucceed() {\n    let data = {\n      cmdID: 501129,\n      cmdBody: {\n        sessionID: this.sessionID,\n        videoMeetID: '会议ID',\n        memID: '用户ID',\n        memType: '用户类型',\n        result: '会议开启结果， 1：成功， 0：失败',\n        //转发时有效\n        transType: '转发类型，  3：转发_下行UDP， 4：转发_下行TCP',\n        transIP: '服务端发送数据IP（设备视频流）', //（PC 接收）\n        transRtpPort: '服务端发送数据rtp端口（设备视频流）',\n        transRtcpPort: '服务端发送数据rtcp端口（设备视频流）',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.13手机端离开视频会议（CMS--->PC）\n  CMSMemberCloseVideoLeave() {\n    let data = {\n      cmdID: 501131,\n      cmdBody: {\n        sessionID: this.sessionID,\n        videoMeetID: '会议ID',\n        memID: '用户ID',\n        memType: '用户类型',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 4.1 PC端请求命令\n  // 1.1获取音频会议列表\n  gainAudioConference() {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_GET_LIST,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.2添加设备到音频会议\n  addAudioList(audioMeetID: any, userID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_ADDMEM,\n      cmdBody: {\n        sessionID: this.tenantID,\n        tenantID: this.tenantID,\n        audioMeetID: audioMeetID,\n        userID: userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 删除音频会议中设备\n  removeAudioList(audioMeetID: any, userID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_DELMEM,\n      cmdBody: {\n        sessionID: this.tenantID,\n        tenantID: this.tenantID,\n        audioMeetID: audioMeetID,\n        userID: userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.4开始音频会议\n  beginAudioConference(audioMeetID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_START,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        audioMeetID: audioMeetID,\n      },\n    };\n\n    this.ws.send(data);\n  }\n  // 1.5关闭音频会议\n  closeAudioConference(audioMeetID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_STOP,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        audioMeetID: audioMeetID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 会议成员禁言\n  aduioMemberBanned(audioMeetID: any, userID: any, micFlag: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_MIC_SWITCH,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        audioMeetID: audioMeetID,\n        userID: userID,\n        userType: '添加类型',\n        micFlag: micFlag, //'mic 开关（1开，0 关）'\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.6会议成员禁听\n  aduioMemberForbidden(audioMeetID: any, userID: any, listenFlag: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_LISTEN_SWITCH,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        audioMeetID: audioMeetID,\n        userID: userID,\n        userType: '添加类型',\n        listenFlag: listenFlag,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 创建音频会议\n  addAudioConference(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_CREATE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        audioName: ev.videoName,\n        creater: this.userID,\n        createTime: ev.createTime,\n        member: ev.member,\n        triggerMode: '1',\n        triggerNum: '11',\n        startLimit: '1',\n        talkLimit: ev.talkLimit,\n        taklLimitMem: '',\n        inviteLimit: ev.inviteLimit,\n        callMode: '0',\n        callTimes: ev.callTimes,\n        callInterval: ev.callInterval,\n        recordMode: '0',\n        meetingBeginTime: ev.meetingBeginTime,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.8删除音频会议\n  removeAudioConference(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_DESTROY,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        audioMeetID: ev,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.9修改音频会议\n  modificationAudioConference(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_MODIFY,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        audioMeetID: ev.audioMeetID,\n        audioName: ev.audioName,\n        triggerMode: ev.triggerMode,\n        triggerNum: ev.triggerNum,\n        startLimit: ev.startLimit,\n        talkLimit: ev.talkLimit,\n        taklLimitMem: ev.taklLimitMem,\n        inviteLimit: ev.inviteLimit,\n        callMode: ev.callMode,\n        callTimes: ev.callTimes,\n        callInterval: ev.callInterval,\n        recordMode: ev.recordMode,\n        meetingBeginTime: ev.meetingBeginTime,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 申请加入音频会议（PC --> CMS）\n  applytojoinAudioConference(audioMeetID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_JOIN,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        audioMeetID: audioMeetID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.11申请退出音频会议（PC --> CMS）\n  toquitAudioConference(audioMeetID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_AUDIOMEET_EXIT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        audioMeetID: audioMeetID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // PC端响应命令\n  // 1.1音频会议添加成员（CMS-->PC）\n  CMSAddAudioList() {\n    let data = {\n      cmdID: 502103,\n      cmdBody: {\n        audioMeetID: '会议ID',\n        memID: '用户ID',\n        memType: '用户类型',\n        addMemIDList: '添加成员ID列表， ；分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.2音频会议删除成员（CMS-->PC）\n  CMSRemoveAudioList() {\n    let data = {\n      cmdID: 502105,\n      cmdBody: {\n        audioMeetID: '会议ID',\n        memID: '成员ID， ;分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 音频会议开始（CMS-->PC）\n  // 1.4开始音频会议\n  CMSBeginAudioConference() {\n    let data = {\n      cmdID: 502107,\n      cmdBody: {\n        audioMeetID: '会议ID',\n        audioMeetName: '会议名称',\n        //转发时有效\n        transType: '转发类型，  3：转发_下行UDP，4：转发_下行TCP',\n        recvIP: '服务端收发数据IP（音频流）', //（PC 上传，接收）\n        recvRtpPort: '服务端收发数据rtp端口（音频流）',\n        recvRtcpPort: '服务端收发数据rtcp端口（音频流）',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.4音频会议关闭（CMS-->PC）\n  CMSCloseAudioConference() {\n    let data = {\n      cmdID: 502109,\n      cmdBody: {\n        audioMeetID: '会议ID',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.5会议语音开关（CMS-->PC）\n  CMSAudioConferenceSwitch() {\n    let data = {\n      cmdID: 502115,\n      cmdBody: {\n        audioMeetID: '会议ID',\n        micFlag: 'mic 开关（1开，0 关）',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 会议禁听开关（CMS-->PC）\n  CMSAudioConferenceforbiddenSwitch() {\n    let data = {\n      cmdID: 502117,\n      cmdBody: {\n        audioMeetID: '会议ID',\n        listenFlag: '禁听开关（1不能听，0 可以听）',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.7其他终端申请加入音频会议\n  CMSApplyforAudioConference() {\n    let data = {\n      cmdID: 502119,\n      cmdBody: {\n        srcID: '请求方ID',\n        videoMeetID: '会议ID',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 其他终端申请退出音频会议\n  CMSApplytoAuidoConference() {\n    let data = {\n      cmdID: 502121,\n      cmdBody: {\n        srcID: '请求方ID',\n        audioMeetID: '会议ID',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 对讲组 PC端请求命令\n  // 获取对讲组列表\n  gainTalkbackList() {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_GET_LIST,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n        userType: this.userType,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 添加设备到对讲组\n  addTalkbackList(userID: any, talkGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_ADDMEM,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: userID,\n        talkGroupID: talkGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.3删除对讲组中设备\n  removeTalkbackList(userID: any, talkGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_DELMEM,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupID: talkGroupID,\n        userID: userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.4开始对讲组\n  beginTalkbackList(talkGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_START,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupID: talkGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.5关闭对讲组\n  closeTalkbackList(talkGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_STOP,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupID: talkGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.6获取讲话权限\n  gainTalkbackJurisdiction(talkGroupID: any, videoFlag: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_GET_TALK_LIMITS,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupID: talkGroupID,\n        userID: this.userID,\n        videoFlag: videoFlag,\n        userType: '', //添加类型\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.7释放讲话权限\n  releaseTalkbackJurisdiction(talkGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_FREE_TALK_LIMITS,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupID: talkGroupID,\n        userID: this.userID,\n        userType: '',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.8发送语音\n  sendLanguage(talkGroupID: any, stream: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_SEND_AUDIO,\n      cmdBody: {\n        sessionID: this.sessionID,\n        talkGroupID: talkGroupID,\n        userID: this.userID,\n        audiobuff: stream,\n        audioBuffLen: '', //音频数据长度\n        timeout: '', //超时时间\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.9接收语音\n  receptionLanguage() {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_RECV_AUDIO,\n      cmdBody: {\n        talkGroupID: '对讲组ID',\n        senderID: '语音发送方ID',\n        audiobuff: '音频数据',\n        audioBuffLen: '音频数据长度',\n        timeout: '超时时间',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.10创建对讲组（PC-->CMS）\n  addTalkbackGroup(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_CREATE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupName: ev.talkGroupName,\n        memListID: ev.memListID,\n        creater: this.userID,\n        describe: ev.describe, //不超过25个汉字\n        videoFlag: ev.videoFlag, // \"1\": 支持视频  \"0\"：不支持视频，默认为\"0\"\n      },\n    };\n    this.ws.send(data);\n  }\n  // 删除对讲组（PC-->CMS）\n  removeTalkbackGroup(talkGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_DESTROY,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupID: talkGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.12进入对讲组（PC-->CMS）\n  enterintoTalkbackGroup(talkGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_JOIN,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupID: talkGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.13退出对讲组（PC-->CMS）\n  quitTalkbackGroup(talkGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_EXIT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupID: talkGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 禁话\n  barringTalkbackGroup(userID: any, talkGroupID: any, barringFlag: any) {\n    let data = {\n      cmdID: state.OWO_CMD_TALKGROUP_BARRING,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        talkGroupID: talkGroupID,\n        userID: userID, // \"用户ID列表，; 分隔\",\n        barringFlag: barringFlag, //\"禁话标识：1：开启禁话功能，不可发起抢话0：取消禁话，可以发起\"\n      },\n    };\n    this.ws.send(data);\n  }\n  // PC端响应命令\n  // 1.1设置当前讲话人（CMS --> PC）\n  atpresentTalkback() {\n    let data = {\n      cmdID: 505019,\n      cmdBody: {\n        talkGroupID: '对讲组ID',\n        speakerID: '当前讲话人ID', //（没有讲话人时为“”）\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.2对讲组添加成员（CMS-->PC）\n  talkbackGroupadd() {\n    let data = {\n      cmdID: 503103,\n      cmdBody: {\n        talkGroupID: '对讲组ID',\n        memID: '成员ID， ;分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 对讲组删除成员（CMS-->PC）\n  talkbackGroupRemove() {\n    let data = {\n      cmdID: 503105,\n      cmdBody: {\n        talkGroupID: '对讲组ID',\n        memID: '成员ID， ;分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 对讲组开始（CMS-->PC）\n  talkbackGroupBegin() {\n    let data = {\n      cmdID: 503107,\n      cmdBody: {\n        talkGroupID: '对讲组ID',\n        talkGroupName: '对讲组名称',\n        userID: '用户ID',\n        member: ' 对讲组成员列表，ID',\n        transType: '转发类型，  3：转发_下行UDP，4：转发_下行TCP',\n        transIP: '服务端发送数据IP（设备视频流）', //（PC 接收）\n        transRtpPort: '服务端发送数据rtp端口（设备视频流）',\n        transRtcpPort: '服务端发送数据rtcp端口（设备视频流）',\n        SSRC: ' rtp SSRC字段',\n        audioType: '音频格式，G711（CMS端）',\n        bits: '采样位数',\n        samp: '采样频率',\n        audioBit: '比特率',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.4对讲组关闭（CMS-->PC）\n  talkbackGroupClose() {\n    let data = {\n      cmdID: 503109,\n      cmdBody: {\n        talkGroupID: '对讲组ID',\n      },\n    };\n    this.ws.send(data);\n  }\n  // PC端请求命令\n  // 1.1一对一通讯（PC-->CMS）\n  oneToOneCommunication(\n    dstID: any,\n    msgType: any,\n    msgInfo: any,\n    audioLen?: any\n  ) {\n    let data = {\n      cmdID: state.OWO_CMD_MSGDLG_SEND_MSG,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        srcID: this.userID, //消息源ID\n        dstID: dstID, //消息目标ID\n        msgType: msgType, //'消息类型 1：文字，2:语音， 3：图片， 4：视频， 5：文件'\n        msgInfo: msgInfo, //消息内容（语音、图片、视频、文件时为文件名）\n        audioLen: audioLen, //（秒）语音时长（语音时有效）\n      },\n    };\n\n    this.ws.send(data);\n  }\n  // 1.2创建临时消息组（PC-->CMS）\n  addTemporaryinformation(dialogID: any, dialogName: any, memList: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MSGGROUP_CREATE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: dialogID,\n        dialogName: dialogName,\n        memList: memList,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 删除临时消息组（PC-->CMS）\n  removeTemporaryinformation() {\n    let data = {\n      cmdID: state.OWO_CMD_MSGGROUP_DESTROY,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: '临时组对话ID',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 添加设备到临时消息组（PC-->CMS）\n  addEquipmentTemporaryinformation() {\n    let data = {\n      cmdID: state.OWO_CMD_MSGGROUP_ADDMEM,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: '临时组对话ID',\n        memList: '添加成员ID，; 分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 删除临时消息组中设备（PC-->CMS）\n  removeEquipmentTemporaryinformation() {\n    let data = {\n      cmdID: state.OWO_CMD_MSGGROUP_DELMEM,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: '临时组对话ID',\n        memList: '添加成员ID，; 分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.6临时消息组发送消息（PC-->CMS）\n  temporaryinformationSend(\n    dialogID: any,\n    msgType: any,\n    msgInfo: any,\n    audioLen?: any\n  ) {\n    let data = {\n      cmdID: state.OWO_CMD_MSGGROUP_SEND_MSG,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: dialogID,\n        msgType: msgType,\n        msgInfo: msgInfo,\n        audioLen: audioLen, //（秒）（语音时有效）\n      },\n    };\n    this.ws.send(data);\n  }\n  // 临时消息文件上传下载信息（PC--> CMS\n  temporaryinformationUploading() {\n    let data = {\n      cmdID: state.OWO_CMD_MSGGROUP_FILE_UPDOWN_INFO,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n      },\n    };\n    this.ws.send(data);\n  }\n   //查询消息总数\n   getmessagesum(dialogID: any, msgClass: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MSGDLG_GET_MSG_COUNT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: dialogID, //必填项，srcID_dstID(一对一)/groupID(群组消息)\n        msgClass: msgClass, //0: 一对一消息 1：群组消息\n        // startTime: null, //可选项，格式：%Y-%m-%d %H:%i:%s\n        // endTime: null, //可选项，格式：%Y-%m-%d %H:%i:%s\n        // srcID: null, //可选项，0:标识发送者为：系统\n        // dstID: null, //可选项，接收用户ID或者群组ID\n        // msgType: null, // 1：文字，2:语音， 3：图片， 4：视频， 5：文件\n        // msgInfo: null, //模糊匹配\n      },\n    };\n    this.ws.send(data);\n  }\n  //查询消息记录\n  getmessagerecord(dialogID: any, msgClass: any,offset: any, count: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MSGDLG_GET_MSG_RECORD,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: dialogID, //必填项，srcID_dstID(一对一)/groupID(群组消息)\n        msgClass: msgClass, //0: 一对一消息 1：群组消息\n        // startTime: null, //可选项，格式：%Y-%m-%d %H:%i:%s\n        // endTime: null, //可选项，格式：%Y-%m-%d %H:%i:%s\n        // srcID: null, //可选项，0:标识发送者为：系统\n        // dstID: null, //可选项，接收用户ID或者群组ID\n        // msgType: null, // 1：文字，2:语音， 3：图片， 4：视频， 5：文件\n        // msgInfo: null, //模糊匹配\n        offset: offset.toString(), //查询结果起始位置\n        count: count.toString(), //读取的记录数\n      },\n    };\n    this.ws.send(data);\n  }\n  //1.7.1.获取广播组列表\n  gainbroadcastlist() {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_GET_LIST,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: this.userID,\n        userType: this.userType,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 添加成员到广播组\n  addmenbroadcastlist(broadcastGroupID: any, userID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_ADDMEM,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupID: broadcastGroupID,\n        userID: userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 删除成员到广播组\n  delmenbroadcastlist(userID: any, broadcastGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_DELMEM,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupID: broadcastGroupID,\n        userID: userID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 打开广播组\n  startbroadcastlist(broadcastGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_START,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupID: broadcastGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n\n  // 关闭广播组\n  stopbroadcastlist(broadcastGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_STOP,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupID: broadcastGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 开始广播组\n  broadcaststart(broadcastGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_BROADCAST_START,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupID: broadcastGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 停止广播组\n  broadcaststop(broadcastGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_BROADCAST_STOP,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupID: broadcastGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n\n  // 创建广播组\n  createBroadcastGroup(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_CREATE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupName: ev.broadcastName,\n        isTemp: ev.isTemp, //\"是否临时广播组\",1: 临时广播组  0：固定广播组\n        creater: this.userID,\n        describe: ev.describe,\n        memListID: ev.memListID,\n      },\n    };\n    this.ws.send(data);\n  }\n  //  删除广播组\n  destrpyBroadcastGroup(broadcastGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_DESTROY,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupID: broadcastGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 进入广播组\n  joinBroadcastGroup(broadcastGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_JOIN,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupID: broadcastGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 退出广播组\n  exitBroadcastGroup(broadcastGroupID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_BROADCASTGROUP_EXIT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        broadcastGroupID: broadcastGroupID,\n      },\n    };\n    this.ws.send(data);\n  }\n\n  // PC端响应命令\n  // 1.1一对一通讯（接收消息）（CMS --> PC）\n  CMSOneToOneCommunication() {\n    let data = {\n      cmdID: 505031,\n      cmdBody: {\n        srcID: '消息源ID',\n        dstID: '消息目标ID',\n        msgType: '消息类型 1：文字，2:语音， 3：图片， 4：视频， 5：文件',\n        msgInfo: '消息内容',\n        audioLen: '语音时长', //（秒）（语音时有效）\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.8创建临时消息组（CMS --> PC）\n  CMSAddTemporaryinformation() {\n    let data = {\n      cmdID: 505033,\n      cmdBody: {\n        tenantID: '租户ID,(非saas模式为0）',\n        dialogID: '临时组对话ID',\n        dialogName: '临时组名称',\n        memList: '添加成员ID，; 分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.9删除临时消息组（CMS --> PC）\n  CMSRemoveTemporaryinformation() {\n    let data = {\n      cmdID: 505035,\n      cmdBody: {\n        tenantID: '租户ID,(非saas模式为0）',\n        dialogID: '临时组对话ID',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.10添加设备到临时消息组（CMS --> PC）\n  CMSAddEquipmenttemporaryinformation() {\n    let data = {\n      cmdID: 505037,\n      cmdBody: {\n        dialogID: '临时组ID',\n        memList: '添加成员ID，; 分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 删除临时消息组中设备（CMS --> PC）\n  CMSRemoveEquipmenttemporaryinformation() {\n    let data = {\n      cmdID: 505039,\n      cmdBody: {\n        dialogID: '临时组ID',\n        memList: '删除成员ID，; 分隔',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.12临时消息组接收消息（CMS --> PC）\n  CMSTemporaryinformationSend() {\n    let data = {\n      cmdID: 505041,\n      cmdBody: {\n        sessionID: '会话ID',\n        srcID: '消息源ID',\n        dialogID: '临时组ID',\n        dialogName: '临时组名称',\n        memList: '添加成员ID，; 分隔',\n        msgType: '消息类型 1：文字，2:语音， 3：图片， 4：视频， 5：文件',\n        msgInfo: '消息内容',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 一对一音视频\n  // 请求聊天（PC--->CMS）\n  requestChat(ev: any, type: any) {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_REQUEST,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        srcID: this.userID,\n        dstID: ev,\n        requestType: type, //'1:音频  2：音视频'\n        timeout: '5000', //'请求超时时间'\n        video: 'H264', //'视频格式,H264, H265'\n        resolution: cache.resolution, //' 分辨率1080P,720p,D1,2CIF,CIF,QCIF'\n        bitrate: cache.coderate, //'码率（整型'\n        framerate: cache.fps, //' 帧率（整型）',\n        bitrateMode: cache.transfer, //码率传输模式\n        audio: 'AAC', //'音频格式，G711'\n        bits: '8000', //'采样位数（整型）'\n        samp: '16', //'采样频率（整型）'\n        audioBit: '0', //'比特率'\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.2传输类型确认消息（PC-->CMS）\n  //   1）直连方式， 返回直连是否成功\n  //  （2）穿透方式，返回与对端打洞 是否成功\n  //  （3）转发_下行UDP， 返回本地接收IP，端口号\n  //  （4）转发_下行TCP，不需要返回IP，端口号\n\n  transferType() {\n    let data = {\n      cmdID: 507019,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: '本次聊天会话ID',\n        transType: '',\n        //'传输类型，1：直连， 2：穿透，3：转发_下行UDP，4：转发_下行TCP',\n        transFlag: '传输成功失败标记 1:成功，0：失败', //（传输类型1,2 时有效）\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.3请求聊天__返回结果（CMS--> PC）\n  requestchatReturn(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_REQUEST_BK,\n      cmdBody: {\n        sessionID: this.sessionID,\n        permission: ev.permission, // 3:对方正在通话中， 4：无应答\n        dialogID: ev.dialogID,\n        //转发时有效\n        recvIP: ev.recvIP, //（PC上传）\n        recvRtpPort: ev.recvRtpPort,\n        recvRtcpPort: ev.recvRtcpPort,\n        video: 'H264',\n        resolution: cache.resolution, //' 分辨率1080P,720p,D1,2CIF,CIF,QCIF'\n        bitrate: cache.coderate, //'码率（整型'\n        fps: cache.fps, //' 帧率（整型）',\n        bitrateMode: cache.transfer, //码率传输模式\n        audio: 'AAC',\n        bits: '8000',\n        samp: '16',\n        audioBit: '0',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.4主动结束聊天（PC--->CMS）\n  initiativeCloseChat(dialogID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_CLOSE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: dialogID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.5对方请求聊天（CMS--->PC）\n  adverseRequestChat() {\n    let data = {\n      cmdID: 507005,\n      cmdBody: {\n        sessionID: '会话ID',\n        srcID: '请求方ID',\n        requestType: '1:音频  2：音视频',\n        timeout: '请求超时时间',\n        dialogID: '本次聊天会话ID',\n        transType:\n          '传输类型，1：直连， 2：穿透， 3：转发_下行UDP，4：转发_下行TCP',\n        //转发时有效\n        recvIP: '服务端接收数据IP（音视频混合）', //（PC上传）\n        recvRtpPort: '服务端接收数据rtp端口（音视频混合）',\n        recvRtcpPort: '服务端接收数据rtcp端口（音视频混合）',\n\n        video: '视频格式,H264, H265',\n        resolution: ' 分辨率1080P,720p,D1,2CIF,CIF,QCIF',\n        bitrate: '码率（整型）',\n        fps: '帧率（整型）',\n        audio: '音频格式，G711',\n        bits: '采样位数（整型）',\n        samp: '采样频率（整型）',\n        audioBit: '比特率',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 对方请求聊天__返回结果（PC--->CMS）\n  adverseRequestChatrutern() {\n    let data = {\n      cmdID: 507105,\n      cmdBody: {\n        sessionID: '会话ID',\n        tenantID: '租户ID,(非saas模式为0）',\n        dialogID: '本次聊天会话ID',\n        permission: '1:同意聊天， 2：拒绝聊天', // 3：通话中\n        transType:\n          '传输类型，1：直连， 2：穿透， 3：转发_下行UDP，4：转发_下行TCP',\n        //传输类型为4时，以下字段有效。\n        recvIP: '接收数据IP（客户端接收数据IP）',\n        recvRtpPort: '服务端接收数据rtp端口（音视频混合）',\n        recvRtcpPort: '服务端接收数据rtcp端口（音视频混合）',\n        video: '视频格式,H264, H265',\n        resolution: ' 分辨率1080P,720p,D1,2CIF,CIF,QCIF',\n        bitrate: '码率（整型）',\n        fps: ' 帧率（整型）',\n        audio: '音频格式，G711',\n        bits: '采样位数（整型）',\n        samp: '采样频率（整型）',\n        audioBit: '比特率',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.1对方结束聊天（CMS--->PC）\n  adverseinitiativeCloseChat() {\n    let data = {\n      cmdID: 507007,\n      cmdBody: {\n        sessionID: '会话ID',\n        dialogID: '本次聊天会话ID',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 获取用户通话详情（PC --->CMS）\n  gainUserCommunicate() {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_GET_INFO,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userID: '用户ID', //（当前通话成员ID）\n      },\n    };\n    this.ws.send(data);\n  }\n  // 强插（PC --->CMS）\n  strongPlug(dialogID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_BARGE_IN,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: dialogID, //'会话ID'（需要强插的会话ID）\n        // insertFlag: insertFlag,//'强插标记:1:强插 0:取消强插'\n        video: 'H264', // \"视频格式,H264, H265\",\n        resolution: cache.resolution, // 分辨率1080P,720p,D1,2CIF,CIF,QCIF\"\n        bitrate: cache.coderate, //码率（整型）,\n        fps: cache.fps, //帧率（整型）,\n        audio: 'AAC', //\"音频格式，G711\",\n        bits: '8000', //采样位数（整型），\n        samp: '16', //采样频率（整型），\n        audioBit: '0', //比特率\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.4强拆（PC --->CMS）\n  tollbreakDown(dialogID: any, userid: any) {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_INTERCEPT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: dialogID, //'会话ID（需要强拆的会话ID）\n        interceptUser: userid,\n        video: 'H264', // \"视频格式,H264, H265\",\n        resolution: cache.resolution, // 分辨率1080P,720p,D1,2CIF,CIF,QCIF\"\n        bitrate: cache.coderate, //码率（整型）,\n        fps: cache.fps, //帧率（整型）,\n        audio: 'AAC', //\"音频格式，G711\",\n        bits: '8000', //采样位数（整型），\n        samp: '16', //采样频率（整型），\n        audioBit: '0', //比特率\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.5监听（PC --->CMS）\n  monitor(dialogID: any, listenFlag: any) {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_MONITOR,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: dialogID, //'会话ID'（需要强拆的会话ID）\n        listenFlag: listenFlag, //  1开始，0结束\n        video: 'H264', // \"视频格式,H264, H265\",\n        resolution: cache.resolution, // 分辨率1080P,720p,D1,2CIF,CIF,QCIF\"\n        bitrate: cache.coderate, //码率（整型）,\n        fps: cache.fps, //帧率（整型）,\n        audio: 'AAC', //\"音频格式，G711\",\n        bits: '8000', //采样位数（整型），\n        samp: '16', //采样频率（整型），\n        audioBit: '0', //比特率\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.6禁话（PC --->CMS）\n  confidence(userID: any, speakFlag: any) {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_BARRING,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        barringUser: userID, //（需要禁话的用户ID）\n        barringFlag: speakFlag, //'禁话标记：1：开启禁话功能，不可发起语音 0：取消禁话，可以发起'\n      },\n    };\n    this.ws.send(data);\n  }\n  // 1.7转换一对一传输模式（服务端主动发送客户端）\n  // 返回一对一传输结果：（PC--->cms）\n  // （3）转发_下行UDP\n  // （4）转发_下行TCP\"\n  transformOneToOne() {\n    let data = {\n      cmdID: 507021,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: '本次聊天会话ID',\n        transType:\n          '传输类型，1：直连， 2：穿透，3：转发_下行UDP，4：转发_下行TCP',\n        //转发时有效\n        recvIP: '服务端接收数据IP（音视频混合）', //（PC上传）\n        recvRtpPort: '服务端接收数据rtp端口（音视频混合）',\n        recvRtcpPort: '服务端接收数据rtcp端口（音视频混合）',\n      },\n    };\n    this.ws.send(data);\n  }\n  // 转接\n  changeover(userID: any, dialogID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_TRANSFER,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        transferUser: userID, //转接的用户ID\"\n        dialogID: dialogID, //\"会话ID\"（需要转接的会话ID）,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 代答\n  pickup(dialogID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_CHAT_PICKUP,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        dialogID: dialogID, //\"会话ID\"（需要转接的会话ID）,\n        video: 'H264', // \"视频格式,H264, H265\",\n        resolution: cache.resolution, // 分辨率1080P,720p,D1,2CIF,CIF,QCIF\"\n        bitrate: cache.coderate, //码率（整型）,\n        fps: cache.fps, //帧率（整型）,\n        audio: 'AAC', //\"音频格式，G711\",\n        bits: '8000', //采样位数（整型），\n        samp: '16', //采样频率（整型），\n        audioBit: '0', //比特率\n      },\n    };\n    this.ws.send(data);\n  }\n  // 广播\n  broadcast(userList: any) {\n    let data = {\n      cmdID: 507027,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userList: userList, //\"接收广播的用户列表\"（逗号分隔）\n      },\n    };\n    this.ws.send(data);\n  }\n  // 静态标注（新增）\n  staticLabelAdd(\n    id: any,\n    type: any,\n    name: any,\n    longitude: any,\n    latitude: any,\n    describe: any,\n    oid: any\n  ) {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_STATIC_POINT_ADD,\n      cmdBody: {\n        sessionID: this.sessionID,\n        ID: id, //静态标注点\n        type: type, //静态标注点类型\n        name: name, //静态标注点名称\n        longitude: longitude, //（小数点后，保留6位， 例如：39.945721）\n        latitude: latitude, //（小数点后，保留6位， 例如：39.945721）\n        describe: describe, //描述\n        oid: oid, //\n      },\n    };\n    this.ws.send(data);\n  }\n  // 静态标注（修改）\n  staticLabelModification(\n    id: any,\n    type: any,\n    name: any,\n    longitude: any,\n    latitude: any,\n    describe: any,\n    oid: any\n  ) {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_STATIC_POINT_MODIFY,\n      cmdBody: {\n        sessionID: this.sessionID,\n        ID: id, //静态标注点\n        type: type, //静态标注点类型\n        name: name, //静态标注点名称\n        longitude: longitude, //（小数点后，保留6位， 例如：39.945721）\n        latitude: latitude, //（小数点后，保留6位， 例如：39.945721）\n        describe: describe, //描述\n        oid: oid,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 静态标注（删除）\n  staticLabelDelete(id: any, type: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_STATIC_POINT_DEL,\n      cmdBody: {\n        sessionID: this.sessionID,\n        ID: id,\n        type: type,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 静态标注（获取）\n  staticLabel() {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_STATIC_POINT_GET,\n      cmdBody: {\n        sessionID: this.sessionID,\n      },\n    };\n    this.ws.send(data);\n  }\n  sendOffer(ev: any) {\n    if (ev.audioDirection) {\n      let data = {\n        cmdID: state.OWO_CMD_RTC_OFFER,\n        cmdBody: {\n          channelID: ev.channelID,\n          sessionID: this.sessionID,\n          tenantID: this.tenantID,\n          srcID: this.userID,\n          dstID: 'mediaserver',\n          SDP: ev.SDP,\n          audioDirection: ev.audioDirection,\n          videoDirection: ev.videoDirection,\n        },\n      };\n\n      this.ws.send(data);\n    } else {\n      let data = {\n        cmdID: state.OWO_CMD_RTC_OFFER,\n        cmdBody: {\n          channelID: ev.channelID,\n          sessionID: this.sessionID,\n          tenantID: this.tenantID,\n          srcID: this.userID,\n          dstID: 'mediaserver',\n          SDP: ev.SDP,\n        },\n      };\n      this.ws.send(data);\n    }\n  }\n  gainGPS(memID: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_GPS_GET,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        memID: memID,\n      },\n    };\n    this.ws.send(data);\n  }\n  // 获取用户轨迹\n  gaintrack(userID: any, startTime: any, endTime: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_GPS_TRACK,\n      cmdBody: {\n        sessionID: this.sessionID,\n        userID: userID,\n        startTime: startTime, //轨迹开始时间\n        endTime: endTime, //轨迹结束时间\n      },\n    };\n    this.ws.send(data);\n  }\n  //添加电子围栏\n  addElectronicFence(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_ELECTRIC_FENCE_ADD,\n      cmdBody: {\n        sessionID: this.sessionID,\n        ID: ev.ID,\n        type: ev.type, //1 多边形 2 矩形 3 圆形 4 路径\n        name: ev.name,\n        // 点坐标集合，对于多边形和矩形为顶点坐标；对于圆形为中心点坐标；对于路径为折点坐标\n        pointList: ev.pointList, // 对于圆形 只有一个点（中心点）\n        radius: ev.radius, // 只对圆形有效\n        extendWidth: ev.extendWidth, // 只对路径有效\n        valid: ev.valid, //1 启用   0 禁用\n        timeExclude: ev.timeExclude, //1 排除   0 包含\n        // startTime: ev.startTime,\n        // endTime: ev.endTime,\n        timeList: ev.timeList,\n        userExclude: ev.userExclude, //1 排除   0 包含\n        userList: ev.userList, //用户ID之间以  ; 分隔。\n        areaExclude: ev.areaExclude, //1 排除（离开）   0 包含（进入）\n        creater: this.userID, //创建者用户ID\n      },\n    };\n    this.ws.send(data);\n  }\n  // 修改围栏\n  modifyElectronicFence(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_ELECTRIC_FENCE_MODIFY,\n      cmdBody: {\n        sessionID: this.sessionID,\n        ID: ev.ID,\n        type: ev.type, //1 多边形 2 矩形 3 圆形 4 路径\n        name: ev.name,\n        pointList: ev.pointList, // 对于圆形 只有一个点（中心点）\n        radius: ev.radius, // 只对圆形有效\n        extendWidth: ev.extendWidth, // 只对路径有效\n        valid: ev.valid, //1 启用   0 禁用\n        timeExclude: ev.timeExclude, //1 排除   0 包含\n        timeList: ev.timeList,\n        userExclude: ev.userExclude, //1 排除   0 包含\n        userList: ev.userList, //用户ID之间以  ; 分隔。\n        areaExclude: ev.areaExclude, //1 排除（离开）   0 包含（进入）\n        creater: this.userID, //创建者用户ID\n      },\n    };\n    this.ws.send(data);\n  }\n  // 删除电子围栏\n  delElectronicFence(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_ELECTRIC_FENCE_DEL,\n      cmdBody: {\n        sessionID: this.sessionID,\n        ID: ev.ID,\n        type: ev.type, //1 多边形 2 矩形 3  圆形 4 路径\n      },\n    };\n    this.ws.send(data);\n  }\n  // 获取电子围栏\n  getElectronicFence() {\n    let data = {\n      cmdID: state.OWO_CMD_MAP_ELECTRIC_FENCE_GET,\n      cmdBody: {\n        sessionID: this.sessionID,\n      },\n    };\n    this.ws.send(data);\n  }\n  sendAnswer(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_RTC_ANSWER,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        srcID: this.userID,\n        dstID: 'mediaserver',\n        Answer: ev.Answer,\n      },\n    };\n    this.ws.send(data);\n  }\n  sendCandidate(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_RTC_CANDIDATE,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        srcID: this.userID,\n        dstID: 'mediaserver',\n        Candidate: ev.Candidate,\n      },\n    };\n    this.ws.send(data);\n  }\n  testGetStoreFileCount(userName: any, startTime: any, endTime: any) {\n    let data = {\n      cmdID: state.OWO_CMD_STORE_GET_FILE_COUNT,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userName: userName,\n        startTime: startTime,\n        endTime: endTime,\n      },\n    };\n    this.ws.send(data);\n  }\n  testGetStoreFileList(\n    userName: any,\n    startTime: any,\n    endTime: any,\n    offset: any,\n    count: any\n  ) {\n    let data = {\n      cmdID: state.OWO_CMD_STORE_GET_FILE_RECORD,\n      cmdBody: {\n        sessionID: this.sessionID,\n        tenantID: this.tenantID,\n        userName: userName,\n        startTime: startTime,\n        endTime: endTime,\n        offset: offset.toString(), //开始条数\n        count: count.toString(), //结束条数\n      },\n    };\n    this.ws.send(data);\n  }\n  openProjectionScreen(ev: any) {\n    let data = {\n      cmdID: state.OWO_CMD_SCREEN_PUSH_START,\n      cmdBody: {\n        serviceType: ev.serviceType, //1视频点播/回传 2视频呼叫 3视频会议 4 共享桌面 业务类型\n        serviceID: '', //依据业务类型，取标识该业务全局唯一标识的ID值，如点播ID，对话ID，会议ID业务ID\n        srcType: ev.srcType, //1 用户 2 设备 3 桌面 视频源类型\n        srcID: ev.srcID, //桌面ID为0 视频源用户或者设备ID\n        x1: ev.x1.toString(), //大屏范围左上角x坐标值\n        y1: ev.y1.toString(), //大屏范围左上角y坐标值\n        x2: ev.x2.toString(), //大屏范围左上角x坐标值\n        y2: ev.y2.toString(), //大屏范围右下角y坐标值\n      },\n    };\n    this.ws.send(data);\n  }\n  closeProjectionScreen() {\n    let data = {\n      cmdID: state.OWO_CMD_SCREEN_PUSH_STOP,\n      cmdBody: {\n        serviceType: '', //1视频点播/回传 2视频呼叫 3视频会议 4 共享桌面 业务类型\n        serviceID: '', //依据业务类型，取标识该业务全局唯一标识的ID值，如点播ID，对话ID，会议ID业务ID\n        srcType: '', //1 用户 2 设备 3 桌面 视频源类型\n        srcID: '', //桌面ID为0 视频源用户或者设备ID\n        x1: '', //大屏范围左上角x坐标值\n        y1: '', //大屏范围左上角y坐标值\n        x2: '', //大屏范围左上角x坐标值\n        y2: '', //大屏范围右下角y坐标值\n      },\n    };\n    this.ws.send(data);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { RxService } from '../rtc/rx.service';\n@Injectable({\n  providedIn: 'root',\n})\nexport class ResourceService {\n  userlist: any = ''; //用户列表\n  userType: any = ''; //用户状态列表\n  equipmentlist: any = ''; //所属设备列表\n  equipmentstact: any = ''; //所属设备列表状态\n  talkGroupList: any = ''; //对讲组列表\n  videoMeetList: any = ''; //视频组列表\n  audioMeetList: any = ''; //音频组列表\n  broadcastList: any = ''; //广播组列表\n  // module = {\n  //   //视频模块\n  //   video: {\n  //     enable: 0, //功能模块支持\n  //   },\n  //   //群组\n  //   group: {\n  //     enable: 0, //功能模块支持\n  //     videoTalk: 0, //支持视频群组对讲\n  //     message: 0, //支持群发消息\n  //   },\n  //   //个人\n  //   person: {\n  //     enable: 0, //功能模块支持\n  //     message: 0, //支持即时消息\n  //     audioCall: 0, //支持音频呼叫\n  //     videoCall: 0, //支持视频呼叫\n  //     vod: 0, //支持视频点播\n  //     data: 0, //支持传感器数据上传\n  //     multiSend: 0, //支持群发消息\n  //     multiCall: 0, //支持群呼\n  //   },\n  //   //摄像头设备\n  //   device: {\n  //     enable: 0, //功能模块支持\n  //     control: 0, //支持摄像头控制\n  //   },\n  //   //会议\n  //   meeting: {\n  //     enable: 0, //功能模块支持\n  //     audioMeeting: 0, //支持音频会议\n  //     videoMeeting: 0, //支持视频会议\n  //   },\n  //   //广播\n  //   broadcast: {\n  //     enable: 0, //功能模块支持\n  //     videoTalk: 0, //支持视频群组对讲\n  //   },\n  //   //地图\n  //   map: {\n  //     enable: 0, //功能模块支持\n  //     person: 0, //显示单兵位置\n  //     device: 0, //显示设备位置\n  //     track: 0, //支持查询轨迹\n  //     trend: 0, //支持趋势标注\n  //     mark: 0, //支持静态标注\n  //     fence: 0, //支持电子围栏\n  //   },\n  //   //大屏\n  //   screen: {\n  //     enable: 0, //功能模块支持\n  //   },\n  //   //预案\n  //   plan: {\n  //     enable: 0, //功能模块支持\n  //   },\n  //   //历史\n  //   history: {\n  //     enable: 0, //功能模块支持\n  //   },\n  //   //告警\n  //   alarm: {\n  //     enable: 0, //功能模块支持\n  //   },\n  //   //数据\n  //   data: {\n  //     enable: 0, //功能模块支持\n  //   },\n  // };\n  module = {\n    //视频模块\n    video: {\n      enable: 0, //功能模块支持\n    },\n    //群组\n    group: {\n      enable: 0, //功能模块支持\n      videoTalk: 0, //支持视频群组对讲\n      message: 0, //支持群发消息\n    },\n    //个人\n    person: {\n      enable:0, //功能模块支持\n      message: 0, //支持即时消息\n      audioCall: 0, //支持音频呼叫\n      videoCall: 0, //支持视频呼叫\n      vod: 0, //支持视频点播\n      data: 0, //支持传感器数据上传\n      multiSend: 0, //支持群发消息\n      multiCall:0, //支持群呼\n    },\n    //摄像头设备\n    device: {\n      enable: 0, //功能模块支持\n      control: 0, //支持摄像头控制\n    },\n    //会议\n    meeting: {\n      enable:0, //功能模块支持\n      audioMeeting: 0, //支持音频会议\n      videoMeeting:0, //支持视频会议\n    },\n    //广播\n    broadcast: {\n      enable: 0, //功能模块支持\n      videoTalk: 0, //支持视频群组对讲\n    },\n    //地图\n    map: {\n      enable:0, //功能模块支持\n      person:0, //显示单兵位置\n      device:0, //显示设备位置\n      track: 0, //支持查询轨迹\n      trend: 0, //支持趋势标注\n      mark:0, //支持静态标注\n      fence: 0, //支持电子围栏\n    },\n    //大屏\n    screen: {\n      enable: 0, //功能模块支持\n    },\n    //预案\n    plan: {\n      enable:0, //功能模块支持\n    },\n    //历史\n    history: {\n      enable: 0, //功能模块支持\n    },\n    //告警\n    alarm: {\n      enable: 0 //功能模块支持\n    },\n    //数据\n    data: {\n      enable: 0, //功能模块支持\n    },\n  };\n  // featureArray: any = new Array(); //静态标注列表\n  constructor(private rx: RxService) {}\n  gain() {\n    this.rx.gainList(); //获取所属设备列表\n    setTimeout(() => {\n      this.rx.gainState(); //获取状态列表\n    }, 200);\n    setTimeout(() => {\n      //获取设备列表\n      this.rx.equipmentList();\n    }, 200);\n    setTimeout(() => {\n      this.rx.loadcache();\n    }, 200);\n    setTimeout(() => {\n      this.rx.gainTalkbackList(); // 获取对讲组列表\n    }, 200);\n    setTimeout(() => {\n      this.rx.staticLabel(); //地图静态标注获取\n    }, 200);\n\n    setTimeout(() => {\n      //获取广播组\n      this.rx.gainbroadcastlist();\n    }, 200);\n    // setInterval(() => {\n    //   this.rx.gainList(); \n    // }, 1000);\n    setInterval(() => {\n      //获取列表状态\n      // 获取列表状态\n      // this.rx.gainAudioConference(); //获取音频会议列表\n      this.rx.gainbroadcastlist();\n      // this.rx.viodeList(); //获取视频会议列表\n      this.rx.gainState();\n      this.rx.gainGPS(this.gainalllist());\n    }, 3000);\n  }\n  gainalllist() {\n    let userall = '';\n    for (let i = 0; i < this.userlist.childs.length; i++) {\n      userall += this.userlist.childs[i].info.userID + ';';\n    }\n    return userall;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { ResourceService } from '../protocol/resource/resource.service';\n@Injectable({\n  providedIn: 'root',\n})\nexport class OverallService {\n  constructor(private datastate: ResourceService) {}\n  large = 0;//大屏模式选择\n  persongroup= 0;//个人模式选择\n  equipmentgroup= 0;//设备模式选择\n\n  // 全局控制右侧菜单栏显示隐藏\n  subject = new Subject<boolean>();\n  sendsider$: Observable<boolean> = this.subject.asObservable();\n  sendsider(message: boolean) {\n    this.subject.next(message);\n  }\n  // 控制输入时空格不能说话\n  blanksubject = new Subject<boolean>();\n  blanksendsider$: Observable<boolean> = this.blanksubject.asObservable();\n  blanksendsider(blank: boolean) {\n    this.blanksubject.next(blank);\n  }\n  //视频点播\n  plantingsubject = new Subject<any>();\n  plantingsendsider$: Observable<any> = this.plantingsubject.asObservable();\n  plantingsendsider(planting: any) {\n    this.plantingsubject.next(planting);\n  }\n\n  // string转[]\n  trun(ev: any) {\n    let arr = ev.split(';');\n    for (let i = 0; i < arr.length; i++) {\n      if (arr[i] == '' || typeof arr[i] == 'undefined') {\n        arr.splice(i, 1);\n        i = i - 1;\n      }\n    }\n    return arr;\n  }\n  //判断用户是否在列表\n  judgeuser(value: any) {\n    let judge = false;\n    this.datastate.userlist.childs.forEach((element: any) => {\n      if (element.info.userName != undefined) {\n        if (element.info.userName == value) {\n          // 判断条件\n          judge = true;\n        }\n      }\n    });\n    return judge;\n  }\n  // 判断用户状态\n  judgeuserstact(ev: any) {\n    let devStatus;\n    this.datastate.userType.forEach((element: any) => {\n      if (element.userName == ev) {\n        // 判断条件\n        devStatus = element.devStatus;\n      }\n    });\n    return devStatus;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { cache } from './cache';\nimport { RxService } from './rx.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n@Injectable({\n  providedIn: 'root',\n})\nexport class AvService {\n  // callout 1本机拨打 2 cms呼入\n  incominglist: any[] = []; //呼入呼出电话列表\n  incoming: any = new Subject<any>();\n  incoming$: Observable<any> = this.incoming.asObservable();\n  chatlist: any[] = []; //左侧正在通话列表\n  chat: any = new Subject<any>();\n  chat$: Observable<any> = this.chat.asObservable();\n  onevideolist: any = [\n    {\n      wang: 1,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 2,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 3,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 4,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 5,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 6,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 7,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 8,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 9,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 10,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 11,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 12,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 13,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 14,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 15,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n    {\n      wang: 16,\n      show: false,\n      hascall: false,\n      pushshow: false,\n      dstID: '',\n      type: '0',\n    },\n  ]; //视频列表\n  onevideo: any = new Subject<any>();\n  onevideo$: Observable<any> = this.onevideo.asObservable();\n  videoshow: any = new Subject<any>();\n  videoshow$: Observable<any> = this.videoshow.asObservable();\n  videolist: any[] = []; //正在视频列表\n  videolocal: any = new Subject<any>();\n  videolocal$: Observable<any> = this.videolocal.asObservable();\n  meetinglist: any[] = []; //会议列表\n  meeting: any = new Subject<any>();\n  meeting$: Observable<any> = this.meeting.asObservable();\n  cutmeeting: any;\n  cutmeetting: any = new Subject<any>();\n  cutmeetting$: Observable<any> = this.cutmeetting.asObservable();\n  cutpage: any = new Subject<any>();//切换页面\n  cutpage$: Observable<any> = this.cutpage.asObservable();\n  transmitactive: any = new Subject<any>();//选择正在开启的视频\n  transmitactive$: Observable<any> = this.transmitactive.asObservable();\n  cuthomepage:any= new Subject<any>();\n  cuthomepage$: Observable<any> = this.cuthomepage.asObservable();\n  constructor(private rx: RxService, private message: NzMessageService) {}\n  person:any = new Subject<any>()//个人操作\n  person$: Observable<any> = this.person.asObservable();\n  personstatelist:any//个人正在业务列表\n  personstate:any = new Subject<any>()\n  personstate$: Observable<any> = this.personstate.asObservable();\n\n  changeoverlist:any//转接\n  changeover:any = new Subject<any>()\n  changeover$: Observable<any> = this.changeover.asObservable();\n\n  monitor:any = new Subject<any>()\n  monitor$: Observable<any> = this.monitor.asObservable();\n  \n  override:any = new Subject<any>()\n  override$: Observable<any> = this.override.asObservable();\n  titleactive:any = 0;//功能页面切换\n  overridesider(message: any) {\n    this.override.next(message);\n  }\n  monitorsider(message: any) {\n    this.monitor.next(message);\n  }\n  videoshowsider(message: any) {\n    this.videoshow.next(message);\n  }\n  onevideosider(message: any) {\n    this.onevideo.next(message);\n  }\n  sendsider(message: any) {\n    this.incoming.next(message);\n  }\n  addition(message: any) {\n    this.chat.next(message);\n  }\n  sendmeeting(message: any) {\n    this.meeting.next(message);\n  }\n  sendcutmeetting(message: any) {\n    this.cutmeetting.next(message);\n  }\n  sendcutpage(message: any) {\n    this.cutpage.next(message);\n  }\n  sendcutactive(message: any) {\n    this.transmitactive.next(message);\n  }\n  sendcuthomepage(message: any) {\n    this.cuthomepage.next(message);\n  }\n  sendvideolocal(message: any){\n    this.videolocal.next(message);\n  }\n  sendperson(message: any){\n    this.person.next(message);\n  }\n  sendpersonstate(message: any){\n    this.personstate.next(message);\n  }\n  sendchangeover(message: any){\n    this.changeover.next(message);\n  }\n  callonevideo(ev: any) {\n    // 拨打视频\n    if (this.judgephone(ev) == true) {\n      // console.log('已经拨打了');\n      this.message.create('warning', '已在通话列表');\n    } else {\n      let dstID = ev;\n      let cmschat = {\n        phonetype: 2,\n        userName: dstID,\n        cmschat: {},\n        callout: '1',\n      };\n      this.callVideo(cmschat);\n      let type = '2';\n      this.rx.requestChat(dstID, type);\n    }\n  }\n  callonevoice(ev: any) {\n    if (this.judgephone(ev) == true) {\n      // console.log('已经拨打了');\n      this.message.create('warning', '已在通话列表');\n    } else {\n      let cmschat = {\n        phonetype: 1,\n        userName: ev,\n        cmschat: {},\n        callout: '1',\n      };\n      this.callVoice(cmschat);\n      // console.log('打语音');\n      let type = '1';\n      this.rx.requestChat(ev, type);\n    }\n  }\n  callVoice(ev: any) {\n    this.incominglist.push(ev);\n    this.sendsider(this.incominglist);\n  }\n  callVideo(ev: any) {\n    this.incominglist.push(ev);\n    this.sendsider(this.incominglist);\n  }\n  adddialogID(ev: any) {\n    for (let i = 0; i < this.incominglist.length; i++) {\n      if (this.incominglist[i].userName == ev.dstID) {\n        this.incominglist[i].cmschat.dialogID = ev.dialogID;\n      }\n    }\n    this.sendsider(this.incominglist);\n  }\n  addchat(ev: any) {\n    for (let i = 0; i < this.incominglist.length; i++) {\n      if (this.incominglist[i].cmschat.dialogID == ev.dialogID) {\n        this.incominglist[i].cmschat = ev;\n        this.clearactive()\n        this.incominglist[i].active = true;    \n        this.sendcuthomepage({data:'0'})\n        this.chatlist.push(this.incominglist[i]); \n        if (this.incominglist[i].phonetype == '2') {  \n          this.addonevideo(this.incominglist[i]); \n          this.addition(this.chatlist);\n          this.incominglist.splice(i, 1);\n          i--;\n        } else {\n          this.addition(this.chatlist);\n          this.incominglist.splice(i, 1);\n          i--;\n        }\n      }\n    }\n  }\n  addchatdata(ev:any){\n    let data:any ={\n      active: true,\n      cmschat:ev,\n      phonetype:ev.requestType,\n      userName:ev.srcID,\n      // callout: '1',\n    }\n    this.chatlist.push(data); \n    if (ev.requestType == '2') {\n      this.addonevideo(data); \n    } \n    this.addition(this.chatlist);\n  }\n  \n  addchatmonitor(ev:any){\n    let data:any ={\n      active: true,\n      cmschat:ev,\n      phonetype:'5',\n      userName:ev.srcID+','+ev.dstID\n    }\n    this.chatlist.push(data); \n    this.addition(this.chatlist);\n  }\n  addchatoverride(ev:any){\n    let data:any ={\n      active: true,\n      cmschat:ev,\n      phonetype:'6',\n      userName:ev.srcID+','+ev.dstID+','+ev.bargeinUser\n    }\n    this.chatlist.push(data); \n    this.addition(this.chatlist);\n  }\n  clearactive(){\n    for (let i = 0; i < this.chatlist.length; i++) {\n      this.chatlist[i].active = false\n    }\n  }\n  \n  answeraddchat(ev: any) {\n    for (let i = 0; i < this.incominglist.length; i++) {\n      if (this.incominglist[i].userName == ev.srcID) {\n        this.incominglist[i].cmschat = ev;\n        this.chatlist.push(this.incominglist[i]);\n        this.addition(this.chatlist);\n        this.incominglist.splice(i, 1);\n        i--;\n      }\n    }\n  }\n  cutvmactice(ev:any){\n    for (let i = 0; i < this.onevideolist.length; i++) {\n      if (this.onevideolist[i].cmschat.videoMeetID == ev) {\n        this.sendcutpage({\n          item: '0',\n        });\n        this.sendcutactive({active:i})\n        break;\n      }\n    }\n  }\n  cutactive(ev:any){\n    for (let i = 0; i < this.onevideolist.length; i++) {\n      if (this.onevideolist[i].userID == ev) {\n        this.sendcutpage({\n          item: '0',\n        });\n        this.sendcutactive({active:i})\n        break;\n      }\n    }\n  }\n  addonevideo(ev: any) {\n    for (let i = 0; i < this.onevideolist.length; i++) {\n      if (this.onevideolist[i].hascall == false) {\n        this.onevideolist[i].type = '2';\n        this.onevideolist[i].userID = ev.userName;\n        this.onevideolist[i].cmschat = ev.cmschat;\n        this.onevideolist[i].channelID = ev.cmschat.SSRC;\n        this.onevideolist[i].hascall = true;\n        this.onevideosider(this.onevideolist);\n        this.videolist.push(ev.userName);   \n        this.sendvideolocal(this.videolist)\n        this.sendcutactive({active:i})\n        this.sendcutpage({\n          item: '0',\n        });\n        if (cache.videochecked == true) {\n          this.videoshowsider({ data: true });\n        }\n        break;\n      }\n    }\n  }\n  // 添加右侧音频会议\n  addaudiomeeting(ev: any) {\n    this.clearmeetingactive()\n    ev.active = true\n    this.meetinglist.push(ev);\n    this.deleteaudio(ev);\n    this.sendmeeting(this.meetinglist);\n    this.sendcutmeetting(ev);\n  }\n  addddtmeeting(ev: any) {\n    this.clearmeetingactive()\n    ev.active = true;\n    this.meetinglist.push(ev);\n    this.sendmeeting(this.meetinglist);\n    this.videolist.push(ev.cmschat.videoMeetID);\n    this.sendvideolocal(this.videolist)\n    if (cache.meetingchecked == true) {\n      this.videoshowsider({ data: true });\n    }\n  }\n  // cms视频会议\n  addmeeting(ev: any) {\n    this.clearmeetingactive()\n    ev.active = true;\n    this.meetinglist.push(ev);\n    this.addvideomeeting(ev);\n    this.deleteincoming(ev);\n    this.sendmeeting(this.meetinglist);\n  }\n  addvideomeeting(ev: any) {\n    for (let i = 0; i < this.onevideolist.length; i++) {\n      if (this.onevideolist[i].hascall == false) {\n        this.onevideolist[i].type = '4';\n        this.onevideolist[i].userID = ev.userName;\n        this.onevideolist[i].cmschat = ev.cmschat;\n        this.onevideolist[i].channelID = ev.cmschat.SSRC;\n        this.onevideolist[i].hascall = true;\n        this.onevideosider(this.onevideolist);\n        this.videolist.push(ev.cmschat.videoMeetID);\n        this.sendvideolocal(this.videolist) \n        this.sendcutactive({active:i})\n        this.sendcutpage({\n          item: '0',\n        });\n        if (cache.meetingchecked == true) {\n          this.videoshowsider({ data: true });\n        }\n        break;\n      }\n    }\n  }\n  // 选择个人操作\n  cutperson(ev:any){\n     this.sendperson(ev)\n  }\n  // 切换打开的会议,退出现在打开的会议\n  cutopenmeeting() {\n    for (let i = 0; i < this.meetinglist.length; i++) {\n      if (this.meetinglist[i].openshow == true) {\n        if (this.meetinglist[i].phonetype == '3') {\n          //  退出音频会议\n          this.rx.toquitAudioConference(\n            this.meetinglist[i].cmschat.audioMeetID\n          );\n          this.meetinglist[i].openshow == false;\n        } else if (this.meetinglist[i].phonetype == '4') {\n          //  退出视频会议  \n          this.rx.applyforQuitVideoPush(\n            this.meetinglist[i].cmschat.videoMeetID\n          );\n          this.meetinglist[i].openshow == false;\n        }\n      }\n    }\n  }\n  // 切换会议页面\n  cutmeettingpage(ev: any) {\n    if (ev.callout == 1) {\n      //  本机拨打\n      this.cutmeeting = ev;\n      this.sendcutmeetting(this.cutmeeting);\n    } else if (ev.callout == 2) {\n      // 呼入的\n      if (ev.phonetype == 3) {\n        this.cutmeeting = ev;\n        this.sendcutmeetting(this.cutmeeting);\n      } else {\n        // 呼入的视频会议\n        this.cutvmactice(ev.cmschat.videoMeetID)\n      }\n    }\n  }\n  clearmeetingactive(){\n    for (let i = 0; i <  this.meetinglist.length; i++) {\n      this.meetinglist[i].active = false\n    }\n   \n  }\n  // 视频会议退出只清理视频\n  clearvideo(ev: any) {\n    this.deletevideo(ev.cmschat.videoMeetID);\n    for (let i = 0; i < this.onevideolist.length; i++) {\n      if (this.onevideolist[i].cmschat.videoMeetID == ev.cmschat.videoMeetID) {\n        this.onevideolist[i].type = '0';\n        this.onevideolist[i].userID = '';\n        this.onevideolist[i].cmschat = '';\n        this.onevideolist[i].channelID = '';\n        this.onevideolist[i].hascall = false;\n        this.onevideosider(this.onevideolist);\n        break;\n      }\n    }\n  }\n  // 清除视频会议\n  clearvideomeeting(ev: any, type: any) {\n    this.deletemeeting(ev.cmschat.videoMeetID);\n    this.deletevideo(ev.cmschat.videoMeetID);\n    for (let i = 0; i < this.onevideolist.length; i++) {\n      if (\n        this.onevideolist[i].cmschat.videoMeetID == ev.cmschat.videoMeetID &&\n        this.onevideolist[i].type == type\n      ) {\n        this.onevideolist[i].type = '0';\n        this.onevideolist[i].userID = '';\n        this.onevideolist[i].cmschat = '';\n        this.onevideolist[i].channelID = '';\n        this.onevideolist[i].hascall = false;\n        this.onevideosider(this.onevideolist);\n        break;\n      }\n    }\n  }\n  clearonevideo(ev: any, type: any) {\n    this.deletevideo(ev);\n    for (let i = 0; i < this.onevideolist.length; i++) {\n      if (\n        this.onevideolist[i].userID == ev &&\n        this.onevideolist[i].type == type\n      ) {\n        this.onevideolist[i].type = '0';\n        this.onevideolist[i].userID = '';\n        this.onevideolist[i].cmschat = '';\n        this.onevideolist[i].channelID = '';\n        this.onevideolist[i].hascall = false;\n        this.onevideosider(this.onevideolist);\n        break;\n      }\n    }\n  }\n  // 判断会议列表是否有该会议\n  judgeaudiomeeting(ev: any, type: any) {\n    let data = false;\n    for (let i = 0; i < this.meetinglist.length; i++) {\n      if (this.meetinglist[i].phonetype == '3' && type == '1') {\n        if (this.meetinglist[i].cmschat.audioMeetID == ev) {\n          data = true;\n        }\n      }\n      if (this.meetinglist[i].phonetype == '4' && type == '2') {\n        if (this.meetinglist[i].cmschat.videoMeetID == ev) {\n          data = true;\n        }\n      }\n    }\n    return data;\n  }\n  // 判断会议是否当前打开的会议\n  judgepresentmeeting(ev: any) {\n    let data = false;\n    for (let i = 0; i < this.meetinglist.length; i++) {\n      if (this.meetinglist[i].openshow == true) {\n        if (this.meetinglist[i].cmschat.videoMeetID == ev) {\n          data = true;\n        }\n        if (this.meetinglist[i].cmschat.audioMeetID == ev) {\n          data = true;\n        }\n      }\n    }\n    return data;\n  }\n  // 判断会议是否有开启的\n  judgeopenmeeting() {\n    let data = false;\n    for (let i = 0; i < this.meetinglist.length; i++) {\n      if (this.meetinglist[i].openshow == true) {\n        data = true;\n      }\n    } \n    return data;\n  }\n  //\n  judgephone(ev: any) {\n    let data = false;\n    if (this.chatlist.length > 0) {\n      for (let i = 0; i < this.chatlist.length; i++) {\n        if (this.chatlist[i].userName == ev) {\n          data = true;\n          break;\n        }\n      }\n    }\n    if (this.incominglist.length > 0) {\n      for (let i = 0; i < this.incominglist.length; i++) {\n        if (this.incominglist[i].userName == ev) {\n          data = true;\n          break;\n        }\n      }\n    }\n    return data;\n  }\n  delete(ev: any) {\n    for (let i = 0; i < this.incominglist.length; i++) {\n      if (this.incominglist[i].cmschat.dialogID\n        == ev.dialogID) {\n        this.incominglist.splice(i, 1);\n        i--;\n      }\n    }\n  }\n  \n  deletechat(ev: any) {\n    for (let i = 0; i < this.chatlist.length; i++) {\n      if (this.chatlist[i].cmschat.dialogID == ev.cmschat.dialogID) {\n        this.chatlist.splice(i, 1);\n        i--;\n      }\n    }\n    this.addition(this.chatlist);\n  }\n  deletevideo(ev: any) {\n    // 删除正在视频 \n    for (let i = 0; i < this.videolist.length; i++) {\n      if (this.videolist[i] == ev) {\n        this.videolist.splice(i, 1);\n        i--;\n      }\n    } \n    this.sendvideolocal(this.videolist)\n    if (this.videolist.length < 1) {\n      this.videoshowsider({ data: false });\n    }\n  }\n  // 删除视频会议\n  deletemeeting(ev: any) {\n    for (let i = 0; i < this.meetinglist.length; i++) {\n      if (this.meetinglist[i].cmschat.videoMeetID == ev) {\n        this.meetinglist.splice(i, 1);\n        i--;\n      }\n    }\n  }\n  // 删除接听视频会议\n  deleteincoming(ev: any) {\n    for (let i = 0; i < this.incominglist.length; i++) {\n      if (this.incominglist[i].phonetype == 4) {\n        if (\n          (this.incominglist[i].cmschat.videoMeetID = ev.cmschat.videoMeetID)\n        ) {\n          this.incominglist.splice(i, 1);\n          i--;\n        }\n      }\n    }\n  }\n  //  删除右侧音频会议\n  deletaudioemeeting(ev: any) {\n    for (let i = 0; i < this.meetinglist.length; i++) {\n      if (this.meetinglist[i].cmschat.audioMeetID == ev.cmschat.audioMeetID) {\n        this.meetinglist.splice(i, 1);\n        i--;\n      }\n    }\n    this.sendmeeting(this.meetinglist);\n  }\n  //删除右侧接听音频会议\n  deleteaudio(ev: any) {\n    for (let i = 0; i < this.incominglist.length; i++) {\n      if (this.incominglist[i].phonetype == 3) {\n        if (\n          this.incominglist[i].cmschat.audioMeetID == ev.cmschat.audioMeetID\n        ) {\n          this.incominglist.splice(i, 1);\n          i--;\n        }\n      }\n    }\n  }\n}\n","export enum TypeIndex {\r\n  DianBo = 1, //点播\r\n  ShiYin = 2, //视频\r\n  HuiYi = 2, //会议\r\n}\r\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { ResourceService } from '../../protocol/resource/resource.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { AvService } from '../../protocol/rtc/av.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n@Component({\n  selector: 'app-tree',\n  templateUrl: './tree.component.html',\n  styleUrls: ['./tree.component.less'],\n})\nexport class TreeComponent implements OnInit {\n  @ViewChild('kongbai') kongbai: any;\n  @ViewChildren('roots') roots?: QueryList<ElementRef>;\n  @HostListener('document:click', ['$event'])\n  bodyClick(e: any) {\n    this.kongshow = false;\n    function getTrigger(queryList: any, className?: any) {\n      let flag = true;\n      // 遍历事件节点\n      (<HTMLElement[]>e.path).forEach((i) => {\n        // 是否为 #unclick\n        flag &&\n          queryList.forEach((el: any) => {\n            i.isEqualNode && i.isEqualNode(el.nativeElement) && (flag = false);\n          });\n      });\n      return flag;\n    }\n  }\n  @Output() private outer = new EventEmitter<any>();\n  @Input() rawData: any = '';\n  @Input() uservalue: any = '';\n  @Input() userListtype: any = '';\n  @Input() status: any = false;\n  @Input() videoicons: boolean = true;\n  @Input() vodtree: any = false;\n  userListtypes = '';\n  showHint: boolean = false;\n  userName = '';\n  arr: any = []; //渲染列表\n  typelist: any = [];\n  shows: boolean = true;\n  activeIndex: number = -1;\n  videoicon: boolean = true;\n  newarr: any = [];\n  kongshow = false;\n  leftitem: any; //右键点击数据\n  inputValue: any = '';\n  searchtype: number = 1;\n  barringFlag: any = 0;\n  person: any;\n  constructor(\n    private rx: RxService,\n    public el: ElementRef,\n    private datastact: ResourceService,\n    private ws: WebService,\n    private AV: AvService,\n    private message: NzMessageService\n  ) {}\n  ngOnInit(): void {\n    document.oncontextmenu = function () {\n      return false;\n    };\n    if (this.datastact.userlist != '') {\n      this.rawData = this.datastact.userlist;\n      this.chi(this.rawData.childs);\n      this.userListtypes = this.datastact.userType;\n      this.merge();\n      this.userName = this.rx.userName;\n    }\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n      switch (respcmdid) {\n        case state.OWO_CMD_GET_MEMLIST + 1: {\n          this.rawData = resultdata;\n          this.chi(resultdata.childs);\n          break;\n        }\n        case state.OWO_CMD_GET_MEMLIST_STATUS + 1: {\n          this.barringFlag = resultdata.barringFlag;\n          this.userListtypes = resultdata.userList;\n          this.merge();\n          this.userName = this.rx.userName;\n          break;\n        }\n        default:\n      }\n    });\n    this.person = this.datastact.module.person;\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.videoicons) {\n      this.videoicon = this.videoicons;\n    }\n    if (changes.uservalue) {\n      this.arr = [];\n      this.chi(this.rawData.childs);\n      if (this.uservalue == '') {\n        this.searchtype = 1;\n      } else {\n        if (this.rebuildData(this.uservalue, this.arr).length == 0) {\n          this.searchtype = 2;\n        } else {\n          this.arr = this.rebuildData(this.uservalue, this.arr);\n        }\n      }\n    }\n  }\n  chi(obj: any) {\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n  // 修改本机状态\n  merge() {\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      if (arr == this.rx.userID) {\n        this.arr[i].info.type = { devStatus: '1' };\n        this.arr[i].info.userName = '本机';\n        this.rx.userType = this.arr[i].info.userType;\n      }\n      for (let j = 0; j < this.userListtypes.length; j++) {\n        let type: any = this.userListtypes[j];\n        if (arr == type.userID) {\n          this.arr[i].info.type = type;\n        }\n      }\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  gain(ev: any) {\n    // console.log(ev);\n  }\n  // 发送信息\n  chat(ev: any) {\n    let data = {\n      type: true,\n      nav: ev,\n    };\n    this.outer.emit(data);\n  }\n\n  mouse(ev: any) {\n    this.activeIndex = ev;\n  }\n  rebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.info.userName != undefined) {\n        if (element.info.userName.indexOf(value) > -1) {\n          // 判断条件\n          this.newarr.push(element);\n        } else {\n          if (element.info.childs && element.info.childs.length > 0) {\n            let redata = this.rebuildData(value, element.info.childs);\n            let obj = {\n              ...element,\n              children: redata,\n            };\n            if (redata && redata.length > 0) {\n              this.newarr.push(obj);\n            }\n          }\n        }\n      }\n    });\n    return this.newarr;\n  }\n  test(ev: any, item: any) {\n    if (item.info.userName == '本机') {\n      return;\n    } else {\n      this.leftitem = item;\n      this.kongshow = true;\n      let viewportHeight = window.innerHeight;\n      let kongbais = this.kongbai.nativeElement;\n      if (viewportHeight - ev.clientY < 127) {\n        kongbais.styleposition = 'absolute';\n        kongbais.style.left = ev.pageX + 'px';\n        kongbais.style.top = viewportHeight - 127 + 'px';\n      } else {\n        kongbais.styleposition = 'absolute';\n        kongbais.style.left = ev.pageX + 'px';\n        kongbais.style.top = ev.pageY + 'px';\n      }\n    }\n  }\n  leftChat() {\n    // 右键点击发送消息\n    this.chat(this.leftitem);\n  }\n  oneChat() {\n    this.callme(this.leftitem);\n  }\n  onevoice() {\n    this.clvoice(this.leftitem);\n  }\n  bunchplanting() {\n    // console.log(this.leftitem);\n    let data = {\n      planting: this.leftitem,\n    };\n    this.outer.emit(data);\n  }\n  // 拖拽事件\n  transfer(event: any, item: any) {\n    var e = event || window.event;\n    e.dataTransfer.setData('item', item.userID);\n    e.dataTransfer.setData('type', item.userType);\n    e.dataTransfer.setData('devStatus', item.type.devStatus);\n  }\n  underway(ev: any) {\n    // console.log('拖拽中');\n  }\n  ondragend(ev: any) {\n    // console.log('拖拽结束');\n  }\n  dbbunch(item: any) {\n    let data = {\n      planting: item,\n    };\n    this.outer.emit(data);\n  }\n  judgestatus(ev: any) {\n    if (ev == 0) {\n      return false;\n    } else {\n      return true;\n    }\n  }\n  clvoice(item: any) {\n    if (item.info.type.barringFlag == '1' || this.barringFlag == '1') {\n      this.message.create('warning', '用户被禁话暂不能操作');\n    } else {\n      // console.log(item);\n      if (item.info.type.devStatus == 0) {\n        let data = { hite: true };\n        this.outer.emit(data);\n      } else {\n        // item.phonetype = 1;\n        let dstID = item.info.userID;\n        this.AV.callonevoice(dstID);\n      }\n    }\n  }\n  vod(item: any) {\n    if (item.info.type.devStatus == 0) {\n      let data = { hite: true };\n      this.outer.emit(data);\n    } else {\n      // console.log('点播');\n\n      let data = {\n        planting: item,\n      };\n      this.outer.emit(data);\n    }\n  }\n  callme(item: any) {\n    console.log(item);\n    if (item.info.type.barringFlag == '1' || this.barringFlag == '1') {\n      this.message.create('warning', '用户被禁话暂不能操作');\n    } else {\n      if (item.info.type.devStatus == 0) {\n        let data = { hite: true };\n        this.outer.emit(data);\n      } else {\n        // console.log('打电话');\n        let dstID = item.info.userID;\n        this.AV.callonevideo(dstID);\n      }\n    }\n  }\n}\n","<div *ngIf=\"searchtype == 1\">\n    <div (click)=\"show()\" class=\"box\">\n        <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\">\n            <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n        </div>\n        <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\">\n            <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n        </div>\n        <div class=\"root\">\n            {{ rawData.root }}\n        </div>\n        <div class=\"blank\"></div>   \n    </div>\n    <div [style.display]=\"shows ? 'block' : 'none'\">\n        <div *ngFor=\"let item of arr; let i = index\">\n            <div class=\"infobox\" *ngIf=\"item.info.type\" [draggable]=\"judgestatus(item.info.type.devStatus)\" (dragstart)=\"transfer($event, item.info)\" (drag)=\"underway(item.info)\" (dragend)=\"ondragend(item.info)\" (contextmenu)=\"test($event, item)\">\n                <div class=\"infoimgbox\" *ngIf=\"item.info.type\" (dblclick)=\"clvoice(item)\">\n                    <div class=\"infoimg\" *ngIf=\"item.info.type.devStatus == 0\">\n                        <img src=\"assets/img/head.png\" alt=\"\" />\n                    </div>\n                    <div class=\"buleStatus\" *ngIf=\"item.info.type.devStatus == 1\">\n                        <img src=\"assets/img/head.png\" alt=\"\" />\n                    </div>\n                    <div class=\"greenStatus\" *ngIf=\"item.info.type.devStatus == 2\">\n                        <img src=\"assets/img/head.png\" alt=\"\" />\n                    </div>\n                </div>\n                <div class=\"tpye\">\n                    <img src=\"assets/img/type_android.png\" alt=\"\" *ngIf=\"item.info.userType == '1'\" />\n                    <img src=\"assets/img/type_pc.png\" alt=\"\" *ngIf=\"item.info.userType == '2'\" />\n                    <img src=\"assets/img/type_IPC.png\" alt=\"\" *ngIf=\"item.info.userType == '3'\" />\n                    <img src=\"assets/img/type_DB.png\" alt=\"\" *ngIf=\"item.info.userType == '4'\" />\n                </div>\n                <div *ngIf=\"vodtree == false\">\n                    <div class=\"root\" (mouseenter)=\"mouse(i)\" (mouseleave)=\"activeIndex = -1\">\n                        <div class=\"rootuserName\">\n                            {{ item.info.userName }}\n                        </div>\n                        <div class=\"state\" *ngIf=\"item.info.type\">\n                            <div *ngIf=\"item.info.type.devStatus == 0\" class=\"offline\">\n                                离线\n                            </div>\n                            <div *ngIf=\"item.info.type.devStatus == 1\" class=\"online\">\n                                在线\n                            </div>\n                            <div *ngIf=\"item.info.type.devStatus == 2\" class=\"telephone\">\n                                通话\n                            </div>\n                        </div>\n                        <div class=\"yuyin\" *ngIf=\"videoicon\">\n                            <ul class=\"clearfix\" [style.display]=\"\n                            item.info.userName != '本机'? 'block' : 'none'\n                \">\n                                <li *ngIf=\"activeIndex === i\">\n                                    <div class=\"vodleft\" [ngClass]=\"status ? 'vodlefttwo' : 'vodleft'\" (click)=\"vod(item)\" *ngIf=\"person.vod\"></div>\n                                </li>\n                                <li *ngIf=\"activeIndex === i\">\n                                    <div class=\"videoleft\" [ngClass]=\"status ? 'videolefttwo' : 'videoleft'\" (click)=\"callme(item)\" *ngIf=\"person.videoCall\"></div>\n                                </li>\n                                <li *ngIf=\"activeIndex === i\">\n                                    <div class=\"voicelest\" [ngClass]=\"status ? 'voicelesttwo' : 'voicelest'\" (click)=\"clvoice(item)\" *ngIf=\"person.audioCall\"></div>\n                                </li>\n                                <li *ngIf=\"activeIndex === i\">\n                                    <div class=\"informationleft\" [ngClass]=\"\n                      status ? 'informationlefttwo' : 'informationleft'\n                    \" *ngIf=\"item.info.userType != '4'&&person.message\" (click)=\"chat(item)\"></div>\n                                </li>\n                            </ul>\n                        </div>\n                    </div>\n                </div>\n                <div *ngIf=\"vodtree == true\" (dblclick)=\"dbbunch(item)\" (contextmenu)=\"test($event, item)\" #roots>\n                    <div class=\"root\" (mouseenter)=\"mouse(i)\" (mouseleave)=\"activeIndex = -1\">\n                        <div class=\"rootuserName\">\n                            {{ item.info.userName }}\n                        </div>\n                        <div class=\"state\" *ngIf=\"item.info.type\">\n                            <div *ngIf=\"item.info.type.devStatus == 0\" style=\"color: #a09f9f\">\n                                离线\n                            </div>\n                            <div *ngIf=\"item.info.type.devStatus == 1\" style=\"color: #5898d7\">\n                                在线\n                            </div>\n                            <div *ngIf=\"item.info.type.devStatus == 2\" style=\"color: #3ca02d\">\n                                通话\n                            </div>\n                        </div>\n                        <div class=\"yuyin\" *ngIf=\"videoicon\">\n                            <ul class=\"clearfix\" [style.display]=\"\n                  item.info.userName != '本机' ? 'block' : 'none'\n                \">\n                                <li *ngIf=\"activeIndex === i\">\n                                    <div class=\"vodleft\" [ngClass]=\"status ? 'vodlefttwo' : 'vodleft'\" (click)=\"vod(item)\" *ngIf=\"person.vod\"></div>\n                                </li>\n                                <li *ngIf=\"activeIndex === i\">\n                                    <div class=\"videoleft\" [ngClass]=\"status ? 'videolefttwo' : 'videoleft'\" (click)=\"callme(item)\" *ngIf=\"person.videoCall\"></div>\n                                </li>\n                                <li *ngIf=\"activeIndex === i\">\n                                    <div class=\"voicelest\" [ngClass]=\"status ? 'voicelesttwo' : 'voicelest'\" (click)=\"clvoice(item)\" *ngIf=\"person.audioCall\"></div>\n                                </li>\n                                <li *ngIf=\"activeIndex === i\">\n                                    <div class=\"informationleft\" [ngClass]=\"\n                      status ? 'informationlefttwo' : 'informationleft'\n                    \" *ngIf=\"item.info.userType != '4'&&person.message\" (click)=\"chat(item)\"></div>\n                                </li>\n                            </ul>\n                        </div>\n                    </div>\n                </div>\n                <div *ngIf=\"item.info.groupName\" class=\"root\">\n                    {{ item.info.groupName }}\n                </div>\n            </div>\n            <div class=\"childs\">\n                <app-tree *ngIf=\"item.info.childs\" [rawData]=\"item.info\"></app-tree>\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"searchtype == 2\" class=\"searching\">未检索的到用户</div>\n<div class=\"kongbai\" #kongbai style=\"position: absolute; left: 0px; top: 0px; z-index: 1000\" [style.display]=\"kongshow ? 'block' : 'none'\">\n    <div (click)=\"bunchplanting()\" *ngIf=\"person.vod\">视频点播</div>\n    <div (click)=\"leftChat()\" *ngIf=\"person.message\">发消息</div>\n    <div (click)=\"onevoice()\" *ngIf=\"person.audioCall\">发起一对一语音</div>\n    <div (click)=\"oneChat()\" *ngIf=\"person.videoCall\">发起一对一视频</div>\n    <div>禁话</div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { RxService } from '../../protocol/rtc/rx.service';\n@Component({\n  selector: 'app-hint',\n  templateUrl: './hint.component.html',\n  styleUrls: ['./hint.component.less'],\n})\nexport class HintComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() hinttype: any;\n  @Input() videomeeting: any;\n  constructor(private rx: RxService) {}\n  hint: boolean = false;\n  time: any = 0;\n  videoMeetName: any;\n  ngOnInit(): void {\n    if(this.videomeeting!=undefined){\n      this.videoMeetName = this.videomeeting.videoMeetName;\n      this.reset();\n    }\n  }\n  sendParent() {\n    this.outer.emit(this.hint);\n  }\n  consent() {\n    this.rx.whetherConsentApplyforAddVideoPush(\n      this.videomeeting.videoMeetID,\n      '1'\n    );\n    let data= {\n      hint:this.hint,\n      videomeeting:this.videomeeting\n    }\n    this.outer.emit(data);\n  }\n  meetingParent() {\n    this.rx.whetherConsentApplyforAddVideoPush(\n      this.videomeeting.videoMeetID,\n      '0'\n    );\n    this.outer.emit(this.hint);\n  }\n  reset() {\n    setInterval(this.timer, 1000);\n  }\n  timer = () => {\n    //定义计时函数\n    this.time++;\n    if (this.time > 60) {\n      this.meetingParent();\n    }\n  };\n}\n","<div class=\"box\">\n    <div class=\"navbox\">\n        <div class=\"nav\" cdkDrag>\n            <div class=\"setname\" cdkDragHandle>\n                <div>提示</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent()\" *ngIf=\"hinttype != 4\"></i>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"meetingParent()\" *ngIf=\"hinttype == 4\"></i>\n            </div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 1\">未添加会议成员，无法开启</div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 2\">用户不在线</div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 3\">\n                pc用户不接受点播,建议进行一对一视频业务\n            </div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 4\">{{videoMeetName}}邀请您加入会议</div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 5\">您不在会议中,无法开启!</div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 6\">您不在群组中,无法开启!</div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 7\">用户不存在</div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 8\">拨打用户为本机</div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 9\">设备不在线</div>\n            <div *ngIf=\"hinttype == 4\" class=\"timebox\">\n                {{ this.time }}\n            </div>\n            <div class=\"setbutton\" *ngIf=\"hinttype == 4\">\n                <button (click)=\"consent()\">接受</button>\n                <button (click)=\"meetingParent()\">拒接</button>\n            </div>\n            <div class=\"setbutton\" *ngIf=\"hinttype != 4\">\n                <button (click)=\"sendParent()\">确定</button>\n                <button (click)=\"sendParent()\">取消</button>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { ResourceService } from '../../protocol/resource/resource.service';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { AvService } from '../../protocol/rtc/av.service';\nimport { OverallService } from '../../common/overall.service';\n@Component({\n  selector: 'app-equipmenttree',\n  templateUrl: './equipment-tree.component.html',\n  styleUrls: ['./equipment-tree.component.less'],\n})\nexport class EquipmenttreeComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() eqipmentValue: any = '';\n  @Input() transfertype: any = '1';\n  @Input() eqipmenttype: any = '1';\n  searchtype: number = 1;\n  shows: boolean = true;\n  rawData: any = '';\n  arr: any = []; //渲染列表\n  activeIndex: number = -1;\n  newarr: any = [];\n  hint = false;\n  hinttype = 9;\n  constructor(\n    private datastact: ResourceService,\n    private ws: WebService,\n    private AV: AvService,\n    private sendService: OverallService\n  ) {}\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n      switch (respcmdid) {\n        case state.OWO_CMD_GET_DEV_LIST + 1: {\n          this.rawData = resultdata;\n          this.chi(resultdata.deviceList);\n          break;\n        }\n        default:\n      }\n    });\n    if (this.datastact.equipmentlist != '') {\n      this.arr = this.datastact.equipmentlist.deviceList;\n    }\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.eqipmentValue) {\n      this.arr = [];\n      this.chi(this.rawData.deviceList);\n      if (this.eqipmentValue == '') {\n        this.searchtype = 1;\n      } else {\n        if (this.rebuildData(this.eqipmentValue, this.arr).length == 0) {\n          this.searchtype = 2;\n        } else {\n          this.arr = this.rebuildData(this.eqipmentValue, this.arr);\n        }\n      }\n    }\n    // if(changes.transfertype){\n    //   if(this.transfertype ==2){\n\n    //   }\n    // }\n  }\n  chi(obj: any) {\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  mouse(ev: any) {\n    this.activeIndex = ev;\n  }\n  rebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.deviceName != undefined) {\n        if (element.deviceName.indexOf(value) > -1) {\n          // 判断条件\n          this.newarr.push(element);\n        } else {\n          if (element.childs && element.childs.length > 0) {\n            let redata = this.rebuildData(value, element.childs);\n            let obj = {\n              ...element,\n              children: redata,\n            };\n            if (redata && redata.length > 0) {\n              this.newarr.push(obj);\n            }\n          }\n        }\n      }\n    });\n    return this.newarr;\n  }\n  listleft(ev: any) {\n    console.log(ev);\n    this.outer.emit({ data: ev });\n  }\n  videoleft(ev: any) {\n    console.log(ev);\n    // console.log('点播');\n    if (ev.deviceStatus == 0) {\n      this.hint = true;\n    } else {\n      // let dstID = ev.deviceID;\n      // this.AV.callonevideo(dstID);\n      let data = {\n        info: {\n          userID: ev.deviceID,\n          userType: ev.deviceType,\n          devStatus: ev.deviceStatus,\n          type: {\n            SSID: '',\n            bargeinFlag: '0',\n            barringFlag: '0',\n            camStatus: '0',\n            devStatus: '1',\n            dialogID: '',\n            electricity: '0',\n            micStatus: '0',\n            netStatus: '0',\n            userID: ev.deviceID,\n            userName: ev.deviceName,\n            userType: '2',\n          },\n        },\n        show: false,\n        type: '3',\n      };\n      console.log(data);\n      this.sendService.plantingsendsider(data);\n    }\n  }\n  run(ev: any) {\n    this.hint = false;\n  }\n\n  // 拖拽事件\n  transfer(event: any, item: any) {\n    var e = event || window.event;\n    e.dataTransfer.setData('item', item.deviceID);\n    e.dataTransfer.setData('type', '3');\n    e.dataTransfer.setData('devStatus', item.deviceStatus);\n  }\n  underway(ev: any) {\n    // console.log('拖拽中');\n  }\n  ondragend(ev: any) {\n    // console.log('拖拽结束');\n  }\n  judgestatus(ev: any) {\n    if (ev == 0) {\n      return false;\n    } else {\n      return true;\n    }\n  }\n}\n","<div *ngIf=\"searchtype == 1\">\n    <div (click)=\"show()\" class=\"box\">\n        <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\">\n            <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n        </div>\n        <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\">\n            <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n        </div>\n        <div class=\"root\">\n            {{ rawData.root }}\n        </div>\n        <div class=\"blank\"></div>\n    </div>\n    <div [style.display]=\"shows ? 'block' : 'none'\">\n        <div *ngFor=\"let item of arr; let i = index\">\n            <div class=\"infobox\" *ngIf=\"item.deviceType == 1&&eqipmenttype=='1'\" [draggable]=\"judgestatus(item.deviceStatus)\" (dragstart)=\"transfer($event, item)\" (drag)=\"underway(item)\" (dragend)=\"ondragend(item)\" >\n                <div class=\"infoimgbox\">\n                    <div class=\"infoimg\" *ngIf=\"item.deviceStatus == 0\">\n                        <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item.deviceType == 1\" />\n                    </div>\n                    <div class=\"buleStatus\" *ngIf=\"item.deviceStatus== 1\">\n                        <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item.deviceType == 1\" />\n                    </div>\n                </div>\n                <div class=\"equipment\" (mouseenter)=\"mouse(i)\" (mouseleave)=\"activeIndex = -1\">\n                    <div class=\"rootuserName\">\n                        {{ item.deviceName}}\n                    </div>\n                    <div class=\"state\">\n                        <div *ngIf=\"item.deviceStatus == 0\" class=\"offline\">\n                            离线\n                        </div>\n                        <div *ngIf=\"item.deviceStatus == 1\" class=\"online\">\n                            在线\n                        </div>\n                    </div>\n                    <div class=\"yuyin\">\n                        <ul class=\"clearfix\" *ngIf=\"transfertype==1\">\n                            <li *ngIf=\"activeIndex === i\">\n                                <div class=\"videoleft\"  (click)=\"videoleft(item)\"></div>\n                            </li>\n                        </ul>\n                        <ul class=\"clearfix\" *ngIf=\"transfertype==2\">\n                            <li *ngIf=\"activeIndex === i\">\n                                <div class=\"listleft\" (click)=\"listleft(item)\"></div>\n                            </li>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n            <div class=\"infobox\" *ngIf=\"item.deviceType == 2&&eqipmenttype=='2'\">\n                <div class=\"infoimgbox\">\n                    <div class=\"infoimg\" *ngIf=\"item.deviceStatus == 0\">\n                        <img src=\"assets/img/广播_01.png\" alt=\"\" *ngIf=\"item.deviceType == 2\" />\n                    </div>\n                    <div class=\"buleStatus\" *ngIf=\"item.deviceStatus== 1\">\n\n                        <img src=\"assets/img/广播_01.png\" alt=\"\" *ngIf=\"item.deviceType == 2\" />\n                    </div>\n                </div>\n                <div class=\"equipment\" (mouseenter)=\"mouse(i)\" (mouseleave)=\"activeIndex = -1\">\n                    <div class=\"rootuserName\">\n                        {{ item.deviceName}}\n                    </div>\n                    <div class=\"state\">\n                        <div *ngIf=\"item.deviceStatus == 0\" class=\"offline\">\n                            离线\n                        </div>\n                        <div *ngIf=\"item.deviceStatus == 1\" class=\"online\">\n                            在线\n                        </div>\n                    </div>\n                    <div class=\"yuyin\">\n                        <ul class=\"clearfix\" *ngIf=\"transfertype==1\">\n                            <li *ngIf=\"activeIndex === i\">\n                                <div class=\"videoleft\" (click)=\"videoleft(item)\"></div>\n                            </li>\n                        </ul>\n                        <ul class=\"clearfix\" *ngIf=\"transfertype==2\">\n                            <li *ngIf=\"activeIndex === i\">\n                                <div class=\"listleft\" (click)=\"listleft(item)\"></div>\n                            </li>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"searchtype == 2\" class=\"searching\">未检索的到用户</div>\n<div *ngIf=\"hint\">\n    <app-hint (outer)=\"run($event)\" [hinttype]=\"hinttype\"></app-hint>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n  ViewChild,\n  HostListener,\n} from '@angular/core';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { AvService } from '../../protocol/rtc/av.service';\nimport { ResourceService } from '../../protocol/resource/resource.service';\n@Component({\n  selector: 'app-onevideo',\n  templateUrl: './onevideo.component.html',\n  styleUrls: ['./onevideo.component.less'],\n})\nexport class OnevideoComponent implements OnInit {\n  @HostListener('document:keydown', ['$event'])\n  onkeydown(event: any) {\n    if (this.kflag) {\n      event.preventDefault();\n    } else {\n      this.kflag = true;\n      let keyCode = event.keyCode;\n      if (keyCode == 32) {\n        if (this._title.activeIndex == true) {\n          if (this.type == '1') {\n            // console.log('开始讲话');\n            this.localStream.getAudioTracks()[0].enabled = true;\n          }\n        }\n      }\n    }\n  }\n  @HostListener('document:keyup', ['$event'])\n  onkeyup(event: any) {\n    this.kflag = false;\n    let keyCode = event.keyCode;\n    if (keyCode == 32) {\n      if (this.type == '1') {\n        // console.log('松开');\n        this.localStream.getAudioTracks()[0].enabled = false;\n      }\n    }\n  }\n  @ViewChild('playvideolist') playvideolist?: any;\n  // 监听键盘事件\n  @Output() private outer = new EventEmitter<any>();\n  @Input()\n  set title(value: any) {\n    this._title = value;\n  }\n  get title(): any {\n    return this._title;\n  }\n  _title: any;\n  @Input() dstID: any = '';\n  @Input() channelID: any;\n  @Input() hascall: any;\n  @Input() userID: any = '';\n  @Input() type: any = '';\n  @Input() cmschat: any = '';\n  kflag: boolean = false;\n  videoContext = new AudioContext();\n  videogainNode = this.videoContext.createGain();\n  localStream: any = null;\n  pcPeer: any = null;\n  sendvideopcPeer: any = null;\n  sendvideoStream: any = null; //视频会议本地流\n  sendvideoSSRC: any = '';\n  cmsvideoStream: any;\n  cmsvideopcPeer: any = null;\n  videolID = '';\n  remotelID = '';\n  audioCall:any;\n  constructor(\n    private rx: RxService,\n    private ws: WebService,\n    private AV: AvService,\n    private datastact: ResourceService,\n  ) {}\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let serial = ev.serial;\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let resultdata = nav.resultData;\n      let cmdBody = nav.cmdBody;\n      switch (cmdid) {\n        case state.OWO_CMD_VOD_LEAVE: {\n          if (cmdBody.memID == this.userID) {\n            this.clearvideo();\n            // 点播关闭\n            this._title.voiceshow = false;\n            this.rx.replycmsLeave(serial);\n          }\n          break;\n        }\n        case state.OWO_CMD_CHAT_CLOSE: {\n          if (cmdBody.srcID == this.userID || cmdBody.srcID == this.rx.userID) {\n            if (this.type == '2') {\n              this.closestream();\n            } else {\n              this._title.voiceshow = false;\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_VOD_OPEN_VIDEO_BK: {\n          if (nav.cmdBody.reqUserID == this.userID) {\n            // 点播返回\n            if (nav.cmdBody.permission == 1) {\n            } else if (nav.cmdBody.permission == 2) {\n              if (nav.cmdBody.reqUserID == this.userID) {\n                this.clearvideo();\n                this._title.voiceshow = false;\n              }\n            }\n            this.rx.replyCmsVideoBk(serial);\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_PUSH_MEM: {\n          if (this._title.cmschat) {\n            if (cmdBody.videoMeetID == this._title.cmschat.videoMeetID) {\n              const configuration = {};\n              this.sendvideopcPeer = new RTCPeerConnection(configuration);\n              this.sendvideoSSRC = cmdBody.SSRC;\n              this.sendcmsvideo();\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_CLOSE_VIDEO: {\n          // cms关闭视频\n          if (this._title.cmschat) {\n            if (cmdBody.videoMeetID == this._title.cmschat.videoMeetID) {\n              if (this.sendvideoStream) {\n                this.sendvideoStream.getTracks().forEach((track: any) => {\n                  track.stop();\n                });\n                this.sendvideopcPeer.close();\n                this.sendvideopcPeer = null;\n              }\n              if (this.cmsvideopcPeer) {\n                this.cmsvideopcPeer.close();\n                this.cmsvideopcPeer = null;\n                this.cmsvideoStream.getTracks().forEach((track: any) => {\n                  track.stop();\n                });\n              }\n              this.AV.clearvideo(this._title);\n              // 清除列表\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_STOP: {\n          // 关闭会议\n          if (this._title.cmschat) {\n            if (cmdBody.videoMeetID == this._title.cmschat.videoMeetID) {\n              if (this.sendvideoStream) {\n                this.sendvideoStream.getTracks().forEach((track: any) => {\n                  track.stop();\n                });\n                this.sendvideopcPeer.close();\n                this.sendvideopcPeer = null;\n              }\n              if (this.cmsvideopcPeer) {\n                this.cmsvideopcPeer.close();\n                this.cmsvideopcPeer = null;\n                this.cmsvideoStream.getTracks().forEach((track: any) => {\n                  track.stop();\n                });\n              }\n              // 清除列表\n              this.AV.clearvideomeeting(this._title, this.type);\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_CHAT_REQUEST_BK: {\n          if (nav.cmdBody.dstID == this.userID) {\n            if (this.type != '2') {\n              if (nav.cmdBody.permission == 2) {\n                // console.log('挂断');\n                this._title.voiceshow = '0';\n              } else if (nav.cmdBody.permission == 1) {\n                // console.log('接通');\n                this._title.voiceshow = '2';\n              }\n            }\n          }\n          break;\n        }\n      }\n      switch (respcmdid) {\n        case state.OWO_CMD_VOD_OPEN_VIDEO + 1: {\n          if (resultdata.dstID == this.userID) {\n            this.channelID = resultdata.SSRC;\n            const configuration = {};\n            this.pcPeer = new RTCPeerConnection(configuration);\n            this.planting();\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_EXIT + 1: {\n          if (this._title.cmschat) {\n            if (resultdata.videoMeetID == this._title.cmschat.videoMeetID) {\n              if (this.sendvideoStream) {\n                this.sendvideoStream.getTracks().forEach((track: any) => {\n                  track.stop();\n                });\n                this.sendvideopcPeer.close();\n                this.sendvideopcPeer = null;\n              }\n              if (this.cmsvideopcPeer) {\n                this.cmsvideopcPeer.close();\n                this.cmsvideopcPeer = null;\n                this.cmsvideoStream.getTracks().forEach((track: any) => {\n                  track.stop();\n                });\n              }\n              this.AV.clearvideo(this._title);\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_RTC_OFFER + 1: {\n          if (resultdata.channelID == this.channelID) {\n            if (this.type == '1') {\n              setTimeout(() => {\n                this.plantingAnswer(nav);\n              }, 1000);\n            } else if (this.type == '2') {\n              setTimeout(() => {\n                this.remoteAnswer(nav);\n              }, 1000);\n            } else if (this.type == '4') {\n              setTimeout(() => {\n                // console.log('接收端的视频');\n                this.cmsvideoAnswer(nav);\n              }, 1000);\n            }\n          }\n          if (resultdata.channelID == this.sendvideoSSRC) {\n            // console.log('发起端的视频');\n            this.sendcmsvideoAnswer(nav);\n          }\n          break;\n        }\n        case state.OWO_CMD_CHAT_CLOSE + 1: {\n          if (resultdata.dstID == this.userID) {\n            if (this.type == '2') {\n              this.closestream();\n            } else {\n              this._title.voiceshow = '0';\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_STOP + 1: {\n          // console.log('关闭视频');\n          break;\n        }\n        default:\n          break;\n      }\n    });\n    this.audioCall = this.datastact.module.person.audioCall;\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.channelID) {\n      if (this.channelID) {\n        if (this.type == '2') {\n          // console.log('视频');\n          const configuration = {};\n          this.pcPeer = new RTCPeerConnection(configuration);\n          this.video();\n        } else if (this.type == '4') {\n          const configuration = {};\n          this.cmsvideopcPeer = new RTCPeerConnection(configuration);\n          this.rx.whetherConsentApplyforAddVideoPush(\n            this.cmschat.videoMeetID,\n            '1'\n          );\n          this.begincmsvideo();\n        }\n      }\n    }\n  }\n\n  cleardata() {\n    this.dstID = '';\n    this.channelID = null;\n    this.hascall = null;\n    this.userID = '';\n    this.type = '';\n    this.cmschat = '';\n  }\n  pushtan($event: any, ev: any) {\n    $event.stopPropagation();\n    let data = {\n      pushselect: ev,\n      pushhint: true,\n    };\n    this.outer.emit(data);\n  }\n  // 视频逻辑\n  video = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: { width: 640, height: 480 },\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          that.localStream = stream;\n          that.call();\n        })\n        .catch(this.handleError);\n    }\n  };\n  call = () => {\n    this.pcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.localStream.getTracks().forEach((track: any) => {\n      this.pcPeer.addTrack(track, this.localStream);\n    });\n    this.pcPeer.onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.pcPeer.onconnection = function () {};\n    this.pcPeer.ondatachannel = (event: any) => {\n      console.log(event);\n    };\n    this.rx.sendOffer({ SDP: 'web client sdp', channelID: this.channelID });\n  };\n  remoteAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.pcPeer.setRemoteDescription(desc);\n    this.pcPeer.createAnswer().then((sdp: any) => {\n      this.gotDescription2(sdp);\n    });\n  };\n  gotDescription2 = (desc: any) => {\n    this.pcPeer.setLocalDescription(desc).then();\n  };\n\n  getRemoteSream = (e: any) => {\n    // console.log('开启视频');\n    this.playvideolist.nativeElement.srcObject = e.stream;\n  };\n  handleError(err: any) {\n    console.log(err);\n  }\n  tit(ev: any) {\n    this.AV.callonevoice(ev.userID);\n    this._title.voiceshow = '1';\n  }\n  // 点播逻辑\n  closeoneVideo($event: any, ev: any) {\n    $event.stopPropagation();\n    // console.log('关闭视频');\n    this.rx.closrVideo(ev.userID);\n    this.rx.initiativeCloseChat(ev.cmschat.dialogID);\n    this.closestream();\n  }\n  closestream() {\n    if (this.pcPeer) {\n      this.pcPeer.close();\n      this.pcPeer = null;\n      this.localStream.getTracks().forEach((track: any) => {\n        track.stop();\n      });\n      this.localStream =null ;\n    }\n    this.AV.clearonevideo(this.userID, this.type);\n    this.AV.deletechat(this._title);\n  }\n  closeVideo($event: any, ev: any) {\n    $event.stopPropagation();\n    this.rx.closrVideo(ev.userID);\n    // console.log('关闭点播');\n    this.clearvideo();\n  }\n  clearvideo() {\n    if(this.pcPeer){\n      if(this.localStream){\n        this.localStream.getTracks().forEach((track: any) => {\n          track.stop();\n        });\n      }\n      this.localStream = null;\n      this.pcPeer.close();\n      this.pcPeer = null;\n    }\n    this.AV.clearonevideo(this.userID, this.type);\n    // this.cleardata();\n  }\n  planting = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      // this.plantingcall();\n      let constraints = {\n        audio: true,\n        video: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          that.localStream = stream;\n          this.localStream.getAudioTracks()[0].enabled = false;\n          this.localStream.getVideoTracks()[0].enabled = false;\n          // this.localvideo.nativeElement.srcObject = stream;\n          this.plantingcall();\n        })\n        .catch(this.handleError);\n    }\n  };\n  plantingcall = () => {\n    this.pcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.localStream.getTracks().forEach((track: any) => {\n      this.pcPeer.addTrack(track, this.localStream);\n    });\n    this.pcPeer.onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.pcPeer.onconnection = function () {};\n    this.pcPeer.ondatachannel = (event: any) => {\n      console.log(event);\n    };\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.channelID,\n    });\n  };\n  plantingAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    if(SDP){\n      let desc = new RTCSessionDescription(SDP);\n      if(this.pcPeer){\n        this.pcPeer.setRemoteDescription(desc);\n        this.pcPeer.createAnswer().then((sdp: any) => {\n          this.plantingDescription2(sdp);\n        });\n      }\n    }\n  };\n  plantingDescription2 = (desc: any) => {\n    this.pcPeer.setLocalDescription(desc).then();\n  };\n  plantingSream = (e: any) => {\n    this.playvideolist.nativeElement.srcObject = e.stream;\n  };\n\n  closevideomeeting($event: any, ev: any) {\n    $event.stopPropagation();\n    // this.AV.clearvideomeeting(this._title, this.type);\n    this.rx.applyforQuitVideoPush(this._title.cmschat.videoMeetID);\n    // this.rx.closrVideo(ev.userID);\n    // console.log('退出会议');\n    // this.clearvideo();\n    this.cleardata();\n  }\n\n  // 开始发送\n  // 视频会议逻辑\n  sendcmsvideo = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: true,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          that.sendvideoStream = stream;\n          that.sendcmsvideoCall();\n        })\n        .catch(this.sendcmsvideoError);\n    }\n  };\n  sendcmsvideoCall = () => {\n    this.sendvideopcPeer.onicecandidate = (event: any) => {};\n    this.sendvideoStream.getTracks().forEach((track: any) => {\n      this.sendvideopcPeer.addTrack(track, this.sendvideoStream);\n    });\n    this.sendvideopcPeer.onaddstream = (event: any) => {\n      this.sendcmsvideoRemoteSream(event);\n    };\n    this.sendvideopcPeer.onconnection = function () {};\n    this.sendvideopcPeer.ondatachannel = (event: any) => {};\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.sendvideoSSRC,\n      // audioDirection: 'sendrecv',\n      // videoDirection: 'sendrecv',\n      // videoDirection: 'inactive',\n    });\n  };\n  sendcmsvideoAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    if(SDP){\n      let desc = new RTCSessionDescription(SDP);\n      this.sendvideopcPeer.setRemoteDescription(desc);\n      this.sendvideopcPeer.createAnswer().then((sdp: any) => {\n        this.sendcmsvideoDescription(sdp);\n      });\n    }\n  };\n  sendcmsvideoDescription = (desc: any) => {\n    this.sendvideopcPeer.setLocalDescription(desc).then();\n  };\n  // 播放音频\n  sendcmsvideoRemoteSream = (e: any) => {\n    // console.log(e);\n    this.playvideolist.nativeElement.srcObject = e.stream;\n  };\n  sendcmsvideoError(err: any) {\n    console.log(err);\n  }\n\n  // 发送\n  // 开始接收\n  begincmsvideo = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: true,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          that.cmsvideoStream = stream;\n          that.cmsvideoCall();\n        })\n        .catch(this.cmsvideoError);\n    }\n  };\n  cmsvideoCall = () => {\n    this.cmsvideopcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.cmsvideoStream.getTracks().forEach((track: any) => {\n      this.cmsvideopcPeer.addTrack(track, this.cmsvideoStream);\n    });\n    this.cmsvideopcPeer.onaddstream = (event: any) => {\n      this.cmsvideoRemoteSream(event);\n    };\n    this.cmsvideopcPeer.onconnection = function () {};\n    this.cmsvideopcPeer.ondatachannel = (event: any) => {};\n    // sendonly 表示只发送数据，比如客户端推流到 SFU，那么会在自己的 Offer(or Answer) 中携带 senonly 属性\n    // recvonly 表示只接收数据，比如客户端向 SFU 订阅流，那么会在自己的 Offer(or Answer) 中携带 recvonly 属性\n    // sendrecv 表示可以双向传输，比如客户端加入到视频会议中，既要发布自己的流又要订阅别人的流，那么就需要在自己的 Offer(or Answer) 中携带 sendrecv 属性\n    // inactive 表示禁止发送数据，比如在基于 RTP 的视频会议中，主持人暂时禁掉用户 A 的语音，那么用户 A 的关于音频的媒体级别描述应该携带 inactive 属性，表示不能再发送音频数据。\n    this.rx.sendOffer({ SDP: 'web client sdp', channelID: this.channelID });\n    // audioDirection: 'sendrecv',\n    // // videoDirection: 'inactive',\n    // videoDirection: 'sendrecv',\n  };\n  cmsvideoAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.cmsvideopcPeer.setRemoteDescription(desc);\n    this.cmsvideopcPeer.createAnswer().then((sdp: any) => {\n      this.cmsvideoDescription(sdp);\n    });\n  };\n  cmsvideoDescription = (desc: any) => {\n    this.cmsvideopcPeer.setLocalDescription(desc).then();\n  };\n  // 无需播放\n  cmsvideoRemoteSream = (e: any) => {\n    // console.log(e);\n    // this.playvideolist.nativeElement.srcObject = e.stream;\n  };\n  cmsvideoError(err: any) {\n    console.log(err);\n  }\n}\n","<div class=\"box\" (mouseenter)=\"this._title.show = true\" (mouseleave)=\"this._title.show = false\">\n    <div class=\"hover\">\n        <div class=\"borderbox\">\n            &nbsp;&nbsp;\n            <div *ngIf=\"userID!=''\">{{userID}}</div>\n        </div>\n    </div>\n    <div class=\"voicebox\">\n        <div class=\"voice\" *ngIf=\"_title.voiceshow\">\n            <div class=\"name\" *ngIf=\"_title.voiceshow=='1'\">\n                呼叫中\n            </div>\n            <div class=\"bgcblue\" *ngIf=\"_title.voiceshow=='1'\"></div>\n            <div class=\"name\" *ngIf=\"_title.voiceshow=='2'\">\n                通话中\n            </div>\n            <div class=\"bgcgreen\" *ngIf=\"_title.voiceshow=='2'\"></div>\n        </div>\n    </div>\n    <div class=\"videoplay\">\n        <video #playvideolist [srcObject]=\"_title.src\" autoplay class=\"videoitem\"></video>\n    </div>\n    <div class=\"vide\" *ngIf=\"this._title.show\">\n        <div class=\"camera\">\n            <ul class=\"clearfix\">\n                <li *ngIf=\"type=='1'\">\n                    <div class=\"cameraimg\" (click)=\"closeVideo($event,_title)\"></div>\n                </li>\n                <li *ngIf=\"type=='2'\">\n                    <div class=\"cameraimg\" (click)=\"closeoneVideo($event,_title) \"></div>\n                </li>\n                <li *ngIf=\"type=='4'\">\n                    <div class=\"cameraimg\" (click)=\"closevideomeeting($event,_title) \"></div>\n                </li>\n                <li *ngIf=\"type=='1'&&audioCall\">\n                    <div class=\"voiceimg\" (click)=\"tit(title) \"></div>\n                </li>\n            </ul>\n        </div>\n    </div>\n</div>","import { Directive, ElementRef, OnInit, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[appDrag]'\r\n})\r\nexport class DragDirective implements OnInit {\r\n  constructor(public el: ElementRef) {\r\n  }\r\n  public isDown = false;\r\n  public disX:any; // 记录鼠标点击事件的位置 X\r\n  public disY:any; // 记录鼠标点击事件的位置 Y\r\n  private totalOffsetX = 0; // 记录总偏移量 X轴\r\n  private totalOffsetY = 0; // 记录总偏移量 Y轴\r\n  // 点击事件\r\n  @HostListener('mousedown', ['$event']) onMousedown(event:any) {\r\n    this.isDown = true;\r\n    this.disX = event.clientX;\r\n    this.disY = event.clientY;\r\n  }\r\n  // 监听document移动事件事件\r\n  @HostListener('document:mousemove', ['$event']) onMousemove(event:any) {\r\n    // 判断该元素是否被点击了。\r\n    if (this.isDown) {\r\n      this.el.nativeElement.style.left = this.totalOffsetX + event.clientX - this.disX + 'px';\r\n      this.el.nativeElement.style.top = this.totalOffsetY + event.clientY - this.disY + 'px';\r\n    }\r\n  }\r\n  // 监听document离开事件\r\n  @HostListener('document:mouseup', ['$event']) onMouseup(event:any) {\r\n    // 只用当元素移动过了，离开函数体才会触发。\r\n    if (this.isDown) {\r\n      this.totalOffsetX += event.clientX - this.disX;\r\n      this.totalOffsetY += event.clientY - this.disY;\r\n      this.isDown = false;\r\n    }\r\n  }\r\n  ngOnInit() {\r\n    this.el.nativeElement.style.position = 'relative';\r\n  }\r\n}\r\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChange,\n  SimpleChanges,\n  ViewChildren,\n} from '@angular/core';\nimport { NzFormatEmitEvent } from 'ng-zorro-antd/tree';\nimport { OverallService } from '../common/overall.service';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { Userlist } from '../protocol/rtc/resource';\nimport { AvService } from '../protocol/rtc/av.service';\nimport { TypeIndex } from './vod';\nimport { ResourceService } from '../protocol/resource/resource.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n@Component({\n  selector: 'app-vod',\n  templateUrl: './vod.component.html',\n  styleUrls: ['./vod.component.less'],\n})\nexport class VodComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() cmsmessage: any = '';\n  @Input() broadside: any;\n  blankindex = -1;\n  kflag: boolean = false;\n  cutblank: boolean = false;\n  msg: number = 4;\n  inputValue: any = '';\n  pnging: boolean = false;\n  ssiontype: boolean = false;\n  calltype: boolean = false;\n  item: number = 0;\n  nodes: any[] = [];\n  chatnav: any = '';\n  callnav: any = '';\n  hinttype = 2;\n  hint = false;\n  vodtree = true;\n  cmssend: any = '';\n  planting: any = undefined;\n  // 流参数\n  pcPeer: any = null;\n  uservalue = '';\n  operationclass = 'content';\n  page: number = 1; //第几页\n  pageSize: number = 4; //页的大小\n  total: number = 16; //总数量\n  totalpages = Math.ceil(this.total / this.pageSize); ///总共有几页\n  pagingclass = 'videofour';\n  leftsider: any;\n  subscription: any;\n  plantingscription: any;\n  inputeqipmentValue: any = '';\n  eqipmentValue: any = '';\n  plant: number = 1;\n  videolists: any = [];\n  activeIndex = -1;\n  type: number = -1;\n  userid: any = '';\n  full: boolean = false;\n  fullnav: any = '';\n  localSize: any = '';\n  localPage: any = '';\n  popup: boolean = false;\n  cutlimit: number = 0;\n  cutdata: any = '';\n  cutloctvideo: boolean = false;\n  cutvideoshow: boolean = false;\n  module: any;\n  constructor(\n    public el: ElementRef,\n    public rx: RxService,\n    private sendService: OverallService,\n    private datastate: ResourceService,\n    private AV: AvService,\n    private message: NzMessageService\n  ) {\n    const configuration = {};\n    this.pcPeer = new RTCPeerConnection(configuration);\n    this.subscription = this.sendService.sendsider$.subscribe((message) => {\n      this.leftsider = message;\n    });\n    this.plantingscription = this.sendService.plantingsendsider$.subscribe(\n      (message) => {\n        this.planting = message;\n        this.openplanting();\n      }\n    );\n    this.AV.onevideo$.subscribe((message) => {\n      this.videolists = message;\n    });\n    this.AV.transmitactive$.subscribe((message) => {\n      this.activeIndex = message.active;\n      this.page = Math.ceil((this.activeIndex + 1) / this.pageSize);\n    });\n    this.AV.videolocal$.subscribe((message) => {\n      if (message.length > 0) {\n        this.cutvideoshow = true;\n      } else {\n        this.cutvideoshow = false;\n      }\n    });\n  }\n  ngOnInit(): void {\n    document.oncontextmenu = function () {\n      return false;\n    };\n    this.AV.onevideosider(this.AV.onevideolist);\n    this.screenone(4);\n    this.ping();\n    this.module = this.datastate.module;\n\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.cmsmessage) {\n      if (this.cmsmessage.dstID == this.rx.userID) {\n        if (this.ssiontype == false) {\n          this.ssiontype = true;\n        } else {\n          return;\n        }\n      }\n    }\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        this.operationclass = 'content';\n      } else if (this.broadside == true) {\n        this.operationclass = 'sidebar';\n      }\n    }\n  }\n  judgeuser() {\n    for (let i = 0; i < this.AV.incominglist.length; i++) {\n      let data = this.AV.incominglist[i];\n      if (\n        data.callout == '1' &&\n        data.userName == this.videolists[this.blankindex].userID\n      ) {\n        this.rx.initiativeCloseChat(data.cmschat.dialogID);\n        this.AV.delete({ dialogID: data.cmschat.dialogID });\n      }\n    }\n    for (let i = 0; i < this.AV.chatlist.length; i++) {\n      let data = this.AV.chatlist[i];\n      if (\n        data.callout == '1' &&\n        data.cmschat.dstID == this.videolists[this.blankindex].userID\n      ) {\n        this.rx.initiativeCloseChat(data.cmschat.dialogID);\n      }\n    }\n    this.blankindex = -1;\n  }\n  openplanting() {\n    let judge = false;\n    var limit: any;\n    for (let i = 0; i < this.videolists.length; i++) {\n      if (this.videolists[i].userID != '') {\n        let items = this.videolists[i].userID;\n        if (items == this.planting.info.userID) {\n          judge = true;\n          limit = this.videolists[i].wang;\n        }\n      }\n    }\n    if (judge == false) {\n      let srcprice = 0;\n      if (this.activeIndex == -1) {\n        for (let i = 0; i < this.videolists.length; i++) {\n          if (this.videolists[i].hascall == false) {\n            srcprice = i;\n            break;\n          }\n        }\n        this.cutopen(srcprice, this.planting);\n      } else {\n        srcprice = this.activeIndex;\n        if (this.videolists[srcprice].hascall == true) {\n          this.popup = true;\n          this.cutlimit = srcprice;\n          this.cutdata = this.planting;\n        } else {\n          this.cutopen(srcprice, this.planting);\n        }\n      }\n    } else {\n      this.activeIndex = limit-1;\n      this.message.create('success', \"点播正在进行已跳转\");\n      this.page = Math.ceil(limit / this.pageSize);\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n  searchTree() {\n    this.uservalue = this.inputValue;\n  }\n  empty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  nzEvent(event: NzFormatEmitEvent): void {}\n  // 分屏事\n  // 视频显示1.4.6.9.12.16\n  screenone(event: number) {\n    this.pageSize = event;\n    this.ping();\n    if (this.pageSize == 4) {\n      this.pagingclass = 'videofour';\n    } else if (this.pageSize == 1) {\n      this.pagingclass = 'videofirst';\n    } else if (this.pageSize == 16) {\n      this.pagingclass = 'videosixteen';\n    } else if (this.pageSize == 12) {\n      this.pagingclass = 'videotwelve';\n    } else if (this.pageSize == 9) {\n      this.pagingclass = 'videonine';\n    } else if (this.pageSize == 6) {\n      this.pagingclass = 'videosix';\n    }\n    this.totalpages = Math.ceil(this.total / this.pageSize);\n    this.page = 1;\n  }\n  ping(): void {\n    this.pnging = !this.pnging;\n  }\n  tree(ev: any) {\n    if (ev.planting) {\n      if (ev.planting.info.userType == 2) {\n        this.hint = true;\n        this.hinttype = 3;\n      } else {\n        if (ev.planting.info.type.devStatus == '0') {\n          this.hinttype = 2;\n          this.hint = true;\n        } else if (ev.planting.info.type.devStatus == '1') {\n          this.sendService.plantingsendsider(ev.planting);\n        }\n      }\n    } else {\n      this.outer.emit(ev);\n    }\n  }\n  calltypes(ev: any) {\n    this.calltype = false;\n  }\n\n  titles(ev: number): void {\n    this.item = ev;\n  }\n  run(ev: any) {\n    this.hint = false;\n  }\n  spiltscreen(ev: any) {\n    this.hinttype = ev;\n    this.hint = true;\n  }\n  //点击前一个\n  first() {\n    if (this.page > 1) {\n      //page减1让\n      this.page--;\n    }\n  }\n  //点击后一个\n  second() {\n    //判断是否小于最大页数\n    if (this.page < this.totalpages) {\n      this.page++;\n    }\n  }\n  sider() {\n    this.leftsider = !this.leftsider;\n    this.sendService.sendsider(this.leftsider);\n  }\n  qipment() {\n    this.eqipmentValue = this.inputeqipmentValue;\n  }\n  qipmentempty() {\n    this.inputeqipmentValue = '';\n    this.eqipmentValue = '';\n  }\n  //点击前一个\n  prePage() {\n    if (this.page > 1) {\n      //page减1让\n      this.page--;\n    }\n  }\n  //点击后一个\n  nextPage() {\n    //判断是否小于最大页数\n    if (this.page < this.totalpages) {\n      this.page++;\n    }\n  }\n  videoBorder(ev: any) {\n    if (this.type == ev) {\n      this.activeIndex = -1;\n      this.type = -1;\n      for (let i = 0; i < this.videolists.length; i++) {\n        this.videolists[i].activeIndex = false;\n      }\n    } else {\n      this.activeIndex = ev;\n      this.type = ev;\n      for (let i = 0; i < this.videolists.length; i++) {\n        this.videolists[i].activeIndex = false;\n      }\n      this.videolists[ev].activeIndex = true;\n    }\n    if (this.videolists[ev].dstID != '') {\n      this.userid = this.videolists[ev].dstID;\n    } else {\n      this.userid = '';\n    }\n  }\n  videoMagnify(i: any) {\n    if (this.full == false) {\n      if (this.pagingclass == 'videofirst') {\n        this.full = false;\n      } else {\n        this.fullnav = this.pagingclass;\n        this.pagingclass = 'videofirst';\n        this.full = true;\n        this.localSize = this.pageSize;\n        this.pageSize = 1;\n        this.totalpages = Math.ceil(this.total / this.pageSize);\n        this.localPage = this.page;\n        this.page = i + 1;\n      }\n    } else if (this.full == true) {\n      this.pagingclass = this.fullnav;\n\n      this.full = false;\n      this.pageSize = this.localSize;\n      this.totalpages = Math.ceil(this.total / this.localSize);\n      this.page = this.localPage;\n    }\n  }\n\n  // 拖拽进入\n  eventinto(e: any, item: any) {\n    // console.log('进入目标元素')\n  }\n  eventtarget(ev: any, item: any) {\n    // console.log('在目标元素中拖拽');\n    ev.preventDefault();\n  }\n  eventleave(ev: any, item: any) {\n    // console.log('拖放离开目标元素');\n  }\n  eventdrop(ev: any, limit: any) {\n    // console.log('拖放');\n    var item = ev.dataTransfer.getData('item');\n    var type = ev.dataTransfer.getData('type');\n    var devStatus = ev.dataTransfer.getData('devStatus');\n    let data = {\n      info: {\n        userID: item,\n        userType: type,\n        devStatus: devStatus,\n      },\n    };\n    if (data.info.userType == 2) {\n      this.spiltscreen(3);\n      return;\n    } else {\n      if (data.info.devStatus == 0) {\n        this.spiltscreen(2);\n        return;\n      }\n    }\n    if (this.videolists[limit].hascall == true) {\n      this.popup = true;\n      this.cutlimit = limit;\n      this.cutdata = data;\n    } else {\n      let judge = false;\n      for (let i = 0; i < this.videolists.length; i++) {\n        if (this.videolists[i].userID) {\n          let items = this.videolists[i].userID;\n          if (item == items) {\n            judge = true;\n            limit = this.videolists[i].wang;\n          }\n        }\n      }\n      if (judge == false) {\n        if (this.videolists[limit].hascall == true) {\n          this.popup = true;\n        } else {\n          this.cutopen(limit, data);\n        }\n      } else {\n        this.page = Math.ceil(limit / this.pageSize);\n        this.activeIndex = limit-1;\n        this.message.create('success', \"点播正在进行已跳转\");\n      }\n    }\n  }\n  cutout() {\n    this.popup = false;\n  }\n  cutconfirm() {\n    //关闭\n    this.rx.closrVideo(this.videolists[this.cutlimit].dstID);\n    this.videolists[this.cutlimit].hascall = false;\n    this.videolists[this.cutlimit].dstID = '';\n    this.popup = false;\n  }\n  cutopen(limit: any, dataID: any) {\n    this.AV.onevideolist[limit].type = TypeIndex.DianBo;\n    this.AV.onevideolist[limit].userID = dataID.info.userID;\n    this.AV.onevideolist[limit].hascall = true;\n    this.activeIndex = limit;\n    // this.AV.onevideolist[limit].dstID==dataID.info.userID\n    this.AV.onevideosider(this.AV.onevideolist);\n    this.rx.openVideo(dataID);\n  }\n  cutvideo() {\n    if (this.cutloctvideo == false) {\n      this.outer.emit({ vodvideoshow: '1' });\n      this.cutloctvideo = !this.cutloctvideo;\n    } else {\n      this.outer.emit({ vodvideoshow: '0' });\n      this.cutloctvideo = !this.cutloctvideo;\n    }\n  }\n}\n","<div class=\"box\" class=\"{{ operationclass }}\">\n    <!-- 视频点播 -->\n    <div class=\"sider\" *ngIf=\"leftsider\">\n        <div class=\"title\">\n            <div class=\"alluser\">\n                <div class=\"all\" [ngClass]=\"item == 0 ? 'li-active' : ''\" (click)=\"titles(0)\">用户</div>\n                <div class=\"duijiang \" *ngIf=\"module.device.enable\" [ngClass]=\"item == 1 ? 'li-active' : ''\" (click)=\"titles(1)\">设备</div>\n            </div>\n            <div class=\"search\" [style.display]=\"item == 0 ? 'block' : 'none'\">\n                <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\n                    <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"searchTree()\" />\n                </nz-input-group>\n                <ng-template #prefixTemplateUser>\n                    <i nz-icon nzType=\"search\" class=\"icon\"></i>\n                </ng-template>\n                <ng-template #inputClearTpl>\n                    <div *ngIf=\"inputValue\" class=\"icon\">\n                        <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"empty()\"></i>\n                    </div>\n                </ng-template>\n            </div>\n            <div class=\"search\" [style.display]=\"item == 1 ? 'block' : 'none'\">\n                <nz-input-group [nzPrefix]=\"qipmentTemplate\" [nzSuffix]=\"qipmentClearTpl\">\n                    <input type=\"text\" nz-input [(ngModel)]=\"inputeqipmentValue\" (keyup.enter)=\"qipment()\" />\n                </nz-input-group>\n                <ng-template #qipmentTemplate>\n                    <i nz-icon nzType=\"search\" class=\"icon\"></i>\n                </ng-template>\n                <ng-template #qipmentClearTpl>\n                    <div *ngIf=\"inputeqipmentValue\" class=\"icon\">\n                        <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"qipmentempty()\"></i>\n                    </div>\n                </ng-template>\n            </div>\n        </div>\n        <div class=\"tree\" [style.display]=\"item == 0 ? 'block' : 'none'\">\n            <app-tree [vodtree]=\"vodtree\" (outer)=\"tree($event)\" [uservalue]=\"uservalue\"></app-tree>\n        </div>\n        <div class=\"tree\" [style.display]=\"item == 1 ? 'block' : 'none'\">\n            <app-equipmenttree [eqipmentValue]=\"eqipmentValue\"></app-equipmenttree>\n        </div>\n    </div>\n    <div class=\"select\">\n        <div class=\"selectbox\">\n            <div class=\"menu\" (click)=\"sider()\">\n                <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\n        ><i\n          nz-icon\n          nzType=\"menu-unfold\"\n          nzTheme=\"outline\"\n          *ngIf=\"!leftsider\"\n        ></i>\n            </div>\n            <div style=\"margin-left: 10px; width: 100px;line-height: 50px;\">视频调度</div>\n            <ul class=\"clearfix\" style=\"width: 100%;\">\n                <li class=\"hover\" nz-dropdown [nzDropdownMenu]=\"address\" [nzPlacement]=\"'bottomRight'\" [nzTrigger]=\"'click'\">\n                    <div style=\"display: flex\" class=\"appstorefen\">\n                        <div style=\"height: 47px; \">\n                            <i nz-icon nzType=\"appstore\" nzTheme=\"outline\" style=\"font-size: 16px; margin-top: 18px;\"></i>\n                        </div>\n                        <div style=\"line-height: 50px;\" class=\"fenping\">分屏</div>\n                    </div>\n                </li>\n                <li *ngIf=\"cutvideoshow\">\n                    <div style=\"display: flex\" class=\"appstorefen\">\n                        <div style=\"height: 47px;\">\n                            <i nz-icon nzType=\"close\" nzTheme=\"outline\" style=\"font-size: 16px; margin-top: 18px;\"></i>\n                        </div>\n                        <div style=\"line-height: 50px;\" class=\"fenping\" (click)=\"cutvideo()\" *ngIf=\"cutloctvideo==true\">本显</div>\n                        <div style=\"line-height: 50px;\" class=\"fenping\" (click)=\"cutvideo()\" *ngIf=\"cutloctvideo==false\">本隐</div>\n                    </div>\n                </li>\n            </ul>\n            <nz-dropdown-menu #address=\"nzDropdownMenu\">\n                <div class=\"pnging\">\n                    <div class=\"showbox\" (click)=\"screenone(1)\">\n                        <div>\n                            <img src=\"assets/img/screen1_01.png \" alt=\" \" />\n                        </div>\n                        <div class=\"cut\">1屏显示</div>\n                    </div>\n                    <div class=\"showbox\" (click)=\"screenone(4)\">\n                        <div>\n                            <img src=\"assets/img/screen4_01.png \" alt=\" \" />\n                        </div>\n                        <div class=\"cut\">4屏显示</div>\n                    </div>\n                    <div class=\"showbox\" (click)=\"screenone(9)\">\n                        <div>\n                            <img src=\"assets/img/screen9_01.png \" alt=\" \" />\n                        </div>\n                        <div class=\"cut\">9屏显示</div>\n                    </div>\n                    <div class=\"showbox\" (click)=\"screenone(12)\">\n                        <div>\n                            <img src=\"assets/img/screen12_01.png \" alt=\" \" />\n                        </div>\n                        <div class=\"cut\">12屏显示</div>\n                    </div>\n                    <div class=\"showbox\" (click)=\"screenone(16)\">\n                        <div>\n                            <img src=\"assets/img/screen16_01.png \" alt=\" \" />\n                        </div>\n                        <div class=\"cut\">16屏显示</div>\n                    </div>\n                    <div class=\"showbox\"></div>\n                    <div class=\"showbox\"></div>\n                    <div class=\"showbox\"></div>\n                </div>\n            </nz-dropdown-menu>\n        </div>\n        <div class=\"videobox\">\n            <ng-container *ngFor=\"let title of videolists; let i = index\">\n                <div [style.display]=\"\n          i >= (page - 1) * pageSize && i < page * pageSize\n            ? 'block'   \n            : 'none'\n        \" class=\"compomemtbox\" (click)=\"videoBorder(i)\" [ngClass]=\"activeIndex == i ? 'addborder' : 'removerborder'\" class=\"{{ pagingclass }} \">\n                    <div (mouseenter)=\"this.title.show = true\" (mouseleave)=\"this.title.show = false\" (dblclick)=\"videoMagnify(i)\" class=\"videolistbox\" (dragenter)=\"eventinto($event, i)\" (dragover)=\"eventtarget($event, i)\" (dragleave)=\"eventleave($event, i)\" (drop)=\"eventdrop($event, i)\">\n                        <app-onevideo [title]=\"title\" [type]=\"title.type\" [channelID]=\"title.channelID\" [userID]=\"title.userID\" [cmschat]=\"title.cmschat\"></app-onevideo>\n                    </div>\n                </div>\n            </ng-container>\n        </div>\n        <div class=\"fenyebox\">\n            <span (click)=\"prePage()\" class=\"prePage\">上一页</span>\n            <span>{{ page }}/{{ totalpages }}</span>\n            <span (click)=\"nextPage()\" class=\"nextPage\">下一页</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n        </div>\n    </div>\n    <div *ngIf=\"hint\">\n        <app-hint (outer)=\"run($event)\" [hinttype]=\"hinttype\"></app-hint>\n    </div>\n</div>\n<div class=\"popupbox\" *ngIf=\"popup\">\n    <div class=\"popup\">\n        <div class=\"nav\" appDrag>\n            <div class=\"setname\">\n                <div>提示</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"cutout()\"></i>\n            </div>\n            <div class=\"sethint\">当前已有视频是否切换</div>\n            <div class=\"sethintbutton\">\n                <button (click)=\"cutconfirm()\">确定</button>\n                <button (click)=\"cutout()\">取消</button>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { RxService } from '../../protocol/rtc/rx.service';\n@Component({\n  selector: 'app-addmember',\n  templateUrl: './add-member.component.html',\n  styleUrls: ['./add-member.component.less'],\n})\nexport class AddmemberComponent implements OnInit {\n  @Input() list: any = '';\n  @Input() userListtype: any = '';\n  @Input() userlist: any = '';\n  @Output() private outer = new EventEmitter<any>();\n  inputValue: string = '';\n  uservalue: string = '';\n  arr: any = [];\n  shows: boolean = true;\n  addmember: boolean = false;\n  member: any = [];\n  constructor(private rx: RxService) {}\n  ngOnInit(): void {}\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.list) {\n      this.chi(this.list.childs);\n    }\n    if (changes.userListtype) {\n      this.merge();\n      this.addright();\n    }\n  }\n  chi(obj: any) {\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n  merge() {\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      if (arr == this.rx.userID) {\n        this.arr[i].info.userNameuserName = '本机';\n        this.arr[i].info.type = { devStatus: '1' };\n      }\n      for (let j = 0; j < this.userListtype.length; j++) {\n        let type: any = this.userListtype[j];\n        if (arr == type.userID) {\n          this.arr[i].info.type = type;\n        }\n      }\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  sendParent(ev: boolean) {\n    if (ev == false) {\n      this.member = [];\n    }\n    let data = {\n      addmember: this.addmember,\n      member: this.member,\n    };\n    this.outer.emit(data);\n  }\n  addright(ev?: any) {\n    if (this.member == '') {\n      for (let i = 0; i < this.arr.length; i++) {\n        if (this.arr[i].info.userName == '本机') {\n          this.member.push(this.arr[i].info);\n        }\n      }\n    }\n    if (ev) {\n      let data = this.member;\n      data.push(ev);\n      for (let i = 0; i < data.length - 1; i++) {\n        for (let j = i + 1; j < data.length; j++) {\n          if (data[i].userID == data[j].userID) {\n            data.splice(j, 1);\n            j--;\n          }\n        }\n      }\n    }\n    if (this.userlist) {\n      let data = this.member;\n      for (let i = 0; i < this.userlist.length; i++) {\n        let user = this.userlist[i];\n        for (let j = 0; j < data.length; j++) {\n          if (user == data[j].userID) {\n            data.splice(j, 1);\n            j--;\n          }\n        }\n      }\n    }\n  }\n  removeright(ev: any) {\n    for (let i = 0; i < this.member.length; i++) {\n      if (this.member[i].userID == ev.userID) {\n        this.member.splice(i, 1);\n        i--;\n      }\n    }\n  }\n  searchTree() {\n    this.uservalue = this.inputValue;\n  }\n  empty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n}\n","<div class=\"box\">\n    <div class=\"navbox\">\n        <div class=\"nav\" cdkDrag>\n            <div class=\"setname\" cdkDragHandle>\n                <div>添加成员</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent(false)\"></i>\n            </div>\n            <div class=\"setnav\">\n                <div class=\"setleft\">\n                    <div class=\"title\">联系人分组</div>\n                    <div class=\"inputbox\">\n                        <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\n                            <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"searchTree()\" />\n                        </nz-input-group>\n                        <ng-template #prefixTemplateUser>\n                            <i nz-icon nzType=\"search\" class=\"icon\"></i>\n                        </ng-template>\n                        <ng-template #inputClearTpl>\n                            <div *ngIf=\"inputValue\" class=\"icon\">\n                                <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"empty()\"></i>\n                            </div>\n                        </ng-template>\n                    </div>\n                    <div class=\"list\">\n                        <div (click)=\"show()\" class=\"listbox\">\n                            <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\">\n                                <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n                            </div>\n                            <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\">\n                                <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n                            </div>\n                            <div class=\"root\">\n                                {{ list.root }}\n                            </div>\n                            <div class=\"blank\"></div>\n                        </div>\n                        <div [style.display]=\"shows ? 'block' : 'none'\">\n                            <div *ngFor=\"let item of arr; let i = index\">\n                                <div class=\"itembox\" (mouseenter)=\"item.info.show = true\" (mouseleave)=\"item.info.show = false\" *ngIf=\"item.info.userName\">\n                                    <div class=\"itemimg\">\n                                        <div><img src=\"assets/img/人员.png\" alt=\"\" /></div>\n                                    </div>\n                                    <div class=\"itemname\">\n                                        {{ item.info.userName }}\n                                    </div>\n                                    <div class=\"itemtpye\" *ngIf=\"item.info.type\">\n                                        <div *ngIf=\"item.info.type.devStatus == 0\" style=\"color: #a09f9f\">\n                                            离线\n                                        </div>\n                                        <div *ngIf=\"item.info.type.devStatus == 1\" style=\"color: #5898d7\">\n                                            在线\n                                        </div>\n                                        <div *ngIf=\"item.info.type.devStatus == 2\" style=\"color: #3ca02d\">\n                                            通话\n                                        </div>\n                                    </div>\n                                    <div class=\"itemright\">\n                                        <img src=\"assets/img/向右添加.png\" alt=\"\" [style.display]=\"item.info.show ? 'block' : 'none'\" (click)=\"addright(item.info)\" />\n                                    </div>\n                                </div>\n                                <div *ngIf=\"item.info.groupName\" class=\"root\">\n                                    {{ item.info.groupName }}\n                                </div>\n                                <div class=\"childs\" *ngIf=\"item.info.childs\">\n                                    <div (click)=\"item.show = !item.show\" class=\"listbox\">\n                                        <div [style.display]=\"item.show ? 'block' : 'none'\" class=\"imgbox\">\n                                            <img src=\"assets/img/white_branch_down.png \" alt=\" \" />\n                                        </div>\n                                        <div [style.display]=\"!item.show ? 'block' : 'none'\" class=\"imgbox\">\n                                            <img src=\"assets/img/white_branch_right.png \" alt=\" \" />\n                                        </div>\n                                        <div class=\"root\">\n                                            {{ item.info.root }}\n                                        </div>\n                                        <div class=\"blank\"></div>\n                                    </div>\n                                    <div [style.display]=\"item.show ? 'block' : 'none'\">\n                                        <div *ngFor=\"let items of item.info.childs; let i = index\">\n                                            <div *ngIf=\"items.info.groupName\" class=\"groupName\">\n                                                {{ items.info.groupName }}\n                                            </div>\n                                            <div *ngIf=\"items.info.root\" class=\"groupName\">\n                                                {{ items.info.root }}\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"setright\">\n                    <div class=\"selected\">已选人员</div>\n                    <div class=\"userlest\">\n                        <div *ngFor=\"let data of member; let i = index\">\n                            <div class=\"userlestbox\">\n                                <div class=\"usname\">\n                                    {{data.userName}}\n                                </div>\n                                <div class=\"usimg\">\n                                    <img src=\"assets/img/canceladd.png\" alt=\"\" (click)=\"removeright(data)\">\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"setbutton\">\n                    <button (click)=\"sendParent(true)\">确定</button>\n                    <button (click)=\"sendParent(false)\">取消</button>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import {\r\n  Component,\r\n  OnInit,\r\n  Input,\r\n  ElementRef,\r\n  ViewChild,\r\n  AfterViewInit,\r\n} from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n  selector: 'app-image-display',\r\n  templateUrl: './image-display.component.html',\r\n  styleUrls: ['./image-display.component.less'],\r\n})\r\nexport class ImageDisplayComponent implements OnInit, AfterViewInit {\r\n  @Input() photo: any;\r\n  @ViewChild('img') imgContent?: any;\r\n  @ViewChild('imgParent') imgParentDiv?:any;\r\n  imgWidth: number=0;\r\n  imgHeight: number=0;\r\n  offsetX: number=0;\r\n  offsetY: number=0;\r\n\r\n  stop: boolean = false;\r\n  constructor(private _ngbActiveModal: NgbActiveModal) {}\r\n\r\n  ngOnInit() {\r\n    // console.log(this.photo)\r\n    // this.imgContent.nativeElement.src = this.photo;\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.imgContent.nativeElement.onload = () => {\r\n      let parentDivWidth = this.imgParentDiv.nativeElement.clientWidth;\r\n      let imgWidth = this.imgContent.nativeElement.clientWidth;\r\n      this.imgContent.nativeElement.style.left =\r\n        (parentDivWidth - imgWidth) / 2 + 'px';\r\n    };\r\n  }\r\n\r\n  close(): void {\r\n    this._ngbActiveModal.close();\r\n  }\r\n\r\n  clickPlus() {\r\n    this.imgWidth = this.imgContent.nativeElement.clientWidth;\r\n    this.imgHeight = this.imgContent.nativeElement.clientHeight;\r\n    let parentDivWidth = this.imgParentDiv.nativeElement.clientWidth;\r\n    if (this.imgWidth < 1920) {\r\n      this.imgContent.nativeElement.style.width = this.imgWidth * 1.1 + 'px';\r\n      this.imgContent.nativeElement.style.height = this.imgHeight * 1.1 + 'px';\r\n    }\r\n  }\r\n\r\n  clickMinus() {\r\n    this.imgWidth = this.imgContent.nativeElement.clientWidth;\r\n    this.imgHeight = this.imgContent.nativeElement.clientHeight;\r\n    if (this.imgWidth > 300) {\r\n      this.imgContent.nativeElement.style.width = this.imgWidth / 1.1 + 'px';\r\n      this.imgContent.nativeElement.style.height = this.imgHeight / 1.1 + 'px';\r\n    }\r\n  }\r\n\r\n  setPosition($event: any) {\r\n    if ($event.button == 0) {\r\n      this.offsetX = $event.pageX - this.imgContent.nativeElement.offsetLeft;\r\n      this.offsetY = $event.pageY - this.imgContent.nativeElement.offsetTop;\r\n      this.stop = false;\r\n    }\r\n    return false; //阻止默认事件或冒泡\r\n  }\r\n\r\n  changePosition($event: any) {\r\n    this.imgContent.nativeElement.style.left =\r\n      $event.pageX - this.offsetX + 'px';\r\n    this.imgContent.nativeElement.style.top =\r\n      $event.pageY - this.offsetY + 'px';\r\n    return false; //阻止默认事件或冒泡\r\n  }\r\n\r\n  stopPosition($event: any) {\r\n    //取消鼠标拖拽事件\r\n    this.stop = true;\r\n  }\r\n}\r\n","<div class=\"container-fluid\">\r\n  <div class=\"modal-header\">\r\n    <!-- <span aria-hidden=\"true\" class=\"close\" aria-label=\"Close\" (click)=\"close()\">&times;</span> -->\r\n    <h5 class=\"modal-title text-danger\">&nbsp;</h5>\r\n    <div class=\"closebox\" (click)=\"close()\">\r\n      <i class=\"iconfont icon-guanbi\"></i>\r\n    </div>\r\n  </div>\r\n  <div #imgParent class=\"img-content\">\r\n    <img\r\n      class=\"img\"\r\n      #img\r\n      [src]=\"photo\"\r\n    />\r\n  </div>\r\n  <div class=\"modal-footer\">\r\n    <i\r\n      (click)=\"clickPlus()\"\r\n      style=\"margin-right: 20px\"\r\n      class=\"fa fa-search-plus fa-2x\"\r\n      aria-hidden=\"true\"\r\n    ></i\r\n    ><i\r\n      (click)=\"clickMinus()\"\r\n      class=\"fa fa-search-minus fa-2x\"\r\n      aria-hidden=\"true\"\r\n    ></i>\r\n  </div>\r\n</div>\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport axios from 'axios';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { OverallService } from '../common/overall.service';\nimport { RxService } from '../protocol/rtc/rx.service';\ndeclare var MediaRecorder: any;\nimport { WebService } from '../protocol/rtc/web.service';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport {ImageDisplayComponent} from '../components/image-display/image-display.component'\n@Component({\n  selector: 'owoMessage',\n  templateUrl: './message.component.html',\n  styleUrls: ['./message.component.less'],\n})\nexport class  OwoMessageComponent implements OnInit {\n  @ViewChild('message') message: any;\n  @ViewChild('messagecord') messagecord: any;\n  @ViewChild('fileInput') fileInput: any;\n  @ViewChild('filevide') filevide: any;\n  @ViewChild('reminderbgc') reminderbgc: any;\n  @Output() private outer = new EventEmitter<any>();\n  @Input() chatnav: any;\n  @Input() cmsmessage: any;\n  @Input() discussionmessane: any;\n  @Input() talkgroupitem: any;\n  @Input() cmssend: any;\n  list: any = [];\n  textarea: string = '';\n  ssiontype: boolean = false;\n  talkgroup: boolean = false;\n  chatnavtype: boolean = false;\n  talkgrouplist: any = '';\n  setting: boolean = false;\n  information: boolean = false;\n  dstID: any = ''; //目标id\n  discussionid: any = '';\n  messagelist: any = [];\n  messagedome: any;\n  url = '/apidata/chfs';\n  parameter: any;\n  httpOptions = {\n    headers: new HttpHeaders({}),\n  };\n  reminder: boolean = false;\n  remindertimer: number = 0;\n  setTimeouttimer: any = '';\n  remindertype: boolean = false;\n  mediaRecorder: any = null;\n  chunks: any = [];\n  timestamp: any = '';\n  gamemuiscs: any = '';\n  muisctime: any = '';\n  wsscription: any;\n  msgList: any = [];\n  msgCount: any = 0;\n  count: any = 100;\n  offset: any = 0;\n  constructor(\n    private rx: RxService,\n    private http: HttpClient,\n    private messageser: NzMessageService,\n    private sendService: OverallService,\n    private ws: WebService,\n    private ngbModalService: NgbModal,\n  ) {}\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    // 1v1\n    if (changes.chatnav != undefined) {\n      if (this.chatnav == '') {\n      } else {\n        this.dstID = this.chatnav.info.userID;\n        this.chatnavtype = true;\n        this.list.push(this.chatnav.info.type);\n      }\n    }\n\n    // 1v1对讲\n    if (changes.cmsmessage != undefined) {\n      this.chatnavtype = true;\n      if (this.dstID == '') {\n        this.dstID = this.cmsmessage.srcID;\n        this.list.push({ userName: this.cmsmessage.srcID });\n        let timer = this.getNowFormatDate();\n        if (this.cmsmessage.msgType == 1) {\n          this.messagelist.push({\n            message: this.cmsmessage.msgInfo,\n            timer: timer,\n            type: 1,\n            msgType: '1',\n            filetype: 1,\n          });\n          setTimeout(() => {\n            this.scrollToBottom();\n          }, 1);\n        } else if (this.cmsmessage.msgType == 2) {\n          this.messagelist.push({\n            message:\n              'http://localhost:4200/apidata/chfs/shared/msgfile/' +\n              this.cmsmessage.msgInfo,\n            timer: timer,\n            type: 1,\n            msgType: 7,\n            audioLen: this.cmsmessage.audioLen,\n            play: false,\n          });\n        } else if (this.cmsmessage.msgType == 3) {\n          this.messagelist.push({\n            message:\n              'http://localhost:4200/apidata/chfs/shared/msgfile/' +\n              this.cmsmessage.msgInfo,\n            timer: timer,\n            type: 1,\n            msgType: '3',\n            filetype: 3,\n          });\n          setTimeout(() => {\n            this.scrollToBottom();\n          }, 1);\n        } else if (this.cmsmessage.msgType == 4) {\n          this.sendshow(this.cmsmessage.msgInfo);\n        } else if (this.cmsmessage.msgType == 5) {\n          this.sendcome(this.cmsmessage.msgInfo);\n        }\n      }\n      //cms发送的信息1v1信息\n      else if (\n        this.cmsmessage.srcID == this.dstID &&\n        this.cmsmessage.dstID == this.rx.userID\n      ) {\n        if (this.cmsmessage.msgType == 1) {\n          let timer = this.getNowFormatDate();\n          this.messagelist.push({\n            message: this.cmsmessage.msgInfo,\n            timer: timer,\n            type: 1,\n            msgType: '1',\n          });\n          setTimeout(() => {\n            this.scrollToBottom();\n          }, 1);\n        } else if (this.cmsmessage.msgType == 3) {\n          this.sendshow(this.cmsmessage.msgInfo);\n        } else if (this.cmsmessage.msgType == 4) {\n          this.sendshow(this.cmsmessage.msgInfo);\n        } else if (this.cmsmessage.msgType == 5) {\n          this.sendcome(this.cmsmessage.msgInfo);\n        }\n      }\n    }\n    if (changes.discussionmessane != undefined) {\n      if (this.discussionmessane != '') {\n        if (this.discussionid != this.discussionmessane.dialogID) {\n          this.messagelist = [];\n        }\n        let memList = this.discussionmessane.memList.split(';');\n        for (let i = 0; i < memList.length; i++) {\n          if (memList[i] == this.rx.userID) {\n            if (this.discussionmessane.msgType == 1) {\n              let timer = this.getNowFormatDate();\n              this.messagelist.push({\n                message: this.discussionmessane.msgInfo,\n                timer: timer,\n                type: 1,\n                msgType: '1',\n              });\n              setTimeout(() => {\n                this.scrollToBottom();\n              }, 1);\n            } else if (this.discussionmessane.msgType == 3) {\n              this.sendshow(this.discussionmessane.msgInfo);\n            } else if (this.discussionmessane.msgType == 4) {\n              this.sendshow(this.discussionmessane.msgInfo);\n            }\n          }\n        }\n        this.talkgroup = true;\n        for (let i = 0; i < memList.length; i++) {\n          if (memList[i] == '') {\n            memList.splice(i, 1);\n          }\n        }\n        for (let i = 0; i < memList.length; i++) {\n          if (memList[i] == this.rx.userID) {\n            memList.splice(i, 1);\n          }\n        }\n        this.talkgrouplist = memList;\n        this.discussionid = this.discussionmessane.dialogID;\n      }\n    }\n    // 1v多 创建讨论组\n    if (changes.talkgroupitem != undefined) {\n      if (this.talkgroupitem != '') {\n        this.discussionid = '';\n        this.talkgrouplist = '';\n        this.messagelist = [];\n        let temporary = this.talkgroupitem;\n        if (temporary.talkGroupID) {\n          this.discussionid = temporary.talkGroupID;\n          this.rx.addTemporaryinformation(\n            temporary.talkGroupID,\n            temporary.talkName,\n            temporary.member\n          );\n        } else if (temporary.videoMeetID) {\n          this.discussionid = temporary.videoMeetID;\n          this.rx.addTemporaryinformation(\n            temporary.videoMeetID,\n            temporary.videoName,\n            temporary.member\n          );\n        } else if (temporary.audioMeetID) {\n          this.discussionid = temporary.audioMeetID;\n          this.rx.addTemporaryinformation(\n            temporary.audioMeetID,\n            temporary.audioName,\n            temporary.member\n          );\n        }\n        this.talkgroup = true;\n        let member = this.talkgroupitem.member.split(';');\n        for (let i = 0; i < member.length; i++) {\n          if (member[i] == '') {\n            member.splice(i, 1);\n          }\n        }\n        for (let i = 0; i < member.length; i++) {\n          if (member[i] == this.rx.userID) {\n            member.splice(i, 1);\n          }\n        }\n        this.talkgrouplist = member;\n      }\n    }\n    if (changes.cmssend) {\n      if (this.cmssend != '') {\n        this.list = [];\n        this.chatnavtype = true;\n        this.dstID = this.cmssend.srcID;\n        this.list.push({ userName: this.cmssend.srcID });\n        if (this.cmssend.msgType == 1) {\n          let timer = this.getNowFormatDate();\n          this.messagelist.push({\n            message: this.cmssend.msgInfo,\n            timer: timer,\n            type: 1,\n            msgType: '1',\n          });\n          setTimeout(() => {\n            this.scrollToBottom();\n          }, 1);\n        } else if (this.cmssend.msgType == 3) {\n          let timer = this.getNowFormatDate();\n          this.messagelist.push({\n            message: this.cmssend.msgInfo,\n            timer: timer,\n            type: 1,\n            msgType: '3',\n          });\n          setTimeout(() => {\n            this.scrollToBottom();\n          }, 1);\n        }\n      }\n    }\n  }\n\n  ngOnInit(): void {\n    this.add();\n    if (this.dstID != '') {\n      this.rx.getmessagesum(this.setdialogID(this.dstID, this.rx.userID), '0');\n    } else {\n      // console.log('qunzu')\n      this.rx.getmessagesum(this.discussionid, '1');\n    }\n    this.wsscription = this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n      switch (respcmdid) {\n        case state.OWO_CMD_MSGDLG_GET_MSG_COUNT + 1: {\n          if (\n            resultdata.dialogID == this.setdialogID(this.dstID, this.rx.userID)\n          ) {\n            this.msgCount = resultdata.msgCount;\n            if (this.msgCount < 100) {\n              this.rx.getmessagerecord(\n                this.setdialogID(this.dstID, this.rx.userID),\n                '0',\n                '0',\n                this.msgCount\n              );\n              setTimeout(() => {\n                this.scrollToBottom();\n              }, 1000);\n            } else {\n              this.rx.getmessagerecord(\n                this.setdialogID(this.dstID, this.rx.userID),\n                '0',\n                this.offset,\n                this.count\n              );\n              setTimeout(() => {\n                this.scrollToBottom();\n              }, 1000);\n            }\n          }\n          if (resultdata.dialogID == this.discussionid) {\n            this.msgCount = resultdata.msgCount;\n            if (this.msgCount < 100) {\n              this.rx.getmessagerecord(\n                this.discussionid,\n                '0',\n                '0',\n                this.msgCount\n              );\n              setTimeout(() => {\n                this.scrollToBottom();\n              }, 1000);\n            } else {\n              this.rx.getmessagerecord(\n                this.discussionid,\n                '0',\n                this.offset,\n                this.count\n              );\n              setTimeout(() => {\n                this.scrollToBottom();\n              }, 1000);\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_MSGDLG_GET_MSG_RECORD + 1: {\n          if (\n            resultdata.dialogID == this.setdialogID(this.dstID, this.rx.userID)\n          ) {\n            this.msgList = resultdata.msgList;\n            this.setmessagelist(this.msgList);\n          }\n          if (resultdata.dialogID == this.discussionid) {\n            this.msgList = resultdata.msgList;\n            this.setdiscussionidlsit(this.msgList);\n          }\n          break;\n        }\n        default:\n          break;\n      }\n    });\n  }\n  ngAfterViewInit(): void {\n    this.scrollToBottom();\n    let mess: any = this.message.nativeElement;\n    mess.onscroll = () => {\n      if (mess.scrollTop == 0) {\n        this.getrecord();\n        mess.scrollTop = 2;\n      }\n    };\n  }\n  \n  ngOnDestroy() {\n    this.wsscription.unsubscribe();\n  }\n  setdialogID(str1: any, str2: any) {\n    let result = str1.localeCompare(str2);\n    if (result > 0) {\n      return str2 + '_' + str1;\n    } else {\n      return str1 + '_' + str2;\n    }\n  }\n  getrecord() {\n    if (this.msgCount - this.offset > 100) {\n      this.offset = this.offset + 100;\n      this.rx.getmessagerecord(\n        this.setdialogID(this.dstID, this.rx.userID),\n        '0',\n        this.offset,\n        this.count\n      );\n    } else if (this.msgCount - this.offset > 0) {\n      this.offset = this.offset + 100;\n      this.rx.getmessagerecord(\n        this.setdialogID(this.dstID, this.rx.userID),\n        '0',\n        this.offset,\n        this.msgCount - this.offset\n      );\n    } else {\n      return;\n    }\n  }\n  setdiscussionidlsit(list: any) {\n    // console.log(list)\n    for (let i = 0; i < list.length; i++) {\n      const element = list[i];\n      this.setdiscussionid(element);\n    }\n  }\n  setdiscussionid(element: any) {\n    if (element.srcID == this.rx.userID) {\n      if (element.msgType == 1) {\n        this.messagelist.unshift({\n          message: element.msgInfo,\n          timer: element.msgTime,\n          type: 2,\n          msgType: '1',\n        });\n      } else if (element.msgType == 3) {\n        this.sendtype(element, '2');\n      } else if (element.msgType == 4) {\n        this.sendtype(element, '2');\n      }\n    } else {\n      if (element.msgType == 1) {\n        this.messagelist.unshift({\n          message: element.msgInfo,\n          timer: element.msgTime,\n          type: 1,\n          msgType: '1',\n        });\n      } else if (element.msgType == 3) {\n        this.sendtype(element, '1');\n      } else if (element.msgType == 4) {\n        this.sendtype(element, '1');\n      }\n    }\n  }\n  setmessagelist(list: any) {\n    for (let i = 0; i < list.length; i++) {\n      const element = list[i];\n      this.setvalue(element);\n    }\n  }\n  openimg(imgurl: any) {\n    console.log(imgurl);\n    const component = this.ngbModalService.open(ImageDisplayComponent, {\n      size: 'lg',\n      backdrop: 'static',\n    });\n    component.componentInstance.photo = imgurl;\n    component.result.then(\n      (result:any) => {},\n      (reason:any) => {}\n    );\n  }\n  setvalue(element: any) {\n    if (element.srcID == this.dstID && element.dstID == this.rx.userID) {\n      if (element.msgType == 1) {\n        this.messagelist.unshift({\n          message: element.msgInfo,\n          timer: element.msgTime,\n          type: 1,\n          msgType: '1',\n        });\n      } else if (element.msgType == 2) {\n        this.messagelist.push({\n          message:\n            'http://localhost:4200/apidata/chfs/shared/msgfile/' +\n            element.msgInfo,\n          timer: element.msgTime,\n          type: 1,\n          msgType: 7,\n          audioLen: element.audioLen,\n          play: false,\n        });\n      } else if (element.msgType == 3) {\n        this.sendtype(element, '1');\n      } else if (element.msgType == 4) {\n        this.sendtype(element, '1');\n      } else if (element.msgType == 5) {\n        this.senduncome(element, '1');\n      }\n    } else {\n      if (element.msgType == 1) {\n        this.messagelist.unshift({\n          message: element.msgInfo,\n          timer: element.msgTime,\n          type: 2,\n          msgType: '1',\n        });\n      } else if (element.msgType == 2) {\n        this.messagelist.push({\n          message:\n            'http://localhost:4200/apidata/chfs/shared/msgfile/' +\n            element.msgInfo,\n          timer: element.msgTime,\n          type: '2',\n          msgType: 7,\n          audioLen: element.audioLen,\n          play: false,\n        });\n      } else if (element.msgType == 3) {\n        this.sendtype(element, '2');\n      } else if (element.msgType == 4) {\n        this.sendtype(element, '2');\n      } else if (element.msgType == 5) {\n        this.senduncome(element, '2');\n      }\n    }\n  }\n  //文件类型显示\n  senduncome(ev: any, type: any) {\n    this.http\n      .get('/apidata/chfs/shared/msgfile/' + ev.msgInfo, {\n        observe: 'response',\n        responseType: 'blob',\n      })\n      .subscribe({\n        next: (result) => {\n          let name: any = result.url;\n          var site = name.lastIndexOf('/');\n          //截取最后一个/后的值\n          let names = decodeURIComponent(name.substring(site + 1, name.length));\n          this.messagelist.unshift({\n            message: names,\n            timer: ev.msgTime,\n            type: type,\n            msgType: 5,\n            file: result.body,\n          });\n        },\n        error: (error) => {\n          console.log(error);\n        },\n      });\n  }\n  // 根据类型显示\n  sendtype(ev: any, type: any) {\n    let src = ev.msgInfo;\n    let index = src.lastIndexOf('.');\n    let str = src.substring(index + 1, src.length);\n    let jpg = this.isImage('.' + str);\n    let vides = this.isvideo('.' + str);\n    let aiode = this.isaudio('.' + str);\n    if (jpg == true) {\n      this.messagelist.unshift({\n        message:\n          'http://localhost:4200/apidata/chfs/shared/msgfile/' + ev.msgInfo,\n        timer: ev.msgTime,\n        type: type,\n        msgType: 3,\n      });\n    } else if (vides == true) {\n      this.messagelist.unshift({\n        message:\n          'http://localhost:4200/apidata/chfs/shared/msgfile/' + ev.msgInfo,\n        timer: ev.msgTime,\n        type: type,\n        msgType: 4,\n      });\n    } else if (aiode == true) {\n      this.messagelist.unshift({\n        message:\n          'http://localhost:4200/apidata/chfs/shared/msgfile/' + ev.msgInfo,\n        timer: ev.msgTime,\n        type: type,\n        msgType: 6,\n      });\n    } else {\n      this.senduncome(ev, type);\n    }\n  }\n  // 消息一直在最下面\n  scrollToBottom() {\n    let mess: any = this.message.nativeElement;\n    mess.scrollTop = mess.scrollHeight;\n    let cord: any = this.messagecord.nativeElement;\n    cord.scrollTop = cord.scrollHeight;\n  }\n  sendParent() {\n    // console.log('关闭');\n    this.description();\n    this.discussionid = '';\n    this.messagelist = [];\n    this.outer.emit(this.ssiontype);\n  }\n  // 发送信息\n  seng() {\n    if (this.textarea == '') {\n      return;\n    } else {\n      let timer = this.getNowFormatDate();\n      this.messagelist.push({\n        message: this.textarea,\n        timer: timer,\n        type: 2,\n        msgType: 1,\n      });\n      this.rx.oneToOneCommunication(this.dstID, '1', this.textarea);\n      // 发完消息需改变dom.dom还未创建异步执行完在宏任务刷新\n      setTimeout(() => {\n        this.scrollToBottom();\n      }, 1);\n      this.textarea = '';\n    }\n  }\n  // 根据类型显示\n  sendshow(ev: any) {\n    let timer = this.getNowFormatDate();\n    let src = ev;\n    let index = src.lastIndexOf('.');\n    let str = src.substring(index + 1, src.length);\n    let jpg = this.isImage('.' + str);\n    let vides = this.isvideo('.' + str);\n    let aiode = this.isaudio('.' + str);\n    if (jpg == true) {\n      this.messagelist.push({\n        message: 'http://localhost:4200/apidata/chfs/shared/msgfile/' + ev,\n        timer: timer,\n        type: 1,\n        msgType: 3,\n      });\n    } else if (vides == true) {\n      this.messagelist.push({\n        message: 'http://localhost:4200/apidata/chfs/shared/msgfile/' + ev,\n        timer: timer,\n        type: 1,\n        msgType: 4,\n      });\n    } else if (aiode == true) {\n      this.messagelist.push({\n        message: 'http://localhost:4200/apidata/chfs/shared/msgfile/' + ev,\n        timer: timer,\n        type: 1,\n        msgType: 6,\n      });\n    } else {\n      this.sendcome(ev);\n    }\n    setTimeout(() => {\n      this.scrollToBottom();\n    }, 1);\n  }\n  //文件类型显示\n  sendcome(ev: any) {\n    this.http\n      .get('/apidata/chfs/shared/msgfile/' + ev, {\n        observe: 'response',\n        responseType: 'blob',\n      })\n      .subscribe({\n        next: (result) => {\n          let name: any = result.url;\n          var site = name.lastIndexOf('/');\n          //截取最后一个/后的值\n          let names = decodeURIComponent(name.substring(site + 1, name.length));\n          let timer = this.getNowFormatDate();\n          this.messagelist.push({\n            message: names,\n            timer: timer,\n            type: 1,\n            msgType: 5,\n            file: result.body,\n          });\n        },\n        error: (error) => {\n          console.log(error);\n        },\n      });\n  }\n  discussionsend() {\n    if (this.textarea == '') {\n      return;\n    } else {\n      let timer = this.getNowFormatDate();\n      this.messagelist.push({\n        message: this.textarea,\n        timer: timer,\n        type: 2,\n        msgType: 1,\n      });\n      this.rx.temporaryinformationSend(this.discussionid, '1', this.textarea);\n      setTimeout(() => {\n        this.scrollToBottom();\n      }, 1);\n      this.textarea = '';\n    }\n  }\n  // 发送时间\n  getNowFormatDate() {\n    let today = new Date();\n\n    const year = today.getFullYear(); // 获取当前年份\n    const month = today.getMonth() + 1; // 获取当前月份，需要加1\n    const day = today.getDate(); // 获取当前日期号数\n\n    let hour: any = today.getHours();\n    if (hour >= 0 && hour <= 9) {\n      hour = '0' + hour;\n    }\n    let min: any = today.getMinutes();\n    if (min >= 0 && min <= 9) {\n      min = '0' + min;\n    }\n    let sen: any = today.getSeconds();\n    if (sen >= 0 && sen <= 9) {\n      sen = '0' + sen;\n    }\n    let timer =\n      year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sen;\n    return timer;\n  }\n  // 获取上传的内容\n\n  // 图片上传\n  files() {\n    this.fileInput.nativeElement.click();\n  }\n  filed() {\n    this.filevide.nativeElement.click();\n  }\n  // 上传文件\n  handle(ev: any) {\n    let file: any = ev.target.files[0];\n    if (file.type.indexOf('image') == 0) {\n      this.getcatalogue(file, 'image');\n    } else {\n      this.getcatalogue(file, 'file');\n    }\n  }\n  handleChanges(ev: any) {\n    // 上传图片\n    let file: any = ev.target.files[0];\n    if (file.type.indexOf('image') == 0) {\n      this.getcatalogue(file, 'image');\n    } else {\n      this.messageser.create('error', '不是图片文件');\n    }\n  }\n  // 登录文件服务器\n  add() {\n    // console.log('登录');\n    let data = new FormData();\n    data.append('user', 'icstftp');\n    data.append('pwd', 'icst123');\n    this.http.post(this.url + '/session', data, this.httpOptions).subscribe({\n      next: (result) => {\n        // console.log(result);\n      },\n      error: (error) => {\n        // console.log(error);\n        this.messageser.create('error', '文件服务连接失败');\n      },\n    });\n  }\n  // 登出\n  description() {\n    this.http.delete(this.url + '/session').subscribe((result) => {});\n  }\n  // 获取目录列表\n  getcatalogue(file: any, paper: any, record?: any) {\n    this.http\n      .get(\n        this.url +\n          '/files?filepath=/msgfile/' +this.rx.tenantID +'/' +\n          this.rx.userID +\n          '/' +\n          paper,\n        {\n          observe: 'response',\n        }\n      )\n      .subscribe({\n        next: (result) => {\n          this.existchfs(file, paper, record);\n        },\n        error: (error) => {\n          if (error.status == 400) {\n            this.newdirchfs(file, paper, record);\n          }\n        },\n      });\n  }\n  // 创建目录\n  newdirchfs(file: any, paper: any, record?: any) {\n    let data = new FormData();\n    data.append('filepath', '/msgfile' +'/'+this.rx.tenantID +'/'  + this.rx.userID + '/' + paper);\n    this.http.post('/apidata/chfs/newdir', data, this.httpOptions).subscribe({\n      next: (result) => {\n        this.uploadchfs(file, paper, record);\n      },\n      error: (error) => {},\n    });\n  }\n  // 上传文件\n  uploadchfs(file: any, paper: any, record?: any) {\n    let parameter = new FormData();\n    parameter.append('file', file);\n    parameter.append('folder', '/msgfile/'+this.rx.tenantID +'/' + this.rx.userID + '/' + paper);\n    this.http\n      .post('/apidata/chfs/upload', parameter, this.httpOptions)\n      .subscribe({\n        next: (result) => {\n          this.sharedchfs(file, paper, record);\n        },\n        error: (error) => {},\n      });\n  }\n  // 查找文件\n  existchfs(file: any, paper: any, record?: any) {\n    this.http\n      .get(\n        '/apidata/chfs/exist?file=/msgfile/'+this.rx.tenantID +'/' +\n          this.rx.userID +\n          '/' +\n          paper +\n          '/' +\n          file.name,\n        {\n          observe: 'response',\n        }\n      )\n      .subscribe({\n        next: (result: any) => {\n          // console.log(result);\n          let data = new FormData();\n          data.append(\n            'filepath',\n            '/msgfile/'+this.rx.tenantID +'/' + this.rx.userID + '/' + paper + '/' + file.name\n          );\n          this.uploadingchfs(data, file, paper, record);\n        },\n        error: (error) => {\n          // console.log(error);\n          if (error.status == 404) {\n            this.uploadchfs(file, paper, record);\n          }\n        },\n      });\n  }\n  // 下载文件\n  sharedchfs(file: any, paper: any, record?: any) {\n    this.http\n      .get(\n        '/apidata/chfs/shared/msgfile/'+this.rx.tenantID +'/' +\n          this.rx.userID +\n          '/' +\n          paper +\n          '/' +\n          file.name,\n        {\n          observe: 'response',\n          responseType: 'blob',\n        }\n      )\n      .subscribe({\n        next: (result: any) => {\n          let src = result.url;\n          let index = src.lastIndexOf('/');\n          let str = src.substring(index + 1, src.length);\n          let jpg = this.isImage(str);\n          let vides = this.isvideo(str);\n          let aiode = this.isaudio(str);\n          if (jpg == true) {\n            let timer = this.getNowFormatDate();\n            this.messagelist.push({\n              message: result.url,\n              timer: timer,\n              type: 2,\n              msgType: 3,\n              file: file,\n            });\n            if (this.chatnavtype == false) {\n              this.rx.temporaryinformationSend(\n                this.discussionid,\n                '3',\n                file.name\n              );\n            } else if (this.chatnavtype == true) {\n              this.rx.oneToOneCommunication(this.dstID, '3', file.name);\n            }\n          } else if (vides == true) {\n            let timer = this.getNowFormatDate();\n            this.messagelist.push({\n              message: result.url,\n              timer: timer,\n              type: 2,\n              msgType: 4,\n            });\n            if (this.chatnavtype == false) {\n              this.rx.temporaryinformationSend(\n                this.discussionid,\n                '4',\n                file.name\n              );\n            } else if (this.chatnavtype == true) {\n              this.rx.oneToOneCommunication(this.dstID, '4', file.name);\n            }\n          } else if (aiode == true) {\n            let timer = this.getNowFormatDate();\n            if (record) {\n              this.rx.oneToOneCommunication(\n                this.dstID,\n                '2',\n                file.name,\n                (record - 1).toString()\n              );\n              this.messagelist.push({\n                message: result.url,\n                timer: timer,\n                type: 2,\n                msgType: 7,\n                audioLen: (record - 1).toString(),\n                play: false,\n              });\n              return;\n            }\n            this.messagelist.push({\n              message: result.url,\n              timer: timer,\n              type: 2,\n              msgType: 6,\n            });\n            if (this.chatnavtype == false) {\n              this.rx.temporaryinformationSend(\n                this.discussionid,\n                '4',\n                file.name\n              );\n            } else if (this.chatnavtype == true) {\n              this.rx.oneToOneCommunication(this.dstID, '4', file.name);\n            }\n          } else {\n            let name = result.url;\n            var site = name.lastIndexOf('/');\n            //截取最后一个/后的值\n            let names = decodeURIComponent(\n              name.substring(site + 1, name.length)\n            );\n\n            let timer = this.getNowFormatDate();\n            this.messagelist.push({\n              message: names,\n              timer: timer,\n              type: 2,\n              msgType: 5,\n              file: file,\n            });\n            if (this.chatnavtype == false) {\n              this.rx.temporaryinformationSend(\n                this.discussionid,\n                '4',\n                file.name\n              );\n            } else if (this.chatnavtype == true) {\n              this.rx.oneToOneCommunication(this.dstID, '4', file.name);\n            }\n          }\n          // 上传文件清空，可上传重复文件\n          this.filevide.nativeElement.value = '';\n          setTimeout(() => {\n            this.scrollToBottom();\n          }, 1);\n        },\n        error: (error) => {\n          console.log(error);\n        },\n      });\n  }\n  //删除文件\n  uploadingchfs(parameter: any, file: any, paper: any, record?: any) {\n    let that = this;\n    axios\n      .delete('/apidata/chfs/rmfiles', { data: parameter })\n      .then(function (response) {\n        that.uploadchfs(file, paper, record);\n      })\n      .catch((error) => {\n        // console.log(error);\n        that.uploadchfs(file, paper, record);\n      });\n  }\n  // 本机上传点击下载\n  downlocal(messages: any) {\n    const blob = new Blob([messages.file], { type: 'application/zip' });\n    const link = document.createElement('a');\n    link.setAttribute('href', window.URL.createObjectURL(blob));\n    link.setAttribute('download', messages.message);\n    link.style.visibility = 'hidden';\n    document.body.appendChild(link);\n    link.click();\n    document.body.removeChild(link);\n  }\n  // 接收上传点击下载\n  receiving(ev: any) {\n    const link = document.createElement('a');\n    link.setAttribute('href', window.URL.createObjectURL(ev.file));\n    link.setAttribute('download', ev.message);\n    link.style.visibility = 'hidden';\n    document.body.appendChild(link);\n    link.click();\n    document.body.removeChild(link);\n  }\n  // 判断图片\n  isImage(str: any) {\n    var reg = /\\.(png|jpg|gif|jpeg|webp)$/i;\n    return reg.test(str);\n  }\n  // 判断视频\n  isvideo(str: any) {\n    var reg = /\\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4)$/i;\n    return reg.test(str);\n  }\n  // 判断音频\n  isaudio(str: any) {\n    var reg = /\\.(mp3|mp2|mp1|wav|wmv|aif|au|ra|rm|ram|mid|rmi)$/i;\n    return reg.test(str);\n  }\n\n  chatwithaudio() {\n    // console.log('录音');\n    this.reminder = true;\n    this.recording();\n  }\n  sendreminder() {\n    this.remindertype = true;\n    this.mediaRecorder.stop();\n    this.reminder = false;\n    clearInterval(this.setTimeouttimer);\n  }\n  cancel() {\n    this.remindertype = false;\n    this.reminder = false;\n    clearInterval(this.setTimeouttimer);\n    this.mediaRecorder.stop();\n    this.chunks = [];\n  }\n  countDown() {\n    this.remindertimer = this.remindertimer + 1;\n    var precent = (100 * this.remindertimer) / 60;\n    this.reminderbgc.nativeElement.style.width = Math.floor(precent) + '%';\n    if (this.remindertimer == 61) {\n      this.remindertype = true;\n      this.reminder = false;\n      this.mediaRecorder.stop();\n      return;\n    }\n    this.setTimeouttimer = setTimeout(() => {\n      this.countDown();\n    }, 1000);\n  }\n  recording = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        audio: true,\n      };\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          this.mediaRecorder = new MediaRecorder(stream);\n          this.mediaRecorder.start();\n          this.countDown();\n          this.mediaRecorder.ondataavailable = (e: any) => {\n            this.chunks.push(e.data);\n          };\n          this.mediaRecorder.onstop = (e: any) => {\n            var blob = new Blob(this.chunks, {\n              type: 'audio/ogg; codecs=opus',\n            });\n            if (this.remindertype == true) {\n              this.timestamp = new Date().valueOf();\n              let files = new window.File([blob], this.timestamp + '.mp3', {\n                type: blob.type,\n              });\n              this.getcatalogue(files, 'audio', this.remindertimer);\n              this.remindertype = false;\n            }\n            this.remindertimer = 0;\n            this.chunks = [];\n            this.reminderbgc.nativeElement.style.width = 0 + '%';\n          };\n        })\n        .catch(this.handleError);\n    }\n  };\n  // 录音播放\n  muiscPlay(ev: any) {\n    if (ev.play == false) {\n      this.gamemuiscs = new Audio(ev.message);\n      this.gamemuiscs.play(); //播放\n      ev.play = true;\n      this.muisctime = setTimeout(() => {\n        ev.play = false;\n        this.muisctime = null;\n      }, ev.audioLen * 1000);\n    } else if (ev.play == true) {\n      ev.play = false;\n      this.gamemuiscs.pause(); // 停止\n      window.clearTimeout(this.muisctime);\n      this.muisctime = null;\n    }\n  }\n  handleError() {\n    console.log('错误');\n  }\n  chatsendimg() {\n    this.setting = true;\n  }\n  pensend() {\n    this.setting = false;\n  }\n  informationrecord() {\n    this.information = !this.information;\n  }\n  testblur() {\n    // console.log(\"离开\");\n    this.sendService.blanksendsider(true);\n  }\n  testfocus() {\n    // console.log(\"进入\");\n    this.sendService.blanksendsider(false);\n  }\n}\n","<div class=\"box\">\n    <div class=\"navbox\">\n        <div appDrag>\n            <div class=\"nav\" *ngIf=\"setting == false\">\n                <div class=\"setname\">\n                    <div class=\"iconnav\">聊天室</div>\n                    <div class=\"iconright\">\n                        <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent()\"></i>\n                    </div>\n                </div>\n                <div class=\"chatbox\">\n                    <div class=\"chatlist\" *ngIf=\"chatnavtype\">\n                        <div *ngFor=\"let item of list; let i = index\" class=\"chat\">\n                            <div class=\"chatname\">\n                                <div class=\"chatimgbox\">\n                                    <div class=\"chatimg\">\n                                        <img src=\"assets/img/人员.png\" alt=\"\" />\n                                    </div>  \n                                </div>\n                                <div class=\"chatnav\">\n                                    {{ item.userName }}\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"chatlist\" *ngIf=\"talkgroup\">\n                        <div *ngFor=\"let item of talkgrouplist; let i = index\" class=\"chat\">\n                            <div class=\"chatname\">\n                                <div class=\"chatimgbox\">\n                                    <div class=\"chatimg\">\n                                        <img src=\"assets/img/人员.png\" alt=\"\" />\n                                    </div>\n                                </div>\n                                <div class=\"chatnav\">\n                                    {{ item }}\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"transmitbox\">\n                        <div class=\"chatstorage\" #message>\n                            <div *ngFor=\"let messages of messagelist; let i = index\">\n                                <div class=\"messagesleft\" *ngIf=\"messages.type == 1\">\n                                    <div class=\"messagestimer\">{{ messages.timer }}</div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 1\">\n                                        {{ messages.message }}\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 3\">\n                                        <img [src]=\"messages.message\" alt=\"\" style=\"width: 250px\" />\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 4\">\n                                        <video [src]=\"messages.message\" style=\"width: 250px\" controls=\"controls\"></video>\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 5\" (click)=\"receiving(messages)\">\n                                        {{ messages.message }}\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 6\">\n                                        <audio [src]=\"messages.message\" style=\"width: 250px\" controls=\"controls\"></audio>\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 7\">\n                                        <div class=\"sendrecord\">\n                                            <div class=\"messagesaudioLenimg\" (click)=\"muiscPlay(messages)\">\n                                                <img src=\"assets/img/audimsgleft_white.png\" alt=\"\" *ngIf=\"messages.play == false\" />\n                                                <img src=\"assets/img/audimsgleft_green.png\" alt=\"\" *ngIf=\"messages.play == true\" />\n                                            </div>\n                                            <div class=\"messagesaudioLen\">\n                                                {{ messages.audioLen }}“\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"messagesnav\" *ngIf=\"messages.type == 2\">\n                                    <div class=\"messagestimer\">{{ messages.timer }}</div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 1\">\n                                        {{ messages.message }}\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 3\">\n                                        <img [src]=\"messages.message\" alt=\"\" style=\"width: 250px\" />\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 4\">\n                                        <video [src]=\"messages.message\" style=\"width: 250px\" controls=\"controls\"></video>\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 5\" (click)=\"downlocal(messages)\">\n                                        {{ messages.message }}\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 6\">\n                                        <audio [src]=\"messages.message\" style=\"width: 250px\" controls=\"controls\"></audio>\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 7\">\n                                        <div class=\"sendrecord\">\n                                            <div class=\"messagesaudioLen\">\n                                                ”{{ messages.audioLen }}\n                                            </div>\n                                            <div class=\"messagesaudioLenimg\" (click)=\"muiscPlay(messages)\">\n                                                <img src=\"assets/img/audimsgright_white.png\" alt=\"\" *ngIf=\"messages.play == false\" />\n                                                <img src=\"assets/img/audimsgright_green.png\" alt=\"\" *ngIf=\"messages.play == true\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"reminderbgc\" #reminderbgc></div>\n                        <div class=\"beginrecording\" *ngIf=\"reminder\">\n                            <div class=\"remindertimer\">{{ remindertimer }}</div>\n                            <div class=\"reminder\">最多可录制60秒!</div>\n                            <div class=\"transcribe\">\n                                <button (click)=\"sendreminder()\">发送</button>\n                                <button (click)=\"cancel()\">取消</button>\n                            </div>\n                        </div>\n                        <div class=\"transmit\">\n                            <div class=\"transmiticon\">\n                                <div class=\"chatwithaudio\" *ngIf=\"!chatnavtype\"></div>\n                                <div class=\"recording\" *ngIf=\"chatnavtype\" (click)=\"chatwithaudio()\"></div>\n                                <div class=\"chatsendimg\" (click)=\"files()\">\n                                    <input type=\"file\" (change)=\"handleChanges($event)\" style=\"display: none\" #fileInput />\n                                </div>\n                                <div class=\"chatsenddoc\" (click)=\"filed()\">\n                                    <input type=\"file\" (change)=\"handle($event)\" style=\"display: none\" #filevide />\n                                </div>\n                                <div class=\"chatpalette\" (click)=\"chatsendimg()\"></div>\n                                <div class=\"record\" (click)=\"informationrecord()\">消息记录</div>\n                            </div>\n                            <div class=\"inputbox\">\n                                <textarea [(ngModel)]=\"textarea\" (blur)=\"testblur()\" (focus)=\"testfocus()\"></textarea>\n                            </div>\n                            <div class=\"send\">\n                                <button (click)=\"discussionsend()\" *ngIf=\"!chatnavtype\">\n                  发送\n                </button>\n                                <button (click)=\"seng()\" *ngIf=\"chatnavtype\">发送</button>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- 消息记录 -->\n                    <div class=\"informationrecord\" [style.display]=\"information == true ? 'block' : 'none'\">\n                        <div class=\"chatstorage\" #messagecord>\n                            <div *ngFor=\"let messages of messagelist; let i = index\">\n                                <div class=\"messagesleft\" *ngIf=\"messages.type == 1\">\n                                    <div class=\"messagestimer\">{{ messages.timer }}</div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 1\">\n                                        {{ messages.message }}\n                                    </div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 3\">\n                                        <img [src]=\"messages.message\" alt=\"\" style=\"width: 50px\" />\n                                    </div>\n                                </div>\n                                <div class=\"messagesnav\" *ngIf=\"messages.type == 2\">\n                                    <div class=\"messagestimer\">{{ messages.timer }}</div>\n                                    <div class=\"messagesnavt\" *ngIf=\"messages.msgType == 1\">\n                                        {{ messages.message }}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"navs\" *ngIf=\"setting == true\">\n                <div class=\"setname\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"pensend()\"></i>\n                </div>\n                <div class=\"setbox\"></div>\n                <div class=\"setbotton\">\n                    <button>重置</button>\n                    <button (click)=\"pensend()\">发送</button>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { ResourceService } from '../../protocol/resource/resource.service';\nimport { cache } from '../../protocol/rtc/cache';\n@Component({\n  selector: 'app-group-tree',\n  templateUrl: './group-tree.component.html',\n  styleUrls: ['./group-tree.component.css'],\n})\nexport class GroupTreeComponent implements OnInit {\n  @Input() uservalue: any = '';\n  talkGroupList: any = [];\n  searchtype: number = 1;\n  branch: boolean = true;\n  check: boolean = false;\n  newarr: any = [];\n  arr: any = [];\n  grouplist: any = [];\n  indeterminate = false;\n  constructor(private datastate: ResourceService) {}\n  ngOnInit(): void {\n    this.talkGroupList = this.datastate.talkGroupList;\n    this.arr = this.talkGroupList;\n    if (cache.group != '') {\n      this.grouplist = cache.group.split(';');\n      for (let i = 0; i < this.grouplist.length; i++) {\n        if (\n          this.grouplist[i] == '' ||\n          typeof this.grouplist[i] == 'undefined'\n        ) {\n          this.grouplist.splice(i, 1);\n          i = i - 1;\n        }\n      }\n      for (let i = 0; i < this.arr.length; i++) {\n        for (let j = 0; j < this.grouplist.length; j++) {\n          if (this.arr[i].talkGroupID == this.grouplist[j]) {\n            this.arr[i].groupshow = true;\n          }\n        }\n      }\n      this.updateSingleChecked()\n    }\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.uservalue) {\n      this.arr = this.talkGroupList;\n      if (this.uservalue == '') {\n        this.searchtype = 1;\n      } else {\n        if (this.rebuildData(this.uservalue, this.arr).length == 0) {\n          this.searchtype = 2;\n        } else {\n          this.arr = this.rebuildData(this.uservalue, this.arr);\n        }\n      }\n    }\n  }\n  chi(obj: any) {\n    this.arr = [];\n    for (let i in obj) {\n      obj[i].groupshow = false;\n      this.arr.push(obj[i]);\n    }\n  }\n\n  rebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.talkName.indexOf(value) > -1) {\n        this.newarr.push(element);\n      }\n    });\n    return this.newarr;\n  }\n  show() {\n    this.branch = !this.branch;\n  }\n  allcheck() {\n    this.indeterminate = false;\n    if (this.check== true) {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        groupshow: true,\n      }));\n    } else {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        groupshow: false,\n      }));\n    }\n  }\n  usercheck(ev: any) {\n    for (let i = 0; i < this.arr.length; i++) {\n      if (ev.talkGroupID == this.arr[i].talkGroupID) {\n        this.arr[i].groupshow = !this.arr[i].groupshow;\n      }\n    }\n  }\n  updateSingleChecked(): void {\n    if (this.arr.every((item: any) => !item.groupshow)) {\n      this.check = false;\n      this.indeterminate = false;\n    } else if (this.arr.every((item: any) => item.groupshow)) {\n      this.check = true;\n      this.indeterminate = false;\n    } else {\n      this.indeterminate = true;\n    }\n  }\n}\n","<div class=\"box\" *ngIf=\"searchtype == 1\">\n    <div class=\"branchbox\">\n        <div [style.display]=\"branch ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n        </div>\n        <div [style.display]=\"!branch ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n        </div>\n        <!-- <div class=\"checkbox\" (click)=\"allcheck()\">\n            <i nz-icon nzType=\"check\" nzTheme=\"outline\" *ngIf=\"check\"></i>\n        </div> -->\n        <div>\n            <label nz-checkbox [(ngModel)]=\"check\" [nzIndeterminate]=\"indeterminate\" (ngModelChange)=\"allcheck()\"></label>\n        </div>\n        <div class=\"talkback\">群组</div>\n    </div>\n    <div class=\"talkbacklist\" [style.display]=\"branch == true ? 'block' : 'none'\">\n        <div *ngFor=\"let item of arr; let i = index\">\n            <div class=\"talk\">\n                <!-- <div class=\"checkbox\" (click)=\"usercheck(item)\">\n                    <i nz-icon nzType=\"check\" nzTheme=\"outline\" *ngIf=\"item.groupshow\"></i>\n                </div> -->\n                <div>\n                    <label nz-checkbox [(ngModel)]=\"item.groupshow\" (ngModelChange)=\"updateSingleChecked()\"></label>\n                </div>\n                <div class=\"talkName\">\n                    {{ item.talkName }}\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"searchtype == 2\" class=\"searching\">未检索的到群组</div>","import {\n  Component,\n  EventEmitter,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { cache } from '../../protocol/rtc/cache';\nimport { RxService } from '../../protocol/rtc/rx.service';\n@Component({\n  selector: 'app-select-group',\n  templateUrl: './select-group.component.html',\n  styleUrls: ['./select-group.component.css'],\n})\nexport class SelectGroupComponent implements OnInit {\n  @ViewChild('cart') cart: any;\n  @Output() private outer = new EventEmitter<any>();\n  inputValue: string = '';\n  uservalue: string = '';\n  searchtype: number = 1;\n  constructor(private rx: RxService) {}\n  ngOnInit(): void {}\n  close() {\n    let data = {\n      select: false,\n    };\n    this.outer.emit(data);\n  }\n  userTree() {\n    this.uservalue = this.inputValue;\n  }\n  userempty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  confirm() {\n    let cs = this.cart.arr;\n    let str = '';\n    for (let i = 0; i < cs.length; i++) {\n      if (cs[i].groupshow == true) {\n        str += cs[i].talkGroupID + ';';\n      }\n    }\n    cache.group = str;\n    let eva = JSON.stringify(cache);\n    this.rx.savecache(eva);\n    let data = {\n      select: true,\n      talkGroupList: this.cart.arr,\n    };\n    this.outer.emit(data);\n  }\n}\n","<div class=\"fullscreen\">\n    <div class=\"box\">\n        <div class=\"drag\" cdkDrag>\n            <div class=\"usertitle\" cdkDragHandle>\n                <div class=\"title\">选择群组</div>\n                <div class=\"closebox\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"close()\"></i>\n                </div>\n            </div>\n            <div class=\"searchbox\">\n                <div class=\"search\">\n                    <nz-input-group [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"inputClear\">\n                        <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"userTree()\" />\n                    </nz-input-group>\n                    <ng-template #prefixTemplate><i nz-icon nzType=\"search\"></i\n            ></ng-template>\n            <ng-template #inputClear>\n              <div *ngIf=\"inputValue\">\n                <i\n                  nz-icon\n                  nzType=\"close-circle\"\n                  nzTheme=\"outline\"\n                  (click)=\"userempty()\"\n                ></i>\n                </div>\n                </ng-template>\n            </div>\n        </div>\n        <div class=\"grouptree\">\n            <app-group-tree #cart [uservalue]=\"uservalue\"></app-group-tree>\n        </div>\n        <div class=\"buttonbox\" *ngIf=\"searchtype == 1\">\n            <button (click)=\"confirm()\">确定</button>\n            <button (click)=\"close()\">取消</button>\n        </div>\n    </div>\n</div>\n</div>","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { OverallService } from '../common/overall.service';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { WebService } from '../protocol/rtc/web.service';\nimport { AvService } from '../protocol/rtc/av.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { cache } from '../protocol/rtc/cache';\nimport { ResourceService } from '../protocol/resource/resource.service';\n@Component({\n  selector: 'app-group',\n  templateUrl: './group.component.html',\n  styleUrls: ['./group.component.less'],\n})\nexport class GroupComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @ViewChild('kongbai') kongbai: any;\n  @HostListener('document:click', ['$event'])\n  bodyClick(e: any) {\n    this.kongshow = false;\n    function getTrigger(queryList: any, className?: any) {\n      let flag = true;\n      // 遍历事件节点\n      (<HTMLElement[]>e.path).forEach((i) => {\n        // 是否为 #unclick\n        flag &&\n          queryList.forEach((el: any) => {\n            i.isEqualNode && i.isEqualNode(el.nativeElement) && (flag = false);\n          });\n      });\n      return flag;\n    }\n  }\n  // 监听键盘事件\n  @HostListener('document:keydown', ['$event'])\n  onkeydown(event: any) {\n    if (this.kflag) {\n      event.preventDefault();\n    } else {\n      this.kflag = true;\n      let keyCode = event.keyCode;\n      // console.log(\"开始讲话\");\n      if (keyCode == 32) {\n        if (this.AV.titleactive == '1') {\n          if (this.communicate == true) {\n            if (this.blank == true) {\n              if (this.talkGroupID != '') {\n                // console.log('按下空格键了');\n                this.interval = true;\n                this.acquittal();\n              }\n            }\n          }\n          if (this.pitchon == true) {\n            if (this.blank == true) {\n              if (this.talkGroupID != '') {\n                this.spacing = true;\n                this.speakerstate = 2;\n                let videoFlag = '0';\n                if (this.pamas.openvideo == true) {\n                  videoFlag = '1';\n                } else {\n                  videoFlag = '0';\n                }\n                this.rx.gainTalkbackJurisdiction(this.talkGroupID, videoFlag);\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  @HostListener('document:keyup', ['$event'])\n  onkeyup(event: any) {\n    this.kflag = false;\n    let keyCode = event.keyCode;\n    if (keyCode == 32) {\n      if (this.AV.titleactive == '1') {\n        if (this.talkGroupID != '') {\n          this.spacing = false;\n          // console.log('松开');\n          this.localStream.getAudioTracks()[0].enabled = false;\n          this.localStream.getVideoTracks()[0].enabled = false;\n          this.loosen();\n          this.speakerstate = 1;\n        }\n      }\n    }\n  }\n  @ViewChild('remotesaudios') remotesaudios?: any;\n  @ViewChild('cmsvideo') cmsvideo?: any;\n  @ViewChild('cmsaudio') cmsaudio?: any;\n  @ViewChild('localvideo') localvideo?: any;\n  @Input() overallvolume: any;\n  @Input() recordvolume: any;\n  @Input() broadside: any;\n  cmsvideostream:any\n  spacing: boolean = false; //按空格标识\n  sendgroup: any; //cms开始对讲\n  cmsgroup: any; //cms关闭对讲\n  list: any = '';\n  discussionmessane: any = '';\n  talkGroupList: any = '';\n  userListtype: any = '';\n  kflag: boolean = false;\n  grouptype = '1';\n  talkGroupLists: any = [];\n  oldlist: any = [];\n  item: number = 1;\n  content: number = 0;\n  designation: string = '';\n  branch: boolean = true;\n  showtimes: boolean = false;\n  inputValue?: string;\n  value?: string;\n  shows: boolean = false;\n  addmember: boolean = false;\n  addpersonnel: boolean = false;\n  memListID: any = '';\n  userIDList: any = ''; // 添加用户列表\n  talkGroupID: any = ''; //讨论组id\n  adduserpersonnel: any = ''; //添加讨论组页面切换\n  describe: any = ''; //讨论组描述\n  talkGroupName = ''; //讨论组名字\n  userlist: any[] = [];\n  showlist: any = []; //显示的列表\n  kongshow: boolean = false;\n  kongbais: any = '';\n  talkGroupitem: any = ''; //右键点击的讨论组\n  userquit = false;\n  ssiontype = false;\n  talkgroupitem: any = '';\n  cricle: number = 1;\n  s: any;\n  interval: boolean = false;\n  timeout: any;\n  communicate: boolean = false;\n  localStream: any = null;\n  pcPeer: any = null;\n  channelID: any = '';\n  pamas: any = '';\n  speakerID: any = '';\n  vodtree = true;\n  uservalue: any = '';\n  grouplisttype: boolean = false;\n  hint: boolean = false;\n  hinttype: number = 6;\n  // audioContext: any = new AudioContext();\n  // gainNode = this.audioContext.createGain();\n  operationclass = 'content';\n  leftsider: any;\n  subscription: any;\n  select: boolean = false;\n  selectlist: any = [];\n  activeIndex = -1;\n  oldgroup: any = '';\n  pitchon: boolean = false;\n  speakerstate: number = 1;\n  blank: boolean = true;\n  audioSource: any = null;\n  radioValue = 'A';\n  videoshow: boolean = false;\n  localvideoshow: boolean = false;\n  fullscreen: boolean = false;\n  thisshow: boolean = false;\n  examine: boolean = false;\n  videoFlag = '手动接收';\n  groupsetting: any;\n   hasData: boolean = false;\n  constructor(\n    private rx: RxService,\n    public el: ElementRef,\n    private ws: WebService,\n    private sendService: OverallService,\n    private AV: AvService,\n    private nzmessage: NzMessageService,\n    private datastate: ResourceService\n  ) {\n    this.sendService.sendsider$.subscribe((message) => {\n      this.leftsider = message;\n    });\n    this.sendService.blanksendsider$.subscribe((blank) => {\n      this.blank = blank;\n    });\n  }\n  ngOnInit(): void {\n    this.sendService.blanksendsider(true);\n    document.oncontextmenu = function () {\n      return false;\n    };\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let cmdBody = nav.cmdBody;\n      let resultdata = nav.resultData;\n      let that = this;\n      switch (cmdid) {\n        case state.OWO_CMD_TALKGROUP_DELMEM: {\n          if (this.content == 1) {\n            if (cmdBody.talkGroupID == this.talkGroupID) {\n              this.cmsremove(cmdBody.delMemIDList);\n            }\n          }\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        }\n        // addMemIDList\n        case state.OWO_CMD_TALKGROUP_ADDMEM: {\n          if (this.content == 1) {\n            if (cmdBody.talkGroupID == this.talkGroupID) {\n              this.cmsremove(cmdBody.addMemIDList);\n            }\n          }\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        }\n        case state.OWO_CMD_MSGGROUP_SEND_MSG: {\n          this.discussionmessane = cmdBody;\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_START: {\n          this.sendgroup = cmdBody;\n          this.opengroup();\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        }\n\n        case state.OWO_CMD_TALKGROUP_SET_SPEAKER: {\n          // console.log(nav);\n          if (cmdBody.speakerID == '') {\n            this.speakerstate = 1;\n            for (let i = 0; i < this.showlist.length; i++) {\n              if (this.speakerID == this.showlist[i].name) {\n                this.showlist[i].devStatus = '1';\n              }\n            }\n            this.videoshow = false;\n            this.speakerID = '';\n            this.closelocal();\n            this.thisshow = false;\n            this.examine = false;\n            // this.cmsvideo.nativeElement.srcObject = null\n          } else if (cmdBody.speakerID != '') {\n            if (cmdBody.talkGroupID != this.oldgroup.talkGroupID) {\n              this.speakerstate = 1;\n            } else {\n              this.speakerID = cmdBody.speakerID;\n              if (this.speakerID == this.rx.userID) {\n                this.speakerstate = 3;\n                this.cricle = 3;\n                this.localStream.getAudioTracks()[0].enabled = true;\n                if (cmdBody.videoFlag == '1') {\n                  this.localStream.getVideoTracks()[0].enabled = true;\n                  this.thisshow = true;\n                  this.openlocal();\n                } else {\n                  this.localStream.getVideoTracks()[0].enabled = false;\n                }\n              } else {\n                this.speakerstate = 4;\n                // console.log(this.cmsvideostream);\n                if (cmdBody.videoFlag == 1) {\n                  this.examine = true;\n                  if (cache.videoFlag == '自动接收') {\n                    this.videoshow = true;\n                    this.fullscreen = false;\n                    this.cmsvideo.nativeElement.srcObject =  this.cmsvideostream;\n                  } else {\n                    this.videoshow = false;\n                  }\n                } else {\n                  this.cmsvideo.nativeElement.srcObject = null;\n                  this.videoshow = false;\n                }\n              }\n              for (let i = 0; i < this.showlist.length; i++) {\n                if (cmdBody.speakerID == this.showlist[i].name) {\n                  this.showlist[i].devStatus = '2';\n                }\n              }\n            }\n          }\n          break;\n        }\n        default:\n          break;\n      }\n      switch (respcmdid) {\n        case state.OWO_CMD_USER_LOAD_CACHE + 1: {\n          if (resultdata.cache != '') {\n            let save = JSON.parse(resultdata.cache);\n            if (save.group != '') {\n              let data = this.sendService.trun(save.group);\n              for (let i = 0; i < this.talkGroupLists.length; i++) {\n                this.talkGroupLists[i].groupshow = false;\n              }\n              let talk = this.talkGroupLists;\n              for (let i = 0; i < talk.length; i++) {\n                for (let j = 0; j < data.length; j++) {\n                  if (talk[i].talkGroupID == data[j]) {\n                    talk[i].groupshow = true;\n                    talk[i].openvideo = false;\n                  }\n                }\n              }\n              this.selectlist = talk;\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_START: {\n          this.channelID = nav.cmdBody.SSRC;\n          for (let i = 0; i < this.talkGroupList.length; i++) {\n            if (nav.cmdBody.talkGroupID == this.talkGroupList[i].talkGroupID) {\n              this.talkGroupList[i].show = true;\n              this.talkGroupID = this.talkGroupList[i].talkGroupID;\n            }\n          }\n          this.communicate = true;\n          const configuration = {};\n          this.pcPeer = new RTCPeerConnection(configuration);\n          this.video();\n          this.talkGroupLists = this.talkGroupList;\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_CREATE + 1: {\n          this.rx.gainTalkbackList();\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_BARRING + 1: {\n          // console.log(nav);\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_SET_SPEAKER + 1: {\n          // console.log(nav);\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_STOP: {\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          for (let i = 0; i < this.talkGroupList.length; i++) {\n            if (nav.cmdBody.talkGroupID == this.talkGroupList[i].talkGroupID) {\n              this.talkGroupList[i].show = false;\n              this.intercom(0);\n            }\n          }\n          this.cmsgroup = cmdBody;\n          this.pcPeer.close();\n          this.pcPeer = null;\n          this.closegroup();\n          this.talkGroupLists = this.talkGroupList;\n          break;\n        }\n        case 503103: {\n          if (nav.cmdBody.talkGroupID == this.talkGroupID) {\n          } else {\n            this.rx.gainTalkbackList(); // 获取对讲组列表\n          }\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_DELMEM + 1: {\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_ADDMEM + 1: {\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        }\n        case state.OWO_CMD_GET_MEMLIST + 1: {\n          this.list = resultdata;\n          break;\n        }\n        case state.OWO_CMD_GET_MEMLIST_STATUS + 1: {\n          this.userListtype = resultdata.userList;\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_GET_LIST + 1: {\n          // console.log(nav);\n          this.oldlist = resultdata.talkGroupList;\n          this.talkGroupLists = resultdata.talkGroupList;\n          for (let i = 0; i < this.talkGroupLists.length; i++) {\n            this.talkGroupLists[i].show = this.talkGroupLists[i].status;\n          }\n          for (let i = 0; i < this.selectlist.length; i++) {\n            for (let j = 0; j < this.talkGroupLists.length; j++) {\n              if (\n                this.selectlist[i].talkGroupID ==\n                this.talkGroupLists[j].talkGroupID\n              ) {\n                this.selectlist[i].show = this.talkGroupLists[j].status;\n                this.selectlist[i].status = this.talkGroupLists[j].status;\n              }\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_START + 1:\n          if (nav.errorCode == 1) {\n            this.channelID = resultdata.SSRC;\n            const configuration = {};\n            this.pcPeer = new RTCPeerConnection(configuration);\n            this.video();\n          }\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        case state.OWO_CMD_TALKGROUP_STOP + 1:\n          if (this.pcPeer != null) {\n            this.localStream.getAudioTracks().forEach((track: any) => {\n              track.stop();\n            });\n            this.localStream.getVideoTracks().forEach((track: any) => {\n              track.stop();\n            });\n            this.pcPeer.close();\n            this.pcPeer = null;\n            this.localStream = null;\n          }\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        case state.OWO_CMD_TALKGROUP_GET_TALK_LIMITS + 1:\n          // console.log(nav);\n          // this.cricle = 3;\n          // this.localStream.getAudioTracks()[0].enabled = true;\n          // this.localStream.getVideoTracks()[0].enabled = true;\n          break;\n        case state.OWO_CMD_TALKGROUP_JOIN + 1: {\n          // console.log(nav);\n          this.channelID = resultdata.SSRC;\n          const configuration = {};\n          this.pcPeer = new RTCPeerConnection(configuration);\n          this.video();\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_EXIT + 1: {\n          if (this.pcPeer != null) {\n            // console.log('退出讨论组');\n            this.localStream.getAudioTracks().forEach((track: any) => {\n              track.stop();\n            });\n            this.localStream.getVideoTracks().forEach((track: any) => {\n              track.stop();\n            });\n            this.pcPeer.close();\n            this.pcPeer = null;\n            this.cmsvideo.nativeElement.srcObject = null;\n            this.localStream = null;\n            this.cmsvideostream= null;\n            this.cmsaudio.nativeElement.srcObject  = null\n          }\n          this.rx.gainTalkbackList(); // 获取对讲组列表\n          break;\n        }\n        case state.OWO_CMD_RTC_OFFER + 1: {\n          if (resultdata.channelID == this.channelID) {\n            that.remoteAnswer(nav);\n          }\n          break;\n        }\n        default:\n      }\n    });\n    this.groupsetting = this.datastate.module.group;\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.discussionmessane) {\n      if (this.discussionmessane == '') {\n        return;\n      } else {\n        for (let i = 0; i < this.talkGroupLists.length; i++) {\n          let talkGroup = this.talkGroupLists[i].talkGroupID;\n          if (talkGroup == this.discussionmessane.dialogID) {\n            if (this.ssiontype == false) {\n              this.ssiontype = true;\n            }\n          }\n        }\n      }\n    }\n    if (changes.overallvolume) {\n      this.el.nativeElement.querySelector('.remotesaudios').volume =\n        this.overallvolume;\n    }\n    if (changes.recordvolume) {\n      this.microphone();\n    }\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        this.operationclass = 'content';\n      } else if (this.broadside == true) {\n        this.operationclass = 'sidebar';\n      }\n    }\n  }\n  ngAfterViewInit(): void {}\n  selectgroup(ev: any) {\n    if (ev.select == true) {\n      this.select = false;\n      this.selectlist = JSON.parse(JSON.stringify(ev.talkGroupList));\n    } else if (ev.select == false) {\n      this.select = false;\n    }\n  }\n  cmsremove(pamas: any) {\n    this.showlist = [];\n    this.userlist = [];\n    this.userlist = pamas.split(';');\n    //获取列表\n    for (let i = 0; i < this.userlist.length; i++) {\n      if (this.userlist[i] == '' || typeof this.userlist[i] == 'undefined') {\n        this.userlist.splice(i, 1);\n        i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置，删除空之后，后面的元素要向前补位\n      }\n    }\n    for (let i = 0; i < this.userlist.length; i++) {\n      this.showlist.push({ name: this.userlist[i] });\n    }\n    for (let i = 0; i < this.userListtype.length; i++) {\n      let stact = this.userListtype[i];\n      for (let j = 0; j < this.showlist.length; j++) {\n        if (this.showlist[j].name == stact.userID) {\n          this.showlist[j].userType = stact.userType; //用户类型\n          this.showlist[j].userName = stact.userName;\n          this.showlist[j].devStatus = stact.devStatus; //设备状态\n          this.showlist[j].electricity = stact.electricity; //电量\n          this.showlist[j].netStatus = stact.netStatus; //网络状态\n          this.showlist[j].micStatus = stact.micStatus; //话筒状态\n        }\n      }\n    }\n    for (let i = 0; i < this.showlist.length; i++) {\n      if (this.rx.userName == this.showlist[i].name) {\n        this.showlist[i].name = '本机';\n        let item = this.showlist[0];\n        this.showlist[0] = this.showlist[i];\n        this.showlist[i] = item;\n        this.showlist[0].userType = this.rx.userType;\n        this.showlist[0].electricity = '4';\n        this.showlist[0].netStatus = '4';\n        this.showlist[0].devStatus = '1';\n      }\n    }\n  }\n  microphone() {\n    // this.gainNode.gain.value = this.recordvolume;\n  }\n  searchTree() {\n    if (this.value == '') {\n      this.talkGroupLists = this.oldlist;\n    } else {\n      this.rebuildData(this.value, this.talkGroupLists);\n    }\n  }\n  empty() {\n    this.grouptype == '1';\n    this.value = '';\n    this.talkGroupLists = this.oldlist;\n  }\n  userTree() {\n    this.uservalue = this.inputValue;\n  }\n  userempty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  tree(ev: any) {\n    this.outer.emit(ev);\n  }\n  rebuildData(value: any, arr: any) {\n    let newarr: any = [];\n    arr.forEach((element: any) => {\n      if (element.talkName != undefined) {\n        if (element.talkName.indexOf(value) > -1) {\n          // 判断条件\n          newarr.push(element);\n        }\n      }\n    });\n    if (newarr.length == 0) {\n      this.grouptype = '2';\n    } else {\n      this.talkGroupLists = newarr;\n      this.grouptype = '1';\n    }\n  }\n  // cms开启\n  opengroup() {\n    for (let i = 0; i < this.talkGroupLists.length; i++) {\n      if (this.sendgroup.talkGroupID == this.talkGroupLists[i].talkGroupID) {\n        this.talkGroupLists[i].show = true;\n      }\n    }\n    for (let j = 0; j < this.selectlist.length; j++) {\n      if (this.sendgroup.talkGroupID == this.selectlist[j].talkGroupID) {\n        this.selectlist[j].show = true;\n        this.selectlist[j].status = this.sendgroup.status;\n      }\n    }\n  }\n  // cms关闭\n  closegroup() {\n    this.rx.quitTalkbackGroup(this.cmsgroup.talkGroupID);\n    this.content = 0;\n    this.communicate = false;\n    for (let i = 0; i < this.talkGroupLists.length; i++) {\n      if (this.cmsgroup.talkGroupID == this.talkGroupLists[i].talkGroupID) {\n        this.talkGroupLists[i].show = false;\n      }\n    }\n  }\n  videocs = () => {\n    // console.log('切换');\n    const configuration = {};\n    this.pcPeer = new RTCPeerConnection(configuration);\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      let constraints = {\n        audio: true,\n        video: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          that.localStream = stream;\n          this.localStream.getAudioTracks()[0].enabled = false;\n          this.localStream.getVideoTracks()[0].enabled = false;\n          this.localvideo.nativeElement.srcObject = stream;\n          this.localvideo.nativeElement.muted=true;\n          that.callcs();\n        })\n        .catch(this.handleError);\n    }\n  };\n  callcs = () => {\n    this.pcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.localStream.getTracks().forEach((track: any) => {\n      this.pcPeer.addTrack(track, this.localStream);\n    });\n    this.pcPeer.onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.pcPeer.onconnection = function () {};\n    this.pcPeer.ondatachannel = (event: any) => {\n      console.log(event);\n    };\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.channelID,\n    });\n  };\n  video = () => {\n    // console.log('开启群组');\n    if (this.localStream != null) {\n      // console.log('清空流');\n      this.localStream.getTracks().forEach((track: any) => {\n        track.stop();\n      });\n    }\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      let constraints = {\n        audio: true,\n        video: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          that.localStream = stream;\n          this.localStream.getAudioTracks()[0].enabled = false;\n          this.localStream.getVideoTracks()[0].enabled = false;\n          this.localvideo.nativeElement.srcObject = stream;\n          this.localvideo.nativeElement.muted=true;\n          that.call();\n        })\n        .catch(this.handleError);\n    }\n  };\n  call = () => {\n    this.pcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.localStream.getTracks().forEach((track: any) => {\n      this.pcPeer.addTrack(track, this.localStream);\n    });\n    this.pcPeer.onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.pcPeer.onconnection = function () {};\n    this.pcPeer.ondatachannel = (event: any) => {\n      console.log(event);\n    };\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.channelID,\n    });\n  };\n\n  remoteAnswer = (e: any) => {\n    // console.log(e);\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.pcPeer.setRemoteDescription(desc);\n    this.pcPeer.createAnswer().then((sdp: any) => {\n      this.gotDescription2(sdp);\n    });\n  };\n  gotDescription2 = (desc: any) => {\n    this.pcPeer.setLocalDescription(desc).then();\n  };\n  getRemoteSream = (e: any) => {\n    // this.remotesaudios.nativeElement.srcObject = e.stream;\n    // this.cmsvideo.nativeElement.srcObject = e.stream;\n    console.log(e.stream);\n    this.cmsvideostream = e.stream;\n    this.cmsaudio.nativeElement.srcObject = e.stream;\n  };\n  handleError(err: any) {\n    console.log(err);\n  }\n\n  titles(ev: number): void {\n    this.item = ev;\n  }\n\n  intercom(ev: number, pamas?: any) {\n    if (this.spacing == true) {\n      return;\n    }\n    if (ev == 1) {\n      if (pamas) {\n        if (this.oldgroup != '') {\n          if (this.oldgroup.status == 0) {\n            if (pamas.status == 1) {\n              this.talkGroupID = pamas.talkGroupID;\n              this.rx.enterintoTalkbackGroup(pamas.talkGroupID);\n              this.oldgroup = pamas;\n              this.communicate = true;\n            } else {\n              this.oldgroup = '';\n            }\n          } else if (this.oldgroup.status == 1) {\n            if (this.oldgroup.talkGroupID == pamas.talkGroupID) {\n              this.communicate = true;\n              this.pitchon = false;\n            } else if (this.oldgroup.talkGroupID != pamas.talkGroupID) {\n              this.rx.quitTalkbackGroup(this.oldgroup.talkGroupID);\n              this.talkGroupID = pamas.talkGroupID;\n              if (pamas.status == 1) {\n                this.oldgroup = pamas;\n                this.pitchon = false;\n                this.communicate = true;\n                this.rx.enterintoTalkbackGroup(pamas.talkGroupID);\n              } else {\n                this.oldgroup = '';\n              }\n            }\n          }\n        } else {\n          if (pamas.status == 1) {\n            this.communicate = true;\n            this.talkGroupID = pamas.talkGroupID;\n            this.oldgroup = pamas;\n            this.rx.enterintoTalkbackGroup(pamas.talkGroupID);\n          } else {\n            this.oldgroup = '';\n          }\n        }\n      }\n    } else if (ev == 0) {\n      if (this.pamas.status == 1) {\n        // console.log('退出');\n        // this.rx.quitTalkbackGroup(this.talkGroupID);\n        this.pitchon = true;\n      }\n      this.communicate = false;\n    }\n    this.content = ev;\n    this.showlist = [];\n    if (this.content == 0) {\n      this.addmember = false;\n      this.showlist = [];\n    }\n    if (pamas) {\n      this.designation = pamas.talkName;\n      this.userlist = pamas.member.split(';');\n      //获取列表\n      for (let i = 0; i < this.userlist.length; i++) {\n        if (this.userlist[i] == '' || typeof this.userlist[i] == 'undefined') {\n          this.userlist.splice(i, 1);\n          i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置，删除空之后，后面的元素要向前补位\n        }\n      }\n      for (let i = 0; i < this.userlist.length; i++) {\n        this.showlist.push({ name: this.userlist[i] });\n      }\n      for (let i = 0; i < this.userListtype.length; i++) {\n        let stact = this.userListtype[i];\n        for (let j = 0; j < this.showlist.length; j++) {\n          if (this.showlist[j].name == stact.userID) {\n            this.showlist[j].userType = stact.userType; //用户类型\n            this.showlist[j].userName = stact.userName;\n            this.showlist[j].devStatus = stact.devStatus; //设备状态\n            this.showlist[j].electricity = stact.electricity; //电量\n            this.showlist[j].netStatus = stact.netStatus; //网络状态\n            this.showlist[j].micStatus = stact.micStatus; //话筒状态\n          }\n        }\n      }\n      for (let i = 0; i < this.showlist.length; i++) {\n        if (this.rx.userID == this.showlist[i].name) {\n          this.showlist[i].userName = '本机';\n          let item = this.showlist[0];\n          this.showlist[0] = this.showlist[i];\n          this.showlist[i] = item;\n          this.showlist[0].userType = this.rx.userType;\n          this.showlist[0].electricity = '4';\n          this.showlist[0].netStatus = '4';\n          this.showlist[0].devStatus = '1';\n        }\n      }\n      this.talkGroupID = pamas.talkGroupID;\n      this.pamas = pamas;\n      for (let i = 0; i < this.selectlist.length; i++) {\n        if (this.selectlist[i].talkGroupID == pamas.talkGroupID) {\n          this.activeIndex = i;\n        }\n      }\n    }\n  }\n\n  addUser() {\n    // 谈论组添加成员\n    for (let i = 0; i < this.userlist.length; i++) {\n      let user = this.userlist[i];\n      if (user == this.rx.userID) {\n        this.userlist[i] = '本机';\n      }\n    }\n    this.addmember = true;\n  }\n  // 人员管理添加\n  personneladd() {\n    this.shows = !this.shows;\n  }\n  runParent(data: any) {\n    this.addmember = data.addmember;\n    let member = data.member;\n    for (let j = 0; j < this.userlist.length; j++) {\n      let user = this.userlist[j];\n      for (let i = 0; i < member.length; i++) {\n        if (user == member[i].userName) {\n          member.splice(i, 1);\n          i--;\n        }\n      }\n    }\n\n    for (let i = 0; i < member.length; i++) {\n      this.userlist.push(member[i].userID);\n    }\n    for (let i = 0; i < member.length; i++) {\n      this.userIDList += member[i].userID + ';';\n    }\n    for (let i = 0; i < member.length; i++) {\n      this.showlist.push({ name: member[i].userID });\n    }\n    for (let i = 0; i < this.userListtype.length; i++) {\n      let stact = this.userListtype[i];\n      for (let j = 0; j < this.showlist.length; j++) {\n        if (this.showlist[j].name == stact.userID) {\n          this.showlist[j].stact = stact.userType; //用户类型\n          this.showlist[j].userName = stact.userName; //用户类型\n          this.showlist[j].devStatus = stact.devStatus; //设备状态\n          this.showlist[j].electricity = stact.electricity; //电量\n          this.showlist[j].netStatus = stact.netStatus; //网络状态\n          this.showlist[j].micStatus = stact.micStatus; //话筒状态\n        }\n      }\n    }\n    for (let i = 0; i < this.showlist.length; i++) {\n      if (this.rx.userID == this.showlist[i].name) {\n        this.showlist[i].userName = '本机';\n        let item = this.showlist[0];\n        this.showlist[0] = this.showlist[i];\n        this.showlist[i] = item;\n        this.showlist[0].userType = this.rx.userType;\n        this.showlist[0].electricity = '4';\n        this.showlist[0].netStatus = '4';\n        this.showlist[0].devStatus = '1';\n      }\n    }\n    this.rx.addTalkbackList(this.userIDList, this.talkGroupID);\n  }\n\n  addrunParent(event: any) {\n    let member = event.member;\n    this.addpersonnel = event.addmember;\n    for (let i = 0; i < member.length; i++) {\n      this.adduserpersonnel += member[i].userName + ';';\n    }\n    for (let i = 0; i < member.length; i++) {\n      this.memListID += member[i].userID + ';';\n    }\n  }\n  addPersonnels() {\n    this.addpersonnel = true;\n  }\n  //添加讨论组\n  confirmpersonnel() {\n    let videoFlag;\n    if (this.videoFlag == '自动接收') {\n      videoFlag = '1';\n    } else {\n      videoFlag = '0';\n    }\n    let data = {\n      memListID: this.memListID,\n      talkGroupName: this.talkGroupName,\n      describe: this.describe,\n      videoFlag: videoFlag,\n    };\n    this.rx.addTalkbackGroup(data);\n    this.content = 0;\n    this.talkGroupName = '';\n    this.describe = '';\n    this.memListID = '';\n    this.videoFlag = '手动接收';\n  }\n  //右键点击位置显示\n  test(ev: any, item: any) {\n    this.talkGroupitem = item;\n    this.kongshow = true;\n    this.kongbais = this.kongbai.nativeElement;\n    this.kongbais.styleposition = 'absolute';\n    this.kongbais.style.left = ev.pageX + 'px';\n    this.kongbais.style.top = ev.pageY + 'px';\n  }\n  andrs(ev: any) {\n    ev.show = !ev.show;\n  }\n  // 踢出讨论组\n  kick() {\n    let userID = '';\n    for (let i = 0; i < this.showlist.length; i++) {\n      let data = this.showlist[i];\n      if (data.show == true) {\n        for (let j = 0; j < this.showlist.length; j++) {\n          if (data.name == this.showlist[j]) {\n            this.showlist.splice(j, 1);\n            j--;\n          }\n        }\n      }\n    }\n    for (let i = 0; i < this.showlist.length; i++) {\n      let data = this.showlist[i];\n      if (data.show == true) {\n        userID += this.showlist[i].name + ';';\n        this.showlist.splice(i, 1);\n        this.userlist.splice(i, 1);\n        i--;\n      }\n    }\n    this.rx.removeTalkbackList(userID, this.talkGroupID);\n  }\n  // 禁话\n  barring() {\n    let userID = '';\n    for (let i = 0; i < this.showlist.length; i++) {\n      let data = this.showlist[i];\n      if (data.show == true) {\n        userID += this.showlist[i].name + ';';\n      }\n    }\n    if (userID == '') {\n      this.nzmessage.create('warning', '未选择用户');\n    } else {\n      this.rx.barringTalkbackGroup(userID, this.talkGroupID, '1');\n      this.show();\n    }\n  }\n  // 解禁\n  relieve() {\n    let userID = '';\n    for (let i = 0; i < this.showlist.length; i++) {\n      let data = this.showlist[i];\n      if (data.show == true) {\n        userID += this.showlist[i].name + ';';\n      }\n    }\n    if (userID == '') {\n      this.nzmessage.create('warning', '未选择用户');\n    } else {\n      this.rx.barringTalkbackGroup(userID, this.talkGroupID, '0');\n      this.show();\n    }\n  }\n  show() {\n    for (let i = 0; i < this.showlist.length; i++) {\n      let data = this.showlist[i];\n      data.show = false;\n    }\n  }\n  //删除对讲组\n  deleteTalkgroup() {\n    this.userquit = true;\n  }\n  //开始对讲组\n  begin(ev: any, $event?: any) {\n    if ($event) {\n      $event.stopPropagation();\n    }\n    let j = -1;\n    for (let i = 0; i < this.selectlist.length; i++) {\n      if (ev.talkGroupID == this.selectlist[i].talkGroupID) {\n        if (this.selectlist[i].groupshow == true) {\n          j = i;\n        }\n      }\n    }\n    this.activeIndex = j;\n    if (ev.status == 1) {\n      if (this.activeIndex == -1) {\n        ev.show = !ev.show;\n        ev.status = '0';\n        this.intercom(0, ev);\n        this.communicate = false;\n        this.talkGroupID = ev.talkGroupID;\n        this.rx.closeTalkbackList(ev.talkGroupID);\n      } else {\n        this.pitchon = false;\n        this.talkGroupID = ev.talkGroupID;\n        this.rx.closeTalkbackList(ev.talkGroupID);\n      }\n    } else if (ev.status == 0) {\n      if (this.activeIndex == -1) {\n        this.rx.beginTalkbackList(ev.talkGroupID);\n      } else {\n        this.oldgroup = ev;\n        this.talkGroupID = ev.talkGroupID;\n        this.pitchon = true;\n        this.rx.beginTalkbackList(ev.talkGroupID);\n      }\n    }\n  }\n  runParentinit(msg: boolean) {\n    this.hint = msg;\n  }\n  enterinto(ev: any, i: number) {\n    if (this.spacing == true) {\n      return;\n    }\n    if (this.activeIndex == -1) {\n      this.activeIndex = i;\n      this.oldgroup = ev;\n      if (ev.status == 1) {\n        this.rx.enterintoTalkbackGroup(ev.talkGroupID);\n        this.talkGroupID = ev.talkGroupID;\n        this.pitchon = true;\n      }\n    } else {\n      if (this.activeIndex == i) {\n        return;\n      } else {\n        this.activeIndex = i;\n        if (this.oldgroup.status == 1) {\n          this.rx.quitTalkbackGroup(this.oldgroup.talkGroupID);\n          this.oldgroup = ev;\n          this.pitchon = false;\n          this.talkGroupID = '';\n          if (ev.status == 1) {\n            this.rx.enterintoTalkbackGroup(ev.talkGroupID);\n            this.talkGroupID = ev.talkGroupID;\n            this.pitchon = true;\n          } else {\n            // this.nzmessage.create('warning', '未开启');\n          }\n        } else {\n          this.oldgroup = ev;\n          if (ev.status == 1) {\n            this.rx.enterintoTalkbackGroup(ev.talkGroupID);\n            this.pitchon = true;\n            this.talkGroupID = ev.talkGroupID;\n          } else {\n            // this.nzmessage.create('warning', '未开启');\n          }\n        }\n      }\n    }\n    this.pamas = ev;\n  }\n  //进入讨论组\n  enter() {\n    let list = this.talkGroupitem.member.split(';');\n    for (let i = 0; i < list.length; i++) {\n      if (this.rx.userName == list[i]) {\n        this.grouplisttype = true;\n      }\n    }\n    if (this.grouplisttype == false) {\n      this.hint = true;\n      this.hinttype = 6;\n      this.grouplisttype = false;\n    } else if (this.grouplisttype == true) {\n      this.kongshow = false;\n      this.begin(this.talkGroupitem);\n      this.grouplisttype = false;\n    }\n  }\n  occlude() {\n    this.communicate = false;\n    this.content = 0;\n    this.rx.closeTalkbackList(this.talkGroupitem.talkGroupID);\n    this.rx.gainTalkbackList(); // 获取对讲组列表\n  }\n  sendParent() {\n    this.userquit = false;\n  }\n  userQuits() {\n    let talkGroupID = this.talkGroupitem.talkGroupID;\n    this.rx.removeTalkbackGroup(talkGroupID);\n    this.userquit = false;\n    this.content = 0;\n    this.rx.gainTalkbackList(); // 获取对讲组列表\n  }\n  chat(ev: any) {\n    this.ssiontype = ev;\n  }\n  message(ev: any, $event: any) {\n    $event.stopPropagation();\n    let data = {\n      message: ev,\n    };\n    this.outer.emit(data);\n  }\n  gauntlet() {\n    this.interval = true;\n    this.timeout = setTimeout(() => {\n      this.acquittal();\n    }, 2000);\n  }\n  acquittal() {\n    clearTimeout(this.timeout);\n    if (this.interval == true) {\n      this.interval = false;\n      this.cricle = 2;\n      // console.log('按下');\n      let videoFlag = '0';\n      if (this.pamas.openvideo == true) {\n        videoFlag = '1';\n      } else {\n        videoFlag = '0';\n      }\n      this.rx.gainTalkbackJurisdiction(this.talkGroupID, videoFlag);\n      this.rx.gainState(); //获取状态列表\n    }\n  }\n  eva(ev: any) {\n    this.interval = false;\n  }\n  loosen() {\n    this.cricle = 1;\n    if (this.interval == false) {\n      this.rx.releaseTalkbackJurisdiction(this.talkGroupID);\n      this.rx.gainState(); //获取状态列表\n    }\n    if (this.pitchon == true) {\n      this.rx.releaseTalkbackJurisdiction(this.talkGroupID);\n      this.rx.gainState(); //获取状态列表\n    }\n    this.interval = false;\n  }\n  sider() {\n    this.leftsider = !this.leftsider;\n    this.sendService.sendsider(this.leftsider);\n  }\n  addgroup() {\n    this.select = true;\n  }\n  closepattern(ev: any) {\n    ev.openvideo = !ev.openvideo;\n    if (this.speakerstate == 3) {\n      this.localStream.getVideoTracks()[0].enabled = false;\n      this.thisshow = false;\n      this.localvideoshow = false;\n    }\n  }\n  openpatterm(ev: any) {\n    ev.openvideo = !ev.openvideo;\n    if (this.speakerstate == 3) {\n      this.localStream.getVideoTracks()[0].enabled = true;\n      this.thisshow = true;\n      this.localvideoshow = true;\n    }\n  }\n  refuse() {\n    this.videoshow = false;\n  }\n  examinevideo() {\n    this.videoshow = true;\n    this.fullscreen = false;\n  }\n  magnify() {\n    this.fullscreen = true;\n  }\n  cutfullscreen() {\n    this.fullscreen = !this.fullscreen;\n  }\n  lessen() {\n    this.fullscreen = false;\n  }\n  closelocal() {\n    this.localvideoshow = false;\n  }\n  openlocal() {\n    this.localvideoshow = true;\n  }\n}\n","<div class=\"userquitbox\" *ngIf=\"userquit\">\n    <div class=\"userquit\">\n        <div class=\"nav\" cdkDrag>\n            <div class=\"setname\" cdkDragHandle>\n                <div>提示</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent()\"></i>\n            </div>\n            <div class=\"sethint\">确定要删除该群组吗？</div>\n            <div class=\"sethintbutton\">\n                <button (click)=\"userQuits()\">确定</button>\n                <button (click)=\"userquit = false\">取消</button>\n            </div>\n        </div>\n    </div>\n</div>\n<div class=\"box\" class=\"{{ operationclass }}\">\n    <div class=\"sider\" *ngIf=\"leftsider\">\n        <div class=\"titlebox\">\n            <div class=\"all\" [ngClass]=\"item == 0 ? 'li-active' : ''\" (click)=\"titles(0)\">\n                用户\n            </div>\n            <div class=\"duijiang\" [ngClass]=\"item == 1 ? 'li-active' : ''\" (click)=\"titles(1)\">\n                群组\n            </div>\n        </div>\n        <div class=\"inputbox\" [style.display]=\"item == 0 ? 'block' : 'none'\">\n            <nz-input-group [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"inputClear\">\n                <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"userTree()\" />\n            </nz-input-group>\n            <ng-template #prefixTemplate><i nz-icon nzType=\"search\" class=\"icon\"></i\n      ></ng-template>\n      <ng-template #inputClear>\n        <div *ngIf=\"inputValue\" class=\"icon\">\n          <i\n            nz-icon\n            nzType=\"close-circle\"\n            nzTheme=\"outline\"\n            (click)=\"userempty()\"\n          ></i>\n        </div>\n        </ng-template>\n    </div>\n    <div class=\"inputbox\" [style.display]=\"item == 1 ? 'block' : 'none'\">\n        <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\n            <input type=\"text\" nz-input [(ngModel)]=\"value\" (keyup.enter)=\"searchTree()\" />\n        </nz-input-group>\n        <ng-template #prefixTemplateUser><i nz-icon nzType=\"search\" class=\"icon\"></i\n      ></ng-template>\n      <ng-template #inputClearTpl>\n        <div *ngIf=\"value\" class=\"icon\">\n          <i\n            nz-icon\n            nzType=\"close-circle\"\n            nzTheme=\"outline\"\n            (click)=\"empty()\"\n            class=\"icon\"\n          ></i>\n    </div>\n    </ng-template>\n</div>\n<div class=\"navbox\">\n    <div [style.display]=\"item == 0 ? 'block' : 'none'\" class=\"tree\">\n        <app-tree [vodtree]=\"vodtree\" (outer)=\"tree($event)\" [uservalue]=\"uservalue\"></app-tree>\n    </div>\n    <div [style.display]=\"item == 1 ? 'block' : 'none'\" class=\"talkbackboxs\">\n        <div class=\"talkbackbox\">\n            <div class=\"branch\">\n                <i nz-icon nzType=\"caret-right\" nzTheme=\"outline\" [style.display]=\"branch == false ? 'block' : 'none'\" (click)=\"branch = true\"></i>\n                <i nz-icon nzType=\"caret-down\" nzTheme=\"outline\" (click)=\"branch = false\" [style.display]=\"branch == true ? 'block' : 'none'\"></i>\n            </div>\n            <div class=\"talkback\">群组</div>\n            <div class=\"addIntercomgGroup\">\n                <i nz-icon nzType=\"plus-square\" nzTheme=\"outline\" (click)=\"intercom(2)\"></i>\n            </div>\n        </div>\n        <div *ngIf=\"grouptype == '1'\">\n            <div class=\"talkbacklist\" [style.display]=\"branch == true ? 'block' : 'none'\">\n                <div *ngFor=\"let item of talkGroupLists; let i = index\">\n                    <div class=\"bofangbox\" (contextmenu)=\"test($event, item)\" #context (dblclick)=\"intercom(1, item)\">\n                        <div class=\"intercomteam\">\n                            <img src=\"assets/img/intercomteam_01.png\" alt=\"\" *ngIf=\"item.status == 0\" />\n                            <img src=\"assets/img/intercomteam_02.png\" alt=\"\" *ngIf=\"item.status == 1\" />\n                        </div>\n                        <div class=\"itemtext\">{{ item.talkName }}</div>\n                        <div class=\"play\">\n                            <div class=\"nav\">\n                                <div class=\"message\">\n                                    <div class=\"messageleft\" (click)=\"message(item, $event)\"></div>\n                                    <div class=\"intercomstart\" *ngIf=\"item.status == 0\" (click)=\"begin(item)\"></div>\n                                    <div class=\"intercomclose\" *ngIf=\"item.status == 1\" (click)=\"begin(item)\"></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div *ngIf=\"grouptype == '2'\" class=\"searching\">未检索的到群组</div>\n    </div>\n</div>\n</div>\n<div *ngIf=\"content == 0\" class=\"select\">\n    <div class=\"designation\">\n        <div class=\"menu\" (click)=\"sider()\">\n            <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\n        ><i\n          nz-icon\n          nzType=\"menu-unfold\"\n          nzTheme=\"outline\"\n          *ngIf=\"!leftsider\"\n        ></i>\n        </div>\n        <div style=\"margin-left: 10px; width: 100px\">群组调度</div>\n        <div class=\"add\">\n            <span (click)=\"addgroup()\" class=\"addgroup\">选择群组</span>\n        </div>\n    </div>\n    <div class=\"intercomgroup\">\n        <div class=\"group\">\n            <ng-container *ngFor=\"let item of selectlist; let i = index\">\n                <div class=\"itembox\" *ngIf=\"item.groupshow\" (click)=\"enterinto(item, i)\" (dblclick)=\"intercom(1, item)\" [ngClass]=\"activeIndex == i ? 'addborder' : 'removerborder'\">\n                    <div class=\"usernav\">\n                        <div class=\"user\">\n                            <div class=\"intercomteam\">\n                                <img src=\"assets/img/intercomteam_01.png \" alt=\" \" *ngIf=\"item.status == 0\" />\n                                <img src=\"assets/img/intercomteam_02.png \" alt=\" \" *ngIf=\"item.status == 1\" />\n                            </div>\n                            <div class=\"itemtext\">{{ item.talkName }}</div>\n                        </div>\n                        <div class=\"speaktestbox\" *ngIf=\"activeIndex == i\">\n                            <div class=\"speaktest\">\n                                <div *ngIf=\"speakerstate == 4\" style=\"font-size: 12px\">\n                                    当前讲话: &nbsp;&nbsp; {{ speakerID }}\n                                </div>\n                                <div *ngIf=\"speakerstate == 2\" style=\"font-size: 12px\">\n                                    抢话中\n                                </div>\n                                <div *ngIf=\"speakerstate == 1\" style=\"font-size: 12px\">\n                                    空闲\n                                </div>\n                                <div *ngIf=\"speakerstate == 3\" style=\"font-size: 12px\">\n                                    通话中\n                                </div>\n                            </div>\n                            <div class=\"cutvideo\">\n                                <div class=\"video\" *ngIf=\"thisshow&&groupsetting.videoTalk\" (click)=\"openlocal()\">\n                                    视频本显\n                                </div>&nbsp;&nbsp;\n                                <div class=\"video\" *ngIf=\"examine==false&&groupsetting.videoTalk \">\n                                    发送视频:\n                                </div>\n                                <div class=\"video\" *ngIf=\"examine==true&&groupsetting.videoTalk\" (click)=\"examinevideo()\">\n                                    查看视频\n                                </div>\n                                <div class=\"operation \" *ngIf=\"examine==false\">\n                                    <button [ngClass]=\"item.openvideo==false ? 'active' : '' \" onkeydown=\"return false\" (click)=\"closepattern( item) \">关闭</button>\n                                    <button [ngClass]=\"item.openvideo==true ? 'active' : '' \" onkeydown=\"return false\" (click)=\"openpatterm( item) \">开启</button>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"operatiob\">\n                        <div class=\"speakbox\">\n                            <div class=\"speaker\" [style.display]=\"activeIndex == i ? 'block' : 'none'\">\n                                <img src=\"assets/img/speaker.png\" alt=\"\" style=\"position: relative; left: 3px\" *ngIf=\"speakerstate == 4\" />\n                                <img src=\"assets/img/全局话筒_01.png\" alt=\"\" *ngIf=\"speakerstate == 1\" />\n                                <img src=\"assets/img/全局话筒_02.png\" alt=\"\" *ngIf=\"speakerstate == 2\" />\n                                <img src=\"assets/img/全局话筒_03.png\" alt=\"\" *ngIf=\"speakerstate == 3\" />\n                            </div>\n                        </div>\n                        <div class=\"message\" *ngIf=\"groupsetting.message\" (click)=\"message(item, $event)\"></div>\n                        <div class=\"intercomstart\" *ngIf=\"item.status == false\" (click)=\"begin(item, $event)\"></div>\n                        <div class=\"intercomclose\" *ngIf=\"item.status == true\" (click)=\"begin(item, $event)\"></div>\n                    </div>\n                </div>\n            </ng-container>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n        </div>\n    </div>\n</div>\n<div [style.display]=\"content == 1 ? 'block' : 'none'\" class=\"select\">\n    <div class=\"designation\">\n        <div class=\"menu\" (click)=\"sider()\">\n            <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\n        ><i\n          nz-icon\n          nzType=\"menu-unfold\"\n          nzTheme=\"outline\"\n          *ngIf=\"!leftsider\"\n        ></i>\n        </div>\n        <div style=\"margin-left: 10px; width: 100px\">\n            {{ designation }}\n        </div>\n        <div class=\"exitbox\">\n            <div (click)=\"intercom(0)\" class=\"quit\">退出</div>\n            <div (click)=\"kick()\" class=\"kick\">踢出</div>\n            <div (click)=\"relieve()\" class=\"kick\">解禁</div>\n            <div (click)=\"barring()\" class=\"kick\">禁话</div>\n        </div>\n    </div>\n    <div class=\"intercomgroup\">\n        <div class=\"userbox\">\n            <div class=\"add\" (click)=\"addUser()\">\n                <div class=\"addimg\"></div>\n            </div>\n            <div *ngFor=\"let items of showlist\">\n                <div class=\"itembox\">\n                    <div class=\"itemtypebox\">\n                        <div class=\"itembgc\" [ngClass]=\"{\n                  itembgchui: items.devStatus == '0',\n                  itembgclan: items.devStatus == '1',\n                  itembgcgreen: items.devStatus == '2'\n                }\">\n                            <img src=\"assets/img/head.png \" alt=\" \" class=\"imghead\" />\n                        </div>\n                        <div class=\"itemvoice\">\n                            <img src=\"assets/img/话筒_开.png \" alt=\" \" />\n                        </div>\n                        <div class=\"itemcellphone\">\n                            <img src=\"assets/img/type_android.png \" alt=\" \" *ngIf=\"items.userType == '1'\" />\n                            <img src=\"assets/img/type_pc.png \" alt=\" \" *ngIf=\"items.userType == '2'\" />\n                            <img src=\"assets/img/type_IPC.png \" alt=\" \" *ngIf=\"items.userType == '3'\" />\n                            <img src=\"assets/img/type_DB.png \" alt=\" \" *ngIf=\"items.userType == '4'\" />\n                        </div>\n                        <div class=\"circle\" (click)=\"andrs(items)\">\n                            <img src=\"../../../../../assets/img/对号.png \" alt=\" \" *ngIf=\"items.show\" />\n                        </div>\n                    </div>\n                    <div class=\"itemnav\">\n                        {{ items.userName }}\n                    </div>\n                    <div class=\"electric\">\n                        <div>\n                            <img src=\"assets/img/netstatus_outline.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 0\" />\n                            <img src=\"assets/img/netstatus_1.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 1\" />\n                            <img src=\"assets/img/netstatus_2.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 2\" />\n                            <img src=\"assets/img/netstatus_3.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 3\" />\n                            <img src=\"assets/img/netstatus_4.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 4\" />\n                        </div>\n                        <div>\n                            <img src=\"assets/img/electricity_outline.png \" alt=\" \" *ngIf=\"items.electricity == 0\" />\n                            <img src=\"assets/img/electricity_1.png \" alt=\" \" *ngIf=\"items.electricity == 1\" />\n                            <img src=\"assets/img/electricity_2.png \" alt=\" \" *ngIf=\"items.electricity == 2\" />\n                            <img src=\"assets/img/electricity_3.png \" alt=\" \" *ngIf=\"items.electricity == 3\" />\n                            <img src=\"assets/img/electricity_4.png \" alt=\" \" *ngIf=\"items.electricity == 4\" />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div *ngIf=\"addmember\">\n        <!-- 添加人员 -->\n        <app-addmember (outer)=\"runParent($event)\" [userListtype]=\"userListtype\" [list]=\"list\" [userlist]=\"userlist\"></app-addmember>\n    </div>\n</div>\n<div [style.display]=\"content == 2 ? 'block ' : 'none '\" class=\"select\">\n    <div class=\"creactbox\">\n        <div class=\"creact\">\n            <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\" (click)=\"sider()\"></i\n        ><i\n          nz-icon\n          nzType=\"menu-unfold\"\n          nzTheme=\"outline\"\n          *ngIf=\"!leftsider\"\n          (click)=\"sider()\"\n        ></i>\n        </div>\n        <div style=\"margin-left: 10px; line-height: 50px\">创建群组:</div>\n    </div>\n    <div class=\"memberbox\">\n        <div class=\"Groupname\">\n            <div class=\"textname groupDesignation\">组名称:</div>\n            <div>\n                <input [(ngModel)]=\"talkGroupName\" class=\"bgc val\" />\n            </div>\n        </div>\n        <div class=\"Groupname\">\n            <div class=\"textname\">成员:</div>\n            <div class=\"memberlist bgc\">\n                <div class=\"membernav\">{{ adduserpersonnel }}</div>\n                <div class=\"personnel\">\n                    <button (click)=\"addPersonnels()\">人员管理</button>\n                </div>\n            </div>\n        </div>\n        <div class=\"Groupname\">\n            <div class=\"textname\">描述:</div>\n            <div>\n                <textarea rows=\"4 \" [(ngModel)]=\"describe\" class=\"bgc\" maxlength=\"25 \" style=\"width: 600px; resize: none\"></textarea>\n            </div>\n        </div>\n        <div class=\"videoFlagbox\">\n            <div class=\"textname\">对讲视频:</div>\n            <div class=\"cutvideoFlag\">\n                <nz-radio-group [(ngModel)]=\"videoFlag\">\n                    <label nz-radio nzValue=\"自动接收\" style=\"color: #ffffff;\">自动接收</label>\n                    <label nz-radio nzValue=\"手动接收\" style=\"color: #ffffff;\">手动接收</label>\n                </nz-radio-group>\n            </div>\n        </div>\n        <div class=\"confirm\">\n            <button (click)=\"confirmpersonnel()\">确定</button>\n            <button (click)=\"intercom(0)\">取消</button>\n        </div>\n    </div>\n    <div *ngIf=\"addpersonnel\">\n        <!-- 添加人员 -->\n        <app-addmember (outer)=\"addrunParent($event)\" [userListtype]=\"userListtype\" [list]=\"list\"></app-addmember>\n    </div>\n</div>\n<div *ngIf=\"ssiontype\">\n    <owoMessage (outer)=\"chat($event)\" [talkgroupitem]=\"talkgroupitem\" [discussionmessane]=\"discussionmessane\"></owoMessage>\n</div>\n</div>\n<div class=\"kongbai\" #kongbai style=\"position: absolute; top: 0; left: 0; z-index: 1000\" [style.display]=\"kongshow ? 'block ' : 'none '\">\n    <div (click)=\"enter()\" *ngIf=\"this.talkGroupitem.status == 0\">开启群组</div>\n    <div (click)=\"occlude()\" *ngIf=\"this.talkGroupitem.status == 1\">关闭群组</div>\n    <div (click)=\"deleteTalkgroup()\">删除</div>\n</div>\n<div class=\"communicate\" [style.display]=\"communicate ? 'block' : 'none'\">\n    <div class=\"cricleimg\" (mousedown)=\"gauntlet()\" (mouseup)=\"loosen()\" (mousemove)=\"eva($event)\" appDrag>\n        <img src=\"assets/img/cricle_gray.png \" alt=\" \" [style.display]=\"cricle == 1 ? 'block ' : 'none '\" />\n        <img src=\"assets/img/cricle_blue.png \" alt=\" \" [style.display]=\"cricle == 2 ? 'block ' : 'none '\" />\n        <img src=\"assets/img/cricle_green.png \" alt=\" \" [style.display]=\"cricle == 3 ? 'block ' : 'none '\" />\n    </div>\n</div>\n\n<div *ngIf=\"hint\">\n    <app-hint (outer)=\"runParentinit($event)\" [hinttype]=\"hinttype\"></app-hint>\n</div>\n<div *ngIf=\"select\">\n    <app-select-group (outer)=\"selectgroup($event)\"></app-select-group>\n</div>\n<div>\n    <audio src=\"\" #remotesaudios autoplay class=\"remotesaudios\"></audio>\n</div>\n<div [style.display]=\"videoshow ? 'block' : 'none'\" class=\"fullscreenvideo \">\n    <div cdkDrag [ngClass]=\"fullscreen == true? 'fullscreenmagnify' : ' fullscreenlessen'\">\n        <div class=\"setname\" cdkDragHandle>\n            <div class=\"fullscreen\">\n                <i nz-icon nzType=\"fullscreen\" nzTheme=\"outline\" *ngIf=\"fullscreen==false\" (click)=\"magnify()\"></i>\n                <i nz-icon nzType=\"fullscreen-exit\" nzTheme=\"outline\" *ngIf=\"fullscreen==true\" (click)=\"lessen()\"></i>\n            </div>\n            <div class=\"closeout\">\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"refuse()\"></i>\n            </div>\n        </div>\n        <div class=\"videobox\" (dblclick)=\"cutfullscreen()\">\n            <video src=\"\" #cmsvideo muted autoplay playsinline></video>\n            <audio src=\"\" #cmsaudio autoplay playsinline></audio>\n        </div>\n    </div>\n</div>\n<div [style.display]=\"localvideoshow ? 'block' : 'none'\" class=\"localbox\">\n    <div class=\"local\" cdkDrag>\n        <div class=\"closeout\">\n            <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"closelocal()\"></i>\n        </div>\n        <div class=\"videobox\">\n            <video src=\"\" #localvideo autoplay></video>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { state } from '../../protocol/rtc/icstDefines';\n@Component({\n  selector: 'app-videomeeting',\n  templateUrl: './videomeeting.component.html',\n  styleUrls: ['./videomeeting.component.less'],\n})\nexport class VideomeetingComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() dstID: any;\n  @Input() title: any;\n  @Input() channelID: any;\n  @Input() videoMeetID = '';\n  videoContext = new AudioContext();\n  videogainNode = this.videoContext.createGain();\n  localStream: any = null;\n  pcPeer: any = null;\n  constructor(private rx: RxService, private ws: WebService) {}\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let resultdata = nav.resultData;\n      let cmdBody = nav.cmdBody;\n      switch (cmdid) {\n        case state.OWO_CMD_VIDEOMEET_EXIT: {\n          let memID = cmdBody.memID;\n          if (this.title.dstID == memID) {\n            this.title.hascall = false;\n            this.title.dstID = '';\n            delete this.title.src;\n            delete this.title.channelID;\n            this.pcPeer.close();\n            this.pcPeer = null;\n          }\n          break;\n        }\n      }\n      switch (respcmdid) {\n        case state.OWO_CMD_RTC_OFFER + 1: {\n          if (resultdata.channelID == this.channelID) {\n            setTimeout(() => {\n              this.remoteAnswer(nav);\n            }, 1000);\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_EXIT + 1: {\n          // console.log(nav);\n          //  console.log('关闭视频');\n          if (this.pcPeer != null) {\n            this.title.hascall = false;\n            this.title.dstID = '';\n            delete this.title.src;\n            delete this.title.channelID;\n            this.pcPeer.close();\n            this.pcPeer = null;\n            this.localStream.getTracks().forEach((track: any) => {\n              track.stop();\n            });\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_STOP + 1: {\n          // console.log('关闭视频');\n          if (this.pcPeer != null) {\n            this.title.hascall = false;\n            this.title.dstID = '';\n            delete this.title.src;\n            delete this.title.channelID;\n            this.pcPeer.close();\n            this.pcPeer = null;\n            this.localStream.getTracks().forEach((track: any) => {\n              track.stop();\n            });\n          }\n          break;\n        }\n        default:\n          break;\n      }\n    });\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.dstID) {\n      // console.log(this.dstID);\n    }\n    if (changes.channelID) {\n      if (this.channelID) {\n        this.title.hascall = true;\n        const configuration = {};\n        this.pcPeer = new RTCPeerConnection(configuration);\n        this.video();\n      }\n    }\n  }\n  closeVideo($event: any, ev: any) {\n    $event.stopPropagation();\n    if (ev.src) {\n      this.rx.closeConferenceVideo(this.dstID, this.videoMeetID);\n      this.title.hascall = false;\n      this.title.dstID = '';\n      delete this.title.src;\n      this.pcPeer.close();\n      this.pcPeer = null;\n      this.localStream.getTracks().forEach((track: any) => {\n        track.stop();\n      });\n    }\n  }\n  pushtan($event: any, ev: any) {\n    $event.stopPropagation();\n    let data = {\n      pushselect: ev,\n      pushhint: true,\n    };\n    this.outer.emit(data);\n  }\n  video = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: true,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          // var videoSource = this.videoContext.createMediaStreamSource(stream),\n          //   videoDestination = this.videoContext.createMediaStreamDestination();\n          // videoSource.connect(this.videogainNode);\n          // this.videogainNode.connect(videoDestination);\n          // this.videogainNode.gain.value = 1;\n          // that.localStream = videoDestination.stream;\n          that.localStream = stream;\n          that.call();\n        })\n        .catch(this.handleError);\n    }\n  };\n  call = () => {\n    // this.videolists[this.srcprice].hascall = true;\n    this.pcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.localStream.getTracks().forEach((track: any) => {\n      this.pcPeer.addTrack(track, this.localStream);\n    });\n    this.pcPeer.onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.pcPeer.onconnection = function () {};\n    this.pcPeer.ondatachannel = (event: any) => {};\n\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.channelID,\n      audioDirection: 'inactive',\n      videoDirection: 'sendonly',\n    });\n  };\n  remoteAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.pcPeer.setRemoteDescription(desc);\n    this.pcPeer.createAnswer().then((sdp: any) => {\n      this.gotDescription2(sdp);\n    });\n  };\n  gotDescription2 = (desc: any) => {\n    this.pcPeer.setLocalDescription(desc).then();\n  };\n  // 播放视频\n  getRemoteSream = (e: any) => {\n    this.title.src = e.stream;\n  };\n  handleError(err: any) {\n    console.log(err);\n  }\n}\n","<div class=\"box\" (mouseenter)=\"this.title.show = true\" (mouseleave)=\"this.title.show = false\">\n    <div class=\"hover\">\n        <div class=\"borderbox\">\n            &nbsp;&nbsp; <span>{{ dstID }}</span>\n        </div>\n    </div>\n    <div class=\"videoplay\">\n        <video #playvideolist [srcObject]=\"title.src\" autoplay class=\"videoitem\"></video>\n    </div>\n    <div class=\"vide\" *ngIf=\"this.title.show\">\n        <div class=\"camera\">\n            <ul class=\"clearfix\">\n                <li>\n                    <div class=\"cameraimg\" (click)=\"closeVideo($event,title)\"></div>\n                </li>\n                <li>\n                    <div class=\"voiceimg\"></div>\n                </li>\n                <li *ngIf=\"title.dstID != ''\">\n                    <div class=\"pushimg\" (click)=\"pushtan($event,title.dstID)\"></div>\n                </li>\n            </ul>\n        </div>\n    </div>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'arr',\n})\nexport class ArrPipe implements PipeTransform {\n  transform(value: any) {\n    let data: any = [];\n    for (let i = 1; i < value + 1; i++) {\n      data.push(i);\n    }\n    return data;\n  }\n}\n","import {\n  Component,\n  OnInit,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n  EventEmitter,\n  Output,\n} from '@angular/core';\nimport { RxService } from '../../protocol/rtc/rx.service';\n@Component({\n  selector: 'app-excel',\n  templateUrl: './excel.component.html',\n  styleUrls: ['./excel.component.less'],\n})\nexport class ExcelComponent implements OnInit {\n  constructor(private rx: RxService) {}\n  @Input() larges: any;\n  @Input() mergelarge: any;\n  @Input() splitlarge: any;\n  @Input() invalidlarge: any;\n  @Input() validlarge: any;\n  @Input() projectiondata: any;\n  @Output() private outer = new EventEmitter<any>();\n  title = 'exce';\n  width: any;\n  height: any;\n  canvasWidth: any;\n  tableData: any;\n  selectedCells: any = [];\n  // mousedown的时候设置为其他值 否则都是-1\n  selectionHold = -1;\n  startX = -1;\n  startY = -1;\n  endX = -1;\n  endY = -1;\n  contextPos = {\n    l: 0,\n    t: 0,\n  };\n  ngOnInit() {}\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.larges) {\n      this.tableData = this.larges;\n      if (this.tableData.layoutDetail == undefined) {\n        this.transform();\n        this.width = 100 / this.tableData.rows + '%';\n        this.height = 100 / this.tableData.cols + '%';\n      } else {\n        this.width = 100 / this.tableData.rows + '%';\n        this.height = 100 / this.tableData.cols + '%';\n      }\n    }\n    if (changes.projectiondata) {\n      if (this.projectiondata != undefined) {\n        this.projectionscreen();\n      }\n    }\n    if (changes.mergelarge) {\n      if (this.mergelarge > 0) {\n        this.merge();\n      }\n    }\n    if (changes.invalidlarge) {\n      if (this.invalidlarge > 0) {\n        this.invalid();\n      }\n    }\n    if (changes.validlarge) {\n      if (this.validlarge > 0) {\n        this.valid();\n      }\n    }\n    if (changes.splitlarge) {\n      if (this.splitlarge > 0) {\n        this.split();\n      }\n    }\n  }\n  countwidth(row: any, col: any) {\n    return (\n      (100 / this.tableData.cols) *\n        this.tableData.layoutDetail[(row - 1) * this.tableData.cols + col - 1]\n          .colSpan +\n      '%'\n    );\n  }\n  countheight(row: any, col: any) {\n    return (\n      (100 / this.tableData.rows) *\n        this.tableData.layoutDetail[(row - 1) * this.tableData.cols + col - 1]\n          .rowSpan +\n      '%'\n    );\n  }\n  transform() {\n    let arr: any = [];\n    for (let i = 0; i < this.tableData.rows * this.tableData.cols; i++) {\n      arr.push({\n        colSpan: 1,\n        rowSpan: 1,\n        show: true,\n        valid: false,\n      });\n    }\n    this.tableData.layoutDetail = arr;\n  }\n  clearSelection() {\n    this.selectedCells = [];\n  }\n\n  isNeedShow(row: any, col: any): boolean {\n    if (\n      this.tableData.layoutDetail[(row - 1) * this.tableData.cols + col - 1]\n        .colSpan == 0\n    ) {\n      return false;\n    } else {\n      return true;\n    }\n  }\n  handleCellMousedown(e: any, x: any, y: any) {\n    // 左键点击\n    if (e.which === 1) {\n      this.endX = this.endY = -1;\n    }\n    // e.witch = 1 是鼠标左键\n    if (e.which !== 1) return;\n\n    let cellIndex: any = (x - 1) * this.tableData.cols + y - 1;\n    this.startX = x;\n    this.startY = y;\n    this.selectedCells = [cellIndex];\n    // mousedown标志\n    this.selectionHold = cellIndex;\n  }\n  handleCellMouseenter(e: any, x: any, y: any) {\n    e.stopPropagation();\n    e.preventDefault();\n    if (this.selectionHold !== -1) {\n      this.endX = x;\n      this.endY = y;\n      this.rendSelectedCell();\n    }\n  }\n\n  rendSelectedCell() {\n    let startX = Math.min(this.startX, this.endX);\n    let startY = Math.min(this.startY, this.endY);\n    let endX = Math.max(this.startX, this.endX);\n    let endY = Math.max(this.startY, this.endY);\n    let tableData = this.tableData;\n    let selectedCells = [];\n    for (let row = 1; row <= tableData.cols; row++) {\n      for (let col = 1; col <= tableData.cols; col++) {\n        if (row >= startX && row <= endX && col >= startY && col <= endY) {\n          selectedCells.push((row - 1) * this.tableData.cols + col - 1);\n        }\n      }\n    }\n    this.selectedCells = selectedCells;\n  }\n  handleMouseUp() {\n    // 放下\n    this.selectionHold = -1;\n  }\n\n  // 合并\n  merge() {\n    if (\n      this.startX === -1 ||\n      this.startY === -1 ||\n      this.endX === -1 ||\n      this.endY === -1 ||\n      (this.startX === this.endX && this.startY === this.endY)\n    )\n      return;\n    let combine = false;\n    for (let i = 0; i < this.selectedCells.length; i++) {\n      if (\n        this.tableData.layoutDetail[this.selectedCells[i]].merge != undefined\n      ) {\n        this.selectedCells = Array.from(\n          new Set(\n            this.selectedCells.concat(\n              this.tableData.layoutDetail[this.selectedCells[i]].merge\n            )\n          )\n        );\n        delete this.tableData.layoutDetail[this.selectedCells[i]].merge;\n        combine = true;\n      }\n    }\n    if (combine == false) {\n      this.tableData.layoutDetail[this.selectedCells[0]].rowSpan =\n        Math.abs(this.endX - this.startX) + 1;\n      this.tableData.layoutDetail[this.selectedCells[0]].colSpan =\n        Math.abs(this.endY - this.startY) + 1;\n      for (let i = 1; i < this.selectedCells.length; i++) {\n        this.tableData.layoutDetail[this.selectedCells[i]].rowSpan = 0;\n        this.tableData.layoutDetail[this.selectedCells[i]].colSpan = 0;\n        this.tableData.layoutDetail[this.selectedCells[i]].show = false;\n      }\n      this.tableData.layoutDetail[this.selectedCells[0]].merge =\n        this.selectedCells;\n    } else if (combine == true) {\n      for (let i = 0; i < this.selectedCells.length; i++) {\n        this.tableData.layoutDetail[this.selectedCells[i]].rowSpan = 1;\n        this.tableData.layoutDetail[this.selectedCells[i]].colSpan = 1;\n        this.tableData.layoutDetail[this.selectedCells[i]].show = true;\n      }\n      combine = false;\n    }\n    this.clearSelection();\n    this.outer.emit({ data: 1 });\n  }\n  // 拆分\n  split() {\n    if (this.selectedCells.length > 0) {\n      let merge = this.tableData.layoutDetail[this.selectedCells[0]].merge;\n      if (merge != undefined) {\n        for (let i = 0; i < merge.length; i++) {\n          this.tableData.layoutDetail[merge[i]].rowSpan = 1;\n          this.tableData.layoutDetail[merge[i]].colSpan = 1;\n          this.tableData.layoutDetail[merge[i]].show = true;\n        }\n        delete this.tableData.layoutDetail[this.selectedCells[0]].merge;\n      }\n      this.clearSelection();\n      this.outer.emit({ data: 1 });\n    }\n  }\n  // 无效\n  invalid() {\n    if (this.selectedCells.length > 0) {\n      for (let i = 0; i < this.selectedCells.length; i++) {\n        this.tableData.layoutDetail[this.selectedCells[i]].valid = true;\n      }\n      this.clearSelection();\n      this.outer.emit({ data: 1 });\n    }\n  }\n  judgevalid(row: any, col: any) {\n    let index = (row - 1) * this.tableData.cols + col - 1;\n    if (this.tableData.layoutDetail[index]) {\n      if (this.tableData.layoutDetail[index].valid == true) {\n        return true;\n      } else {\n        return false;\n      }\n    } else {\n      return false;\n    }\n  }\n  // 有效\n  valid() {\n    if (this.selectedCells.length > 0) {\n      for (let i = 0; i < this.selectedCells.length; i++) {\n        this.tableData.layoutDetail[this.selectedCells[i]].valid = false;\n      }\n      this.clearSelection();\n      this.outer.emit({ data: 1 });\n    }\n  }\n  // 拖拽进入\n  eventinto(e: any, item: any) {\n    // console.log('进入目标元素');\n  }\n  eventtarget(ev: any, row: any, col: any) {\n    // console.log('在目标元素中拖拽');\n    let index = (row - 1) * this.tableData.cols + col - 1;\n    if (this.tableData.layoutDetail[index].valid == true) {\n      return;\n    } else {\n      ev.preventDefault();\n    }\n  }\n  eventleave(ev: any, item: any) {\n    // console.log('拖放离开目标元素');\n  }\n\n  eventdrop(ev: any, row: any, col: any) {\n    var item = ev.dataTransfer.getData('item');\n    var type = ev.dataTransfer.getData('type');\n    var devStatus = ev.dataTransfer.getData('devStatus');\n    let mergedata =\n      this.tableData.layoutDetail[(row - 1) * this.tableData.cols + col - 1]\n        .merge;\n    if (mergedata == undefined) {\n      // 一个框\n      let mergelist = {\n        x1: row - 1, //大屏范围左上角x坐标值\n        y1: col - 1, //大屏范围左上角y坐标值\n        x2: row, //大屏范围右下角x坐标值\n        y2: col, //大屏范围右下角y坐标值\n        serviceType: '1',\n        srcType: '1',\n        srcID: item,\n      };\n      this.tableData.layoutDetail[\n        (row - 1) * this.tableData.cols + col - 1\n      ].projection = mergelist;\n      // this.rx.openProjectionScreen(mergelist);\n      this.outer.emit({ data: 1 });\n    } else {\n      let mergelow = mergedata[mergedata.length - 1];\n      if (mergelow - this.tableData.cols <= 0) {\n        //第一排\n        let mergelist = {\n          x1: row - 1, //大屏范围左上角x坐标值\n          y1: col - 1, //大屏范围左上角y坐标值\n          x2: row, //大屏范围右下角x坐标值\n          y2: mergelow + 1, //大屏范围右下角y坐标值\n          serviceType: '1',\n          srcType: '1',\n          srcID: item,\n        };\n        this.tableData.layoutDetail[\n          (row - 1) * this.tableData.cols + col - 1\n        ].projection = mergelist;\n        // this.rx.openProjectionScreen(mergelist);\n        this.outer.emit({ data: 1 });\n      } else {\n        // 后面几排\n        let rowx2 = Math.ceil((mergelow + 1) / this.tableData.cols);\n        let rowy2 = (mergelow + 1) % this.tableData.cols;\n        let mergelist = {\n          x1: row - 1, //大屏范围左上角x坐标值\n          y1: col - 1, //大屏范围左上角y坐标值\n          x2: rowx2, //大屏范围右下角x坐标值\n          y2: rowy2, //大屏范围右下角y坐标值\n          serviceType: '1',\n          srcType: '1',\n          srcID: item,\n        };\n        this.tableData.layoutDetail[\n          (row - 1) * this.tableData.cols + col - 1\n        ].projection = mergelist;\n        this.outer.emit({ data: 1 });\n        // this.rx.openProjectionScreen(mergelist);\n      }\n    }\n  }\n  closeshow(row: any, col: any) {\n    this.tableData.layoutDetail[\n      (row - 1) * this.tableData.cols + col - 1\n    ].closeshow = true;\n  }\n  closehide(row: any, col: any) {\n    this.tableData.layoutDetail[\n      (row - 1) * this.tableData.cols + col - 1\n    ].closeshow = false;\n  }\n  closeprojection(row: any, col: any) {\n    delete this.tableData.layoutDetail[\n      (row - 1) * this.tableData.cols + col - 1\n    ].projection;\n    // this.rx.closeProjectionScreen()\n    this.outer.emit({ data: 1 });\n  }\n  projectionscreen() {\n    if (this.startX === -1 || this.startY === -1) return;\n    let row = this.startX;\n    let col = this.startY;\n    var item = this.projectiondata.userId;\n    let mergedata =\n      this.tableData.layoutDetail[(row - 1) * this.tableData.cols + col - 1]\n        .merge;\n    if (mergedata == undefined) {\n      // 一个框\n      let mergelist = {\n        x1: row - 1, //大屏范围左上角x坐标值\n        y1: col - 1, //大屏范围左上角y坐标值\n        x2: row, //大屏范围右下角x坐标值\n        y2: col, //大屏范围右下角y坐标值\n        serviceType: '1',\n        srcType: '1',\n        srcID: item,\n      };\n      this.tableData.layoutDetail[\n        (row - 1) * this.tableData.cols + col - 1\n      ].projection = mergelist;\n      // this.rx.openProjectionScreen(mergelist);\n      this.outer.emit({ data: 1 });\n    } else {\n      let mergelow = mergedata[mergedata.length - 1];\n      if (mergelow - this.tableData.cols <= 0) {\n        //第一排\n        let mergelist = {\n          x1: row - 1, //大屏范围左上角x坐标值\n          y1: col - 1, //大屏范围左上角y坐标值\n          x2: row, //大屏范围右下角x坐标值\n          y2: mergelow + 1, //大屏范围右下角y坐标值\n          serviceType: '1',\n          srcType: '1',\n          srcID: item,\n        };\n        this.tableData.layoutDetail[\n          (row - 1) * this.tableData.cols + col - 1\n        ].projection = mergelist;\n        // this.rx.openProjectionScreen(mergelist);\n        this.outer.emit({ data: 1 });\n      } else {\n        // 后面几排\n        let rowx2 = Math.ceil((mergelow + 1) / this.tableData.cols);\n        let rowy2 = (mergelow + 1) % this.tableData.cols;\n        let mergelist = {\n          x1: row - 1, //大屏范围左上角x坐标值\n          y1: col - 1, //大屏范围左上角y坐标值\n          x2: rowx2, //大屏范围右下角x坐标值\n          y2: rowy2, //大屏范围右下角y坐标值\n          serviceType: '1',\n          srcType: '1',\n          srcID: item,\n        };\n        this.tableData.layoutDetail[\n          (row - 1) * this.tableData.cols + col - 1\n        ].projection = mergelist;\n        this.outer.emit({ data: 1 });\n        // this.rx.openProjectionScreen(mergelist);\n      }\n    }\n  }\n}\n","<div class=\"box\">\n    <table class=\"table\">\n        <tr *ngFor=\"let row of tableData.rows | arr; let i = index\">\n            <ng-container *ngFor=\"let col of tableData.cols | arr; let j = index\">\n                <td [attr.colspan]=\"\n            tableData.layoutDetail[(row - 1) * tableData.cols + col - 1] &&\n            tableData.layoutDetail[(row - 1) * tableData.cols + col - 1][\n              'colSpan'\n            ]\n          \" [attr.rowspan]=\"\n            tableData.layoutDetail[(row - 1) * tableData.cols + col - 1] &&\n            tableData.layoutDetail[(row - 1) * tableData.cols + col - 1][\n              'rowSpan'\n            ]\n          \" [class]=\"{\n            selected: selectedCells.includes(\n              (row - 1) * tableData.cols + col - 1\n            ),\n            specgrap: judgevalid(row, col)\n          }\" [style]=\"{\n            width: countwidth(row, col),\n            height: countheight(row, col),\n            fontSize: '0'\n          }\" *ngIf=\"isNeedShow(row, col)\" (mousedown)=\"handleCellMousedown($event, row, col)\" (mouseenter)=\"handleCellMouseenter($event, row, col)\" (mouseup)=\"handleMouseUp()\" (dragenter)=\"eventinto($event, i)\" (dragover)=\"eventtarget($event, row, col)\"\n                    (dragleave)=\"eventleave($event, i)\" (drop)=\"eventdrop($event, row, col)\">\n                    <div *ngIf=\"\n              tableData.layoutDetail[(row - 1) * tableData.cols + col - 1]\n                .projection\n            \" class=\"projection\" (mouseenter)=\"closeshow(row, col)\" (mouseleave)=\"closehide(row, col)\">\n                        <div class=\"srcID\">\n                            {{ tableData.layoutDetail[(row - 1) * tableData.cols + col - 1] .projection.srcID }}\n                        </div>\n                        <div class=\"close\" *ngIf=\"\n                tableData.layoutDetail[(row - 1) * tableData.cols + col - 1]\n                  .closeshow\n              \">\n                            <div class=\"cameraimg\" (click)=\"closeprojection(row, col)\"></div>\n                        </div>\n                    </div>\n                </td>\n            </ng-container>\n        </tr>\n    </table>\n</div>","import { Component, OnInit, EventEmitter, Output, Input } from '@angular/core';\nimport { AvService } from '../../protocol/rtc/av.service';\nimport { RxService } from '../../protocol/rtc/rx.service';\n@Component({\n  selector: 'app-cutmeeting',\n  templateUrl: './cut-meeting.component.html',\n  styleUrls: ['./cut-meeting.component.less'],\n})\nexport class CutmeetingComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input()\n  set meetingnav(value: any) {\n    this._meetingnav = value;\n  }\n  get meetingnav(): any {\n    return this._meetingnav;\n  }\n  _meetingnav: any;\n  \n  @Input()\n  set datameeting(value: any) {\n  \n    this._datameeting = value;\n  }\n  get datameeting(): any {\n    return this._datameeting;\n  }\n  _datameeting: any;\n\n  @Input()\n  set voicenav(value: any) {\n\n    this._voicenav = value;\n  }\n  get voicenav(): any {\n    return this._voicenav;\n  }\n  _voicenav: any;\n\n  hint: boolean = false;\n\n  constructor(private AV: AvService, private rx: RxService) {}\n\n  ngOnInit(): void {}\n  sendParent() {\n    this.outer.emit(this.hint);\n  }\n  consent() {\n \n    // this.consent();\n    this.AV.cutopenmeeting();\n    if (this._meetingnav.phonetype == '3') {\n      // console.log('添加音频会议');\n      this._meetingnav.openshow = true;\n      this.AV.addaudiomeeting(this._meetingnav);\n    } else {\n      this._meetingnav.openshow = true;\n      this.AV.addmeeting(this._meetingnav);\n    }\n    this.sendParent();\n  }\n  openmeeting() {\n    this.AV.cutopenmeeting();\n    if(this._datameeting.type==1){\n      this._datameeting.settingup.status = '1'\n\n      this.rx.beginAudioConference(this._datameeting.settingup.audioMeetID);\n      this.outer.emit(this._datameeting);\n    }else if(this._datameeting.type==2){\n      this._datameeting.settingup.status = '1'\n      this.rx.beginVideoconFerence(this._datameeting.settingup.videoMeetID);\n      this.outer.emit(this._datameeting);\n    }else if(this._datameeting.type==3){\n\n      // this._datameeting.settingup.status = '1'\n      this.rx.applytojoinAudioConference(this._datameeting.settingup.audioMeetID);\n      this.outer.emit(this._datameeting);\n    }else if(this._datameeting.type==4){\n      // this._datameeting.settingup.status = '1'\n      this.rx.applyforAddVideoPush(this._datameeting.settingup.videoMeetID);\n      this.outer.emit(this._datameeting);\n    }\n  }\n  cutmeeting(){\n    this.AV.cutopenmeeting();\n    if(this._voicenav.cmschat.audioMeetID){\n      this.rx.applytojoinAudioConference(this._voicenav.cmschat.audioMeetID);\n    }else {\n      this.rx.applyforAddVideoPush(this._voicenav.cmschat.videoMeetID);\n    }\n    this.sendParent()\n  }\n}\n","<div class=\"box\">\n    <div class=\"navbox\">\n        <div class=\"nav\" appDrag>\n            <div class=\"setname\">\n                <div>提示</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent()\"></i>\n            </div>\n            <div class=\"sethint\">已有正在进行会议,是否切换会议</div>\n            <div class=\"setbutton\">\n                <button (click)=\"consent()\" *ngIf=\"_meetingnav\">确定</button>\n                <button (click)=\"openmeeting()\" *ngIf=\"_datameeting\">确定</button>\n                <button (click)=\"cutmeeting()\" *ngIf=\"_voicenav\">确定</button>\n                <button (click)=\"sendParent()\">关闭</button>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { OverallService } from '../common/overall.service';\nimport { AvService } from '../protocol/rtc/av.service';\nimport { cache } from '../protocol/rtc/cache';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { WebService } from '../protocol/rtc/web.service';\nimport { ResourceService } from '../protocol/resource/resource.service';\n@Component({\n  selector: 'app-meeting',\n  templateUrl: './meeting.component.html',\n  styleUrls: ['./meeting.component.less'],\n})\nexport class MeetingComponent implements OnInit {\n  @ViewChildren('downss') downss?: QueryList<ElementRef>;\n  @ViewChild('settalkg') settalkg: any;\n  @ViewChildren('settings') settings?: QueryList<ElementRef>;\n  @ViewChildren('screen') screen?: QueryList<ElementRef>;\n  @ViewChildren('closemeetingset') closemeetingset?: QueryList<ElementRef>;\n  @ViewChildren('videonumber') videonumber?: QueryList<ElementRef>;\n  @ViewChildren('addmem') addmem?: QueryList<ElementRef>;\n  @ViewChild('playvideolist') playvideolist?: any;\n  @ViewChild('remotesaudio') remotesaudio?: any;\n  @ViewChild('cmsmeetvideo') cmsmeetvideo?: any;\n  @ViewChild('remotesvideo') remotesvideo?: any;\n  @ViewChildren('pushball') pushball?: QueryList<ElementRef>;\n  @ViewChildren('pushcase') pushcase?: QueryList<ElementRef>;\n  @HostListener('document:click', ['$event'])\n  bodyClick(e: any) {\n    this.kongshow = false;\n  }\n  @Output() private outer = new EventEmitter<string>();\n  @Input() cmsvideo: any;\n  @Input() overallvolume: any;\n  @Input() recordvolume: any;\n  @Input() broadside: any;\n  discussionmessane: any = '';\n  lists: any = '';\n  userListtype: any = '';\n  videoMeetList: any = '';\n  audioMeetList: any = '';\n  hinttype = 1;\n  ssiontype: boolean = false;\n  settingtalkg: boolean = false;\n  hint: boolean = false;\n  member: any = '';\n  msg: number = 4;\n  pnging: boolean = false;\n  content: number = 0;\n  vodename: string = '';\n  item: number = 1;\n  branch: boolean = true;\n  audiobranch: boolean = true;\n  setplaybacks: number = 0;\n  meetingname = '';\n  radioValue = 'B';\n  videolist: any = [];\n  audiolist: any = [];\n  designation: string = '';\n  // 添加会议参数\n  groupname: string = '临时会议';\n  SelectedValue: string = '被邀请人可讲';\n  listOfSelectedValue: string = '无限制';\n  OfSelectedValue: string = '自动追呼';\n  callingtime: number = 5;\n  callinginterval: number = 30;\n  date = new Date();\n  time = new Date();\n  checkeds = false;\n  // 修改会议参数\n  audioconferencename: any;\n  audioconferenceId: any;\n  videoconferencename: any = '';\n  invitee: any = '被邀请人可讲';\n  initiator: any = '无限制';\n  voluntarilycalling: any = '自动追呼';\n  voluntarilynext = '';\n  voluntarilysecond = '';\n  checked = false;\n  change: boolean = false;\n  parameter: any = '';\n  talkgroupitem: any = '';\n  audiolistreveal: boolean = false; //audio显示\n  videolistreveal: boolean = false; //audio显示\n  showlist: any = [];\n  userlist: any;\n  kongshow: boolean = false;\n  settingup: any = ''; //右键点击的设置\n  desktopshow: boolean = false;\n  pair: boolean = false;\n  videonumberof: boolean = false;\n  uploadinglist = '';\n  audioMeetID: any = '';\n  videoMeetID: any = '';\n  videolists: any = [\n    { wang: 1, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 2, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 3, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 4, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 5, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 6, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 7, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 8, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 9, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 10, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 11, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 12, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 13, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 14, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 15, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 16, show: false, hascall: false, pushshow: false, dstID: '' },\n  ];\n  novideolists: any = [\n    { wang: 1, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 2, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 3, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 4, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 5, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 6, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 7, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 8, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 9, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 10, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 11, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 12, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 13, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 14, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 15, show: false, hascall: false, pushshow: false, dstID: '' },\n    { wang: 16, show: false, hascall: false, pushshow: false, dstID: '' },\n  ];\n  page: number = 1; //第几页\n  pageSize: number = 4; //页的大小\n  total: number = 16; //总数量\n  totalpages = Math.ceil(this.total / this.pageSize); ///总共有几页\n  pagingclass = 'videofour';\n  activeIndex = -1;\n  type: number = -1;\n  PeerList: any = [];\n  localStream: any = null;\n  videolocalStream: any = null; //视频会议本地流\n  shareStream: any = null; //视频会议共享流\n  videolocalPeer: any = null;\n  srcprice = 0;\n  channelID: any = '';\n  pcPeer: any = null;\n  videoPeer: any = null;\n  audiolID: any = '';\n  audiosrc: any = '';\n  videoId: any = '';\n  addvideomeet: boolean = false;\n  addaudiomeet: boolean = false;\n  addmember: boolean = false;\n  shows: boolean = true;\n  arr: any = [];\n  videostaff: any = [];\n  addvideostaff = '';\n  acceptvideo: any = [];\n  full: boolean = false;\n  fullnav: any = '';\n  localSize: any = '';\n  localPage: any = '';\n  audiomeeting: any = '';\n  cmscloseaudio: any = '';\n  videoMeetName: any = '';\n  memID: any = '';\n  cmsvideopcPeer: any = null;\n  cmsvideoSSRC: any;\n  cmsvideoStream: any;\n  sendvideoStream: any;\n  sendvideopcPeer: any = null;\n  sendvideoSSRC: any;\n  meetingtype: boolean = false;\n  operationclass = 'content';\n  leftsider: any;\n  subscription: any;\n  cutscription: any;\n  uservalue = '';\n  inputValue: any = '';\n  vodtree = true;\n  pushtype = false;\n  localshow = true; //本机\n  shareshow = false; //本机\n  pushname = '';\n  pushshow = false;\n  atpresent = '本机';\n  pushhint = false;\n  pushselect = '';\n  sharecut = false;\n  largetype = false;\n  largedata: any;\n  projectiondata: any;\n  userid: any = '';\n  cutmeetingshow = false;\n  meetingnav: any;\n  videomeetingnav: any;\n  audiooperation = false; //音频会议操作显示\n  quitshow = false; //音频会议关闭显示\n  meetingsetting:any;\n  allsetting = false;\n  audiosetting = false;\n  videosetting = false;\n  constructor(\n    private rx: RxService,\n    public el: ElementRef,\n    private sendService: OverallService,\n    private ws: WebService,\n    private message: NzMessageService,\n    private AV: AvService,\n    private datastate: ResourceService,\n  ) {\n    this.subscription = this.sendService.sendsider$.subscribe((message) => {\n      this.leftsider = message;\n    });\n    this.cutscription = this.AV.cutmeetting$.subscribe((message) => {\n      this.cutmeetting(message);\n      this.AV.sendcutpage({ item: '2' });\n    });\n  }\n  ngOnInit(): void {\n    document.oncontextmenu = function () {\n      return false;\n    };\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let resultdata = nav.resultData;\n      let that = this;\n      let cmdBody = nav.cmdBody;\n      // console.log(nav);\n      switch (cmdid) {\n        case state.OWO_CMD_VIDEOMEET_EXIT: {\n          let memID = cmdBody.memID;\n          for (let i = 0; i < this.videolists.length; i++) {\n            if (this.videolists[i].dstID == memID) {\n              this.videolists[i].hascall = false;\n              this.videolists[i].dstID = '';\n              delete this.videolists[i].src;\n              delete this.videolists[i].channelID;\n              this.PeerList[i].close();\n              this.PeerList[i] = null;\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_OPENVIDEO_RESULT:\n          if (cmdBody.result == 0) {\n            break;\n          } else if (cmdBody.result == 1) {\n            // this.channelID = cmdBody.SSRC;\n            let memID = cmdBody.memID;\n            for (let i = 0; i < this.videolists.length; i++) {\n              if (this.videolists[i].hascall == false) {\n                this.srcprice = i;\n                break;\n              }\n            }\n            this.cutopen(this.srcprice, memID, cmdBody.SSRC);\n          }\n          break;\n        case state.OWO_CMD_MSGGROUP_SEND_MSG: {\n          this.discussionmessane = cmdBody;\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_DELMEM: {\n          if (this.content == 1) {\n            if (cmdBody.audioMeetID == this.audioMeetID) {\n              this.amendshowlist(cmdBody.delMemIDList);\n            }\n          }\n          this.rx.gainAudioConference(); //获取音频会议列表\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_START: {\n          let cmschat = {\n            phonetype: '3',\n            userName: cmdBody.audioMeetName,\n            cmschat: cmdBody,\n            callout: '2',\n            openshow: true,\n          };\n          this.quitshow = false;\n          this.AV.sendcuthomepage({ data: '1' });\n          this.audiooperation = true;\n          this.AV.callVoice(cmschat);\n          this.rx.gainAudioConference(); //获取音频会议列表\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_START_RESULT: {\n          let cmschat = {\n            phonetype: '4',\n            userName: cmdBody.videoMeetName,\n            cmschat: cmdBody,\n            callout: '1',\n            openshow: true,\n          };\n          this.AV.sendcuthomepage({ data: '1' });\n          this.AV.addddtmeeting(cmschat);\n          this.videoId = cmdBody.SSRC;\n          const configuration = {};\n          this.videolocalPeer = new RTCPeerConnection(configuration);\n          this.videolocal();\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_STOP: {\n          let data = {\n            cmschat: {\n              audioMeetID: cmdBody.audioMeetID,\n            },\n          };\n          if (cmdBody.audioMeetID == this.audioMeetID) {\n            this.audiooperation = false;\n            this.content = 0;\n          }\n          this.AV.deleteaudio(data);\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_STOP: {\n          let data = {\n            cmschat: {\n              videoMeetID: cmdBody.videoMeetID,\n            },\n          };\n          this.AV.deleteincoming(data);\n          this.AV.deletemeeting(cmdBody.videoMeetID);\n          this.AV.deletevideo(cmdBody.videoMeetID);\n          if (this.videoMeetID == cmdBody.videoMeetID) {\n            if (this.content == 2) {\n              for (let i = 0; i < this.videolists.length; i++) {\n                if (this.videolists[i].hascall == true) {\n                  this.videolists[i].hascall = false;\n                  this.videolists[i].dstID = '';\n                  delete this.videolists[i].src;\n                  delete this.videolists[i].channelID;\n                }\n              }\n              if (this.videolocalPeer != null) {\n                this.videolocalPeer.close();\n                this.videolocalPeer = null;\n                this.videolocalStream.getTracks().forEach((track: any) => {\n                  track.stop();\n                });\n              }\n              if (this.sharecut == true) {\n                this.shareStream.getTracks().forEach((track: any) => {\n                  track.stop();\n                });\n              }\n              this.sharecut = false;\n              this.pushname = '';\n              this.pushtype = false;\n              this.atpresent = '本机';\n              this.localshow = true;\n              this.shareshow = false;\n              for (let i = 0; i < this.videolists.length; i++) {\n                this.videolists[i].pushshow = false;\n              }\n            } else if (this.content == 4) {\n              this.cmsvideoStream.getTracks()[1].stop();\n              this.cmsvideopcPeer.close();\n              this.cmsvideopcPeer = null;\n              this.sendvideoStream.getTracks()[1].stop();\n              this.sendvideopcPeer.close();\n              this.sendvideopcPeer = null;\n            }\n            this.content = 0;\n            this.rx.viodeList(); //获取视频会议列表\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_PUSH_MEM: {\n          // const configuration = {};\n          // this.sendvideopcPeer = new RTCPeerConnection(configuration);\n          // this.sendvideoSSRC = cmdBody .SSRC;\n          // this.sendcmsvideo();\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_CREATE: {\n          this.rx.gainAudioConference(); //获取音频会议列表\n          break;\n        }\n        default:\n          break;\n      }\n      switch (respcmdid) {\n        case state.OWO_CMD_AUDIOMEET_JOIN + 1: {\n          this.AV.sendcuthomepage({ data: '1' });\n          if (this.AV.judgeaudiomeeting(resultdata.audioMeetID, '1') == false) {\n            if (this.judgeuseropen(resultdata.audioMeetID, '1') == false) {\n              let cmschat = {\n                phonetype: '3',\n                userName: resultdata.audioMeetName,\n                cmschat: resultdata,\n                callout: '2',\n                openshow: true,\n              };\n              // 502007\n              this.AV.addaudiomeeting(cmschat);\n              this.quitshow = false;\n            } else {\n              let cmschat = {\n                phonetype: '3',\n                userName: resultdata.audioMeetName,\n                cmschat: resultdata,\n                callout: '1',\n                openshow: true,\n              };\n              this.quitshow = true;\n              // 502007\n              this.AV.addaudiomeeting(cmschat);\n            }\n          } else {\n            if (this.judgeuseropen(resultdata.audioMeetID, '1') == false) {\n              this.quitshow = false;\n            } else {\n              // 显示关闭会议\n              this.quitshow = true;\n            }\n          }\n          this.AV.sendcutpage({\n            item: '2',\n          });\n          this.cutaudiomeeting(resultdata.audioMeetID);\n          //  console.log('加入音频会议');\n          this.rx.gainAudioConference(); //获取音频会议列表\n          // 进入音频会议\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_START + 1: {\n          // 打开音频会议\n          let cmschat = {\n            phonetype: '3',\n            userName: resultdata.audioMeetName,\n            cmschat: resultdata,\n            callout: '1',\n            openshow: true,\n          };\n          this.AV.sendcuthomepage({ data: '1' });\n          this.audiooperation = true;\n          this.quitshow = true;\n          // 502007\n          this.AV.addaudiomeeting(cmschat);\n          this.rx.gainAudioConference(); //获取音频会议列表\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_MODIFY + 1: {\n          this.rx.gainAudioConference(); //获取音频会议列表\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_MODIFY + 1: {\n          this.rx.viodeList(); //获取视频会议列表\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_JOIN + 1: {\n          this.AV.sendcuthomepage({ data: '1' });\n          if (this.judgeuseropen(resultdata.videoMeetID, '2') == false) {\n            //  console.log('其他人开启的');\n            if (\n              this.AV.judgeaudiomeeting(resultdata.videoMeetID, '2') == false\n            ) {\n              let data = {\n                phonetype: '4',\n                userName: resultdata.videoMeetName,\n                cmschat: resultdata,\n                callout: '2',\n                openshow: true,\n              };\n              this.AV.addmeeting(data);\n              this.AV.sendcutpage({\n                item: '0',\n              });\n            } else {\n              this.AV.sendcutpage({\n                item: '0',\n              });\n            }\n          } else {\n            // 进入视频会议\n            //  console.log('本机开启的');\n            this.AV.sendcutpage({\n              item: '2',\n            });\n            this.content = 2;\n            this.videoId = resultdata.SSRC;\n            const configuration = {};\n            this.videolocalPeer = new RTCPeerConnection(configuration);\n            this.videolocal();\n            // resultdata.memberList\n            for (let i = 0; i < resultdata.memberList.length; i++) {\n              this.adduservideo(resultdata.memberList[i]);\n            }\n            if (\n              this.AV.judgeaudiomeeting(resultdata.videoMeetID, '2') == false\n            ) {\n              let cmschat = {\n                phonetype: '4',\n                userName: resultdata.videoMeetName,\n                cmschat: resultdata,\n                callout: '1',\n                openshow: true,\n              };\n              this.AV.addddtmeeting(cmschat);\n            } else {\n              this.AV.videolist.push(resultdata.videoMeetID);\n              if (cache.meetingchecked == true) {\n                this.AV.videoshowsider({ data: true });\n              }\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_EXIT + 1: {\n          // resultdata.videoMeetID\n          this.AV.deletevideo(resultdata.videoMeetID);\n          for (let i = 0; i < this.videolists.length; i++) {\n            if (this.videolists[i].hascall == true) {\n              this.videolists[i].hascall = false;\n              this.videolists[i].dstID = '';\n              delete this.videolists[i].src;\n              delete this.videolists[i].channelID;\n            }\n          }\n          if (this.videolocalPeer != null) {\n            // console.log('关闭视频');\n            this.videolocalPeer.close();\n            this.videolocalPeer = null;\n            this.videolocalStream.getTracks().forEach((track: any) => {\n              track.stop();\n            });\n          }\n          if (this.sharecut == true) {\n            this.shareStream.getTracks().forEach((track: any) => {\n              track.stop();\n            });\n          }\n          this.pushtype = false;\n          // this.content = 0;\n          this.pushname = '';\n          this.sharecut = false;\n          this.atpresent = '本机';\n          this.localshow = true;\n          this.shareshow = false;\n          for (let i = 0; i < this.videolists.length; i++) {\n            this.videolists[i].pushshow = false;\n          }\n          this.rx.viodeList(); //获取视频会议列表\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_GET_LIST + 1: {\n          this.videolist = resultdata.videoMeetList;\n          for (let i = 0; i < this.videolist.length; i++) {\n            this.videolist[i].show = false;\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_CREATE + 1: {\n          this.rx.viodeList();\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_DESTROY + 1: {\n          this.rx.viodeList();\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_DESTROY + 1: {\n          this.rx.gainAudioConference();\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_CREATE + 1: {\n          this.rx.gainAudioConference();\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_GET_LIST + 1: {\n          this.audiolist = resultdata.audioMeetList;\n          for (let i = 0; i < this.audiolist.length; i++) {\n            this.audiolist[i].show = false;\n          }\n          break;\n        }\n        case state.OWO_CMD_GET_MEMLIST_STATUS + 1: {\n          this.userListtype = resultdata.userList;\n          break;\n        }\n        case state.OWO_CMD_GET_MEMLIST + 1: {\n          this.lists = resultdata;\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_START + 1: {\n          this.rx.viodeList(); //开启获取视频会议列表\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_STOP + 1: {\n          let data = {\n            cmschat: {\n              audioMeetID: resultdata.audioMeetID,\n            },\n          };\n          if (resultdata.audioMeetID == this.audioMeetID) {\n            this.content = 0;\n            this.audiooperation = false;\n          }\n          this.AV.deleteaudio(data);\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_STOP + 1: {\n          let data = {\n            cmschat: {\n              videoMeetID: resultdata.videoMeetID,\n            },\n          };\n          this.AV.deleteincoming(data);\n          this.AV.deletevideo(resultdata.videoMeetID);\n          for (let i = 0; i < this.videolists.length; i++) {\n            if (this.videolists[i].hascall == true) {\n              this.videolists[i].hascall = false;\n              this.videolists[i].dstID = '';\n              delete this.videolists[i].src;\n              delete this.videolists[i].channelID;\n            }\n          }\n          if (this.videolocalPeer != null) {\n            this.videolocalPeer.close();\n            this.videolocalPeer = null;\n            this.videolocalStream.getTracks().forEach((track: any) => {\n              track.stop();\n            });\n          }\n          if (this.sharecut == true) {\n            this.shareStream.getTracks().forEach((track: any) => {\n              track.stop();\n            });\n          }\n          this.pushtype = false;\n          this.content = 0;\n          this.pushname = '';\n          this.sharecut = false;\n          this.atpresent = '本机';\n          this.localshow = true;\n          this.shareshow = false;\n          for (let i = 0; i < this.videolists.length; i++) {\n            this.videolists[i].pushshow = false;\n          }\n          // resultdata.videoMeetID\n          this.AV.deletemeeting(resultdata.videoMeetID);\n          this.rx.viodeList(); //获取视频会议列表\n          break;\n        }\n        case state.OWO_CMD_RTC_OFFER + 1: {\n          if (resultdata.channelID == this.videoId) {\n            setTimeout( ()=> {\n              that.videolocalAnswer(nav);\n            }, 1000);\n          }\n          if (resultdata.channelID == this.channelID) {\n            setTimeout( ()=>  {\n              that.remoteAnswer(nav);\n            }, 1000);\n          }\n          if (this.sendvideoSSRC == resultdata.channelID) {\n            setTimeout( ()=>  {\n              that.sendcmsvideoAnswer(nav);\n            }, 1000);\n          }\n          if (this.content == 4) {\n            if (resultdata.channelID == this.cmsvideoSSRC) {\n              setTimeout( ()=>  {\n                that.cmsvideoAnswer(nav);\n              }, 1000);\n            }\n          }\n          break;\n        }\n        default:\n          break;\n      }\n    });\n    this.meetingsetting = this.datastate.module.meeting;\n    this.judgesetting()\n  }\n\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.discussionmessane) {\n      if (this.discussionmessane == '') {\n        return;\n      } else {\n        for (let i = 0; i < this.audioMeetList.length; i++) {\n          let audio = this.audioMeetList[i].audioMeetID;\n          if (audio == this.discussionmessane.dialogID) {\n            if (this.ssiontype == false) {\n              this.ssiontype = true;\n            }\n          }\n        }\n        for (let i = 0; i < this.videoMeetList.length; i++) {\n          let video = this.videoMeetList[i].videoMeetID;\n          if (video == this.discussionmessane.dialogID) {\n            if (this.ssiontype == false) {\n              this.ssiontype = true;\n            }\n          }\n        }\n      }\n    }\n    if (changes.cmsvideo) {\n      if (this.cmsvideo == '') {\n        return;\n      } else {\n        this.videoMeetName = this.cmsvideo.videoMeetName;\n        this.memID = this.cmsvideo.memID;\n        this.cmsvideoSSRC = this.cmsvideo.SSRC;\n        this.videoMeetID = this.cmsvideo.videoMeetID;\n        this.content = 4;\n        const configuration = {};\n        this.cmsvideopcPeer = new RTCPeerConnection(configuration);\n        this.begincmsvideo();\n      }\n    }\n    if (changes.overallvolume) {\n      this.remotesaudio.nativeElement.volume = this.overallvolume;\n      this.playvideolist.nativeElement.volume = this.overallvolume;\n      this.cmsmeetvideo.nativeElement.volume = this.overallvolume;\n      this.remotesvideo.nativeElement.volume = this.overallvolume;\n    }\n    if (changes.recordvolume) {\n      this.microphone();\n    }\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        this.operationclass = 'content';\n      } else if (this.broadside == true) {\n        this.operationclass = 'sidebar';\n      }\n    }\n  }\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n  judgesetting(){\n    if(this.meetingsetting.audioMeeting==1||this.meetingsetting.videoMeeting==1){\n       this.allsetting = true;\n       this.rx.gainAudioConference();\n       this.rx.viodeList();\n       setInterval(() => {\n        this.rx.gainAudioConference();\n        this.rx.viodeList();\n      }, 3000);\n    }else if(this.meetingsetting.audioMeeting==1||this.meetingsetting.videoMeeting==0){\n      this.audiosetting = true;\n      this.rx.gainAudioConference();\n      setInterval(() => {\n        this.rx.gainAudioConference();\n      }, 3000);\n    }else if(this.meetingsetting.audioMeeting==0||this.meetingsetting.videoMeeting==1){\n      this.videosetting = true;\n      this.rx.viodeList();\n      setInterval(() => {\n        this.rx.viodeList();\n      }, 3000);\n    }\n  }\n  adduservideo(ev: any) {\n    for (let i = 0; i < this.videolists.length; i++) {\n      if (this.videolists[i].hascall == false) {\n        this.srcprice = i;\n        break;\n      }\n    }\n    this.cutopen(this.srcprice, ev.userID, ev.SSRC);\n  }\n  amendshowlist(vode: any) {\n    this.showlist = [];\n    this.userlist = [];\n    this.userlist = vode.split(';');\n    for (let i = 0; i < this.userlist.length; i++) {\n      if (this.userlist[i] == '' || this.userlist[i] == 'undefined') {\n        this.userlist.splice(i, 1);\n        i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置，删除空之后，后面的元素要向前补位\n      }\n    }\n    //显示列表\n    for (let i = 0; i < this.userlist.length; i++) {\n      this.showlist.push({ name: this.userlist[i] });\n    }\n    for (let i = 0; i < this.showlist.length; i++) {\n      if (this.rx.userName == this.showlist[i].name) {\n        this.showlist[i].userName = '本机';\n        let item = this.showlist[0];\n        this.showlist[0] = this.showlist[i];\n        this.showlist[i] = item;\n        this.showlist[0].stact = this.rx.userType;\n        this.showlist[0].electricity = '4';\n        this.showlist[0].netStatus = '4';\n        this.showlist[0].devStatus = '1';\n      }\n    }\n    for (let i = 0; i < this.userListtype.length; i++) {\n      let stact = this.userListtype[i];\n      for (let j = 0; j < this.showlist.length; j++) {\n        if (this.showlist[j].name == stact.userID) {\n          this.showlist[j].stact = stact.userType; //用户类型\n          this.showlist[j].userName = stact.userName; //用户类型\n          this.showlist[j].devStatus = stact.devStatus; //设备状态\n          this.showlist[j].electricity = stact.electricity; //电量\n          this.showlist[j].netStatus = stact.netStatus; //网络状态\n          this.showlist[j].micStatus = stact.micStatus; //话筒状态\n        }\n      }\n    }\n  }\n  microphone() {\n    // this.videogainNode.gain.value = this.recordvolume;\n    // this.cmsvideogainNode.gain.value = this.recordvolume;\n    // this.videolocalgainNode.gain.value = this.recordvolume;\n  }\n  // cms开启会议\n  cmsaudiomeeting() {\n    this.rx.applytojoinAudioConference(this.audiomeeting.audioMeetID);\n    for (let i = 0; i < this.audiolist.length; i++) {\n      if (this.audiomeeting.audioMeetID == this.audiolist[i].audioMeetID) {\n        this.access(1, this.audiolist[i]);\n        this.audiolist[i].status = 1;\n      }\n    }\n  }\n  // cms关闭会议\n  cmscloseaudiomeeting() {}\n  // 会议切换\n  access(ev: number, vode: any): void {\n    this.showlist = [];\n    this.userlist = '';\n    this.userlist = vode.member.split(';');\n    for (let i = 0; i < this.userlist.length; i++) {\n      if (this.userlist[i] == '' || this.userlist[i] == 'undefined') {\n        this.userlist.splice(i, 1);\n        i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置，删除空之后，后面的元素要向前补位\n      }\n    }\n    //显示列表\n    for (let i = 0; i < this.userlist.length; i++) {\n      this.showlist.push({ name: this.userlist[i] });\n    }\n    for (let i = 0; i < this.showlist.length; i++) {\n      if (this.rx.userID == this.showlist[i].name) {\n        this.showlist[i].userName = '本机';\n        let item = this.showlist[0];\n        this.showlist[0] = this.showlist[i];\n        this.showlist[i] = item;\n        this.showlist[0].stact = this.rx.userType;\n        this.showlist[0].electricity = '4';\n        this.showlist[0].netStatus = '4';\n        this.showlist[0].devStatus = '1';\n      }\n    }\n    for (let i = 0; i < this.userListtype.length; i++) {\n      let stact = this.userListtype[i];\n      for (let j = 0; j < this.showlist.length; j++) {\n        if (this.showlist[j].name == stact.userID) {\n          this.showlist[j].stact = stact.userType; //用户类型\n          this.showlist[j].userName = stact.userName; //用户类型\n          this.showlist[j].devStatus = stact.devStatus; //设备状态\n          this.showlist[j].electricity = stact.electricity; //电量\n          this.showlist[j].netStatus = stact.netStatus; //网络状态\n          this.showlist[j].micStatus = stact.micStatus; //话筒状态\n        }\n      }\n    }\n    if (ev == 1) {\n      this.audioMeetID = vode.audioMeetID;\n      this.content = 1;\n      this.vodename = vode.audioName;\n\n      if (vode.status == '0') {\n        this.audiooperation = false;\n      } else {\n        if (this.AV.judgeaudiomeeting(vode.audioMeetID, '1') == true) {\n          this.audiooperation = true;\n        } else {\n          this.audiooperation = false;\n        }\n      }\n    } else if (ev == 2) {\n      this.videoMeetID = vode.videoMeetID;\n      this.vodename = vode.videoName;\n      for (let i = 0; i < this.videolist.length; i++) {\n        if (this.videoMeetID == this.videolist[i].videoMeetID) {\n          if (this.videolist[i].status == 0) {\n            this.content = 2;\n          } else if (this.videolist[i].status == 1) {\n            this.content = 2;\n          }\n        }\n      }\n    } else if (ev == 3) {\n      this.videoMeetID = vode.videoMeetID;\n      this.vodename = vode.videoName;\n      this.content = 4;\n    }\n    this.screenone(4);\n    this.ping();\n    this.full = false;\n  }\n  titles(ev: number): void {\n    this.item = ev;\n  }\n  // 关闭会议\n  close() {\n    for (let i = 0; i < this.videolist.length; i++) {\n      if (this.videoMeetID == this.videolist[i].videoMeetID) {\n        if (this.videolist[i].status == 0) {\n          this.content = 0;\n        } else if (this.videolist[i].status == 1) {\n          this.rx.closeVideoconFerence(this.videoMeetID);\n        }\n      }\n    }\n  }\n  clearmeeting() {\n    this.rx.applyforQuitVideoPush(this.videoMeetID);\n  }\n  closeaudio() {\n    for (let i = 0; i < this.audiolist.length; i++) {\n      if (this.audioMeetID == this.audiolist[i].audioMeetID) {\n        if (this.audiolist[i].status == 0) {\n          this.content = 0;\n        } else if (this.audiolist[i].status == 1) {\n          this.rx.closeAudioConference(this.audioMeetID);\n        }\n      }\n    }\n  }\n  quitaudio() {\n    this.content = 0;\n    for (let i = 0; i < this.audiolist.length; i++) {\n      if (this.audioMeetID == this.audiolist[i].audioMeetID) {\n        if (this.audiolist[i].status == 0) {\n          this.content = 0;\n        } else if (this.audiolist[i].status == 1) {\n          this.rx.toquitAudioConference(this.audioMeetID);\n          this.content = 0;\n        }\n      }\n    }\n  }\n  // 切换页面\n  intercom(ev: number, pamas?: string): void {\n    this.content = ev;\n    if (pamas) {\n      this.designation = pamas;\n    }\n  }\n  // 设置弹框\n  setplayback(ev: number, change?: boolean): void {\n    this.setplaybacks = ev;\n    if (change) {\n      this.change = change;\n    }\n    if (ev == 0) {\n      this.audioconferencename = '';\n      this.audiolistreveal = false;\n      this.invitee = '';\n      this.initiator = '';\n      this.voluntarilycalling = '';\n      this.voluntarilynext = '';\n      this.voluntarilysecond = '';\n    }\n  }\n  // 视频显示1.4.6.9.12.16\n  screenone(event: number) {\n    this.pageSize = event;\n    this.ping();\n    if (this.pageSize == 4) {\n      this.pagingclass = 'videofour';\n    } else if (this.pageSize == 1) {\n      this.pagingclass = 'videofirst';\n    } else if (this.pageSize == 16) {\n      this.pagingclass = 'videosixteen';\n    } else if (this.pageSize == 12) {\n      this.pagingclass = 'videotwelve';\n    } else if (this.pageSize == 9) {\n      this.pagingclass = 'videonine';\n    } else if (this.pageSize == 6) {\n      this.pagingclass = 'videosix';\n    }\n    this.totalpages = Math.ceil(this.total / this.pageSize);\n    this.page = 1;\n  }\n  ping(): void {\n    this.pnging = !this.pnging;\n  }\n  closegroup() {\n    this.content = 0;\n  }\n  // 添加会议\n  addTalkgroup() {\n    if (this.member == '') {\n      this.hinttype = 1;\n      this.hint = true;\n    } else {\n      // let user = this.member.split(';');\n      // for (let i = 0; i < user.length; i++) {\n      //   if (user[i] == '') {\n      //     user.splice(i, 1);\n      //   }\n      // }\n      // for (let i = 0; i < user.length; i++) {\n      //   if (user[i] == '本机') {\n      //     user[i] = this.rx.userID;\n      //   }\n      // }\n      for (let i = 0; i < this.member.length; i++) {\n        this.uploadinglist += this.member[i].userID + ';';\n      }\n\n      let inviteLimit: any = '';\n      if (this.SelectedValue == '被邀请人可讲') {\n        inviteLimit = 1;\n      } else if (this.SelectedValue == '被邀请人不可讲') {\n        inviteLimit = 0;\n      }\n      let talkLimit;\n      if (this.listOfSelectedValue == '无限制') {\n        talkLimit = 0;\n      } else if (this.listOfSelectedValue == '只有发起人可讲') {\n        talkLimit = 1;\n      }\n      let data = {\n        videoName: this.groupname,\n        createTime: this.gettime(new Date()) + ' ' + this.gethours(new Date()),\n        member: this.uploadinglist,\n        talkLimit: talkLimit?.toString(),\n        inviteLimit: inviteLimit.toString(),\n        callTimes: this.callingtime.toString(),\n        callInterval: this.callinginterval.toString(),\n        meetingBeginTime:\n          this.gettime(this.date) + ' ' + this.gethours(this.time),\n      };\n      // console.log(data);\n      if (this.designation == '音频') {\n        this.rx.addAudioConference(data);\n        this.content = 0;\n      } else if (this.designation == '视频') {\n        this.rx.establishVideoConference(data);\n        this.content = 0;\n      }\n      this.clear();\n    }\n  }\n  clear() {\n    this.date = new Date();\n    this.time = new Date();\n    this.uploadinglist = '';\n    this.member = '';\n    this.groupname = '临时会议';\n    this.SelectedValue = '被邀请人可讲';\n    this.listOfSelectedValue = '无限制';\n    this.OfSelectedValue = '自动追呼';\n    this.callingtime = 5;\n    this.callinginterval = 30;\n  }\n  //年月日\n  gettime(data: any) {\n    let value =\n      data.getFullYear() +\n      '-' +\n      this.checkTime(data.getMonth() + 1) +\n      '-' +\n      this.checkTime(data.getDate());\n    return value;\n  }\n  //时分秒\n  gethours(data: any) {\n    let value =\n      this.checkTime(data.getHours()) +\n      ':' +\n      this.checkTime(data.getMinutes()) +\n      ':' +\n      this.checkTime(data.getSeconds());\n    return value;\n  }\n\n  /**\n   * 时间处理\n   * 如果时间小于10 ，则再前面加一个'0'\n   * */\n  checkTime(i: any) {\n    if (i < 10) {\n      i = '0' + i;\n    }\n    return i;\n  }\n  runParentinit(msg: boolean) {\n    this.hint = msg;\n  }\n\n  audioName(ev: any) {\n    if (this.change == true) {\n      this.videoconferencename = ev.videoName;\n      this.audioconferenceId = ev.videoMeetID;\n    } else if (this.change == false) {\n      this.audioconferenceId = ev.audioMeetID;\n      this.audioconferencename = ev.audioName;\n    }\n    this.modification();\n  }\n  modification() {\n    if (this.change == true) {\n      for (let i = 0; i < this.videolist.length; i++) {\n        if (this.videolist[i].videoMeetID == this.audioconferenceId) {\n          this.parameter = this.videolist[i];\n          if (this.parameter.inviteLimit == '1') {\n            this.invitee = '被邀请人可讲';\n          } else if (this.parameter.inviteLimit == '0') {\n            this.invitee = '被邀请人不可讲';\n          }\n          if (this.parameter.talkLimit == '0') {\n            this.initiator = '无限制';\n          } else if (this.parameter.talkLimit == '1') {\n            this.initiator = '只有发起人可讲';\n          }\n          if (this.parameter.callMode == '0') {\n            this.voluntarilycalling = '自动追呼';\n          }\n          this.voluntarilynext = this.parameter.callTimes;\n          this.voluntarilysecond = this.parameter.callInterval;\n          // if (this.parameter.recordMode == '0') {\n          //   this.checked = false;\n          // } else if (this.parameter.recordMode == '1') {\n          //   this.checked = true;\n          // }\n        }\n      }\n    } else if (this.change == false) {\n      for (let i = 0; i < this.audiolist.length; i++) {\n        if (this.audiolist[i].audioMeetID == this.audioconferenceId) {\n          this.parameter = this.audiolist[i];\n          if (this.audiolist[i].inviteLimit == '1') {\n            this.invitee = '被邀请人可讲';\n          } else if (this.audiolist[i].inviteLimit == '0') {\n            this.invitee = '被邀请人不可讲';\n          }\n          if (this.audiolist[i].talkLimit == '0') {\n            this.initiator = '无限制';\n          } else if (this.audiolist[i].talkLimit == '1') {\n            this.initiator = '只有发起人可讲';\n          }\n          if (this.audiolist[i].callMode == '0') {\n            this.voluntarilycalling = '自动追呼';\n          }\n          this.voluntarilynext = this.audiolist[i].callTimes;\n          this.voluntarilysecond = this.audiolist[i].callInterval;\n          // if (this.audiolist[i].recordMode == '0') {\n          //   this.checked = false;\n          // } else if (this.audiolist[i].recordMode == '1') {\n          //   this.checked = true;\n          // }\n        }\n      }\n    }\n    this.videolistreveal = false;\n    this.audiolistreveal = false;\n  }\n  modificationensure() {\n    if (this.invitee == '被邀请人可讲') {\n      this.parameter.inviteLimit = '1';\n    } else if (this.invitee == '被邀请人不可讲') {\n      this.parameter.inviteLimit = '0';\n    }\n    if (this.initiator == '无限制') {\n      this.parameter.talkLimit = '0';\n    } else if (this.initiator == '只有发起人可讲') {\n      this.parameter.talkLimit = '1';\n    }\n    if (this.voluntarilycalling == '自动追呼') {\n      this.parameter.callMode = '0';\n    }\n    this.parameter.callTimes = this.voluntarilynext;\n    this.parameter.callInterval = this.voluntarilysecond;\n    if (this.checked == false) {\n      this.parameter.recordMode == '0';\n    } else if (this.checked == true) {\n      this.parameter.recordMode == '1';\n    }\n    if (this.change == false) {\n      //audio修改\n      this.rx.modificationAudioConference(this.parameter);\n      this.setplayback(0);\n    } else if (this.change == true) {\n      //video修改\n      this.rx.modificationVideoConference(this.parameter);\n      this.setplayback(0);\n    }\n  }\n  audioListShow() {\n    this.videolistreveal = false;\n    this.audiolistreveal = true;\n  }\n  videoListShow() {\n    this.audiolistreveal = false;\n    this.videolistreveal = true;\n  }\n  compile() {\n    let ev = this.settingup;\n    this.setplaybacks = 1;\n    if (ev.audioMeetID) {\n      this.change = false;\n      this.audioconferencename = ev.audioName;\n      if (ev.inviteLimit == '1') {\n        this.invitee = '被邀请人可讲';\n      } else if (ev.inviteLimit == '0') {\n        this.invitee = '被邀请人不可讲';\n      }\n      if (ev.talkLimit == '0') {\n        this.initiator = '无限制';\n      } else if (ev.talkLimit == '1') {\n        this.initiator = '只有发起人可讲';\n      }\n      if (ev.callMode == '0') {\n        this.voluntarilycalling = '自动追呼';\n      }\n      this.voluntarilynext = ev.callTimes;\n      this.voluntarilysecond = ev.callInterval;\n      if (ev.recordMode == '0') {\n        this.checked = false;\n      } else if (ev.recordMode == '1') {\n        this.checked = true;\n      }\n      this.parameter = ev;\n    } else if (ev.videoMeetID) {\n      this.change = true;\n      this.videoconferencename = ev.videoName;\n      if (ev.inviteLimit == '1') {\n        this.invitee = '被邀请人可讲';\n      } else if (ev.inviteLimit == '0') {\n        this.invitee = '被邀请人不可讲';\n      }\n      if (ev.talkLimit == '0') {\n        this.initiator = '无限制';\n      } else if (ev.talkLimit == '1') {\n        this.initiator = '只有发起人可讲';\n      }\n      if (ev.callMode == '0') {\n        this.voluntarilycalling = '自动追呼';\n      }\n      this.voluntarilynext = ev.callTimes;\n      this.voluntarilysecond = ev.callInterval;\n      if (ev.recordMode == '0') {\n        this.checked = false;\n      } else if (ev.recordMode == '1') {\n        this.checked = true;\n      }\n      this.parameter = ev;\n    }\n  }\n  // 删除会议\n  delet() {\n    let ev = this.settingup;\n    if (ev.videoMeetID) {\n      this.rx.removeVideoConference(ev.videoMeetID);\n    } else if (ev.audioMeetID) {\n      this.rx.removeAudioConference(ev.audioMeetID);\n    }\n  }\n  // 发起会议\n  sponsor() {\n    let list = this.settingup.member.split(';');\n    for (let i = 0; i < list.length; i++) {\n      if (this.rx.userID == list[i]) {\n        this.meetingtype = true;\n      }\n    }\n    if (this.settingup.videoMeetID) {\n      if (this.settingup.status == 0) {\n        if (this.meetingtype == false) {\n          this.hinttype = 5;\n          this.hint = true;\n        } else if (this.meetingtype == true) {\n          let data = this.AV.judgeopenmeeting();\n          if (data == true) {\n            let data = {\n              type: 2,\n              settingup: this.settingup,\n            };\n            this.meetingnav = data;\n            this.cutmeetingshow = true;\n          } else {\n            this.rx.beginVideoconFerence(this.settingup.videoMeetID);\n            this.settingup.status = '1';\n            this.access(2, this.settingup);\n            this.meetingtype = false;\n            this.pushtype = true;\n          }\n        }\n      } else if (this.settingup.status == 1) {\n        this.rx.closeVideoconFerence(this.settingup.videoMeetID);\n        this.meetingtype = false;\n        this.pushtype = false;\n      }\n    } else if (this.settingup.audioMeetID) {\n      if (this.settingup.status == 0) {\n        if (this.meetingtype == false) {\n          this.hinttype = 5;\n          this.hint = true;\n        } else if (this.meetingtype == true) {\n          let data = this.AV.judgeopenmeeting();\n          if (data == true) {\n            let data = {\n              type: 1,\n              settingup: this.settingup,\n            };\n            this.meetingnav = data;\n            this.cutmeetingshow = true;\n          } else {\n            this.rx.beginAudioConference(this.settingup.audioMeetID);\n            this.settingup.status = '1';\n            this.access(1, this.settingup);\n            this.meetingtype = false;\n            this.pushtype = false;\n          }\n        }\n      } else if (this.settingup.status == 1) {\n        this.rx.closeAudioConference(this.settingup.audioMeetID);\n        this.meetingtype = false;\n      }\n    }\n  }\n\n  cutopen(limit: any, dataID: any, channelID: any) {\n    this.videolists[limit].dstID = dataID;\n    this.videolists[limit].channelID = channelID;\n    this.videolists[limit].hascall = true;\n  }\n  video = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: true,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          // var videoSource = this.videoContext.createMediaStreamSource(stream),\n          //   videoDestination = this.videoContext.createMediaStreamDestination();\n          // videoSource.connect(this.videogainNode);\n          // this.videogainNode.connect(videoDestination);\n          // this.videogainNode.gain.value = 1;\n          that.localStream = stream;\n          that.call();\n        })\n        .catch(this.handleError);\n    }\n  };\n  call = () => {\n    this.videolists[this.srcprice].hascall = true;\n    this.PeerList[this.srcprice].onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.localStream.getTracks().forEach((track: any) => {\n      this.PeerList[this.srcprice].addTrack(track, this.localStream);\n    });\n    this.PeerList[this.srcprice].onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.PeerList[this.srcprice].onconnection = function () {};\n    this.PeerList[this.srcprice].ondatachannel = (event: any) => {};\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.channelID,\n      audioDirection: 'inactive',\n      videoDirection: 'sendonly',\n    });\n  };\n  remoteAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.PeerList[this.srcprice].setRemoteDescription(desc);\n    this.PeerList[this.srcprice].createAnswer().then((sdp: any) => {\n      this.gotDescription2(sdp);\n    });\n  };\n  gotDescription2 = (desc: any) => {\n    this.PeerList[this.srcprice].setLocalDescription(desc).then();\n  };\n  // 播放视频\n  getRemoteSream = (e: any) => {\n    this.videolists[this.srcprice].src = e.stream;\n  };\n  handleError(err: any) {\n    console.log(err);\n  }\n\n  videolocal = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        // video:  { width: 1920, height: 1080 },\n        video: true,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          that.videolocalStream = stream;\n          that.videoLocalCall();\n        })\n        .catch(this.videolocalError);\n    }\n  };\n  videoLocalCall = () => {\n    this.videolocalPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.videolocalStream.getTracks().forEach((track: any) => {\n      this.videolocalPeer.addTrack(track, this.videolocalStream);\n    });\n    this.videolocalPeer.onaddstream = (event: any) => {\n      this.videolocalRemoteSream(event);\n    };\n    this.videolocalPeer.onconnection = function () {};\n    this.videolocalPeer.ondatachannel = (event: any) => {};\n    // sendonly 表示只发送数据，比如客户端推流到 SFU，那么会在自己的 Offer(or Answer) 中携带 senonly 属性\n    // recvonly 表示只接收数据，比如客户端向 SFU 订阅流，那么会在自己的 Offer(or Answer) 中携带 recvonly 属性\n    // sendrecv 表示可以双向传输，比如客户端加入到视频会议中，既要发布自己的流又要订阅别人的流，那么就需要在自己的 Offer(or Answer) 中携带 sendrecv 属性\n    // inactive 表示禁止发送数据，比如在基于 RTP 的视频会议中，主持人暂时禁掉用户 A 的语音，那么用户 A 的关于音频的媒体级别描述应该携带 inactive 属性，表示不能再发送音频数据。\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.videoId,\n      audioDirection: 'sendrecv',\n      videoDirection: 'sendrecv',\n    });\n  };\n  videolocalAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.videolocalPeer.setRemoteDescription(desc);\n    this.videolocalPeer.createAnswer().then((sdp: any) => {\n      this.videolocalDescription2(sdp);\n    });\n  };\n  videolocalDescription2 = (desc: any) => {\n    this.videolocalPeer.setLocalDescription(desc).then();\n  };\n  videolocalRemoteSream = (e: any) => {\n    if (this.remotesvideo.nativeElement.srcObject !== e.stream) {\n      this.remotesvideo.nativeElement.srcObject = e.stream;\n    }\n  };\n  videolocalError(err: any) {\n    console.log(err);\n  }\n  ssion(item: any) {\n    this.outer.emit(item);\n  }\n  chat(ev: any) {\n    this.ssiontype = ev;\n  }\n  // 创建会议人员添加\n  addPersonnel() {\n    this.addmember = true;\n    this.member = '';\n  }\n  // 添加视频会议成员\n  addVideoUser() {\n    this.chi(this.lists.childs);\n    this.merge();\n    this.videostaff = this.userlist;\n    this.addvideomeet = true;\n  }\n  merge() {\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      if (arr == this.rx.userName) {\n        this.arr[i].info.userName = '本机';\n        this.arr[i].info.type = { devStatus: '1' };\n      }\n      for (let j = 0; j < this.userListtype.length; j++) {\n        let type: any = this.userListtype[j];\n        if (arr == type.userID) {\n          this.arr[i].info.type = type;\n        }\n      }\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  chi(obj: any) {\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n  addRight(ev: any) {\n    let contrast = false;\n    for (let i = 0; i < this.videostaff.length; i++) {\n      if (this.videostaff[i] == ev.userID) {\n        contrast = true;\n      }\n    }\n    if (contrast == false) {\n      this.videostaff.push(ev.userID);\n      this.acceptvideo.push(ev);\n    }\n  }\n  removeRight(ev: any) {\n    for (let i = 0; i < this.acceptvideo.length; i++) {\n      if (ev.userID == this.acceptvideo[i].userID) {\n        this.acceptvideo.splice(i, 1);\n        i--;\n      }\n    }\n    for (let i = 0; i < this.videostaff.length; i++) {\n      if (ev.userID == this.videostaff[i]) {\n        this.videostaff.splice(i, 1);\n        i--;\n      }\n    }\n  }\n  // 关闭添加\n  closeVideoMeet() {\n    this.addvideomeet = false;\n  }\n  // 确定添加\n  confirmAdd() {\n    for (let i = 0; i < this.acceptvideo.length; i++) {\n      this.addvideostaff += this.acceptvideo[i].userID + ';';\n    }\n    for (let i = 0; i < this.lists.childs.length; i++) {\n      let list = this.lists.childs[i];\n      for (let j = 0; j < this.acceptvideo.length; j++) {\n        if (this.acceptvideo[j].userID == list.info.userID) {\n          if (this.rx.userID == this.acceptvideo[j].userID) {\n            let data = {\n              name: '本机',\n              stact: this.rx.userType,\n              electricity: '4',\n              netStatus: '4',\n              devStatus: '1',\n              userID: this.rx.userID,\n            };\n            this.showlist.push(data);\n          } else {\n            this.showlist.push(list.info.type);\n          }\n        }\n      }\n    }\n\n    for (let i = 0; i < this.acceptvideo.length; i++) {\n      let list = this.acceptvideo[i].userID;\n      for (let j = 0; j < this.showlist.length; j++) {\n        if (this.showlist[j].userID == list) {\n          if (this.showlist[j].userID == this.rx.userID) {\n            this.showlist[j].name = '本机';\n          } else {\n            this.showlist[j].name = list;\n          }\n        }\n      }\n    }\n    this.rx.addVideoConference(this.videoMeetID, this.addvideostaff);\n    this.addvideomeet = false;\n    this.acceptvideo = [];\n  }\n  // 添加音频会议成员\n  addAudioUser() {\n    this.addaudiomeet = true;\n  }\n  // 添加成员\n  runParent(data: any) {\n    this.addmember = data.addmember;\n    let member = data.member;\n    // for (let i = 0; i < member.length; i++) {\n    //   this.member += member[i].userName + ';';\n    // }\n    this.member = data.member;\n  }\n  addAudio(ev: any) {\n    this.addaudiomeet = ev.addmember;\n    if (ev.member) {\n      for (let j = 0; j < this.userlist.length; j++) {\n        let user = this.userlist[j];\n        for (let i = 0; i < ev.member.length; i++) {\n          if (user == ev.member[i].userName) {\n            ev.member.splice(i, 1);\n            i--;\n          }\n        }\n      }\n      let userID = '';\n      for (let i = 0; i < ev.member.length; i++) {\n        this.userlist.push(ev.member[i].userID);\n        this.showlist.push({ name: ev.member[i].userID });\n        userID += ev.member[i].userID + ';';\n      }\n      for (let i = 0; i < this.userListtype.length; i++) {\n        let stact = this.userListtype[i];\n        for (let j = 0; j < this.showlist.length; j++) {\n          if (this.showlist[j].name == stact.userID) {\n            this.showlist[j].stact = stact.userType; //用户类型\n            this.showlist[j].devStatus = stact.devStatus; //设备状态\n            this.showlist[j].electricity = stact.electricity; //电量\n            this.showlist[j].netStatus = stact.netStatus; //网络状态\n            this.showlist[j].micStatus = stact.micStatus; //话筒状态\n          }\n        }\n      }\n      this.rx.addAudioList(this.audioMeetID, userID);\n    }\n  }\n  andrs(ev: any) {\n    ev.show = !ev.show;\n  }\n  //右键点击显示\n  conference(ev: any, item: any) {\n    this.settingup = item;\n    this.kongshow = true;\n    let settalkg = this.settalkg.nativeElement;\n    let viewportHeight = window.innerHeight;\n    settalkg.styleposition = 'absolute';\n    if (viewportHeight - ev.clientY < 85) {\n      settalkg.styleposition = 'absolute';\n      settalkg.style.left = ev.pageX + 'px';\n      settalkg.style.top = viewportHeight - 85 + 'px';\n    } else {\n      settalkg.styleposition = 'absolute';\n      settalkg.style.left = ev.pageX + 'px';\n      settalkg.style.top = ev.pageY + 'px';\n    }\n  }\n  desktop() {\n    this.desktopshow = !this.desktopshow;\n  }\n  // 人员确认\n  allShow() {\n    this.pair = !this.pair;\n    if (this.pair == false) {\n      for (let i = 0; i < this.showlist.length; i++) {\n        this.showlist[i].show = false;\n      }\n    } else if (this.pair == true) {\n      for (let i = 0; i < this.showlist.length; i++) {\n        this.showlist[i].show = true;\n        if (this.showlist[i].name == '本机') {\n          this.showlist[i].show = false;\n        }\n      }\n    }\n  }\n  // 音频会议选中人员踢出\n  kickOut() {\n    let numberid = '';\n    for (let i = 0; i < this.showlist.length; i++) {\n      let show = this.showlist[i].show;\n      if (show == true) {\n        numberid += this.showlist[i].name + ';';\n        this.showlist.splice(i, 1);\n        i--;\n      }\n    }\n    this.rx.removeAudioList(this.audioMeetID, numberid);\n    this.rx.gainAudioConference(); //获取音频会议列表\n  }\n  // 禁言\n  banned(micFlag: any) {\n    let numberid = '';\n    for (let i = 0; i < this.showlist.length; i++) {\n      let show = this.showlist[i].show;\n      if (show == true) {\n        numberid += this.showlist[i].name + ';';\n      }\n    }\n    this.rx.aduioMemberBanned(this.audioMeetID, numberid, micFlag);\n  }\n  // 禁听\n  forbidden(listenFlag: any) {\n    let numberid = '';\n    for (let i = 0; i < this.showlist.length; i++) {\n      let show = this.showlist[i].show;\n      if (show == true) {\n        numberid += this.showlist[i].name + ';';\n      }\n    }\n    this.rx.aduioMemberForbidden(this.audioMeetID, numberid, listenFlag);\n  }\n  videoBorder(ev: any) {\n    if (this.type == ev) {\n      this.activeIndex = -1;\n      this.type = -1;\n    } else {\n      this.activeIndex = ev;\n      this.type = ev;\n    }\n    if (this.videolists[ev].dstID != '') {\n      this.userid = this.videolists[ev].dstID;\n    } else {\n      this.userid = '';\n    }\n  }\n  videoMagnify(i: any) {\n    if (this.full == false) {\n      if (this.pagingclass == 'videofirst') {\n        this.full = false;\n      } else {\n        this.fullnav = this.pagingclass;\n        this.pagingclass = 'videofirst';\n        this.full = true;\n        this.localSize = this.pageSize;\n        this.pageSize = 1;\n        this.totalpages = Math.ceil(this.total / this.pageSize);\n        this.localPage = this.page;\n        this.page = i + 1;\n      }\n    } else if (this.full == true) {\n      this.pagingclass = this.fullnav;\n      this.full = false;\n      this.pageSize = this.localSize;\n      this.totalpages = Math.ceil(this.total / this.localSize);\n      this.page = this.localPage;\n    }\n  }\n  closeVideo($event: any, ev: any) {\n    $event.stopPropagation();\n    let wang = ev.wang - 1;\n    if (ev.src) {\n      this.rx.closeConferenceVideo(ev.dstID, this.videoMeetID);\n      this.videolists[wang].hascall = false;\n      this.videolists[wang].dstID = '';\n      delete this.videolists[wang].src;\n      this.PeerList[wang].close();\n      this.PeerList[wang] = null;\n    }\n  }\n  //点击前一个\n  prePage() {\n    if (this.page > 1) {\n      //page减1让\n      this.page--;\n    }\n  }\n  //点击后一个\n  nextPage() {\n    //判断是否小于最大页数\n    if (this.page < this.totalpages) {\n      this.page++;\n    }\n  }\n  // 删除与会人员\n  participate() {\n    let userID = '';\n    for (let i = 0; i < this.showlist.length; i++) {\n      let show = this.showlist[i].show;\n      if (show == true) {\n        userID += this.showlist[i].name + ';';\n        this.showlist.splice(i, 1);\n        i--;\n      }\n    }\n    if (userID != '') {\n      this.pair = false;\n      this.rx.removeVideoEquipment(this.videoMeetID, userID);\n    }\n  }\n  cmsvideomeet() {\n    this.cmsvideoStream.getTracks()[1].stop();\n    this.cmsvideopcPeer.close();\n    this.cmsvideopcPeer = null;\n    this.sendvideoStream.getTracks()[1].stop();\n    this.sendvideopcPeer.close();\n    this.sendvideopcPeer = null;\n    this.content = 0;\n    this.rx.closeVideoconFerence(this.videoMeetID);\n  }\n  begincmsvideo = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: true,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          // var cmsvideoSource =\n          //     this.cmsvideoContext.createMediaStreamSource(stream),\n          //   videoDestination =\n          //     this.cmsvideoContext.createMediaStreamDestination();\n          // cmsvideoSource.connect(this.cmsvideogainNode);\n          // this.cmsvideogainNode.connect(videoDestination);\n          // this.cmsvideogainNode.gain.value = 1;\n          that.cmsvideoStream = stream;\n          that.cmsvideoCall();\n        })\n        .catch(this.cmsvideoError);\n    }\n  };\n  cmsvideoCall = () => {\n    this.cmsvideopcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.cmsvideoStream.getTracks().forEach((track: any) => {\n      this.cmsvideopcPeer.addTrack(track, this.cmsvideoStream);\n    });\n    this.cmsvideopcPeer.onaddstream = (event: any) => {\n      this.cmsvideoRemoteSream(event);\n    };\n    this.cmsvideopcPeer.onconnection = function () {};\n    this.cmsvideopcPeer.ondatachannel = (event: any) => {};\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.cmsvideoSSRC,\n      audioDirection: 'sendrecv',\n      videoDirection: 'inactive',\n    });\n  };\n\n  cmsvideoAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.cmsvideopcPeer.setRemoteDescription(desc);\n    this.cmsvideopcPeer.createAnswer().then((sdp: any) => {\n      this.cmsvideoDescription(sdp);\n    });\n  };\n  cmsvideoDescription = (desc: any) => {\n    this.cmsvideopcPeer.setLocalDescription(desc).then();\n  };\n  // 无需播放\n  cmsvideoRemoteSream = (e: any) => {\n    // console.log(e);\n  };\n  cmsvideoError(err: any) {\n    console.log(err);\n  }\n\n  sendcmsvideo = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: true,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          that.sendvideoStream = stream;\n          that.sendcmsvideoCall();\n        })\n        .catch(this.sendcmsvideoError);\n    }\n  };\n  sendcmsvideoCall = () => {\n    this.sendvideopcPeer.onicecandidate = (event: any) => {};\n    this.sendvideoStream.getTracks().forEach((track: any) => {\n      this.sendvideopcPeer.addTrack(track, this.sendvideoStream);\n    });\n    this.sendvideopcPeer.onaddstream = (event: any) => {\n      this.sendcmsvideoRemoteSream(event);\n    };\n    this.sendvideopcPeer.onconnection = function () {};\n    this.sendvideopcPeer.ondatachannel = (event: any) => {};\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.sendvideoSSRC,\n      audioDirection: 'sendrecv',\n      videoDirection: 'inactive',\n    });\n  };\n  sendcmsvideoAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.sendvideopcPeer.setRemoteDescription(desc);\n    this.sendvideopcPeer.createAnswer().then((sdp: any) => {\n      this.sendcmsvideoDescription(sdp);\n    });\n  };\n  sendcmsvideoDescription = (desc: any) => {\n    this.sendvideopcPeer.setLocalDescription(desc).then();\n  };\n  // 播放音频\n  sendcmsvideoRemoteSream = (e: any) => {\n    this.cmsmeetvideo.nativeElement.srcObject = e.stream;\n  };\n  sendcmsvideoError(err: any) {\n    console.log(err);\n  }\n  sider() {\n    this.leftsider = !this.leftsider;\n    this.sendService.sendsider(this.leftsider);\n  }\n\n  empty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  searchTree() {\n    this.uservalue = this.inputValue;\n  }\n  tree(ev: any) {\n    this.outer.emit(ev);\n  }\n  pushcheak(ev: any) {\n    if (ev == '本机') {\n      this.localshow = true;\n      this.shareshow = false;\n      for (let i = 0; i < this.videolists.length; i++) {\n        this.videolists[i].pushshow = false;\n      }\n    } else if (ev == '本机屏幕') {\n      this.shareshow = true;\n      this.localshow = false;\n      for (let i = 0; i < this.videolists.length; i++) {\n        this.videolists[i].pushshow = false;\n      }\n    } else {\n      this.shareshow = false;\n      this.localshow = false;\n      for (let i = 0; i < this.videolists.length; i++) {\n        this.videolists[i].pushshow = false;\n      }\n      for (let i = 0; i < this.videolists.length; i++) {\n        if (this.videolists[i].dstID == ev) {\n          this.videolists[i].pushshow = true;\n        }\n      }\n    }\n    this.pushname = ev;\n  }\n  pushout() {\n    this.pushshow = false;\n  }\n  pushensure() {\n    this.atpresent = this.pushname;\n    let srcUserID = '';\n    let that = this;\n    if (this.atpresent == '本机') {\n      if (this.sharecut == true) {\n        this.shareStream.getTracks().forEach((track: any) => {\n          track.stop();\n        });\n        let videoTrack = this.videolocalStream.getVideoTracks()[0];\n        that.videolocalPeer.getSenders().forEach((rtpSender: any) => {\n          if (rtpSender.track.kind == 'video') {\n            rtpSender\n              .replaceTrack(videoTrack)\n              .then(() => {\n                console.log('Replaced video track from camera to screen');\n              })\n              .catch((error: any) => {\n                console.log('Could not replace video track: ' + error);\n              });\n          }\n        });\n        this.sharecut = false;\n        this.pushout();\n        return;\n      } else {\n        srcUserID = this.rx.userID;\n      }\n    } else if (this.atpresent == '本机屏幕') {\n      if (this.sharecut == true) {\n        this.pushout();\n        return;\n      } else {\n        this.sharecut = true;\n        let disp = {\n          video: true,\n          audio: true,\n        };\n        navigator.mediaDevices.getDisplayMedia(disp).then((stream) => {\n          that.shareStream = stream;\n          let videoTrack = stream.getVideoTracks()[0];\n          that.videolocalPeer.getSenders().forEach((rtpSender: any) => {\n            if (rtpSender.track.kind == 'video') {\n              rtpSender\n                .replaceTrack(videoTrack)\n                .then(() => {\n                  console.log('Replaced video track from camera to screen');\n                })\n                .catch((error: any) => {\n                  console.log('Could not replace video track: ' + error);\n                });\n            }\n          });\n        });\n        this.pushout();\n        return;\n      }\n    } else {\n      srcUserID = this.pushname;\n    }\n    let dstListID = '';\n    for (let i = 0; i < this.videolists.length; i++) {\n      if (this.videolists[i].dstID != '') {\n        dstListID += this.videolists[i].dstID + ';';\n      }\n    }\n    this.rx.videoPush(this.videoMeetID, srcUserID, dstListID);\n    this.pushout();\n  }\n  pushtan($event: any, ev: any) {\n    $event.stopPropagation();\n    this.pushselect = ev;\n    this.pushhint = true;\n  }\n  pushhintclose() {\n    this.pushhint = false;\n  }\n  pushhintensure() {\n    let srcUserID = this.pushselect;\n    let dstListID = '';\n    for (let i = 0; i < this.videolists.length; i++) {\n      if (this.videolists[i].dstID != '') {\n        dstListID += this.videolists[i].dstID + ';';\n      }\n    }\n    this.rx.videoPush(this.videoMeetID, srcUserID, dstListID);\n    this.atpresent = srcUserID;\n    this.pushname = srcUserID;\n    this.pushhintclose();\n  }\n  videomeeting(ev: any) {\n    this.pushselect = ev.pushselect;\n    this.pushhint = ev.pushhint;\n  }\n  projection() {\n    if (cache.largelist.length > 0) {\n      this.largedata = cache.largelist[this.sendService.large].tableData;\n      this.largecut();\n    } else {\n      this.message.create('error', '大屏未添加模式');\n    }\n  }\n  largecut() {\n    this.largetype = !this.largetype;\n  }\n  largeensure() {\n    if (this.userid != '') {\n      this.projectiondata = {\n        userId: this.userid,\n        audioMeetID: this.audioMeetID,\n      };\n    } else {\n      this.message.create('error', '未选择投屏对象');\n    }\n    this.largecut();\n    this.userid = '';\n  }\n  judgesource(ev: any) {\n    let data = false;\n    if (ev == this.rx.userID) {\n      data = true;\n    } else {\n      data = false;\n    }\n    return data;\n  }\n  judgestarter(ev: any) {\n    let data = false;\n    if (ev == this.rx.userID) {\n      data = true;\n    } else {\n      data = false;\n    }\n    return data;\n  }\n  entermeeting() {\n    if (this.settingup.videoMeetID) {\n      if (this.AV.judgeopenmeeting() == false) {\n        //  没有开启的会议\n        this.rx.applyforAddVideoPush(this.settingup.videoMeetID);\n      } else if (this.AV.judgeopenmeeting() == true) {\n        // 有开启的就切换\n        if (this.AV.judgepresentmeeting(this.settingup.videoMeetID) == true) {\n          return;\n        } else {\n          let data = {\n            type: 4,\n            settingup: this.settingup,\n          };\n          this.meetingnav = data;\n          this.cutmeetingshow = true;\n        }\n      }\n    } else if (this.settingup.audioMeetID) {\n      if (this.AV.judgeopenmeeting() == false) {\n        //  没有开启的会议\n        this.rx.applytojoinAudioConference(this.settingup.audioMeetID);\n      } else if (this.AV.judgeopenmeeting() == true) {\n        // 有开启的就切换\n        if (this.AV.judgepresentmeeting(this.settingup.audioMeetID) == true) {\n          return;\n        } else {\n          let data = {\n            type: 3,\n            settingup: this.settingup,\n          };\n          this.meetingnav = data;\n          this.cutmeetingshow = true;\n        }\n      }\n    }\n  }\n  cutmeeting(ev: any) {\n    if (ev) {\n      if (ev.type == 3 || ev.type == 1) {\n        this.access(1, ev.settingup);\n      } else {\n        this.access(ev.type, ev.settingup);\n      }\n    }\n    this.cutmeetingshow = false;\n  }\n  getback() {\n    this.content = 0;\n  }\n  cutvideomeeting(ev: any) {\n    if (ev.status == 1) {\n      // 判断下是否是发起者\n      let data = this.judgeuseropen(ev.videoMeetID, '2');\n      if (data == true) {\n        this.access(2, ev);\n      } else {\n        this.access(3, ev);\n        //\n      }\n    } else if (ev.status == 0) {\n      this.access(3, ev);\n    }\n  }\n\n  judgeuseropen(ev: any, type: any) {\n    // 判断是否是发起者\n    let data = false;\n    if (type == '2') {\n      for (let i = 0; i < this.videolist.length; i++) {\n        if (this.videolist[i].videoMeetID == ev) {\n          if (this.videolist[i].starter == this.rx.userID) {\n            data = true;\n          }\n        }\n      }\n    } else if (type == '1') {\n      for (let i = 0; i < this.audiolist.length; i++) {\n        if (this.audiolist[i].audioMeetID == ev) {\n          if (this.audiolist[i].starter == this.rx.userID) {\n            data = true;\n          }\n        }\n      }\n    }\n    return data;\n  }\n  cutaudiomeeting(ev: any) {\n    for (let i = 0; i < this.audiolist.length; i++) {\n      if (this.audiolist[i].audioMeetID == ev) {\n        this.access(1, this.audiolist[i]);\n      }\n    }\n  }\n  cutmeetting(ev: any) {\n    if (ev.callout == 1 && ev.phonetype == '4') {\n      for (let i = 0; i < this.videolist.length; i++) {\n        if (ev.cmschat.videoMeetID == this.videolist[i].videoMeetID) {\n          this.access(2, this.videolist[i]);\n        }\n      }\n    } else if (ev.phonetype == '3') {\n      for (let i = 0; i < this.audiolist.length; i++) {\n        if (ev.cmschat.audioMeetID == this.audiolist[i].audioMeetID) {\n          this.access(1, this.audiolist[i]);\n        }\n      }\n    }\n  }\n}\n","<div class=\"box\" class=\"{{ operationclass }}\">\n    <div class=\"sider\" *ngIf=\"leftsider\">\n        <div class=\"titlebox\">\n            <div class=\"all\" [ngClass]=\"item == 0 ? 'li-active' : ''\" (click)=\"titles(0)\">\n                用户\n            </div>\n            <div class=\"duijiang\" [ngClass]=\"item == 1 ? 'li-active' : ''\" (click)=\"titles(1)\">\n                会议室\n            </div>\n        </div>\n        <!-- 全体成员列表 -->\n        <div class=\"inputbox\" [style.display]=\"item == 0 ? 'block' : 'none'\">\n            <div class=\"search\">\n                <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\n                    <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"searchTree()\" />\n                </nz-input-group>\n                <ng-template #prefixTemplateUser>\n                    <i nz-icon nzType=\"search\" class=\"icon\"></i>\n                </ng-template>\n                <ng-template #inputClearTpl>\n                    <div *ngIf=\"inputValue\" class=\"icon\">\n                        <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"empty()\"></i>\n                    </div>\n                </ng-template>\n            </div>\n            <div class=\"tree\">\n                <app-tree [vodtree]=\"vodtree\" (outer)=\"tree($event)\" [uservalue]=\"uservalue\"></app-tree>\n            </div>\n        </div>\n        <div class=\"inputbox\" [style.display]=\"item == 1 ? 'block' : 'none'\">\n            <div class=\"conference\">会议首页</div>\n            <!-- 音频会议列表 -->\n            <div [ngClass]=\"{'audioconference': allsetting, 'audioalone': audiosetting, 'nonealone': audiosetting}\" *ngIf=\"meetingsetting.audioMeeting==1\">\n                <div class=\"talkbackbox\">\n                    <div class=\"branch\">\n                        <i nz-icon nzType=\"caret-right\" nzTheme=\"outline\" [style.display]=\"branch == false ? 'block' : 'none'\" (click)=\"branch = true\"></i>\n                        <i nz-icon nzType=\"caret-down\" nzTheme=\"outline\" (click)=\"branch = false\" [style.display]=\"branch == true ? 'block' : 'none'\"></i>\n                    </div>\n                    <div class=\"talkback\">音频会议</div>\n                    <div class=\"addIntercomgGroup\">\n                        <i nz-icon nzType=\"plus-square\" nzTheme=\"outline\" (click)=\"intercom(3, '音频')\"></i>\n                        <i nz-icon nzType=\"setting\" (click)=\"setplayback(1, false)\"></i>\n                    </div>\n                </div>\n                <div class=\"talkbacklist\" [style.display]=\"branch == true ? 'block' : 'none'\">\n                    <div *ngFor=\"let item of audiolist; let i = index\">\n                        <div class=\"bofangbox\" (contextmenu)=\"conference($event, item)\" (dblclick)=\"access(1, item)\">\n                            <div class=\"intercomteam\">\n                                <img src=\"assets/img/audiomeeting_01.png\" alt=\"\" *ngIf=\"item.status == 0\" />\n                                <img src=\"assets/img/audiomeeting_02.png\" alt=\"\" *ngIf=\"item.status == 1\" />\n                            </div>\n                            <div class=\"itemtext\">{{ item.audioName }}</div>\n                            <div class=\"play\">\n                                <div class=\"nav\">\n                                    <div class=\"message\" (click)=\"ssion(item)\"></div>\n                                    <div class=\"playback\" (click)=\"conference($event, item)\" #settings></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!-- 视频会议列表 -->\n            <div [ngClass]=\"{'videoconference': allsetting, 'videoalone': videosetting, 'nonealone': audiosetting}\" *ngIf=\"meetingsetting.videoMeeting==1\">\n                <div class=\"talkbackbox\">\n                    <div class=\"branch\">\n                        <i nz-icon nzType=\"caret-right\" nzTheme=\"outline\" [style.display]=\"audiobranch == false ? 'block' : 'none'\" (click)=\"audiobranch = true\"></i>\n                        <i nz-icon nzType=\"caret-down\" nzTheme=\"outline\" (click)=\"audiobranch = false\" [style.display]=\"audiobranch == true ? 'block' : 'none'\"></i>\n                    </div>\n                    <div class=\"talkback\">视频会议</div>\n                    <div class=\"addIntercomgGroup\">\n                        <i nz-icon nzType=\"plus-square\" nzTheme=\"outline\" (click)=\"intercom(3, '视频')\"></i>\n                        <i nz-icon nzType=\"setting\" (click)=\"setplayback(1, true)\"></i>\n                    </div>\n                </div>\n                <div class=\"talkbacklist\" [style.display]=\"audiobranch == true ? 'block' : 'none'\">\n                    <div *ngFor=\"let item of videolist; let i = index\">\n                        <div class=\"bofangbox\" (contextmenu)=\"conference($event, item)\" (dblclick)=\"cutvideomeeting(item)\">\n                            <div class=\"intercomteam\">\n                                <img src=\"assets/img/videomeeting_01.png\" alt=\"\" *ngIf=\"item.status == 0\" />\n                                <img src=\"assets/img/videomeeting_02.png\" alt=\"\" *ngIf=\"item.status == 1\" />\n                            </div>\n                            <div class=\"itemtext\">{{ item.videoName }}</div>\n                            <div class=\"play\">\n                                <div class=\"nav\">\n                                    <div class=\"message\" (click)=\"ssion(item)\"></div>\n                                    <div class=\"playback\" (click)=\"conference($event, item)\" #settings></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- 全部会议 -->\n    <div [style.display]=\"content == 0 ? 'block' : 'none'\" class=\"select\">\n        <div class=\"designation\">\n            <div class=\"creact\">\n                <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\" (click)=\"sider()\"></i\n        ><i\n          nz-icon\n          nzType=\"menu-unfold\"\n          nzTheme=\"outline\"\n          *ngIf=\"!leftsider\"\n          (click)=\"sider()\"\n        ></i>\n            </div>\n            <div style=\"margin-left: 10px; line-height: 50px\">全部会议室</div>\n        </div>\n        <div class=\"intercomgroup\">\n            <div *ngIf=\"meetingsetting.audioMeeting==1\" class=\"talklistbox\">\n                <div class=\"talklist\" *ngFor=\"let item of audiolist\">\n                    <div class=\"icon\" (dblclick)=\"access(1, item)\">\n                        <div class=\"icontype\">\n                            <img src=\"assets/img/audiomeeting_01.png\" alt=\"\" *ngIf=\"item.status == 0\" />\n                            <img src=\"assets/img/audiomeeting_02.png\" alt=\"\" *ngIf=\"item.status == 1\" />\n                        </div>\n                        <div class=\"state\">\n                            <div class=\"stateimg\">\n                                <img src=\"assets/img/clock_01.png\" alt=\"\" *ngIf=\"item.status == 0\" />\n                                <img src=\"assets/img/clock_02.png\" alt=\"\" *ngIf=\"item.status == 1\" />\n                            </div>\n                            <div class=\"statetext\" *ngIf=\"item.status == 0\">未开始</div>\n                            <div class=\"statetext\" *ngIf=\"item.status == 1\">已开始</div>\n                        </div>\n                    </div>\n                    <div class=\"talkname\">{{ item.audioName }}</div>\n                </div>\n            </div>\n            <div *ngIf=\"meetingsetting.videoMeeting==1\" class=\"talklistbox\">\n                <div class=\"talklist\" *ngFor=\"let item of videolist\">\n                    <div class=\"icon\" (dblclick)=\"cutvideomeeting(item)\">\n                        <div class=\"icontype\">\n                            <img src=\"assets/img/videomeeting_01.png\" alt=\"\" *ngIf=\"item.status == 0\" />\n                            <img src=\"assets/img/videomeeting_02.png\" alt=\"\" *ngIf=\"item.status == 1\" />\n                        </div>\n                        <div class=\"state\">\n                            <div class=\"stateimg\">\n                                <img src=\"assets/img/clock_01.png\" alt=\"\" *ngIf=\"item.status == 0\" />\n                                <img src=\"assets/img/clock_02.png\" alt=\"\" *ngIf=\"item.status == 1\" />\n                            </div>\n                            <div class=\"statetext\" *ngIf=\"item.status == 0\">未开始</div>\n                            <div class=\"statetext\" *ngIf=\"item.status == 1\">已开始</div>\n                        </div>\n                    </div>\n                    <div class=\"talkname\">{{ item.videoName }}</div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- 音频会议 -->\n    <div [style.display]=\"content == 1 ? 'block' : 'none'\" class=\"select\">\n        <div class=\"designation\">\n            <div class=\"creact\">\n                <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\" (click)=\"sider()\"></i\n        ><i\n          nz-icon\n          nzType=\"menu-unfold\"\n          nzTheme=\"outline\"\n          *ngIf=\"!leftsider\"\n          (click)=\"sider()\"\n        ></i>\n            </div>\n            <div style=\"margin-left: 10px; line-height: 50px; width: 90px\">\n                {{ vodename }}\n            </div>\n            <ul style=\"width: 100%; line-height: 50px\">\n                <li (click)=\"getback()\">\n                    <div class=\"voiceclose\">\n                        <div class=\"voicecloseimg\">\n                            <div class=\"voiceclosetalk\">&nbsp;&nbsp;返回</div>\n                        </div>\n                    </div>\n                </li>\n                <ng-container *ngIf=\"audiooperation\">\n                    <li (click)=\"closeaudio()\" *ngIf=\"quitshow\">\n                        <div class=\"voiceclose\">\n                            <div class=\"voicecloseimg\">\n                                <div class=\"voiceclosetalk\">&nbsp;&nbsp;关闭会议</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li (click)=\"quitaudio()\">\n                        <div class=\"voiceclose\">\n                            <div class=\"voicecloseimg\">\n                                <div class=\"voiceclosetalk\">&nbsp;&nbsp;退出会议</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li (click)=\"kickOut()\">\n                        <div class=\"voiceclose\">\n                            <div class=\"voicedeluser\">\n                                <div class=\"voiceclosetalk\">&nbsp;&nbsp;踢出</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li (click)=\"banned('1')\">\n                        <div class=\"voiceclose\">\n                            <div class=\"voicefloatmsg\">\n                                <div class=\"voiceclosetalk\">&nbsp;&nbsp;取消禁言</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li (click)=\"banned('0')\">\n                        <div class=\"voiceclose\">\n                            <div class=\"voicebantalk\">\n                                <div class=\"voiceclosetalk\">&nbsp;&nbsp;禁言</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li (click)=\"forbidden('1')\">\n                        <div class=\"voiceclose\">\n                            <div class=\"voicecancel\">\n                                <div class=\"voiceclosetalk\">&nbsp;&nbsp;取消禁听</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li (click)=\"forbidden('0')\">\n                        <div class=\"voiceclose\">\n                            <div class=\"voicebear\">\n                                <div class=\"voiceclosetalk\">&nbsp;&nbsp;禁听</div>\n                            </div>\n                        </div>\n                    </li>\n                </ng-container>\n            </ul>\n        </div>\n        <!-- 音频会议 -->\n        <div class=\"intercomgroup\">\n            <div class=\"add\" (click)=\"addAudioUser()\">\n                <div class=\"addimg\"></div>\n            </div>\n            <div *ngFor=\"let items of showlist\">\n                <div class=\"itembox\">\n                    <div class=\"itemtypebox\">\n                        <div class=\"itembgc\" [ngClass]=\"{\n                itembgchui: items.devStatus == '0',\n                itembgclan: items.devStatus == '1',\n                itembgcgreen: items.devStatus == '2'\n              }\">\n                            <img src=\"assets/img/head.png \" alt=\" \" class=\"imghead\" />\n                        </div>\n                        <div class=\"itemvoice\">\n                            <img src=\"assets/img/话筒_开.png \" alt=\" \" />\n                        </div>\n                        <div class=\"itemstact\">\n                            <img src=\"assets/img/type_android.png \" alt=\" \" *ngIf=\"items.stact == '1'\" />\n                            <img src=\"assets/img/type_pc.png \" alt=\" \" *ngIf=\"items.stact == '2'\" />\n                            <img src=\"assets/img/type_IPC.png \" alt=\" \" *ngIf=\"items.stact == '3'\" />\n                            <img src=\"assets/img/type_DB.png \" alt=\" \" *ngIf=\"items.stact == '4'\" />\n                        </div>\n                        <div class=\"itemcellphone\">\n                            <img src=\"assets/img/禁听_开.png \" alt=\" \" />\n                        </div>\n                        <div class=\"circle\" (click)=\"andrs(items)\" *ngIf=\"items.userName != '本机'\">\n                            <img src=\"assets/img/对号.png \" alt=\" \" *ngIf=\"items.show\" />\n                        </div>\n                    </div>\n                    <div class=\"itemnav\">\n                        {{ items.userName }}\n                    </div>\n                    <div class=\"electric\">\n                        <div>\n                            <img src=\"assets/img/netstatus_outline.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 0\" />\n                            <img src=\"assets/img/netstatus_1.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 1\" />\n                            <img src=\"assets/img/netstatus_2.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 2\" />\n                            <img src=\"assets/img/netstatus_3.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 3\" />\n                            <img src=\"assets/img/netstatus_4.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 4\" />\n                        </div>\n                        <div>\n                            <img src=\"assets/img/electricity_outline.png \" alt=\" \" *ngIf=\"items.electricity == 0\" />\n                            <img src=\"assets/img/electricity_1.png \" alt=\" \" *ngIf=\"items.electricity == 1\" />\n                            <img src=\"assets/img/electricity_2.png \" alt=\" \" *ngIf=\"items.electricity == 2\" />\n                            <img src=\"assets/img/electricity_3.png \" alt=\" \" *ngIf=\"items.electricity == 3\" />\n                            <img src=\"assets/img/electricity_4.png \" alt=\" \" *ngIf=\"items.electricity == 4\" />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div>\n            <audio src=\"\" #remotesaudio autoplay></audio>\n        </div>\n    </div>\n    <!-- 视频会议 -->\n    <div [style.display]=\"content == 2 ? 'block' : 'none'\" class=\"select\">\n        <div class=\"selectbox\">\n            <div class=\"menubox\">\n                <div class=\"menu\">\n                    <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\" (click)=\"sider()\"></i\n          ><i\n            nz-icon\n            nzType=\"menu-unfold\"\n            nzTheme=\"outline\"\n            *ngIf=\"!leftsider\"\n            (click)=\"sider()\"\n          ></i>\n                </div>\n                <div style=\"margin-left: 10px; line-height: 50px; width: 230px\">\n                    {{ vodename }}\n                </div>\n                <div class=\"atpresent\" style=\"\n            width: 300px;\n            line-height: 50px;\n            font-size: 12px;\n            margin-left: 100px;\n          \" *ngIf=\"pushtype == true\">\n                    当前推送视频:&nbsp;&nbsp;{{ atpresent }}\n                </div>\n                <ul class=\"clearfix\" style=\"width: 100%\">\n                    <li (click)=\"getback()\">\n                        <div class=\"closemeeting\">\n                            <div class=\"closemeetingimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;返回</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li (click)=\"close()\">\n                        <div class=\"closemeeting\">\n                            <div class=\"closemeetingimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;关闭会议</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li (click)=\"clearmeeting()\">\n                        <div class=\"closemeeting\">\n                            <div class=\"closemeetingimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;退出会议</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li nz-dropdown [nzDropdownMenu]=\"licscreen\" [nzPlacement]=\"'bottomRight'\" [nzTrigger]=\"'click'\">\n                        <div class=\"closemeeting\">\n                            <div class=\"screenfirtimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;分屏</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li nz-dropdown [nzDropdownMenu]=\"licmeetingset\" [nzTrigger]=\"'click'\">\n                        <div class=\"closemeeting\">\n                            <div class=\"memberimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;成员</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li *ngIf=\"pushtype == true\">\n                        <div class=\"closemeeting\" (click)=\"projection()\">\n                            <div class=\"largeimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;投屏</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li *ngIf=\"pushtype == true\" nz-dropdown [nzDropdownMenu]=\"pushball\" [nzTrigger]=\"'click'\">\n                        <div class=\"closemeeting\">\n                            <div class=\"pushimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;推送</div>\n                            </div>\n                        </div>\n                    </li>\n                </ul>\n                <nz-dropdown-menu #licscreen=\"nzDropdownMenu\">\n                    <div class=\"pnging\">\n                        <div class=\"showbox\" (click)=\"screenone(1)\">\n                            <div>\n                                <img src=\"assets/img/screen1_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">1屏显示</div>\n                        </div>\n                        <div class=\"showbox\" (click)=\"screenone(4)\">\n                            <div>\n                                <img src=\"assets/img/screen4_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">4屏显示</div>\n                        </div>\n                        <div class=\"showbox\" (click)=\"screenone(9)\">\n                            <div>\n                                <img src=\"assets/img/screen9_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">9屏显示</div>\n                        </div>\n                        <div class=\"showbox\" (click)=\"screenone(12)\">\n                            <div>\n                                <img src=\"assets/img/screen12_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">12屏显示</div>\n                        </div>\n                        <div class=\"showbox\" (click)=\"screenone(16)\">\n                            <div>\n                                <img src=\"assets/img/screen16_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">16屏显示</div>\n                        </div>\n                        <div class=\"showbox\"></div>\n                        <div class=\"showbox\"></div>\n                        <div class=\"showbox\"></div>\n                    </div>\n                </nz-dropdown-menu>\n                <nz-dropdown-menu #pushball=\"nzDropdownMenu\">\n                    <div class=\"pushbox\">\n                        <div class=\"pushtitle\">推送视频选择</div>\n                        <div class=\"pushuser\">\n                            <div class=\"pushcheak\">\n                                <div class=\"checkbox\" (click)=\"pushcheak('本机')\">\n                                    <i nz-icon nzType=\"check\" nzTheme=\"outline\" *ngIf=\"localshow == true\"></i>\n                                </div>\n                                <div class=\"userName\">本机视频</div>\n                            </div>\n                            <div class=\"pushcheak\">\n                                <div class=\"checkbox\" (click)=\"pushcheak('本机屏幕')\">\n                                    <i nz-icon nzType=\"check\" nzTheme=\"outline\" *ngIf=\"shareshow == true\"></i>\n                                </div>\n                                <div class=\"userName\">本机屏幕</div>\n                            </div>\n                            <ng-container *ngFor=\"let title of videolists; let i = index\">\n                                <div class=\"pushcheak\" *ngIf=\"title.dstID != ''\">\n                                    <div class=\"checkbox\" (click)=\"pushcheak(title.dstID)\">\n                                        <i nz-icon nzType=\"check\" nzTheme=\"outline\" *ngIf=\"title.pushshow\"></i>\n                                    </div>\n                                    <div class=\"userName\">\n                                        {{ title.dstID }}\n                                    </div>\n                                </div>\n                            </ng-container>\n                        </div>\n                        <div class=\"pushbutton\">\n                            <button (click)=\"pushensure()\">确定</button>\n                            <button (click)=\"pushout()\">取消</button>\n                        </div>\n                    </div>\n                </nz-dropdown-menu>\n                <nz-dropdown-menu #licmeetingset=\"nzDropdownMenu\">\n                    <div class=\"videonumberof\">\n                        <div class=\"videotitle\">与会数</div>\n                        <div class=\"numberoflist\">\n                            <div class=\"add\" (click)=\"addVideoUser()\">\n                                <div class=\"addimg\"></div>\n                            </div>\n                            <div *ngFor=\"let items of showlist\">\n                                <div class=\"itembox\">\n                                    <div class=\"itemtypebox\">\n                                        <div class=\"itembgc\" [ngClass]=\"{\n                          itembgchui: items.devStatus == '0',\n                          itembgclan: items.devStatus == '1',\n                          itembgcgreen: items.devStatus == '2'\n                        }\">\n                                            <img src=\"assets/img/head.png \" alt=\" \" class=\"imghead\" />\n                                        </div>\n                                        <div class=\"itemvoice\">\n                                            <img src=\"assets/img/话筒_开.png \" alt=\" \" />\n                                        </div>\n                                        <div class=\"itemcellphone\">\n                                            <img src=\"assets/img/禁听_开.png \" alt=\" \" />\n                                        </div>\n                                        <div class=\"circle\" (click)=\"andrs(items)\" *ngIf=\"items.userName != '本机'\">\n                                            <img src=\"assets/img/对号.png \" alt=\" \" *ngIf=\"items.show\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"itemnav\">\n                                        {{ items.userName }}\n                                    </div>\n                                    <div class=\"electric\">\n                                        <div>\n                                            <img src=\"assets/img/信号.png \" alt=\" \" />\n                                        </div>\n                                        <div>\n                                            <img src=\"assets/img/electricity_outline.png \" alt=\" \" />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"alllist\">\n                            <div class=\"pair\" (click)=\"allShow()\">\n                                <img src=\"assets/img/对号.png \" alt=\"\" *ngIf=\"pair\" />\n                            </div>\n                            <div class=\"allxuan\">全选</div>\n                            <div class=\"participate\" (click)=\"participate()\">删除与会人员</div>\n                        </div>\n                    </div>\n                </nz-dropdown-menu>\n            </div>\n            <div class=\"videobox\">\n                <ng-container *ngFor=\"let title of videolists; let i = index\">\n                    <div [style.display]=\"\n              i >= (page - 1) * pageSize && i < page * pageSize\n                ? 'block'\n                : 'none'\n            \" class=\"compomemtbox\" (click)=\"videoBorder(i)\" [ngClass]=\"activeIndex == i ? 'addborder' : 'removerborder'\" class=\"{{ pagingclass }} \">\n                        <div (mouseenter)=\"this.title.show = true\" (mouseleave)=\"this.title.show = false\" (dblclick)=\"videoMagnify(i)\" class=\"videolistbox\">\n                            <app-videomeeting (outer)=\"videomeeting($event)\" [title]=\"title\" [dstID]=\"title.dstID\" [channelID]=\"title.channelID\" [videoMeetID]=\"videoMeetID\"></app-videomeeting>\n                        </div>\n                    </div>\n                </ng-container>\n            </div>\n            <div class=\"fenyebox\">\n                <span (click)=\"prePage()\" class=\"prePage\">上一页</span>\n                <span>{{ page }}/{{ totalpages }}</span>\n                <span (click)=\"nextPage()\" class=\"nextPage\">下一页</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n            </div>\n            <div>\n                <audio src=\"\" #remotesvideo autoplay></audio>\n            </div>\n        </div>\n    </div>\n    <!-- 创建会议 -->\n    <div [style.display]=\"content == 3 ? 'block' : 'none'\" class=\"select\">\n        <div class=\"designation\">\n            <div class=\"creact\">\n                <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\" (click)=\"sider()\"></i\n        ><i\n          nz-icon\n          nzType=\"menu-unfold\"\n          nzTheme=\"outline\"\n          *ngIf=\"!leftsider\"\n          (click)=\"sider()\"\n        ></i>\n            </div>\n            <div style=\"margin-left: 10px; line-height: 50px\">\n                创建{{ designation }}会议\n            </div>\n        </div>\n        <div class=\"adddesignion\">\n            <div class=\"setbox\">\n                <div>组名称:</div>\n                &nbsp;&nbsp;\n                <input type=\"text \" [(ngModel)]=\"groupname\" />\n            </div>\n            <div class=\"setbox\">\n                <div>邀请权限:</div>\n                &nbsp;&nbsp;\n                <nz-select style=\"width: 200px\" [(ngModel)]=\"SelectedValue\">\n                    <nz-option nzValue=\"被邀请人可讲 \" nzLabel=\"被邀请人可讲 \"></nz-option>\n                    <nz-option nzValue=\"被邀请人不可讲 \" nzLabel=\"被邀请人不可讲 \"></nz-option>\n                </nz-select>\n            </div>\n            <div class=\"setbox\">\n                <div>对话权限:</div>\n                &nbsp;&nbsp;\n                <nz-select style=\"width: 200px\" [(ngModel)]=\"listOfSelectedValue\">\n                    <nz-option nzValue=\"无限制 \" nzLabel=\"无限制 \"></nz-option>\n                    <nz-option nzValue=\"只有发起人可讲 \" nzLabel=\"只有发起人可讲 \"></nz-option>\n                </nz-select>\n            </div>\n            <div class=\"setbox\">\n                <div>追呼模式:</div>\n                &nbsp;&nbsp;\n                <nz-select style=\"width: 200px\" [(ngModel)]=\"OfSelectedValue\">\n                    <nz-option nzValue=\"自动追呼 \" nzLabel=\"自动追呼 \"></nz-option>\n                </nz-select>\n            </div>\n            <div class=\"setboxs\">\n                <div class=\"time\">\n                    <div>追呼次数:</div>\n                    &nbsp;&nbsp; <input [(ngModel)]=\"callingtime\" />次\n                </div>\n                <div class=\"time\">\n                    <div>追呼间隔:</div>\n                    <input [(ngModel)]=\"callinginterval\" />秒\n                </div>\n            </div>\n            <div class=\"setbox\">\n                <div>参会人员:</div>\n                &nbsp;&nbsp;\n                <div class=\"addpersonnel\">\n                    <!-- {{ member }} -->\n                    <ng-container *ngFor=\"let title of member; let i = index\">\n                        <span>{{title.userName}}</span>;\n                    </ng-container> <button (click)=\"addPersonnel()\">人员管理</button>\n                </div>\n            </div>\n            <div class=\"setbox\">\n                <div>开始时间:</div>\n                &nbsp;&nbsp;\n                <div class=\"immediatelytime\">\n                    <div class=\"datepicker\">\n                        <nz-radio-group [(ngModel)]=\"radioValue\">\n                            <label nz-radio nzValue=\"A \" style=\"color: white\">立即</label>\n                            <label nz-radio nzValue=\"B \" style=\"color: white\">预约时间</label>\n                        </nz-radio-group>\n                        <nz-date-picker [(ngModel)]=\"date\"></nz-date-picker>\n                        <nz-time-picker [(ngModel)]=\"time\" nzSize=\"large \" style=\"margin-left: 10px\"></nz-time-picker>\n                    </div>\n                </div>\n            </div>\n            <div class=\"ascertain\">\n                <button (click)=\"addTalkgroup()\">确定</button>\n                <button (click)=\"closegroup()\">取消</button>\n            </div>\n        </div>\n    </div>\n    <!-- cms发起视频页面 -->\n    <!-- 切换会议显示 -->\n    <div [style.display]=\"content == 4 ? 'block' : 'none'\" class=\"select\">\n        <div class=\"selectbox\">\n            <div class=\"menubox\">\n                <div class=\"menu\">\n                    <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\" (click)=\"sider()\"></i\n          ><i\n            nz-icon\n            nzType=\"menu-unfold\"\n            nzTheme=\"outline\"\n            *ngIf=\"!leftsider\"\n            (click)=\"sider()\"\n          ></i>\n                </div>\n                <div style=\"margin-left: 10px; line-height: 50px; width: 230px\">\n                    {{ vodename }}\n                </div>\n                <div class=\"atpresent\" style=\"\n            width: 300px;\n            line-height: 50px;\n            font-size: 12px;\n            margin-left: 100px;\n          \" *ngIf=\"pushtype == true\">\n                    当前推送视频:&nbsp;&nbsp;{{ atpresent }}\n                </div>\n                <ul class=\"clearfix\" style=\"width: 100%\">\n                    <li (click)=\"getback()\">\n                        <div class=\"closemeeting\">\n                            <div class=\"closemeetingimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;返回</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li nz-dropdown [nzDropdownMenu]=\"screen\" [nzPlacement]=\"'bottomRight'\" [nzTrigger]=\"'click'\">\n                        <div class=\"closemeeting\">\n                            <div class=\"screenfirtimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;分屏</div>\n                            </div>\n                        </div>\n                    </li>\n                    <li nz-dropdown [nzDropdownMenu]=\"closemeetingset\" [nzTrigger]=\"'click'\">\n                        <div class=\"closemeeting\">\n                            <div class=\"memberimg\">\n                                <div class=\"closetalk\">&nbsp;&nbsp;成员</div>\n                            </div>\n                        </div>\n                    </li>\n                </ul>\n                <nz-dropdown-menu #screen=\"nzDropdownMenu\">\n                    <div class=\"pnging\">\n                        <div class=\"showbox\" (click)=\"screenone(1)\">\n                            <div>\n                                <img src=\"assets/img/screen1_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">1屏显示</div>\n                        </div>\n                        <div class=\"showbox\" (click)=\"screenone(4)\">\n                            <div>\n                                <img src=\"assets/img/screen4_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">4屏显示</div>\n                        </div>\n                        <div class=\"showbox\" (click)=\"screenone(9)\">\n                            <div>\n                                <img src=\"assets/img/screen9_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">9屏显示</div>\n                        </div>\n                        <div class=\"showbox\" (click)=\"screenone(12)\">\n                            <div>\n                                <img src=\"assets/img/screen12_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">12屏显示</div>\n                        </div>\n                        <div class=\"showbox\" (click)=\"screenone(16)\">\n                            <div>\n                                <img src=\"assets/img/screen16_01.png \" alt=\" \" />\n                            </div>\n                            <div class=\"cut\">16屏显示</div>\n                        </div>\n                        <div class=\"showbox\"></div>\n                        <div class=\"showbox\"></div>\n                        <div class=\"showbox\"></div>\n                    </div>\n                </nz-dropdown-menu>\n                <nz-dropdown-menu #closemeetingset=\"nzDropdownMenu\">\n                    <div class=\"videonumberof\">\n                        <div class=\"videotitle\">与会数</div>\n                        <div class=\"numberoflist\">\n                            <div class=\"add\" (click)=\"addVideoUser()\">\n                                <div class=\"addimg\"></div>\n                            </div>\n                            <div *ngFor=\"let items of showlist\">\n                                <div class=\"itembox\">\n                                    <div class=\"itemtypebox\">\n                                        <div class=\"itembgc\" [ngClass]=\"{\n                          itembgchui: items.devStatus == '0',\n                          itembgclan: items.devStatus == '1',\n                          itembgcgreen: items.devStatus == '2'\n                        }\">\n                                            <img src=\"assets/img/head.png \" alt=\" \" class=\"imghead\" />\n                                        </div>\n                                        <div class=\"itemvoice\">\n                                            <img src=\"assets/img/话筒_开.png \" alt=\" \" />\n                                        </div>\n                                        <div class=\"itemcellphone\">\n                                            <img src=\"assets/img/禁听_开.png \" alt=\" \" />\n                                        </div>\n                                        <div class=\"circle\" (click)=\"andrs(items)\" *ngIf=\"items.userName != '本机'\">\n                                            <img src=\"assets/img/对号.png \" alt=\" \" *ngIf=\"items.show\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"itemnav\">\n                                        {{ items.userName }}\n                                    </div>\n                                    <div class=\"electric\">\n                                        <div>\n                                            <img src=\"assets/img/信号.png \" alt=\" \" />\n                                        </div>\n                                        <div>\n                                            <img src=\"assets/img/electricity_outline.png \" alt=\" \" />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"alllist\">\n                            <div class=\"pair\" (click)=\"allShow()\">\n                                <img src=\"assets/img/对号.png \" alt=\"\" *ngIf=\"pair\" />\n                            </div>\n                            <div class=\"allxuan\">全选</div>\n                            <div class=\"participate\" (click)=\"participate()\">删除与会人员</div>\n                        </div>\n                    </div>\n                </nz-dropdown-menu>\n            </div>\n            <div class=\"videobox\">\n                <ng-container *ngFor=\"let title of novideolists; let i = index\">\n                    <div [style.display]=\"\n              i >= (page - 1) * pageSize && i < page * pageSize\n                ? 'block'\n                : 'none'\n            \" class=\"compomemtbox\" (click)=\"videoBorder(i)\" [ngClass]=\"activeIndex == i ? 'addborder' : 'removerborder'\" class=\"{{ pagingclass }} \">\n                        <div (mouseenter)=\"this.title.show = true\" (mouseleave)=\"this.title.show = false\" (dblclick)=\"videoMagnify(i)\" class=\"videolistbox\">\n                            <app-videomeeting (outer)=\"videomeeting($event)\" [title]=\"title\" [dstID]=\"title.dstID\" [channelID]=\"title.channelID\" [videoMeetID]=\"videoMeetID\"></app-videomeeting>\n                        </div>\n                    </div>\n                </ng-container>\n            </div>\n            <div class=\"fenyebox\">\n                <span (click)=\"prePage()\" class=\"prePage\">上一页</span>\n                <span>{{ page }}/{{ totalpages }}</span>\n                <span (click)=\"nextPage()\" class=\"nextPage\">下一页</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n            </div>\n        </div>\n    </div>\n    <!-- 会议室设置弹框 -->\n    <div class=\"setplayback\" *ngIf=\"setplaybacks\">\n        <div class=\"settingbox\">\n            <div class=\"setting\" appDrag>\n                <div class=\"setname\">\n                    <div>会议室设置</div>\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"setplayback(0)\"></i>\n                </div>\n                <div class=\"setnav\">\n                    <div class=\"setbox\" *ngIf=\"change == false\">\n                        <span>会议名称:</span>&nbsp;&nbsp;\n                        <div class=\"audioconferencename\">\n                            <input type=\"text \" [(ngModel)]=\"audioconferencename\" />\n                            <i nz-icon nzType=\"down\" nzTheme=\"outline\" class=\"down\" (click)=\"audioListShow()\" #downss></i>\n                            <div class=\"audioconferencetext\" *ngIf=\"audiolistreveal\">\n                                <div *ngFor=\"let option of audiolist\" class=\"audioName\" (click)=\"audioName(option)\">\n                                    {{ option.audioName }}\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"setbox\" *ngIf=\"change == true\">\n                        <span>会议名称:</span>&nbsp;&nbsp;\n                        <div class=\"audioconferencename\">\n                            <input type=\"text \" [(ngModel)]=\"videoconferencename\" />\n                            <i nz-icon nzType=\"down\" nzTheme=\"outline\" class=\"down\" (click)=\"audioListShow()\" #downss></i>\n                            <div class=\"audioconferencetext\" *ngIf=\"audiolistreveal\">\n                                <div *ngFor=\"let option of videolist\" class=\"audioName\" (click)=\"audioName(option)\">\n                                    {{ option.videoName }}\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"setbox\">\n                        <span>邀请权限:</span>&nbsp;&nbsp;\n                        <nz-select style=\"width: 200px\" [(ngModel)]=\"invitee\">\n                            <nz-option nzValue=\"被邀请人可讲\" nzLabel=\"被邀请人可讲\"></nz-option>\n                            <nz-option nzValue=\"被邀请人不可讲\" nzLabel=\"被邀请人不可讲\"></nz-option>\n                        </nz-select>\n                    </div>\n                    <div class=\"setbox\">\n                        <span>对话权限:</span>&nbsp;&nbsp;\n                        <nz-select style=\"width: 200px\" [(ngModel)]=\"initiator\">\n                            <nz-option nzValue=\"无限制\" nzLabel=\"无限制\"></nz-option>\n                            <nz-option nzValue=\"只有发起人可讲\" nzLabel=\"只有发起人可讲\"></nz-option>\n                        </nz-select>\n                    </div>\n                    <div class=\"setbox\">\n                        <span>追呼模式:</span>&nbsp;&nbsp;\n                        <nz-select style=\"width: 200px\" [(ngModel)]=\"voluntarilycalling\">\n                            <nz-option nzValue=\"自动追呼\" nzLabel=\"自动追呼\"></nz-option>\n                        </nz-select>\n                    </div>\n                    <div class=\"setboxs\">\n                        <div class=\"time\">\n                            追呼次数:<input [(ngModel)]=\"voluntarilynext\" />次\n                        </div>\n                        <div class=\"time\">\n                            追呼间隔:<input [(ngModel)]=\"voluntarilysecond\" />秒\n                        </div>\n                    </div>\n                </div>\n                <div class=\"setbutton\">\n                    <button (click)=\"modificationensure()\">确定</button>\n                    <button (click)=\"setplayback(0)\">取消</button>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div *ngIf=\"hint\">\n        <!-- 未添加会议成员 -->\n        <app-hint (outer)=\"runParentinit($event)\" [hinttype]=\"hinttype\"></app-hint>\n    </div>\n    <div *ngIf=\"ssiontype\">\n        <owoMessage (outer)=\"chat($event)\" [talkgroupitem]=\"talkgroupitem\" [discussionmessane]=\"discussionmessane\"></owoMessage>\n    </div>\n    <div *ngIf=\"addmember\">\n        <!-- 创建会议添加成员 -->\n        <app-addmember (outer)=\"runParent($event)\" [userListtype]=\"userListtype\" [list]=\"lists\"></app-addmember>\n    </div>\n    <div *ngIf=\"largetype\" class=\"largehint\">\n        <div class=\"navbox\">\n            <div class=\"nav\" appDrag>\n                <div class=\"setname\">\n                    <div>选择投屏位置</div>\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"largecut()\"></i>\n                </div>\n                <div class=\"excelbox\">\n                    <app-excel [larges]=\"largedata\" [projectiondata]=\"projectiondata\"></app-excel>\n                </div>\n                <div class=\"setbutton\">\n                    <button (click)=\"largeensure()\">确定</button>\n                    <button (click)=\"largecut()\">取消</button>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- 添加音频成员 -->\n    <div *ngIf=\"addaudiomeet\">\n        <app-addmember (outer)=\"addAudio($event)\" [userListtype]=\"userListtype\" [list]=\"lists\" [userlist]=\"userlist\"></app-addmember>\n    </div>\n    <!-- 添加视频成员 -->\n    <div #addmem [style.display]=\"addvideomeet ? 'block' : 'none'\">\n        <div class=\"videomeetbox\">\n            <div class=\"navbox\">\n                <div class=\"nav\" appDrag>\n                    <div class=\"setname\">\n                        <div>添加成员</div>\n                        <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"closeVideoMeet()\"></i>\n                    </div>\n                    <div class=\"setnav\">\n                        <div class=\"setleft\">\n                            <div class=\"title\">联系人分组</div>\n                            <div class=\"inputbox\">\n                                <img src=\"assets/img/搜索.png \" alt=\" \" />\n                                <input type=\"text \" />\n                            </div>\n                            <div class=\"list\">\n                                <div (click)=\"show()\" class=\"listbox\">\n                                    <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\">\n                                        <img src=\"assets/img/white_branch_down.png \" alt=\" \" />\n                                    </div>\n                                    <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\">\n                                        <img src=\"assets/img/white_branch_right.png \" alt=\" \" />\n                                    </div>\n                                    <div class=\"root\">\n                                        {{ lists.root }}\n                                    </div>\n                                    <div class=\"blank\"></div>\n                                </div>\n                                <div [style.display]=\"shows ? 'block' : 'none'\">\n                                    <div *ngFor=\"let item of arr; let i = index\">\n                                        <div class=\"itembox\" (mouseenter)=\"item.info.show = true\" (mouseleave)=\"item.info.show = false\" *ngIf=\"item.info.userName\">\n                                            <div class=\"itemimg\">\n                                                <div><img src=\"assets/img/人员.png \" alt=\" \" /></div>\n                                            </div>\n                                            <div class=\"itemname\">\n                                                {{ item.info.userName }}\n                                            </div>\n                                            <div class=\"itemtpye\" *ngIf=\"item.info.type\">\n                                                <div *ngIf=\"item.info.type.devStatus == 0\" style=\"color: #a09f9f\">\n                                                    离线\n                                                </div>\n                                                <div *ngIf=\"item.info.type.devStatus == 1\" style=\"color: #5898d7\">\n                                                    在线\n                                                </div>\n                                            </div>\n                                            <div class=\"itemright\">\n                                                <img src=\"assets/img/向右添加.png \" alt=\" \" [style.display]=\"item.info.show ? 'block' : 'none'\" (click)=\"addRight(item.info)\" />\n                                            </div>\n                                        </div>\n                                        <div *ngIf=\"item.info.groupName\" class=\"root\">\n                                            {{ item.info.groupName }}\n                                        </div>\n                                        <div class=\"childs\" *ngIf=\"item.info.childs\">\n                                            <div (click)=\"item.show = !item.show\" class=\"listbox\">\n                                                <div [style.display]=\"item.show ? 'block' : 'none'\" class=\"imgbox\">\n                                                    <img src=\"assets/img/white_branch_down.png \" alt=\" \" />\n                                                </div>\n                                                <div [style.display]=\"!item.show ? 'block' : 'none'\" class=\"imgbox\">\n                                                    <img src=\"assets/img/white_branch_right.png \" alt=\" \" />\n                                                </div>\n                                                <div class=\"root\">\n                                                    {{ item.info.root }}\n                                                </div>\n                                                <div class=\"blank\"></div>\n                                            </div>\n                                            <div [style.display]=\"item.show ? 'block' : 'none'\">\n                                                <div *ngFor=\"let items of item.info.childs; let i = index\">\n                                                    <div *ngIf=\"items.info.groupName\" class=\"groupName\">\n                                                        {{ items.info.groupName }}\n                                                    </div>\n                                                    <div *ngIf=\"items.info.root\" class=\"groupName\">\n                                                        {{ items.info.root }}\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"setright\">\n                            <div class=\"selected\">已选人员</div>\n                            <div class=\"userlest\">\n                                <div *ngFor=\"let data of acceptvideo; let i = index\">\n                                    <div class=\"userlestbox\">\n                                        <div class=\"usname\">\n                                            {{ data.userName }}\n                                        </div>\n                                        <div class=\"usimg\">\n                                            <img src=\"assets/img/canceladd.png \" alt=\" \" (click)=\"removeRight(data)\" />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"setbutton\">\n                            <button (click)=\"confirmAdd()\">确定</button>\n                            <button (click)=\"closeVideoMeet()\">取消</button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div class=\"settingtalkg\" #settalkg style=\"position: absolute; top: 0; left: 0; z-index: 1000\" [style.display]=\"kongshow ? 'block' : 'none'\">\n    <div (click)=\"compile()\">编辑</div>\n    <div (click)=\"delet()\">删除</div>\n    <div (click)=\"sponsor()\" *ngIf=\"settingup.status == 0\">发起会议</div>\n    <ng-container *ngIf=\"settingup.status == 1\">\n        <div (click)=\"entermeeting()\">\n            进入会议\n        </div>\n    </ng-container>\n    <div (click)=\"sponsor()\" *ngIf=\"settingup.status == 1&&judgestarter(settingup.starter)\">关闭会议</div>\n</div>\n<div class=\"pushhint\" *ngIf=\"pushhint\">\n    <div class=\"navbox\">\n        <div class=\"nav\" appDrag>\n            <div class=\"setname\">\n                <div>提示</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"pushhintclose()\"></i>\n            </div>\n            <div class=\"sethint\">是否修改当前推送视频为:{{ pushselect }}</div>\n            <div class=\"setbutton\">\n                <button (click)=\"pushhintensure()\">确定</button>\n                <button (click)=\"pushhintclose()\">取消</button>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"cutmeeting\" *ngIf=\"cutmeetingshow\">\n    <app-cutmeeting (outer)=\"cutmeeting($event)\" [datameeting]=\"meetingnav\"></app-cutmeeting>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AvService } from '../../protocol/rtc/av.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { OverallService } from '../../common/overall.service';\nimport { ResourceService } from '../../protocol/resource/resource.service';\n@Component({\n  selector: 'app-personalinformation',\n  templateUrl: './personalinformation.component.html',\n  styleUrls: ['./personalinformation.component.less'],\n})\nexport class PersonalinformationComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() person: any ;\n  @Input() equipmenttype: boolean = false;\n  @Input() personal: boolean = false;\n  @Input() changeovershow: boolean = false;\n  barringFlag: any = 0;\n  dataList:any \n  tabs = 1\n  datashow = false;\n  dataTime=null;\n  personsetting:any;\n  constructor(\n    private AV: AvService,\n    private message: NzMessageService,\n    private ws: WebService,\n    private sendService: OverallService,\n    private datastact: ResourceService,\n  ) {}\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n      let cmdid = nav.cmdID;\n      let cmdBody = nav.cmdBody;\n      switch (respcmdid) {\n        case state.OWO_CMD_GET_MEMLIST_STATUS + 1: {\n          this.barringFlag = resultdata.barringFlag;\n          break;\n        }\n        case state.OWO_CMD_DATA_RECORD_SEND+1: {\n          // console.log(nav);\n          break;\n        }\n        default:\n      }\n      switch (cmdid) {\n        case state.OWO_CMD_DATA_RECORD_SEND: {\n           if(nav.cmdBody.srcID ==this.person.info.userID){\n           this.dataList = nav.cmdBody.dataList\n           this.datashow = true\n           this.dataTime = nav.cmdBody.dataTime\n           }\n          break;\n        }\n        default:\n      }\n    });\n    this.personsetting = this.datastact.module.person;\n  }\n  video(ev: any) {\n    ev.stopPropagation();\n    if (this.person.info.type.barringFlag == '1' || this.barringFlag == '1') {\n      this.message.create('warning', '该用户被禁话暂不能操作');\n    } else {\n      if (this.person.info.type.devStatus == 0) {\n        let data = { hite: true };\n        this.outer.emit(data);\n      } else {\n        let dstID = this.person.info.userID;\n        this.AV.callonevideo(dstID);\n      }\n    }\n  }\n  vod(ev: any) {\n    ev.stopPropagation();\n    if (this.person.info.type.barringFlag == '1' || this.barringFlag == '1') {\n      this.message.create('warning', '该用户被禁话暂不能操作');\n    } else {\n      if (this.person.info.type.devStatus == 0) {\n        let data = { hite: true };\n        this.outer.emit(data);\n      } else {\n        let data = { item: '1' };\n        this.outer.emit(data);\n        this.sendService.plantingsendsider(this.person);\n      }\n    }\n  }\n  phone(ev: any) {\n    ev.stopPropagation();\n    if (this.person.info.type.barringFlag == '1' || this.barringFlag == '1') {\n      this.message.create('warning', '该用户被禁话暂不能操作');\n    } else {\n      if (this.person.info.type.devStatus == 0) {\n        let data = { hite: true };\n        this.outer.emit(data);\n      } else {\n        let dstID = this.person.info.userID;\n        this.AV.callonevoice(dstID);\n      }\n    }\n  }\n  messagesend(ev: any) {\n    ev.stopPropagation();\n    let data = {\n      type: true,\n      nav: this.person,\n    };\n    this.outer.emit(data);\n  }\n  equipment(ev: any) {\n    ev.stopPropagation();\n    // console.log('打开设备');\n  }\n  throwover(ev: any, person: any) {\n    ev.stopPropagation();\n    let data = {\n      type: true,\n      throwover: person,\n    };\n    this.outer.emit(data);\n  }\n  judgename(ev: any) {\n    let judge = false;\n    if (ev.Chatdata) {\n      if (\n        ev.Chatdata.eventParam.srcID == ev.info.userID ||\n        ev.Chatdata.eventParam.dstID == ev.info.userID\n      ) {\n        judge = true;\n      }\n    }\n    return judge;\n  }\n  cuttabs(ev:any, tabs: any){\n    ev.stopPropagation();\n    this.tabs = tabs\n  }\n}\n\n","<div class=\"person\" *ngIf=\"person\" [ngClass]=\"person.activeshow == true ? 'personactive' : ''\">\n    <div class=\"user\">\n        <div class=\"userstatus\" *ngIf=\"equipmenttype\">\n            <div class=\"infoimg\" *ngIf=\"person.info.type.devStatus == 0\">\n                <img src=\"assets/img/meeting.png\" alt=\"\" />\n            </div>\n            <div class=\"buleStatus\" *ngIf=\"person.info.type.devStatus == 1\">\n                <img src=\"assets/img/meeting1.png\" alt=\"\" />\n            </div>\n            <div class=\"greenStatus\" *ngIf=\"person.info.type.devStatus == 2\">\n                <img src=\"assets/img/meeting1.png\" alt=\"\" />\n            </div>\n        </div>\n        <div class=\"userstatus\">\n            <div class=\"infoimg\" *ngIf=\"person.info.type.devStatus == 0\">\n                <img src=\"assets/img/head.png\" alt=\"\" />\n            </div>\n            <div class=\"buleStatus\" *ngIf=\"person.info.type.devStatus == 1\">\n                <img src=\"assets/img/head.png\" alt=\"\" />\n            </div>\n            <div class=\"greenStatus\" *ngIf=\"person.info.type.devStatus == 2\">\n                <img src=\"assets/img/head.png\" alt=\"\" />\n            </div>\n        </div>\n        <div class=\"tpye\">\n            <img src=\"assets/img/type_android.png\" alt=\"\" *ngIf=\"person.info.userType == '1'\" />\n            <img src=\"assets/img/type_pc.png\" alt=\"\" *ngIf=\"person.info.userType == '2'\" />\n            <img src=\"assets/img/type_IPC.png\" alt=\"\" *ngIf=\"person.info.userType == '3'\" />\n            <img src=\"assets/img/type_DB.png\" alt=\"\" *ngIf=\"person.info.userType == '4'\" />\n        </div>\n        <div class=\"userName\">\n            {{ person.info.userName }}\n        </div>\n        <div class=\"state\" *ngIf=\"datashow&&personsetting.data\">\n            <div (click)=\"cuttabs($event,1)\" class=\"tabs\" *ngIf=\"tabs==2\">\n                <div class=\"kong\"></div>&nbsp;调度</div>\n            <div (click)=\"cuttabs($event,2) \" class=\"tabs \" *ngIf=\"tabs==1\">\n                <div class=\"warning\"></div>&nbsp;数据&nbsp;\n            </div>\n        </div>\n    </div>\n    <div class=\"personbox\">\n        <div class=\"phone\" [style.display]=\"tabs==1 ? 'block' : 'none' \">\n            <div class=\"kongbai \"></div>\n            <div class=\"phonestatus\">\n                <div *ngIf=\"person.Chatdata\">\n                    <div *ngIf=\"person.Chatdata.eventParam.status==0 \" class=\"eventParam \">空闲</div>\n                    <div *ngIf=\"person.Chatdata.eventParam.status==1 \" class=\"eventParam \">请求中</div>\n                    <div *ngIf=\"person.Chatdata.eventParam.status==2 \" class=\"eventParam \">通话中</div>\n                    <div *ngIf=\"person.info.type.barringFlag=='1' \" class=\"eventParam \">禁话</div>\n                </div>\n            </div>\n            <div class=\"operation \">\n                <div class=\"state \">\n                    <div *ngIf=\"person.info.type.barringFlag=='1'\">\n                        <div class=\"video\"></div>\n                    </div>\n                    <div *ngIf=\"person.moitor==true\">\n                        <div class=\"message\"></div>\n                    </div>\n                    <div *ngIf=\"person.override==true\">\n                        <div class=\"message \"></div>\n                    </div>\n                    <div class=\"video\" *ngIf=\"changeovershow==true&&person.info.type.devStatus==1 &&judgename(person)==false\" (click)=\"throwover($event,person) \">\n                    </div>\n                </div>\n                <div class=\"operationphone \">\n                    <div class=\"vod\" (click)=\"vod($event) \" *ngIf=\"personal&&personsetting.vod\"></div>\n                    <div class=\"video\" (click)=\"video($event) \" *ngIf=\"personal&&personsetting.videoCall\"></div>\n                    <div class=\"phone\" (click)=\"phone($event) \" *ngIf=\"personal&&personsetting.audioCall\"></div>\n                    <div class=\"message\" (click)=\"messagesend($event) \" *ngIf=\"personal&&personsetting.message\"></div>\n                    <div class=\"video\" (click)=\"equipment($event) \" *ngIf=\"equipmenttype&&personsetting.videoCall \"></div>\n                </div>\n            </div>\n        </div>\n        <div class=\"parameterbox \" [style.display]=\"tabs==2 ? 'block' : 'none' \">\n            <div class=\"parameter \" *ngIf=\"dataList \">\n                <div *ngFor=\"let data of dataList; let j=index\">\n                    <div class=\"paramebox\">\n                        <div class=\"paramealarm\" [ngClass]=\"data.alarm==0 ? 'colorgreen' : 'colorred' \">&nbsp;{{data.value}}</div>\n                        <div class=\"paramename\">&nbsp;&nbsp;&nbsp;{{data.name}}</div>\n                        <div class=\"parame\">{{data.unit}}&nbsp;&nbsp;&nbsp;</div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"timer\">\n                {{dataTime}}\n            </div>\n        </div>\n    </div>\n</div>","import { Component, OnInit ,Input,EventEmitter,Output} from '@angular/core';\n\n@Component({\n  selector: 'app-equipmentframe',\n  templateUrl: './equipmentframe.component.html',\n  styleUrls: ['./equipmentframe.component.less']\n})\nexport class EquipmentframeComponent implements OnInit {\n  @Input() equipment: any ;\n\n  @Output() private outer = new EventEmitter<any>();\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n  equipmentsend(){\n    // this.equipment.groupID\n    let data = {\n      planting: this.equipment.groupID,\n    };\n    this.outer.emit(data);\n  }\n  broadcastsend(){\n\n  }\n}\n","<div class=\"equipment\" [ngClass]=\"equipment.activeshow == true ? 'equipmentactive' : ''\">\n    <div class=\"user\">\n        <div class=\"userstatus\">\n            <div class=\"infoimg\" *ngIf=\"equipment.deviceStatus == 0\">\n                <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"equipment.deviceType == 1\" />\n                <img src=\"assets/img/广播_01.png\" alt=\"\" *ngIf=\"equipment.deviceType == 2\" />\n            </div>\n            <div class=\"buleStatus\" *ngIf=\"equipment.deviceStatus== 1\">\n                <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"equipment.deviceType == 1\" />\n                <img src=\"assets/img/广播_01.png\" alt=\"\" *ngIf=\"equipment.deviceType == 2\" />\n            </div>\n        </div>\n        <div class=\"userName\">\n            {{ equipment.deviceName }}\n        </div>\n        <div class=\"state\">\n            <div *ngIf=\"equipment.deviceStatus == 0\" class=\"offline\">\n                离线\n            </div>\n            <div *ngIf=\"equipment.deviceStatus == 1\" class=\"online\">\n                在线\n            </div>\n        </div>\n    </div>\n    <div class=\"telephone\"></div>\n    <div class=\"operation\">\n        <div class=\"video\" (click)=\"equipmentsend()\" *ngIf=\"equipment.deviceType == 1\"></div>\n        <div class=\"broadcast\" (click)=\"broadcastsend()\" *ngIf=\"equipment.deviceType == 2\"></div>\n    </div>\n</div>","import {\n  Component,\n  ElementRef,\n  HostListener,\n  Input,\n  OnInit,\n  QueryList,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n  EventEmitter,\n  Output,\n} from '@angular/core';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { OverallService } from '../common/overall.service';\nimport { Map } from 'ol';\nimport View from 'ol/View';\n// @ts-ignore\nimport olPlot from 'ol-plot';\n\nimport Feature from 'ol/Feature';\nimport Overlay from 'ol/Overlay';\nimport { boundingExtent, getCenter } from 'ol/extent';\nimport Circle from 'ol/geom/Circle';\nimport LineString from 'ol/geom/LineString';\nimport Point from 'ol/geom/Point';\nimport Polygon from 'ol/geom/Polygon';\nimport Draw from 'ol/interaction/Draw';\nimport LayerGroup from 'ol/layer/Group';\nimport TileLayer from 'ol/layer/Tile';\nimport VectorLayer from 'ol/layer/Vector';\nimport { fromLonLat, transform } from 'ol/proj';\nimport VectorSource from 'ol/source/Vector';\nimport XYZ from 'ol/source/XYZ';\nimport CircleStyle from 'ol/style/Circle';\nimport Fill from 'ol/style/Fill';\nimport Icon from 'ol/style/Icon';\nimport Stroke from 'ol/style/Stroke';\nimport Style from 'ol/style/Style';\nimport Text from 'ol/style/Text';\nimport { ResourceService } from '../protocol/resource/resource.service';\n\nimport { state } from '../protocol/rtc/icstDefines';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { WebService } from '../protocol/rtc/web.service';\ndeclare const AMap: any;\nexport enum GeometryLayout {\n  XY = 'XY',\n  XYZ = 'XYZ',\n  XYM = 'XYM',\n  XYZM = 'XYZM',\n}\nexport enum OverlayPositioning {\n  BOTTOM_LEFT = 'bottom-left',\n  BOTTOM_CENTER = 'bottom-center',\n  BOTTOM_RIGHT = 'bottom-right',\n  CENTER_LEFT = 'center-left',\n  CENTER_CENTER = 'center-center',\n  CENTER_RIGHT = 'center-right',\n  TOP_LEFT = 'top-left',\n  TOP_CENTER = 'top-center',\n  TOP_RIGHT = 'top-right',\n}\nexport enum GeometryType {\n  POINT = 'Point',\n  LINE_STRING = 'LineString', //线串\n  LINEAR_RING = 'LinearRing',\n  POLYGON = 'Polygon', //多边形\n  MULTI_POINT = 'MultiPoint',\n  MULTI_LINE_STRING = 'MultiLineString',\n  MULTI_POLYGON = 'MultiPolygon',\n  GEOMETRY_COLLECTION = 'GeometryCollection',\n  CIRCLE = 'Circle', //圆形\n}\n@Component({\n  selector: 'app-map',\n  templateUrl: './map.component.html',\n  styleUrls: ['./map.component.less'],\n})\nexport class MapComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() featureArray = new Array(); //标识队列\n  @Input() broadside: any;\n  constructor(\n    public datastact: ResourceService,\n    public el: ElementRef,\n    private rx: RxService,\n    private ws: WebService,\n    private message: NzMessageService,\n    private sendService: OverallService,\n  ) {}\n  declare $: any;\n  declare AMap: any;\n  operationclass = 'sidebarbox';\n  mapserver = 'https://172.16.133.101:8091';\n  // mapserver = 'http://192.168.1.201:91';\n  province = 'beijing';\n  city = 'beijing';\n  cityName = '北京市';\n  map: any; //地图初始化\n  layersArray = new Array(); //图层队列\n  drawSource = new VectorSource({}); //画图资源\n  vectorSourceTrajectory = new VectorSource({}); //轨迹标识资源\n  vectorLayerTrajectory = new VectorLayer({\n    source: this.vectorSourceTrajectory,\n  }); //创建轨迹标识资源矢量层\n  //用户标识资源\n  vectorSource: any;\n  //创建用户标识资源矢量层\n  vectorLayer: any;\n  //HTML与QML交互的桥\n  channel = null;\n  bridge = null;\n  popupoverlay: any; //弹出图层\n  popupstaticol: any; //静态菜单图层\n  boxselectol: any; //框选菜单图层\n  draw: any = null; //框选画图对象\n  //静态弹出图层\n  modifyoverlay: any;\n  amendoverlay: any;\n  deviceoverlay: any;\n  addormodify: any; //弹出框是创建还是修改 true：创建 false：修改\n  //静态图层激活标识 激活索引\n  staticsign = false;\n  staticindex = -1;\n  //点击时激活的图层索引 激活对象\n  activeindex = -1;\n  activefeature: any;\n  //当前选中ID、Name\n  activeid: any;\n  activecord: any;\n  //趋势激活标识 激活索引 索引好像用不上\n  trendsign: any;\n  trendindex: any;\n  //圈选用户list\n  userlist: any;\n  //态势部分\n  plot: any;\n  plotDraw: any;\n  plotEdit: any;\n  drawOverlay: any;\n  drawStyle: any;\n  plotsign: any;\n  plotindex: any;\n  plotid = 0; //只是为了区分军标\n  textplotol: any; //文字标绘弹出窗口的图层\n  plotdelol: any;\n  GPSuserdelol: any;\n  equipmentdelol:any\n  raildelol: any; //电子围栏\n  // 静态图标结构\n  id: any;\n  inf: any;\n  featurestact: any; //获取点击的类型\n  //定义地图服务URL\n  roadlabel = {\n    url:\n      this.mapserver +\n      '/' +\n      this.province +\n      '/' +\n      this.city +\n      '/m/{z}/{x}/{y}.png',\n  };\n  posture: boolean = false; //态势标绘显示\n  labeltpye: boolean = false;\n  control: boolean = false;\n  popcircle: boolean = false;\n  track: boolean = false; //查询轨迹\n  controllist = [\n    { name: 'Android', show: true },\n    { name: 'IPC', show: true },\n    { name: '单兵', show: true },\n    { name: '消防栓', show: true },\n    { name: '水源', show: true },\n    { name: '消防单位', show: true },\n    { name: '重点机构', show: true },\n  ];\n  add: number = -1;\n  selcet: number = -1;\n  person: number = -1;\n  coverage: number = -1;\n  rail: boolean = false;\n  starttime: any = null;\n  endtime: any = null;\n  radiovalid = '1';\n  areaExclude = '1';\n  railname = '';\n  timeExclude = true;\n  userExclude = true;\n  timerlist: any[] = [];\n  upload: any[] = [];\n  astrictuserlist: any[] = [];\n  railtype = 1;\n  featurerail: any;\n  locality: any = '0'; //本地围栏\n  maptype = 'openlayermap'; //gaodemap  openlayermap\n  addlabel: boolean = false;\n  mouseTool: any;\n  overlays: any = [];\n  cust: any;\n  userName: any;\n  datatimer: any = null;\n  startTime: any = '';\n  endTime: any = '';\n  trackshow = false;\n  equipmentbox = false;\n  equipment:any=''\n  equipmentshow = true;\n  equipmentdata:any;\n  rawData: any;\n  arr: any = []; //渲染列表\n  userListtypes: any;\n  shows: boolean = true;\n  gpsuser: any;\n  personal: boolean = true;\n  changeovershow = false;\n  tracklist: any = [];\n  mapsetting: any;\n  @ViewChildren('unclick') unclick?: QueryList<ElementRef>;\n  @ViewChildren('nclick') nclick?: QueryList<ElementRef>;\n  @ViewChildren('circle') circle?: QueryList<ElementRef>;\n  @ViewChildren('checkall') checkall?: QueryList<ElementRef>;\n  @ViewChild('popupplot') popupplot: any;\n  @ViewChild('myBox2') myBox2: any;\n  @ViewChild('GPSuser') GPSuser: any;\n  @ViewChild('equipmentframe') equipmentframe: any;\n  @ViewChild('plotdel') plotdel: any;\n  @ViewChild('popupplottext') popupplottext: any;\n  @ViewChild('popupplotconfirm') popupplotconfirm: any;\n  @ViewChild('popupplotcancel') popupplotcancel: any;\n  @ViewChild('mdfcontainer') mdfcontainer: any;\n  @ViewChild('devicecontainer') devicecontainer: any;\n  @ViewChild('deviceamend') deviceamend: any;\n  @ViewChild('statictips') statictips: any;\n  @ViewChild('textname') textname: any;\n  @ViewChild('textdevicename') textdevicename: any;\n  @ViewChild('amendtextname') amendtextname: any;\n  @ViewChild('textinf') textinf: any;\n  @ViewChild('textdeviceinf') textdeviceinf: any;\n  @ViewChild('amendtextinf') amendtextinf: any;\n  @ViewChild('textID') textID: any;\n  @ViewChild('amendtextID') amendtextID: any;\n  @ViewChild('btnok') btnok: any;\n  @ViewChild('devicebtnok') devicebtnok: any;\n  @ViewChild('amenddevice') amenddevice: any;\n  @ViewChild('btncancel') btncancel: any;\n  @ViewChild('devicecancel') devicecancel: any;\n  @ViewChild('amenddelete') amenddelete: any;\n  @ViewChild('amendcancel') amendcancel: any;\n  @ViewChild('modificationname') modificationname: any;\n  @ViewChild('modificationinf') modificationinf: any;\n  @ViewChild('modification') modification: any;\n  @ViewChild('delete') delete: any;\n  @ViewChild('electronicrail') electronicrail: any;\n  @ViewChild('cancelrail') cancelrail: any;\n  @ViewChild('confirmrail') confirmrail: any;\n  @ViewChild('modifyfence') modifyfence: any;\n  @ViewChild('delfence') delfence: any;\n\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        if (this.map) {\n          setTimeout(() => {\n            this.map.updateSize();\n          }, 1);\n        }\n        this.operationclass = 'sidebarbox';\n      } else if (this.broadside == true) {\n        if (this.map) {\n          setTimeout(() => {\n            this.map.updateSize();\n          }, 1);\n        }\n        this.operationclass = 'sidebar';\n      }\n    }\n  }\n  ngOnInit(): void {\n     this.mapsetting = this.datastact.module.map;\n    if (this.maptype == 'openlayermap') {\n      this.map = new Map({\n        target: 'map', //对象指向\n        layers: [\n          new LayerGroup({\n            layers: [\n              new TileLayer({\n                source: new XYZ({\n                  url: this.roadlabel.url,\n                  tilePixelRatio: 1,\n                  minZoom: 9,\n                  maxZoom: 18,\n                }),\n              }),\n              new VectorLayer({\n                source: new VectorSource({ wrapX: false }),\n              }),\n            ],\n          }),\n        ],\n        view: new View({\n          //视图\n          center: fromLonLat([116.305277, 40.045672]), //地图中心\n          zoom: 15, //缩放层级\n          minZoom: 9,\n          maxZoom: 18,\n        }),\n      });\n      // 创建图层显示图标\n      this.initLayersArray(0);\n      this.initLayersArray(1);\n      this.initLayersArray(2);\n      this.initLayersArray(3); //消防栓\n      this.initLayersArray(4); //水源\n      this.initLayersArray(5); //消防单位\n      this.initLayersArray(6); //重点机构\n      this.initLayersArray(7); //电子围栏\n      this.initLayersArray(8); //超出的\n      this.initLayersArray(9); //超出的\n      this.initLayersArray(10); //GPS数据\n      this.initLayersArray(11); //轨迹\n      this.initLayersArray(12); //设备//广播\n      this.initLayersArray(13);\n      this.initLayersArray(14);\n      this.initLayersArray(15);\n      this.initLayersArray(16);\n      this.initLayersArray(17);\n      this.initLayersArray(18);\n      this.initLayersArray(19); //设备\n      this.initLayersArray(20); //广播\n      // this.mapsetting = this.datastact.module.map;\n      if(this.mapsetting.mark){\n        this.initialize();\n      }\n\n      if(this.mapsetting.person){\n        this.inituser();\n      }\n      this.btnAddListen();\n      this.initDraw();\n      // this.initialize();\n      // this.inituser();\n      this.rx.getElectronicFence();\n    } else if (this.maptype == 'gaodemap') {\n      let that = this;\n      setTimeout(() => {\n        that.map = new AMap.Map('map', {\n          resizeEnable: true,\n          zoom: 15, // 级别\n          center: [116.305277, 40.045672], // 中心点坐标\n        });\n        that.map.on('complete', () => {\n          // console.log('地图加载完成');\n          // 地图图块加载完成后触发\n          that.gdinitialize();\n        });\n        this.mouseTool = new AMap.MouseTool(this.map);\n\n        that.map.on('click', (ev: any) => {\n          // console.log(ev);\n          // console.log(ev.target.type);\n          if (this.addlabel == true) {\n            if (\n              this.add == 7 ||\n              this.add == 8 ||\n              this.add == 9 ||\n              this.add == 10\n            ) {\n              // console.log('态势');\n              this.addnewMarker(this.add, ev);\n            } else if (\n              this.add == 3 ||\n              this.add == 4 ||\n              this.add == 5 ||\n              this.add == 6\n            ) {\n              // console.log('静态');\n              this.addnewMarker(this.add, ev);\n            } else if (this.add == 13) {\n              // console.log('文本');\n            }\n          }\n          // this.electronicrail.nativeElement.style.display = 'none';\n          this.statictips.nativeElement.style.display = 'none';\n          // 触发事件的对象\n          var target = ev.target;\n          // console.log(target);\n          // 触发事件的地理坐标，AMap.LngLat 类型\n          var lnglat = ev.lnglat;\n          // 触发事件的像素坐标，AMap.Pixel 类型\n          var pixel = ev.pixel;\n          // 触发事件类型\n          var type = ev.type;\n        });\n      }, 100);\n    }\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      // console.log(nav);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let cmdBody = nav.cmdBody;\n      let resultdata = nav.resultData;\n      switch (respcmdid) {\n        case state.OWO_CMD_MAP_GPS_GET + 1: {\n          // console.log(nav);\n          this.layersArray[10].getSource().clear();\n          for (let i = 0; i < resultdata.memGpsList.length; i++) {\n            let mem = resultdata.memGpsList[i];\n            this.DrawTrajectory(mem.longitude, mem.latitude, mem.userName);\n          }\n          break;\n        }\n        case state.OWO_CMD_MAP_STATIC_POINT_DEL+1:{\n          // console.log(nav);\n          break;\n        }\n        case state.OWO_CMD_MAP_ELECTRIC_FENCE_GET + 1: {\n          this.layersArray[7].getSource().clear();\n          if (resultdata.fenceList.length > 0) {\n            // console.log(nav);\n            this.addfence(resultdata.fenceList);\n          }\n          break;\n        }\n        case state.OWO_CMD_MAP_GPS_TRACK + 1: {\n          // console.log(nav);\n          // this.layersArray[8].getSource().clear();\n          if (resultdata.gpsList.length > 0) {\n            this.gpschange(resultdata.gpsList);\n          }\n          break;\n        }\n        case state.OWO_CMD_MAP_ELECTRIC_FENCE_MODIFY + 1: {\n          // console.log(nav);\n          break;\n        }\n        case state.OWO_CMD_MAP_ELECTRIC_FENCE_ADD + 1: {\n          // console.log(nav);\n          break;\n        }\n        default:\n          break;\n      }\n    });\n    if (this.datastact.userlist != '') {\n      this.rawData = this.datastact.userlist;\n      this.chi(this.rawData.childs);\n      this.userListtypes = this.datastact.userType;\n      this.merge();\n    }\n    if (this.datastact.equipmentlist != '') {\n      this.equipmentdata = this.datastact.equipmentlist;\n\n    }\n  }\n  getElectron() {\n    this.rx.getElectronicFence();\n  }\n  hqall() {\n    let data = this.map.getLabelzIndex();\n    // console.log(data);\n  }\n  //动态、静态图标图层初始化\n  initLayersArray(index: any) {\n    //用户标识资源\n    this.vectorSource = new VectorSource({});\n    // //创建用户标识资源矢量层\n    this.vectorLayer = new VectorLayer({\n      source: this.vectorSource,\n    });\n    this.map.addLayer(this.vectorLayer);\n    this.layersArray.push(this.vectorLayer);\n  }\n  // 初始化添加图标\n  initialize() {\n    let tath = this;\n    for (let i = 0; i < tath.featureArray.length; i++) {\n      let featurearray = tath.featureArray[i];\n      let LonLats = this.parseLonLatToPx(\n        featurearray.longitude - 0,\n        featurearray.latitude - 0\n      );\n      let LonLat = [LonLats.lon, LonLats.lat];\n      var iconFeature = new Feature({\n        geometry: new Point(LonLat, GeometryLayout.XY),\n        name: featurearray.name,\n      });\n      let type = featurearray.type - 0 + 2;\n      iconFeature.setStyle(tath.createLabelStyle(iconFeature, type)); //设置要素样式\n      iconFeature.setId(featurearray.ID);\n      //将图标特性添加进矢量中\n      this.layersArray[type].getSource().addFeature(iconFeature);\n    }\n  }\n  //弹出框、菜单图层初始化\n  ngAfterViewInit(): void {\n    if (this.maptype == 'openlayermap') {\n      this.plotdelol = new Overlay({\n        element: this.myBox2.nativeElement,\n        autoPan: true,\n        autoPanAnimation: {\n          duration: 250,\n        },\n      });\n      this.GPSuserdelol = new Overlay({\n        element: this.GPSuser.nativeElement,\n        autoPan: true,\n        autoPanAnimation: {\n          duration: 250,\n        },\n      });\n      this.map.addOverlay(this.GPSuserdelol);\n      this.equipmentdelol = new Overlay({\n        element: this.equipmentframe.nativeElement,\n        autoPan: true,\n        autoPanAnimation: {\n          duration: 250,\n        },\n      });\n      this.map.addOverlay(this.equipmentdelol);\n      this.raildelol = new Overlay({\n        element: this.electronicrail.nativeElement,\n        autoPan: true,\n        autoPanAnimation: {\n          duration: 250,\n        },\n      });\n      this.map.addOverlay(this.raildelol);\n      this.textplotol = new Overlay({\n        element: this.popupplot.nativeElement,\n        autoPan: true,\n        autoPanAnimation: {\n          duration: 250,\n        },\n      });\n      this.map.addOverlay(this.textplotol);\n      this.modifyoverlay = new Overlay({\n        element: this.mdfcontainer.nativeElement,\n        autoPan: true,\n        autoPanAnimation: {\n          duration: 250,\n        },\n      });\n      this.map.addOverlay(this.modifyoverlay);\n      this.deviceoverlay = new Overlay({\n        element: this.devicecontainer.nativeElement,\n        autoPan: true,\n        autoPanAnimation: {\n          duration: 250,\n        },\n      });\n      this.map.addOverlay(this.deviceoverlay);\n      \n      this.amendoverlay = new Overlay({\n        element: this.deviceamend.nativeElement,\n        autoPan: true,\n        autoPanAnimation: {\n          duration: 250,\n        },\n      });\n      this.map.addOverlay(this.amendoverlay);\n      this.popupstaticol = new Overlay({\n        element: this.statictips.nativeElement,\n        positioning: OverlayPositioning.CENTER_CENTER,\n      });\n      this.popupstaticol.setMap(this.map);\n      this.map.addOverlay(this.popupstaticol);\n      var btnok = this.btnok.nativeElement;\n      btnok.onclick = () => {\n        let name = this.textname.nativeElement.value;\n        if (name === '' || name === ' ') {\n          this.vectorSource.removeFeature(this.activefeature);\n          this.modifyoverlay.setPosition(undefined);\n        } else {\n          let inf = this.textinf.nativeElement.value;\n          let cd = this.prasePxtoLonLat(this.activecord);\n          let lon = cd[0].toFixed(6);\n          let lat = cd[1].toFixed(6);\n          this.activefeature.getStyle().getText().setText(name);\n          let id = this.getUUid();\n          this.modifyoverlay.setPosition(undefined);\n          let type = (this.add - 2).toString();\n          this.rx.staticLabelAdd(id, type, name, lon, lat, inf,'0');\n          this.activefeature.changed();\n        }\n        this.textname.nativeElement.value = '';\n        this.textinf.nativeElement.value = '';\n        this.activefeature = undefined;\n      };\n      var devicebtnok = this.devicebtnok.nativeElement;\n      devicebtnok.onclick = () => {\n        let name = this.textdevicename.nativeElement.value;\n        if (name === '' || name === ' ') {\n          this.vectorSource.removeFeature(this.activefeature);\n          this.deviceoverlay.setPosition(undefined);\n        } else {\n          let oid = this.textID.nativeElement.value;\n          let inf = this.textdeviceinf.nativeElement.value;\n          let cd = this.prasePxtoLonLat(this.activecord);\n          let lon = cd[0].toFixed(6);\n          let lat = cd[1].toFixed(6);\n          this.activefeature.getStyle().getText().setText(name);\n          let id = this.getUUid();\n          let type = (this.add - 2).toString();\n          this.deviceoverlay.setPosition(undefined);\n          this.rx.staticLabelAdd(id, type, name, lon, lat, inf,oid);\n          this.activefeature.changed();\n        }\n        this.textdevicename.nativeElement.value = '';\n        this.textdeviceinf.nativeElement.value = '';\n        this.textID.nativeElement.value = '';\n        this.activefeature = undefined;\n      };\n      this.popupplotconfirm.nativeElement.onclick = () => {\n        let name = this.popupplottext.nativeElement.value;\n        this.addTextPlot(name);\n        this.textplotol.setPosition(undefined);\n        this.popupplottext.nativeElement.value = '';\n      };\n      this.popupplotcancel.nativeElement.onclick = () => {\n        this.popupplottext.nativeElement.value = '';\n        this.textplotol.setPosition(undefined);\n      };\n      this.btncancel.nativeElement.onclick = () => {\n        this.vectorSource.removeFeature(this.activefeature);\n        this.modifyoverlay.setPosition(undefined);\n        this.activefeature = undefined;\n      };\n      this.devicecancel.nativeElement.onclick = () => {\n        this.vectorSource.removeFeature(this.activefeature);\n        this.deviceoverlay.setPosition(undefined);\n        this.activefeature = undefined;\n      };\n    } else if (this.maptype == 'gaodemap') {\n      this.electronicrail.nativeElement.style.display = 'none';\n      this.mdfcontainer.nativeElement.style.display = 'none';\n      this.devicecontainer.nativeElement.style.display = 'none';\n      this.deviceamend.nativeElement.style.display = 'none';\n      this.statictips.nativeElement.style.display = 'none';\n      this.popupplot.nativeElement.style.display = 'none';\n      this.myBox2.nativeElement.style.display = 'none';\n      this.GPSuser.nativeElement.style.display = 'none';\n      this.equipmentframe.nativeElement.style.display = 'none';\n    }\n  }\n\n  //按钮、地图绑定事件\n  btnAddListen() {\n    this.map.on('click', (evt: any) => {\n      var coordinate = evt.coordinate;\n      var pixel = this.map.getEventPixel(evt.originalEvent);\n      var feature = this.map.forEachFeatureAtPixel(\n        pixel,\n        (feature: any, layer: any) => {\n          return feature;\n        }\n      );\n      var plotdel = this.plotdel.nativeElement;\n      plotdel.onclick = () => {\n        var layer = this.map.forEachLayerAtPixel(pixel, (layer: any) => {\n          return layer;\n        });\n        layer.getSource().removeFeature(feature);\n        // this.drawOverlay.getSource().removeFeature(feature);\n        this.plotdelol.setPosition(undefined);\n        return;\n      };\n      if (feature !== undefined) {\n        var layer = this.map.forEachLayerAtPixel(pixel, (layer: any) => {\n          return layer;\n        });\n\n        let index: any = -1;\n        for (var i = 0; i < this.layersArray.length; i++) {\n          if (layer === this.layersArray[i]) {\n            index = i;\n          }\n        }\n        switch (index != -1) {\n          case index >= 0 && index <= 2: {\n            this.GPSuserdelol.setPosition(undefined);\n            this.equipmentdelol.setPosition(undefined);\n            this.plotdelol.setPosition(undefined);\n            this.popupstaticol.setPosition(undefined);\n            this.activeid = feature.getId();\n            break;\n          }\n          case index >= 3 && index <= 6: {\n            this.activeid = feature.getId();\n            for (let i = 0; i < this.featureArray.length; i++) {\n              if (this.featureArray[i].ID == this.activeid) {\n                this.modificationname.nativeElement.value =\n                  this.featureArray[i].name;\n                this.modificationinf.nativeElement.value =\n                  this.featureArray[i].describe;\n                this.featurestact = this.featureArray[i];\n              }\n            }\n            this.modifyoverlay.setPosition(undefined);\n            this.textplotol.setPosition(undefined);\n            this.raildelol.setPosition(undefined);\n            this.GPSuserdelol.setPosition(undefined);\n            this.equipmentdelol.setPosition(undefined);\n            this.plotdelol.setPosition(undefined);\n            this.amendoverlay.setPosition(undefined);\n            this.popupstaticol.setPosition(coordinate);\n            this.modification.nativeElement.onclick = () => {\n              // 修改标注\n              let name = this.modificationname.nativeElement.value;\n              let describes = this.modificationinf.nativeElement.value;\n              feature.getStyle().getText().setText(name);\n              let ev = this.featurestact;\n              this.rx.staticLabelModification(\n                ev.ID,\n                ev.type,\n                name,\n                ev.longitude,\n                ev.latitude,\n                describes,\n                ''\n              );\n              for (let i = 0; i < this.featureArray.length; i++) {\n                if (this.featureArray[i].ID == this.activeid) {\n                  this.featureArray[i].name = name;\n                  this.featureArray[i].describe = describes;\n                }\n              }\n              this.layersArray[index].getSource().changed(); //修改完需更新视图\n              this.popupstaticol.setPosition(undefined);\n            };\n            this.delete.nativeElement.onclick = () => {\n              this.layersArray[index].getSource().removeFeature(feature);\n              this.rx.staticLabelDelete(this.activeid, (index-2).toString()); //删除标注\n              this.popupstaticol.setPosition(undefined);\n            };\n            break;\n          }\n          case index >= 7 && index <= 9: {\n            this.activeid = feature.getId();\n            let data = feature.get('data');\n            this.modifyoverlay.setPosition(undefined);\n            this.popupstaticol.setPosition(undefined);\n            this.textplotol.setPosition(undefined);\n            this.plotdelol.setPosition(undefined);\n            this.GPSuserdelol.setPosition(undefined);\n            this.equipmentdelol.setPosition(undefined);\n            this.raildelol.setPosition(coordinate);\n            if (data != undefined) {\n              this.railname = data.name;\n              this.radiovalid = data.valid;\n              this.railtype = data.railtype;\n              this.areaExclude = data.areaExclude;\n              this.timeExclude = data.timeExclude ? true : false;\n              this.userExclude = data.userExclude ? true : false;\n              this.timerlist = data.timeList;\n              if (data.locality == '1') {\n                this.locality = '1';\n              } else {\n                this.locality = '0';\n              }\n              this.assignmentuser(data.userList);\n              this.modifyfence.nativeElement.onclick = () => {\n                for (var i = 0; i < this.timerlist.length; i++) {\n                  if (this.timerlist[i].enable == true) {\n                    this.timerlist[i].enable = '1';\n                  } else {\n                    this.timerlist[i].enable = '0';\n                  }\n                }\n                let pointList: any = '';\n                if (data.type == '1' || data.type == '2' || data.type == '4') {\n                  for (var i = 0; i < data.pointList.length; i++) {\n                    if (i == data.pointList.length - 1) {\n                      pointList =\n                        pointList +\n                        data.pointList[i][0] +\n                        ',' +\n                        data.pointList[i][1] +\n                        ';';\n                    } else {\n                      pointList =\n                        pointList +\n                        data.pointList[i][0] +\n                        ',' +\n                        data.pointList[i][1] +\n                        ',';\n                    }\n                  }\n                } else if (data.type == '3') {\n                  pointList = data.pointList[0] + ',' + data.pointList[1] + ';';\n                }\n\n                let parameter: any = {\n                  type: data.type,\n                  ID: data.ID,\n                  name: this.railname,\n                  pointList: pointList,\n                  radius: data.radius,\n                  extendWidth: data.extendWidth,\n                  valid: this.radiovalid,\n                  timeExclude: this.timeExclude ? '1' : '0',\n                  userExclude: this.userExclude ? '1' : '0',\n                  userList: this.getuser(),\n                  timeList: this.timerlist,\n                  areaExclude: this.areaExclude,\n                };\n                this.rx.modifyElectronicFence(parameter);\n                feature.set('data', parameter);\n                this.raildelol.setPosition(undefined);\n                this.emptyrail();\n              };\n              this.delfence.nativeElement.onclick = () => {\n                this.layersArray[7].getSource().removeFeature(feature);\n                this.rx.delElectronicFence(data);\n                this.raildelol.setPosition(undefined);\n                this.emptyrail();\n              };\n            } else {\n              this.locality = '0';\n            }\n\n            this.cancelrail.nativeElement.onclick = () => {\n              this.raildelol.setPosition(undefined);\n            };\n            break;\n          }\n          case index == 10: {\n            this.plotdelol.setPosition(undefined);\n            this.popupstaticol.setPosition(undefined);\n            let username = feature.values_.name;\n            for (let j = 0; j < this.userListtypes.length; j++) {\n              let type: any = this.userListtypes[j];\n              if (username == type.userName) {\n                this.gpsuser = {\n                  info: {\n                    type: type,\n                    userName: username,\n                  },\n                };\n              }\n              this.GPSuserdelol.setPosition(coordinate);\n            }\n            break;\n          }\n          case index >= 19 && index <= 20: {\n            this.activeid = feature.getId();\n            if (this.add == -1) {\n              let oid :any\n              for (let i = 0; i < this.featureArray.length; i++) {\n                if (this.featureArray[i].ID == this.activeid) {\n                  this.featurestact = this.featureArray[i];\n                  oid =  this.featureArray[i].oid\n                }\n              }\n              if(oid){\n                for (let i = 0; i <  this.equipmentdata.deviceList.length; i++) {\n                  if (  this.equipmentdata.deviceList[i].deviceID == oid) {\n                    this.equipment =this.equipmentdata.deviceList[i]\n                  }\n                }\n                this.equipmentdelol.setPosition(coordinate);\n              }\n           \n\n            } else if(this.add >= 19&&this.add <= 20) {\n              for (let i = 0; i < this.featureArray.length; i++) {\n                if (this.featureArray[i].ID == this.activeid) {\n                  this.amendtextname.nativeElement.value =\n                    this.featureArray[i].name;\n                  this.amendtextinf.nativeElement.value =\n                    this.featureArray[i].describe;\n                    this.amendtextID.nativeElement.value =\n                    this.featureArray[i].oid;\n                  this.featurestact = this.featureArray[i];\n                }\n              }\n              this.modifyoverlay.setPosition(undefined);\n              this.textplotol.setPosition(undefined);\n              this.raildelol.setPosition(undefined);\n              this.GPSuserdelol.setPosition(undefined);\n              this.equipmentdelol.setPosition(undefined);\n              this.plotdelol.setPosition(undefined);\n              this.popupstaticol.setPosition(undefined);\n              this.amendoverlay.setPosition(coordinate);\n              this.amenddevice.nativeElement.onclick = () => {\n                // 修改标注\n                let name = this.amendtextname.nativeElement.value;\n                let describes = this.amendtextinf.nativeElement.value;\n                let oid = this.amendtextID.nativeElement.value;\n                feature.getStyle().getText().setText(name);\n                let ev = this.featurestact;\n                this.rx.staticLabelModification(\n                  ev.ID,\n                  ev.type,\n                  name,\n                  ev.longitude,\n                  ev.latitude,\n                  describes,\n                  oid\n                );\n                for (let i = 0; i < this.featureArray.length; i++) {\n                  if (this.featureArray[i].ID == this.activeid) {\n                    this.featureArray[i].name = name;\n                    this.featureArray[i].describe = describes;\n                    this.featureArray[i].oid = oid;\n                  }\n                }\n                this.layersArray[index].getSource().changed(); //修改完需更新视图\n                this.popupstaticol.setPosition(undefined);\n              };\n              this.amenddelete.nativeElement.onclick = () => {\n                let type:number = this.add - 0;\n                this.layersArray[type].getSource().removeFeature(feature);\n                this.rx.staticLabelDelete(this.activeid, (type-2).toString()); //删除标注\n                this.amendoverlay.setPosition(undefined);\n              };\n              this.amendcancel.nativeElement.onclick = () => {\n                this.amendoverlay.setPosition(undefined);\n              };\n            }\n            break;\n          }\n          default:\n            break;\n        }\n        if (this.plotsign == false && index === -1) {\n          if (this.add >= 14 && this.add <= 17) {\n            this.popupstaticol.setPosition(undefined);\n            this.textplotol.setPosition(undefined);\n            this.plotdelol.setPosition(undefined);\n            return;\n          } else {\n            //标绘图层\n            this.popupstaticol.setPosition(undefined);\n            this.textplotol.setPosition(undefined);\n            this.activefeature = feature;\n            this.plotdelol.setPosition(coordinate);\n            return;\n          }\n        }\n      } else {\n        this.raildelol.setPosition(undefined);\n        this.modifyoverlay.setPosition(undefined);\n        this.popupstaticol.setPosition(undefined);\n        this.textplotol.setPosition(undefined);\n        this.plotdelol.setPosition(undefined);\n        this.GPSuserdelol.setPosition(undefined);\n        this.amendoverlay.setPosition(undefined);\n        this.equipmentdelol.setPosition(undefined);\n        this.plot.plotEdit.deactivate();\n        this.emptyrail();\n        if (this.add == -1) {\n          return;\n        }\n        if (this.add >= 7 && this.add <= 10) {\n          // 标绘图标\n          this.addPlotFeature(coordinate);\n        } else if (this.add >= 3 && this.add <= 6) {\n          this.activecord = coordinate;\n          this.addFeatureStatic(coordinate);\n          this.modifyoverlay.setPosition(coordinate);\n        } else if (this.add == 13) {\n          this.activecord = coordinate;\n          this.textplotol.setPosition(coordinate);\n        } else if (this.add == 16) {\n          this.activecord = coordinate;\n          this.raildelol.setPosition(coordinate);\n        } else if (this.add >= 19 && this.add <= 20) {\n          this.activecord = coordinate;\n          this.addDeviceFeature(coordinate);\n          this.deviceoverlay.setPosition(coordinate);\n        }\n      }\n    });\n  }\n  // 态势标绘切换显示\n  situation() {\n    this.posture = !this.posture;\n    this.labeltpye = false;\n    this.rail = false;\n    this.track = false;\n    this.add = -1;\n    if (this.maptype == 'gaodemap') {\n      this.mouseTool.close();\n    }\n    if (this.selcet == 2) {\n      this.selcet = -1;\n    } else {\n      this.selcet = 2;\n    }\n  }\n  // 静态标注切换显示\n  staticlabel() {\n    this.labeltpye = !this.labeltpye;\n    this.posture = false;\n    this.rail = false;\n    this.track = false;\n    this.add = -1;\n    if (this.maptype == 'gaodemap') {\n      this.mouseTool.close();\n    }\n    if (this.selcet == 3) {\n      this.selcet = -1;\n    } else {\n      this.selcet = 3;\n    }\n  }\n  // 查看轨迹\n  examinetrack() {\n    this.track = !this.track;\n    this.posture = false;\n    this.rail = false;\n    this.labeltpye = false;\n    this.add = -1;\n    if (this.selcet == 4) {\n      this.selcet = -1;\n    } else {\n      this.selcet = 4;\n    }\n  }\n\n  electronic() {\n    this.rail = !this.rail;\n    this.posture = false;\n    this.labeltpye = false;\n    this.track = false;\n    this.add = -1;\n    if (this.selcet == 1) {\n      this.selcet = -1;\n    } else {\n      this.selcet = 1;\n    }\n  }\n  andrs(ev: any, type: number) {\n    ev.show = !ev.show;\n    if (this.maptype == 'gaodemap') {\n      if (ev.show) {\n        let data = this.map.getAllOverlays('marker');\n        for (let i = 0; i < data.length; i++) {\n          if (data[i].type == type) {\n            data[i].show();\n          }\n        }\n      } else {\n        let data = this.map.getAllOverlays('marker');\n        for (let i = 0; i < data.length; i++) {\n          if (data[i].type == type) {\n            data[i].hide();\n          }\n        }\n      }\n    } else if (this.maptype == 'openlayermap') {\n      if (ev.show) {\n        this.map.addLayer(this.layersArray[type]);\n      } else {\n        this.map.removeLayer(this.layersArray[type]);\n      }\n    }\n  }\n  // 设置静态标注\n  addicon(ev: any) {\n    if (this.maptype == 'gaodemap') {\n      if (ev == this.add) {\n        this.add = -1;\n        this.addlabel = false;\n      } else {\n        this.add = ev;\n        this.addlabel = true;\n      }\n    } else if (this.maptype == 'openlayermap') {\n      this.plot.plotEdit.deactivate();\n      this.plotsign = false;\n      if (ev == this.add) {\n        this.add = -1;\n      } else {\n        this.add = ev;\n      }\n    }\n  }\n  // 地图放大\n  zoomout() {\n    if (this.maptype == 'openlayermap') {\n      let view = this.map.getView();\n      let zoom = view.getZoom();\n      view.setZoom(zoom - 1);\n    } else if (this.maptype == 'gaodemap') {\n      this.map.zoomIn();\n    }\n  }\n  // 地图缩小\n  zoomin() {\n    if (this.maptype == 'openlayermap') {\n      let view = this.map.getView();\n      let zoom = view.getZoom();\n      view.setZoom(zoom + 1);\n    } else if (this.maptype == 'gaodemap') {\n      this.map.zoomOut();\n    }\n  }\n\n  //动态、静态图层可见控制\n  vsbCtrLayers(index: any, isvisible: any) {\n    if (isvisible) {\n      this.map.addLayer(this.layersArray[index]);\n    } else {\n      this.map.removeLayer(this.layersArray[index]);\n    }\n  }\n  //feature样式控制\n  createLabelStyle(feature: any, index: any) {\n    let imgurl;\n    switch (index) {\n      case 0:\n        imgurl = '../../assets/img/type_android_red.png';\n        break;\n      case 1:\n        imgurl = '../../assets/img/type_IPC_red.png';\n        break;\n      case 2:\n        imgurl = '../../assets/img/type_DB_red.png';\n        break;\n      case 3:\n        imgurl = '../../assets/img/firehydrant_red.png';\n        break;\n      case 4:\n        imgurl = '../../assets/img/sourcewater_red.png';\n        break;\n      case 5:\n        imgurl = '../../assets/img/firefightingagency_red.png';\n        break;\n      case 6:\n        imgurl = '../../assets/img/VIPunit_red.png';\n        break;\n      case 7:\n        imgurl = '../../assets/img/car_red.png';\n        break;\n      case 8:\n        imgurl = '../../assets/img/dangerousgoods_red.png';\n        break;\n      case 9:\n        imgurl = '../../assets/img/worker_red.png';\n        break;\n      case 10:\n        imgurl = '../../assets/img/medicament_red.png';\n        break;\n      case 11:\n        break;\n      case 19:\n        imgurl = '../../assets/img/camera32_blue.png';\n        break;\n      case 20:\n        imgurl = '../../assets/img/speaker32_blue.png';\n        break;\n      default:\n        break;\n    }\n    //返回一个样式\n    return new Style({\n      //把点的样式换成ICON图标\n      image: new Icon({\n        opacity: 0.75,\n        src: imgurl,\n      }),\n      text: new Text({\n        font: '16px sans-serif',\n        text: feature.get('name'),\n        offsetX: 20,\n        offsetY: 10,\n        textAlign: 'left',\n      }),\n    });\n  }\n  //初始化绘制\n  initDraw() {\n    // 设置标绘符号显示的默认样式\n    var stroke = new Stroke({\n      color: '#FF0000',\n      width: 2,\n    });\n    var fill = new Fill({ color: 'rgba(0,255,0,0.4)' });\n    var image = new CircleStyle({ fill: fill, stroke: stroke, radius: 8 });\n    this.drawStyle = new Style({\n      image: image,\n      fill: fill,\n      stroke: stroke,\n    });\n    // 绘制好的标绘符号，添加到FeatureOverlay显示。\n    this.drawOverlay = new VectorLayer({\n      source: new VectorSource(),\n    });\n    this.drawOverlay.setStyle(this.drawStyle);\n    this.drawOverlay.setMap(this.map);\n    this.plot = new olPlot(this.map, {\n      zoomToExtent: true,\n    });\n    // 初始化标绘编辑工具\n    // 初始化标绘绘制plot工具，添加绘制结束事件响应\n    this.plot.plotDraw.on('drawEnd', (event: any) => {\n      this.onDrawEnd(event);\n    });\n  }\n  //添加feature\n  addFeature(id: any, name: any, lon: any, lat: any, index: any) {\n    var LonLat: any;\n    if (index === 0) {\n      LonLat = this.parseLonLatToPx(lon, lat);\n    }\n    if (index === 1) {\n      LonLat = this.parseLonLatToPx(lon, lat);\n    } else if (index === 2) {\n      LonLat = this.parseLonLatToPx4(lon, lat);\n    }\n    //创建图标特性\n    var iconFeature = new Feature({\n      geometry: new Point([LonLat.lon, LonLat.lat], GeometryLayout.XY),\n      name: name,\n    });\n    iconFeature.setId(id);\n    iconFeature.setStyle(this.createLabelStyle(iconFeature, index));\n    //将图标特性添加进矢量中\n    var vectorSource = this.layersArray[index].getSource();\n    vectorSource.addFeature(iconFeature);\n  }\n  //修改feature\n  changeUserGisInf(id: any, name: any, x: any, y: any, index: any) {\n    var vectorSource = this.layersArray[index].getSource();\n    var features = vectorSource.getFeatures();\n    var isexist = false;\n    for (let i = 0; i < features.length; i++) {\n      if (features[i].getId() === id) {\n        if (index === 0) {\n          features[i].setGeometry(\n            new Point(\n              transform([x - 0.0061, y - 0.0057], 'EPSG:4326', 'EPSG:3857')\n            )\n          );\n        }\n        if (index === 1) {\n          features[i].setGeometry(\n            new Point(\n              transform([x - 0.0063, y - 0.0057], 'EPSG:4326', 'EPSG:3857')\n            )\n          );\n        } else if (index === 2) {\n          features[i].setGeometry(\n            new Point(\n              transform([x + 0.0063, y + 0.0012], 'EPSG:4326', 'EPSG:3857')\n            )\n          );\n        }\n        isexist = true;\n        break;\n      }\n    }\n    if (!isexist) {\n      this.addFeature(id, name, x, y, index);\n    }\n  }\n  //删除动态feature\n  delDyanmicFeature(id: any, index: any) {\n    var vectorSource = this.layersArray[index].getSource();\n    var features = vectorSource.getFeatures();\n    for (let i = 0; i < features.length; i++) {\n      if (features[i].getId() === id) {\n        vectorSource.removeFeature(features[i]);\n        break;\n      }\n    }\n  }\n  //清除动态feature\n  dyanmicFeatureClear() {\n    var vectorSource;\n    for (let i = 0; i < 3; i++) {\n      vectorSource = this.layersArray[i].getSource();\n      vectorSource.clear();\n    }\n  }\n  //设置静态标识\n  SetStaticSign(isactive: any, index: any) {\n    this.staticsign = isactive;\n    this.staticindex = index;\n    this.plot.plotDraw.deactivate();\n    this.cancelDraw();\n  }\n  //初始化静态图标GIS信息\n  initStaticGis(id: any, name: any, type: any, lon: any, lat: any, inf: any) {\n    var index, feature, cord, vectorSource;\n    index = type + 2;\n    cord = this.parseLonLatToPx(lon, lat);\n    vectorSource = this.layersArray[index].getSource();\n    feature = new Feature({\n      geometry: new Point([cord.lon, cord.lat], GeometryLayout.XY),\n      name: name,\n    });\n    feature.setId(id);\n    var sf = this.StaticFeature(id, inf);\n    this.featureArray.push(sf);\n    feature.setStyle(this.createLabelStyle(feature, index));\n    vectorSource.addFeature(feature);\n  }\n  //添加静态图标\n  addFeatureStatic(staticcoordinate: any) {\n    //创建图标特性\n    this.vectorSource = this.layersArray[this.add].getSource();\n    if (this.activefeature !== undefined) {\n      this.vectorSource.removeFeature(this.activefeature);\n    }\n    var feature = new Feature({\n      geometry: new Point(staticcoordinate, GeometryLayout.XY),\n      name: '新建',\n    });\n    //将图标特性添加进矢量中\n    this.activefeature = feature;\n    this.vectorSource.addFeature(feature);\n    feature.setStyle(this.createLabelStyle(feature, this.add));\n    feature.changed();\n  }\n  //添加静态图标\n  addDeviceFeature(staticcoordinate: any) {\n    //创建图标特性\n    this.vectorSource = this.layersArray[this.add].getSource();\n    if (this.activefeature !== undefined) {\n      this.vectorSource.removeFeature(this.activefeature);\n    }\n    var feature = new Feature({\n      geometry: new Point(staticcoordinate, GeometryLayout.XY),\n      name: '新建',\n    });\n    //将图标特性添加进矢量中\n    this.activefeature = feature;\n    this.vectorSource.addFeature(feature);\n    feature.setStyle(this.createLabelStyle(feature, this.add));\n    feature.changed();\n  }\n  //清除所有Gis信息\n  clearAllFeatrue() {\n    var len = this.layersArray.length;\n    for (var i = 0; i < len; i++) {\n      this.layersArray[i].getSource().clear();\n    }\n  }\n  // 指定标绘类型，开始绘制。\n  setPlotSign(index: any) {\n    this.plotsign = true;\n    this.plotindex = index;\n    if (this.maptype == 'openlayermap') {\n      switch (index) {\n        case 7:\n          this.yanwei();\n          break;\n        case 8:\n          this.qianji();\n          break;\n        default:\n          this.plot.plotDraw.deactivate();\n          break;\n      }\n      this.cancelDraw();\n    } else if (this.maptype == 'gaodemap') {\n    }\n  }\n  //添加绘制feature\n  addPlotFeature(plotcoordinate: any) {\n    this.plotid++;\n    var feature = new Feature({\n      geometry: new Point(plotcoordinate, GeometryLayout.XY),\n      name: '',\n    });\n    feature.setId(this.plotid);\n    feature.setStyle(this.createLabelStyle(feature, this.add));\n    feature.changed();\n    this.drawOverlay.getSource().addFeature(feature);\n  }\n  //添加文字描述\n  addTextPlot(name: any) {\n    this.plotid++;\n    var feature = new Feature({\n      geometry: new Point(this.activecord, GeometryLayout.XY),\n      name: name,\n    });\n    feature.setId(this.plotid);\n    feature.setStyle(\n      new Style({\n        text: new Text({\n          font: '20px sans-serif',\n          text: name,\n          offsetX: 20,\n          offsetY: 10,\n          textAlign: 'left',\n          fill: new Fill({\n            color: 'rgba(91,173,255,1)',\n          }),\n        }),\n      })\n    );\n    this.drawOverlay.getSource().addFeature(feature);\n    feature.changed();\n  }\n  // 绘制结束后，添加到FeatureOverlay显示。\n  onDrawEnd(event: any) {\n    var feature = event.feature;\n    // this.drawOverlay.getSource().addFeature(feature);\n    this.plotindex = -1;\n    this.plotsign = false;\n    this.add = -1;\n  }\n  //开始绘制。\n  activate(type: any) {\n    this.plot.plotEdit.deactivate();\n    this.plot.plotDraw.active(type);\n  }\n  //绘制燕尾。\n  yanwei() {\n    this.add = 11;\n    this.activate('TailedAttackArrow');\n  }\n  //绘制钳击。\n  qianji() {\n    this.add = 12;\n    this.activate('DoubleArrow');\n  }\n  //清除绘制\n  plotClear() {\n    this.drawOverlay.getSource().clear();\n  }\n\n  //绘制轨迹\n  DrawTrajectory(lon: any, lat: any, userName: any) {\n    //创建图标特性\n    var LonLat = this.parseLonLatToPx(lon, lat);\n    var iconFeature = new Feature({\n      geometry: new Point([LonLat.lon, LonLat.lat], GeometryLayout.XY),\n      name: userName,\n    });\n    iconFeature.setId(this.getUUid());\n    var trajectory = new Style({\n      image: new Icon({\n        opacity: 0.75,\n        src: 'assets/img/user.png', //需要修改\n        scale: 0.5,\n      }),\n      text: new Text({\n        font: '16px sans-serif',\n        text: iconFeature.get('name'),\n        offsetX: 20,\n        offsetY: 10,\n        textAlign: 'left',\n      }),\n    });\n    iconFeature.setStyle(trajectory);\n    //将图标特性添加进矢量中\n    var vectorSource = this.layersArray[10].getSource();\n    vectorSource.addFeature(iconFeature);\n  }\n  //取消框选\n  cancelDraw() {\n    if (this.draw !== null) {\n      this.map.removeInteraction(this.draw);\n      this.draw = null;\n    }\n  }\n  //圆选\n  DrawCricle() {\n    this.retsign();\n    this.plot.plotEdit.deactivate();\n    if (this.draw !== null) {\n      this.map.removeInteraction(this.draw);\n      this.draw = null;\n    }\n    this.draw = new Draw({\n      source: this.drawSource,\n      type: GeometryType.CIRCLE,\n    });\n    this.map.addInteraction(this.draw);\n    this.draw.on('drawend', (evt: any) => {\n      this.userlist = '';\n      var polygon = evt.feature.getGeometry();\n      var coordinate = evt.feature.getGeometry().getCenter();\n      setTimeout(() => {\n        //如果不设置延迟，范围内要素选中后自动取消选中，具体原因不知道\n        var center = polygon.getCenter(),\n          radius = polygon.getRadius(),\n          extent = polygon.getExtent();\n        for (var index = 0; index < 3; index++) {\n          var features = this.layersArray[index]\n            .getSource()\n            .getFeaturesInExtent(extent); //先缩小feature的范围\n          for (var i = 0; i < features.length; i++) {\n            this.userlist = features[i].getId() + ';' + this.userlist;\n          }\n          if (features.length > 0) {\n            this.boxselectol.setPosition(coordinate);\n          }\n        }\n      }, 300); //延迟0\n      this.map.removeInteraction(this.draw);\n      this.draw = null;\n    });\n  }\n  // 框选\n  DrawRect() {\n    this.retsign();\n    this.plot.plotEdit.deactivate();\n    if (this.draw !== null) {\n      this.map.removeInteraction(this.draw);\n      this.draw = null;\n    }\n    this.draw = new Draw({\n      source: this.drawSource,\n      type: GeometryType.LINE_STRING,\n      maxPoints: 2,\n      geometryFunction: (coordinates, geometry) => {\n        if (!geometry) {\n          geometry = new Polygon([]);\n        }\n        var start: any = coordinates[0];\n        var end: any = coordinates[1];\n        geometry.setCoordinates([\n          [start, [start[0], end[1]], end, [end[0], start[1]], start],\n        ]);\n        return geometry;\n      },\n    });\n    this.map.addInteraction(this.draw);\n    this.draw.on('drawend', (evt: any) => {\n      this.userlist = '';\n      var polygon = evt.feature.getGeometry();\n      var coordinate = polygon.getCoordinates();\n      setTimeout(() => {\n        //如果不设置延迟，范围内要素选中后自动取消选中，具体原因不知道\n        var extent = polygon.getExtent();\n        for (var index = 0; index < 3; index++) {\n          var features = this.layersArray[index]\n            .getSource()\n            .getFeaturesInExtent(extent); //先缩小feature的范围\n          for (var i = 0; i < features.length; i++) {\n            this.userlist = features[i].getId() + ';' + this.userlist;\n          }\n          if (features.length > 0) {\n            this.boxselectol.setPosition(coordinate[0][2]);\n          }\n        }\n      }, 300); //延迟0\n      this.map.removeInteraction(this.draw);\n      this.draw = null;\n    });\n  }\n\n  adddraw(type: any) {\n    //监听draw事件可获取画好的覆盖物\n    switch (type) {\n      case 'polyline': {\n        // 折线\n        this.mouseTool.polyline({\n          strokeColor: '#80d8ff',\n          //同Polyline的Option设置\n        });\n        break;\n      }\n      case 'polygon': {\n        // 多边形\n        this.mouseTool.polygon({\n          fillColor: '#00b0ff',\n          strokeColor: '#80d8ff',\n          cursor: 'cur',\n          //同Polygon的Option设置\n        });\n        break;\n      }\n      case 'rectangle': {\n        // 矩形\n        this.mouseTool.rectangle({\n          fillColor: '#00b0ff',\n          zIndex: 100,\n          strokeColor: '#80d8ff',\n          extData: {\n            type: '2',\n            ID: this.getUUid(),\n          },\n          //同Polygon的Option设置\n        });\n        break;\n      }\n      case 'circle': {\n        // 圆形\n        this.mouseTool.circle({\n          fillColor: '#00b0ff',\n          strokeColor: '#80d8ff',\n          title: '我是圆形',\n          //同Circle的Option设置\n        });\n        break;\n      }\n    }\n    this.mouseTool.on('draw', (e: any) => {\n      let lng = 640;\n      let lat = 100;\n      if (type == 'polyline' || type == 'polygon' || type == 'rectangle') {\n        this.map.panTo(e.obj.getPath()[0]);\n        if (type == 'polyline') {\n          this.railtype = 4;\n        } else if (type == 'polygon') {\n          this.railtype = 1;\n        } else if (type == 'rectangle') {\n          this.railtype = 2;\n        }\n      } else if (type == 'circle') {\n        this.map.panTo(e.obj.getCenter());\n        this.railtype = 3;\n      }\n      this.electronicrail.nativeElement.style.display = 'block';\n      this.electronicrail.nativeElement.style.left = lng + 'px';\n      this.electronicrail.nativeElement.style.top = lat + 'px';\n\n      this.cancelrail.nativeElement.onclick = () => {\n        this.closepopup();\n      };\n      this.confirmrail.nativeElement.onclick = () => {\n        if (this.railname == '') {\n          this.message.create('error', '未填写名称');\n        } else if (this.timerlist.length == 0) {\n          this.message.create('error', '未选择时间段');\n        } else {\n          let data;\n          if (type == 'polyline') {\n            data = {\n              // 路径\n              type: '4',\n              ID: this.getUUid(),\n              name: this.railname,\n              pointList: e.obj.getPath(),\n              radius: '',\n              extendWidth: '',\n              valid: this.radiovalid,\n              timeExclude: this.timeExclude,\n              userExclude: this.userExclude,\n              userList: this.getuser(),\n              timerlist: this.timerlist,\n            };\n          } else if (type == 'polygon') {\n            // 多边形\n            data = {\n              type: '1',\n              ID: this.getUUid(),\n              name: this.railname,\n              pointList: e.obj.getPath(),\n              radius: '',\n              extendWidth: '',\n              valid: this.radiovalid,\n              timeExclude: this.timeExclude,\n              userExclude: this.userExclude,\n              userList: this.getuser(),\n              timerlist: this.timerlist,\n            };\n          } else if (type == 'rectangle') {\n            // 矩形\n            data = {\n              type: '2',\n              ID: this.getUUid(),\n              name: this.railname,\n              pointList: e.obj.getPath(),\n              radius: '',\n              extendWidth: '',\n              valid: this.radiovalid,\n              timeExclude: this.timeExclude,\n              userExclude: this.userExclude,\n              userList: this.getuser(),\n              timerlist: this.timerlist,\n            };\n          } else if (type == 'circle') {\n            // 圆形\n            data = {\n              type: '3',\n              ID: this.getUUid(),\n              name: this.railname,\n              pointList: e.obj.getCenter(),\n              radius: e.obj.getRadius(),\n              extendWidth: '',\n              valid: this.radiovalid,\n              timeExclude: this.timeExclude,\n              userExclude: this.userExclude,\n              areaExclude: this.areaExclude,\n              userList: this.getuser(),\n              timerlist: this.timerlist,\n            };\n          }\n          e.obj.setExtData(data);\n          this.closepopup();\n        }\n      };\n      this.add = -1;\n      this.mouseTool.close();\n      e.obj.on('click', (ev: any) => {\n        this.map.panTo(ev.lnglat);\n        let data = ev.target.getExtData();\n        this.railname = data.name;\n        this.radiovalid = data.valid;\n        this.railtype = data.ype;\n        this.areaExclude = data.areaExclude;\n        this.timeExclude = data.timeExclude;\n        this.userExclude = data.userExclude;\n        this.timerlist = data.timerlist;\n        this.electronicrail.nativeElement.style.display = 'block';\n        this.electronicrail.nativeElement.style.left = 640 + 'px';\n        this.electronicrail.nativeElement.style.top = 100 + 'px';\n      });\n    });\n  }\n  closepopup() {\n    this.raildelol.setPosition(undefined);\n\n    this.emptyrail();\n  }\n  createPolygon(path: any) {}\n  fn(arr: any, num: any) {\n    let newArr = [];\n    const total = Math.ceil(arr.length / num);\n    for (let i = 0; i < total; i++) {\n      let a = this.prasePxtoLonLat(arr.slice(i * num, (i + 1) * num));\n      newArr.push(a);\n    }\n    return newArr;\n  }\n  addfence(ev: any) {\n    for (var i = 0; i < ev.length; i++) {\n      //1 多边形 2 矩形 3 圆形 4 路径\n      if (ev[i].type == '1' || ev[i].type == '2') {\n        this.addGeometry(ev[i]);\n      } else if (ev[i].type == '3') {\n        this.addround(ev[i]);\n      } else if (ev[i].type == '4') {\n        this.addway(ev[i]);\n      }\n    }\n  }\n  addround(ev: any) {\n    let data = ev;\n    let point: any = data.pointList.split(',');\n    point[point.length - 1] = point[point.length - 1].substring(\n      0,\n      point[point.length - 1].length - 1\n    );\n    let LonLat = [point[0] - 0, point[1] - 0];\n    data.pointList = LonLat;\n    data.locality = '1';\n    let feature = new Feature({\n      title: 'yuanxing',\n      geometry: new Circle(\n        transform(LonLat, 'EPSG:4326', 'EPSG:3857'),\n        data.radius - 0\n      ),\n    });\n    feature.setStyle(\n      new Style({\n        fill: new Fill({\n          color: 'rgba(32, 157, 230, 0.5)',\n        }),\n      })\n    );\n    for (var i = 0; i < data.timeList.length; i++) {\n      if (data.timeList[i].enable == '1') {\n        data.timeList[i].enable = true;\n      } else {\n        data.timeList[i].enable = false;\n      }\n    }\n    feature.setId(data.ID);\n    feature.changed();\n    feature.set('data', data);\n    this.layersArray[7].getSource().addFeature(feature);\n  }\n  // 添加路径\n  addway(ev: any) {\n    let data = ev;\n\n    let point: any = data.pointList.split(',');\n    point[point.length - 1] = point[point.length - 1].substring(\n      0,\n      point[point.length - 1].length - 1\n    );\n    for (var i = 0; i < point.length; i++) {\n      point[i] = point[i] - 0;\n    }\n    data.pointList = this.arr1to2(point, 2);\n    data.locality = '1';\n    let geometry = new LineString(data.pointList);\n    geometry.transform('EPSG:4326', 'EPSG:3857');\n    let feature = new Feature({\n      title: 'LineString',\n      geometry: geometry,\n    });\n    feature.setStyle(\n      new Style({\n        fill: new Fill({\n          color: '#e01919',\n        }),\n        stroke: new Stroke({\n          color: '#3399CC',\n          width: 10,\n        }),\n      })\n    );\n    for (var i = 0; i < data.timeList.length; i++) {\n      if (data.timeList[i].enable == '1') {\n        data.timeList[i].enable = true;\n      } else {\n        data.timeList[i].enable = false;\n      }\n    }\n    feature.setId(data.ID);\n    feature.changed();\n    feature.set('data', data);\n    this.layersArray[7].getSource().addFeature(feature);\n  }\n  addGeometry(ev: any) {\n    let data = ev;\n    let point: any = data.pointList.split(',');\n    point[point.length - 1] = point[point.length - 1].substring(\n      0,\n      point[point.length - 1].length - 1\n    );\n    for (var i = 0; i < point.length; i++) {\n      point[i] = point[i] - 0;\n    }\n    data.pointList = this.arr1to2(point, 2);\n    data.locality = '1';\n    for (var i = 0; i < data.timeList.length; i++) {\n      if (data.timeList[i].enable == '1') {\n        data.timeList[i].enable = true;\n      } else {\n        data.timeList[i].enable = false;\n      }\n    }\n    let geometry = new Polygon([data.pointList]);\n    geometry.transform('EPSG:4326', 'EPSG:3857');\n    let feature = new Feature({\n      title: 'juxing',\n      geometry: geometry,\n    });\n    feature.setStyle(\n      new Style({\n        fill: new Fill({\n          color: 'rgba(32, 157, 230, 0.5)',\n        }),\n        stroke: new Stroke({\n          color: '#3399CC',\n          width: 1.25,\n        }),\n      })\n    );\n    feature.setId(data.ID);\n    feature.changed();\n    feature.set('data', data);\n    this.layersArray[7].getSource().addFeature(feature);\n  }\n  arr1to2(arr: any, number: any) {\n    var arr2 = [];\n    let len = arr.length;\n    for (let i = 0, j = 0; i < len; i += number, j++) {\n      arr2[j] = arr.splice(0, number);\n    }\n    return arr2;\n  }\n  // 多边形几何\n  polygonGeometry() {\n    if (this.maptype == 'openlayermap') {\n      if (this.add == 14) {\n        this.add = -1;\n        if (this.draw !== null) {\n          this.map.removeInteraction(this.draw);\n          this.draw = null;\n        }\n      } else {\n        this.add = 14;\n        this.retsign();\n        this.locality = '0';\n        if (this.draw !== null) {\n          this.map.removeInteraction(this.draw);\n          this.draw = null;\n        }\n        this.plot.plotEdit.deactivate();\n        this.draw = new Draw({\n          source: this.drawSource,\n          type: GeometryType.POLYGON,\n        });\n        this.map.addInteraction(this.draw);\n        this.draw.on('drawstart', (evt: any) => {\n          this.raildelol.setPosition(undefined);\n        });\n        this.draw.on('drawend', (evt: any) => {\n          let polygon = evt.feature.getGeometry();\n          let extent = polygon.getExtent();\n          let Type = polygon.getType();\n          let Coordinates = polygon.getFlatCoordinates();\n          let center = getCenter(boundingExtent(polygon.getCoordinates()[0]));\n          let poltlist = this.fn(Coordinates, 2);\n          let geometry = new Polygon([poltlist]);\n          geometry.transform('EPSG:4326', 'EPSG:3857');\n          let feature = new Feature({\n            title: 'yuanxing',\n            geometry: geometry,\n          });\n          feature.setStyle(\n            new Style({\n              fill: new Fill({\n                color: 'rgba(32, 157, 230, 0.5)',\n              }),\n              stroke: new Stroke({\n                color: '#3399CC',\n                width: 1.25,\n              }),\n            })\n          );\n          feature.setId(this.getUUid());\n          feature.changed();\n          this.layersArray[7].getSource().addFeature(feature);\n          this.raildelol.setPosition(center);\n          this.confirmrail.nativeElement.onclick = () => {\n            if (this.railname == '') {\n              this.message.create('error', '未填写名称');\n            } else if (this.timerlist.length == 0) {\n              this.message.create('error', '未选择时间段');\n            } else {\n              for (var i = 0; i < this.timerlist.length; i++) {\n                if (this.timerlist[i].enable == true) {\n                  this.timerlist[i].enable = '1';\n                } else {\n                  this.timerlist[i].enable = '0';\n                }\n              }\n              let pointList = '';\n              for (var i = 0; i < poltlist.length; i++) {\n                if (i == poltlist.length - 1) {\n                  pointList =\n                    pointList + poltlist[i][0] + ',' + poltlist[i][1] + ';';\n                } else {\n                  pointList =\n                    pointList + poltlist[i][0] + ',' + poltlist[i][1] + ',';\n                }\n              }\n              let data = {\n                type: '1',\n                ID: feature.getId(),\n                name: this.railname,\n                pointList: pointList,\n                radius: '',\n                extendWidth: '',\n                valid: this.radiovalid,\n                timeExclude: this.timeExclude ? '1' : '0',\n                userExclude: this.userExclude ? '1' : '0',\n                userList: this.getuser(),\n                timeList: this.timerlist,\n                areaExclude: this.areaExclude,\n              };\n              this.rx.addElectronicFence(data);\n              this.locality = '1';\n              feature.set('data', data);\n              this.raildelol.setPosition(undefined);\n              this.emptyrail();\n            }\n            this.layersArray[7].getSource().changed(); //修改完需更新视图\n            this.add = -1;\n            if (this.draw !== null) {\n              this.map.removeInteraction(this.draw);\n              this.draw = null;\n            }\n          };\n          this.cancelrail.nativeElement.onclick = () => {\n            this.raildelol.setPosition(undefined);\n          };\n        });\n      }\n    } else if (this.maptype == 'gaodemap') {\n      if (this.add == 14) {\n        this.add = -1;\n        this.mouseTool.close();\n      } else {\n        this.add = 14;\n        // console.log('绘制多边形');\n        //监听draw事件可获取画好的覆盖物\n        this.adddraw('polygon');\n      }\n    }\n  }\n  // 矩形\n  rectangleGeometry() {\n    if (this.maptype == 'openlayermap') {\n      if (this.add == 15) {\n        this.add = -1;\n        if (this.draw !== null) {\n          this.map.removeInteraction(this.draw);\n          this.draw = null;\n        }\n      } else {\n        this.add = 15;\n        this.retsign();\n        this.locality = '0';\n        if (this.draw !== null) {\n          this.map.removeInteraction(this.draw);\n          this.draw = null;\n        }\n        this.plot.plotEdit.deactivate();\n        this.draw = new Draw({\n          source: this.drawSource,\n          type: GeometryType.LINE_STRING,\n          maxPoints: 2,\n          geometryFunction: (coordinates, geometry) => {\n            if (!geometry) {\n              geometry = new Polygon([]);\n            }\n            var start: any = coordinates[0];\n            var end: any = coordinates[1];\n            geometry.setCoordinates([\n              [start, [start[0], end[1]], end, [end[0], start[1]], start],\n            ]);\n            return geometry;\n          },\n        });\n        this.map.addInteraction(this.draw);\n        this.draw.on('drawend', (evt: any) => {\n          this.userlist = '';\n          var polygon = evt.feature.getGeometry();\n          var coordinate = polygon.getCoordinates()[0];\n          var extent = polygon.getExtent();\n          let center = getCenter(boundingExtent(polygon.getCoordinates()[0]));\n          for (let i = 0; i < coordinate.length; i++) {\n            coordinate[i] = this.prasePxtoLonLat(coordinate[i]);\n          }\n          let geometry = new Polygon([coordinate]);\n          geometry.transform('EPSG:4326', 'EPSG:3857');\n          let feature = new Feature({\n            title: 'juxing',\n            geometry: geometry,\n          });\n          feature.setStyle(\n            new Style({\n              fill: new Fill({\n                color: 'rgba(32, 157, 230, 0.5)',\n              }),\n              stroke: new Stroke({\n                color: '#3399CC',\n                width: 1.25,\n              }),\n            })\n          );\n          feature.setId(this.getUUid());\n          feature.changed();\n          this.layersArray[7].getSource().addFeature(feature);\n          this.featurerail = feature;\n          this.raildelol.setPosition(center);\n          this.confirmrail.nativeElement.onclick = () => {\n            if (this.railname == '') {\n              this.message.create('error', '未填写名称');\n            } else if (this.timerlist.length == 0) {\n              this.message.create('error', '未选择时间段');\n            } else {\n              for (var i = 0; i < this.timerlist.length; i++) {\n                if (this.timerlist[i].enable == true) {\n                  this.timerlist[i].enable = '1';\n                } else {\n                  this.timerlist[i].enable = '0';\n                }\n              }\n              let pointList = '';\n              for (var i = 0; i < coordinate.length; i++) {\n                if (i == coordinate.length - 1) {\n                  pointList =\n                    pointList + coordinate[i][0] + ',' + coordinate[i][1] + ';';\n                } else {\n                  pointList =\n                    pointList + coordinate[i][0] + ',' + coordinate[i][1] + ',';\n                }\n              }\n              let data = {\n                type: '2',\n                ID: feature.getId(),\n                name: this.railname,\n                pointList: pointList,\n                radius: '',\n                extendWidth: '',\n                valid: this.radiovalid,\n                timeExclude: this.timeExclude ? '1' : '0',\n                userExclude: this.userExclude ? '1' : '0',\n                userList: this.getuser(),\n                timeList: this.timerlist,\n                areaExclude: this.areaExclude,\n              };\n              this.rx.addElectronicFence(data);\n              this.locality = '1';\n              this.featurerail.set('data', data);\n              this.raildelol.setPosition(undefined);\n              this.emptyrail();\n            }\n            this.add = -1;\n            if (this.draw !== null) {\n              this.map.removeInteraction(this.draw);\n              this.draw = null;\n            }\n            this.layersArray[7].getSource().changed(); //修改完需更新视图\n          };\n          this.cancelrail.nativeElement.onclick = () => {\n            this.raildelol.setPosition(undefined);\n          };\n        });\n      }\n    } else if (this.maptype == 'gaodemap') {\n      if (this.add == 15) {\n        this.add = -1;\n        this.mouseTool.close();\n      } else {\n        this.add = 15;\n        // console.log('绘制矩形');\n        this.adddraw('rectangle');\n      }\n    }\n  }\n\n  // 圆形\n  roundGeometry() {\n    if (this.maptype == 'openlayermap') {\n      if (this.add == 16) {\n        this.add = -1;\n        if (this.draw !== null) {\n          this.map.removeInteraction(this.draw);\n          this.draw = null;\n        }\n      } else {\n        this.add = 16;\n        if (this.draw !== null) {\n          this.map.removeInteraction(this.draw);\n          this.draw = null;\n        }\n        this.locality = '0';\n        this.retsign();\n        this.plot.plotEdit.deactivate();\n        this.draw = new Draw({\n          source: this.drawSource,\n          type: GeometryType.CIRCLE,\n        });\n        this.map.addInteraction(this.draw);\n        this.draw.on('drawstart', (evt: any) => {\n          this.raildelol.setPosition(undefined);\n        });\n        this.draw.on('drawend', (evt: any) => {\n          let polygon = evt.feature.getGeometry();\n          let coordinate = evt.feature.getGeometry().getCenter();\n          let center = polygon.getCenter(),\n            radius = polygon.getRadius(),\n            extent = polygon.getExtent();\n\n          this.raildelol.setPosition(center);\n          let LonLat = this.prasePxtoLonLat(center);\n          let feature = new Feature({\n            title: 'yuanxing',\n            geometry: new Circle(\n              transform(LonLat, 'EPSG:4326', 'EPSG:3857'),\n              radius\n            ),\n          });\n          feature.setStyle(\n            new Style({\n              fill: new Fill({\n                color: 'rgba(32, 157, 230, 0.5)',\n              }),\n            })\n          );\n\n          feature.setId(this.getUUid());\n          feature.changed();\n          this.railtype = 3;\n          this.layersArray[7].getSource().addFeature(feature);\n          this.featurerail = feature;\n          this.confirmrail.nativeElement.onclick = () => {\n            if (this.railname == '') {\n              this.message.create('error', '未填写名称');\n            } else if (this.timerlist.length == 0) {\n              this.message.create('error', '未选择时间段');\n            } else {\n              for (var i = 0; i < this.timerlist.length; i++) {\n                if (this.timerlist[i].enable == true) {\n                  this.timerlist[i].enable = '1';\n                } else {\n                  this.timerlist[i].enable = '0';\n                }\n              }\n\n              let data = {\n                type: '3',\n                ID: feature.getId(),\n                name: this.railname,\n                pointList: LonLat[0] + ',' + LonLat[1] + ';',\n                radius: radius.toString(),\n                extendWidth: '',\n                valid: this.radiovalid,\n                areaExclude: this.areaExclude,\n                timeExclude: this.timeExclude ? '1' : '0',\n                userExclude: this.userExclude ? '1' : '0',\n                timeList: this.timerlist,\n                userList: this.getuser(),\n              };\n              // console.log(data);\n              this.rx.addElectronicFence(data);\n              this.locality = '1';\n              this.featurerail.set('data', data);\n              this.raildelol.setPosition(undefined);\n              this.emptyrail();\n            }\n            this.add = -1;\n            if (this.draw !== null) {\n              this.map.removeInteraction(this.draw);\n              this.draw = null;\n            }\n            this.layersArray[7].getSource().changed(); //修改完需更新视图\n          };\n          this.cancelrail.nativeElement.onclick = () => {\n            this.raildelol.setPosition(undefined);\n          };\n        });\n      }\n    } else if (this.maptype == 'gaodemap') {\n      if (this.add == 16) {\n        this.add = -1;\n        this.mouseTool.close();\n      } else {\n        this.add = 16;\n        // console.log('绘制圆形');\n        this.adddraw('circle');\n      }\n    }\n  }\n  // 路径\n  wayGeometry() {\n    if (this.maptype == 'openlayermap') {\n      if (this.add == 17) {\n        this.add = -1;\n        if (this.draw !== null) {\n          this.map.removeInteraction(this.draw);\n          this.draw = null;\n        }\n      } else {\n        this.add = 17;\n        if (this.draw !== null) {\n          this.map.removeInteraction(this.draw);\n          this.draw = null;\n        }\n        this.locality = '0';\n        this.retsign();\n        this.plot.plotEdit.deactivate();\n        this.draw = new Draw({\n          source: this.drawSource,\n          type: GeometryType.LINE_STRING,\n        });\n        this.map.addInteraction(this.draw);\n        this.draw.on('drawend', (evt: any) => {\n          let polygon = evt.feature.getGeometry();\n          let Coordinates = polygon.getFlatCoordinates();\n          let center = [Coordinates[0], Coordinates[1]];\n          let poltlist = this.fn(Coordinates, 2);\n          // console.log(poltlist);\n          let geometry = new LineString(poltlist);\n          geometry.transform('EPSG:4326', 'EPSG:3857');\n          let feature = new Feature({\n            title: 'LineString',\n            geometry: geometry,\n          });\n          feature.setStyle(\n            new Style({\n              fill: new Fill({\n                color: '#e01919',\n              }),\n              stroke: new Stroke({\n                color: '#3399CC',\n                width: 10,\n              }),\n            })\n          );\n          feature.setId(this.getUUid());\n          feature.changed();\n          this.layersArray[7].getSource().addFeature(feature);\n          this.raildelol.setPosition(center);\n          this.confirmrail.nativeElement.onclick = () => {\n            if (this.railname == '') {\n              this.message.create('error', '未填写名称');\n            } else if (this.timerlist.length == 0) {\n              this.message.create('error', '未选择时间段');\n            } else {\n              for (var i = 0; i < this.timerlist.length; i++) {\n                if (this.timerlist[i].enable == true) {\n                  this.timerlist[i].enable = '1';\n                } else {\n                  this.timerlist[i].enable = '0';\n                }\n              }\n              let pointList = '';\n              for (var i = 0; i < poltlist.length; i++) {\n                if (i == poltlist.length - 1) {\n                  pointList =\n                    pointList + poltlist[i][0] + ',' + poltlist[i][1] + ';';\n                } else {\n                  pointList =\n                    pointList + poltlist[i][0] + ',' + poltlist[i][1] + ',';\n                }\n              }\n              let data = {\n                type: '4',\n                ID: feature.getId(),\n                name: this.railname,\n                pointList: pointList,\n                radius: '',\n                extendWidth: '',\n                valid: this.radiovalid,\n                timeExclude: this.timeExclude ? '1' : '0',\n                userExclude: this.userExclude ? '1' : '0',\n                userList: this.getuser(),\n                timeList: this.timerlist,\n                areaExclude: this.areaExclude,\n              };\n              this.locality = '1';\n              feature.set('data', data);\n              this.rx.addElectronicFence(data);\n              this.raildelol.setPosition(undefined);\n              this.emptyrail();\n            }\n            this.layersArray[7].getSource().changed(); //修改完需更新视图\n            this.add = -1;\n            if (this.draw !== null) {\n              this.map.removeInteraction(this.draw);\n              this.draw = null;\n            }\n          };\n          this.cancelrail.nativeElement.onclick = () => {\n            this.raildelol.setPosition(undefined);\n          };\n        });\n      }\n    } else if (this.maptype == 'gaodemap') {\n      if (this.add == 17) {\n        this.add = -1;\n        this.mouseTool.close();\n      } else {\n        this.add = 17;\n        // console.log('绘制路径');\n        this.adddraw('polyline');\n      }\n    }\n  }\n\n  addtimer() {\n    if (this.starttime != null && this.endtime != null) {\n      this.timerlist.push({\n        startTime: this.time(this.starttime),\n        endTime: this.time(this.endtime),\n        enable: false,\n      });\n      this.starttime = null;\n      this.endtime = null;\n    } else {\n      return;\n    }\n  }\n  deltime(ev: any) {\n    this.timerlist.splice(ev, 1);\n  }\n  inituser() {\n    this.astrictuserlist = this.datastact.userlist.childs;\n  }\n  geshitimer(timer: any) {\n    return timer.getHours() + 1 + ':' + timer.getMinutes();\n  }\n  emptyrail() {\n    for (let i = 0; i < this.astrictuserlist.length; i++) {\n      this.astrictuserlist[i].checkshow = false;\n    }\n    this.railname = '';\n    this.radiovalid = '1';\n    this.railtype = 1;\n    this.areaExclude = '1';\n    this.timeExclude = true;\n    this.userExclude = true;\n    this.timerlist = [];\n  }\n  getuser() {\n    let user = '';\n    for (let i = 0; i < this.astrictuserlist.length; i++) {\n      if (this.astrictuserlist[i].checkshow == true) {\n        user = user + this.astrictuserlist[i].info.userID + ';';\n      }\n    }\n    return user;\n  }\n  assignmentuser(ev: any) {\n    let point: any = ev.split(';');\n    for (let i = 0; i < this.astrictuserlist.length; i++) {\n      for (let j = 0; j < point.length; j++) {\n        if (point[j] == this.astrictuserlist[i].info.userID) {\n          this.astrictuserlist[i].checkshow = true;\n        }\n      }\n    }\n  }\n  confirm() {\n    this.upload = this.timerlist;\n    for (let i = 0; i < this.upload.length; i++) {\n      this.upload[i].startTime = this.geshitimer(this.upload[i].startTime);\n      this.upload[i].endTime = this.geshitimer(this.upload[i].endTime);\n    }\n    this.timerlist = [];\n    // this.raildelol.setPosition(undefined);\n  }\n\n  //静态与标绘重置\n  retsign() {\n    this.plotindex = -1;\n    this.plotsign = false;\n    this.staticindex = -1;\n    this.staticsign = false;\n  }\n  //静态图标结构\n  StaticFeature(id: any, inf: any) {\n    this.id = id;\n    this.inf = inf;\n  }\n  //经纬度转换墨卡托\n  parseLonLatToPx(x: any, y: any) {\n    var earthRad = 6378137.0;\n    var a = ((y - 0.0057) * Math.PI) / 180;\n    var LonLat: any = {\n      lon: (((x - 0.0061) * Math.PI) / 180) * earthRad,\n      lat: (earthRad / 2) * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a))),\n    };\n    return LonLat;\n  }\n  //经纬度转换墨卡托\n  parseLonLatToPx4(x: any, y: any) {\n    var earthRad = 6378137.0;\n    var a = ((y + 0.0012) * Math.PI) / 180;\n    var LonLat = {\n      lon: (((x + 0.0063) * Math.PI) / 180) * earthRad,\n      lat: (earthRad / 2) * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a))),\n    };\n    return LonLat;\n  }\n  //墨卡托转换经纬度\n  prasePxtoLonLat(coordinate: any) {\n    //[12727039.383734727, 3579066.6894065146]\n    var lng = (coordinate[0] / 20037508.34) * 180;\n    var lat = (coordinate[1] / 20037508.34) * 180;\n    lat =\n      (180 / Math.PI) *\n      (2 * Math.atan(Math.exp((lat * Math.PI) / 180)) - Math.PI / 2);\n    return [lng, lat]; //[114.32894001591471, 30.58574800385281]\n  }\n  //唯一ID\n  getUUid() {\n    var d = new Date().getTime();\n    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n      /[xy]/g,\n      function (c) {\n        var r = (d + Math.random() * 16) % 16 | 0;\n        d = Math.floor(d / 16);\n        return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n      }\n    );\n    return uuid;\n  }\n  allclear() {\n    if (this.maptype == 'openlayermap') {\n      this.drawOverlay.getSource().clear();\n      this.plot.plotUtils.removeAllFeatures(); //清除箭头\n    } else if (this.maptype == 'gaodemap') {\n      let data = this.map.getAllOverlays('marker');\n      for (let i = 0; i < data.length; i++) {\n        if (data[i].type == '7') {\n          this.map.remove(data[i]);\n        }\n      }\n    }\n  }\n\n  //高德地图逻辑\n  gdinitialize() {\n    for (let i = 0; i < this.featureArray.length; i++) {\n      let featurearray = this.featureArray[i];\n      this.addMarker(featurearray);\n    }\n  }\n  addMarker(ev: any) {\n    let type = ev.type - 0 + 2;\n    let imgurl;\n    switch (type) {\n      case 0:\n        imgurl = '../../assets/img/type_android_red.png';\n        break;\n      case 1:\n        imgurl = '../../assets/img/type_IPC_red.png';\n        break;\n      case 2:\n        imgurl = '../../assets/img/type_DB_red.png';\n        break;\n      case 3:\n        imgurl = '../../assets/img/firehydrant_red.png';\n        break;\n      case 4:\n        imgurl = '../../assets/img/sourcewater_red.png';\n        break;\n      case 5:\n        imgurl = '../../assets/img/firefightingagency_red.png';\n        break;\n      case 6:\n        imgurl = '../../assets/img/VIPunit_red.png';\n        break;\n      case 7:\n        imgurl = '../../assets/img/car_red.png';\n        break;\n      case 8:\n        imgurl = '../../assets/img/dangerousgoods_red.png';\n        break;\n      case 9:\n        imgurl = '../../assets/img/worker_red.png';\n        break;\n      case 10:\n        imgurl = '../../assets/img/medicament_red.png';\n        break;\n      case 11:\n        break;\n      default:\n        break;\n    }\n    var marker: any = new AMap.Marker({\n      position: new AMap.LngLat(ev.longitude - 0, ev.latitude - 0),\n      offset: new AMap.Pixel(-10, -10),\n      icon: imgurl, // 添加 Icon 图标 URL\n    });\n    marker.setLabel({\n      offset: new AMap.Pixel(0, 0), //设置文本标注偏移量\n      content: '<div>' + ev.name + '</div>', //设置文本标注内容\n      direction: 'bottom', //设置文本标注方位\n    });\n    marker.type = type;\n    marker.setExtData(ev);\n    this.map.add(marker);\n    marker.on('click', (ev: any) => {\n      // console.log(ev);\n      this.statictips.nativeElement.style.display = 'block';\n      this.statictips.nativeElement.style.left = ev.pixel.x + 10 + 'px';\n      this.statictips.nativeElement.style.top = ev.pixel.y + 'px';\n      // console.log(ev.target.getExtData());\n      this.modificationname.nativeElement.value = ev.target.getExtData().name;\n      this.modificationinf.nativeElement.value =\n        ev.target.getExtData().describe;\n      this.modification.nativeElement.onclick = () => {\n        // 修改标注\n        let name = this.modificationname.nativeElement.value;\n        let describes = this.modificationinf.nativeElement.value;\n        let data = ev.target.getExtData();\n        this.rx.staticLabelModification(\n          data.ID,\n          data.type,\n          name,\n          data.longitude,\n          data.latitude,\n          describes,\n          ''\n        );\n        ev.target.setLabel({\n          offset: new AMap.Pixel(0, 0), //设置文本标注偏移量\n          content: '<div>' + name + '</div>', //设置文本标注内容\n          direction: 'bottom', //设置文本标注方位\n        });\n        ev.target.setExtData(data);\n        this.statictips.nativeElement.style.display = 'none';\n      };\n      this.delete.nativeElement.onclick = () => {\n        this.rx.staticLabelDelete(\n          ev.target.getExtData().ID,\n          ev.target.getExtData().type\n        ); //删除标注\n        this.map.remove(ev.target);\n        this.statictips.nativeElement.style.display = 'none';\n      };\n    });\n  }\n  addnewMarker(type: any, ev: any) {\n    // lnglat.\n    // let type = ev\n    let imgurl;\n    switch (type) {\n      case 0:\n        imgurl = '../../assets/img/type_android_red.png';\n        break;\n      case 1:\n        imgurl = '../../assets/img/type_IPC_red.png';\n        break;\n      case 2:\n        imgurl = '../../assets/img/type_DB_red.png';\n        break;\n      case 3:\n        imgurl = '../../assets/img/firehydrant_red.png';\n        break;\n      case 4:\n        imgurl = '../../assets/img/sourcewater_red.png';\n        break;\n      case 5:\n        imgurl = '../../assets/img/firefightingagency_red.png';\n        break;\n      case 6:\n        imgurl = '../../assets/img/VIPunit_red.png';\n        break;\n      case 7:\n        imgurl = '../../assets/img/car_red.png';\n        break;\n      case 8:\n        imgurl = '../../assets/img/dangerousgoods_red.png';\n        break;\n      case 9:\n        imgurl = '../../assets/img/worker_red.png';\n        break;\n      case 10:\n        imgurl = '../../assets/img/medicament_red.png';\n        break;\n      case 11:\n        break;\n      default:\n        break;\n    }\n    if (type == '7' || type == '8' || type == '9' || type == '10') {\n      var marker: any = new AMap.Marker({\n        position: new AMap.LngLat(ev.lnglat.lng - 0, ev.lnglat.lat - 0),\n        offset: new AMap.Pixel(-10, -10),\n        icon: imgurl, // 添加 Icon 图标 URL\n      });\n      marker.type = 7;\n      // marker.setExtData(ev);\n      this.map.add(marker);\n      marker.on('click', (ev: any) => {\n        // console.log(ev);\n        // console.log(ev.getExtData());\n      });\n    } else if (type == '3' || type == '4' || type == '5' || type == '6') {\n      var marker: any = new AMap.Marker({\n        position: new AMap.LngLat(ev.lnglat.lng - 0, ev.lnglat.lat - 0),\n        offset: new AMap.Pixel(-10, -10),\n        icon: imgurl, // 添加 Icon 图标 URL\n      });\n      // marker.setLabel({\n      //   offset: new AMap.Pixel(0, 0), //设置文本标注偏移量\n      //   content: '<div>' + ev.name + '</div>', //设置文本标注内容\n      //   direction: 'bottom', //设置文本标注方位\n      // });\n      this.mdfcontainer.nativeElement.style.display = 'block';\n      this.mdfcontainer.nativeElement.style.left = ev.pixel.x + 10 + 'px';\n      this.mdfcontainer.nativeElement.style.top = ev.pixel.y + 'px';\n      marker.type = type;\n      // marker.setExtData(ev);\n      this.map.add(marker);\n      marker.on('click', (ev: any) => {\n        // console.log(ev);\n        // console.log(ev.getExtData());\n      });\n      this.btncancel.nativeElement.onclick = () => {\n        this.mdfcontainer.nativeElement.style.display = 'none';\n        this.textname.nativeElement.value = '';\n        this.textinf.nativeElement.value = '';\n        this.map.remove(marker);\n      };\n\n      this.btnok.nativeElement.onclick = () => {\n        let name = this.textname.nativeElement.value;\n        if (name === '' || name === ' ') {\n          this.map.remove(marker);\n        } else {\n          let data;\n          let inf = this.textinf.nativeElement.value;\n          let lon = ev.lnglat.lng.toString();\n          let lat = ev.lnglat.lat.toString();\n          let id = this.getUUid();\n          let icontype = (this.add - 2).toString();\n          this.rx.staticLabelAdd(id, icontype, name, lon, lat, inf,'0');\n          marker.setLabel({\n            offset: new AMap.Pixel(0, 0), //设置文本标注偏移量\n            content: '<div>' + name + '</div>', //设置文本标注内容\n            direction: 'bottom', //设置文本标注方位\n          });\n          //  marker.setExtData(data);\n        }\n        this.mdfcontainer.nativeElement.style.display = 'none';\n        this.textname.nativeElement.value = '';\n        this.textinf.nativeElement.value = '';\n      };\n    }\n  }\n  changes(result: any): void {\n    for (let i = 0; i < result.length; i++) {\n      this.startTime = this.time(result[0]);\n      this.endTime = this.time(result[1]);\n    }\n  }\n  time(timer: any) {\n    var date = new Date(timer);\n    return (\n      date.getFullYear() +\n      '-' +\n      (date.getMonth() + 1) +\n      '-' +\n      date.getDate() +\n      ' ' +\n      this.checkTime(date.getHours()) +\n      ':' +\n      this.checkTime(date.getMinutes()) +\n      ':' +\n      this.checkTime(date.getSeconds())\n    );\n    //最后显示yyyy-MM-dd hh:mm:ss\n  }\n  checkTime(i: any) {\n    if (i < 10) {\n      i = '0' + i;\n    }\n    return i;\n  }\n  // 查询\n  inquire() {\n    if (this.userName == '') {\n    } else if (this.startTime == '' || this.endTime == '') {\n    } else {\n      this.rx.gaintrack(this.userName, this.startTime, this.endTime);\n      this.reset();\n    }\n  }\n  // 重置\n  reset() {\n    this.userName = '';\n    this.datatimer = null;\n    this.startTime = '';\n    this.endTime = '';\n  }\n  cleartrack() {\n    this.layersArray[11].getSource().clear();\n    this.tracklist = [];\n  }\n  // 添加轨迹\n  gpschange(Coordinates: any) {\n    let addition = false;\n    for (let j = 0; j < this.tracklist.length; j++) {\n      if (this.tracklist.userID == Coordinates[0].userID) {\n        addition = true;\n      }\n    }\n    if (addition == true) {\n      let data: any = {\n        userID: Coordinates[0].userID,\n        gpsList: [],\n      };\n      for (let j = 0; j < Coordinates.length; j++) {\n        data.gpsList.push([\n          Coordinates[j].longitude - 0,\n          Coordinates[j].latitude - 0,\n        ]);\n      }\n      for (let j = 0; j < this.tracklist.length; j++) {\n        if (this.tracklist.userID == Coordinates[0].userID) {\n          this.tracklist[j].gpsList = data.gpsList;\n        }\n      }\n      this.tracklist.push(data);\n      this.addtrack(data);\n    } else {\n      let data: any = {\n        userID: Coordinates[0].userID,\n        gpsList: [],\n      };\n      for (let j = 0; j < Coordinates.length; j++) {\n        data.gpsList.push([\n          Coordinates[j].longitude - 0,\n          Coordinates[j].latitude - 0,\n        ]);\n      }\n      this.tracklist.push(data);\n      this.addtrack(data);\n    }\n  }\n  addtrack(data: any) {\n    let poltlist = data.gpsList;\n    let geometry = new LineString(poltlist);\n    geometry.transform('EPSG:4326', 'EPSG:3857');\n    let feature = new Feature({\n      title: 'LineString',\n      geometry: geometry,\n    });\n    feature.setStyle(\n      new Style({\n        fill: new Fill({\n          color: '#e01919',\n        }),\n        stroke: new Stroke({\n          color: '#3399CC',\n          width: 10,\n        }),\n        text: new Text({\n          font: '16px sans-serif',\n          text: data.userID,\n          offsetX: 20,\n          offsetY: 10,\n          textAlign: 'left',\n        }),\n      })\n    );\n    feature.setId(this.getUUid());\n    feature.changed();\n    this.layersArray[11].getSource().addFeature(feature);\n  }\n  cuttrack() {\n    this.trackshow = !this.trackshow;\n  }\n  cutequipment(){\n    this.equipmentbox = !this.equipmentbox;\n  }\n  equipmentshows(){\n    this.equipmentshow = !this.equipmentshow\n  }\n  chi(obj: any) {\n    this.arr = [];\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n  // 修改本机状态\n  merge() {\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      for (let j = 0; j < this.userListtypes.length; j++) {\n        let type: any = this.userListtypes[j];\n        if (arr == type.userID) {\n          this.arr[i].info.type = type;\n        }\n      }\n    }\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      if (arr == this.rx.userID) {\n        this.arr.splice(i, 1);\n      }\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  selcetuser(ev: any) {\n    // console.log(ev.info.userID);\n    this.userName = ev.info.userID;\n    this.cuttrack();\n  }\n  selcetequipment(ev: any){\n    //  console.log(ev);\n    this.textID.nativeElement.value = ev.deviceID;\n    this.amendtextID.nativeElement.value= ev.deviceID;\n     this.cutequipment()\n  }\n  personnav(ev: any) {\n    // console.log(ev);\n    if (ev.throwover) {\n      // if (ev.throwover.Chatdata) {\n      //   if (this.judgename(ev.throwover.Chatdata.eventParam) == true) {\n      //     this.message.create('warning', '不能转换本机');\n      //   } else {\n      //     if (ev.throwover.info.type.barringFlag == '1') {\n      //       this.message.create('warning', '转换个人已被禁话');\n      //     } else {\n      //       this.rx.changeover(\n      //         ev.throwover.info.userID,\n      //         this.changeoverdata.cmschat.dialogID\n      //       );\n      //       this.outer.emit({ throwovershow: true });\n      //     }\n      //   }\n      // } else {\n      //   if (ev.throwover.info.type.barringFlag == '1') {\n      //     this.message.create('warning', '转换个人已被禁话');\n      //   } else {\n      //     this.rx.changeover(\n      //       ev.throwover.info.userID,\n      //       this.changeoverdata.cmschat.dialogID\n      //     );\n      //     this.outer.emit({ throwovershow: true });\n      //   }\n      // }\n    } else if (ev.item) {\n      this.outer.emit({ item: '0' });\n    } else {\n      this.outer.emit(ev);\n    }\n  }\n  judgename(ev: any) {\n    let judge = false;\n    if (ev.srcID == this.rx.userID || ev.dstID == this.rx.userID) {\n      judge = true;\n    }\n    return judge;\n  }\n  tree(ev: any) {\n    if (ev.planting) {\n      if (ev.planting.info.userType == 2) {\n      } else {\n        if (ev.planting.info.type.devStatus == '0') {\n        } else if (ev.planting.info.type.devStatus == '1') {\n          this.sendService.plantingsendsider(ev.planting);\n        }\n      }\n    } else {\n      this.outer.emit(ev);\n    }\n  }\n}\n","<div class=\"box\">\n    <div class=\"title\">\n        <ul class=\"clearfix\">\n            <!-- <li>人员多选</li> -->\n            <li [ngClass]=\"coverage == 2 ? 'selcet-active' : ''\" nz-dropdown [nzDropdownMenu]=\"circle\" [nzTrigger]=\"'click'\">人员圈选</li>\n            <li [ngClass]=\"person == 3 ? 'selcet-active' : ''\" nz-dropdown [nzDropdownMenu]=\"nclick\" [nzTrigger]=\"'click'\">图层控制</li>\n            <li (click)=\"electronic()\" [ngClass]=\"selcet == 1 ? 'selcet-active' : ''\" *ngIf=\"mapsetting.fence\">\n                电子围栏\n            </li>\n            <li (click)=\"staticlabel()\" #lick [ngClass]=\"selcet == 3 ? 'selcet-active' : ''\" *ngIf=\"mapsetting.mark\">\n                静态标注\n            </li>\n            <li (click)=\"situation()\" [ngClass]=\"selcet == 2 ? 'selcet-active' : ''\" *ngIf=\"mapsetting.trend\">\n                态势标绘\n            </li>\n            <li (click)=\"examinetrack()\" [ngClass]=\"selcet == 4 ? 'selcet-active' : ''\" *ngIf=\"mapsetting.track\">\n                查询轨迹\n            </li>\n            <!-- <li (click)=\"getElectron()\" [ngClass]=\"selcet == 5 ? 'selcet-active' : ''\">\n                获取全部\n            </li> -->\n            <!-- <li>跨屏显示</li> -->\n        </ul>\n    </div>\n    <div *ngIf=\"track\" class=\"track\">\n        <div class=\"select\">\n            <div class=\"nametitle\">查询用户:</div>&nbsp;&nbsp;\n            <div class=\"userName\">\n                <input nz-input placeholder=\"请输入查询目标 \" [(ngModel)]=\"userName \" />\n            </div>\n        </div>\n        <div class=\"selectbox\">\n            <button class=\"selectbutton\" (click)=\"cuttrack() \">选择</button>\n        </div>\n        <div class=\"select\">\n            <div class=\"nametitle\">选择时间:</div>&nbsp;&nbsp;\n            <div class=\"inquiretimer \">\n                <nz-range-picker [(ngModel)]=\"datatimer \" (ngModelChange)=\"changes($event) \" nzShowTime></nz-range-picker>\n            </div>\n        </div>\n\n        <div class=\"inquirebuttonbox\">\n            <button class=\"inquirebutton \" (click)=\"inquire() \">查询</button>\n            <button (click)=\"reset() \" class=\"resetbutton \">重置</button>\n        </div>\n        <div class=\"close\">\n            <span (click)=\"cleartrack()\">全部清除</span>\n        </div>\n    </div>\n\n    <div *ngIf=\"posture\" class=\"posture\">\n        <ul>\n            <li (click)=\"addicon(7)\" [ngClass]=\"add == 7 ? 'li-active' : ''\">\n                <img src=\"assets/img/car.png\" alt=\"\" />\n            </li>\n            <li (click)=\"addicon(8)\" [ngClass]=\"add == 8 ? 'li-active' : ''\">\n                <img src=\"assets/img/dangerousgoods.png\" alt=\"\" />\n            </li>\n            <li (click)=\"addicon(9)\" [ngClass]=\"add == 9 ? 'li-active' : ''\">\n                <img src=\"assets/img/worker.png\" alt=\"\" />\n            </li>\n            <li (click)=\"addicon(10)\" [ngClass]=\"add == 10 ? 'li-active' : ''\">\n                <img src=\"assets/img/medicament.png\" alt=\"\" />\n            </li>\n            <li (click)=\"setPlotSign(7)\" [ngClass]=\"add == 11 ? 'li-active' : ''\">\n                <img src=\"assets/img/yanwei.png\" alt=\"\" />\n            </li>\n            <li (click)=\"setPlotSign(8)\" [ngClass]=\"add == 12 ? 'li-active' : ''\">\n                <img src=\"assets/img/qianji.png\" alt=\"\" />\n            </li>\n            <li (click)=\"addicon(13)\" [ngClass]=\"add == 13 ? 'li-active' : ''\">\n                <img src=\"assets/img/plottext.png\" alt=\"\" />\n            </li>\n        </ul>\n        <div class=\"close\">\n            <span (click)=\"allclear()\">全部清除</span>\n        </div>\n    </div>\n    <!-- 电子围栏 -->\n    <div *ngIf=\"rail\" class=\"railtpye\">\n        <div class=\"railbox\">\n            <div class=\"rail\" (click)=\"polygonGeometry()\" [ngClass]=\"add == 14 ? 'li-active' : ''\">\n                多边形\n            </div>\n            <div class=\"rail\" (click)=\"rectangleGeometry()\" [ngClass]=\"add == 15 ? 'li-active' : ''\">\n                矩形\n            </div>\n            <div class=\"rail\" (click)=\"roundGeometry()\" [ngClass]=\"add == 16 ? 'li-active' : ''\">\n                圆形\n            </div>\n            <div class=\"rail\" (click)=\"wayGeometry()\" [ngClass]=\"add == 17 ? 'li-active' : ''\">\n                路径\n            </div>\n            <div class=\"rail\" (click)=\"hqall()\" [ngClass]=\"add == 18 ? 'li-active' : ''\">\n                全部\n            </div>\n        </div>\n    </div>\n    <div *ngIf=\"labeltpye\" class=\"labeltpye\">\n        <ul>\n            <li (click)=\"addicon(3)\" [ngClass]=\"add == 3 ? 'li-active' : ''\">\n                <img src=\"assets/img/firehydrant.png \" alt=\" \" />\n            </li>\n            <li (click)=\"addicon(4)\" [ngClass]=\"add == 4 ? 'li-active' : ''\">\n                <img src=\"assets/img/sourcewater.png \" alt=\" \" />\n            </li>\n            <li (click)=\"addicon(5)\" [ngClass]=\"add == 5 ? 'li-active' : ''\">\n                <img src=\"assets/img/firefightingagency.png \" alt=\" \" />\n            </li>\n            <li (click)=\"addicon(6)\" [ngClass]=\"add == 6 ? 'li-active' : ''\">\n                <img src=\"assets/img/VIPunit.png \" alt=\" \" />\n            </li>\n            <li (click)=\"addicon(19)\" [ngClass]=\"add == 19 ? 'li-active' : ''\">\n                <img src=\"assets/img/ic_device_cur32.png\" alt=\" \" />\n            </li>\n            <li (click)=\"addicon(20)\" [ngClass]=\"add == 20 ? 'li-active' : ''\">\n                <img src=\"assets/img/广播_02.png\" alt=\" \" />\n            </li>\n        </ul>\n    </div>\n\n    <div id=\"map\"></div>\n    <div class=\"zoom\">\n        <div (click)=\"zoomout()\">+</div>\n        <div (click)=\"zoomin()\">-</div>\n    </div>\n    <div class=\"ol-popup-rail\" #electronicrail>\n        <div class=\"popupclose\" (click)=\"closepopup()\"><i nz-icon nzType=\"close\" nzTheme=\"outline\"></i></div>\n        <div class=\"ol-popup-div\">\n            <div>名称:&nbsp;&nbsp;</div>\n            <input type=\"text\" size=\"12 \" maxlength=\"32 \" autocomplete=\"off\" [(ngModel)]=\"railname\" />\n        </div>\n        <div class=\"ol-popup-div\">\n            <div>状态:&nbsp;&nbsp;</div>\n            <nz-radio-group [(ngModel)]=\"radiovalid\">\n                <label nz-radio nzValue=\"1\">启用</label>\n                <label nz-radio nzValue=\"0\">禁用</label>\n            </nz-radio-group>\n        </div>\n        <div class=\"ol-popup-div\">\n            <div>类型:&nbsp;&nbsp;</div>\n            <div>\n                <span *ngIf=\"railtype == 1\">多边形</span\n        ><span *ngIf=\"railtype == 2\">矩形</span\n        ><span *ngIf=\"railtype == 3\">圆形</span\n        ><span *ngIf=\"railtype == 4\">路径</span>\n            </div>\n        </div>\n        <div class=\"ol-popup-div\">\n            <div>方向:&nbsp;&nbsp;</div>\n            <nz-radio-group [(ngModel)]=\"areaExclude\">\n                <label nz-radio nzValue=\"1\">进入</label>\n                <label nz-radio nzValue=\"0\">离开</label>\n            </nz-radio-group>\n        </div>\n        <div class=\"ol-popup-div\">\n            <nz-tabset>\n                <nz-tab nzTitle=\"时间段\">\n                    <div class=\"tabsetbox\">\n                        <div class=\"exclude\">\n                            <label nz-checkbox [(ngModel)]=\"timeExclude\">排除</label>\n                        </div>\n                        <div class=\"timerbox\">\n                            <div style=\"line-height: 32px\">起始:&nbsp;&nbsp;</div>\n                            <div>\n                                <nz-time-picker [(ngModel)]=\"starttime\" nzFormat=\"HH:mm\"></nz-time-picker>\n                            </div>\n                            <div class=\"add\" style=\"line-height: 32px\">结束:&nbsp;&nbsp;</div>\n                            <div>\n                                <nz-time-picker [(ngModel)]=\"endtime\" nzFormat=\"HH:mm\"></nz-time-picker>\n                            </div>\n                            <div class=\"add\" (click)=\"addtimer()\"><button>添加</button></div>\n                        </div>\n                        <div class=\"timerlist\">\n                            <div class=\"timer\" *ngFor=\"let time of timerlist; let i = index\">\n                                <div class=\"check\">\n                                    <label nz-checkbox [(ngModel)]=\"time.enable\"></label>\n                                </div>\n                                <div style=\"line-height: 50px\">起始:&nbsp;&nbsp;</div>\n                                <div style=\"line-height: 50px\">\n                                    <nz-time-picker [(ngModel)]=\"time.startTime\" nzFormat=\"HH:mm\" nzDisabled></nz-time-picker>\n                                </div>\n                                <div class=\"add\" style=\"line-height: 50px\">\n                                    结束:&nbsp;&nbsp;\n                                </div>\n                                <div style=\"line-height: 50px\">\n                                    <nz-time-picker [(ngModel)]=\"time.endTime\" nzFormat=\"HH:mm\" nzDisabled></nz-time-picker>\n                                </div>\n                                <div class=\"del\">\n                                    <button (click)=\"deltime(i)\">删除</button>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </nz-tab>\n                <nz-tab nzTitle=\"用户\">\n                    <div class=\"tabsetbox\">\n                        <div class=\"exclude\">\n                            <label nz-checkbox [(ngModel)]=\"userExclude\">排除</label>\n                        </div>\n                        <div class=\"userlist\">\n                            <div class=\"user\" *ngFor=\"let user of astrictuserlist; let i = index\">\n                                <div class=\"checkshow\">\n                                    <label nz-checkbox [(ngModel)]=\"user.checkshow\"></label>\n                                </div>\n                                <div class=\"username\" *ngIf=\"user.info\">\n                                    {{ user.info.userID }}\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </nz-tab>\n            </nz-tabset>\n        </div>\n        <div class=\"btn-group btn-group-div\" [style.display]=\"locality == 0? 'block' : 'none'\">\n            <button class=\"bgbtn02\" #confirmrail>添加</button>\n            <button class=\"bgbtn02\" #cancelrail>取消</button>\n        </div>\n        <div class=\"btn-group btn-group-div\" [style.display]=\"locality == 1? 'block' : 'none'\">\n            <button class=\"bgbtn02\" #modifyfence>修改</button>\n            <button class=\"bgbtn02\" #delfence>删除</button>\n        </div>\n    </div>\n    <div id=\"popupstatic\" class=\"ol-popup\" #mdfcontainer>\n        <div class=\"ol-popup-div\">\n            <div>名称:&nbsp;&nbsp;</div>\n            <input type=\"text \" id=\"textname \" size=\"12 \" maxlength=\"32 \" autocomplete=\"off\" #textname />\n        </div>\n        <div class=\"ol-popup-div\">\n            <label>描述:&nbsp;&nbsp;</label>\n            <input type=\"text\" id=\"textinf \" size=\"12 \" maxlength=\"512 \" autocomplete=\"off\" #textinf />\n        </div>\n        <div class=\"btn-group btn-group-div\">\n            <button class=\"bgbtn02\" id=\"btnok\" #btnok>确定</button>\n            <button class=\"bgbtn02\" id=\"btncancel\" #btncancel>取消</button>\n        </div>\n    </div>\n    <div id=\"popupstatic\" class=\"device-popup\" #devicecontainer>\n        <div class=\"ol-popup-div\">\n            <label>ID:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>\n            <input style=\"width:110px\" type=\"text\" id=\"textinf \" size=\"12 \" maxlength=\"512 \" autocomplete=\"off\" #textID />\n            <div class=\"selectbox\">\n                <button class=\"selectbutton\" (click)=\"cutequipment() \">选择</button>\n            </div>\n        </div>\n        <div class=\"ol-popup-div\">\n            <div>名称:&nbsp;&nbsp;</div>\n            <input type=\"text \" id=\"textname \" size=\"12 \" maxlength=\"32 \" autocomplete=\"off\" #textdevicename />\n        </div>\n        <div class=\"ol-popup-div\">\n            <label>描述:&nbsp;&nbsp;</label>\n            <input type=\"text\" id=\"textinf \" size=\"12 \" maxlength=\"512 \" autocomplete=\"off\" #textdeviceinf />\n        </div>\n        <div class=\"btn-group btn-group-div\">\n            <button class=\"bgbtn02\" id=\"devicebtnok\" #devicebtnok>确定</button>\n            <button class=\"bgbtn02\" id=\"devicecancel\" #devicecancel>取消</button>\n        </div>\n    </div>\n\n    <div id=\"popupstatic\" class=\"device-popup\" #deviceamend>\n        <div class=\"ol-popup-div\">\n            <label>ID:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>\n            <input style=\"width:110px\" type=\"text\" id=\"textinf \" size=\"12 \" maxlength=\"512 \" autocomplete=\"off\" #amendtextID />\n            <div class=\"selectbox\">\n                <button class=\"selectbutton\" (click)=\"cutequipment() \">选择</button>\n            </div>\n        </div>\n        <div class=\"ol-popup-div\">\n            <div>名称:&nbsp;&nbsp;</div>\n            <input type=\"text \" id=\"textname \" size=\"12 \" maxlength=\"32 \" autocomplete=\"off\" #amendtextname />\n        </div>\n        <div class=\"ol-popup-div\">\n            <label>描述:&nbsp;&nbsp;</label>\n            <input type=\"text\" id=\"textinf \" size=\"12 \" maxlength=\"512 \" autocomplete=\"off\" #amendtextinf />\n        </div>\n        <div class=\"btn-group btn-group-div\">\n            <button class=\"bgbtn02\" id=\"amenddevice\" #amenddevice>修改</button>\n            <button class=\"bgbtn02\" id=\"amenddelete\" #amenddelete>删除</button>\n            <button class=\"bgbtn02\" id=\"amendcancel\" #amendcancel>取消</button>\n        </div>\n    </div>\n\n    <div id=\"popupstatic\" class=\"ol-popup\" #statictips>\n        <div class=\"ol-popup-div\">\n            <div>名称:&nbsp;&nbsp;</div>\n            <input type=\"text \" size=\"12 \" maxlength=\"32 \" #modificationname />\n        </div>\n        <div class=\"ol-popup-div\">\n            <label>描述:&nbsp;&nbsp;</label>\n            <input type=\"text\" size=\"12 \" maxlength=\"512 \" #modificationinf />\n        </div>\n        <div class=\"btn-group btn-group-div\">\n            <button class=\"bgbtn02\" #modification>修改</button>\n            <button class=\"bgbtn02\" #delete>删除</button>\n        </div>\n    </div>\n\n    <div id=\"popupplot \" class=\"ol-popup-textplot\" #popupplot>\n        <div class=\"ol-popup-div\">\n            <!-- <a>描述:&nbsp;&nbsp;</a> -->\n            <label>描述:&nbsp;&nbsp;</label>\n            <input type=\"text \" id=\"textplot \" size=\"12 \" maxlength=\"512 \" #popupplottext />\n        </div>\n        <div class=\"btn-group btn-group-div\">\n            <button class=\"bgbtn02\" id=\"textplotok\" #popupplotconfirm>确定</button>\n            <button class=\"bgbtn02\" id=\"textplotcancel \" #popupplotcancel>\n        取消\n      </button>\n        </div>\n    </div>\n    <div id=\"popup_plot_tips \" class=\"ol-popup-del\" #myBox2>\n        <div class=\"btn-group\">\n            <button class=\"bgbtn02\" id=\"plotdel \" #plotdel>删除</button>\n        </div>\n    </div>\n    <div #GPSuser class=\"person\">\n        <app-personalinformation [person]=\"gpsuser\" [personal]=\"personal\" [changeovershow]=\"changeovershow\" (outer)=\"personnav($event)\"></app-personalinformation>\n    </div>\n    <div #equipmentframe class=\"equipment\">\n        <app-equipmentframe [equipment]=\"equipment\" (outer)=\"tree($event)\"></app-equipmentframe>\n    </div>\n</div>\n<nz-dropdown-menu #nclick=\"nzDropdownMenu\">\n    <div class=\"controlbox\">\n        <div class=\"control\" *ngFor=\"let item of controllist; let i = index\">\n            <div class=\"circle\" (click)=\"andrs(item, i)\">\n                <img src=\"assets/img/对号.png \" alt=\" \" *ngIf=\"item.show\" />\n            </div>\n            <div class=\"circlename\" [ngClass]=\"item.show ? ' ' : 'active '\">\n                {{ item.name }}\n            </div>\n        </div>\n    </div>\n</nz-dropdown-menu>\n<nz-dropdown-menu #circle=\"nzDropdownMenu\">\n    <div class=\"popcircle\">\n        <div (click)=\"DrawCricle()\">圆形圈选</div>\n        <div (click)=\"DrawRect()\">矩形圈选</div>\n        <div>路径圈选</div>\n    </div>\n</nz-dropdown-menu>\n<div class=\"selecttrack\" *ngIf=\"trackshow\">\n    <div class=\"trackbox\">\n        <div class=\"nav\" appDrag>\n            <div class=\"setname\">\n                <div>选择用户</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"cuttrack()\"></i>\n            </div>\n            <div class=\"sethint\">\n                <div class=\"root\">\n                    <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n                        <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n                    </div>\n                    <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n                        <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n                    </div>\n                    <div class=\"userName \">\n                        {{ rawData.root }}\n                    </div>\n                </div>\n                <div [style.display]=\"shows ? 'block' : 'none' \">\n                    <div *ngFor=\"let item of arr; let i=index \">\n                        <div class=\"userbox\" (click)=\"selcetuser(item)\">\n                            <div class=\"userstatus \" *ngIf=\"item.info \">\n                                <div class=\"infoimg \" *ngIf=\"item.info.type.devStatus==0 \">\n                                    <img src=\"assets/img/head.png \" alt=\" \" />\n                                </div>\n                                <div class=\"buleStatus \" *ngIf=\"item.info.type.devStatus==1 \">\n                                    <img src=\"assets/img/head.png \" alt=\" \" />\n                                </div>\n                                <div class=\"greenStatus \" *ngIf=\"item.info.type.devStatus==2 \">\n                                    <img src=\"assets/img/head.png \" alt=\" \" />\n                                </div>\n                            </div>\n                            <div class=\"tpye \" *ngIf=\"item.info \">\n                                <img src=\"assets/img/type_android.png \" alt=\" \" *ngIf=\"item.info.userType=='1' \" />\n                                <img src=\"assets/img/type_pc.png \" alt=\" \" *ngIf=\"item.info.userType=='2' \" />\n                                <img src=\"assets/img/type_IPC.png \" alt=\" \" *ngIf=\"item.info.userType=='3' \" />\n                                <img src=\"assets/img/type_DB.png \" alt=\" \" *ngIf=\"item.info.userType=='4' \" />\n                            </div>\n                            <div class=\"userName \" *ngIf=\"item.info \">\n                                {{ item.info.userName }}\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"selecttrack\" *ngIf=\"equipmentbox\">\n    <div class=\"trackbox\">\n        <div class=\"nav\" appDrag>\n            <div class=\"setname\">\n                <div>选择设备</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"cutequipment()\"></i>\n            </div>\n            <div class=\"sethint\">\n                <div class=\"root\">\n                    <div [style.display]=\"equipmentshow ? 'block' : 'none'\" class=\"imgbox\" (click)=\"equipmentshows()\">\n                        <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n                    </div>\n                    <div [style.display]=\"!equipmentshow ? 'block' : 'none'\" class=\"imgbox\" (click)=\"equipmentshows()\">\n                        <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n                    </div>\n                    <div class=\"userName \">\n                        {{ equipmentdata.root }}\n                    </div>\n                </div>\n                <div [style.display]=\"equipmentshow ? 'block' : 'none' \">\n                    <div *ngFor=\"let item of equipmentdata.deviceList; let i=index \">\n                        <div *ngIf=\"add==19\">\n                            <div class=\"userbox\" (click)=\"selcetequipment(item)\" *ngIf=\"item.deviceType=='1'\">\n                                <div class=\"userstatus\">\n                                    <div class=\"infoimg\" *ngIf=\"item.deviceStatus==0 \">\n                                        <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item.deviceType == 1\" />\n\n                                    </div>\n                                    <div class=\"buleStatus \" *ngIf=\"item.deviceStatus==1 \">\n                                        <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item.deviceType == 1\" />\n\n                                    </div>\n                                    <div class=\"greenStatus \" *ngIf=\"item.deviceStatus==2 \">\n                                        <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item.deviceType == 1\" />\n                                    </div>\n                                </div>\n                                <div class=\"userName\">\n                                    {{ item.deviceName }}\n                                </div>\n                            </div>\n                        </div>\n                        <div *ngIf=\"add==20\">\n                            <div class=\"userbox\" (click)=\"selcetequipment(item)\" *ngIf=\"item.deviceType=='2'\">\n                                <div class=\"userstatus\">\n                                    <div class=\"infoimg\" *ngIf=\"item.deviceStatus==0 \">\n\n                                        <img src=\"assets/img/广播_01.png\" alt=\"\" />\n                                    </div>\n                                    <div class=\"buleStatus \" *ngIf=\"item.deviceStatus==1 \">\n                                        <img src=\"assets/img/广播_01.png\" alt=\"\" />\n                                    </div>\n                                    <div class=\"greenStatus \" *ngIf=\"item.deviceStatus==2 \">\n                                        <img src=\"assets/img/广播_01.png\" alt=\"\" />\n                                    </div>\n                                </div>\n                                <div class=\"userName\">\n                                    {{ item.deviceName }}\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  EventEmitter,\n  Output,\n  HostListener,\n  ViewChild,\n  ElementRef,\n} from '@angular/core';\n@Component({\n  selector: 'app-historyav',\n  templateUrl: './historyav.component.html',\n  styleUrls: ['./historyav.component.less'],\n})\nexport class HistoryavComponent implements OnInit {\n  @Output() close = new EventEmitter<void>();\n  @ViewChild('video') video: any;\n  @ViewChild('container') container: any;\n  videosrc: any = '';\n  show = false;\n  videoname = '';\n  timer = '';\n  isResizing = false;\n  lastDownX = 0;\n  lastDownY = 0;\n  videoratio: any;\n  constructor(private elementRef: ElementRef) {}\n  ngOnInit(): void {}\n  ngAfterViewInit() {\n   \n  }\n  onClose() {\n    this.close.emit();\n  }\n}\n","<div class=\"box\">\n    <div class=\"videos\">\n        <div class=\"videotierbox\" cdkDrag>\n            <div class=\"videotier\">\n                <div class=\"videonav\" cdkDragHandle>\n                    <span>{{videoname}}</span>&nbsp;&nbsp;<span>{{timer}}</span>\n                </div>\n                <div class=\"closebox \">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"onClose() \"></i>\n                </div>\n                <div class=\"videobox\" #container>\n                    <video #video [src]=\"videosrc\" autoplay controls=\"controls\"></video>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  Output,\n  EventEmitter,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { ResourceService } from '../../protocol/resource/resource.service';\n@Component({\n  selector: 'app-inquire-tree',\n  templateUrl: './inquire-tree.component.html',\n  styleUrls: ['./inquire-tree.component.less'],\n})\nexport class InquireTreeComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() uservalue: any = '';\n  @Input() rawData: any = '';\n  userlist: any = [];\n  rootname: any = '';\n  shows: boolean = true;\n  newarr: any = [];\n  arr: any = []; //渲染列表\n  searchtype: number = 1;\n  constructor(private ws: WebService, private datastact: ResourceService) {}\n\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n\n      switch (respcmdid) {\n        case state.OWO_CMD_GET_MEMLIST + 1:\n          // console.log(resultdata);\n          this.userlist = resultdata.childs;\n          this.arr = this.userlist;\n          this.rootname = resultdata.root;\n          break;\n        default:\n          break;\n      }\n    });\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.uservalue) {\n      this.arr = this.userlist;\n      if (this.uservalue == '') {\n        this.searchtype = 1;\n      } else {\n        if (this.rebuildData(this.uservalue, this.userlist).length == 0) {\n          this.searchtype = 2;\n        } else {\n          this.arr = this.rebuildData(this.uservalue, this.userlist);\n        }\n      }\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  search(ev: any) {\n    this.outer.emit({ data: ev.userName });\n    // this.userName = ev.userName;\n  }\n  rebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.info.userName != undefined) {\n        if (element.info.userName.indexOf(value) > -1) {\n          // 判断条件\n          this.newarr.push(element);\n        } else {\n          if (element.info.childs && element.info.childs.length > 0) {\n            let redata = this.rebuildData(value, element.info.childs);\n            let obj = {\n              ...element,\n              children: redata,\n            };\n            if (redata && redata.length > 0) {\n              this.newarr.push(obj);\n            }\n          }\n        }\n      }\n    });\n    return this.newarr;\n  }\n}\n","<div class=\"usernav\" *ngIf=\"searchtype == 1\">\n    <div (click)=\"show()\" class=\"rootname\">\n        <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\">\n            <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n        </div>\n        <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\">\n            <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n        </div>\n        <div class=\"root\">\n            {{ rootname }}\n        </div>\n        <div class=\"blank\"></div>\n    </div>\n    <div [style.display]=\"shows ? 'block' : 'none'\">\n        <div *ngFor=\"let item of arr; let i = index\">\n            <div class=\"infobox\">\n                <div class=\"infoimgbox\">\n                    <div class=\"infoimg\">\n                        <img src=\"assets/img/head.png\" alt=\"\" />\n                    </div>\n                </div>\n                <div class=\"tpye\">\n                    <img src=\"assets/img/type_android.png\" alt=\"\" *ngIf=\"item.info.userType == '1'\" />\n                    <img src=\"assets/img/type_pc.png\" alt=\"\" *ngIf=\"item.info.userType == '2'\" />\n                    <img src=\"assets/img/type_IPC.png\" alt=\"\" *ngIf=\"item.info.userType == '3'\" />\n                    <img src=\"assets/img/type_DB.png\" alt=\"\" *ngIf=\"item.info.userType == '4'\" />\n                </div>\n                <div class=\"blank\">\n                    <div class=\"rootuserName\">{{ item.info.userName }}</div>\n                    <div class=\"search\" (click)=\"search(item.info)\">查询</div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"searchtype == 2\" class=\"searching\">未检索的到用户</div>","import {\n  Component,\n  OnInit,\n  Output,\n  EventEmitter,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { ResourceService } from '../../protocol/resource/resource.service';\n\n@Component({\n  selector: 'app-inquire-equipment',\n  templateUrl: './inquire-equipment.component.html',\n  styleUrls: ['./inquire-equipment.component.less']\n})\nexport class InquireEquipmentComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() eqipmentValue: any = '';\n  searchtype: number = 1;\n  shows: boolean = true;\n  arr: any = []; //渲染列表\n  newarr: any = [];\n  userlist: any = [];\n  rootname: any = '';\n  constructor(private datastact: ResourceService, private ws: WebService) { }\n\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n      switch (respcmdid) {\n        case state.OWO_CMD_GET_DEV_LIST + 1: {\n          this.userlist = resultdata.deviceList;\n          this.arr =  this.userlist\n          this.rootname = resultdata.root;\n          break;\n        }\n        default:\n      }\n    });\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.eqipmentValue) {\n      this.arr = this.userlist\n      if (this.eqipmentValue == '') {\n        this.searchtype = 1;\n      } else {\n        if (this.rebuildData(this.eqipmentValue, this.arr).length == 0) {\n          this.searchtype = 2;  \n        } else {\n          this.arr = this.rebuildData(this.eqipmentValue, this.arr);\n        }\n      }\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  search(ev: any) {\n    this.outer.emit({ data: ev.deviceName});\n  }\n  rebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.deviceName != undefined) {\n        if (element.deviceName.indexOf(value) > -1) {\n          // 判断条件\n          this.newarr.push(element);\n        } else {\n          if (element.childs && element.childs.length > 0) {\n            let redata = this.rebuildData(value, element.childs);\n            let obj = {\n              ...element,\n              children: redata,\n            };\n            if (redata && redata.length > 0) {\n              this.newarr.push(obj);\n            }\n          }\n        }\n      }\n    });\n    return this.newarr;\n  }\n}\n","<div *ngIf=\"searchtype == 1\" class=\"usernav\">\n    <div (click)=\"show()\" class=\"rootname\">\n        <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\">\n            <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n        </div>\n        <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\">\n            <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n        </div>\n        <div class=\"root\">\n            {{ rootname }}\n        </div>\n        <div class=\"blank\"></div>\n    </div>\n    <div [style.display]=\"shows ? 'block' : 'none'\">\n        <div *ngFor=\"let item of arr; let i = index\">\n            <div class=\"infobox\">\n                <div class=\"infoimgbox\">\n                    <div class=\"infoimg\">\n                        <img src=\"assets/img/head.png\" alt=\"\" />\n                    </div>\n                </div>\n                <div class=\"tpye\">\n                    <img src=\"assets/img/type_android.png\" alt=\"\" *ngIf=\"item.deviceType == '1'\" />\n                    <img src=\"assets/img/type_pc.png\" alt=\"\" *ngIf=\"item.deviceType == '2'\" />\n                    <img src=\"assets/img/type_IPC.png\" alt=\"\" *ngIf=\"item.deviceType== '3'\" />\n                    <img src=\"assets/img/type_DB.png\" alt=\"\" *ngIf=\"item.deviceType == '4'\" />\n                </div>\n                <div class=\"blank\">\n                    <div class=\"rootuserName\"> {{ item.deviceName}}</div>\n                    <div class=\"search\" (click)=\"search(item)\">查询</div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"searchtype == 2\" class=\"searching\">未检索的到用户</div>","import {\n  Component,\n  Input,\n  OnInit,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n} from '@angular/core';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { WebService } from '../protocol/rtc/web.service';\nimport { HistoryavComponent } from './historyav/historyav.component';\nimport { OverallService } from '../common/overall.service';\nimport { ResourceService } from '../protocol/resource/resource.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n@Component({\n  selector: 'app-history',\n  templateUrl: './history.component.html',\n  styleUrls: ['./history.component.less'],\n})\nexport class HistoryComponent implements OnInit {\n  @Input() broadside: any;\n  userlist: any = [];\n  rootname: any = '';\n  shows: boolean = true;\n  userName: any = '';\n  datatimer: any = null;\n  startTime: any = '';\n  endTime: any = '';\n  offset = 0;\n  page: number = 0; //第几页\n  count: number = 20; //页的大小\n  total: number = 0; //总数量\n  totalpages: number = 0; ///总共有几页\n  videocommunication: any = [];\n  videosrc: any = '';\n  videobox: boolean = false;\n  operationclass = 'content';\n  cutlist = 'imges';\n  cuttype = 'all';\n  checked = false;\n  indeterminate = false;\n  subscription: any;\n  leftsider: any;\n  item: number = 0;\n  inputValue: any = '';\n  uservalue: any = '';\n  inputeqipmentValue: any = '';\n  eqipmentValue: any = '';\n  vodtree = true;\n  @ViewChild('container', { read: ViewContainerRef }) container: any;\n  childComponentRefs: ComponentRef<HistoryavComponent>[] = [];\n  lastComponentPosition = 0;\n  module: any;\n  constructor(\n    private rx: RxService,\n    private ws: WebService,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private sendService: OverallService,\n    private datastate: ResourceService,\n    private message: NzMessageService\n  ) {\n    this.subscription = this.sendService.sendsider$.subscribe((message) => {\n      this.leftsider = message;\n    });\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        this.operationclass = 'content';\n      } else if (this.broadside == true) {\n        this.operationclass = 'sidebar';\n      }\n    }\n  }\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n      // if (nav.fileList) {\n      //   this.videocommunication = nav.fileList;\n      //   this.addbgc()\n      // }\n      if (nav.fileCount) {\n        this.total = nav.fileCount;\n        this.totalpages = Math.ceil(this.total / this.count); ///总共有几页\n      }\n      switch (respcmdid) {\n        case state.OWO_CMD_GET_MEMLIST + 1:\n          this.userlist = resultdata.childs;\n          this.rootname = resultdata.root;\n          break;\n        case state.OWO_CMD_STORE_GET_FILE_RECORD + 1: {\n          this.videocommunication = resultdata.fileList;\n          this.videocommunication = this.videocommunication.map((item: any) => ({\n            ...item,\n            // checked: true,\n            timeLength: this.getTime(item.timeLength)\n          }));\n          \n          console.log(this.videocommunication);\n          this.addbgc();\n          break;\n        }\n\n        case state.OWO_CMD_STORE_GET_FILE_COUNT + 1: {\n          // this.videocommunication =resultdata.fileList;\n          // this.addbgc()\n          // this.total = nav.fileCount;\n          // this.totalpages = Math.ceil(this.total / this.count); ///总共有几页\n          break;\n        }\n        default:\n          break;\n      }\n    });\n    this.module = this.datastate.module;\n  }\n  addbgc() {\n    for (let i = 0; i < this.videocommunication.length; i++) {\n      if (\n        this.videocommunication[i].fileType == 'MP4' ||\n        this.videocommunication[i].fileType == 'mp4'\n      ) {\n        var index = this.videocommunication[i].filePath.lastIndexOf('.');\n        let str = this.videocommunication[i].filePath.substring(0, index + 1);\n        this.videocommunication[i].bgcimg =\n          'https://172.16.133.101:8810' + str + 'jpg';\n      }\n    }\n  }\n  titles(ev: number): void {\n    this.item = ev;\n  }\n  qipment() {\n    this.eqipmentValue = this.inputeqipmentValue;\n  }\n  qipmentempty() {\n    this.inputeqipmentValue = '';\n    this.eqipmentValue = '';\n  }\n  searchTree() {\n    this.uservalue = this.inputValue;\n  }\n  empty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  sider() {\n    this.leftsider = !this.leftsider;\n    this.sendService.sendsider(this.leftsider);\n  }\n  tree(ev: any) {\n    this.userName = ev.data;\n    this.rx.testGetStoreFileCount(this.userName, '', '');\n    this.rx.testGetStoreFileList(\n      this.userName,\n      '',\n      '',\n      this.offset,\n      this.count\n    );\n    this.page = 1;\n    this.checked = false;\n  }\n  allcheck(ev: any) {\n    this.indeterminate = false;\n    if (this.checked == true) {\n      this.videocommunication = this.videocommunication.map((item: any) => ({\n        ...item,\n        checked: true,\n      }));\n    } else {\n      this.videocommunication = this.videocommunication.map((item: any) => ({\n        ...item,\n        checked: false,\n      }));\n    }\n  }\n  updateSingleChecked(): void {\n    console.log(this.videocommunication);\n    if (this.videocommunication.every((item: any) => !item.checked)) {\n      this.checked = false;\n      this.indeterminate = false;\n    } else if (this.videocommunication.every((item: any) => item.checked)) {\n      this.checked = true;\n      this.indeterminate = false;\n    } else {\n      this.indeterminate = true;\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  search(ev: any) {\n    this.userName = ev.userName;\n  }\n  changes(result: any): void {\n    for (let i = 0; i < result.length; i++) {\n      this.startTime = this.time(result[0]);\n      this.endTime = this.time(result[1]);\n    }\n  }\n  time(timer: any) {\n    var date = new Date(timer);\n    return (\n      date.getFullYear() +\n      '-' +\n      (date.getMonth() + 1) +\n      '-' +\n      date.getDate() +\n      ' ' +\n      this.checkTime(date.getHours()) +\n      ':' +\n      this.checkTime(date.getMinutes()) +\n      ':' +\n      this.checkTime(date.getSeconds())\n    );\n    //最后显示yyyy-MM-dd hh:mm:ss\n  }\n  checkTime(i: any) {\n    if (i < 10) {\n      i = '0' + i;\n    }\n    return i;\n  }\n  // 重置\n  reset() {\n    this.datatimer = null;\n    this.userName = '';\n    this.total = 0;\n    this.videocommunication = [];\n    this.page = 0;\n    this.offset = 0;\n    this.totalpages = 0;\n  }\n  // 查询\n  inquire() {\n    this.rx.testGetStoreFileCount(this.userName, this.startTime, this.endTime);\n    this.page = 1;\n    this.checked = false;\n    this.offset = 0;\n    this.inquirelist();\n  }\n  inquirelist() {\n    this.checked = false;\n    this.indeterminate = false;\n    this.videocommunication = this.videocommunication.map((item: any) => ({\n      ...item,\n      checked: false,\n    }));\n    this.rx.testGetStoreFileList(\n      this.userName,\n      this.startTime,\n      this.endTime,\n      this.offset,\n      this.count\n    );\n  }\n  //点击前一个\n  prePage() {\n    if (this.page > 1) {\n      //page减1让\n      this.page--;\n      this.offset -= this.count;\n      this.inquirelist();\n    }\n  }\n  //点击后一个\n  nextPage() {\n    //判断是否小于最大页数\n    if (this.page < this.totalpages) {\n      this.page++;\n      this.offset += this.count;\n      this.inquirelist();\n    }\n  }\n  play(item: any) {\n    const childComponentFactory =\n      this.componentFactoryResolver.resolveComponentFactory(HistoryavComponent);\n    const childComponentRef = this.container.createComponent(\n      childComponentFactory\n    );\n    childComponentRef.instance.videosrc =\n      'https://172.16.133.101:8810' + item.filePath;\n    childComponentRef.instance.videoname = item.userName;\n    childComponentRef.instance.timer = item.startTime;\n    childComponentRef.instance.close.subscribe(() => {\n      this.destroyChildComponent(childComponentRef);\n    });\n    const componentHostElement = childComponentRef.location.nativeElement;\n    componentHostElement.style.position = 'absolute';\n    if (this.childComponentRefs.length > 1) {\n      const lastComponentPosition = this.lastComponentPosition + 10;\n      componentHostElement.style.top = `${lastComponentPosition}px`;\n      this.lastComponentPosition = lastComponentPosition;\n    } else {\n      componentHostElement.style.top = '0';\n      this.lastComponentPosition = 0;\n    }\n    this.childComponentRefs.push(childComponentRef);\n  }\n  destroyChildComponent(childComponentRef: ComponentRef<HistoryavComponent>) {\n    const index = this.childComponentRefs.indexOf(childComponentRef);\n    if (index >= 0) {\n      this.childComponentRefs.splice(index, 1);\n      childComponentRef.destroy();\n    }\n  }\n  alldownload() {\n    console.log(this.videocommunication);\n    for (let i = 0; i < this.videocommunication.length; i++) {\n      let item = this.videocommunication[i];\n      if (item.checked == true) {\n        this.download(item.filePath);\n      }\n    }\n    this.videocommunication = this.videocommunication.map((item: any) => ({\n      ...item,\n      checked: false,\n    }));\n  }\n  download(url: any) {\n    fetch('https://172.16.133.101:8810' + url).then((res) =>\n      res.blob().then((blob) => {\n        var localfurl = window.URL.createObjectURL(blob);\n        var a = document.createElement('a');\n        var filename = url.split('/')[url.split('/').length - 1];\n        a.href = localfurl;\n        a.download = filename;\n        a.click();\n        window.URL.revokeObjectURL(localfurl);\n      })\n    );\n    this.message.create('success', '已添加到下载列表');\n  }\n  close() {\n    this.videobox = false;\n  }\n  cutpattern(ev: any) {\n    this.cutlist = ev;\n  }\n  cuttypes(ev: any) {\n    this.cuttype = ev;\n  }\n  getTime(value: any) {\n    let result = parseInt(value);\n    let h:any =\n      Math.floor(result / 3600) < 10\n        ? '0' + Math.floor(result / 3600)\n        : Math.floor(result / 3600);\n    let m:any =\n      Math.floor((result / 60) % 60) < 10\n        ? '0' + Math.floor((result / 60) % 60)\n        : Math.floor((result / 60) % 60);\n    let s:any = \n      Math.floor(result % 60) < 10\n        ? '0' + Math.floor(result % 60)\n        : Math.floor(result % 60);\n        // console.log(h,m,s);\n    let res = '';\n    if (h !== '00') res += `${h}:`;\n    if (m !== '00') res += `${m}:`;\n    res += `${s}`;\n    // console.log(res);\n    return res;\n  }\n}\n","<div class=\"box\" class=\"{{ operationclass }}\">\n  <div class=\"sider\" [style.display]=\"leftsider ? 'block' : 'none'\">\n    <div class=\"title\">\n      <div\n        class=\"all\"\n        [ngClass]=\"item == 0 ? 'active' : ''\"\n        (click)=\"titles(0)\"\n      >\n        用户\n      </div>\n      <div\n        *ngIf=\"module.device.enable\"\n        class=\"duijiang\"\n        [ngClass]=\"item == 1 ? 'active' : ''\"\n        (click)=\"titles(1)\"\n      >\n        设备\n      </div>\n    </div>\n    <div class=\"search\" [style.display]=\"item == 0 ? 'block' : 'none'\">\n      <nz-input-group\n        [nzPrefix]=\"prefixTemplateUser\"\n        [nzSuffix]=\"inputClearTpl\"\n      >\n        <input\n          type=\"text\"\n          nz-input\n          [(ngModel)]=\"inputValue\"\n          (keyup.enter)=\"searchTree()\"\n        />\n      </nz-input-group>\n      <ng-template #prefixTemplateUser>\n        <i nz-icon nzType=\"search\" class=\"icon\"></i>\n      </ng-template>\n      <ng-template #inputClearTpl>\n        <div *ngIf=\"inputValue\" class=\"icon\">\n          <i\n            nz-icon\n            nzType=\"close-circle\"\n            nzTheme=\"outline\"\n            (click)=\"empty()\"\n          ></i>\n        </div>\n      </ng-template>\n    </div>\n    <div class=\"search\" [style.display]=\"item == 1 ? 'block' : 'none'\">\n      <nz-input-group [nzPrefix]=\"qipmentTemplate\" [nzSuffix]=\"qipmentClearTpl\">\n        <input\n          type=\"text\"\n          nz-input\n          [(ngModel)]=\"inputeqipmentValue\"\n          (keyup.enter)=\"qipment()\"\n        />\n      </nz-input-group>\n      <ng-template #qipmentTemplate>\n        <i nz-icon nzType=\"search\" class=\"icon\"></i>\n      </ng-template>\n      <ng-template #qipmentClearTpl>\n        <div *ngIf=\"inputeqipmentValue\" class=\"icon\">\n          <i\n            nz-icon\n            nzType=\"close-circle\"\n            nzTheme=\"outline\"\n            (click)=\"qipmentempty()\"\n          ></i>\n        </div>\n      </ng-template>\n    </div>\n    <div class=\"tree\" [style.display]=\"item == 0 ? 'block' : 'none'\">\n      <app-inquire-tree\n        (outer)=\"tree($event)\"\n        [uservalue]=\"uservalue\"\n      ></app-inquire-tree>\n    </div>\n    <div class=\"equipmenttree\" [style.display]=\"item == 1 ? 'block' : 'none'\">\n      <app-inquire-equipment\n        (outer)=\"tree($event)\"\n        [eqipmentValue]=\"inputeqipmentValue\"\n      ></app-inquire-equipment>\n    </div>\n  </div>\n  <div class=\"select\">\n    <div class=\"selectbox\">\n      <div class=\"menu\" (click)=\"sider()\">\n        <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\n        ><i\n          nz-icon\n          nzType=\"menu-unfold\"\n          nzTheme=\"outline\"\n          *ngIf=\"!leftsider\"\n        ></i>\n      </div>\n      <div style=\"margin-left: 10px; width: 100px; line-height: 50px\">历史</div>\n    </div>\n    <div class=\"addperson\">\n      <div class=\"username\">\n        <div class=\"nametitle\">查询用户:</div>\n        <div>\n          <input\n            nz-input\n            placeholder=\"请选择查询目标 \"\n            [(ngModel)]=\"userName\"\n          />\n        </div>\n      </div>\n      <div class=\"inquiretimer\">\n        <div class=\"nametitle\">视频时间:</div>\n        <div>\n          <nz-range-picker\n            [nzPlaceHolder]=\"['开始时间', '结束时间']\"\n            [(ngModel)]=\"datatimer\"\n            (ngModelChange)=\"changes($event)\"\n            nzShowTime\n          ></nz-range-picker>\n        </div>\n      </div>\n      <div class=\"inquirebuttonbox\">\n        <button class=\"inquirebutton\" (click)=\"inquire()\">查询</button>\n        <button (click)=\"reset()\" class=\"resetbutton\">重置</button>\n      </div>\n    </div>\n    <div class=\"operationbox\">\n      <div class=\"operation operationleft\">\n        <div style=\"width: 20px\"></div>\n        <button\n          [ngClass]=\"cuttype == 'all' ? 'li-active' : ''\"\n          (click)=\"cuttypes('all')\"\n        >\n          全部\n        </button>\n        <button\n          [ngClass]=\"cuttype == 'video' ? 'li-active' : ''\"\n          (click)=\"cuttypes('video')\"\n        >\n          视频\n        </button>\n        <button\n          [ngClass]=\"cuttype == 'audio' ? 'li-active' : ''\"\n          (click)=\"cuttypes('audio')\"\n        >\n          音频\n        </button>\n        <button\n          [ngClass]=\"cuttype == 'imges' ? 'li-active' : ''\"\n          (click)=\"cuttypes('imges')\"\n        >\n          图片\n        </button>\n      </div>\n      <div class=\"operation operationcenter\">\n        <button\n          [ngClass]=\"cutlist == 'imges' ? 'li-active' : ''\"\n          (click)=\"cutpattern('imges')\"\n        >\n          卡片\n        </button>\n        <button\n          [ngClass]=\"cutlist == 'list' ? 'li-active' : ''\"\n          (click)=\"cutpattern('list')\"\n        >\n          列表\n        </button>\n      </div>\n      <div class=\"operation operationright\">\n        <button class=\"inquirebutton\" (click)=\"alldownload()\">下载</button>\n        <!-- <button class=\"delete \">删除</button> -->\n        <div style=\"width: 20px\"></div>\n      </div>\n    </div>\n    <div class=\"inquirelist\">\n      <div class=\"listbox\" *ngIf=\"cutlist == 'list'\">\n        <table class=\"listtable\">\n          <tr>\n            <td>\n              <label\n                nz-checkbox\n                [(ngModel)]=\"checked\"\n                [nzIndeterminate]=\"indeterminate\"\n                (ngModelChange)=\"allcheck($event)\"\n              ></label>\n            </td>\n            <td>用户</td>\n            <td>记录类型</td>\n            <td>开始时间</td>\n            <td>时长</td>\n            <td>操作</td>\n            <td>操作</td>\n          </tr>\n          <tr *ngFor=\"let item of videocommunication; let i = index\">\n            <td>\n              <label\n                nz-checkbox\n                [(ngModel)]=\"item.checked\"\n                (ngModelChange)=\"updateSingleChecked()\"\n              ></label>\n            </td>\n            <td>{{ item.userName }}</td>\n            <td>{{ item.fileClass }}</td>\n            <td>{{ item.startTime }}</td>\n            <!-- <td>{{ item.endTime }}</td> -->\n            <td>{{ item.timeLength }}</td>\n            <td class=\"cursor\" (click)=\"play(item)\">查看</td>\n            <td class=\"cursor\" (click)=\"download(item.filePath)\">下载</td>\n          </tr>\n        </table>\n      </div>\n      <div class=\"imgesbox\" *ngIf=\"cutlist == 'imges'\">\n        <div class=\"imges\">\n          <ng-container\n            *ngFor=\"let history of videocommunication; let j = index\"\n          >\n            <div\n              class=\"history\"\n              (mouseenter)=\"history.show = true\"\n              (mouseleave)=\"history.show = false\"\n            >\n              <div\n                class=\"checkbox\"\n                *ngIf=\"history.show == true || history.checked\"\n              >\n                <label\n                  nz-checkbox\n                  [(ngModel)]=\"history.checked\"\n                  (ngModelChange)=\"updateSingleChecked()\"\n                ></label>\n              </div>\n              <div class=\"filepath\" *ngIf=\"history.show == true\">\n                <div\n                  class=\"operationhistory\"\n                  (click)=\"download(history.filePath)\"\n                >\n                  <i\n                    nz-icon\n                    nzType=\"vertical-align-bottom\"\n                    nzTheme=\"outline\"\n                  ></i>\n                </div>\n                <!-- <div class=\"operationhistory \"><i nz-icon nzType=\"close-circle\" nzTheme=\"outline\"></i></div> -->\n              </div>\n              <div class=\"imgbgc\">\n                <img [src]=\"history.bgcimg\" alt=\"\" *ngIf=\"history.bgcimg\" />\n              </div>\n              <div class=\"playbox\" *ngIf=\"history.show == true\">\n                <div class=\"play\" (click)=\"play(history)\">\n                  <img src=\"assets/img/videoondemand1.png \" alt=\" \" />\n                </div>\n              </div>\n              <div class=\"bottombox\">\n                <div class=\"username\">用户: {{ history.userName }}</div>\n                <div class=\"time\">时间: {{ history.startTime }}</div>\n                <div class=\"time\">时长: {{ history.timeLength }}</div>\n              </div>\n            </div>\n          </ng-container>\n          <div class=\"placeholder\"></div>\n          <div class=\"placeholder\"></div>\n          <div class=\"placeholder\"></div>\n          <div class=\"placeholder\"></div>\n          <div class=\"placeholder\"></div>\n          <div class=\"placeholder\"></div>\n          <div class=\"placeholder\"></div>\n        </div>\n      </div>\n\n      <div class=\"fenyebox\">\n        <span>总数量:{{ total }}</span>\n        <span (click)=\"prePage()\" class=\"prePage\">上一页</span>\n        <span>{{ page }}/{{ totalpages }}</span>\n        <span (click)=\"nextPage()\" class=\"nextPage\">下一页</span>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"videobox\">\n  <div #container class=\"container\"></div>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { OverallService } from '../common/overall.service';\nimport { ResourceService } from '../protocol/resource/resource.service';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { WebService } from '../protocol/rtc/web.service';\nimport { AvService } from '../protocol/rtc/av.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { cache } from '../protocol/rtc/cache';\n@Component({\n  selector: 'app-person',\n  templateUrl: './person.component.html',\n  styleUrls: ['./person.component.less'],\n})\nexport class PersonComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  personlist: any = [];\n  @Input() broadside: any;\n  @Input() statuslist: any;\n  operationclass = 'content';\n  leftsider: any;\n  subscription: any;\n  uservalue = '';\n  inputValue: any = '';\n  vodtree = true;\n  personal: boolean = true;\n  person: any;\n  persontype: any;\n  changeoverscription: any;\n  changeoverdata: any = '';\n  changeovershow = false;\n  monitorscription: any;\n  overridescription: any;\n  persongroup: any[] = [];\n  persons: boolean = false;\n  patternname = '';\n  deletepersons = false;\n  personshow = 0;\n  personsetting:any;\n  constructor(\n    private sendService: OverallService,\n    private datastact: ResourceService,\n    private ws: WebService,\n    private AV: AvService,\n    private rx: RxService,\n    private message: NzMessageService,\n  ) {\n    this.subscription = this.sendService.sendsider$.subscribe((message) => {\n      this.leftsider = message;\n    });\n    this.monitorscription = this.AV.monitor$.subscribe((message) => {\n      this.addmoitortype(message, false);\n    });\n    this.overridescription = this.AV.override$.subscribe((message) => {\n      if (message.delete) {\n        //  this.overridedelete(message.delete)\n      } else if (message.add) {\n        // this.overrideadd(message.add)\n      }\n    });\n    this.changeoverscription = this.AV.changeover$.subscribe((message) => {\n      this.changeoverdata = message;\n\n      if (this.changeoverdata == '') {\n        this.changeovershow = false;\n      } else {\n        this.changeovershow = true;\n      }\n    });\n    this.persontype = this.AV.person$.subscribe((message) => {\n      if (message.type == 'override') {\n        // 强插\n        this.override();\n      } else if (message.type == 'breakdown') {\n        // 强拆\n        this.breakdown();\n      } else if (message.type == 'monitor') {\n        // 监听\n        this.monitor();\n      } else if (message.type == 'bannedpost') {\n        // 禁言\n        this.bannedpost();\n      } else if (message.type == 'pickup') {\n        //  代答\n        this.pickup();\n      } else if (message.type == 'changeover') {\n        //  转接\n        this.changeover();\n      }\n    });\n  }\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n      let cmdid = nav.cmdID;\n      let cmdBody = nav.cmdBody;\n      switch (respcmdid) {\n        case state.OWO_CMD_USER_LOAD_CACHE + 1: {\n          if (resultdata.cache != '') {\n            let save = JSON.parse(resultdata.cache);\n            if (save.personlist.length > 0) {\n              this.persongroup = save.personlist;\n              for (let i = 0; i < this.persongroup.length; i++) {\n                let data = this.sendService.trun(\n                  this.persongroup[i].tableData.person\n                );\n                let list = this.datastact.userlist.childs;\n                if (list.length > 0) {\n                  for (let l = 0; l < list.length; l++) {\n                    for (let j = 0; j < data.length; j++) {\n                      if (list[l].info.userID == data[j]) {\n                        list[l].show = true;\n                      }\n                    }\n                  }\n                  for (let k = 0; k < list.length; k++) {\n                    for (let j = 0; j < this.datastact.userType.length; j++) {\n                      if (\n                        list[k].info.userID == this.datastact.userType[j].userID\n                      ) {\n                        list[k].info.type = this.datastact.userType[j];\n                      }\n                    }\n                  }\n                  this.persongroup[i].tableData.person = this.rebuildData(list);\n                  for (\n                    let j = 0;\n                    j < this.persongroup[i].tableData.person.length;\n                    j++\n                  ) {\n                    this.persongroup[i].tableData.person[j].activeshow = false;\n                  }\n              \n                  for (let l = 0; l < list.length; l++) {\n                    list[l].show = false;\n                  }\n                  // console.log(this.persongroup);\n                  this.personlist=  this.persongroup[this.personshow].tableData.person\n                }\n              }\n            }\n          }\n          break;\n        }\n\n        case state.OWO_CMD_CHAT_BARGE_IN + 1: {\n          // console.log(nav);\n          break;\n        }\n        case state.OWO_CMD_CHAT_BARRING + 1: {\n          // console.log(nav);\n          break;\n        }\n        case state.OWO_CMD_CHAT_MONITOR + 1: {\n          // 5监听\n          if (resultdata.listenFlag == '1') {\n            this.AV.addchatmonitor(resultdata);\n          }\n          break;\n        }\n        case state.OWO_CMD_CHAT_PICKUP + 1: {\n          this.AV.addchatdata(resultdata);\n          break;\n        }\n        case state.OWO_CMD_GET_MEMLIST_STATUS + 1: {\n          if(this.persongroup.length>0){\n            if(this.persongroup[this.personshow].tableData.person.length>0){\n              let list = this.persongroup[this.personshow].tableData.person\n                for (let j = 0; j < resultdata.userList.length; j++) {\n                for (let i = 0; i < list.length; i++) {\n                  if (\n                    resultdata.userList[j].userID ==\n                    list[i].info.userID\n                  ) {\n                    list[i].info.type = resultdata.userList[j];\n                  }\n                }\n              }\n            }\n          }\n          break;\n        }\n        default:\n          break;\n      }\n\n      switch (cmdid) {\n        case state.OWO_CMD_EVENT_NOTIFY: {\n          // console.log(nav);\n          this.addChatStatus(cmdBody);\n          break;\n        }\n        case state.OWO_CMD_DATA_RECORD_SEND: {\n          // console.log(nav);\n          break;\n        }\n        default:\n          break;\n      }\n    });\n    this.personsetting = this.datastact.module.person;\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        this.operationclass = 'content';\n      } else if (this.broadside == true) {\n        this.operationclass = 'sidebar';\n      }\n    }\n    if (changes.statuslist) {\n      if (this.statuslist.length > 0) {\n        if (this.personlist.length > 0) {\n          for (let i = 0; i < this.personlist.length; i++) {\n            for (let j = 0; j < this.statuslist.length; j++) {\n              if (\n                this.personlist[i].info.userName == this.statuslist[j].userName\n              ) {\n                this.personlist[i].info.type = this.statuslist[j];\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  rebuildData(arr: any) {\n    let newarr: any = [];\n    arr.forEach((element: any) => {\n      if (element.show == true) {\n        newarr.push(element);\n      }\n    });\n    return newarr;\n  }\n  sider() {\n    this.leftsider = !this.leftsider;\n    this.sendService.sendsider(this.leftsider);\n  }\n  empty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  searchTree() {\n    this.uservalue = this.inputValue;\n  }\n  tree(ev: any) {\n    this.outer.emit(ev);\n  }\n  addperson() {\n    let data = {\n      modaltype: 'person',\n    };\n    this.outer.emit(data);\n  }\n  personnav(ev: any) {\n    if (ev.throwover) {\n      if (ev.throwover.Chatdata) {\n        if (this.judgename(ev.throwover.Chatdata.eventParam) == true) {\n          this.message.create('warning', '不能转换本机');\n        } else {\n          if (ev.throwover.info.type.barringFlag == '1') {\n            this.message.create('warning', '转换个人已被禁话');\n          } else {\n            this.rx.changeover(\n              ev.throwover.info.userID,\n              this.changeoverdata.cmschat.dialogID\n            );\n            this.outer.emit({ throwovershow: true });\n          }\n        }\n      } else {\n        if (ev.throwover.info.type.barringFlag == '1') {\n          this.message.create('warning', '转换个人已被禁话');\n        } else {\n          this.rx.changeover(\n            ev.throwover.info.userID,\n            this.changeoverdata.cmschat.dialogID\n          );\n          this.outer.emit({ throwovershow: true });\n        }\n      }\n    } else if(ev.item){\n      this.outer.emit({item:'0'});\n    } else {\n      this.outer.emit(ev);\n    }\n  }\n  cutperson(ev: any) {\n    console.log(ev);\n    console.log(this.person);\n    let list = this.persongroup[this.personshow].tableData.person\n\n    for (let i = 0; i <list.length; i++) {\n      list[i].activeshow = false;\n    }\n    if (this.person) {\n      if (this.person.info.userID == ev.info.userID) {\n        this.person = undefined;\n        ev.activeshow = false;\n      } else {\n        this.person = ev;\n        ev.activeshow = true;\n      }\n    } else {\n      this.person = ev;\n      ev.activeshow = true;\n    }\n  }\n  overridedelete(ev: any) {\n    for (let i = 0; i < this.personlist.length; i++) {\n      if (this.personlist[i].info.type.userID == ev) {\n        this.personlist[i].override = false;\n      }\n    }\n    // personlist\n  }\n  overrideadd(ev: any) {\n    for (let i = 0; i < this.personlist.length; i++) {\n      for (let j = 0; j < this.personlist.length; j++) {\n        if (this.personlist[i].info.type.userID == ev[j]) {\n          this.personlist[i].override = true;\n        }\n      }\n    }\n    // personlist\n  }\n  override() {\n    if (this.person == undefined) {\n      this.message.create('warning', '未选择个人面板');\n    } else {\n      //  做强插处理\n      if (this.person.Chatdata) {\n        // dstUser test1,test\n        if (this.person.override == true) {\n          this.message.create('warning', '不能强插音视频');\n        } else {\n          if (this.judgename(this.person.Chatdata.eventParam) == true) {\n            this.message.create('warning', '不能强插本机音视频');\n          } else {\n            if (this.person.Chatdata.eventParam.status == '2') {\n              //  做强插处理\n              this.rx.strongPlug(this.person.Chatdata.eventParam.dialogID);\n              this.person.activeshow = false;\n              this.person = undefined;\n            } else {\n              this.message.create('warning', '暂不能强插操作');\n            }\n          }\n        }\n      } else {\n        this.message.create('warning', '暂不能强插操作');\n      }\n    }\n  }\n  breakdown() {\n    if (this.person == undefined) {\n      this.message.create('warning', '未选择个人面板');\n    } else {\n      //  做强拆处理\n      if (this.person.Chatdata) {\n        // dstUser test1,test\n        if (this.judgename(this.person.Chatdata.eventParam) == true) {\n          this.message.create('warning', '不能强拆本机音视频');\n        } else {\n          if (this.person.Chatdata.eventParam.status == '2') {\n            //  做强拆处理\n\n            this.rx.tollbreakDown(\n              this.person.Chatdata.eventParam.dialogID,\n              this.person.info.userID\n            );\n            this.person.activeshow = false;\n            this.person = undefined;\n          } else {\n            this.message.create('warning', '暂不能强拆操作');\n          }\n        }\n      } else {\n        this.message.create('warning', '暂不能强拆操作');\n      }\n    }\n  }\n  judgename(ev: any) {\n    let judge = false;\n    if (ev.srcID == this.rx.userID || ev.dstID == this.rx.userID) {\n      judge = true;\n    }\n    return judge;\n  }\n  monitor() {\n    if (this.person == undefined) {\n      this.message.create('warning', '未选择个人面板');\n    } else {\n      //  做监听处理\n      if (this.person.Chatdata) {\n        if (this.judgename(this.person.Chatdata.eventParam) == true) {\n          this.message.create('warning', '不能监听本机音视频');\n        } else {\n          if (this.person.moitor == true) {\n            this.message.create('warning', '已有监听操作');\n          } else {\n            if (this.person.Chatdata.eventParam.status == '2') {\n              //  做监听处理\n              this.rx.monitor(this.person.Chatdata.eventParam.dialogID, '1');\n              let data =\n                this.person.Chatdata.eventParam.srcID +\n                ',' +\n                this.person.Chatdata.eventParam.dstID;\n              this.addmoitortype(data, true);\n              this.person.activeshow = false;\n              this.person = undefined;\n            } else {\n              this.message.create('warning', '暂不能监听操作');\n            }\n          }\n        }\n      } else {\n        this.message.create('warning', '暂不能监听操作');\n      }\n    }\n  }\n  addmoitortype(ev: any, type: any) {\n    let data = ev.split(',');\n    for (let i = 0; i < this.personlist.length; i++) {\n      for (let j = 0; j < data.length; j++) {\n        if (this.personlist[i].info.type.userID == data[j]) {\n          this.personlist[i].moitor = type;\n        }\n      }\n    }\n  }\n  bannedpost() {\n    if (this.person == undefined) {\n      this.message.create('warning', '未选择个人面板');\n    } else {\n      if (this.person.info.type.barringFlag == '0') {\n        this.person.activeshow = false;\n        this.rx.confidence(this.person.info.userID, '1');\n        this.person = undefined;\n      } else {\n        this.person.activeshow = false;\n        this.rx.confidence(this.person.info.userID, '0');\n        this.person = undefined;\n      }\n      //  做禁言处理\n    }\n  }\n\n  addChatStatus(ev: any) {\n    // personlist  eventSource\n    \n \n    for (let i = 0; i < this.personlist.length; i++) {\n      if (this.personlist[i].info.userID == ev.eventSource) {\n        this.personlist[i].Chatdata = ev;\n      }\n    }\n    // console.log(this.personlist);\n  }\n  pickup() {\n    if (this.person == undefined) {\n      this.message.create('warning', '未选择个人面板');\n    } else {\n      if (this.person.Chatdata) {\n        if (\n          this.person.Chatdata.eventParam.status == '1' ||\n          this.person.Chatdata.eventParam.status == '2'\n        ) {\n          //  做代答处理\n          this.rx.pickup(this.person.Chatdata.eventParam.dialogID);\n        } else {\n          this.message.create('warning', '不能代答操作');\n        }\n      } else {\n        this.message.create('warning', '不能代答操作');\n      }\n    }\n  }\n\n  changeover() {\n    // if (this.person == undefined) {\n    //   this.message.create('warning', '未选择个人面板');\n    // } else {\n    //  做转接处理\n    //   console.log(this.person);\n    // \n  }\n\n  deletepersongroup() {\n    if(this.persongroup.length<0){\n      this.message.create('warning', '没有添加个人模式请添加在删除！');\n    }else {\n      this.deletepersons = true;\n    }\n  }\n  amendpersongroup() {\n    if(this.persongroup.length<0){\n      this.message.create('warning', '没有添加个人模式请添加在修改！');\n    }else {\n      let data = {\n        modaltype: 'persongroup',\n      };\n      this.outer.emit(data);\n    }\n  }\n  personjudge(ev: any) {\n    this.personshow = ev;\n    this.sendService.persongroup = ev;\n        // console.log(this.persongroup);\n    this.personlist=  this.persongroup[this.personshow].tableData.person\n    for (let i = 0; i < this.personlist.length; i++) {\n      this.personlist[i].activeshow = false;\n    }\n  }\n  closeperson() {\n    this.deletepersons = false;\n  }\n  deleteperson() {\n    this.closeperson()\n    cache.personlist.splice(this.personshow, 1);\n    this.personshow = 0;\n    this.sendService.persongroup = 0;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  largejudge(ev: any) {\n    if (this.personshow == ev) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\n","<div class=\"box\" class=\"{{ operationclass }}\">\r\n    <!-- 个人 -->\r\n    <div class=\"sider\" *ngIf=\"leftsider\">\r\n        <div class=\"title\">\r\n            <div class=\"alluser\">\r\n                <div class=\"all li-active\">用户</div>\r\n            </div>\r\n            <div class=\"search\">\r\n                <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\r\n                    <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"searchTree()\" />\r\n                </nz-input-group>\r\n                <ng-template #prefixTemplateUser>\r\n                    <i nz-icon nzType=\"search\" class=\"icon\"></i>\r\n                </ng-template>\r\n                <ng-template #inputClearTpl>\r\n                    <div *ngIf=\"inputValue\" class=\"icon\">\r\n                        <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"empty()\"></i>\r\n                    </div>\r\n                </ng-template>\r\n            </div>\r\n        </div>\r\n        <div class=\"tree\">\r\n            <app-tree [vodtree]=\"vodtree\" (outer)=\"tree($event)\" [uservalue]=\"uservalue\"></app-tree>\r\n        </div>\r\n    </div>\r\n    <div class=\"select\">\r\n        <div class=\"selectbox\">\r\n            <div class=\"menu\" (click)=\"sider()\">\r\n                <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\r\n        ><i\r\n          nz-icon\r\n          nzType=\"menu-unfold\"\r\n          nzTheme=\"outline\"\r\n          *ngIf=\"!leftsider\"\r\n        ></i>\r\n            </div>\r\n            <div style=\"margin-left: 10px; width: 100px\">单兵调度</div>\r\n            <div class=\"addperson\">\r\n                <span (click)=\"addperson()\" class=\"personspan\">添加</span>\r\n                <span (click)=\"amendpersongroup()\" class=\"personspan\">修改</span>\r\n                <span (click)=\"deletepersongroup()\" class=\"deletepersonspan\"> 删除</span>\r\n            </div>\r\n        </div>\r\n        <div class=\"personbox\">\r\n            <div class=\"personnav\">\r\n                <div *ngFor=\"let personlist of persongroup; let i = index\">\r\n                    <div class=\"personlistbox\" *ngIf=\"largejudge(i)\">\r\n                        <ng-container *ngFor=\"let person of personlist.tableData.person; let j = index\">\r\n                            <div class=\"person\" (click)=\"cutperson(person)\">\r\n                                <app-personalinformation [person]=\"person\" [personal]=\"personal\" [changeovershow]=\"changeovershow\" (outer)=\"personnav($event)\"></app-personalinformation>\r\n                            </div>\r\n                        </ng-container>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"personname\">\r\n                <ng-container *ngFor=\"let person of persongroup; let i = index\">\r\n                    <button [ngClass]=\"personshow == i ? 'active' : ''\" class=\"choice\" (click)=\"personjudge(i)\">\r\n                        {{ person.tableData.patternname }}\r\n                        </button>\r\n                </ng-container>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n<div class=\"deletelarge\" *ngIf=\"deletepersons\">\r\n    <div class=\"navbox\">\r\n        <div class=\"nav\" cdkDrag>\r\n            <div class=\"setname\" cdkDragHandle>\r\n                <div class=\"set\">删除模式</div>\r\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"closeperson()\"></i>\r\n            </div>\r\n            <div class=\"setnav\">\r\n                <div class=\"colnav\">是否删除当前模式?</div>\r\n                <div class=\"setbotton\">\r\n                    <button (click)=\"deleteperson()\">确定</button>\r\n                    <button (click)=\"closeperson()\">取消</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import {\n  Component,\n  Input,\n  OnInit,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { ResourceService } from '../../protocol/resource/resource.service';\nimport { cache } from '../../protocol/rtc/cache';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { OverallService } from '../../common/overall.service';\n@Component({\n  selector: 'app-equimenttree',\n  templateUrl: './equimenttree.component.html',\n  styleUrls: ['./equimenttree.component.less'],\n})\nexport class EquimenttreeComponent implements OnInit {\n  @Input() uservalue: any = '';\n  @Input() modaltype: any = '';\n  rawData: any = '';\n  arr: any = []; //渲染列表\n  shows: boolean = true;\n  searchtype: number = 1;\n  newarr: any = [];\n  userListtypes = '';\n  facilitylist = [];\n  indeterminate = false;\n  check: boolean = false;\n  constructor(\n    private datastact: ResourceService,\n    private rx: RxService,\n    private sendService: OverallService\n  ) {}\n  ngOnInit(): void {\n    if (this.modaltype == 'addequipment') {\n      if (this.datastact.equipmentlist != '') {\n        this.rawData = JSON.parse(JSON.stringify(this.datastact.equipmentlist));\n        this.chi(this.rawData.deviceList);\n      }\n    }\n    if (this.modaltype == 'amendequipment') {\n      if (this.datastact.equipmentlist != '') {\n        this.rawData = JSON.parse(JSON.stringify(this.datastact.equipmentlist));\n        this.chi(this.rawData.deviceList);\n      }\n      if (cache.equipmentlist.length > 0) {\n        let equipmentlist =\n          cache.equipmentlist[\n            this.sendService.equipmentgroup\n          ].tableData.equipment.split(';');\n        for (let i = 0; i < equipmentlist.length; i++) {\n          if (\n            equipmentlist[i] == '' ||\n            typeof equipmentlist[i] == 'undefined'\n          ) {\n            equipmentlist.splice(i, 1);\n            i = i - 1;\n          }\n        }\n        for (let i = 0; i < this.arr.length; i++) {\n          for (let j = 0; j < equipmentlist.length; j++) {\n            if (this.arr[i].deviceID == equipmentlist[j]) {\n              this.arr[i].show = true;\n            }\n          }\n        }\n        this.updateSingleChecked();\n      }\n    }\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.uservalue) {\n      this.arr = this.rawData.deviceList;\n      if (this.uservalue == '') {\n        this.searchtype = 1;\n      } else {\n        if (this.rebuildData(this.uservalue, this.arr).length == 0) {\n          this.searchtype = 2;\n        } else {\n          this.arr = this.rebuildData(this.uservalue, this.arr);\n        }\n      }\n    }\n  }\n  rebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.deviceName.indexOf(value) > -1) {\n        // 判断条件\n        this.newarr.push(element);\n      } else {\n        if (element.info.childs && element.info.childs.length > 0) {\n          let redata = this.rebuildData(value, element.info.childs);\n          let obj = {\n            ...element,\n            children: redata,\n          };\n          if (redata && redata.length > 0) {\n            this.newarr.push(obj);\n          }\n        }\n      }\n    });\n    return this.newarr;\n  }\n\n  chi(obj: any) {\n    this.arr = [];\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n\n  show() {\n    this.shows = !this.shows;\n  }\n  usercheck(ev: any) {\n    if (ev.show == true) {\n      ev.show = false;\n    } else {\n      for (let i = 0; i < this.arr.length; i++) {\n        this.arr[i].show = false;\n      }\n      ev.show = true;\n    }\n  }\n  allcheck() {\n    this.indeterminate = false;\n    if (this.check == true) {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        show: true,\n      }));\n    } else {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        show: false,\n      }));\n    }\n  }\n  updateSingleChecked(): void {\n    if (this.arr.every((item: any) => !item.show)) {\n      this.check = false;\n      this.indeterminate = false;\n    } else if (this.arr.every((item: any) => item.show)) {\n      this.check = true;\n      this.indeterminate = false;\n    } else {\n      this.indeterminate = true;\n    }\n  }\n}\n","<div *ngIf=\"searchtype == 1\">\n    <div class=\"root\" *ngIf=\"rawData.root\">\n        <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n        </div>\n        <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n        </div>\n        <div>\n            <label nz-checkbox [(ngModel)]=\"check\" [nzIndeterminate]=\"indeterminate\" (ngModelChange)=\"allcheck()\"></label>\n        </div>\n        <div class=\"userName \">\n            {{ rawData.root }}\n        </div>\n    </div>\n    <div [style.display]=\"shows ? 'block' : 'none'\">\n        <div *ngFor=\"let item of arr; let i=index\">\n            <div class=\"userbox \" *ngIf=\"item.deviceType == 1\">\n                <div>\n                    <label nz-checkbox [(ngModel)]=\"item.show\" (ngModelChange)=\"updateSingleChecked() \"></label>\n                </div>\n                <div class=\"userstatus\">\n                    <div class=\"infoimg\" *ngIf=\"item.deviceStatus==0 \">\n                        <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item.deviceType == 1\" />\n                    </div>\n                    <div class=\"buleStatus \" *ngIf=\"item.deviceStatus==1 \">\n                        <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item.deviceType == 1\" />\n                    </div>\n                    <div class=\"greenStatus \" *ngIf=\"item.deviceStatus==2 \">\n                        <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item.deviceType == 1\" />\n                    </div>\n                </div>\n                <div class=\"userName\">\n                    {{ item.deviceName }}\n                </div>\n                <div class=\"state\">\n                    <div *ngIf=\"item.deviceStatus==0 \" class=\"offline\">\n                        离线\n                    </div>\n                    <div *ngIf=\"item.deviceStatus==1 \" class=\"online\">\n                        在线\n                    </div>\n                    <div *ngIf=\"item.deviceStatus==2 \" class=\"telephone\">\n                        通话\n                    </div>\n                </div>\n\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"searchtype==2\" class=\"searching \">未检索的到设备</div>","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { cache } from '../../protocol/rtc/cache';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { AvService } from '../../protocol/rtc/av.service';\nimport { OverallService } from '../../common/overall.service';\n\n@Component({\n  selector: 'app-equimenttranstion',\n  templateUrl: './equimenttranstion.component.html',\n  styleUrls: ['./equimenttranstion.component.less']\n})\nexport class EquimenttranstionComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @ViewChild('cart') cart: any;\n  @Input()\n  set modaltype(value: any) {\n    this.type = value;\n    if (this.type == 'amendequipment') {\n      this.personnname =\n        cache.equipmentlist[this.sendService.equipmentgroup].tableData.patternname;\n    }\n  }\n  get modaltype() {\n    return this.type;\n  }\n  type: any = '';\n  inputValue?: string;\n  uservalue: any = '';\n  patternname = ''\n  personnname = '';\n  constructor( private messageser: NzMessageService,\n    private rx: RxService,\n    private AV: AvService,\n    private sendService: OverallService,) {}\n\n  ngOnInit(): void {\n    \n  }\n  close() {\n    let data = {\n      modal: true,\n    };\n    this.outer.emit(data);\n  }\n  userTree() {\n    this.uservalue = this.inputValue;\n  }\n  userempty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  persontransfer() {\n    let arr = this.rebuildData(this.cart.arr);\n    let equipment = '';\n    for (let i = 0; i < arr.length; i++) {\n      if (arr[i].show == true) {\n        equipment += arr[i].deviceID + ';';\n      }\n    }\n    if (this.patternname == '') {\n      this.messageser.create('error', '请输入设备模式名称');\n    } else {\n      cache.equipmentlist.push({\n        tableData: {\n          patternname: this.patternname,\n          equipment: equipment,\n        },\n      });\n      let eva = JSON.stringify(cache);\n      this.rx.savecache(eva);\n      this.close();\n    }\n  }\n  rebuildData(arr: any) {\n    let newarr: any = [];\n    arr.forEach((element: any) => {\n      if (element.show == true) {\n        newarr.push(element);\n      }\n    });\n    return newarr;\n  }\n  amendtransfer(){\n    let arr = this.rebuildData(this.cart.arr);\n    let equipment = '';\n    for (let i = 0; i < arr.length; i++) {\n      if (arr[i].show == true) {\n        equipment += arr[i].deviceID + ';';\n      }\n    }\n    if (this.personnname == '') {\n      this.messageser.create('error', '请输入设备模式名称');\n    } else {\n      cache.equipmentlist[this.sendService.equipmentgroup] = {\n        tableData: {\n          patternname: this.personnname,\n          equipment: equipment,\n        },\n      };\n      let eva = JSON.stringify(cache);\n      this.rx.savecache(eva);\n      this.close();\n    }\n  }\n}\n","<div class=\"fullscreen\">\n    <div class=\"box\">\n        <div class=\"drag\" cdkDrag>\n            <div class=\"usertitle\" cdkDragHandle>\n                <div class=\"title\">选择设备</div>\n                <div class=\"closebox\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"close()\"></i>\n                </div>\n            </div>\n            <div class=\"setnav\" *ngIf=\"modaltype == 'addequipment'\">\n                <div class=\"setting\">\n                    <div class=\"patternname\">设备模式名称:&nbsp;&nbsp;</div>\n                    <div class=\"pattern\">\n                        <input nz-input type=\"text\" [(ngModel)]=\"patternname\" />\n                    </div>\n                </div>\n            </div>\n            <div class=\"setnav\" *ngIf=\"modaltype == 'amendequipment'\">\n                <div class=\"setting\">\n                    <div class=\"patternname\">设备模式名称:&nbsp;&nbsp;</div>\n                    <div class=\"pattern\">\n                        <input nz-input type=\"text\" [(ngModel)]=\"personnname\" />\n                    </div>\n                </div>\n            </div>\n            <div class=\"searchbox\">\n                <div class=\"search\">\n                    <nz-input-group [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"inputClear\">\n                        <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"userTree()\" />\n                    </nz-input-group>\n                    <ng-template #prefixTemplate><i nz-icon nzType=\"search\"></i\n          ></ng-template>\n          <ng-template #inputClear>\n            <div *ngIf=\"inputValue\">\n              <i\n                nz-icon\n                nzType=\"close-circle\"\n                nzTheme=\"outline\"\n                (click)=\"userempty()\"\n              ></i>\n                </div>\n                </ng-template>\n            </div>\n        </div>\n        <div class=\"treebox\">\n            <app-equimenttree #cart [uservalue]=\"uservalue\" [modaltype]=\"modaltype\"></app-equimenttree>\n        </div>\n        <div class=\"buttonbox\">\n            <button (click)=\"persontransfer()\" *ngIf=\"modaltype == 'addequipment'\">发送</button>\n            <button (click)=\"amendtransfer()\" *ngIf=\"modaltype == 'amendequipment'\">确定</button>\n            <button (click)=\"close()\">取消</button>\n        </div>\n    </div>\n</div>\n</div>","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { OverallService } from '../common/overall.service';\nimport { ResourceService } from '../protocol/resource/resource.service';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { WebService } from '../protocol/rtc/web.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { cache } from '../protocol/rtc/cache';\n@Component({\n  selector: 'app-equipment',\n  templateUrl: './equipment.component.html',\n  styleUrls: ['./equipment.component.css'],\n})\nexport class EquipmentComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() broadside: any;\n  equipmentlist: any[] = [];\n  operationclass = 'content';\n  leftsider: any;\n  subscription: any;\n  vodtree = true;\n  inputValue: any = '';\n  uservalue: any = '';\n  inputeqipmentValue: any = '';\n  eqipmentValue: any = '';\n  item: number = 1;\n  equipmenttype: boolean = true;\n  equipmentshow = 0;\n  equimentmodal: boolean = false;\n  modaltype= 'addequipment';\n  deleteequiment: boolean = false;\n  equipment:any;\n  eqipmenttype:any='1'\n  constructor(\n    private sendService: OverallService,\n    private ws: WebService,\n    private datastact: ResourceService,\n    private rx: RxService,\n    private message: NzMessageService\n  ) {\n    this.subscription = this.sendService.sendsider$.subscribe((message) => {\n      this.leftsider = message;\n    });\n  }\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n      switch (respcmdid) {\n        case state.OWO_CMD_USER_LOAD_CACHE + 1: {\n          if (resultdata.cache != '') {\n            let save = JSON.parse(resultdata.cache);\n            if (save.equipmentlist.length > 0) {\n              this.equipmentlist = save.equipmentlist;\n              for (let i = 0; i < this.equipmentlist.length; i++) {\n                let data = this.sendService.trun(\n                  this.equipmentlist[i].tableData.equipment\n                );\n                let list =  this.datastact.equipmentlist.deviceList\n                if (list.length > 0) {\n                  for (let l = 0; l < list.length; l++) {\n                    for (let j = 0; j < data.length; j++) {\n                      if (list[l].deviceID == data[j]) {  \n                        list[l].show = true;\n                      }\n                    }\n                  }\n                  this.equipmentlist[i].tableData.equipment = this.rebuildData(list);\n                  for (let l = 0; l < list.length; l++) {\n                    list[l].show = false;\n                  }\n                }\n              }\n            }\n          }\n          break;\n        }\n       \n        default:\n          break;\n      }\n    });\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        this.operationclass = 'content';\n      } else if (this.broadside == true) {\n        this.operationclass = 'sidebar';\n      }\n    }\n  }\n  rebuildData(arr: any) {\n    let newarr: any = [];\n    arr.forEach((element: any) => {\n      if (element.show == true) {\n        newarr.push(element);\n      }\n    });\n    return newarr;\n  }\n  shanchu() {\n    let data = {\n      group: '',\n      person: '',\n      equipment: '',\n      message: <any[]>[],\n      setting: <any[]>[],\n    };\n    this.rx.savecache(JSON.stringify(data));\n  }\n  titles(ev: number): void {\n    this.item = ev;\n  }\n  searchTree() {\n    this.uservalue = this.inputValue;\n  }\n  empty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  qipment() {\n    this.eqipmentValue = this.inputeqipmentValue;\n  }\n  qipmentempty() {\n    this.inputeqipmentValue = '';\n    this.eqipmentValue = '';\n  }\n  tree(ev: any) {\n    if (ev.planting) {\n      if (ev.planting.info.userType == 2) {\n      } else {\n        if (ev.planting.info.type.devStatus == '0') {\n        } else if (ev.planting.info.type.devStatus == '1') {\n          this.sendService.plantingsendsider(ev.planting);\n        }\n      }\n    } else {\n      this.outer.emit(ev);\n    }\n  }\n  sider() {\n    this.leftsider = !this.leftsider;\n    this.sendService.sendsider(this.leftsider);\n  }\n  personnav(ev: any) {\n    this.outer.emit(ev);\n  }\n  addequipment() {\n    this.equimentmodal = true;\n    this.modaltype  = 'addequipment'\n  }\n  amendquipment() {\n    if(this.equipmentlist.length<0){\n      this.message.create('warning', '没有添加设备模式请添加在修改！');\n    }else {\n      this.equimentmodal = true;\n      this.modaltype  = 'amendequipment'\n    }\n  }\n  deletequipment() {\n    if(this.equipmentlist.length<0){\n      this.message.create('warning', '没有添加设备模式请添加在删除！');\n    }else {\n      this.deleteequiment= true;\n    }\n  }\n  closeequiment(){\n    this.deleteequiment= false;\n  }\n  deletequiment(){\n    cache.equipmentlist.splice(this.equipmentshow, 1);\n    this.equipmentshow = 0;\n    this.sendService.equipmentgroup = 0;\n    this.rx.savecache(JSON.stringify(cache));\n    this.closeequiment()\n  }\n  equipmentjudge(ev: any) {\n    this.equipmentshow = ev;\n    this.sendService.equipmentgroup = ev;\n    for (let i = 0; i < this.equipmentlist[ev].tableData.equipment.length; i++) {\n      this.equipmentlist[ev].tableData.equipment[i].activeshow = false;\n    }\n  }\n  largejudge(ev: any) {\n    if (this.equipmentshow == ev) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n  cutperson(ev: any) {\n    let list = this.equipmentlist[this.equipmentshow].tableData.equipment\n    for (let i = 0; i <list.length; i++) {\n      list[i].activeshow = false;\n    }\n    if (this.equipment) {\n      if (this.equipment.deviceID == ev.deviceID) {\n        this.equipment = undefined;\n        ev.activeshow = false;\n      } else {\n        this.equipment = ev;\n        ev.activeshow = true;\n      }\n    } else {\n      this.equipment = ev;\n      ev.activeshow = true;\n    }\n  }\n  equimentmodaldata(ev: any) {\n    if (ev.modal) {\n      this.equimentmodal = false;\n    }\n  }\n}\n","<div class=\"box\" class=\"{{ operationclass }}\">\r\n    <!-- 个人 -->\r\n    <div class=\"sider\" *ngIf=\"leftsider\">\r\n        <div class=\"title\">\r\n            <div class=\"all\" [ngClass]=\"item == 0 ? 'li-active' : ''\" (click)=\"titles(0)\">\r\n                用户\r\n            </div>\r\n            <div class=\"duijiang\" [ngClass]=\"item == 1 ? 'li-active' : ''\" (click)=\"titles(1)\">\r\n                设备\r\n            </div>\r\n        </div>\r\n        <div class=\"search\" [style.display]=\"item == 0 ? 'block' : 'none'\">\r\n            <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\r\n                <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"searchTree()\" />\r\n            </nz-input-group>\r\n            <ng-template #prefixTemplateUser>\r\n                <i nz-icon nzType=\"search\" class=\"icon\"></i>\r\n            </ng-template>\r\n            <ng-template #inputClearTpl>\r\n                <div *ngIf=\"inputValue\" class=\"icon\">\r\n                    <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"empty()\"></i>\r\n                </div>\r\n            </ng-template>\r\n        </div>\r\n        <div class=\"search\" [style.display]=\"item == 1 ? 'block' : 'none'\">\r\n            <nz-input-group [nzPrefix]=\"qipmentTemplate\" [nzSuffix]=\"qipmentClearTpl\">\r\n                <input type=\"text\" nz-input [(ngModel)]=\"inputeqipmentValue\" (keyup.enter)=\"qipment()\" />\r\n            </nz-input-group>\r\n            <ng-template #qipmentTemplate>\r\n                <i nz-icon nzType=\"search\" class=\"icon\"></i>\r\n            </ng-template>\r\n            <ng-template #qipmentClearTpl>\r\n                <div *ngIf=\"inputeqipmentValue\" class=\"icon\">\r\n                    <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"qipmentempty()\"></i>\r\n                </div>\r\n            </ng-template>\r\n        </div>\r\n        <div class=\"tree\" [style.display]=\"item == 0 ? 'block' : 'none'\">\r\n            <app-tree [vodtree]=\"vodtree\" (outer)=\"tree($event)\" [uservalue]=\"uservalue\"></app-tree>\r\n        </div>\r\n        <div class=\"equipmenttree\" [style.display]=\"item == 1 ? 'block' : 'none'\">\r\n            <app-equipmenttree [eqipmentValue]=\"eqipmentValue\" [eqipmenttype]=\"eqipmenttype\"></app-equipmenttree>\r\n        </div>\r\n    </div>\r\n    <div class=\"select\">\r\n        <div class=\"selectbox\">\r\n            <div class=\"menu\" (click)=\"sider()\">\r\n                <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\r\n        ><i\r\n          nz-icon\r\n          nzType=\"menu-unfold\"\r\n          nzTheme=\"outline\"\r\n          *ngIf=\"!leftsider\"\r\n        ></i>\r\n            </div>\r\n            <div style=\"margin-left: 10px; width: 100px\">设备调度</div>\r\n            <div class=\"addperson\">\r\n                <span (click)=\"addequipment()\" class=\"personspan\">添加</span>\r\n                <span (click)=\"amendquipment()\" class=\"personspan\">修改</span>\r\n                <span (click)=\"deletequipment()\" class=\"deletepersonspan\"> 删除</span>\r\n            </div>\r\n        </div>\r\n        <div class=\"personbox\">\r\n            <div class=\"personnav\">\r\n                <div *ngFor=\"let equipments of equipmentlist; let i = index\">\r\n                    <div class=\"equipmentlistbox\" *ngIf=\"largejudge(i)\">\r\n                        <ng-container *ngFor=\"let equipment of equipments.tableData.equipment; let i = index\">\r\n                            <div class=\"person\" (click)=\"cutperson(equipment)\">\r\n                                <app-equipmentframe [equipment]=\"equipment\" (outer)=\"tree($event)\"></app-equipmentframe>\r\n                            </div>\r\n                        </ng-container>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                        <div class=\"placeholder\"></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"personname\">\r\n                <ng-container *ngFor=\"let equipment of equipmentlist; let i = index\">\r\n                    <button [ngClass]=\"equipmentshow == i ? 'active' : ''\" class=\"choice\" (click)=\"equipmentjudge(i)\">\r\n                        {{ equipment.tableData.patternname }}\r\n                        </button>\r\n                </ng-container>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"equimentmodal\">\r\n    <app-equimenttranstion [modaltype]=\"modaltype\" (outer)=\"equimentmodaldata($event)\"></app-equimenttranstion>\r\n</div>\r\n<div class=\"deletelarge\" *ngIf=\"deleteequiment\">\r\n    <div class=\"navbox\">\r\n        <div class=\"nav\" cdkDrag>\r\n            <div class=\"setname\" cdkDragHandle>\r\n                <div class=\"set\">删除模式</div>\r\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"closeequiment()\"></i>\r\n            </div>\r\n            <div class=\"setnav\">\r\n                <div class=\"colnav\">是否删除当前模式?</div>\r\n                <div class=\"setbotton\">\r\n                    <button (click)=\"deletequiment()\">确定</button>\r\n                    <button (click)=\"closeequiment()\">取消</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import {\n  Component,\n  OnInit,\n  SimpleChange,\n  SimpleChanges,\n  Input,\n  EventEmitter,\n  Output,\n} from '@angular/core';\nimport { OverallService } from '../common/overall.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { WebService } from '../protocol/rtc/web.service';\nimport { cache } from '../protocol/rtc/cache';\nimport { ResourceService } from '../protocol/resource/resource.service';\n@Component({\n  selector: 'app-largescreen',\n  templateUrl: './largescreen.component.html',\n  styleUrls: ['./largescreen.component.less'],\n})\nexport class LargescreenComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  operationclass = 'content';\n  @Input() broadside: any;\n  leftsider: any;\n  subscription: any;\n  item: number = 0;\n  inputValue: any = '';\n  uservalue = '';\n  inputeqipmentValue: any = '';\n  eqipmentValue: any = '';\n  hinttype = 2;\n  hint = false;\n  vodtree = true;\n  larges = false;\n  largescreen: any[] = [];\n  patternname: any = '';\n  row: any = ''; //行\n  col: any = ''; //列\n  largeshow = 0;\n  mergelarge: any = 0;\n  splitlarge: any = 0;\n  invalidlarge: any = 0;\n  validlarge: any = 0;\n  deletelarges: boolean = false;\n  module:any;\n  constructor(\n    private sendService: OverallService,\n    private message: NzMessageService,\n    private rx: RxService,\n    private ws: WebService, private datastate: ResourceService,\n  ) {\n    this.subscription = this.sendService.sendsider$.subscribe((message) => {\n      this.leftsider = message;\n    });\n  }\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let cmdBody = nav.cmdBody;\n      let resultdata = nav.resultData;\n      switch (respcmdid) {\n        case state.OWO_CMD_USER_LOAD_CACHE + 1: {\n          if (resultdata.cache != '') {\n            this.largescreen = cache.largelist;\n          }\n          break;\n        }\n        default:\n          break;\n      }\n    });\n    this.module = this.datastate.module;\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        this.operationclass = 'content';\n      } else if (this.broadside == true) {\n        this.operationclass = 'sidebar';\n      }\n    }\n  }\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n  sider() {\n    this.leftsider = !this.leftsider;\n    this.sendService.sendsider(this.leftsider);\n  }\n  titles(ev: number): void {\n    this.item = ev;\n  }\n  searchTree() {\n    this.uservalue = this.inputValue;\n  }\n  empty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  qipment() {\n    this.eqipmentValue = this.inputeqipmentValue;\n  }\n  qipmentempty() {\n    this.inputeqipmentValue = '';\n    this.eqipmentValue = '';\n  }\n\n  tree(ev: any) {\n    if (ev.planting) {\n      if (ev.planting.info.userType == 2) {\n        this.hint = true;\n        this.hinttype = 3;\n      } else {\n        if (ev.planting.info.type.devStatus == '0') {\n          this.hinttype = 2;\n          this.hint = true;\n        } else if (ev.planting.info.type.devStatus == '1') {\n          this.sendService.plantingsendsider(ev.planting);\n        }\n      }\n    } else {\n      this.outer.emit(ev);\n    }\n  }\n  run(ev: any) {\n    this.hint = false;\n  }\n  addlarges() {\n    if (this.largescreen.length == 6) {\n      this.message.create('error', '最多创建六个模式');\n    } else {\n      this.larges = true;\n    }\n  }\n  confirmlarges() {\n    if (this.patternname == '') {\n      this.message.create('error', '请输入大屏模式名称');\n    } else if (this.row == '' || this.col == '') {\n      this.message.create('error', '请输入行和列参数');\n    } else {\n      this.largescreen.push({\n        tableData: {\n          rows: this.row,\n          cols: this.col,\n          patternname: this.patternname,\n        },\n      });\n      this.largeshow = this.largescreen.length - 1;\n      this.save();\n      this.patternname = '';\n      this.row = '';\n      this.col = '';\n      this.larges = false;\n    }\n  }\n  closelarges() {\n    this.larges = false;\n  }\n  deletesscreen() {\n    this.deletelarges = !this.deletelarges;\n    \n  }\n  deletelarge() {\n    this.deletelarges = false;\n    if (this.largescreen.length > 0) {\n      this.largescreen.splice(this.largeshow, 1);\n      this.largeshow = 0;\n      this.save();\n    }\n  }\n  save() {\n    cache.largelist = this.largescreen;\n    this.rx.savecache(JSON.stringify(cache));\n    this.outer.emit(false);\n  }\n  merge() {\n    this.mergelarge = this.mergelarge + 1;\n  }\n  split() {\n    this.splitlarge = this.splitlarge + 1;\n  }\n  invalid() {\n    this.invalidlarge = this.invalidlarge + 1;\n  }\n  valid() {\n    this.validlarge = this.validlarge + 1;\n  }\n  largejudge(ev: any) {\n    if (this.largeshow == ev) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n  patternjudge(ev: any) {\n    this.largeshow = ev;\n    this.sendService.large = ev;\n  }\n  groupParent(ev: any) {\n    if (ev.data) {\n      this.save();\n    }\n  }\n}\n","<div class=\"box\" class=\"{{ operationclass }}\">\r\n    <!-- 视频点播 -->\r\n    <div class=\"sider\" *ngIf=\"leftsider\">\r\n        <div class=\"title\">\r\n            <div class=\"alluser\">\r\n                <div class=\"all\" [ngClass]=\"item == 0 ? 'li-active' : ''\" (click)=\"titles(0)\">\r\n                    用户\r\n                </div>\r\n                <div class=\"duijiang\" *ngIf=\"module.device.enable\" [ngClass]=\"item == 1 ? 'li-active' : ''\" (click)=\"titles(1)\">\r\n                    设备\r\n                </div>\r\n            </div>\r\n            <div class=\"search\" [style.display]=\"item == 0 ? 'block' : 'none'\">\r\n                <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\r\n                    <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"searchTree()\" />\r\n                </nz-input-group>\r\n                <ng-template #prefixTemplateUser>\r\n                    <i nz-icon nzType=\"search\" class=\"icon\"></i>\r\n                </ng-template>\r\n                <ng-template #inputClearTpl>\r\n                    <div *ngIf=\"inputValue\" class=\"icon\">\r\n                        <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"empty()\"></i>\r\n                    </div>\r\n                </ng-template>\r\n            </div>\r\n            <div class=\"search\" [style.display]=\"item == 1 ? 'block' : 'none'\">\r\n                <nz-input-group [nzPrefix]=\"qipmentTemplate\" [nzSuffix]=\"qipmentClearTpl\">\r\n                    <input type=\"text\" nz-input [(ngModel)]=\"inputeqipmentValue\" (keyup.enter)=\"qipment()\" />\r\n                </nz-input-group>\r\n                <ng-template #qipmentTemplate>\r\n                    <i nz-icon nzType=\"search\" class=\"icon\"></i>\r\n                </ng-template>\r\n                <ng-template #qipmentClearTpl>\r\n                    <div *ngIf=\"inputeqipmentValue\" class=\"icon\">\r\n                        <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"qipmentempty()\"></i>\r\n                    </div>\r\n                </ng-template>\r\n            </div>\r\n        </div>\r\n        <div class=\"tree\" [style.display]=\"item == 0 ? 'block' : 'none'\">\r\n            <app-tree [vodtree]=\"vodtree\" (outer)=\"tree($event)\" [uservalue]=\"uservalue\"></app-tree>\r\n        </div>\r\n        <div class=\"tree\" [style.display]=\"item == 1 ? 'block' : 'none'\">\r\n            <app-equipmenttree [eqipmentValue]=\"eqipmentValue\"></app-equipmenttree>\r\n        </div>\r\n    </div>\r\n    <div class=\"select\">\r\n        <div class=\"selectbox\">\r\n            <div class=\"menu\" (click)=\"sider()\">\r\n                <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\r\n        ><i\r\n          nz-icon\r\n          nzType=\"menu-unfold\"\r\n          nzTheme=\"outline\"\r\n          *ngIf=\"!leftsider\"\r\n        ></i>\r\n            </div>\r\n            <div style=\"margin-left: 10px; width: 100px;line-height: 50px;\">大屏</div>\r\n            <div class=\"addperson\">\r\n                <span class=\"person\" (click)=\"addlarges()\">增加</span\r\n        >\r\n        <!-- <span class=\"person\" (click)=\"save()\">保存</span> -->\r\n                <span class=\"person\" (click)=\"deletesscreen()\">删除</span\r\n        ><span class=\"person\" (click)=\"merge()\">合并</span\r\n        ><span class=\"person\" (click)=\"split()\">拆分</span>\r\n                <span class=\"person\" (click)=\"invalid()\">无效</span>\r\n                <span class=\"person\" (click)=\"valid()\">有效</span>\r\n            </div>\r\n        </div>\r\n        <div class=\"videobox\">\r\n            <div class=\"setbox\">\r\n                <ng-container *ngFor=\"let larges of largescreen; let i = index\">\r\n                    <app-excel (outer)=\"groupParent($event)\" [validlarge]=\"validlarge\" [invalidlarge]=\"invalidlarge\" [mergelarge]=\"mergelarge\" [splitlarge]=\"splitlarge\" [larges]=\"larges.tableData\" *ngIf=\"largejudge(i)\"></app-excel>\r\n                </ng-container>\r\n            </div>\r\n            <div class=\"patternbox\">\r\n                <ng-container *ngFor=\"let larges of largescreen; let i = index\">\r\n                    <button [ngClass]=\"largeshow == i ? 'active' : ''\" class=\"choice\" (click)=\"patternjudge(i)\">\r\n            {{ larges.tableData.patternname }}\r\n          </button>\r\n                </ng-container>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div *ngIf=\"hint\">\r\n        <app-hint (outer)=\"run($event)\" [hinttype]=\"hinttype\"></app-hint>\r\n    </div>\r\n    <div class=\"addlarges\" *ngIf=\"larges == true\">\r\n        <div class=\"navbox\">\r\n            <div class=\"nav\" cdkDrag>\r\n                <div class=\"setname\" cdkDragHandle>\r\n                    <div class=\"set\">增加模式</div>\r\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"closelarges()\"></i>\r\n                </div>\r\n                <div class=\"setnav\">\r\n                    <div class=\"setting\">\r\n                        <div class=\"patternname\">模式名称:&nbsp;&nbsp;</div>\r\n                        <div class=\"pattern\">\r\n                            <input nz-input type=\"text\" [(ngModel)]=\"patternname\" />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"setting\">\r\n                        <div class=\"rationame\">屏幕比例:&nbsp;&nbsp;</div>\r\n                        <div class=\"ratio\">\r\n                            <nz-input-number [(ngModel)]=\"row\" [nzMin]=\"1\" [nzMax]=\"10\" [nzStep]=\"1\"></nz-input-number>\r\n                            行&nbsp;&nbsp;:&nbsp;&nbsp;\r\n                            <nz-input-number [(ngModel)]=\"col\" [nzMin]=\"1\" [nzMax]=\"10\" [nzStep]=\"1\"></nz-input-number>\r\n                            列\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"setbutton\">\r\n                    <button (click)=\"confirmlarges()\">确定</button>\r\n                    <button (click)=\"closelarges()\">取消</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"deletelarge\" *ngIf=\"deletelarges\">\r\n        <div class=\"navbox\">\r\n            <div class=\"nav\" cdkDrag>\r\n                <div class=\"setname\" cdkDragHandle>\r\n                    <div class=\"set\">删除模式</div>\r\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"deletesscreen()\"></i>\r\n                </div>\r\n                <div class=\"setnav\">\r\n                    <div class=\"colnav\">是否删除当前模式!</div>\r\n                    <div class=\"setbotton\">\r\n                        <button (click)=\"deletelarge()\">确定</button\r\n            ><button (click)=\"deletesscreen()\">关闭</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","export const CamundaModdleDescriptor = {\r\n  name: 'Camunda',\r\n  uri: 'http://camunda.org/schema/1.0/bpmn',\r\n  prefix: 'camunda',\r\n  xml: {\r\n    tagAlias: 'lowerCase',\r\n  },\r\n  associations: [],\r\n  types: [\r\n    {\r\n      name: 'Definitions',\r\n      isAbstract: true,\r\n      extends: ['bpmn:Definitions'],\r\n      properties: [\r\n        {\r\n          name: 'diagramRelationId',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'InOutBinding',\r\n      superClass: ['Element'],\r\n      isAbstract: true,\r\n      properties: [\r\n        {\r\n          name: 'source',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'sourceExpression',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'target',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'businessKey',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'local',\r\n          isAttr: true,\r\n          type: 'Boolean',\r\n          default: false,\r\n        },\r\n        {\r\n          name: 'variables',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'In',\r\n      superClass: ['InOutBinding'],\r\n      meta: {\r\n        allowedIn: ['bpmn:CallActivity', 'bpmn:SignalEventDefinition'],\r\n      },\r\n    },\r\n    {\r\n      name: 'Out',\r\n      superClass: ['InOutBinding'],\r\n      meta: {\r\n        allowedIn: ['bpmn:CallActivity'],\r\n      },\r\n    },\r\n    {\r\n      name: 'AsyncCapable',\r\n      isAbstract: true,\r\n      extends: ['bpmn:Activity', 'bpmn:Gateway', 'bpmn:Event'],\r\n      properties: [\r\n        {\r\n          name: 'async',\r\n          isAttr: true,\r\n          type: 'Boolean',\r\n          default: false,\r\n        },\r\n        {\r\n          name: 'asyncBefore',\r\n          isAttr: true,\r\n          type: 'Boolean',\r\n          default: false,\r\n        },\r\n        {\r\n          name: 'asyncAfter',\r\n          isAttr: true,\r\n          type: 'Boolean',\r\n          default: false,\r\n        },\r\n        {\r\n          name: 'exclusive',\r\n          isAttr: true,\r\n          type: 'Boolean',\r\n          default: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'JobPriorized',\r\n      isAbstract: true,\r\n      extends: ['bpmn:Process', 'camunda:AsyncCapable'],\r\n      properties: [\r\n        {\r\n          name: 'jobPriority',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'SignalEventDefinition',\r\n      isAbstract: true,\r\n      extends: ['bpmn:SignalEventDefinition'],\r\n      properties: [\r\n        {\r\n          name: 'async',\r\n          isAttr: true,\r\n          type: 'Boolean',\r\n          default: false,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'ErrorEventDefinition',\r\n      isAbstract: true,\r\n      extends: ['bpmn:ErrorEventDefinition'],\r\n      properties: [\r\n        {\r\n          name: 'errorCodeVariable',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'errorMessageVariable',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Error',\r\n      isAbstract: true,\r\n      extends: ['bpmn:Error'],\r\n      properties: [\r\n        {\r\n          name: 'camunda:errorMessage',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'PotentialStarter',\r\n      superClass: ['Element'],\r\n      properties: [\r\n        {\r\n          name: 'resourceAssignmentExpression',\r\n          type: 'bpmn:ResourceAssignmentExpression',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'FormSupported',\r\n      isAbstract: true,\r\n      extends: ['bpmn:StartEvent', 'bpmn:UserTask'],\r\n      properties: [\r\n        {\r\n          name: 'formHandlerClass',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'formKey',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'TemplateSupported',\r\n      isAbstract: true,\r\n      extends: ['bpmn:Process', 'bpmn:FlowElement'],\r\n      properties: [\r\n        {\r\n          name: 'modelerTemplate',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'modelerTemplateVersion',\r\n          isAttr: true,\r\n          type: 'Integer',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Initiator',\r\n      isAbstract: true,\r\n      extends: ['bpmn:StartEvent'],\r\n      properties: [\r\n        {\r\n          name: 'initiator',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'ScriptTask',\r\n      isAbstract: true,\r\n      extends: ['bpmn:ScriptTask'],\r\n      properties: [\r\n        {\r\n          name: 'resultVariable',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'resource',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Process',\r\n      isAbstract: true,\r\n      extends: ['bpmn:Process'],\r\n      properties: [\r\n        {\r\n          name: 'candidateStarterGroups',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'candidateStarterUsers',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'versionTag',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'historyTimeToLive',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'isStartableInTasklist',\r\n          isAttr: true,\r\n          type: 'Boolean',\r\n          default: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'EscalationEventDefinition',\r\n      isAbstract: true,\r\n      extends: ['bpmn:EscalationEventDefinition'],\r\n      properties: [\r\n        {\r\n          name: 'escalationCodeVariable',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'FormalExpression',\r\n      isAbstract: true,\r\n      extends: ['bpmn:FormalExpression'],\r\n      properties: [\r\n        {\r\n          name: 'resource',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Assignable',\r\n      extends: ['bpmn:UserTask'],\r\n      properties: [\r\n        {\r\n          name: 'assignee',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'candidateUsers',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'candidateGroups',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'dueDate',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'followUpDate',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'priority',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'CallActivity',\r\n      extends: ['bpmn:CallActivity'],\r\n      properties: [\r\n        {\r\n          name: 'calledElementBinding',\r\n          isAttr: true,\r\n          type: 'String',\r\n          default: 'latest',\r\n        },\r\n        {\r\n          name: 'calledElementVersion',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'calledElementVersionTag',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'calledElementTenantId',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'caseRef',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'caseBinding',\r\n          isAttr: true,\r\n          type: 'String',\r\n          default: 'latest',\r\n        },\r\n        {\r\n          name: 'caseVersion',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'caseTenantId',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'variableMappingClass',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'variableMappingDelegateExpression',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'ServiceTaskLike',\r\n      extends: [\r\n        'bpmn:ServiceTask',\r\n        'bpmn:BusinessRuleTask',\r\n        'bpmn:SendTask',\r\n        'bpmn:MessageEventDefinition',\r\n      ],\r\n      properties: [\r\n        {\r\n          name: 'expression',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'class',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'delegateExpression',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'resultVariable',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'DmnCapable',\r\n      extends: ['bpmn:BusinessRuleTask'],\r\n      properties: [\r\n        {\r\n          name: 'decisionRef',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'decisionRefBinding',\r\n          isAttr: true,\r\n          type: 'String',\r\n          default: 'latest',\r\n        },\r\n        {\r\n          name: 'decisionRefVersion',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'mapDecisionResult',\r\n          isAttr: true,\r\n          type: 'String',\r\n          default: 'resultList',\r\n        },\r\n        {\r\n          name: 'decisionRefTenantId',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'ExternalCapable',\r\n      extends: ['camunda:ServiceTaskLike'],\r\n      properties: [\r\n        {\r\n          name: 'type',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'topic',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'TaskPriorized',\r\n      extends: ['bpmn:Process', 'camunda:ExternalCapable'],\r\n      properties: [\r\n        {\r\n          name: 'taskPriority',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Properties',\r\n      superClass: ['Element'],\r\n      meta: {\r\n        allowedIn: ['*'],\r\n      },\r\n      properties: [\r\n        {\r\n          name: 'values',\r\n          type: 'Property',\r\n          isMany: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Property',\r\n      superClass: ['Element'],\r\n      properties: [\r\n        {\r\n          name: 'id',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'name',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'value',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Connector',\r\n      superClass: ['Element'],\r\n      meta: {\r\n        allowedIn: ['camunda:ServiceTaskLike'],\r\n      },\r\n      properties: [\r\n        {\r\n          name: 'inputOutput',\r\n          type: 'InputOutput',\r\n        },\r\n        {\r\n          name: 'connectorId',\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'InputOutput',\r\n      superClass: ['Element'],\r\n      meta: {\r\n        allowedIn: ['bpmn:FlowNode', 'camunda:Connector'],\r\n      },\r\n      properties: [\r\n        {\r\n          name: 'inputOutput',\r\n          type: 'InputOutput',\r\n        },\r\n        {\r\n          name: 'connectorId',\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'inputParameters',\r\n          isMany: true,\r\n          type: 'InputParameter',\r\n        },\r\n        {\r\n          name: 'outputParameters',\r\n          isMany: true,\r\n          type: 'OutputParameter',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'InputOutputParameter',\r\n      properties: [\r\n        {\r\n          name: 'name',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'value',\r\n          isBody: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'definition',\r\n          type: 'InputOutputParameterDefinition',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'InputOutputParameterDefinition',\r\n      isAbstract: true,\r\n    },\r\n    {\r\n      name: 'List',\r\n      superClass: ['InputOutputParameterDefinition'],\r\n      properties: [\r\n        {\r\n          name: 'items',\r\n          isMany: true,\r\n          type: 'InputOutputParameterDefinition',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Map',\r\n      superClass: ['InputOutputParameterDefinition'],\r\n      properties: [\r\n        {\r\n          name: 'entries',\r\n          isMany: true,\r\n          type: 'Entry',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Entry',\r\n      properties: [\r\n        {\r\n          name: 'key',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'value',\r\n          isBody: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'definition',\r\n          type: 'InputOutputParameterDefinition',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Value',\r\n      superClass: ['InputOutputParameterDefinition'],\r\n      properties: [\r\n        {\r\n          name: 'id',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'name',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'value',\r\n          isBody: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Script',\r\n      superClass: ['InputOutputParameterDefinition'],\r\n      properties: [\r\n        {\r\n          name: 'scriptFormat',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'resource',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'value',\r\n          isBody: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Field',\r\n      superClass: ['Element'],\r\n      meta: {\r\n        allowedIn: [\r\n          'camunda:ServiceTaskLike',\r\n          'camunda:ExecutionListener',\r\n          'camunda:TaskListener',\r\n        ],\r\n      },\r\n      properties: [\r\n        {\r\n          name: 'name',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'expression',\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'stringValue',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'string',\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'InputParameter',\r\n      superClass: ['InputOutputParameter'],\r\n    },\r\n    {\r\n      name: 'OutputParameter',\r\n      superClass: ['InputOutputParameter'],\r\n    },\r\n    {\r\n      name: 'Collectable',\r\n      isAbstract: true,\r\n      extends: ['bpmn:MultiInstanceLoopCharacteristics'],\r\n      superClass: ['camunda:AsyncCapable'],\r\n      properties: [\r\n        {\r\n          name: 'collection',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'elementVariable',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'FailedJobRetryTimeCycle',\r\n      superClass: ['Element'],\r\n      meta: {\r\n        allowedIn: [\r\n          'camunda:AsyncCapable',\r\n          'bpmn:MultiInstanceLoopCharacteristics',\r\n        ],\r\n      },\r\n      properties: [\r\n        {\r\n          name: 'body',\r\n          isBody: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'ExecutionListener',\r\n      superClass: ['Element'],\r\n      meta: {\r\n        allowedIn: [\r\n          'bpmn:Task',\r\n          'bpmn:ServiceTask',\r\n          'bpmn:UserTask',\r\n          'bpmn:BusinessRuleTask',\r\n          'bpmn:ScriptTask',\r\n          'bpmn:ReceiveTask',\r\n          'bpmn:ManualTask',\r\n          'bpmn:ExclusiveGateway',\r\n          'bpmn:SequenceFlow',\r\n          'bpmn:ParallelGateway',\r\n          'bpmn:InclusiveGateway',\r\n          'bpmn:EventBasedGateway',\r\n          'bpmn:StartEvent',\r\n          'bpmn:IntermediateCatchEvent',\r\n          'bpmn:IntermediateThrowEvent',\r\n          'bpmn:EndEvent',\r\n          'bpmn:BoundaryEvent',\r\n          'bpmn:CallActivity',\r\n          'bpmn:SubProcess',\r\n          'bpmn:Process',\r\n        ],\r\n      },\r\n      properties: [\r\n        {\r\n          name: 'expression',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'class',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'delegateExpression',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'event',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'script',\r\n          type: 'Script',\r\n        },\r\n        {\r\n          name: 'fields',\r\n          type: 'Field',\r\n          isMany: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'TaskListener',\r\n      superClass: ['Element'],\r\n      meta: {\r\n        allowedIn: ['bpmn:UserTask'],\r\n      },\r\n      properties: [\r\n        {\r\n          name: 'expression',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'class',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'delegateExpression',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'event',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'script',\r\n          type: 'Script',\r\n        },\r\n        {\r\n          name: 'fields',\r\n          type: 'Field',\r\n          isMany: true,\r\n        },\r\n        {\r\n          name: 'id',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'eventDefinitions',\r\n          type: 'bpmn:TimerEventDefinition',\r\n          isMany: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'FormProperty',\r\n      superClass: ['Element'],\r\n      meta: {\r\n        allowedIn: ['bpmn:StartEvent', 'bpmn:UserTask'],\r\n      },\r\n      properties: [\r\n        {\r\n          name: 'id',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'name',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'type',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'required',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'readable',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'writable',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'variable',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'expression',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'datePattern',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'default',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'values',\r\n          type: 'Value',\r\n          isMany: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'FormData',\r\n      superClass: ['Element'],\r\n      meta: {\r\n        allowedIn: ['bpmn:StartEvent', 'bpmn:UserTask'],\r\n      },\r\n      properties: [\r\n        {\r\n          name: 'fields',\r\n          type: 'FormField',\r\n          isMany: true,\r\n        },\r\n        {\r\n          name: 'businessKey',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'FormField',\r\n      superClass: ['Element'],\r\n      properties: [\r\n        {\r\n          name: 'id',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'label',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'type',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'datePattern',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'defaultValue',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'properties',\r\n          type: 'Properties',\r\n        },\r\n        {\r\n          name: 'validation',\r\n          type: 'Validation',\r\n        },\r\n        {\r\n          name: 'values',\r\n          type: 'Value',\r\n          isMany: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Validation',\r\n      superClass: ['Element'],\r\n      properties: [\r\n        {\r\n          name: 'constraints',\r\n          type: 'Constraint',\r\n          isMany: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Constraint',\r\n      superClass: ['Element'],\r\n      properties: [\r\n        {\r\n          name: 'name',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n        {\r\n          name: 'config',\r\n          type: 'String',\r\n          isAttr: true,\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'ConditionalEventDefinition',\r\n      isAbstract: true,\r\n      extends: ['bpmn:ConditionalEventDefinition'],\r\n      properties: [\r\n        {\r\n          name: 'variableName',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n        {\r\n          name: 'variableEvents',\r\n          isAttr: true,\r\n          type: 'String',\r\n        },\r\n      ],\r\n    },\r\n  ],\r\n  emumerations: [],\r\n};\r\n","export default {\r\n  // Labels\r\n  \"Activate the global connect tool\": \"激活全局连接工具\",\r\n  \"Append {type}\": \"追加 {type}\",\r\n  \"Append EndEvent\": \"追加 结束事件 \",\r\n  \"Append Task\": \"追加 任务\",\r\n  \"Append Gateway\": \"追加 网关\",\r\n  \"Append Intermediate/Boundary Event\": \"追加 中间/边界 事件\",\r\n  \"Add Lane above\": \"在上面添加道\",\r\n  \"Divide into two Lanes\": \"分割成两个道\",\r\n  \"Divide into three Lanes\": \"分割成三个道\",\r\n  \"Add Lane below\": \"在下面添加道\",\r\n  \"Append compensation activity\": \"追加补偿活动\",\r\n  \"Change type\": \"修改类型\",\r\n  \"Connect using Association\": \"使用关联连接\",\r\n  \"Connect using Sequence/MessageFlow or Association\":\r\n    \"使用顺序/消息流或者关联连接\",\r\n  \"Connect using DataInputAssociation\": \"使用数据输入关联连接\",\r\n  Remove: \"移除\",\r\n  \"Activate the hand tool\": \"激活抓手工具\",\r\n  \"Activate the lasso tool\": \"激活套索工具\",\r\n  \"Activate the create/remove space tool\": \"激活创建/删除空间工具\",\r\n  \"Create expanded SubProcess\": \"创建扩展子过程\",\r\n  \"Create IntermediateThrowEvent/BoundaryEvent\": \"创建中间抛出事件/边界事件\",\r\n  \"Create Pool/Participant\": \"创建池/参与者\",\r\n  \"Parallel Multi Instance\": \"并行多重事件\",\r\n  \"Sequential Multi Instance\": \"时序多重事件\",\r\n  DataObjectReference: \"数据对象参考\",\r\n  DataStoreReference: \"数据存储参考\",\r\n  Loop: \"循环\",\r\n  \"Ad-hoc\": \"即席\",\r\n  \"Create {type}\": \"创建 {type}\",\r\n  \"Create Task\": \"创建任务\",\r\n  \"Create StartEvent\": \"创建开始事件\",\r\n  \"Create EndEvent\": \"创建结束事件\",\r\n  \"Create Group\": \"创建组\",\r\n  Task: \"任务\",\r\n  \"Send Task\": \"发送任务\",\r\n  \"Receive Task\": \"接收任务\",\r\n  \"User Task\": \"用户任务\",\r\n  \"Manual Task\": \"手工任务\",\r\n  \"Business Rule Task\": \"业务规则任务\",\r\n  \"Service Task\": \"服务任务\",\r\n  \"Script Task\": \"脚本任务\",\r\n  \"Call Activity\": \"调用活动\",\r\n  \"Sub Process (collapsed)\": \"子流程（折叠的）\",\r\n  \"Sub Process (expanded)\": \"子流程（展开的）\",\r\n  \"Start Event\": \"开始事件\",\r\n  StartEvent: \"开始事件\",\r\n  \"Intermediate Throw Event\": \"中间事件\",\r\n  \"End Event\": \"结束事件\",\r\n  EndEvent: \"结束事件\",\r\n  \"Create Gateway\": \"创建网关\",\r\n  GateWay: \"网关\",\r\n  \"Create Intermediate/Boundary Event\": \"创建中间/边界事件\",\r\n  \"Message Start Event\": \"消息开始事件\",\r\n  \"Timer Start Event\": \"定时开始事件\",\r\n  \"Conditional Start Event\": \"条件开始事件\",\r\n  \"Signal Start Event\": \"信号开始事件\",\r\n  \"Error Start Event\": \"错误开始事件\",\r\n  \"Escalation Start Event\": \"升级开始事件\",\r\n  \"Compensation Start Event\": \"补偿开始事件\",\r\n  \"Message Start Event (non-interrupting)\": \"消息开始事件（非中断）\",\r\n  \"Timer Start Event (non-interrupting)\": \"定时开始事件（非中断）\",\r\n  \"Conditional Start Event (non-interrupting)\": \"条件开始事件（非中断）\",\r\n  \"Signal Start Event (non-interrupting)\": \"信号开始事件（非中断）\",\r\n  \"Escalation Start Event (non-interrupting)\": \"升级开始事件（非中断）\",\r\n  \"Message Intermediate Catch Event\": \"消息中间捕获事件\",\r\n  \"Message Intermediate Throw Event\": \"消息中间抛出事件\",\r\n  \"Timer Intermediate Catch Event\": \"定时中间捕获事件\",\r\n  \"Escalation Intermediate Throw Event\": \"升级中间抛出事件\",\r\n  \"Conditional Intermediate Catch Event\": \"条件中间捕获事件\",\r\n  \"Link Intermediate Catch Event\": \"链接中间捕获事件\",\r\n  \"Link Intermediate Throw Event\": \"链接中间抛出事件\",\r\n  \"Compensation Intermediate Throw Event\": \"补偿中间抛出事件\",\r\n  \"Signal Intermediate Catch Event\": \"信号中间捕获事件\",\r\n  \"Signal Intermediate Throw Event\": \"信号中间抛出事件\",\r\n  \"Message End Event\": \"消息结束事件\",\r\n  \"Escalation End Event\": \"定时结束事件\",\r\n  \"Error End Event\": \"错误结束事件\",\r\n  \"Cancel End Event\": \"取消结束事件\",\r\n  \"Compensation End Event\": \"补偿结束事件\",\r\n  \"Signal End Event\": \"信号结束事件\",\r\n  \"Terminate End Event\": \"终止结束事件\",\r\n  \"Message Boundary Event\": \"消息边界事件\",\r\n  \"Message Boundary Event (non-interrupting)\": \"消息边界事件（非中断）\",\r\n  \"Timer Boundary Event\": \"定时边界事件\",\r\n  \"Timer Boundary Event (non-interrupting)\": \"定时边界事件（非中断）\",\r\n  \"Escalation Boundary Event\": \"升级边界事件\",\r\n  \"Escalation Boundary Event (non-interrupting)\": \"升级边界事件（非中断）\",\r\n  \"Conditional Boundary Event\": \"条件边界事件\",\r\n  \"Conditional Boundary Event (non-interrupting)\": \"条件边界事件（非中断）\",\r\n  \"Error Boundary Event\": \"错误边界事件\",\r\n  \"Cancel Boundary Event\": \"取消边界事件\",\r\n  \"Signal Boundary Event\": \"信号边界事件\",\r\n  \"Signal Boundary Event (non-interrupting)\": \"信号边界事件（非中断）\",\r\n  \"Compensation Boundary Event\": \"补偿边界事件\",\r\n  \"Exclusive Gateway\": \"互斥网关\",\r\n  \"Parallel Gateway\": \"并行网关\",\r\n  \"Inclusive Gateway\": \"相容网关\",\r\n  \"Complex Gateway\": \"复杂网关\",\r\n  \"Event based Gateway\": \"事件网关\",\r\n  Transaction: \"转运\",\r\n  \"Sub Process\": \"子流程\",\r\n  \"Event Sub Process\": \"事件子流程\",\r\n  \"Collapsed Pool\": \"折叠池\",\r\n  \"Expanded Pool\": \"展开池\",\r\n  // Errors\r\n  \"no parent for {element} in {parent}\": \"在{parent}里，{element}没有父类\",\r\n  \"no shape type specified\": \"没有指定的形状类型\",\r\n  \"flow elements must be children of pools/participants\":\r\n    \"流元素必须是池/参与者的子类\",\r\n  \"out of bounds release\": \"out of bounds release\",\r\n  \"more than {count} child lanes\": \"子道大于{count} \",\r\n  \"element required\": \"元素不能为空\",\r\n  \"diagram not part of bpmn:Definitions\": \"流程图不符合bpmn规范\",\r\n  \"no diagram to display\": \"没有可展示的流程图\",\r\n  \"no process or collaboration to display\": \"没有可展示的流程/协作\",\r\n  \"element {element} referenced by {referenced}#{property} not yet drawn\":\r\n    \"由{referenced}#{property}引用的{element}元素仍未绘制\",\r\n  \"already rendered {element}\": \"{element} 已被渲染\",\r\n  \"failed to import {element}\": \"导入{element}失败\",\r\n  //属性面板的参数\r\n  Id: \"编号\",\r\n  Name: \"名称\",\r\n  General: \"常规\",\r\n  Details: \"详情\",\r\n  \"Message Name\": \"消息名称\",\r\n  Message: \"消息\",\r\n  Initiator: \"创建者\",\r\n  \"Asynchronous Continuations\": \"持续异步\",\r\n  \"Asynchronous Before\": \"异步前\",\r\n  \"Asynchronous After\": \"异步后\",\r\n  \"Job Configuration\": \"工作配置\",\r\n  Exclusive: \"排除\",\r\n  \"Job Priority\": \"工作优先级\",\r\n  \"Retry Time Cycle\": \"重试时间周期\",\r\n  Documentation: \"文档\",\r\n  \"Element Documentation\": \"元素文档\",\r\n  \"History Configuration\": \"历史配置\",\r\n  \"History Time To Live\": \"历史的生存时间\",\r\n  Forms: \"表单\",\r\n  \"Form Key\": \"表单key\",\r\n  \"Form Fields\": \"表单字段\",\r\n  \"Business Key\": \"业务key\",\r\n  \"Form Field\": \"表单字段\",\r\n  ID: \"编号\",\r\n  Type: \"类型\",\r\n  Label: \"名称\",\r\n  \"Default Value\": \"默认值\",\r\n  Validation: \"校验\",\r\n  \"Add Constraint\": \"添加约束\",\r\n  Config: \"配置\",\r\n  Properties: \"属性\",\r\n  \"Add Property\": \"添加属性\",\r\n  Value: \"值\",\r\n  Add: \"添加\",\r\n  Values: \"值\",\r\n  \"Add Value\": \"添加值\",\r\n  Listeners: \"监听器\",\r\n  \"Execution Listener\": \"执行监听\",\r\n  \"Event Type\": \"事件类型\",\r\n  \"Listener Type\": \"监听器类型\",\r\n  \"Java Class\": \"Java类\",\r\n  Expression: \"表达式\",\r\n  \"Must provide a value\": \"必须提供一个值\",\r\n  \"Delegate Expression\": \"代理表达式\",\r\n  Script: \"脚本\",\r\n  \"Script Format\": \"脚本格式\",\r\n  \"Script Type\": \"脚本类型\",\r\n  \"Inline Script\": \"内联脚本\",\r\n  \"External Script\": \"外部脚本\",\r\n  Resource: \"资源\",\r\n  \"Field Injection\": \"字段注入\",\r\n  Extensions: \"扩展\",\r\n  \"Input/Output\": \"输入/输出\",\r\n  \"Input Parameters\": \"输入参数\",\r\n  \"Output Parameters\": \"输出参数\",\r\n  Parameters: \"参数\",\r\n  \"Output Parameter\": \"输出参数\",\r\n  \"Timer Definition Type\": \"定时器定义类型\",\r\n  \"Timer Definition\": \"定时器定义\",\r\n  Date: \"日期\",\r\n  Duration: \"持续\",\r\n  Cycle: \"循环\",\r\n  Signal: \"信号\",\r\n  \"Signal Name\": \"信号名称\",\r\n  Escalation: \"升级\",\r\n  Error: \"错误\",\r\n  \"Link Name\": \"链接名称\",\r\n  Condition: \"条件名称\",\r\n  \"Variable Name\": \"变量名称\",\r\n  \"Variable Event\": \"变量事件\",\r\n  \"Specify more than one variable change event as a comma separated list.\":\r\n    \"多个变量事件以逗号隔开\",\r\n  \"Wait for Completion\": \"等待完成\",\r\n  \"Activity Ref\": \"活动参考\",\r\n  \"Version Tag\": \"版本标签\",\r\n  Executable: \"可执行文件\",\r\n  \"External Task Configuration\": \"扩展任务配置\",\r\n  \"Task Priority\": \"任务优先级\",\r\n  External: \"外部\",\r\n  Connector: \"连接器\",\r\n  \"Must configure Connector\": \"必须配置连接器\",\r\n  \"Connector Id\": \"连接器编号\",\r\n  Implementation: \"实现方式\",\r\n  \"Field Injections\": \"字段注入\",\r\n  Fields: \"字段\",\r\n  \"Result Variable\": \"结果变量\",\r\n  Topic: \"主题\",\r\n  \"Configure Connector\": \"配置连接器\",\r\n  \"Input Parameter\": \"输入参数\",\r\n  Assignee: \"代理人\",\r\n  \"Candidate Users\": \"候选用户\",\r\n  \"Candidate Groups\": \"候选组\",\r\n  \"Due Date\": \"到期时间\",\r\n  \"Follow Up Date\": \"跟踪日期\",\r\n  Priority: \"优先级\",\r\n  \"The follow up date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)\":\r\n    \"跟踪日期必须符合EL表达式，如： ${someDate} ,或者一个ISO标准日期，如：2015-06-26T09:54:00\",\r\n  \"The due date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)\":\r\n    \"跟踪日期必须符合EL表达式，如： ${someDate} ,或者一个ISO标准日期，如：2015-06-26T09:54:00\",\r\n  Variables: \"变量\",\r\n  \"Candidate Starter Configuration\": \"候选开始配置\",\r\n  \"Task Listener\": \"任务监听器\",\r\n  \"Candidate Starter Groups\": \"候选开始组\",\r\n  \"Candidate Starter Users\": \"候选开始用户\",\r\n  \"Tasklist Configuration\": \"任务列表配置\",\r\n  Startable: \"启动\",\r\n  \"Specify more than one group as a comma separated list.\":\r\n    \"指定多个组,用逗号分隔\",\r\n  \"Specify more than one user as a comma separated list.\":\r\n    \"指定多个用户,用逗号分隔\",\r\n  \"This maps to the process definition key.\": \"这会映射为流程定义的键\",\r\n  \"CallActivity Type\": \"调用活动类型\",\r\n  \"Condition Type\": \"条件类型\",\r\n  \"Create UserTask\": \"创建用户任务\",\r\n  \"Create CallActivity\": \"创建调用活动\",\r\n  \"Called Element\": \"调用元素\",\r\n  \"Create DataObjectReference\": \"创建数据对象引用\",\r\n  \"Create DataStoreReference\": \"创建数据存储引用\",\r\n  \"Multi Instance\": \"多实例\",\r\n  \"Loop Cardinality\": \"实例数量\",\r\n  Collection: \"任务参与人列表\",\r\n  \"Element Variable\": \"元素变量\",\r\n  \"Completion Condition\": \"完成条件\",\r\n};\r\n","import translations from \"./translations\";\r\n\r\nexport default function customTranslate(template, replacements) {\r\n    replacements = replacements || {};\r\n\r\n    // Translate\r\n    template = translations[template] || template;\r\n\r\n    // Replace\r\n    return template.replace(/{([^}]+)}/g, function(_, key) {\r\n        var str = replacements[key];\r\n        if (\r\n            translations[replacements[key]] != null &&\r\n            translations[replacements[key]] != \"undefined\"\r\n        ) {\r\n            str = translations[replacements[key]];\r\n        }\r\n        return str || \"{\" + key + \"}\";\r\n    });\r\n}","import { assign } from \"min-dash\";\r\n\r\nexport default function PaletteProvider(\r\n    palette,\r\n    create,\r\n    elementFactory,\r\n    handTool,\r\n    lassoTool,\r\n    spaceTool,\r\n    globalConnect,\r\n    translate\r\n) {\r\n    this.create = create;\r\n    this.elementFactory = elementFactory;\r\n    this.handTool = handTool;\r\n    this.lassoTool = lassoTool;\r\n    this.spaceTool = spaceTool;\r\n    this.globalConnect = globalConnect;\r\n    this.translate = translate;\r\n\r\n    palette.registerProvider(this);\r\n}\r\n\r\nPaletteProvider.$inject = [\r\n    \"palette\",\r\n    \"create\",\r\n    \"elementFactory\",\r\n    \"handTool\",\r\n    \"lassoTool\",\r\n    \"spaceTool\",\r\n    \"globalConnect\",\r\n    \"translate\",\r\n];\r\n\r\nPaletteProvider.prototype.getPaletteEntries = function(element) {\r\n    const {\r\n        create,\r\n        elementFactory,\r\n        handTool,\r\n        lassoTool,\r\n        spaceTool,\r\n        globalConnect,\r\n        translate,\r\n    } = this;\r\n\r\n    function createAction(type, group, className, title, options) {\r\n        function createListener(event) {\r\n            var shape = elementFactory.createShape(assign({ type: type }, options));\r\n\r\n            if (options) {\r\n                shape.businessObject.di.isExpanded = options.isExpanded;\r\n            }\r\n\r\n            create.start(event, shape);\r\n        }\r\n\r\n        var shortType = type.replace(/^bpmn:/, \"\");\r\n\r\n        return {\r\n            group: group,\r\n            className: className,\r\n            title: title || translate(\"Create {type}\", { type: shortType }),\r\n            action: {\r\n                dragstart: createListener,\r\n                click: createListener,\r\n            },\r\n        };\r\n    }\r\n\r\n    return {\r\n        \"lasso-tool\": {\r\n            group: \"tools\",\r\n            className: \"bpmn-icon-lasso-tool\",\r\n            title: \"Activate the lasso tool\",\r\n            action: {\r\n                click: function(event) {\r\n                    lassoTool.activateSelection(event);\r\n                },\r\n            },\r\n        },\r\n\r\n        \"hand-tool\": {\r\n            group: \"tools\",\r\n            className: \"bpmn-icon-hand-tool\",\r\n            title: translate(\"Activate the hand tool\"),\r\n            action: {\r\n                click: function(event) {\r\n                    handTool.activateHand(event);\r\n                },\r\n            },\r\n        },\r\n\r\n        \"space-tool\": {\r\n            group: \"tools\",\r\n            className: \"bpmn-icon-space-tool\",\r\n            title: translate(\"Activate the create/remove space tool\"),\r\n            action: {\r\n                click: function(event) {\r\n                    spaceTool.activateSelection(event);\r\n                },\r\n            },\r\n        },\r\n        \"global-connect-tool\": {\r\n            group: \"tools\",\r\n            className: \"bpmn-icon-connection-multi\",\r\n            title: translate(\"Activate the global connect tool\"),\r\n            action: {\r\n                click: function(event) {\r\n                    globalConnect.toggle(event);\r\n                },\r\n            },\r\n        },\r\n\r\n        \"tool-separator\": {\r\n            group: \"tools\",\r\n            separator: true,\r\n        },\r\n\r\n        \"create.start-event\": createAction(\r\n            \"bpmn:StartEvent\",\r\n            \"event\",\r\n            \"bpmn-icon-start-event-none\",\r\n            \"创建开始节点\"\r\n        ),\r\n\r\n        \"create.exclusive-gateway\": createAction(\r\n            \"bpmn:ExclusiveGateway\",\r\n            \"gateway\",\r\n            \"bpmn-icon-gateway-xor\",\r\n            \"创建排他网关\"\r\n        ),\r\n        \"create.task\": createAction(\r\n            \"bpmn:Task\",\r\n            \"activity\",\r\n            \"bpmn-icon-task\",\r\n            \"创建用户任务\"\r\n        ),\r\n        \"create.end-event\": createAction(\r\n            \"bpmn:EndEvent\",\r\n            \"event\",\r\n            \"bpmn-icon-end-event-none\",\r\n            \"创建结束节点\"\r\n        ),\r\n        // \"create.data-store\": createAction(\r\n        //     \"bpmn:ManualTask\",\r\n        //     \"activity\",\r\n        //     \"lindaidai-task\",\r\n        //     \"自定义节点\"\r\n        // ),\r\n        \"create.iu\": createAction(\r\n            \"bpmn:ManualTask\",\r\n            \"activity\",\r\n            \"icon-custom bpmn-icon-iu\", // className\r\n            \"自定义节点\"\r\n        ),\r\n    };\r\n};","// 自定义元素的类型，此时我们只需要自定义一种节点，所以数组只有一个元素\r\nconst customElements = [\"bpmn:ManualTask\"];\r\nconst hasLabelElements = [\"bpmn:StartEvent\", \"bpmn:EndEvent\"]; // 一开始就有label标签的元素类型\r\nconst customConfig = {\r\n    // 自定义元素的配置\r\n    iu: {\r\n        url: \"https://172.16.133.101:18000/quadrangle.png\",\r\n        attr: { x: 0, y: 0, width: 100, height: 80 },\r\n    },\r\n};\r\nexport { customElements, customConfig, hasLabelElements };","/*\r\n * @Author: your name\r\n * @Date: 2021-11-04 13:49:22\r\n * @LastEditTime: 2021-11-04 13:51:12\r\n * @LastEditors: Please set LastEditors\r\n * @Description: In User Settings Edit\r\n * @FilePath: \\vue-bpmn-process\\src\\components\\customBpmn\\CustomRenderer\\CustomRenderer.js\r\n */\r\nimport BaseRenderer from \"diagram-js/lib/draw/BaseRenderer\";\r\n\r\nimport { customElements, customConfig, hasLabelElements } from \"./util\";\r\nimport { append as svgAppend, create as svgCreate } from \"tiny-svg\"; // 引入默认的renderer\r\n\r\nconst HIGH_PRIORITY = 1500; // 最高优先级\r\nexport default class CustomRenderer extends BaseRenderer {\r\n    // 继承BaseRenderer\r\n    constructor(eventBus, bpmnRenderer) {\r\n        super(eventBus, HIGH_PRIORITY);\r\n        this.bpmnRenderer = bpmnRenderer;\r\n    }\r\n\r\n    canRender(element) {\r\n        return !element.labelTarget;\r\n    }\r\n\r\n    drawShape(parentNode, element) {\r\n        const type = element.type; // 获取到类型\r\n        // 所有节点都会走这个函数，所以此时只限制，需要自定义的才去自定义，否则仍显示bpmn默认图标\r\n        if (customElements.includes(type)) {\r\n            const { url, attr } = customConfig[\"iu\"];\r\n            const customIcon = svgCreate(\"image\", {...attr, href: url });\r\n            element[\"width\"] = attr.width;\r\n            element[\"height\"] = attr.height;\r\n            svgAppend(parentNode, customIcon);\r\n            if (!hasLabelElements.includes(type) && element.businessObject.name) {\r\n                const text = svgCreate(\"text\", {\r\n                    x: attr.x,\r\n                    y: attr.y + attr.height + 10,\r\n                    \"font-size\": \"14\",\r\n                    fill: \"#000\",\r\n                });\r\n                text.innerHTML = element.businessObject.name;\r\n                svgAppend(parentNode, text);\r\n            }\r\n            return customIcon;\r\n        }\r\n        const shape = this.bpmnRenderer.drawShape(parentNode, element);\r\n        return shape;\r\n    }\r\n\r\n    getShapePath(shape) {\r\n        return this.bpmnRenderer.getShapePath(shape);\r\n    }\r\n}\r\n\r\nCustomRenderer.$inject = [\"eventBus\", \"bpmnRenderer\"];","import CustomPalette from \"./CustomPalette\";\r\n// import CustomRenderer from \"../CustomRenderer/CustomRenderer.js\";\r\nimport CustomRenderer from \"../CustomRenderer/CustomRenderer\";\r\n\r\nexport default {\r\n    __init__: [\"paletteProvider\", \"customRenderer\"],\r\n    paletteProvider: [\"type\", CustomPalette],\r\n    customRenderer: [\"type\", CustomRenderer],\r\n};","import inherits from \"inherits\";\r\n\r\nimport Modeler from \"bpmn-js/lib/Modeler\";\r\n\r\nimport CustomModule from \"./custom\";\r\n\r\nfunction CustomModeler(options) {\r\n    Modeler.call(this, options);\r\n\r\n    this._customElements = [];\r\n}\r\n\r\ninherits(CustomModeler, Modeler);\r\n\r\nCustomModeler.prototype._modules = [].concat(CustomModeler.prototype._modules, [\r\n    CustomModule,\r\n]);\r\n\r\nexport { CustomModeler };","const SUITABILITY_SCORE_HIGH = 100;\r\nconst SUITABILITY_SCORE_AVERGE = 50;\r\nconst SUITABILITY_SCORE_LOW = 25;\r\n\r\nexport default class CustomContextPad {\r\n    constructor(\r\n        bpmnFactory,\r\n        config,\r\n        contextPad,\r\n        create,\r\n        elementFactory,\r\n        injector,\r\n        translate\r\n    ) {\r\n        this.bpmnFactory = bpmnFactory;\r\n        this.create = create;\r\n        this.elementFactory = elementFactory;\r\n        this.translate = translate;\r\n\r\n        if (config.autoPlace !== false) {\r\n            this.autoPlace = injector.get(\"autoPlace\", false);\r\n        }\r\n\r\n        contextPad.registerProvider(this);\r\n    }\r\n\r\n    getContextPadEntries(element) {\r\n        const { autoPlace, bpmnFactory, create, elementFactory, translate } = this;\r\n\r\n        function appendServiceTask(suitabilityScore) {\r\n            return function(event, element) {\r\n                if (autoPlace) {\r\n                    const businessObject = bpmnFactory.create(\"bpmn:ManualTask\");\r\n                    businessObject.suitable = suitabilityScore;\r\n                    const shape = elementFactory.createShape({\r\n                        type: \"bpmn:ManualTask\",\r\n                        businessObject: businessObject,\r\n                    });\r\n\r\n                    autoPlace.append(element, shape);\r\n                } else {\r\n                    appendServiceTaskStart(event, element);\r\n                }\r\n            };\r\n        }\r\n\r\n        function appendServiceTaskStart(suitabilityScore) {\r\n            return function(event) {\r\n                const businessObject = bpmnFactory.create(\"bpmn:ManualTask\");\r\n\r\n                businessObject.suitable = suitabilityScore;\r\n\r\n                const shape = elementFactory.createShape({\r\n                    type: \"bpmn:ManualTask\",\r\n                    businessObject: businessObject,\r\n                });\r\n\r\n                create.start(event, shape, element);\r\n            };\r\n        }\r\n\r\n        return {\r\n            \"append.iu\": {\r\n                group: \"model\",\r\n                className: \"icon-custom bpmn-icon-iu\",\r\n                title: translate(\"自定义节点\"),\r\n                action: {\r\n                    click: appendServiceTask(SUITABILITY_SCORE_LOW),\r\n                    dragstart: appendServiceTaskStart(SUITABILITY_SCORE_LOW),\r\n                },\r\n            },\r\n        };\r\n    }\r\n}\r\n\r\nCustomContextPad.$inject = [\r\n    \"bpmnFactory\",\r\n    \"config\",\r\n    \"contextPad\",\r\n    \"create\",\r\n    \"elementFactory\",\r\n    \"injector\",\r\n    \"translate\",\r\n];","import CustomContextPad from \"./CustomContextPad\";\r\nexport default {\r\n    __init__: [\"customContextPad\"],\r\n    customContextPad: [\"type\", CustomContextPad],\r\n};","import {\n  Component,\n  OnInit,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n} from '@angular/core';\n\n@Component({\n  selector: 'app-node',\n  templateUrl: './node.component.html',\n  styleUrls: ['./node.component.less'],\n})\nexport class NodeComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() formData: any;\n  @Input() nodeElement: any;\n  @Input() modeler: any;\n  @Input() configTab: any;\n  value?: string;\n  localFormData: any = {};\n  flag = true;\n  idflag = true;\n  isVisible = false;\n  property: any = {\n    price: [],\n    valyetype: 'string',\n    title: '',\n    type: 'input',\n    unit: '',\n    value: '',\n    name: '',\n  };\n  custom: any[] = [];\n  constructor() {}\n\n  ngOnInit(): void {}\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.formData) {\n      this.localFormData = this.formData;\n      if (this.localFormData.custom) {\n        this.custom = this.localFormData.custom;\n      } else {\n        this.custom = [];\n      }\n    }\n    if (changes.nodeElement) {\n      if (this.nodeElement.type == 'bpmn:StartEvent') {\n        this.updateName('开始');\n      }\n      if (this.nodeElement.type == 'bpmn:EndEvent') {\n        this.updateName('结束');\n      }\n    }\n  }\n  start() {\n    this.flag = false;\n  }\n  end() {\n    this.flag = true;\n    this.updateName(this.localFormData.name);\n  }\n  idstart() {\n    this.idflag = false;\n  }\n  idend() {\n    this.idflag = true;\n    this.updateId(this.localFormData.id);\n  }\n  updateId(name: any) {\n    this.updateProperties({ id: name });\n  }\n  updateName(name: any) {\n    if (this.flag) {\n      this.updateProperties({ name: name });\n    }\n  }\n  updateProperties(properties: any) {\n    this.modeler.get('modeling').updateProperties(this.nodeElement, properties);\n  }\n  updateSequenceFlow(val: any) {\n    let newCondition = this.modeler\n      .get('moddle')\n      .create('bpmn:FormalExpression', {\n        body: val,\n      });\n    this.updateProperties({ conditionExpression: newCondition });\n  }\n  addcamunda() {}\n  edit(ev: any, i: any) {\n    // console.log(ev, i);\n  }\n  addUser(properties: any) {\n    this.updateProperties(properties);\n    Object.assign(properties, {\n      userType: Object.keys(properties)[0],\n    });\n    this.outer.emit(properties);\n  }\n  cutSelect() {\n    this.property.price = [];\n  }\n  addprice() {\n    this.property.price.push({\n      value: '',\n      label: '',\n    });\n  }\n  showModal(): void {\n    this.isVisible = true;\n  }\n\n  handleOk(): void {\n    this.custom.push(this.property);\n    this.updateProperties({ custom: JSON.stringify(this.custom) });\n    this.property = {\n      price: [],\n      title: '',\n      type: 'input',\n      valyetype: 'string',\n      unit: '',\n      value: '',\n      name: '',\n    };\n    this.isVisible = false;\n  }\n\n  handleCancel(): void {\n    this.property = {\n      price: [],\n      title: '',\n      type: 'input',\n      valyetype: 'string',\n      unit: '',\n      value: '',\n      name: '',\n    };\n    this.isVisible = false;\n  }\n  addProperty() {\n    const moddle = this.modeler.get('moddle');\n    const extensions = moddle.create('bpmn:ExtensionElements', {\n      values: [],\n    });\n    for (let i = 0; i < this.custom.length; i++) {\n      let data = this.custom[i];\n      const propItem = moddle.create('camunda:Property', {\n        name: data.name,\n        type: data.type,\n        unit: data.unit,\n        price: JSON.stringify(data.price),\n        title: data.title,\n        valyetype: data.valyetype,\n        value: data.value,\n      });\n      extensions.values.push(propItem);\n    }\n    this.updateProperties({\n      extensionElements: extensions,\n    });\n  }\n}\n","<div *ngIf=\"configTab == 'node'\">\n    <div>\n        节点类型:<input nz-input [(ngModel)]=\"localFormData.type\" [disabled]=\"true\" />\n    </div>\n    <div>\n        节点ID:\n        <input nz-input [(ngModel)]=\"localFormData.id\" (input)=\"updateId(localFormData.id)\" (compositionstart)=\"idstart()\" (compositionend)=\"idend()\" />\n    </div>\n    <div>\n        <div>节点名称:</div>\n        <div>\n            <input nz-input [(ngModel)]=\"localFormData.name\" (input)=\"updateName(localFormData.name)\" (compositionstart)=\"start()\" (compositionend)=\"end()\" />\n        </div>\n    </div>\n    <div *ngIf=\"localFormData.type == 'bpmn:ManualTask'\">\n        <div>\n            添加判断条件:\n            <span (click)=\"showModal()\"><i nz-icon nzType=\"plus\" nzTheme=\"outline\"></i\n      ></span>\n        </div>\n        <div>\n            <table class=\"table\">\n                <thead>\n                    <tr>\n                        <td>标题</td>\n                        <td>输入值类型</td>\n                        <td>输入类型</td>\n                        <td>选择值</td>\n                        <td>单位</td>\n                        <td>操作</td>\n                    </tr>\n                </thead>\n                <tbody>\n                    <tr *ngFor=\"let data of localFormData.custom; let i = index\">\n                        <td>{{ data.title }}</td>\n                        <td>\n                            <ng-container *ngIf=\"data.valyetype\">\n                                <span *ngIf=\"data.valyetype == 'string'\">文本</span>\n                                <span *ngIf=\"data.valyetype == 'number'\">数字</span>\n                            </ng-container>\n                        </td>\n                        <td>\n                            <ng-container *ngIf=\"data.type\">\n                                <span *ngIf=\"data.type == 'input'\">输入框</span>\n                                <span *ngIf=\"data.type == 'select'\">下拉框</span>\n                                <span *ngIf=\"data.type == 'radio'\">单选框</span>\n                                <span *ngIf=\"data.type == 'checkbox'\">多选框</span>\n                            </ng-container>\n                        </td>\n                        <td>\n                            <ng-container *ngIf=\"data.price.length > 0\">\n                                <span *ngFor=\"let data of data.price\">\n                  {{ data.value }}\n                </span>\n                            </ng-container>\n                            <ng-container *ngIf=\"data.price.length <= 0\">\n                                <span></span>\n                            </ng-container>\n                        </td>\n                        <td>{{ data.unit }}</td>\n                        <td>\n                            <button (click)=\"edit(data, i)\">编辑</button><button>删除</button>\n                        </td>\n                    </tr>\n                </tbody>\n            </table>\n            <button (click)=\"addProperty()\">保存</button>\n        </div>\n\n        <nz-modal [(nzVisible)]=\"isVisible\" nzTitle=\"请输入判断条件\" (nzOnCancel)=\"handleCancel()\" (nzOnOk)=\"handleOk()\">\n            <ng-container *nzModalContent>\n                <!-- 标题 值 下拉框ruils -->\n                <div>标题:<input nz-input [(ngModel)]=\"property.title\" /></div>\n                <div>值变量:<input nz-input [(ngModel)]=\"property.name\" /></div>\n                <div>\n                    输入值类型:\n                    <div>\n                        <nz-select style=\"width: 100%\" [(ngModel)]=\"property.valyetype\" (ngModelChange)=\"cutSelect()\">\n                            <nz-option nzValue=\"string\" nzLabel=\"文本\"></nz-option>\n                            <nz-option nzValue=\"number\" nzLabel=\"数字\"></nz-option>\n                        </nz-select>\n                    </div>\n                </div>\n                <div>\n                    输入类型:\n                    <div>\n                        <nz-select style=\"width: 100%\" [(ngModel)]=\"property.type\" (ngModelChange)=\"cutSelect()\">\n                            <nz-option nzValue=\"input\" nzLabel=\"输入框\"></nz-option>\n                            <nz-option nzValue=\"select\" nzLabel=\"下拉框\"></nz-option>\n                            <nz-option nzValue=\"radio\" nzLabel=\"单选框\"></nz-option>\n                            <nz-option nzValue=\"checkbox\" nzLabel=\"多选框\"></nz-option>\n                        </nz-select>\n                    </div>\n                </div>\n                <div *ngIf=\"property.type != 'input'\">\n                    选择值:<span (click)=\"addprice()\"><i nz-icon nzType=\"plus\" nzTheme=\"outline\"></i\n          ></span>\n                    <ng-container *ngFor=\"let item of property.price; let i = index\">\n                        <input nz-input [(ngModel)]=\"item.value\" (change)=\"item.label = item.value\" />\n                    </ng-container>\n                </div>\n                <div>单位:<input nz-input [(ngModel)]=\"property.unit\" /></div>\n            </ng-container>\n        </nz-modal>\n    </div>\n    <div *ngIf=\"\n      localFormData.type == 'bpmn:ManualTask' && localFormData.userType === 'assignee'\n    \">\n        指定人员:\n        <input nz-input [(ngModel)]=\"localFormData.assignee\" (change)=\"addUser({ assignee: localFormData.assignee })\" />\n    </div>\n    <div *ngIf=\"\n      localFormData.type == 'bpmn:ManualTask' &&\n      localFormData.userType === 'candidateUsers'\n    \">\n        候选人员:\n        <input nz-input [(ngModel)]=\"localFormData.candidateUsers\" (change)=\"addUser({ candidateUsers: localFormData.candidateUsers })\" />\n    </div>\n    <div *ngIf=\"localFormData.type == 'bpmn:SequenceFlow'\">\n        分支条件:\n        <input nz-input [(ngModel)]=\"localFormData.sequenceFlow\" (input)=\"updateSequenceFlow(localFormData.sequenceFlow)\" (compositionstart)=\"start()\" (compositionend)=\"end()\" />\n    </div>\n</div>\n<div *ngIf=\"configTab == 'process'\">\n    <div>\n        流程名称:<input nz-input [(ngModel)]=\"localFormData.name\" (input)=\"updateName(localFormData.name)\" (compositionstart)=\"start()\" (compositionend)=\"end()\" />\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\n\n@Component({\n  selector: 'app-bpmn',\n  templateUrl: './bpmn.component.html',\n  styleUrls: ['./bpmn.component.less'],\n})\nexport class BpmnComponent implements OnInit {\n  @Input() modeler: any;\n  element: any;\n  configTab: any = 'node';\n  formData: any = {};\n  nodeElement: any = {};\n  constructor() {}\n\n  ngOnInit(): void {}\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.modeler) {\n      this.handleModeler();\n    }\n  }\n  handleModeler() {\n    const _this = this;\n    this.modeler.on('root.added', (e: any) => {\n      let element = e.element;\n      if (this.isImplicitRoot(element)) {\n        return;\n      }\n      this.modifyConfigTab(0);\n      this.processFormData(element);\n    });\n    this.modeler.on('commandStack.changed', () => {\n      _this.modeler.saveXML({ format: true }, function (err: any, xml: any) {});\n    });\n    this.modeler.on('selection.changed', (e: any) => {\n      const element = e.newSelection[0];\n\n      if (!element) {\n        return;\n      }\n      this.modifyConfigTab(element);\n      // console.log('选中元素变化时，返回新选中的元素对象');\n      this.handleFormData(element);\n    });\n    this.modeler.on('element.changed', (e: any) => {\n      const { element } = e;\n      if (!element) {\n        return;\n      }\n      // console.log('元素发生改变时触发，返回发生改变的元素');\n\n      this.handleFormData(element);\n    });\n    this.modeler.on('element.click', (e: any) => {\n      const { element } = e;\n      if (element.type == this.modeler._definitions.rootElements[0].$type) {\n        this.modifyConfigTab(0);\n        this.processFormData(element);\n      } else {\n        this.modifyConfigTab(1);\n        if (element.type == 'bpmn:ManualTask') {\n          let _businessObject = element.businessObject;\n          // 原生属性Properties\n          if (_businessObject.$attrs.assignee) {\n            _this.formData.userType = 'assignee';\n            _this.formData.assignee = _businessObject.$attrs.assignee;\n          }\n        }\n      }\n    });\n  }\n  isImplicitRoot(element: any) {\n    return element.id === '__implicitroot';\n  }\n  handleConfigSelect(value: any) {\n    this.configTab = value;\n  }\n  modifyConfigTab(element: any) {\n    let configTab = 'node';\n    if (!element) {\n      configTab = 'process';\n    }\n    this.configTab = configTab;\n  }\n  handleFormData(element: any) {\n    if (!element.id) {\n      return;\n    }\n    let businessObject = element.businessObject;\n    this.formData = {\n      type: element.type,\n      id: businessObject.id,\n      name: businessObject.name,\n      userType: businessObject.$attrs.userType,\n      assignee: businessObject.$attrs.assignee,\n      candidateGroups: businessObject.$attrs.candidateGroups,\n      custom: businessObject.$attrs.custom\n        ? JSON.parse(businessObject.$attrs.custom)\n        : [],\n      formData: businessObject.$attrs.userType\n        ? businessObject.$attrs.candidateUsers.split(',')\n        : [],\n      sequenceFlow: businessObject.conditionExpression\n        ? businessObject.conditionExpression.body\n        : '',\n    };\n    this.nodeElement = element;\n  }\n  modifyFormData(data: any) {\n    this.formData.assignee = data.assignee;\n    this.formData.userType = data.userType;\n  }\n  processFormData(element: any) {\n    let businessObject = element.businessObject;\n    this.formData = {\n      type: element.type,\n      id: businessObject.id,\n      name: businessObject.name,\n      userType: businessObject.$type,\n    };\n    this.nodeElement = element;\n  }\n}\n","<div class=\"box\">\n    <div class=\"title\">\n        <div class=\"config-tab\" [ngClass]=\"{ active: configTab == 'node' }\" *ngIf=\"configTab == 'node'\">\n            节点属性\n        </div>\n        <div class=\"config-tab\" [ngClass]=\"{ active: configTab == 'process' }\" *ngIf=\"configTab == 'process'\">\n            流程属性\n        </div>\n    </div>\n    <div>\n        <app-node [configTab]=\"configTab\" [modeler]=\"modeler\" [nodeElement]=\"nodeElement\" [formData]=\"formData\" (outer)=\"modifyFormData($event)\"></app-node>\n    </div>\n</div>","import { Component, OnInit } from '@angular/core';\nconst defaultXML = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn2:definitions xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                   xmlns:bpmn2=\"http://www.omg.org/spec/BPMN/20100524/MODEL\"\n                   xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\"\n                   xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\"\n                   xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\"\n                   xsi:schemaLocation=\"http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd\" id=\"sample-diagram\"\n                   targetNamespace=\"http://bpmn.io/schema/bpmn\">\n  <bpmn2:process id=\"Process_1\" name=\"流程图\" isExecutable=\"false\">\n    <bpmn2:startEvent id=\"StartEvent_1\" name=\"开始\"/>\n  </bpmn2:process>\n  <bpmndi:BPMNDiagram id=\"BPMNDiagram_1\">\n    <bpmndi:BPMNPlane id=\"BPMNPlane_1\" bpmnElement=\"Process_1\">\n      <bpmndi:BPMNShape id=\"_BPMNShape_StartEvent_2\" bpmnElement=\"StartEvent_1\">\n        <dc:Bounds height=\"36.0\" width=\"36.0\" x=\"412.0\" y=\"240.0\"/>\n      </bpmndi:BPMNShape>\n    </bpmndi:BPMNPlane>\n  </bpmndi:BPMNDiagram>\n</bpmn2:definitions>`;\n// @ts-ignore\nimport BpmnModeler from 'bpmn-js/lib/Modeler';\nimport { CamundaModdleDescriptor } from './CamundaModdleDescriptor';\nimport customTranslate from './customTranslate/customTranslate';\nimport xml2js from 'xml2js';\nimport SelfDescriptor from './customTranslate/SelfDescriptor.json';\nimport { CustomModeler } from './customBpmn';\nimport customContextPad from './customBpmn/contextPad';\n@Component({\n  selector: 'app-flowchart',\n  templateUrl: './flowchart.component.html',\n  styleUrls: ['./flowchart.component.less'],\n})\nexport class FlowchartComponent implements OnInit {\n  modeler: any;\n  scale = 1;\n  testmodeler: any;\n  testxml: any;\n  testshow = false;\n  popup = false;\n  custom: any;\n  constructor() {}\n  ngOnInit() {\n    const customTranslateModule = {\n      translate: ['value', customTranslate],\n    };\n    this.testmodeler = new BpmnModeler({\n      container: '#testel',\n      additionalModules: [\n        {\n          paletteProvider: ['value', ''], //禁用/清空左侧工具栏\n          labelEditingProvider: ['value', ''], //禁用节点编辑\n          contextPadProvider: ['value', ''], //禁用图形菜单\n          bendpoints: ['value', {}], //禁用连线拖动\n          zoomScroll: ['value', ''], //禁用滚动\n          // moveCanvas: ['value', ''], //禁用拖动整个流程图\n          move: ['value', ''], //禁用单个图形拖动\n        },\n      ],\n    });\n    this.modeler = new CustomModeler({\n      container: '#el',\n      additionalModules: [customTranslateModule, customContextPad],\n      moddleExtensions: {\n        camunda: CamundaModdleDescriptor,\n        self: SelfDescriptor,\n      },\n    });\n    this.modeler.importXML(defaultXML);\n  }\n  handlerRedo() {\n    this.modeler.get('commandStack').redo();\n  }\n  handlerUndo() {\n    this.modeler.get('commandStack').undo();\n  }\n\n  handlerZoom(radio: any) {\n    const newScale = !radio ? 1.0 : this.scale + radio;\n    this.modeler.get('canvas').zoom(newScale);\n    this.scale = newScale;\n  }\n  downloadBpmn() {\n    this.modeler.saveXML({ format: true }, (err: any, xml: any) => {\n      if (!err) {\n        // 获取文件名\n        const name = `${this.getFilename(xml)}.bpmn`;\n        // 将文件名以及数据交给下载方法\n        // this.download(name, xml);\n        // console.log(name);\n        // console.log(xml);\n      }\n    });\n  }\n  download(name: any, data: any) {\n    if (data) {\n      const encodedData = encodeURIComponent(data);\n      const link = document.createElement('a');\n      link.setAttribute(\n        'href',\n        'data:application/bpmn20-xml;charset=UTF-8,' + encodedData\n      );\n      link.setAttribute('download', name);\n      link.style.visibility = 'hidden';\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }\n  }\n\n  getFilename(xml: any) {\n    let start = xml.indexOf('process');\n    let filename = xml.substr(start, xml.indexOf('>'));\n    filename = filename.substr(filename.indexOf('id') + 4);\n    filename = filename.substr(0, filename.indexOf('\"'));\n    return filename;\n  }\n  elementChanged(e: any) {\n    var shape = this.getShape(e.element.id);\n    if (!shape) {\n      // 若是shape为null则表示删除, 无论是shape还是connect删除都调用此处\n      // console.log('无效的shape');\n      // 上面已经用 shape.removed 检测了shape的删除, 要是删除shape的话这里还会被再触发一次\n      // console.log('删除了shape和connect');\n      return;\n    }\n    if (!this.isInvalid(shape.type)) {\n      if (this.isSequenceFlow(shape.type)) {\n        // console.log('改变了线');\n      }\n    }\n  }\n  getShape(id: any) {\n    var elementRegistry = this.modeler.get('elementRegistry');\n    return elementRegistry.get(id);\n  }\n\n  isInvalid(param: any) {\n    // 判断是否是无效的值\n    return param === null || param === undefined || param === '';\n  }\n  isSequenceFlow(type: any) {\n    // 判断是否是线\n    return type === 'bpmn:SequenceFlow';\n  }\n\n  handleSave() {\n    // console.log('save');\n    this.modeler.saveXML({ format: true }, async (err: any, xml: any) => {\n      // console.log(xml);\n      const parseString = xml2js.parseString;\n      parseString(xml, (err: any, result: any) => {\n        const bpmnData = result['bpmn2:definitions']['bpmn2:process'][0];\n        // console.log(bpmnData);\n        if (!bpmnData['bpmn2:startEvent'] || !bpmnData['bpmn2:endEvent']) {\n          alert('一个流程图必须有一个开始和结束节点');\n        }\n      });\n    });\n  }\n  test() {\n    this.modeler.saveXML({ format: true }, async (err: any, xml: any) => {\n      // console.log(xml);\n      this.testxml = xml;\n    });\n    // console.log(this.testxml);\n    this.testmodeler.importXML(this.testxml);\n    this.testshow = true;\n    const modeling = this.testmodeler.get('modeling');\n    this.testmodeler.on('connection.added', (e: any) => {\n      // console.log(e);\n      const element = e.element;\n      if (!element) {\n        return;\n      }\n      if (element.type === 'bpmn:SequenceFlow') {\n        // console.log(element);\n        modeling.setColor(element, {\n          fill: 'bule',\n          stroke: 'red',\n        });\n        modeling.updateProperties(element, modeling);\n      }\n    });\n    this.testmodeler.on('shape.added', (e: any) => {\n      // console.log(e);\n      const element = e.element;\n      if (!element) {\n        return;\n      }\n      if (element.type === 'bpmn:StartEvent') {\n        modeling.setColor(element, {\n          fill: '#12c2e9',\n          stroke: '',\n        });\n        modeling.updateProperties(element, modeling);\n      }\n\n      if (element.type === 'bpmn:Task') {\n        // console.log(element);\n        modeling.setColor(element, {\n          fill: '',\n          stroke: 'red',\n        });\n        modeling.updateProperties(element, modeling);\n      }\n    });\n    this.testmodeler.on('element.hover', (e: any) => {\n      // console.log(e);\n      const element = e.element;\n      if (!element) {\n        return;\n      }\n      if (element.type === 'bpmn:Task') {\n        // console.log(element);\n        if (element.businessObject.$attrs.custom) {\n          this.custom = JSON.parse(element.businessObject.$attrs.custom);\n          // console.log(this.custom);\n          this.customshow();\n        }\n      }\n    });\n  }\n  closetest() {\n    this.testshow = false;\n  }\n  customshow() {\n    this.popup = true;\n  }\n  quit() {\n    // console.log(this.custom);\n    this.popup = false;\n  }\n}\n","<div class=\"containers\">\n    <div class=\"buttonbox\">\n        <button (click)=\"downloadBpmn()\">保存bpmn</button>\n        <button (click)=\"handleSave()\">流程图</button>\n        <button (click)=\"handlerUndo()\">撤销</button>\n        <button (click)=\"handlerRedo()\">恢复</button>\n        <button (click)=\"handlerZoom(0.1)\">放大</button>\n        <button (click)=\"handlerZoom(-0.1)\">缩小</button>\n        <button (click)=\"handlerZoom(0)\">还原</button>\n        <button (click)=\"test()\">测试</button>\n    </div>\n    <div id=\"el\" class=\"canvas\"></div>\n    <div id=\"js-properties-panel\" class=\"panel\">\n        <app-bpmn [modeler]=\"modeler\"></app-bpmn>\n    </div>\n</div>\n\n<div [style.display]=\"testshow ? 'block' : 'none'\" class=\"testbox\">\n    <div id=\"testel\"></div>\n    <div class=\"close\">\n        <button (click)=\"closetest()\">关闭</button>\n    </div>\n    <div class=\"issue\"></div>\n</div>\n<div class=\"popupbox\" *ngIf=\"popup\">\n    <ng-container *ngFor=\"let data of custom; let i = index\">\n        <div class=\"popup\">\n            <div>{{ data.title }}:</div>\n            <div *ngIf=\"data.type\">\n                <div *ngIf=\"data.type == 'input'\">\n                    <input nz-input placeholder=\"\" [(ngModel)]=\"data.value\" />\n                </div>\n                <div *ngIf=\"data.type == 'select'\">\n                    <nz-select [(ngModel)]=\"data.value\">\n                        <ng-container *ngFor=\"let price of data.price\">\n                            <nz-option [nzValue]=\"price.value\" [nzLabel]=\"price.label\"></nz-option>\n                        </ng-container>\n                    </nz-select>\n                </div>\n                <div *ngIf=\"data.type == 'radio'\">\n                    <nz-radio-group [(ngModel)]=\"data.value\" *ngFor=\"let price of data.price\">\n                        <label nz-radio [nzValue]=\"price.value\">{{ price.value }}</label>\n                    </nz-radio-group>\n                </div>\n                <div *ngIf=\"data.type == 'checkbox'\">\n                    <nz-checkbox-group [(ngModel)]=\"data.price\"></nz-checkbox-group>\n                </div>\n            </div>\n        </div>\n    </ng-container>\n    <div><button (click)=\"quit()\">确定</button></div>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  HostListener,\n  ElementRef,\n  Output,\n  EventEmitter,\n} from '@angular/core';\n\n@Component({\n  selector: 'app-audiomenu',\n  templateUrl: './audio-menu.component.html',\n  styleUrls: ['./audio-menu.component.less'],\n})\nexport class AudiomenuComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() palylist: any;\n  @HostListener('document:click', ['$event.target'])\n  onClick(targetElement: any) {\n    const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n    if (!clickedInside) {\n      this.palynameState = false;\n    }\n  }\n  palynameState = false;\n  audiostate = 0;\n  constructor(private elementRef: ElementRef) {}\n\n  ngOnInit(): void {}\n  cutaudio(i: any) {\n    this.audiostate = i;\n    this.palynameState = false;\n    this.outer.emit({ data: this.audiostate });\n  }\n  cutpalynameState() {\n    this.palynameState = !this.palynameState;\n  }\n}\n","<div class=\"box\">\n    <div class=\"unordered\">\n        <i nz-icon nzType=\"unordered-list\" nzTheme=\"outline\" class=\"playunordered\" (click)=\"cutpalynameState()\"></i>\n    </div>\n    <div class=\"palynamelist\" *ngIf=\"palynameState\">\n        <ng-container *ngFor=\"let paly of palylist; let i = index\">\n            <div (click)=\"cutaudio(i)\" class=\"palyname\" [ngClass]=\"audiostate == i? 'active' : ''\">\n                {{ paly.name}}\n            </div>\n        </ng-container>\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  HostListener,\n  ElementRef,\n  Output,\n  EventEmitter,\n} from '@angular/core';\n\n@Component({\n  selector: 'app-cycleselect',\n  templateUrl: './cycle-select.component.html',\n  styleUrls: ['./cycle-select.component.less'],\n})\nexport class CycleselectComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() cycletype: any;\n  @Input() circulation: any;\n  @HostListener('document:click', ['$event.target'])\n  onClick(targetElement: any) {\n    const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n    if (!clickedInside) {\n      this.cycleState = false;\n    }\n  }\n  cycleState = false;\n  constructor(private elementRef: ElementRef) {}\n\n  ngOnInit(): void {}\n  cycleshow() {\n    this.cycleState = !this.cycleState;\n  }\n  cutcycle(ev: any) {\n    this.outer.emit({ type: ev });\n  }\n}\n","<div class=\"box\">\n    <div class=\"unordered\">\n        <i class=\"iconfont icon-20gl-repeat\" (click)=\"cycleshow()\"></i>\n    </div>\n    <div class=\"cycle\" *ngIf=\"cycleState\">\n        <div class=\"setcycle\" [ngClass]=\"cycletype == 'setcycle' ? 'active' : ''\" (click)=\"cutcycle('setcycle')\">\n            列表播放\n            <nz-input-number [(ngModel)]=\"circulation\" [nzMin]=\"1\" [nzStep]=\"1\"></nz-input-number>次\n        </div>\n        <div class=\"singlecycle\" [ngClass]=\"cycletype == 'singlecycle' ? 'active' : ''\" (click)=\"cutcycle('singlecycle')\">\n            文件循环\n        </div>\n        <div class=\"repeatedlycycle\" [ngClass]=\"cycletype == 'repeatedlycycle' ? 'active' : ''\" (click)=\"cutcycle('repeatedlycycle')\">\n            列表循环\n        </div>\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  ViewChild,\n  EventEmitter,\n  Output,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n@Component({\n  selector: 'app-broadcasthandle',\n  templateUrl: './broadcast-handle.component.html',\n  styleUrls: ['./broadcast-handle.component.less'],\n})\nexport class BroadcasthandleComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @ViewChild('fileInput') fileInput: any;\n  @ViewChild('videolist') videolist: any;\n  @ViewChild('dynamicbgc') dynamicbgc: any;\n  @ViewChild('remotesaudios') remotesaudios: any;\n  @Input()\n  set broadcastdata(value: string) {\n    this.Droadcastdata = value;\n    if (this.Droadcastdata.status == 1 && this.broadcastState == false) {\n      if (this.judeDroadcast() == true) {\n        if (this.Droadcastdata.starter == this.rx.userID) {\n          this.broadcastState = true;\n          this.rx.joinBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n          // 本机开启的\n        } else {\n          // 其他用户开启的\n        }\n      }\n    }\n  }\n  get broadcastdata(): string {\n    return this.Droadcastdata;\n  }\n  broadcastState: any = false;\n  Droadcastdata: any;\n  cycleState: boolean = false;\n  palynameState: boolean = false;\n  radioValue = 'voice';\n  playcut: boolean = false;\n  palylist: any = [];\n  palytype = 0;\n  voicecut: boolean = false;\n  playname = '';\n  videoJSplayer: any;\n  localStream: any = null;\n  localityStream: any = null;\n  pcPeer: any = null;\n  channelID: any = '';\n  totalTime: any;\n  currentTime: any;\n  circulation: number = 1;\n  cycletype = 'repeatedlycycle';\n  audiostate: number = 0;\n  playstate = 0;\n  subscription: any;\n  audioplaystatus = false;\n  countcirculation = 0;\n  cmsStream: any;\n  cmspcPeer: any = null;\n  cmschannelID: any = '';\n  hint = false; //弹框显示\n  hinttype = 1;\n  constructor(\n    private ws: WebService,\n    public sanitizer: DomSanitizer,\n    private rx: RxService,\n    private message: NzMessageService\n  ) {\n    this.subscription = this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let cmdBody = nav.cmdBody;\n      let resultdata = nav.resultData;\n      let that = this;\n      switch (respcmdid) {\n        case state.OWO_CMD_BROADCASTGROUP_START + 1: {\n          if (\n            resultdata.broadcastGroupID == this.Droadcastdata.broadcastGroupID\n          ) {\n            this.broadcastState = true;\n            const configuration = {};\n            this.pcPeer = new RTCPeerConnection(configuration);\n            this.channelID = resultdata.SSRC;\n            this.video();\n            this.Droadcastdata.status = '1';\n            this.rx.gainbroadcastlist();\n          }\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_STOP + 1: {\n          if (\n            resultdata.broadcastGroupID == this.Droadcastdata.broadcastGroupID\n          ) {\n            this.broadcastState = false;\n            this.Droadcastdata.status = '0';\n            if (this.pcPeer != null) {\n              this.localStream.getAudioTracks().forEach((track: any) => {\n                track.stop();\n              });\n              this.pcPeer.close();\n              this.pcPeer = null;\n            }\n            this.audioplaystatus = false;\n            this.rx.gainbroadcastlist();\n          }\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_BROADCAST_START + 1: {\n          if(  resultdata.broadcastGroupID == this.Droadcastdata.broadcastGroupID){\n            // console.log('开始');\n          }\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_BROADCAST_STOP + 1: {\n          if(  resultdata.broadcastGroupID == this.Droadcastdata.broadcastGroupID){\n            // console.log('停止');\n          }\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_EXIT + 1: {\n          // 退出\n          if ( resultdata.broadcastGroupID == this.Droadcastdata.broadcastGroupID ) {\n            if (this.pcPeer != null) {\n              this.localStream.getAudioTracks().forEach((track: any) => {\n                track.stop();\n              });\n              this.pcPeer.close();\n              this.pcPeer = null;\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_JOIN + 1: {\n          if (\n            resultdata.broadcastGroupID == this.Droadcastdata.broadcastGroupID\n          ) {\n            if (this.Droadcastdata.starter == this.rx.userID) {\n              const configuration = {};\n              this.pcPeer = new RTCPeerConnection(configuration);\n              this.channelID = resultdata.SSRC;\n              this.video();\n              // 本机开启的\n            } else {\n              // 其他用户开启的\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_RTC_OFFER + 1: {\n          if (resultdata.channelID == this.channelID) {\n            that.remoteAnswer(nav);\n          }\n          break;\n        }\n        default:\n          break;\n      }\n    });\n  }\n  ngOnInit(): void {}\n  ngOnDestroy() {\n    // console.log('销毁了');\n    this.subscription.unsubscribe();\n  }\n  ngAfterViewInit() {}\n  judeDroadcast() {\n    let userlist = this.Droadcastdata.member.split(';');\n    //获取列表\n    let data = false;\n    for (let i = 0; i < userlist.length; i++) {\n      if (userlist[i] == '' || typeof userlist[i] == 'undefined') {\n        userlist.splice(i, 1);\n        i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置，删除空之后，后面的元素要向前补位\n      }\n    }\n    for (let i = 0; i < userlist.length; i++) {\n      if (userlist[i] == this.rx.userID) {\n        // console.log('在广播组中');\n        data = true;\n      }\n    }\n    return data;\n  }\n  cutpalynameState() {\n    this.palynameState = !this.palynameState;\n  }\n  cycleshow() {\n    this.cycleState = !this.cycleState;\n  }\n  deletefacility() {\n    if (this.Droadcastdata.status == 1) {\n      this.rx.stopbroadcastlist(this.Droadcastdata.broadcastGroupID);\n    }\n    this.rx.destrpyBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n  }\n\n  addmp3() {\n    // 上传测试\n    this.fileInput.nativeElement.click();\n  }\n  onInputFileChange() {\n    var file = this.fileInput.nativeElement.files[0];\n    // console.log(file);\n    if (file) {\n      var url = URL.createObjectURL(file);\n      let data: any = {\n        name: file.name,\n        url: url,\n        circulation: 1,\n        record: 1,\n      };\n      this.palylist.push(data);\n    }\n  }\n\n  initVideoData(): void {\n    // 获取视频的总时长\n    this.videolist.nativeElement.addEventListener('loadedmetadata', () => {\n      this.totalTime = this.formatTime(this.videolist.nativeElement.duration);\n    });\n    // 监听时间发生更改\n    this.videolist.nativeElement.addEventListener('timeupdate', () => {\n      this.currentTime = this.formatTime(\n        this.videolist.nativeElement.currentTime\n      ); // 当前播放的时间\n    });\n  }\n  // 播放进度条\n  videoUpdata() {\n    let width =\n      (this.videolist.nativeElement.currentTime /\n        this.videolist.nativeElement.duration) *\n      100;\n    if (this.dynamicbgc) {\n      this.dynamicbgc.nativeElement.style.width = width + '%';\n    }\n  }\n  formatTime(time: any) {\n    let curtime: any = time;\n    let hcurtime: any = curtime / 3600;\n    let mcurtime: any = (curtime % 3600) / 60;\n    let scurtime: any = curtime % 60;\n    let h: any = parseInt(hcurtime);\n    let m: any = parseInt(mcurtime);\n    let s: any = parseInt(scurtime);\n    h = h < 10 ? '0' + h : h;\n    m = m < 10 ? '0' + m : m;\n    s = s < 10 ? '0' + s : s;\n    return h + ':' + m + ':' + s;\n  }\n  haldle() {\n    // this.cycletype\n    if (this.cycletype == 'singlecycle') {\n      // 文件循环\n      this.playaudio(this.palytype);\n    } else if (this.cycletype == 'repeatedlycycle') {\n      // 列表循环\n      if (this.palytype == this.palylist.length - 1) {\n        this.palytype = 0;\n        this.playaudio(this.palytype);\n      } else {\n        this.palytype = this.palytype + 1;\n        this.playaudio(this.palytype);\n      }\n    } else if (this.cycletype == 'setcycle') {\n      // 列表循环次数\n      // countcirculation\n      if (this.palytype == this.palylist.length - 1) {\n        if (this.circulation == 1) {\n          // console.log('循环结束');\n\n          this.palytype = 0;\n          this.stop();\n        } else {\n          if (this.circulation == this.countcirculation) {\n            // console.log('循环结束');\n          } else {\n            this.countcirculation = this.countcirculation + 1;\n            this.palytype = 0;\n            this.playaudio(this.palytype);\n          }\n        }\n      } else {\n        this.palytype = this.palytype + 1;\n        this.playaudio(this.palytype);\n      }\n    }\n  }\n  playaudio(ev: any) {\n    this.videolist.nativeElement.src = this.palylist[ev].url;\n    this.playname = this.palylist[ev].name;\n    this.videolist.nativeElement.load();\n    this.videolist.nativeElement.play();\n    // this.videolist.nativeElement.muted = true;\n    // this.videolist.nativeElement.volume = 0\n  }\n  cutaudio(ev: any) {\n    let type = ev.data;\n    if (this.audioplaystatus == true) {\n      this.videolist.nativeElement.src = this.palylist[type].url;\n      this.playname = this.palylist[type].name;\n      this.palytype = type;\n      this.audiostate = type;\n      this.videolist.nativeElement.play();\n    } else {\n      this.playname = this.palylist[type].name;\n      this.palytype = type;\n      this.audiostate = type;\n    }\n    this.palynameState = false;\n  }\n  play() {\n    if (this.palylist.length <= 0) {\n      // console.log('没有添加文件');\n      this.message.create('warning', '没有选择文件');\n    } else {\n      if (this.Droadcastdata.status == '1') {\n        if (this.Droadcastdata.starter == this.rx.userID) {\n          if (this.playstate == 0) {\n            this.playstate = 2;\n            this.playcut = true;\n            this.hinttype = 2;\n            this.playaudio(this.palytype);\n            this.initVideoData();\n            this.rx.exitBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n            setTimeout(() => {\n              this.rx.joinBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n              this.rx.broadcaststart(this.Droadcastdata.broadcastGroupID);\n            }, 0);\n            this.audioplaystatus = true;\n            this.countcirculation = 0;\n          } else {\n            // 弹框\n            this.hint = true;\n            this.hinttype = 2;\n            // console.log('已开启语音播放');\n            // this.playcut = true;\n            // this.playstate = 2;\n            // this.playaudio(this.palytype);\n            // this.voicecut = false;\n            // this.initVideoData();\n            // this.localStream = this.videolist.nativeElement.captureStream();\n            // this.audioplaystatus = true;\n            // this.countcirculation = 0;\n          }\n        } else {\n          this.message.create('warning', '不是本用户开启的');\n          // console.log('不是本用户开启的');\n        }\n      }\n    }\n  }\n  stop() {\n    this.playstate = 0;\n    this.playcut = false;\n    this.videolist.nativeElement.pause();\n    this.audioplaystatus = false;\n    this.rx.broadcaststop(this.Droadcastdata.broadcastGroupID);\n  }\n  voiceplay() {\n    if (this.Droadcastdata.status == '1') {\n      if (this.Droadcastdata.starter == this.rx.userID) {\n        if (this.playstate == 0) {\n          this.playstate = 1;\n          this.hinttype = 1\n          this.voicecut = true;\n          this.countcirculation = 0;\n          this.audioplaystatus = true;\n          this.rx.exitBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n          setTimeout(() => {\n            this.rx.joinBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n            this.rx.broadcaststart(this.Droadcastdata.broadcastGroupID);\n          }, 0);\n          // this.localStream = this.localityStream;\n        } else {\n          // 弹框\n          // console.log('已开启文件播放');\n          this.hint = true;\n          this.hinttype = 1;\n          // this.playstate = 1;\n          // this.playcut = false;\n          // this.videolist.nativeElement.pause();\n          // this.voicecut = true;\n          // this.countcirculation = 0;\n          // this.audioplaystatus = true;\n          // this.localStream = this.localityStream;\n        }\n      } else {\n        // console.log('不是本用户开启的');\n        this.message.create('warning', '不是本用户开启的');\n      }\n    } else {\n      // console.log('广播组未开启');\n      this.message.create('error', '广播组未开启');\n    }\n  }\n\n  voicestop() {\n    this.playstate = 0;\n    this.voicecut = false;\n    this.audioplaystatus = false;\n    this.rx.broadcaststop(this.Droadcastdata.broadcastGroupID);\n  }\n  startbroadcast() {\n    if (this.judeDroadcast() == true) {\n      this.rx.startbroadcastlist(this.Droadcastdata.broadcastGroupID);\n    } else {\n      this.message.create('error', '本机未在广播组中');\n    }\n  }\n  stopbroadcast() {\n    if (this.Droadcastdata.starter == this.rx.userID) {\n      if (this.audioplaystatus == true) {\n        this.audioplaystatus = false;\n        if (this.playstate == 1) {\n          //语音\n          this.voicestop();\n        } else if (this.playstate == 2) {\n          // 文件\n          this.stop();\n        }\n        this.rx.stopbroadcastlist(this.Droadcastdata.broadcastGroupID);\n      } else {\n        this.rx.stopbroadcastlist(this.Droadcastdata.broadcastGroupID);\n      }\n    } else {\n      this.message.create('warning', '不是本机开启的');\n    }\n  }\n  cutcycle(ev: any) {\n    this.cycletype = ev.type;\n  }\n  video = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      let constraints = {\n        audio: true,\n        video: false,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          if(this.playstate==0){\n            that.localStream = stream;\n          }else if(this.playstate==1){\n            that.localStream = stream;\n          }else if(this.playstate==2){\n            that.localStream = this.videolist.nativeElement.captureStream();\n          }\n          that.call();\n        })\n        .catch(this.handleError);\n    }\n  };\n  call = () => {\n    this.pcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.localStream.getTracks().forEach((track: any) => {\n      this.pcPeer.addTrack(track, this.localStream);\n    });\n    this.pcPeer.onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.pcPeer.onconnection = function () {};\n    this.pcPeer.ondatachannel = (event: any) => {\n      console.log(event);\n    };\n    // sendonly 表示只发送数据，比如客户端推流到 SFU，那么会在自己的 Offer(or Answer) 中携带 senonly 属性\n    // recvonly 表示只接收数据，比如客户端向 SFU 订阅流，那么会在自己的 Offer(or Answer) 中携带 recvonly 属性\n    // sendrecv 表示可以双向传输，比如客户端加入到视频会议中，既要发布自己的流又要订阅别人的流，那么就需要在自己的 Offer(or Answer) 中携带 sendrecv 属性\n    // inactive 表示禁止发送数据，比如在基于 RTP 的视频会议中，主持人暂时禁掉用户 A 的语音，那么用户 A 的关于音频的媒体级别描述应该携带 inactive 属性，表示不能再发送音频数据。\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.channelID,\n      // audioDirection: 'sendonly',\n    });\n  };\n\n  remoteAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.pcPeer.setRemoteDescription(desc);\n    this.pcPeer.createAnswer().then((sdp: any) => {\n      this.gotDescription2(sdp);\n    });\n  };\n  gotDescription2 = (desc: any) => {\n    this.pcPeer.setLocalDescription(desc).then();\n  };\n  getRemoteSream = (e: any) => {\n    // console.log(e);\n  };\n  handleError(err: any) {\n    console.log(err);\n  }\n  sendParent() {\n    this.hint = false;\n  }\n  consent() {\n    if (this.hinttype == 1) {\n      this.playstate = 1;\n      this.playcut = false;\n      this.videolist.nativeElement.pause();\n      this.voicecut = true;\n      this.countcirculation = 0;\n      this.audioplaystatus = true;\n      this.rx.broadcaststop(this.Droadcastdata.broadcastGroupID);\n      this.rx.exitBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n      setTimeout(() => {\n        this.rx.joinBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n        this.rx.broadcaststart(this.Droadcastdata.broadcastGroupID);\n      }, 0);\n      this.sendParent();\n    } else if (this.hinttype == 2) {\n      this.playcut = true;\n      this.playstate = 2;\n      this.playaudio(this.palytype);\n      this.voicecut = false;\n      this.initVideoData();\n      this.audioplaystatus = true;\n      this.countcirculation = 0;\n      this.rx.broadcaststop(this.Droadcastdata.broadcastGroupID);\n      this.rx.exitBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n      setTimeout(() => {\n        this.rx.joinBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n        this.rx.broadcaststart(this.Droadcastdata.broadcastGroupID);\n      }, 0);\n      this.sendParent();\n    }\n  }\n}\n","<div class=\"itembox\">\n    <div class=\"usernav\">\n        <div class=\"user\">\n            <div class=\"intercomteam\">\n                <img src=\"assets/img/intercomteam_01.png \" alt=\" \" *ngIf=\"Droadcastdata.status == 0\" />\n                <img src=\"assets/img/intercomteam_02.png \" alt=\" \" *ngIf=\"Droadcastdata.status == 1\" />\n            </div>\n            <div class=\"itemtext\">{{ Droadcastdata.broadcastName}}</div>\n            <div class=\"iconbox\">\n                <div class=\"cutstatus\">\n                    <i nz-icon nzType=\"pause\" nzTheme=\"outline\" (click)=\"startbroadcast()\" *ngIf=\"Droadcastdata.status == 0\"></i>\n                    <i nz-icon nzType=\"pause-circle\" nzTheme=\"outline\" (click)=\"stopbroadcast()\" *ngIf=\"Droadcastdata.status == 1\"></i>\n                </div>\n                <div class=\"close\" (click)=\"deletefacility()\" *ngIf=\"Droadcastdata.isTemp == 1\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\"></i>\n                </div>\n            </div>\n        </div>\n        <div class=\"speaktest\">\n            <nz-radio-group [(ngModel)]=\"radioValue\">\n                <label nz-radio nzValue=\"voice\" style=\"color:#ffffff ;\">语音</label>\n                <label nz-radio nzValue=\"file\" style=\"color:#ffffff ;\">文件</label>\n            </nz-radio-group>\n        </div>\n    </div>\n    <!-- 语音 -->\n    <div [style.display]=\"radioValue == 'voice' ? 'block' : 'none'\">\n        <div class=\"musicbox\">\n        </div>\n        <div class=\"operatiob\">\n            <div class=\"playbox\">\n                <div class=\"play\" *ngIf=\"voicecut ==false\" (click)=\"voiceplay()\"></div>\n                <div class=\"stop\" *ngIf=\"voicecut ==true\" (click)=\"voicestop()\"></div>\n            </div>\n        </div>\n    </div>\n    <!-- 文件 -->\n    <div [style.display]=\"radioValue == 'file' ? 'block' : 'none'\">\n        <div class=\"musicbox\">\n            <input type=\"file\" #fileInput accept=\"audio/*\" style=\"display: none\" (change)=\"onInputFileChange()\">\n            <video #videolist controls muted autoplay (timeupdate)=\"videoUpdata()\" (ended)=\"haldle()\" style=\"display: none\"></video>\n            <div class=\"audiobox\" *ngIf=\"playcut ==true\">\n                <div class=\"audioname\">{{ playname}}</div>\n                <div class=\"progressbox\">\n                    <div class=\"progressbgc\">\n                        <div class=\"dynamicbgc\" #dynamicbgc></div>\n                    </div>\n                </div>\n                <div class=\"audiotime\">\n                    <span>{{ currentTime }} </span>\n                    <span>/ </span>\n                    <span>{{ totalTime }}</span> </div>\n            </div>\n        </div>\n        <div class=\"operatiob\">\n            <div class=\"playbox\">\n                <div class=\"play\" *ngIf=\"playcut ==false\" (click)=\"play()\"></div>\n                <div class=\"stop\" *ngIf=\"playcut ==true\" (click)=\"stop()\"></div>\n            </div>\n            <div class=\"suspendbox\">\n            </div>\n            <div class=\"uploading\">\n                <i nz-icon nzType=\"vertical-align-top\" nzTheme=\"outline\" (click)=\"addmp3()\"></i>\n            </div>\n            <div class=\"playlistbox\">\n                <app-audiomenu [palylist]=\"palylist\" (outer)=\"cutaudio($event)\"></app-audiomenu>\n            </div>\n            <div class=\"playlistbox\">\n                <app-cycleselect [cycletype]=\"cycletype\" [circulation]=\"circulation\" (outer)=\"cutcycle($event)\"></app-cycleselect>\n            </div>\n        </div>\n    </div>\n</div>\n<div style=\"display: none\">\n    <video src=\"\" #remotesaudios></video>\n</div>\n\n<div class=\"box\" *ngIf=\"hint\">\n    <div class=\"navbox\">\n        <div class=\"nav\" appDrag>\n            <div class=\"setname\">\n                <div>提示</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent()\"></i>\n            </div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 2\">正在语音广播是否切换文件播放</div>\n            <div class=\"sethint\" *ngIf=\"hinttype == 1\">正在文件广播是否切换音频播放</div>\n            <div class=\"setbutton\">\n                <button (click)=\"consent()\">确定</button>\n                <button (click)=\"sendParent()\">取消</button>\n            </div>\n        </div>\n    </div>\n</div>","import { Component, OnInit, ViewChild, Input } from '@angular/core';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { WebService } from '../../protocol/rtc/web.service';\n@Component({\n  selector: 'app-broadcastlocality',\n  templateUrl: './broadcast-locality.component.html',\n  styleUrls: ['./broadcast-locality.component.less'],\n})\nexport class BroadcastlocalityComponent implements OnInit {\n  @ViewChild('remotesaudios') remotesaudios: any;\n  @Input()\n  set broadcastdata(value: string) {\n    this.Droadcastdata = value;\n    if (this.Droadcastdata.status == 1 && this.broadcastState == false) {\n      if (this.judeDroadcast() == true) {\n        if (this.Droadcastdata.starter == this.rx.userID) {\n          // 本机开启的\n        } else {\n          // 其他用户开启的\n          this.broadcastState = true;\n          this.rx.joinBroadcastGroup(this.Droadcastdata.broadcastGroupID);\n        }\n      }\n    }\n  }\n  get broadcastdata(): string {\n    return this.Droadcastdata;\n  }\n  broadcastState: any = false;\n  Droadcastdata: any;\n  cmsStream: any;\n  cmspcPeer: any = null;\n  cmschannelID: any = '';\n  subscription: any;\n  constructor(private ws: WebService, private rx: RxService) {}\n  ngOnInit(): void {\n    this.subscription = this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let cmdBody = nav.cmdBody;\n      let resultdata = nav.resultData;\n      let that = this;\n      switch (respcmdid) {\n        case state.OWO_CMD_BROADCASTGROUP_JOIN + 1: {\n          if (\n            resultdata.broadcastGroupID == this.Droadcastdata.broadcastGroupID\n          ) {\n            if (this.Droadcastdata.starter == this.rx.userID) {\n              // 本机开启的\n            } else {\n              // 其他用户开启的\n              this.broadcastState = true;\n              const configuration = {};\n              this.cmspcPeer = new RTCPeerConnection(configuration);\n              this.cmschannelID = resultdata.SSRC;\n              this.cmsvideo();\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_RTC_OFFER + 1: {\n          if (resultdata.channelID == this.cmschannelID) {\n            // console.log('接收到');\n            that.cmsremoteAnswer(nav);\n          }\n          break;\n        }\n        default:\n          break;\n      }\n      switch (cmdid) {\n        case state.OWO_CMD_BROADCASTGROUP_START: {\n          if (cmdBody.broadcastGroupID == this.Droadcastdata.broadcastGroupID) {\n            // cms开启广播组\n            this.broadcastState = true;\n            const configuration = {};\n            this.cmspcPeer = new RTCPeerConnection(configuration);\n            this.cmschannelID = cmdBody.SSRC;\n            this.cmsvideo();\n          }\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_STOP: {\n          if (cmdBody.broadcastGroupID == this.Droadcastdata.broadcastGroupID) {\n            // cms关闭广播组\n            this.broadcastState = false;\n            if (this.cmspcPeer != null) {\n              this.cmsStream.getAudioTracks().forEach((track: any) => {\n                track.stop();\n              });\n              this.cmspcPeer.close();\n              this.cmspcPeer = null;\n            }\n          }\n          break;\n        }\n        default:\n          break;\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    // console.log('销毁了');\n    this.subscription.unsubscribe();\n  }\n  judeDroadcast() {\n    let userlist = this.Droadcastdata.member.split(';');\n    //获取列表\n    let data = false;\n    for (let i = 0; i < userlist.length; i++) {\n      if (userlist[i] == '' || typeof userlist[i] == 'undefined') {\n        userlist.splice(i, 1);\n        i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置，删除空之后，后面的元素要向前补位\n      }\n    }\n    for (let i = 0; i < userlist.length; i++) {\n      if (userlist[i] == this.rx.userID) {\n        // console.log('在广播组中');\n        data = true;\n      }\n    }\n    return data;\n  }\n  cmsvideo = () => {\n    // console.log('开启群组');\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      let constraints = {\n        audio: true,\n        video: false,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          that.cmsStream = stream;\n          that.cmscall();\n        })\n        .catch(this.cmshandleError);\n    }\n  };\n  cmscall = () => {\n    this.cmspcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.cmsStream.getTracks().forEach((track: any) => {\n      this.cmspcPeer.addTrack(track, this.cmsStream);\n    });\n    this.cmspcPeer.onaddstream = (event: any) => {\n      this.cmsgetRemoteSream(event);\n    };\n    this.cmspcPeer.onconnection = function () {};\n    this.cmspcPeer.ondatachannel = (event: any) => {\n      console.log(event);\n    };\n    // sendonly 表示只发送数据，比如客户端推流到 SFU，那么会在自己的 Offer(or Answer) 中携带 senonly 属性\n    // recvonly 表示只接收数据，比如客户端向 SFU 订阅流，那么会在自己的 Offer(or Answer) 中携带 recvonly 属性\n    // sendrecv 表示可以双向传输，比如客户端加入到视频会议中，既要发布自己的流又要订阅别人的流，那么就需要在自己的 Offer(or Answer) 中携带 sendrecv 属性\n    // inactive 表示禁止发送数据，比如在基于 RTP 的视频会议中，主持人暂时禁掉用户 A 的语音，那么用户 A 的关于音频的媒体级别描述应该携带 inactive 属性，表示不能再发送音频数据。\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.cmschannelID,\n    });\n  };\n\n  cmsremoteAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.cmspcPeer.setRemoteDescription(desc);\n    this.cmspcPeer.createAnswer().then((sdp: any) => {\n      this.cmsgotDescription2(sdp);\n    });\n  };\n  cmsgotDescription2 = (desc: any) => {\n    this.cmspcPeer.setLocalDescription(desc).then();\n  };\n  cmsgetRemoteSream = (e: any) => {\n    this.remotesaudios.nativeElement.srcObject = e.stream;\n  };\n  cmshandleError(err: any) {\n    console.log(err);\n  }\n}\n","<div style=\"display: none\">\n    <audio src=\"\" #remotesaudios autoplay></audio>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { RxService } from '../../protocol/rtc/rx.service';\n@Component({\n  selector: 'app-addbroadcast',\n  templateUrl: './add-broadcast.component.html',\n  styleUrls: ['./add-broadcast.component.less'],\n})\nexport class AddbroadcastComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() list: any = '';\n  @Input() devlist: any = '';\n  @Input() userListtype: any = '';\n  @Input() alreadymember: any = '';\n  @Input() userlist: any = '';\n  inputValue: string = '';\n  uservalue: string = '';\n  arr: any = [];\n  devarr: any = [];\n  shows: boolean = true;\n  member: any = [];\n  addmember: boolean = false;\n  constructor(private rx: RxService) {}\n  ngOnInit(): void {\n    this.addright();\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.list) {\n      this.chi(this.list.childs);\n    }\n    if (changes.devlist) {\n      this.csh(this.devlist.deviceList);\n    }\n    if (changes.userListtype) {\n      this.merge();\n    }\n    if (changes.alreadymember) {\n      this.addmen(this.alreadymember);\n    }\n  }\n  chi(obj: any) {\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n  csh(obj: any) {\n    for (let i in obj) {\n      obj[i].show = false;\n      this.devarr.push(obj[i]);\n    }\n  }\n  merge() {\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      if (arr == this.rx.userID) {\n        this.arr[i].info.userName = '本机';\n        this.arr[i].info.type = { devStatus: '1' };\n      }\n      for (let j = 0; j < this.userListtype.length; j++) {\n        let type: any = this.userListtype[j];\n        if (arr == type.userID) {\n          this.arr[i].info.type = type;\n        }\n      }\n    }\n  }\n  sendParent(ev: boolean) {\n    if (ev == false) {\n      this.member = [];\n    }\n    let data = {\n      addmember: this.addmember,\n      member: this.member,\n    };\n    this.outer.emit(data);\n  }\n  searchTree() {\n    this.uservalue = this.inputValue;\n  }\n  empty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  removeright(ev: any) {\n    for (let i = 0; i < this.member.length; i++) {\n      if (this.member[i].userID == ev.userID) {\n        this.member.splice(i, 1);\n        i--;\n      }\n    }\n  }\n  addright(ev?: any, type?: any) {\n    if (this.member == '') {\n      for (let i = 0; i < this.arr.length; i++) {\n        if (this.arr[i].info.userName == '本机') {\n          this.member.push(this.arr[i].info);\n        }\n      }\n    }\n    if (ev) {\n      let data = this.member;\n      if (type == 1) {\n        let judge = false;\n        for (let i = 0; i < data.length; i++) {\n          if (data[i].userID == ev.userID) {\n            judge = true;\n          }\n        }\n        if (judge == false) {\n          data.push(ev);\n        }\n      } else if (type == 2) {\n        let judge = false;\n        for (let i = 0; i < data.length; i++) {\n          if (data[i].deviceID == ev.deviceID) {\n            judge = true;\n          }\n        }\n        if (judge == false) {\n          data.push(ev);\n        }\n      }\n    }\n    \n    if (this.userlist) {\n      let data = this.member;\n      for (let i = 0; i < this.userlist.length; i++) {\n        let user = this.userlist[i];\n        for (let j = 0; j < data.length; j++) {\n          if (user == data[j].userID) {\n            data.splice(j, 1);\n            j--;\n          }\n        }\n      }\n    }\n  }\n  addmen(ev: any) {\n    let data = ev.split(';');\n    for (let i = 0; i < data.length; i++) {\n      for (let j = 0; j < this.arr.length; j++) {\n        if (this.arr[j].info.userID == data[i]) {\n          this.member.push(this.arr[j].info);\n        }\n      }\n    }\n    for (let i = 0; i < data.length; i++) {\n      for (let j = 0; j < this.devarr.length; j++) {\n        if (this.devarr[j].deviceID == data[i]) {\n          this.member.push(this.devarr[j]);\n        }\n      }\n    }\n  }\n}\n","<div class=\"box\">\n    <div class=\"navbox\">\n        <div class=\"nav\" cdkDrag>\n            <div class=\"setname\" cdkDragHandle>\n                <div>添加设备</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent(false)\"></i>\n            </div>\n            <div class=\"setnav\">\n                <div class=\"setleft\">\n                    <div class=\"title\">联系人分组</div>\n                    <div class=\"inputbox\">\n                        <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\n                            <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"searchTree()\" />\n                        </nz-input-group>\n                        <ng-template #prefixTemplateUser>\n                            <i nz-icon nzType=\"search\" class=\"icon\"></i>\n                        </ng-template>\n                        <ng-template #inputClearTpl>\n                            <div *ngIf=\"inputValue\" class=\"icon\">\n                                <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"empty()\"></i>\n                            </div>\n                        </ng-template>\n                    </div>\n                    <div class=\"list\">\n                        <div (click)=\"show()\" class=\"listbox\">\n                            <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\">\n                                <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n                            </div>\n                            <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\">\n                                <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n                            </div>\n                            <div class=\"root\">\n                                {{ list.root }}\n                            </div>\n                            <div class=\"blank\"></div>\n                        </div>\n                        <div [style.display]=\"shows ? 'block' : 'none'\">\n                            <div *ngFor=\"let item of arr; let i = index\">\n                                <div class=\"itembox\" (mouseenter)=\"item.info.show = true\" (mouseleave)=\"item.info.show = false\" *ngIf=\"item.info\">\n                                    <div class=\"itemimg\">\n                                        <div><img src=\"assets/img/人员.png\" alt=\"\" /></div>\n                                    </div>\n                                    <div class=\"itemname\">\n                                        {{ item.info.userName }}\n                                    </div>\n                                    <div class=\"itemtpye\" *ngIf=\"item.info.type\">\n                                        <div *ngIf=\"item.info.type.devStatus == 0\" style=\"color: #a09f9f\">\n                                            离线\n                                        </div>\n                                        <div *ngIf=\"item.info.type.devStatus == 1\" style=\"color: #5898d7\">\n                                            在线\n                                        </div>\n                                        <div *ngIf=\"item.info.type.devStatus == 2\" style=\"color: #3ca02d\">\n                                            通话\n                                        </div>\n                                    </div>\n                                    <div class=\"itemright\">\n                                        <img src=\"assets/img/向右添加.png\" alt=\"\" [style.display]=\"item.info.show ? 'block' : 'none'\" (click)=\"addright(item.info,1)\" />\n                                    </div>\n                                </div>\n                                <div class=\"childs\" *ngIf=\"item.info.childs\">\n                                    <div (click)=\"item.show = !item.show\" class=\"listbox\">\n                                        <div [style.display]=\"item.show ? 'block' : 'none'\" class=\"imgbox\">\n                                            <img src=\"assets/img/white_branch_down.png \" alt=\" \" />\n                                        </div>\n                                        <div [style.display]=\"!item.show ? 'block' : 'none'\" class=\"imgbox\">\n                                            <img src=\"assets/img/white_branch_right.png \" alt=\" \" />\n                                        </div>\n                                        <div class=\"root\">\n                                            {{ item.info.root }}\n                                        </div>\n                                        <div class=\"blank\"></div>\n                                    </div>\n                                    <div [style.display]=\"item.show ? 'block' : 'none'\">\n                                        <div *ngFor=\"let items of item.info.childs; let i = index\">\n                                            <div *ngIf=\"items.info.groupName\" class=\"groupName\">\n                                                {{ items.info.groupName }}\n                                            </div>\n                                            <div *ngIf=\"items.info.root\" class=\"groupName\">\n                                                {{ items.info.root }}\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div (click)=\"show()\" class=\"listbox\">\n                            <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\">\n                                <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n                            </div>\n                            <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\">\n                                <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n                            </div>\n                            <div class=\"root\">\n                                {{ devlist.root }}\n                            </div>\n                            <div class=\"blank\"></div>\n                        </div>\n                        <div [style.display]=\"shows ? 'block' : 'none'\">\n                            <div *ngFor=\"let item of devarr; let i = index\">\n                                <div class=\"itembox\" (mouseenter)=\"item.show = true\" (mouseleave)=\"item.show = false\">\n                                    <div class=\"itemimg\">\n                                        <div class=\"infoimg\" *ngIf=\"item.deviceStatus == 0\">\n                                            <img src=\"assets/img/ic_device.png\" alt=\"\" />\n                                        </div>\n                                        <div class=\"buleStatus\" *ngIf=\"item.deviceStatus== 1\">\n                                            <img src=\"assets/img/ic_device.png\" alt=\"\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"itemname\">\n                                        {{ item.deviceName }}\n                                    </div>\n                                    <div class=\"itemtpye\">\n                                        <div *ngIf=\"item.deviceStatus == 0\" style=\"color: #a09f9f\">\n                                            离线\n                                        </div>\n                                        <div *ngIf=\"item.deviceStatus == 1\" style=\"color: #5898d7\">\n                                            在线\n                                        </div>\n                                        <div *ngIf=\"item.deviceStatus == 2\" style=\"color: #3ca02d\">\n                                            通话\n                                        </div>\n                                    </div>\n                                    <div class=\"itemright\">\n                                        <img src=\"assets/img/向右添加.png\" alt=\"\" [style.display]=\"item.show ? 'block' : 'none'\" (click)=\"addright(item,2)\" />\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"setright\">\n                    <div class=\"selected\">已选人员</div>\n                    <div class=\"userlest\">\n                        <div *ngFor=\"let data of member; let i = index\">\n                            <div class=\"userlestbox\">\n                                <div class=\"usname\" *ngIf=\"data.userName\">\n                                    {{data.userName}}\n                                </div>\n                                <div class=\"usname\" *ngIf=\"data.deviceName\">\n                                    {{data.deviceName}}\n                                </div>\n                                <div class=\"usimg\">\n                                    <img src=\"assets/img/canceladd.png\" alt=\"\" (click)=\"removeright(data)\">\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"setbutton\">\n                    <button (click)=\"sendParent(true)\">确定</button>\n                    <button (click)=\"sendParent(false)\">取消</button>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { ResourceService } from '../../../protocol/resource/resource.service';\nimport { cache } from '../../../protocol/rtc/cache';\n\n@Component({\n  selector: 'app-broadcast-tree',\n  templateUrl: './broadcast-tree.component.html',\n  styleUrls: ['./broadcast-tree.component.less']\n})\nexport class BroadcastTreeComponent implements OnInit {\n  @Input() uservalue: any = '';\n  broadcastList: any = [];\n  searchtype: number = 1;\n  branch: boolean = true;\n  check: boolean = false;\n  newarr: any = [];\n  arr: any = [];\n  grouplist: any = [];\n  indeterminate = false;\n  constructor(private datastate: ResourceService) {}\n  ngOnInit(): void {\n    this.broadcastList = this.datastate.broadcastList;\n    this.arr = this.broadcastList;\n    if (cache.broadcast != '') {\n      this.grouplist = cache.broadcast.split(';');\n      for (let i = 0; i < this.grouplist.length; i++) {\n        if (\n          this.grouplist[i] == '' ||\n          typeof this.grouplist[i] == 'undefined'\n        ) {\n          this.grouplist.splice(i, 1);\n          i = i - 1;\n        }\n      }\n      for (let i = 0; i < this.arr.length; i++) {\n        for (let j = 0; j < this.grouplist.length; j++) {\n          if (this.arr[i].broadcastGroupID == this.grouplist[j]) {\n            this.arr[i].check = true;\n          }\n        }\n      }\n      this.updateSingleChecked()\n    }\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.uservalue) {\n      this.arr = this.broadcastList;\n      if (this.uservalue == '') {\n        this.searchtype = 1;\n      } else {\n        if (this.rebuildData(this.uservalue, this.arr).length == 0) {\n          this.searchtype = 2;\n        } else {\n          this.arr = this.rebuildData(this.uservalue, this.arr);\n        }\n      }\n    }\n  }\n  chi(obj: any) {\n    this.arr = [];\n    for (let i in obj) {\n      obj[i].groupshow = false;\n      this.arr.push(obj[i]);\n    }\n  }\n\n  rebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.broadcastName.indexOf(value) > -1) {\n        this.newarr.push(element);\n      }\n    });\n    return this.newarr;\n  }\n  show() {\n    this.branch = !this.branch;\n  }\n\n  allcheck(ev: any) {\n    this.indeterminate = false;\n    if (this.check== true) {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        check: true,\n      }));\n    } else {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        check: false,\n      }));\n    }\n  }\n  usercheck(ev: any) {\n    for (let i = 0; i < this.arr.length; i++) {\n      if (ev.broadcastGroupID == this.arr[i].broadcastGroupID) {\n        this.arr[i].groupshow = !this.arr[i].groupshow;\n      }\n    }\n  }\n  updateSingleChecked(): void {\n    if (this.arr.every((item: any) => !item.check)) {\n      this.check = false;\n      this.indeterminate = false;\n    } else if (this.arr.every((item: any) => item.check)) {\n      this.check = true;\n      this.indeterminate = false;\n    } else {\n      this.indeterminate = true;\n    }\n  }\n}\n","<div class=\"box\" *ngIf=\"searchtype == 1\">\n    <div class=\"branchbox\">\n        <div [style.display]=\"branch ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n        </div>\n        <div [style.display]=\"!branch ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n        </div>\n        <div>\n            <label nz-checkbox [(ngModel)]=\"check\" [nzIndeterminate]=\"indeterminate\" (ngModelChange)=\"allcheck($event)\"></label>\n        </div>\n        <div class=\"talkback\">广播组</div>\n    </div>\n    <div class=\"talkbacklist\" [style.display]=\"branch == true ? 'block' : 'none'\">\n        <div *ngFor=\"let item of arr; let i = index\">\n            <div class=\"talk\">\n                <div>\n                    <label nz-checkbox [(ngModel)]=\"item.check\" (ngModelChange)=\"updateSingleChecked()\"></label>\n                </div>\n                <div class=\"talkName\">\n                    {{ item.broadcastName }}\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"searchtype == 2\" class=\"searching\">未检索的到广播组</div>","import {\n  Component,\n  EventEmitter,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { cache } from '../../protocol/rtc/cache';\nimport { RxService } from '../../protocol/rtc/rx.service';\n\n@Component({\n  selector: 'app-select-broadcast',\n  templateUrl: './select-broadcast.component.html',\n  styleUrls: ['./select-broadcast.component.less']\n})\nexport class SelectBroadcastComponent implements OnInit {\n  @ViewChild('cart') cart: any;\n  @Output() private outer = new EventEmitter<any>();\n  inputValue: string = '';\n  uservalue: string = '';\n  searchtype: number = 1;\n  constructor(private rx: RxService) {}\n  ngOnInit(): void {}\n  close() {\n    let data = {\n      select: false,\n    };\n    this.outer.emit(data);\n  }\n  userTree() {\n    this.uservalue = this.inputValue;\n  }\n  userempty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  confirm() {\n    let data = {\n      select: true,\n      broadcastList: this.cart.arr,\n    };\n    this.outer.emit(data);\n    let cs = this.cart.arr;\n    let str = '';\n    for (let i = 0; i < cs.length; i++) {\n      if (cs[i].check == true) {\n        str += cs[i].broadcastGroupID + ';';\n      }\n    }\n    cache.broadcast = str;\n    let eva = JSON.stringify(cache);\n    this.rx.savecache(eva);\n  }\n}\n","<div class=\"fullscreen\">\n    <div class=\"box\">\n        <div class=\"drag\" cdkDrag>\n            <div class=\"usertitle\" cdkDragHandle>\n                <div class=\"title\">选择广播组</div>\n                <div class=\"closebox\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"close()\"></i>\n                </div>\n            </div>\n            <div class=\"searchbox\">\n                <div class=\"search\">\n                    <nz-input-group [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"inputClear\">\n                        <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"userTree()\" />\n                    </nz-input-group>\n                    <ng-template #prefixTemplate><i nz-icon nzType=\"search\"></i\n          ></ng-template>\n          <ng-template #inputClear>\n            <div *ngIf=\"inputValue\">\n              <i\n                nz-icon\n                nzType=\"close-circle\"\n                nzTheme=\"outline\"\n                (click)=\"userempty()\"\n              ></i>\n                </div>\n                </ng-template>\n            </div>\n        </div>\n        <div class=\"grouptree\">\n            <app-broadcast-tree #cart [uservalue]=\"uservalue\"></app-broadcast-tree>\n        </div>\n        <div class=\"buttonbox\" *ngIf=\"searchtype == 1\">\n            <button (click)=\"confirm()\">确定</button>\n            <button (click)=\"close()\">取消</button>\n        </div>\n    </div>\n</div>\n</div>","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { OverallService } from '../common/overall.service';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { WebService } from '../protocol/rtc/web.service';\nimport { ResourceService } from '../protocol/resource/resource.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { cache } from '../protocol/rtc/cache';\n@Component({\n  selector: 'app-broadcast',\n  templateUrl: './broadcast.component.html',\n  styleUrls: ['./broadcast.component.less'],\n})\nexport class BroadcastComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @ViewChild('kongbai') kongbai: any;\n  @ViewChild('remotesaudios') remotesaudios?: any;\n  @Input() overallvolume: any;\n  @Input() recordvolume: any;\n  @Input() broadside: any;\n  @HostListener('document:click', ['$event'])\n  bodyClick(e: any) {\n    this.kongshow = false;\n    function getTrigger(queryList: any, className?: any) {\n      let flag = true;\n      // 遍历事件节点\n      (<HTMLElement[]>e.path).forEach((i) => {\n        // 是否为 #unclick\n        flag &&\n          queryList.forEach((el: any) => {\n            i.isEqualNode && i.isEqualNode(el.nativeElement) && (flag = false);\n          });\n      });\n      return flag;\n    }\n  }\n  sendgroup: any; //cms开始对讲\n  cmsgroup: any; //cms关闭对讲\n  list: any = '';\n  devlist: any = '';\n  userListtype: any = '';\n  kflag: boolean = false;\n  grouptype = '1';\n  broadcastGroupList: any = [];\n  oldlist: any = [];\n  item: number = 1;\n  content: number = 0;\n  designation: string = '';\n  branch: boolean = true;\n  showtimes: boolean = false;\n  inputValue?: string = '';\n  value?: string;\n  shows: boolean = false;\n  addmember: boolean = false;\n  addpersonnel: boolean = false;\n  memListID: any = '';\n  userIDList: any = ''; // 添加用户列表\n  talkGroupID: any = ''; //讨论组id\n  adduserpersonnel: any = ''; //添加讨论组页面切换\n  describe: any = ''; //描述\n  broadcastName = ''; //广播组名字\n  broadcastitem: any = ''; //右键点击的广播组\n  userlist: any[] = [];\n  showlist: any = []; //显示的列表\n  kongshow: boolean = false;\n  kongbais: any = '';\n  talkGroupitem: any = ''; //右键点击的讨论组\n  userquit = false;\n  ssiontype = false;\n  talkgroupitem: any = '';\n  cricle: number = 1;\n  s: any;\n  interval: boolean = false;\n  timeout: any;\n  communicate: boolean = false;\n  localStream: any = null;\n  pcPeer: any = null;\n  channelID: any = '';\n  pamas: any = '';\n  speakerID: any = '';\n  vodtree = true;\n  uservalue: any = '';\n  grouplisttype: boolean = false;\n  hint: boolean = false;\n  hinttype: number = 6;\n  operationclass = 'content';\n  leftsider: any;\n  subscription: any;\n  select: boolean = false;\n  selectlist: any = [];\n  activeIndex = -1;\n  oldgroup: any = '';\n  pitchon: boolean = false;\n  speakerstate: number = 1;\n  blank: boolean = true;\n  audioSource: any = null;\n  equipmentlist: any = [];\n  transfertype = 2;\n  eqipmenttype= '2'\n  constructor(\n    private rx: RxService,\n    public el: ElementRef,\n    private ws: WebService,\n    private sendService: OverallService,\n    private datastact: ResourceService,\n    private message: NzMessageService\n  ) {\n    this.sendService.sendsider$.subscribe((message) => {\n      this.leftsider = message;\n    });\n    this.sendService.blanksendsider$.subscribe((blank) => {\n      this.blank = blank;\n    });\n  }\n  ngOnInit(): void {\n    this.sendService.blanksendsider(true);\n    document.oncontextmenu = function () {\n      return false;\n    };\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let cmdBody = nav.cmdBody;\n      let resultdata = nav.resultData;\n      let that = this;\n      switch (respcmdid) {\n        case state.OWO_CMD_USER_LOAD_CACHE + 1: {\n          if (resultdata.cache != '') {\n            let save = JSON.parse(resultdata.cache);\n            if (save.broadcast != '') {\n              let data = this.sendService.trun(save.broadcast);\n              let talk = this.broadcastGroupList;\n              for (let i = 0; i < talk.length; i++) {\n                for (let j = 0; j < data.length; j++) {\n                  if (talk[i].broadcastGroupID == data[j]) {\n                    talk[i].groupshow = true;\n                  }\n                }\n              }\n              this.selectlist = talk;\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_GET_LIST + 1: {\n          // 获取广播组列表\n          this.datastact.broadcastList = resultdata.broadcastGroupList;\n          this.broadcastGroupList = resultdata.broadcastGroupList;\n          if (cache.broadcast != '') {\n            let data = this.sendService.trun(cache.broadcast);\n            let talk = this.broadcastGroupList;\n            for (let i = 0; i < talk.length; i++) {\n              for (let j = 0; j < data.length; j++) {\n                if (talk[i].broadcastGroupID == data[j]) {\n                  talk[i].groupshow = true;\n                }\n              }\n            }\n            this.selectlist = talk;\n          }\n          break;\n        }\n        case state.OWO_CMD_GET_MEMLIST + 1: {\n          this.list = resultdata;\n          break;\n        }\n  \n        case state.OWO_CMD_GET_MEMLIST_STATUS + 1: {\n          this.userListtype = resultdata.userList;\n          break;\n        }\n        case state.OWO_CMD_GET_DEV_LIST + 1: {\n          this.devlist = resultdata;\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_CREATE + 1: {\n          this.rx.gainbroadcastlist();\n          if(resultdata.isTemp=='1'){\n            let broadcast = cache.broadcast += resultdata.broadcastGroupID + ';';\n    \n            cache.broadcast = broadcast\n            let eva = JSON.stringify(cache);\n            this.rx.savecache(eva);\n          }\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_DELMEM + 1: {\n          this.rx.gainbroadcastlist();\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_ADDMEM + 1: {\n          this.rx.gainbroadcastlist();\n          break;\n        }\n        default:\n          break;\n      }\n      switch (cmdid) {\n        case state.OWO_CMD_BROADCASTGROUP_ADDMEM: {\n          if (this.content == 1) {\n            // if (cmdBody.talkGroupID == this.talkGroupID) {\n            //   // this.cmsremove(cmdBody.addMemIDList);\n            // }\n          }\n          this.rx.gainbroadcastlist();\n          break;\n        }\n        case state.OWO_CMD_BROADCASTGROUP_DELMEM : {\n          if (this.content == 1) {\n            this.rx.gainbroadcastlist();\n            // if(cmdBody.broadcastID ){\n\n            // }\n          }\n          break;\n        }\n        default:\n          break;\n      }\n    });\n  }\n\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        this.operationclass = 'content';\n      } else if (this.broadside == true) {\n        this.operationclass = 'sidebar';\n      }\n    }\n  }\n  ngAfterViewInit(): void {}\n\n  selectgroup(ev: any) {\n    if (ev.select == true) {\n      this.select = false;\n      this.selectlist = JSON.parse(JSON.stringify(ev.broadcastList));\n    } else if (ev.select == false) {\n      this.select = false;\n    }\n  }\n  equipmentData(arr: any) {\n    let newarr: any = [];\n    arr.forEach((element: any) => {\n      if (element.show == true) {\n        newarr.push(element);\n      }\n    });\n    return newarr;\n  }\n  searchTree() {\n    if (this.value == '') {\n      this.broadcastGroupList = this.oldlist;\n    } else {\n      this.rebuildData(this.value, this.broadcastGroupList);\n    }\n  }\n  empty() {\n    this.grouptype == '1';\n    this.value = '';\n    this.broadcastGroupList = this.oldlist;\n  }\n  userTree() {\n    this.uservalue = this.inputValue;\n  }\n  userempty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  tree(ev: any) {\n    this.outer.emit(ev);\n  }\n  rebuildData(value: any, arr: any) {\n    let newarr: any = [];\n    arr.forEach((element: any) => {\n      if (element.talkName != undefined) {\n        if (element.talkName.indexOf(value) > -1) {\n          // 判断条件\n          newarr.push(element);\n        }\n      }\n    });\n    if (newarr.length == 0) {\n      this.grouptype = '2';\n    } else {\n      this.broadcastGroupList = newarr;\n      this.grouptype = '1';\n    }\n  }\n  titles(ev: number): void {\n    this.item = ev;\n  }\n  // 查看广播组成员\n  intercom(ev: number, pamas?: any) {\n    if (ev == 1) {\n    } else if (ev == 0) {\n      if (this.pamas.status == 1) {\n        this.pitchon = true;\n      }\n      this.communicate = false;\n    }\n    this.content = ev;\n    this.showlist = [];\n    if (this.content == 0) {\n      this.addmember = false;\n      this.showlist = [];\n    }\n    if (pamas) {\n      this.designation = pamas.broadcastName;\n      this.userlist = pamas.member.split(';');\n      //获取列表\n      for (let i = 0; i < this.userlist.length; i++) {\n        if (this.userlist[i] == '' || typeof this.userlist[i] == 'undefined') {\n          this.userlist.splice(i, 1);\n          i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置，删除空之后，后面的元素要向前补位\n        }\n      }\n      for (let i = 0; i < this.userlist.length; i++) {\n        this.showlist.push({ name: this.userlist[i] });\n      }\n      for (let i = 0; i < this.userListtype.length; i++) {\n        let stact = this.userListtype[i];\n\n        for (let j = 0; j < this.showlist.length; j++) {\n          if (this.showlist[j].name == stact.userID) {\n            this.showlist[j].userType = stact.userType; //用户类型\n            this.showlist[j].userName = stact.userName; //用户类型\n            this.showlist[j].devStatus = stact.devStatus; //设备状态\n            this.showlist[j].electricity = stact.electricity; //电量\n            this.showlist[j].netStatus = stact.netStatus; //网络状态\n            this.showlist[j].micStatus = stact.micStatus; //话筒状态\n          }\n        }\n      }\n      for (let i = 0; i < this.devlist.deviceList.length; i++) {\n        let stact = this.devlist.deviceList[i];\n        for (let j = 0; j < this.showlist.length; j++) {\n          if (this.showlist[j].name == stact.deviceID) {\n            // this.showlist[j].userType = stact.userType; //用户类型\n            // this.showlist[j].devStatus = stact.devStatus; //设备状态\n            // this.showlist[j].electricity = stact.electricity; //电量\n            // this.showlist[j].netStatus = stact.netStatus; //网络状态\n            // this.showlist[j].micStatus = stact.micStatus; //话筒状态\n          }\n        }\n      }\n      for (let i = 0; i < this.showlist.length; i++) {\n        if (this.rx.userID == this.showlist[i].name) {\n          this.showlist[i].userName = '本机';\n          let item = this.showlist[0];\n          this.showlist[0] = this.showlist[i];\n          this.showlist[i] = item;\n          this.showlist[0].userType = this.rx.userType;\n          this.showlist[0].electricity = '4';\n          this.showlist[0].netStatus = '4';\n          this.showlist[0].devStatus = '1';\n        }\n      }\n      this.talkGroupID = pamas.broadcastGroupID;\n      this.pamas = pamas;\n    }\n  }\n\n  addUser() {\n    // 广播组添加成员\n    for (let i = 0; i < this.userlist.length; i++) {\n      let user = this.userlist[i];\n      if (user == this.rx.userID) {\n        this.userlist[i] = '本机';\n      }\n    }\n    this.addmember = true;\n  }\n  runParent(data: any) {\n    this.addmember = data.addmember;\n    let member = data.member;\n    for (let j = 0; j < this.userlist.length; j++) {\n      let user = this.userlist[j];\n      for (let i = 0; i < member.length; i++) {\n        if (user == member[i].userName) {\n          member.splice(i, 1);\n          i--;\n        }\n      }\n    }\n    for (let i = 0; i < member.length; i++) {\n      this.userlist.push(member[i].userID);\n    }\n    for (let i = 0; i < member.length; i++) {\n      this.userIDList += member[i].userID + ';';\n    }\n    for (let i = 0; i < member.length; i++) {\n      this.showlist.push({ name: member[i].userID });\n    }\n    for (let i = 0; i < this.userListtype.length; i++) {\n      let stact = this.userListtype[i];\n      for (let j = 0; j < this.showlist.length; j++) {\n        if (this.showlist[j].name == stact.userID) {\n          this.showlist[j].stact = stact.userType; //用户类型\n          this.showlist[j].devStatus = stact.devStatus; //设备状态\n          this.showlist[j].electricity = stact.electricity; //电量\n          this.showlist[j].netStatus = stact.netStatus; //网络状态\n          this.showlist[j].micStatus = stact.micStatus; //话筒状态\n        }\n      }\n    }\n    this.rx.addTalkbackList(this.userIDList, this.talkGroupID);\n  }\n\n  judeDroadcast() {\n    let userlist = this.pamas.member.split(';');\n    //获取列表\n    let data = false;\n    for (let i = 0; i < userlist.length; i++) {\n      if (userlist[i] == '' || typeof userlist[i] == 'undefined') {\n        userlist.splice(i, 1);\n        i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置，删除空之后，后面的元素要向前补位\n      }\n    }\n    for (let i = 0; i < userlist.length; i++) {\n      if (userlist[i] == this.rx.userID) {\n        // console.log('在广播组中');\n        data = true;\n      }\n    }\n    return data;\n  }\n  addruntemporary(event: any) {\n    let member = event.member;\n    this.addmember = event.addmember;\n    if (member.length < 1) {\n    } else {\n      let data: any = '';\n      if (this.judeDroadcast() == true) {\n        for (let i = 0; i < member.length; i++) {\n          if (member[i].userID == this.rx.userID) {\n            member.splice(i, 1);\n            i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置，删除空之后，后面的元素要向前补位\n          }\n        }\n      }\n      for (let i = 0; i < member.length; i++) {\n        if (member[i].userID) {\n          data += member[i].userID + ';';\n        } else {\n          data += member[i].deviceID + ';';\n        }\n      }\n      for (let i = 0; i < member.length; i++) {\n        this.showlist.push({ name: member[i].userID });\n      }\n      for (let i = 0; i < this.userListtype.length; i++) {\n        let stact = this.userListtype[i];\n        for (let j = 0; j < this.showlist.length; j++) {\n          if (this.showlist[j].name == stact.userID) {\n            this.showlist[j].stact = stact.userType; //用户类型\n            this.showlist[j].userName = stact.userName; //用户类型\n            this.showlist[j].devStatus = stact.devStatus; //设备状态\n            this.showlist[j].electricity = stact.electricity; //电量\n            this.showlist[j].netStatus = stact.netStatus; //网络状态\n            this.showlist[j].micStatus = stact.micStatus; //话筒状态\n          }\n        }\n      }\n      for (let i = 0; i < this.showlist.length; i++) {\n        if (this.rx.userID == this.showlist[i].name) {\n          this.showlist[i].userName = '本机';\n          let item = this.showlist[0];\n          this.showlist[0] = this.showlist[i];\n          this.showlist[i] = item;\n          this.showlist[0].userType = this.rx.userType;\n          this.showlist[0].electricity = '4';\n          this.showlist[0].netStatus = '4';\n          this.showlist[0].devStatus = '1';\n        }\n      }\n      this.rx.addmenbroadcastlist(this.pamas.broadcastGroupID, data);\n    }\n  }\n  // 选择设备\n  addrunParent(event: any) {\n    let member = event.member;\n    this.addpersonnel = event.addmember;\n    if (member.length < 1) {\n      this.memListID = '';\n      this.adduserpersonnel = '';\n    } else {\n      for (let i = 0; i < member.length; i++) {\n        if (member[i].userName) {\n          this.adduserpersonnel += member[i].userName + ';';\n        } else {\n          this.adduserpersonnel += member[i].deviceName + ';';\n        }\n      }\n      for (let i = 0; i < member.length; i++) {\n        if (member[i].userID) {\n          this.memListID += member[i].userID + ';';\n        } else {\n          this.memListID += member[i].deviceID + ';';\n        }\n      }\n    }\n  }\n  addPersonnels() {\n    this.addpersonnel = true;\n    if (this.memListID != '') {\n    }\n  }\n  //添加讨论组\n  confirmpersonnel() {\n    let data = {\n      memListID: this.memListID,\n      broadcastName: this.broadcastName,\n      describe: this.describe,\n      isTemp: '0',\n    };\n    this.rx.createBroadcastGroup(data);\n    this.content = 0;\n    this.broadcastName = '';\n    this.adduserpersonnel = '';\n    this.describe = '';\n    this.memListID = '';\n  }\n  //右键点击位置显示\n  test(ev: any, item: any) {\n    this.pamas = item;\n    this.broadcastitem = item;\n    this.kongshow = true;\n    this.kongbais = this.kongbai.nativeElement;\n    this.kongbais.styleposition = 'absolute';\n    this.kongbais.style.left = ev.pageX + 'px';\n    this.kongbais.style.top = ev.pageY + 'px';\n  }\n  andrs(ev: any) {\n    ev.show = !ev.show;\n  }\n  // 踢出广播组\n  kick() {\n    let userID = '';\n    for (let i = 0; i < this.showlist.length; i++) {\n      let data = this.showlist[i];\n      if (data.show == true) {\n        for (let j = 0; j < this.showlist.length; j++) {\n          if (data.name == this.showlist[j]) {\n            this.showlist.splice(j, 1);\n            j--;\n          }\n        }\n      }\n    }\n    for (let i = 0; i < this.showlist.length; i++) {\n      let data = this.showlist[i];\n      if (data.show == true) {\n        userID += this.showlist[i].name + ';';\n        this.showlist.splice(i, 1);\n        this.userlist.splice(i, 1);\n        i--;\n      }\n    }\n    this.rx.delmenbroadcastlist(userID, this.pamas.broadcastGroupID);\n  }\n  //删除广播组\n  deletebroadcast() {\n    this.userquit = true;\n  }\n  //切换广播组状态\n  begin(ev: any, $event?: any) {\n    if ($event) {\n      $event.stopPropagation();\n    }\n    if (ev.status == 1) {\n      // creater 判断是否是本用户开启的\n      if (this.judeDroadcast() == true) {\n        if (ev.creater == this.rx.userID) {\n          this.rx.stopbroadcastlist(ev.broadcastGroupID);\n        } else {\n          // this.message.create('error', '不是');\n        }\n      } else {\n        this.message.create('error', '本机未在广播组中');\n      }\n    } else if (ev.status == 0) {\n      if (this.judeDroadcast() == true) {\n        this.rx.startbroadcastlist(ev.broadcastGroupID);\n      } else {\n        this.message.create('error', '本机未在广播组中');\n      }\n    }\n  }\n  runParentinit(msg: boolean) {\n    this.hint = msg;\n  }\n\n  //打开广播组\n  enter() {\n    if (this.judeDroadcast() == true) {\n      this.rx.startbroadcastlist(this.broadcastitem.broadcastGroupID);\n      this.rx.gainbroadcastlist();\n    } else {\n      this.message.create('error', '本机未在广播组中');\n    }\n  }\n  // 关闭广播组\n  occlude() {\n    this.rx.stopbroadcastlist(this.broadcastitem.broadcastGroupID);\n    this.rx.gainbroadcastlist();\n  }\n  // 关闭弹框\n  sendParent() {\n    this.userquit = false;\n  }\n  // 删除广播组\n  userQuits() {\n    let broadcastID = this.broadcastitem.broadcastGroupID;\n    this.rx.destrpyBroadcastGroup(broadcastID);\n    this.userquit = false;\n    this.content = 0;\n    this.rx.gainbroadcastlist();\n  }\n  sider() {\n    this.leftsider = !this.leftsider;\n    this.sendService.sendsider(this.leftsider);\n  }\n  addgroup() {\n    this.select = true;\n  }\n  // 添加临时广播组\n  groupParent(ev: any) {\n    let data: any = {\n      memListID: '',\n      broadcastName: 'test;',\n      describe: '',\n      isTemp: '1',\n    };\n    data.memListID = this.rx.userID + ';' + 'test2;';\n    this.rx.createBroadcastGroup(data);\n  }\n  trackByIndex(index: number, item: any) {\n    return item.id;\n  }\n}\n","<div class=\"userquitbox\" *ngIf=\"userquit\">\n    <div class=\"userquit\">\n        <div class=\"nav\" appDrag>\n            <div class=\"setname\">\n                <div>提示</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent()\"></i>\n            </div>\n            <div class=\"sethint\">确定要删除该广播组吗？</div>\n            <div class=\"sethintbutton\">\n                <button (click)=\"userQuits()\">确定</button>\n                <button (click)=\"userquit = false\">取消</button>\n            </div>\n        </div>\n    </div>\n</div>\n<div class=\"box\" class=\"{{ operationclass }}\">\n    <div class=\"sider\" *ngIf=\"leftsider\">\n        <div class=\"titlebox\">\n            <div class=\"all\" [ngClass]=\"item == 0 ? 'li-active' : ''\" (click)=\"titles(0)\">\n                设备\n            </div>\n            <div class=\"duijiang\" [ngClass]=\"item == 1 ? 'li-active' : ''\" (click)=\"titles(1)\">\n                广播组\n            </div>\n        </div>\n        <div class=\"inputbox\" [style.display]=\"item == 0 ? 'block' : 'none'\">\n            <nz-input-group [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"inputClear\">\n                <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"userTree()\" />\n            </nz-input-group>\n            <ng-template #prefixTemplate><i nz-icon nzType=\"search\" class=\"icon\"></i\n    ></ng-template>\n    <ng-template #inputClear>\n      <div *ngIf=\"inputValue\" class=\"icon\">\n        <i\n          nz-icon\n          nzType=\"close-circle\"\n          nzTheme=\"outline\"\n          (click)=\"userempty()\"\n        ></i>\n        </div>\n        </ng-template>\n    </div>\n    <div class=\"inputbox\" [style.display]=\"item == 1 ? 'block' : 'none'\">\n        <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\n            <input type=\"text\" nz-input [(ngModel)]=\"value\" (keyup.enter)=\"searchTree()\" />\n        </nz-input-group>\n        <ng-template #prefixTemplateUser><i nz-icon nzType=\"search\" class=\"icon\"></i\n    ></ng-template>\n    <ng-template #inputClearTpl>\n      <div *ngIf=\"value\" class=\"icon\">\n        <i\n          nz-icon\n          nzType=\"close-circle\"\n          nzTheme=\"outline\"\n          (click)=\"empty()\"\n          class=\"icon\"\n        ></i>\n    </div>\n    </ng-template>\n</div>\n<div class=\"navbox\">\n    <div [style.display]=\"item == 0 ? 'block' : 'none'\" class=\"tree\">\n        <app-equipmenttree [eqipmentValue]=\"inputValue\" [eqipmenttype]=\"eqipmenttype\" [transfertype]=\"transfertype\" (outer)=\"groupParent($event)\"></app-equipmenttree>\n    </div>\n    <div [style.display]=\"item == 1 ? 'block' : 'none'\" class=\"talkbackboxs\">\n        <div class=\"talkbackbox\">\n            <div class=\"branch\">\n                <i nz-icon nzType=\"caret-right\" nzTheme=\"outline\" [style.display]=\"branch == false ? 'block' : 'none'\" (click)=\"branch = true\"></i>\n                <i nz-icon nzType=\"caret-down\" nzTheme=\"outline\" (click)=\"branch = false\" [style.display]=\"branch == true ? 'block' : 'none'\"></i>\n            </div>\n            <div class=\"talkback\">广播组</div>\n            <div class=\"addIntercomgGroup\">\n                <i nz-icon nzType=\"plus-square\" nzTheme=\"outline\" (click)=\"intercom(2)\"></i>\n            </div>\n        </div>\n        <div *ngIf=\"grouptype == '1'\">\n            <div class=\"talkbacklist\" [style.display]=\"branch == true ? 'block' : 'none'\">\n                <div *ngFor=\"let item of broadcastGroupList; let i = index\">\n                    <div class=\"bofangbox\" (contextmenu)=\"test($event, item)\" #context (dblclick)=\"intercom(1, item)\">\n                        <div class=\"intercomteam\">\n                            <img src=\"assets/img/intercomteam_01.png\" alt=\"\" *ngIf=\"item.status == 0\" />\n                            <img src=\"assets/img/intercomteam_02.png\" alt=\"\" *ngIf=\"item.status == 1\" />\n                        </div>\n                        <div class=\"itemtext\">{{ item.broadcastName }}</div>\n                        <div class=\"play\">\n                            <div class=\"nav\">\n                                <div class=\"message\">\n                                    <div class=\"intercomstart\" *ngIf=\"item.status == 0\" (click)=\"begin(item)\"></div>\n                                    <div class=\"intercomclose\" *ngIf=\"item.status == 1\" (click)=\"begin(item)\"></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div *ngIf=\"grouptype == '2'\" class=\"searching\">未检索的到广播组</div>\n    </div>\n</div>\n</div>\n<div [style.display]=\"content == 0 ? 'block' : 'none'\" class=\"select\">\n    <div class=\"designation\">\n        <div class=\"menu\" (click)=\"sider()\">\n            <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\n      ><i\n        nz-icon\n        nzType=\"menu-unfold\"\n        nzTheme=\"outline\"\n        *ngIf=\"!leftsider\"\n      ></i>\n        </div>\n        <div style=\"margin-left: 10px; width: 100px\">广播组</div>\n        <div class=\"add\">\n            <span (click)=\"addgroup()\" class=\"addgroup\">选择广播组</span>\n        </div>\n    </div>\n    <div class=\"intercomgroup\">\n        <div class=\"group\">\n            <ng-container *ngFor=\"let item of selectlist; trackBy: trackByIndex\">\n                <div *ngIf=\"item.groupshow\">\n                    <app-broadcasthandle (dblclick)=\"intercom(1, item)\" [broadcastdata]=\"item\"></app-broadcasthandle>\n                </div>\n            </ng-container>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n            <div class=\"placeholder\"></div>\n        </div>\n    </div>\n    <div style=\"display:block;\">\n        <ng-container *ngFor=\"let item of broadcastGroupList; trackBy: trackByIndex\">\n            <app-broadcastlocality [broadcastdata]=\"item\"></app-broadcastlocality>\n        </ng-container>\n    </div>\n</div>\n<div [style.display]=\"content == 1 ? 'block' : 'none'\" class=\"select\">\n    <div class=\"designation\">\n        <div class=\"menu\" (click)=\"sider()\">\n            <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\n      ><i\n        nz-icon\n        nzType=\"menu-unfold\"\n        nzTheme=\"outline\"\n        *ngIf=\"!leftsider\"\n      ></i>\n        </div>\n        <div style=\"margin-left: 10px; width: 100px\">\n            {{ designation }}\n        </div>\n        <div class=\"exitbox\">\n            <div (click)=\"intercom(0)\" class=\"quit\">退出</div>\n            <div (click)=\"kick()\" class=\"kick\">踢出</div>\n        </div>\n    </div>\n    <div class=\"intercomgroup\">\n        <div class=\"userbox\">\n            <div class=\"add\" (click)=\"addUser()\">\n                <div class=\"addimg\"></div>\n            </div>\n            <div *ngFor=\"let items of showlist\">\n                <div class=\"itembox\">\n                    <div class=\"itemtypebox\">\n                        <div class=\"itembgc\" [ngClass]=\"{\n                itembgchui: items.devStatus == '0',\n                itembgclan: items.devStatus == '1',\n                itembgcgreen: items.devStatus == '2'\n              }\">\n                            <img src=\"assets/img/head.png \" alt=\" \" class=\"imghead\" />\n                        </div>\n                        <div class=\"itemvoice\">\n                            <img src=\"assets/img/话筒_开.png \" alt=\" \" />\n                        </div>\n                        <div class=\"itemcellphone\">\n                            <img src=\"assets/img/type_android.png \" alt=\" \" *ngIf=\"items.userType == '1'\" />\n                            <img src=\"assets/img/type_pc.png \" alt=\" \" *ngIf=\"items.userType == '2'\" />\n                            <img src=\"assets/img/type_IPC.png \" alt=\" \" *ngIf=\"items.userType == '3'\" />\n                            <img src=\"assets/img/type_DB.png \" alt=\" \" *ngIf=\"items.userType == '4'\" />\n                        </div>\n                        <div class=\"circle\" (click)=\"andrs(items)\" *ngIf=\"items.userName != '本机'\">\n                            <img src=\"../../../../../assets/img/对号.png \" alt=\" \" *ngIf=\"items.show\" />\n                        </div>\n                    </div>\n                    <div class=\"itemnav\">\n                        {{ items.userName }}\n                    </div>\n                    <div class=\"electric\">\n                        <div>\n                            <img src=\"assets/img/netstatus_outline.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 0\" />\n                            <img src=\"assets/img/netstatus_1.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 1\" />\n                            <img src=\"assets/img/netstatus_2.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 2\" />\n                            <img src=\"assets/img/netstatus_3.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 3\" />\n                            <img src=\"assets/img/netstatus_4.png \" alt=\" \" class=\"netstatusoutline\" *ngIf=\"items.netStatus == 4\" />\n                        </div>\n                        <div>\n                            <img src=\"assets/img/electricity_outline.png \" alt=\" \" *ngIf=\"items.electricity == 0\" />\n                            <img src=\"assets/img/electricity_1.png \" alt=\" \" *ngIf=\"items.electricity == 1\" />\n                            <img src=\"assets/img/electricity_2.png \" alt=\" \" *ngIf=\"items.electricity == 2\" />\n                            <img src=\"assets/img/electricity_3.png \" alt=\" \" *ngIf=\"items.electricity == 3\" />\n                            <img src=\"assets/img/electricity_4.png \" alt=\" \" *ngIf=\"items.electricity == 4\" />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div *ngIf=\"addmember\">\n        <app-addbroadcast (outer)=\"addruntemporary($event)\" [userlist]=\"userlist\" [devlist]=\"devlist\" [userListtype]=\"userListtype\" [list]=\"list\"></app-addbroadcast>\n    </div>\n</div>\n<div [style.display]=\"content == 2 ? 'block ' : 'none '\" class=\"select\">\n    <div class=\"creactbox\">\n        <div class=\"creact\">\n            <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\" (click)=\"sider()\"></i\n      ><i\n        nz-icon\n        nzType=\"menu-unfold\"\n        nzTheme=\"outline\"\n        *ngIf=\"!leftsider\"\n        (click)=\"sider()\"\n      ></i>\n        </div>\n        <div style=\"margin-left: 10px; line-height: 50px\">创建广播组:</div>\n    </div>\n    <div class=\"memberbox\">\n        <div class=\"Groupname\">\n            <div class=\"textname groupDesignation\">组名称:</div>\n            <div>\n                <input [(ngModel)]=\"broadcastName\" class=\"bgc val\" />\n            </div>\n        </div>\n        <div class=\"Groupname\">\n            <div class=\"textname\">成员:</div>\n            <div class=\"memberlist bgc\">\n                <div class=\"membernav\">{{ adduserpersonnel }}</div>\n                <div class=\"personnel\">\n                    <button (click)=\"addPersonnels()\">设备管理</button>\n                </div>\n            </div>\n        </div>\n        <div class=\"Groupname\">\n            <div class=\"textname\">描述:</div>\n            <div>\n                <textarea rows=\"4 \" [(ngModel)]=\"describe\" class=\"bgc\" maxlength=\"25 \" style=\"width: 600px; resize: none\"></textarea>\n            </div>\n        </div>\n        <div style=\"height: 120px\"></div>\n        <div class=\"confirm\">\n            <button (click)=\"confirmpersonnel()\">确定</button>\n            <button (click)=\"intercom(0)\">取消</button>\n        </div>\n    </div>\n    <div *ngIf=\"addpersonnel\">\n        <!-- 添加人员 -->\n        <app-addbroadcast (outer)=\"addrunParent($event)\" [alreadymember]=\"memListID\" [devlist]=\"devlist\" [userListtype]=\"userListtype\" [list]=\"list\"></app-addbroadcast>\n    </div>\n</div>\n</div>\n<div class=\"kongbai\" #kongbai style=\"position: absolute; top: 0; left: 0; z-index: 1000\" [style.display]=\"kongshow ? 'block ' : 'none '\">\n    <div (click)=\"enter()\" *ngIf=\"broadcastitem.status == 0\">开启广播组</div>\n    <div (click)=\"occlude()\" *ngIf=\"broadcastitem.status == 1\">关闭广播组</div>\n    <div (click)=\"deletebroadcast()\">删除</div>\n</div>\n<div *ngIf=\"hint\">\n    <app-hint (outer)=\"runParentinit($event)\" [hinttype]=\"hinttype\"></app-hint>\n</div>\n<div *ngIf=\"select\">\n    <app-select-broadcast (outer)=\"selectgroup($event)\"></app-select-broadcast>\n</div>","import {\n  Component,\n  Input,\n  OnInit,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n} from '@angular/core';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { WebService } from '../protocol/rtc/web.service';\nimport { OverallService } from '../common/overall.service';\n\n@Component({\n  selector: 'app-warning',\n  templateUrl: './warning.component.html',\n  styleUrls: ['./warning.component.less'],\n})\nexport class WarningComponent implements OnInit {\n  warninglist: any = [\n    // {\n    //   name: '名字',\n    //   mingcheng: '名称',\n    //   timer: '2023-4-10',\n    //   jibie: '级别',\n    //   canshu: '参数',\n    //   zhuangtai: '状态',\n    // },\n  ];\n  @Input() broadside: any;\n  inputValue: any = '';\n  userlist: any = [];\n  rootname: any = '';\n  shows: boolean = true;\n  userName: any = '';\n  datatimer: any = null;\n  startTime: any = '';\n  endTime: any = '';\n  offset = 0;\n  page: number = 0; //第几页\n  count: number = 20; //页的大小\n  total: number = 0; //总数量\n  totalpages: number = 0; ///总共有几页\n  videosrc: any = '';\n  videobox: boolean = false;\n  operationclass = 'content';\n  cutlist = 'list';\n  cuttype = 'all';\n  checked = false;\n  indeterminate = false;\n  subscription: any;\n  leftsider: any;\n  lastComponentPosition = 0;\n  grade = '全部';\n  warning = '全部';\n  warningname = '';\n  uservalue: any = '';\n  constructor(\n    private rx: RxService,\n    private ws: WebService,\n    private sendService: OverallService\n  ) {\n    this.subscription = this.sendService.sendsider$.subscribe((message) => {\n      this.leftsider = message;\n    });\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.broadside) {\n      if (this.broadside == false) {\n        this.operationclass = 'content';\n      } else if (this.broadside == true) {\n        this.operationclass = 'sidebar';\n      }\n    }\n  }\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let resultdata = nav.resultData;\n      if (nav.fileCount) {\n        this.total = nav.fileCount;\n        this.totalpages = Math.ceil(this.total / this.count); ///总共有几页\n      }\n      switch (respcmdid) {\n        case state.OWO_CMD_GET_MEMLIST + 1:\n          this.userlist = resultdata.childs;\n          this.rootname = resultdata.root;\n          break;\n        default:\n          break;\n      }\n    });\n  }\n  sider() {\n    this.leftsider = !this.leftsider;\n    this.sendService.sendsider(this.leftsider);\n    this.rx.gainList(); \n  }\n  allcheck(ev: any) {\n    this.indeterminate = false;\n    if (this.checked == true) {\n      this.warninglist = this.warninglist.map((item: any) => ({\n        ...item,\n        checked: true,\n      }));\n    } else {  \n      this.warninglist = this.warninglist.map((item: any) => ({\n        ...item,\n        checked: false,\n      }));\n    }\n  }\n  updateSingleChecked(): void {\n    if (this.warninglist.every((item: any) => !item.checked)) {\n      this.checked = false;\n      this.indeterminate = false;\n    } else if (this.warninglist.every((item: any) => item.checked)) {\n      this.checked = true;\n      this.indeterminate = false;\n    } else {\n      this.indeterminate = true;\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  search(ev: any) {\n    this.userName = ev.userName;\n  }\n  changes(result: any): void {\n    for (let i = 0; i < result.length; i++) {\n      this.startTime = this.time(result[0]);\n      this.endTime = this.time(result[1]);\n    }\n  }\n  time(timer: any) {\n    var date = new Date(timer);\n    return (\n      date.getFullYear() +\n      '-' +\n      (date.getMonth() + 1) +\n      '-' +\n      date.getDate() +\n      ' ' +\n      this.checkTime(date.getHours()) +\n      ':' +\n      this.checkTime(date.getMinutes()) +\n      ':' +\n      this.checkTime(date.getSeconds())\n    );\n    //最后显示yyyy-MM-dd hh:mm:ss\n  }\n  checkTime(i: any) {\n    if (i < 10) {\n      i = '0' + i;\n    }\n    return i;\n  }\n  // 重置\n  reset() {\n    this.datatimer = null;\n    this.userName = '';\n    this.total = 0;\n    this.warninglist = [];\n    this.page = 0;\n    this.offset = 0;\n    this.totalpages = 0;\n    this.grade = '全部';\n    this.warning = '全部';\n  }\n  // 查询\n  inquire() {\n    this.rx.testGetStoreFileCount(this.userName, this.startTime, this.endTime);\n    this.inquirelist();\n    this.page = 1;\n    this.checked = false;\n  }\n  inquirelist() {\n    this.rx.testGetStoreFileList(\n      this.userName,\n      this.startTime,\n      this.endTime,\n      this.offset,\n      this.count\n    );\n  }\n  //点击前一个\n  prePage() {\n    if (this.page > 1) {\n      //page减1让\n      this.page--;\n      this.offset -= this.count;\n      this.inquirelist();\n    }\n  }\n  //点击后一个\n  nextPage() {\n    //判断是否小于最大页数\n    if (this.page < this.totalpages) {\n      this.page++;\n      this.offset += this.count;\n      this.inquirelist();\n    }\n  }\n  close() {\n    this.videobox = false;\n  }\n  cutpattern(ev: any) {\n    this.cutlist = ev;\n  }\n  cuttypes(ev: any) {\n    this.cuttype = ev;\n  }\n  tree(ev: any) {\n    this.userName = ev.data;\n  }\n  searchTree() {\n    this.uservalue = this.inputValue;\n  }\n  empty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n}\n","<div class=\"box\" class=\"{{ operationclass }}\">\r\n    <div class=\"sider\" [style.display]=\"leftsider? 'block' : 'none'\">\r\n        <div class=\"title\">\r\n            <div class=\"all active\">用户</div>\r\n        </div>\r\n        <div class=\"search\">\r\n            <nz-input-group [nzPrefix]=\"prefixTemplateUser\" [nzSuffix]=\"inputClearTpl\">\r\n                <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"searchTree()\" />\r\n            </nz-input-group>\r\n            <ng-template #prefixTemplateUser>\r\n                <i nz-icon nzType=\"search\" class=\"icon\"></i>\r\n            </ng-template>\r\n            <ng-template #inputClearTpl>\r\n                <div *ngIf=\"inputValue\" class=\"icon\">\r\n                    <i nz-icon nzType=\"close-circle\" nzTheme=\"outline\" (click)=\"empty()\"></i>\r\n                </div>\r\n            </ng-template>\r\n        </div>\r\n        <div class=\"tree\">\r\n            <app-inquire-tree (outer)=\"tree($event)\" [uservalue]=\"uservalue\"></app-inquire-tree>\r\n        </div>\r\n    </div>\r\n    <div class=\"select\">\r\n        <div class=\"selectbox\">\r\n            <div class=\"menu\" (click)=\"sider()\">\r\n                <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" *ngIf=\"leftsider\"></i\r\n      ><i\r\n        nz-icon\r\n        nzType=\"menu-unfold\"\r\n        nzTheme=\"outline\"\r\n        *ngIf=\"!leftsider\"    \r\n      ></i>\r\n            </div>\r\n            <div style=\"margin-left: 10px; width: 100px;line-height: 50px\">告警</div>\r\n        </div>\r\n        <div class=\"inquirelist\">\r\n            <div class=\"addperson\">\r\n                <div class=\"username\">\r\n                    <div class=\"nametitle\">查询对象:</div>\r\n                    <div>\r\n                        <input nz-input placeholder=\"请选择查询对象\" [(ngModel)]=\"userName\" />\r\n                    </div>\r\n                </div>\r\n                <div class=\"username\">\r\n                    <div class=\"nametitle\">告警名称:</div>\r\n                    <div>\r\n                        <input nz-input placeholder=\"请输入告警名称\" [(ngModel)]=\"warningname\" />\r\n                    </div>\r\n                </div>\r\n                <div class=\"inquiretimer\">\r\n                    <nz-range-picker [(ngModel)]=\"datatimer\" (ngModelChange)=\"changes($event)\" nzShowTime></nz-range-picker>\r\n                </div>\r\n                <div class=\"grade\">\r\n                    <div class=\"nametitle\"> 级别:</div>\r\n                    <nz-select [(ngModel)]=\"grade\" nzAllowClear nzPlaceHolder=\"请选择\">\r\n                        <nz-option nzValue=\"全部\" nzLabel=\"全部\"></nz-option>\r\n                        <nz-option nzValue=\"提示告警\" nzLabel=\"提示告警\"></nz-option>\r\n                        <nz-option nzValue=\"一般告警\" nzLabel=\"一般告警\"></nz-option>\r\n                        <nz-option nzValue=\"严重告警\" nzLabel=\"严重告警\"></nz-option>\r\n                    </nz-select>\r\n                </div>\r\n                <div class=\"grade\">\r\n                    <div class=\"nametitle\"> 状态:</div>\r\n                    <nz-select [(ngModel)]=\"warning\" nzAllowClear nzPlaceHolder=\"请选择\">\r\n                        <nz-option nzValue=\"全部\" nzLabel=\"全部\"></nz-option>\r\n                        <nz-option nzValue=\"告警\" nzLabel=\"告警\"></nz-option>\r\n                        <nz-option nzValue=\"恢复\" nzLabel=\"恢复\"></nz-option>\r\n                    </nz-select>\r\n                </div>\r\n                <div class=\"inquirebuttonbox\">\r\n                    <button class=\"inquirebutton\" (click)=\"inquire()\">查询</button>\r\n                    <button (click)=\"reset()\" class=\"resetbutton\">重置</button>\r\n                </div>\r\n            </div>\r\n            <div class=\"listbox\" *ngIf=\"cutlist == 'list'\">\r\n                <table class=\"listtable\">\r\n                    <tr>\r\n                        <td> <label nz-checkbox [(ngModel)]=\"checked\" [nzIndeterminate]=\"indeterminate\" (ngModelChange)=\"allcheck($event)\"></label></td>\r\n                        <td>用户</td>\r\n                        <td>告警名称</td>\r\n                        <td>告警时间</td>\r\n                        <td>告警级别</td>\r\n                        <td>告警参数</td>\r\n                        <td>告警状态</td>\r\n                        <td>操作</td>\r\n                    </tr>\r\n                    <tr *ngFor=\"let item of warninglist; let i = index\">\r\n                        <td><label nz-checkbox [(ngModel)]=\"item.checked\" (ngModelChange)=\"updateSingleChecked()\"></label></td>\r\n                        <td>{{ item.name }}</td>\r\n                        <td>{{ item.mingcheng }}</td>\r\n                        <td>{{ item.timer }}</td>\r\n                        <td>{{ item.jibie }}</td>\r\n                        <td>{{ item.canshu }}</td>\r\n                        <td>{{ item.zhuangtai }}</td>\r\n                        <td>查看</td>\r\n                    </tr>\r\n                </table>\r\n            </div>\r\n        </div>\r\n        <div class=\"fenyebox\">\r\n            <span>总数量:{{total}}</span>\r\n            <span (click)=\"prePage()\" class=\"prePage\">上一页</span>\r\n            <span>{{ page }}/{{ totalpages }}</span>\r\n            <span (click)=\"nextPage()\" class=\"nextPage\">下一页</span>\r\n        </div>\r\n    </div>\r\n</div>\r\n<div class=\"videobox\">\r\n    <div #container class=\"container\"></div>\r\n</div>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-information',\n  templateUrl: './information.component.html',\n  styleUrls: ['./information.component.less'],\n})\nexport class InformationComponent implements OnInit {\n  options1: any;\n  options2: any;\n  options3: any;\n  options4: any;\n  fullscreen: boolean = false;\n  isFullscreen = false;\n  constructor() {}\n\n  ngOnInit() {\n    this.data();\n  }\n  data() {\n    this.options1 = {\n      xAxis: {\n        type: 'category',\n        data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月'],\n      },\n      yAxis: {\n        type: 'value',\n      },\n      series: [\n        {\n          data: [150, 230, 224, 218, 135, 147, 260],\n          type: 'line',\n        },\n      ],\n    };\n    this.options2 = {\n      xAxis: {\n        type: 'category',\n        data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月'],\n      },\n      yAxis: {\n        type: 'value',\n      },\n      series: [\n        {\n          data: [120, 200, 150, 80, 70, 110, 130],\n          type: 'bar',\n        },\n      ],\n    };\n    this.options3 = {\n      tooltip: {\n        trigger: 'item',\n      },\n      legend: {\n        top: '5%',\n        left: 'center',\n      },\n      series: [\n        {\n          name: 'Access From',\n          type: 'pie',\n          radius: ['40%', '70%'],\n          avoidLabelOverlap: false,\n          itemStyle: {\n            borderRadius: 10,\n            borderColor: '#fff',\n            borderWidth: 2,\n          },\n          label: {\n            show: true,\n            position: 'inside',\n          },\n          emphasis: {\n            label: {\n              show: true,\n              fontSize: 40,\n              fontWeight: 'bold',\n            },\n          },\n          labelLine: {\n            show: false,\n          },\n          data: [\n            { value: 1048, name: '音频' },\n            { value: 735, name: '对讲' },\n            { value: 580, name: '视频' },\n            { value: 484, name: '告警' },\n            { value: 300, name: '会议' },\n          ],\n        },\n      ],\n    };\n    this.options4 = {\n      xAxis: {},\n      yAxis: {},\n      series: [\n        {\n          symbolSize: 20,\n          data: [\n            [10.0, 8.04],\n            [8.07, 6.95],\n            [13.0, 7.58],\n            [9.05, 8.81],\n            [11.0, 8.33],\n            [14.0, 7.66],\n            [13.4, 6.81],\n            [10.0, 6.33],\n            [14.0, 8.96],\n            [12.5, 6.82],\n            [9.15, 7.2],\n            [11.5, 7.2],\n            [3.03, 4.23],\n            [12.2, 7.83],\n            [2.02, 4.47],\n            [1.05, 3.33],\n            [4.05, 4.96],\n            [6.03, 7.24],\n            [12.0, 6.26],\n            [12.0, 8.84],\n            [7.08, 5.82],\n            [5.02, 5.68],\n          ],\n          type: 'scatter',\n        },\n      ],\n    };\n  }\n  cutdata() {\n    this.options1 = {\n      xAxis: {\n        type: 'category',\n        data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月'],\n      },\n      yAxis: {\n        type: 'value',\n      },\n      series: [\n        {\n          data: [820, 932, 901, 934, 1290, 1330, 1320],\n          type: 'line',\n          smooth: true,\n        },\n      ],\n    };\n    this.options2 = {\n      xAxis: {\n        type: 'category',\n        data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月'],\n      },\n      yAxis: {\n        type: 'value',\n      },\n      series: [\n        {\n          data: [\n            120,\n            {\n              value: 200,\n              itemStyle: {\n                color: '#a90000',\n              },\n            },\n            150,\n            80,\n            70,\n            110,\n            130,\n          ],\n          type: 'bar',\n        },\n      ],\n    };\n    this.options3 = {\n      title: {\n        text: 'Referer of a Website',\n        subtext: 'Fake Data',\n        left: 'center',\n      },\n      tooltip: {\n        trigger: 'item',\n      },\n      legend: {\n        orient: 'vertical',\n        left: 'left',\n      },\n      series: [\n        {\n          name: 'Access From',\n          type: 'pie',\n          radius: '50%',\n          data: [\n            { value: 1048, name: '音频' },\n            { value: 735, name: '对讲' },\n            { value: 580, name: '视频' },\n            { value: 484, name: '告警' },\n            { value: 300, name: '会议' },\n          ],\n          emphasis: {\n            itemStyle: {\n              shadowBlur: 10,\n              shadowOffsetX: 0,\n              shadowColor: 'rgba(0, 0, 0, 0.5)',\n            },\n          },\n        },\n      ],\n    };\n    this.options4 = {\n      xAxis: {},\n      yAxis: {},\n      series: [\n        {\n          symbolSize: 20,\n          data: [\n            [10.0, 8.04],\n            [8.07, 6.95],\n            [13.0, 7.58],\n            [9.05, 8.81],\n            [11.0, 8.33],\n            [14.0, 7.66],\n            [13.4, 6.81],\n            [10.0, 6.33],\n            [14.0, 8.96],\n            [12.5, 6.82],\n            [9.15, 7.2],\n            [11.5, 7.2],\n            [3.03, 4.23],\n            [12.2, 7.83],\n            [2.02, 4.47],\n            [1.05, 3.33],\n            [4.05, 4.96],\n            [6.03, 7.24],\n            [12.0, 6.26],\n            [12.0, 8.84],\n            [7.08, 5.82],\n            [5.02, 5.68],\n          ],\n          type: 'scatter',\n        },\n      ],\n    };\n  }\n  close() {\n    this.fullscreen = false;\n    this.closeScreen();\n  }\n  screen() {\n    this.fullscreen = true;\n    this.fullScreen();\n  }\n  fullScreen(elem: any = document.documentElement): void {\n    if (!document.fullscreenElement) {\n      const docElm = elem;\n      if (docElm.requestFullscreen) {\n        docElm.requestFullscreen();\n        this.isFullscreen = true;\n      } else if (docElm.mozRequestFullscreen) {\n        docElm.mozRequestFullscreen();\n        this.isFullscreen = true;\n      } else if (docElm.webkitRequestFullscreen) {\n        docElm.webkitRequestFullscreen();\n        this.isFullscreen = true;\n      } else if (docElm.msRequestFullscreen) {\n        docElm.msRequestFullscreen();\n        this.isFullscreen = true;\n      }\n    }\n  }\n  closeScreen(elem: any = document.documentElement): void {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n      this.isFullscreen = false;\n      this.fullscreen = false;\n    }\n  }\n}\n","<!-- <p>数据</p> -->\r\n<div class=\"box\">\r\n    <div class=\"title\">\r\n        <div class=\"pege\" (click)=\"data()\">第一页</div>\r\n        <div class=\"pege\" (click)=\"cutdata()\">第二页</div>\r\n        <div class=\"pege\" (click)=\"screen()\">全屏查看</div>\r\n    </div>\r\n    <div class=\"centet\">\r\n        <div echarts [options]=\"options1\" class=\"demo\"></div>\r\n        <div echarts [options]=\"options2\" class=\"demo\"></div>\r\n        <div echarts [options]=\"options3\" class=\"demo\"></div>\r\n        <div echarts [options]=\"options4\" class=\"demo\"></div>\r\n    </div>\r\n</div>\r\n<div class=\"screen\" *ngIf=\"fullscreen\">\r\n    <div class=\"close\"> <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"closeScreen()\"></i></div>\r\n    <div class=\"nav\">\r\n        <div echarts [options]=\"options1\" class=\"demo\"></div>\r\n        <div echarts [options]=\"options2\" class=\"demo\"></div>\r\n        <div echarts [options]=\"options3\" class=\"demo\"></div>\r\n        <div echarts [options]=\"options4\" class=\"demo\"></div>\r\n    </div>\r\n</div>","import { Component, OnInit, Input ,Output,EventEmitter} from '@angular/core';\nimport { AvService } from '../../protocol/rtc/av.service';\n@Component({\n  selector: 'app-timer',\n  templateUrl: './timer.component.html',\n  styleUrls: ['./timer.component.less'],\n})\nexport class TimerComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() reminder: any;\n  str: any;\n  s: any = 0;\n  m: any = 0;\n  h: any = 0;\n  interval: any;\n  constructor(private AV: AvService) {}\n\n  ngOnInit(): void {\n    this.reset();\n  }\n  timer = () => {\n    //定义计时函数\n    this.s++;\n    if (this.s >= 60) {\n      if (this.reminder) {\n        // this.AV.delete({dialogID:this.reminder.cmschat.dialogID});\n        clearInterval(this.interval);\n        this.outer.emit(this.reminder);\n      }\n      this.s = 0;\n      this.m = this.m + 1; //分钟\n    }\n    if (this.m >= 60) {\n      this.m = 0;\n      this.h = this.h + 1; //小时\n    }\n    this.str =\n      this.toDub(this.h) +\n      ':' +\n      this.toDub(this.m) +\n      ':' +\n      this.toDub(this.s) +\n      '';\n  };\n  toDub(n: any) {\n    //补0操作\n    if (n < 10) {\n      return '0' + n;\n    } else {\n      return '' + n;\n    }\n  }\n  reset() {\n    this.h = 0;\n    this.m = 0;\n    this.s = 0;\n    this.str = '00:00:00';\n    this.interval = setInterval(this.timer, 1000);\n  }\n  ngOnDestroy() {\n    // console.log('关闭组件');\n    this.h = 0;\n    this.m = 0;\n    this.s = 0;\n    this.str = '00:00:00';\n    clearInterval(this.interval);\n  }\n}\n","<p>{{str}}</p>","import {\n  Component,\n  Input,\n  OnInit,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n  EventEmitter,\n  Output,\n} from '@angular/core';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { AvService } from '../../protocol/rtc/av.service';\n@Component({\n  selector: 'app-voice',\n  templateUrl: './voice.component.html',\n  styleUrls: ['./voice.component.less'],\n})\nexport class VoiceComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @ViewChild('remotesaudio') remotesaudio?: any;\n  // @Input() voicenav: any;\n  pcPeer: any = null;\n  localStream: any = null;\n  channelID: any = '';\n  dialogID: any = '';\n  userName: any = '';\n  maintainstate = false;\n  _voicenav: any;\n  audioMeetID: any;\n  cutmeetingshow = false;\n  @Input()\n  set voicenav(value: any) {\n    this._voicenav = value;\n    this.dialogID = this._voicenav.cmschat.dialogID;\n    this.channelID = this._voicenav.cmschat.SSRC;\n    this.userName = this._voicenav.userName;\n    if (this._voicenav.cmschat.audioMeetID) {\n      this.audioMeetID = this._voicenav.cmschat.audioMeetID;\n    }\n    this.voice();\n  }\n  get voicenav(): any {\n    return this._voicenav;\n  }\n  constructor(\n    private rx: RxService,\n    private ws: WebService,\n    private AV: AvService\n  ) {\n    const configuration = {};\n    this.pcPeer = new RTCPeerConnection(configuration);\n  }\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let resultdata = nav.resultData;\n      let that = this;\n      switch (cmdid) {\n        case state.OWO_CMD_CHAT_CLOSE: {\n          if (nav.cmdBody.dialogID == this.dialogID) {\n            this.quit();\n          }\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_STOP: {\n          if (nav.cmdBody.audioMeetID == this.audioMeetID) {\n            this.rx.gainAudioConference();\n            this.quitaudio();\n          }\n          break;\n        }\n        case state.OWO_CMD_EVENT_NOTIFY: {\n          if (nav.cmdBody.eventParam.dialogID == this.dialogID) {\n            if (nav.cmdBody.eventParam.status == 0) {\n              if (this._voicenav.phonetype == '5') {\n                this.quit();\n                this.AV.monitorsider(this._voicenav.userName);\n              } else if (\n                this._voicenav.phonetype == '6' ||\n                this._voicenav.phonetype == '1'\n              ) {\n                // 删除名字\n                let data:any = this.voicenav.userName.split(',');\n                let datalist =  data.filter((x:any) => x !== nav.cmdBody.eventSource);\n                this.AV.overridesider({delete:nav.cmdBody.eventSource})\n                let name = '';\n                for (let i = 0; i < datalist.length; i++) {\n                  if (i == 0) {\n                    name = name + datalist[i];\n                  } else {\n                    name = name + ',' + datalist[i];\n                  }\n                }\n                this.voicenav.userName = name;\n              }\n            } else if (nav.cmdBody.eventParam.status == '2') {\n              //添加名字 eventSource\n              let data = this.voicenav.userName + ',' + nav.cmdBody.eventSource;\n              let datalist: any = [...new Set(data.split(','))];\n              this.AV.overridesider({add:datalist})\n              let name = '';\n              for (let i = 0; i < datalist.length; i++) {\n                if (i == 0) {\n                  name = name + datalist[i];\n                } else {\n                  name = name + ',' + datalist[i];\n                }\n              }\n              this.voicenav.userName = name;\n            }\n          }\n          break;\n        }\n      }\n      switch (respcmdid) {\n        case state.OWO_CMD_AUDIOMEET_JOIN + 1: {\n          if (resultdata.audioMeetID == this.audioMeetID) {\n            const configuration = {};\n            this.pcPeer = new RTCPeerConnection(configuration);\n            this.voice();\n            this._voicenav.openshow = true;\n            this.maintainstate = false;\n            this.AV.clearmeetingactive();\n            this.voicenav.active = true;\n          }\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_EXIT + 1: {\n          // console.log('退出成功');\n          if (resultdata.audioMeetID == this.audioMeetID) {\n            this.clearstream();\n            this._voicenav.openshow = false;\n            this.maintainstate = true;\n          }\n          break;\n        }\n        case state.OWO_CMD_CHAT_REQUEST + 1: {\n          if (resultdata.dstID == this.userName) {\n            this.dialogID = resultdata.dialogID;\n          }\n          break;\n        }\n        case state.OWO_CMD_AUDIOMEET_STOP + 1: {\n          if (resultdata.audioMeetID == this.audioMeetID) {\n            this.rx.gainAudioConference();\n            this.quitaudio();\n          }\n          break;\n        }\n        case state.OWO_CMD_RTC_OFFER + 1: {\n          // console.log(nav);\n          if (resultdata.channelID == this.channelID) {\n            that.remoteAnswer(nav);\n          }\n          break;\n        }\n        case state.OWO_CMD_CHAT_CLOSE+1: {\n          if (nav.resultData.dstID == this._voicenav.cmschat.dstID) {\n            this.quit();\n          }\n          break;\n        }\n        default:\n      }\n    });\n  }\n  voice = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: false,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          \n          // video标签的srcObject\n          that.localStream = stream;\n          that.call();\n        })\n        .catch(this.handleError);\n    }\n  };\n  call = () => {\n    this.pcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.localStream.getTracks().forEach((track: any) => {\n      this.pcPeer.addTrack(track, this.localStream);\n    });\n    this.pcPeer.onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.pcPeer.onconnection = function () {};\n    this.pcPeer.ondatachannel = (event: any) => {\n      console.log(event);\n    };\n    this.rx.sendOffer({ SDP: 'web client sdp', channelID: this.channelID });\n  };\n  remoteAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.pcPeer.setRemoteDescription(desc);\n    this.pcPeer.createAnswer().then((sdp: any) => {\n      this.gotDescription2(sdp);\n    });\n  };\n  gotDescription2 = (desc: any) => {\n    this.pcPeer.setLocalDescription(desc).then();\n  };\n  getRemoteSream = (e: any) => {\n    this.remotesaudio.nativeElement.srcObject = e.stream;\n  };\n  handleError(err: any) {\n    console.log(err);\n  }\n  voicequit() {\n    this.rx.initiativeCloseChat(this.dialogID);\n    this.quit();\n  }\n  // 退出\n  quit() {\n    // console.log('退出');\n    if (this.pcPeer) {\n      this.localStream.getTracks().forEach((track: any) => {\n        track.stop();\n      });\n      this.pcPeer.close();\n      this.pcPeer = null;\n    }\n    this.AV.deletechat(this._voicenav);\n    // this.voicenav = '';\n  }\n\n  cutmaintain() {\n    this.maintainstate = !this.maintainstate;\n  }\n  closeaudio() {\n    this.rx.closeAudioConference(this._voicenav.cmschat.audioMeetID);\n  }\n  quitaudio() {\n    this.clearstream();\n    this.AV.deletaudioemeeting(this._voicenav);\n  }\n  closeoverride() {\n    this.rx.initiativeCloseChat(this.dialogID);\n    this.quit();\n  }\n  monitorquit() {\n    this.AV.monitorsider(this._voicenav.userName);\n    this.rx.monitor(this._voicenav.cmschat.dialogID, '0');\n    this.quit();\n  }\n  clearstream() {\n    if (this.pcPeer) {\n      this.localStream.getTracks().forEach((track: any) => {\n        track.stop();\n      });\n      this.pcPeer.close();\n      this.pcPeer = null;\n    }\n  }\n  cutmeeting() {\n    // 进入退出音频会议\n    if (this.maintainstate == false) {\n      // 离开\n      this.rx.toquitAudioConference(this._voicenav.cmschat.audioMeetID);\n      this.maintainstate = true;\n    } else {\n      // 进入\n      if (this.AV.judgeopenmeeting() == true) {\n        this.cutmeetingshow = true;\n      } else {\n        this.rx.applytojoinAudioConference(this._voicenav.cmschat.audioMeetID);\n        this.maintainstate = false;\n      }\n    }\n  }\n  closecutmeeting(ev: any) {\n    this.cutmeetingshow = false;\n  }\n  skip() {\n    if (this.voicenav.phonetype == '3') {\n      // 音频会议双击\n      if (\n        this.AV.judgepresentmeeting(this.voicenav.cmschat.audioMeetID) == true\n      ) {\n        this.AV.cutmeettingpage(this.voicenav);\n        this.AV.clearmeetingactive();\n        this.voicenav.active = true;\n      } else {\n        if (this.AV.judgeopenmeeting() == true) {\n          this.cutmeetingshow = true;\n        } else {\n          this.AV.cutmeettingpage(this.voicenav);\n          this.AV.clearmeetingactive();\n          this.voicenav.active = true;\n        }\n      }\n    } else {\n      // 音频双击\n      this.AV.clearactive();\n      this.voicenav.active = true;\n    }\n  }\n}\n","<div class=\"box\" (dblclick)=\"skip()\">\n    <div>\n        <audio src=\"\" #remotesaudio autoplay></audio>\n    </div>\n    <div class=\"state\">\n        <img src=\"assets/img/语音_左侧_01.png\" alt=\"\" *ngIf=\"voicenav.phonetype=='1'\" />\n        <img src=\"assets/img/audiomeeting_01.png\" alt=\"\" *ngIf=\"voicenav.phonetype=='3'\" />\n        <img src=\"assets/img/语音_左侧_01.png\" alt=\"\" *ngIf=\"voicenav.phonetype=='5'\" />\n        <img src=\"assets/img/语音_左侧_01.png\" alt=\"\" *ngIf=\"voicenav.phonetype=='6'\" />\n    </div>\n    <div class=\"testname\">\n        <div class=\"test\" [ngClass]=\"maintainstate == true ? 'maintainactive' : ''\">{{ voicenav.userName }}</div>\n        <div class=\"test\">\n            <app-timer></app-timer>\n        </div>\n    </div>\n    <div class=\"maintain\" *ngIf=\"voicenav.phonetype=='1'\">\n        <span nz-icon nzType=\"pause\" nzTheme=\"outline\" *ngIf=\"maintainstate==false\" (click)=\"cutmaintain()\"></span>\n        <span nz-icon nzType=\"caret-right\" nzTheme=\"outline\" *ngIf=\"maintainstate==true\" (click)=\"cutmaintain()\"></span>\n    </div>\n    <div class=\"maintain\" *ngIf=\"voicenav.phonetype=='3'\">\n        <span nz-icon nzType=\"pause\" nzTheme=\"outline\" *ngIf=\"maintainstate==false\" (click)=\"cutmeeting()\"></span>\n        <span nz-icon nzType=\"caret-right\" nzTheme=\"outline\" *ngIf=\"maintainstate==true\" (click)=\"cutmeeting()\"></span>\n    </div>\n\n    <div class=\"remote\" *ngIf=\"voicenav.phonetype=='1'\">\n        <img src=\"assets/img/P2P_close.png\" alt=\"\" (click)=\"voicequit()\" />\n    </div>\n    <div class=\"remote\" *ngIf=\"voicenav.phonetype=='5'\">\n        <img src=\"assets/img/P2P_close.png\" alt=\"\" (click)=\"monitorquit()\" />\n    </div>\n    <div class=\"remote\" *ngIf=\"voicenav.phonetype=='3'&&voicenav.callout=='1'\">\n        <img src=\"assets/img/P2P_close.png\" alt=\"\" (click)=\"closeaudio()\" />\n    </div>\n    <div class=\"remote\" *ngIf=\"voicenav.phonetype=='6'\">\n        <img src=\" assets/img/P2P_close.png \" alt=\" \" (click)=\"closeoverride() \" />\n    </div>\n</div>\n<div class=\"cutmeeting \" *ngIf=\"cutmeetingshow \">\n    <app-cutmeeting (outer)=\"closecutmeeting($event) \" [voicenav]=\"_voicenav \"></app-cutmeeting>\n</div>","import {\n  Component, Input, OnInit, SimpleChange,\n  SimpleChanges\n} from '@angular/core';\nimport { AvService } from '../../protocol/rtc/av.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { WebService } from '../../protocol/rtc/web.service';\n@Component({\n  selector: 'app-video',\n  templateUrl: './video.component.html',\n  styleUrls: ['./video.component.less'],\n})\nexport class VideoComponent implements OnInit {\n  @Input() voicenav: any;\n  maintainstate = false;\n  dialogID: any = '';\n  cutmeetingshow = false\n  constructor(\n    private rx: RxService,\n    private ws: WebService,\n    private AV: AvService\n  ) {}\n\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let resultdata = nav.resultData;\n      switch (cmdid) {\n        case state.OWO_CMD_CHAT_CLOSE: {\n          if (nav.cmdBody.dialogID == this.dialogID) {\n            this.quit();\n          }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_STOP:{\n    \n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_CLOSE_VIDEO:{\n          if( nav.cmdBody.videoMeetID ==this.voicenav.cmschat.videoMeetID){\n            this.maintainstate = true;\n            this.voicenav.openshow = false\n          }\n          break;\n        }\n        default:\n      } \n       \n      switch(respcmdid){\n        case state.OWO_CMD_VIDEOMEET_EXIT + 1:{\n          if( resultdata.videoMeetID ==this.voicenav.cmschat.videoMeetID){\n        \n             this.maintainstate = true;\n             this.voicenav.openshow = false\n           }\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_JOIN + 1: {\n          // 进入视频会议\n          \n          if( resultdata.videoMeetID ==this.voicenav.cmschat.videoMeetID){\n     \n            this.maintainstate = false;\n            this.voicenav.openshow = true;\n            this.AV.clearmeetingactive()\n            this.voicenav.active = true\n            // this.AV.addvideomeeting(this.voicenav);\n            if(this.voicenav.callout==2){\n              this.AV.addvideomeeting(this.voicenav);\n            }\n          }\n         break;\n        }\n        default:\n      }\n    });\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.voicenav) {\n    \n      this.dialogID = this.voicenav.cmschat.dialogID;\n    }\n  }\n  cutmaintain() {\n    this.maintainstate = !this.maintainstate;\n  }\n  videoquit() {\n  \n    this.rx.initiativeCloseChat(this.dialogID);\n    this.quit();\n  }\n  quit() {\n    this.AV.deletechat(this.voicenav);\n  }\n  closemeeting() {\n    this.rx.closeVideoconFerence(this.voicenav.cmschat.videoMeetID);\n  }\n  cutmeeting(){\n    if (this.maintainstate == false) {\n      // 离开\n      this.rx.applyforQuitVideoPush(this.voicenav.cmschat.videoMeetID);\n      this.maintainstate = true;\n    } else {\n      // 进入\n      if(this.AV.judgeopenmeeting()==true){\n        this.cutmeetingshow = true\n      }else {\n        this.rx.applyforAddVideoPush(this.voicenav.cmschat.videoMeetID);\n        this.maintainstate = false;\n      }\n    }\n  }\n  closecutmeeting(ev:any){\n    this.cutmeetingshow = false\n  }\n  skip(){\n     if(this.voicenav.phonetype=='4'){\n      if(this.AV.judgepresentmeeting(this.voicenav.cmschat.videoMeetID) ==true){\n        this.AV.cutmeettingpage(this.voicenav)\n        this.AV.clearmeetingactive()\n        this.voicenav.active = true\n      }else {\n        if(this.AV.judgeopenmeeting()==true){\n          this.cutmeetingshow = true\n        }else {\n          this.AV.cutmeettingpage(this.voicenav)\n          this.AV.clearmeetingactive()\n          this.voicenav.active = true\n        }\n      }\n        // 视频会议双击\n     }else{\n        // 视频双击\n        this.AV.cutactive(this.voicenav.userName)\n        this.AV.clearactive()\n        this.voicenav.active = true\n     }\n  }\n}\n","<div class=\"box\" (dblclick)=\"skip()\">\n    <div class=\"state\">\n        <img src=\"assets/img/视频_左侧_01.png\" alt=\"\" *ngIf=\"voicenav.phonetype=='2'\" />\n        <img src=\"assets/img/videomeeting_01.png\" alt=\"\" *ngIf=\"voicenav.phonetype=='4'\" />\n    </div>\n    <div class=\"testname\">\n        <div class=\"test\" [ngClass]=\"maintainstate == true ? 'maintainactive' : ''\">{{ voicenav.userName }}</div>\n        <div class=\"test\">\n            <app-timer></app-timer>\n        </div>\n    </div>\n    <div class=\"maintain\" *ngIf=\"voicenav.phonetype=='2'\">\n        <span nz-icon nzType=\"pause\" nzTheme=\"outline\" *ngIf=\"maintainstate==false\" (click)=\"cutmaintain()\"></span>\n        <span nz-icon nzType=\"caret-right\" nzTheme=\"outline\" *ngIf=\"maintainstate==true\" (click)=\"cutmaintain()\"></span>\n    </div>\n    <div class=\"maintain\" *ngIf=\"voicenav.phonetype=='4'\">\n        <span nz-icon nzType=\"pause\" nzTheme=\"outline\" *ngIf=\"maintainstate==false\" (click)=\"cutmeeting()\"></span>\n        <span nz-icon nzType=\"caret-right\" nzTheme=\"outline\" *ngIf=\"maintainstate==true\" (click)=\"cutmeeting()\"></span>\n    </div>\n    <div class=\"remote\" *ngIf=\"voicenav.phonetype=='2'\">\n        <img src=\"assets/img/P2P_close.png\" alt=\"\" (click)=\"videoquit()\" />\n    </div>\n    <div class=\"remote\" *ngIf=\"voicenav.phonetype=='4'\">\n        <!-- <img src=\"assets/img/P2P_close.png\" alt=\"\" *ngIf=\"voicenav.callout=='2'\" (click)=\"quitmeeting()\" /> -->\n        <img src=\"assets/img/P2P_close.png\" alt=\"\" *ngIf=\"voicenav.callout=='1'\" (click)=\"closemeeting()\" />\n    </div>\n</div>\n\n<div class=\"cutmeeting\" *ngIf=\"cutmeetingshow\">\n    <app-cutmeeting (outer)=\"closecutmeeting($event)\" [voicenav]=\"voicenav\"></app-cutmeeting>\n</div>","import {\n  Injectable,\n  ComponentFactoryResolver,\n  ApplicationRef,\n  Injector,\n} from '@angular/core';\n// import { VodPopComponent } from '../components/vod-pop/vod-pop.component';\nimport { VoiceComponent } from '../components/voice/voice.component';\nimport { ChatComponent } from '../chat/chat.component';\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgmodalService {\n  private popupRefs: any[] = [];\n  count = 0;\n  constructor(\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private appRef: ApplicationRef,\n    private injector: Injector\n  ) {}\n  createaudio(userID: any) {\n    // const popupFactory =\n    //   this.componentFactoryResolver.resolveComponentFactory(VoiceComponent);\n    // const componentRef = popupFactory.create(this.injector);\n    // componentRef.instance.callaudio(userID);\n    // this.createPopup(componentRef)\n  }\n  createvideo(userID: any) {\n    const popupFactory =\n      this.componentFactoryResolver.resolveComponentFactory(ChatComponent);\n    const componentRef = popupFactory.create(this.injector);\n    componentRef.instance.callvideo(userID);\n    this.createPopup(componentRef)\n  }\n  createvod(userID: any) {\n        // 创建动态组件工厂\n      // const popupFactory =\n      //   this.componentFactoryResolver.resolveComponentFactory(VodPopComponent);\n      // // 创建一个组件引用\n      // const componentRef = popupFactory.create(this.injector);\n      // componentRef.instance.callvod(userID);\n      // this.createPopup(componentRef)\n  }\n  createPopup(componentRef: any) {\n    // 设置弹窗组件的属性\n    // 添加弹窗组件到应用中\n    componentRef.instance.index = this.count;\n    this.appRef.attachView(componentRef.hostView);\n    // 将弹窗组件的DOM元素添加到页面中\n    document.body.appendChild(componentRef.location.nativeElement);\n    this.popupRefs.splice(this.count, 0, componentRef);\n    this.count++;\n    // 将弹窗组件引用存储起来，以便稍后销毁\n  }\n  destroyPopup(index: number): void {\n    if (index >= 0 && index < this.popupRefs.length) {\n      const popupRef = this.popupRefs[index];\n      this.appRef.detachView(popupRef.hostView);\n      popupRef.destroy();\n      delete this.popupRefs[index];\n    }\n  }\n}\n","import {\n  Component,\n  Input,\n  OnInit,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { state } from '../protocol/rtc/icstDefines';\nimport { RxService } from '../protocol/rtc/rx.service';\nimport { WebService } from '../protocol/rtc/web.service';\nimport { NgmodalService } from '../common/ngmodal.service';\n@Component({\n  selector: 'app-chat',\n  templateUrl: './chat.component.html',\n  styleUrls: ['./chat.component.less'],\n})\nexport class ChatComponent implements OnInit {\n  @ViewChild('remotesvideo') remotesvideo?: any;\n  @ViewChild('localvideo') localvideo?: any;\n  @Input() onecall: any = '';\n  localStream: any = null;\n  peerStream: any = null;\n  pcPeer: any = null;\n  channelID: any = '';\n  channelLocal: any = null;\n  channelPeer: any = null;\n  m_idPeerV: any = null;\n  videotype: number = 0;\n  calltype = false;\n  hascall = false;\n  dialogID: any = '';\n  userId: any = '';\n  subscription:any;\n  index:any;\n  constructor(\n    private rx: RxService,\n    private ws: WebService,\n    private modal: NgmodalService,\n  ) {\n    const configuration = {};\n    this.pcPeer = new RTCPeerConnection(configuration);\n  }\n  ngOnInit(): void {\n    this.subscription =     this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let resultdata = nav.resultData;\n      let that = this;\n      switch (cmdid) {\n        case state.OWO_CMD_CHAT_REQUEST_BK:\n          if (nav.cmdBody.permission == 2) {\n            this.close();\n          } else if (nav.cmdBody.permission == 1) {\n            this.channelID = nav.cmdBody.SSRC;\n            this.video();\n          }\n          break;\n        case state.OWO_CMD_CHAT_CLOSE:\n          if (nav.cmdBody.dialogID == this.dialogID) {\n            this.hangup();\n          }\n          break;\n        default:\n          break;\n      }\n      switch (respcmdid) {\n        case state.OWO_CMD_CHAT_REQUEST + 1: {\n          this.dialogID = resultdata.dialogID;\n          break;\n        }\n        case state.OWO_CMD_RTC_OFFER + 1: {\n          if (resultdata.channelID == this.channelID) {\n            setTimeout(function () {\n              that.remoteAnswer(nav);\n              that.videotype = 1;\n            }, 2000);\n          }\n          break;\n        }\n        default:\n          break;\n      }\n    });\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.onecall) {\n      this.rx.requestChat(this.onecall.info.userID, '2');\n    }\n  }\n  ngOnDestroy(){\n    // console.log('组件销毁');\n    if (this.pcPeer) {\n      this.pcPeer.close();\n      this.pcPeer = null;\n      this.localStream.getTracks().forEach((track: any) => {\n        track.stop();\n      });\n      this.localStream =null ;\n    }\n    this.subscription.unsubscribe()\n  }\n  close(): void {\n    // this._ngbActiveModal.close();\n    this.modal.destroyPopup(this.index)\n  }\n  closecall() {\n    this.close();\n    this.rx.initiativeCloseChat(this.dialogID);\n  }\n  callvideo(dstID: string) {\n    this.userId = dstID;\n    let type = '2';\n    this.rx.requestChat(dstID, type);\n  }\n  hangup() {\n    this.close();\n    this.pcPeer.close();\n    this.remotesvideo.nativeElement.srcObject.getTracks()[0].stop();\n    this.pcPeer = null;\n    this.videotype = 0;\n    this.rx.initiativeCloseChat(this.dialogID);\n  }\n  video = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: true,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          that.localStream = stream;\n          that.localvideo.nativeElement.srcObject = stream;\n          that.call();\n          // console.log(that.localStream);\n        })\n        .catch(this.handleError);\n    }\n  };\n  call = () => {\n    this.pcPeer.onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.localStream.getTracks().forEach((track: any) => {\n      this.pcPeer.addTrack(track, this.localStream);\n    });\n    this.pcPeer.onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.pcPeer.onconnection = function () {};\n    this.pcPeer.ondatachannel = (event: any) => {\n      console.log(event);\n    };\n    this.rx.sendOffer({ SDP: 'web client sdp', channelID: this.channelID });\n  };\n  remoteAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.pcPeer.setRemoteDescription(desc);\n    this.pcPeer.createAnswer().then((sdp: any) => {\n      this.gotDescription2(sdp);\n    });\n  };\n  gotDescription2 = (desc: any) => {\n    this.pcPeer.setLocalDescription(desc).then();\n  };\n  handlDescError(err: any) {\n    console.log(err);\n  }\n  getRemoteSream = (e: any) => {\n    if (this.remotesvideo.nativeElement.srcObject !== e.stream) {\n      this.remotesvideo.nativeElement.srcObject = e.stream;\n    }\n  };\n  handleError(err: any) {\n    console.log(err);\n  }\n}\n","<div class=\"navbox\" cdkDrag>\n    <div class=\"nav\">\n        <div class=\"setname\" cdkDragHandle>\n            <div [style.display]=\"videotype==1 ? 'block' : 'none'\">与{{userId}}视频中</div>\n        </div>\n        <div class=\"callbox\" [style.display]=\"videotype==0 ? 'block' : 'none'\">\n            <div class=\"callimg\"><img src=\"assets/img/P2P_video.png\" alt=\"\" /></div>\n            <div class=\"call\">正在呼叫{{userId}}</div>\n            <div class=\"ptop\"><img src=\"assets/img/P2P_waiting.png\" alt=\"\" /></div>\n            <div class=\"buttonbox\">\n                <button (click)=\"closecall()\">取消</button>\n            </div>\n        </div>\n        <div class=\"videobox\" [style.display]=\"videotype==1 ? 'block' : 'none'\">\n            <div class=\"remote\">\n                <video src=\"\" #remotesvideo autoplay playsinline></video>\n            </div>\n            <img src=\"assets/img/P2P_close.png\" alt=\"\" (click)=\"hangup()\" class=\"hangup\">\n            <div class=\"local\">\n                <video src=\"\" #localvideo autoplay playsinline></video>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  Input,\n  OnInit,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { ResourceService } from '../../protocol/resource/resource.service';\nimport { cache } from '../../protocol/rtc/cache';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { OverallService } from '../../common/overall.service';\n@Component({\n  selector: 'app-select-tree',\n  templateUrl: './select-tree.component.html',\n  styleUrls: ['./select-tree.component.less'],\n})\nexport class SelectTreeComponent implements OnInit {\n  @Input() uservalue: any = '';\n  @Input() type: string = '';\n  rawData: any = '';\n  arr: any = []; //渲染列表\n  shows: boolean = true;\n  check: boolean = false;\n  searchtype: number = 1;\n  newarr: any = [];\n  userListtypes = '';\n  userName = '';\n  facilitylist = [];\n  indeterminate = false;\n  constructor(private datastact: ResourceService, private rx: RxService, private sendService: OverallService,) {}\n  ngOnInit(): void {\n    if (this.type == 'person') {\n      if (this.datastact.userlist != '') {\n        this.rawData = this.datastact.userlist;\n        this.chi(this.rawData.childs);\n        this.userListtypes = this.datastact.userType;\n        this.merge();\n        this.userName = this.rx.userName;\n      }\n    }\n    if (this.type == 'persongroup') {\n      if (this.datastact.userlist != '') {\n        this.rawData = this.datastact.userlist;\n        this.chi(this.rawData.childs);\n        this.userListtypes = this.datastact.userType;\n        this.merge();\n        this.userName = this.rx.userName;\n\n      }\n      if (cache.personlist.length > 0) {\n        let personlist = cache.personlist[this.sendService.persongroup].tableData.person.split(';');\n        for (let i = 0; i < personlist.length; i++) {\n          if (personlist[i] == '' || typeof personlist[i] == 'undefined') {\n            personlist.splice(i, 1);\n            i = i - 1;\n          }\n        }\n        for (let i = 0; i < this.arr.length; i++) {\n          for (let j = 0; j < personlist.length; j++) {\n            if (this.arr[i].info.userID == personlist[j]) {\n              this.arr[i].show = true;\n            }\n          }\n        }\n        this.updateSingleChecked()\n      }\n    }\n    if (this.type == 'phone' || this.type == 'message') {\n      if (this.datastact.userlist != '') {\n        this.rawData = this.datastact.userlist;\n        this.chi(this.rawData.childs);\n        this.userListtypes = this.datastact.userType;\n        this.merge();\n        this.userName = this.rx.userName;\n      }\n    }\n    if (this.type == 'equipment') {\n      this.rawData = this.datastact.equipmentlist;\n      this.chi(this.rawData.deviceList);\n      if (cache.equipment != '') {\n        let equipmentlist = cache.equipment.split(';');\n        for (let i = 0; i < equipmentlist.length; i++) {\n          if (\n            equipmentlist[i] == '' ||\n            typeof equipmentlist[i] == 'undefined'\n          ) {\n            equipmentlist.splice(i, 1);\n            i = i - 1;\n          }\n        }\n        for (let i = 0; i < this.arr.length; i++) {\n          for (let j = 0; j < equipmentlist.length; j++) {\n            if (this.arr[i].deviceID == equipmentlist[j]) {\n              this.arr[i].show = true;\n            }\n          }\n        }\n        this.updateSingleChecked()\n      }\n    }\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.uservalue) {\n      if (this.type == 'equipment') {\n        this.arr = this.rawData.deviceList;\n        if (this.uservalue == '') {\n          this.searchtype = 1;\n        } else {\n          if (this.equipmentrebuildData(this.uservalue, this.arr).length == 0) {\n            this.searchtype = 2;\n          } else {\n            this.arr = this.equipmentrebuildData(this.uservalue, this.arr);\n          }\n        }\n      } else {\n        this.arr = this.rawData.childs;\n        if (this.uservalue == '') {\n          this.searchtype = 1;\n        } else {\n          if (this.rebuildData(this.uservalue, this.arr).length == 0) {\n            this.searchtype = 2;\n          } else {\n            this.arr = this.rebuildData(this.uservalue, this.arr);\n          }\n        }\n      }\n    }\n  }\n  rebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.info.userName != undefined) {\n        if (element.info.userName.indexOf(value) > -1) {\n          // 判断条件\n          this.newarr.push(element);\n        } else {\n          if (element.info.childs && element.info.childs.length > 0) {\n            let redata = this.rebuildData(value, element.info.childs);\n            let obj = {\n              ...element,\n              children: redata,\n            };\n            if (redata && redata.length > 0) {\n              this.newarr.push(obj);\n            }\n          }\n        }\n      }\n    });\n    return this.newarr;\n  }\n  equipmentrebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.deviceName != undefined) {\n        if (element.deviceName.indexOf(value) > -1) {\n          // 判断条件\n          this.newarr.push(element);\n        } else {\n          if (element.childs && element.childs.length > 0) {\n            let redata = this.rebuildData(value, element.childs);\n            let obj = {\n              ...element,\n              children: redata,\n            };\n            if (redata && redata.length > 0) {\n              this.newarr.push(obj);\n            }\n          }\n        }\n      }\n    });\n    return this.newarr;\n  }\n  chi(obj: any) {\n    this.arr = [];\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n  // 修改本机状态\n  merge() {\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      for (let j = 0; j < this.userListtypes.length; j++) {\n        let type: any = this.userListtypes[j];\n        if (arr == type.userID) {\n          this.arr[i].info.type = type;\n        }\n      }\n    }\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      if (arr == this.rx.userID) {\n        this.arr.splice(i, 1);\n      }\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  usercheck(ev: any) {\n    ev.show = !ev.show;\n  }\n  allcheck() {\n    this.indeterminate = false;\n    if (this.check== true) {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        show: true,\n      }));\n    } else {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        show: false,\n      }));\n    }\n  }\n  phonecheck() {\n    this.indeterminate = false;\n    if (this.check == true) {\n      for (let i = 0; i < this.arr.length; i++) {\n        if (\n          this.arr[i].info.type.devStatus == 1 ||\n          this.arr[i].info.type.devStatus == 2\n        ) {\n          this.arr[i].show = true;\n        }\n      }\n    } else if (this.check == false) {\n      for (let i = 0; i < this.arr.length; i++) {\n        this.arr[i].show = false;\n      }\n    }\n\n  }\n  alleqcheck() {\n    if (this.check == false) {\n      this.check = true;\n      for (let i = 0; i < this.arr.length; i++) {\n        this.arr[i].show = true;\n      }\n    } else if (this.check == true) {\n      this.check = false;\n      for (let i = 0; i < this.arr.length; i++) {\n        this.arr[i].show = false;\n      }\n    }\n  }\n\n  updateSingleChecked(): void {\n    if (this.arr.every((item: any) => !item.show)) {\n      this.check = false;\n      this.indeterminate = false;\n    } else if (this.arr.every((item: any) => item.show)) {\n      this.check = true;\n      this.indeterminate = false;\n    } else {\n      this.indeterminate = true;\n    }\n  }\n}\n","<div *ngIf=\"searchtype == 1\">\n    <div class=\"root\" *ngIf=\"rawData.root\">\n        <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n        </div>\n        <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n        </div>\n        <div *ngIf=\"type =='person'||type =='equipment'||type =='persongroup'\">\n            <label nz-checkbox [(ngModel)]=\"check\" [nzIndeterminate]=\"indeterminate\" (ngModelChange)=\"allcheck()\"></label>\n        </div>\n        <div *ngIf=\"type =='phone'||type =='message'\">\n            <label nz-checkbox [(ngModel)]=\"check\" [nzIndeterminate]=\"indeterminate\" (ngModelChange)=\"phonecheck()\"></label>\n        </div>\n        <div class=\"userName \">\n            {{ rawData.root }}\n        </div>\n    </div>\n    <div [style.display]=\"shows ? 'block' : 'none' \">\n        <div *ngFor=\"let item of arr; let i=index \">\n            <div class=\"userbox \">\n                <div *ngIf=\"item.info\">\n                    <div *ngIf=\"item.info.type.devStatus==0 &&type =='phone'\">\n                        <label nz-checkbox nzDisabled [(ngModel)]=\"item.show\"></label>\n                    </div>\n                    <div *ngIf=\"item.info.type.devStatus==0 &&type=='message'\">\n                        <label nz-checkbox nzDisabled [(ngModel)]=\"item.show\"></label>\n                    </div>\n                    <div *ngIf=\"item.info.type.devStatus==0 &&type !='phone' &&type !='message'\">\n                        <label nz-checkbox [(ngModel)]=\"item.show\" (ngModelChange)=\"updateSingleChecked() \"></label>\n                    </div>\n                    <div *ngIf=\"item.info.type.devStatus==1 ||item.info.type.devStatus==2\">\n                        <label nz-checkbox [(ngModel)]=\"item.show\" (ngModelChange)=\"updateSingleChecked() \"></label>\n                    </div>\n                </div>\n                <div class=\"userstatus \" *ngIf=\"item.info \">\n                    <div class=\"infoimg \" *ngIf=\"item.info.type.devStatus==0 \">\n                        <img src=\"assets/img/head.png \" alt=\" \" />\n                    </div>\n                    <div class=\"buleStatus \" *ngIf=\"item.info.type.devStatus==1 \">\n                        <img src=\"assets/img/head.png \" alt=\" \" />\n                    </div>\n                    <div class=\"greenStatus \" *ngIf=\"item.info.type.devStatus==2 \">\n                        <img src=\"assets/img/head.png \" alt=\" \" />\n                    </div>\n                </div>\n                <div class=\"tpye \" *ngIf=\"item.info \">\n                    <img src=\"assets/img/type_android.png \" alt=\" \" *ngIf=\"item.info.userType=='1' \" />\n                    <img src=\"assets/img/type_pc.png \" alt=\" \" *ngIf=\"item.info.userType=='2' \" />\n                    <img src=\"assets/img/type_IPC.png \" alt=\" \" *ngIf=\"item.info.userType=='3' \" />\n                    <img src=\"assets/img/type_DB.png \" alt=\" \" *ngIf=\"item.info.userType=='4' \" />\n                </div>\n                <div class=\"userName \" *ngIf=\"item.info \">\n                    {{ item.info.userName }}\n                </div>\n                <div class=\"state \" *ngIf=\"item.info \">\n                    <div *ngIf=\"item.info.type.devStatus==0 \" class=\"offline \">\n                        离线\n                    </div>\n                    <div *ngIf=\"item.info.type.devStatus==1 \" class=\"online \">\n                        在线\n                    </div>\n                    <div *ngIf=\"item.info.type.devStatus==2 \" class=\"telephone \">\n                        通话\n                    </div>\n                </div>\n                <div *ngIf=\"item.deviceID \">\n                    <div>\n                        <label nz-checkbox [(ngModel)]=\"item.show\" (ngModelChange)=\"updateSingleChecked() \"></label>\n                    </div>\n                </div>\n                <div class=\"userstatus \" *ngIf=\"item.deviceID \">\n                    <div class=\"infoimg \" *ngIf=\"item.deviceStatus==0 \">\n                        <img src=\"assets/img/head.png \" alt=\" \" />\n                    </div>\n                    <div class=\"buleStatus \" *ngIf=\"item.deviceStatus==1 \">\n                        <img src=\"assets/img/head.png \" alt=\" \" />\n                    </div>\n                    <div class=\"greenStatus \" *ngIf=\"item.deviceStatus==2 \">\n                        <img src=\"assets/img/head.png \" alt=\" \" />\n                    </div>\n                </div>\n                <div class=\"tpye \" *ngIf=\"item.deviceID \">\n                    <img src=\"assets/img/type_android.png \" alt=\" \" *ngIf=\"item.deviceType=='1' \" />\n                    <img src=\"assets/img/type_pc.png \" alt=\" \" *ngIf=\"item.deviceType=='2' \" />\n                    <img src=\"assets/img/type_IPC.png \" alt=\" \" *ngIf=\"item.deviceType=='3' \" />\n                    <img src=\"assets/img/type_DB.png \" alt=\" \" *ngIf=\"item.deviceType=='4' \" />\n                </div>\n                <div class=\"userName \" *ngIf=\"item.deviceID \">\n                    {{ item.deviceName }}\n                </div>\n                <div class=\"state \" *ngIf=\"item.deviceID \">\n                    <div *ngIf=\"item.deviceStatus==0 \" class=\"offline \">\n                        离线\n                    </div>\n                    <div *ngIf=\"item.deviceStatus==1 \" class=\"online \">\n                        在线\n                    </div>\n                    <div *ngIf=\"item.deviceStatus==2 \" class=\"telephone \">\n                        通话\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"searchtype==2 \" class=\"searching \">未检索的到用户</div>","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { cache } from '../../protocol/rtc/cache';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { AvService } from '../../protocol/rtc/av.service';\nimport { OverallService } from '../../common/overall.service';\n\n@Component({\n  selector: 'app-multiaction',\n  templateUrl: './multiaction.component.html',\n  styleUrls: ['./multiaction.component.less'],\n})\nexport class MultiactionComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @ViewChild('cart') cart: any;\n  // @Input() type: string = '';\n  @Input()\n  set type(value: any) {\n    this.typedata = value;\n    if (this.typedata == 'persongroup') {\n      this.personnname =\n        cache.personlist[this.sendService.persongroup].tableData.patternname;\n    }\n  }\n  get type() {\n    return this.typedata;\n  }\n  @ViewChild('fileInput') fileInput: any;\n  @ViewChild('filevide') filevide: any;\n  @ViewChild('reminderbgc') reminderbgc: any;\n  typedata: any = '';\n  setTimeouttimer: any = '';\n  inputValue?: string;\n  uservalue: any = '';\n  message: string = '';\n  reminder: boolean = false;\n  remindertimer: number = 0;\n  mediaRecorder: any = null;\n  remindertype: boolean = false;\n  patternname = '';\n  personnname = '';\n  constructor(\n    private messageser: NzMessageService,\n    private rx: RxService,\n    private AV: AvService,\n    private sendService: OverallService,\n  ) {}\n  ngOnInit(): void {}\n  userTree() {\n    this.uservalue = this.inputValue;\n  }\n  userempty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  messagetransfer() {\n    // 群体发送\n    let ar = this.cart.arr;\n    // console.log(ar);\n  }\n  videotransfer() {\n    // 群体呼叫\n    let arr = this.rebuildData(this.cart.arr);\n    if (arr.length == 0) {\n      this.close();\n    } else {\n      let data = {\n        arr: arr,\n        modal: true,\n      };\n      for (let i = 0; i < arr.length; i++) {\n        let dstID = arr[i].info.userID;\n        this.AV.callonevideo(dstID);\n      }\n      this.outer.emit(data);\n    }\n  }\n  phonetransfer() {\n    // 群体呼叫\n    let arr = this.rebuildData(this.cart.arr);\n    if (arr.length == 0) {\n      this.close();\n    } else {\n      let data = {\n        arr: arr,\n        modal: true,\n      };\n      for (let i = 0; i < arr.length; i++) {\n        let dstID = arr[i].info.userID;\n        this.AV.callonevoice(dstID);\n      }\n      this.outer.emit(data);\n    }\n  }\n  equipmenttransfer() {\n    // 设备添加\n    let arr = this.rebuildData(this.cart.arr);\n    let ment = '';\n    for (let i = 0; i < arr.length; i++) {\n      if (arr[i].show == true) {\n        ment += arr[i].deviceID + ';';\n      }\n    }\n    cache.equipment = ment;\n    let eva = JSON.stringify(cache);\n    this.rx.savecache(eva);\n    this.close();\n  }\n  persontransfer() {\n    // 群体添加\n    let arr = this.rebuildData(this.cart.arr);\n    let person = '';\n    for (let i = 0; i < arr.length; i++) {\n      if (arr[i].show == true) {\n        person += arr[i].info.userID + ';';\n      }\n    }\n    if (this.patternname == '') {\n      this.messageser.create('error', '请输入个人组名称');\n    } else {\n      cache.personlist.push({\n        tableData: {\n          patternname: this.patternname,\n          person: person,\n        },\n      });\n      let eva = JSON.stringify(cache);\n      this.rx.savecache(eva);\n      this.close();\n    }\n  }\n  personamend() {\n    let arr = this.rebuildData(this.cart.arr);\n    let person = '';\n    for (let i = 0; i < arr.length; i++) {\n      if (arr[i].show == true) {\n        person += arr[i].info.userID + ';';\n      }\n    }\n    if (this.personnname == '') {\n      this.messageser.create('error', '个人组名称不能为空');\n    } else {\n      cache.personlist[this.sendService.persongroup] = {\n        tableData: {\n          patternname: this.personnname,\n          person: person,\n        },\n      };\n      let eva = JSON.stringify(cache);\n      this.rx.savecache(eva);\n      this.close();\n    }\n  }\n  rebuildData(arr: any) {\n    let newarr: any = [];\n    arr.forEach((element: any) => {\n      if (element.show == true) {\n        newarr.push(element);\n      }\n    });\n    return newarr;\n  }\n  close() {\n    let data = {\n      modal: true,\n    };\n    this.outer.emit(data);\n  }\n  chatwithaudio() {\n    // console.log('录音');\n    this.reminder = true;\n    this.countDown();\n  }\n  files() {\n    this.fileInput.nativeElement.click();\n  }\n  filed() {\n    this.filevide.nativeElement.click();\n  }\n  // 上传文件\n  handle(ev: any) {\n    let file: any = ev.target.files[0];\n    if (file.type.indexOf('image') == 0) {\n      // this.getcatalogue(file, 'image');\n    } else {\n      // this.getcatalogue(file, 'file');\n    }\n  }\n  handleChanges(ev: any) {\n    // 上传图片\n    let file: any = ev.target.files[0];\n    if (file.type.indexOf('image') == 0) {\n      // this.getcatalogue(file, 'image');\n    } else {\n      this.messageser.create('error', '不是图片文件');\n    }\n  }\n  sendreminder() {\n    this.remindertype = true;\n    // this.mediaRecorder.stop();\n    this.reminder = false;\n    clearInterval(this.setTimeouttimer);\n    this.remindertimer = 0;\n    this.reminderbgc.nativeElement.style.width = 0;\n  }\n  cancel() {\n    this.remindertype = false;\n    this.reminder = false;\n    clearInterval(this.setTimeouttimer);\n    this.remindertimer = 0;\n    this.reminderbgc.nativeElement.style.width = 0;\n    // this.mediaRecorder.stop();\n    // this.chunks = [];\n  }\n  countDown() {\n    this.remindertimer = this.remindertimer + 1;\n    var precent = (100 * this.remindertimer) / 60;\n    this.reminderbgc.nativeElement.style.width = Math.floor(precent) + '%';\n    if (this.remindertimer == 61) {\n      this.remindertype = true;\n      this.reminder = false;\n      this.remindertimer = 0;\n      this.reminderbgc.nativeElement.style.width = 0;\n      this.mediaRecorder.stop();\n      return;\n    }\n    this.setTimeouttimer = setTimeout(() => {\n      this.countDown();\n    }, 1000);\n  }\n}\n","<div class=\"fullscreen\">\n    <div class=\"box\">\n        <div class=\"drag\" cdkDrag>\n            <div class=\"usertitle\" cdkDragHandle>\n                <div class=\"title\">选择用户</div>\n                <div class=\"closebox\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"close()\"></i>\n                </div>\n            </div>\n            <div class=\"setnav\" *ngIf=\"typedata == 'person'\">\n                <div class=\"setting\">\n                    <div class=\"patternname\">单兵模式名称:&nbsp;&nbsp;</div>\n                    <div class=\"pattern\">\n                        <input nz-input type=\"text\" [(ngModel)]=\"patternname\" />\n                    </div>\n                </div>\n            </div>\n            <div class=\"setnav\" *ngIf=\"typedata == 'persongroup'\">\n                <div class=\"setting\">\n                    <div class=\"patternname\">单兵模式名称:&nbsp;&nbsp;</div>\n                    <div class=\"pattern\">\n                        <input nz-input type=\"text\" [(ngModel)]=\"personnname\" />\n                    </div>\n                </div>\n            </div>\n            <div class=\"searchbox\">\n                <div class=\"search\">\n                    <nz-input-group [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"inputClear\">\n                        <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"userTree()\" />\n                    </nz-input-group>\n                    <ng-template #prefixTemplate><i nz-icon nzType=\"search\"></i\n          ></ng-template>\n          <ng-template #inputClear>\n            <div *ngIf=\"inputValue\">\n              <i\n                nz-icon\n                nzType=\"close-circle\"\n                nzTheme=\"outline\"\n                (click)=\"userempty()\"\n              ></i>\n                </div>\n                </ng-template>\n            </div>\n        </div>\n        <div class=\"treebox\">\n            <app-select-tree #cart [uservalue]=\"uservalue\" [type]=\"type\"></app-select-tree>\n        </div>\n        <div class=\"voicebox\" *ngIf=\"typedata == 'phone'\">\n            <button class=\"transfer\" (click)=\"phonetransfer()\">语音呼叫</button>\n            <button class=\"phonetransfer\" (click)=\"videotransfer()\">视频呼叫</button>\n        </div>\n        <div *ngIf=\"typedata == 'person'\" class=\"buttonbox\">\n            <button (click)=\"persontransfer()\">确定</button>\n            <button (click)=\"close()\">取消</button>\n        </div>\n        <div *ngIf=\"typedata == 'persongroup'\" class=\"buttonbox\">\n            <button (click)=\"personamend()\">确定</button>\n            <button (click)=\"close()\">取消</button>\n        </div>\n        <div *ngIf=\"typedata == 'equipment'\" class=\"buttonbox\">\n            <button (click)=\"equipmenttransfer()\">确定</button>\n            <button (click)=\"close()\">取消</button>\n        </div>\n        <div *ngIf=\"typedata == 'message'\" class=\"uploadingbox\">\n            <div class=\"transmiticon\" *ngIf=\"reminder == false\">\n                <div class=\"recording\" (click)=\"chatwithaudio()\"></div>\n                <div class=\"chatsendimg\" (click)=\"files()\">\n                    <input type=\"file \" (change)=\"handleChanges($event)\" style=\"display: none\" #fileInput />\n                </div>\n                <div class=\"chatsenddoc\" (click)=\"filed()\">\n                    <input type=\"file \" (change)=\"handle($event)\" style=\"display: none\" #filevide />\n                </div>\n            </div>\n            <div class=\"reminderbgc\" #reminderbgc></div>\n            <div class=\"transmitbox\" *ngIf=\"reminder == true\">\n                <div class=\"beginrecording\">\n                    <div class=\"remindertimer\">{{ remindertimer }}</div>\n                    <div class=\"reminder\">最多可录制60秒!</div>\n                    <div class=\"transcribe\">\n                        <button (click)=\"sendreminder()\">发送</button>\n                        <button (click)=\"cancel()\">取消</button>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div *ngIf=\"typedata == 'message'\" class=\"message\">\n            <textarea rows=\"3 \" [(ngModel)]=\"message\" class=\"bgc\" style=\"width: 360px; resize: none\"></textarea>\n        </div>\n        <div *ngIf=\"typedata == 'message'\" class=\"buttonbox\">\n            <button (click)=\"messagetransfer()\">发送</button>\n            <button (click)=\"close()\">取消</button>\n        </div>\n    </div>\n</div>\n</div>","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-personal',\n  templateUrl: './personal.component.html',\n  styleUrls: ['./personal.component.css'],\n})\nexport class PersonalComponent implements OnInit {\n  @Input() user: any = '';\n  str: any;\n  s: any = 0;\n  m: any = 0;\n  h: any = 0;\n  state: number = 1;\n  setTimeouttimer: any = '';\n  constructor() {}\n\n  ngOnInit(): void {\n    this.reset();\n  }\n  timer = () => {\n    //定义计时函数\n    this.s++;\n    if (this.s >= 60) {\n      this.state = 0;\n      clearInterval(this.setTimeouttimer);\n    }\n    this.str =\n      this.toDub(this.h) +\n      ':' +\n      this.toDub(this.m) +\n      ':' +\n      this.toDub(this.s) +\n      '';\n  };\n  toDub(n: any) {\n    //补0操作\n    if (n < 10) {\n      return '0' + n;\n    } else {\n      return '' + n;\n    }\n  }\n  reset() {\n    this.h = 0;\n    this.m = 0;\n    this.s = 0;\n    this.str = '00:00:00';\n    this.setTimeouttimer = setInterval(this.timer, 1000);\n  }\n}\n","<div class=\"personalbox\">\n    <div class=\"userbox\">\n        <div class=\"user\">\n            <div class=\"userstatus\" *ngIf=\"user.info.type\">\n                <div class=\"infoimg\" *ngIf=\"user.info.type.devStatus == 0\">\n                    <img src=\"assets/img/head.png\" alt=\"\" />\n                </div>\n                <div class=\"buleStatus\" *ngIf=\"user.info.type.devStatus == 1\">\n                    <img src=\"assets/img/head.png\" alt=\"\" />\n                </div>\n                <div class=\"greenStatus\" *ngIf=\"user.info.type.devStatus == 2\">\n                    <img src=\"assets/img/head.png\" alt=\"\" />\n                </div>\n            </div>\n            <div class=\"tpye\">\n                <img src=\"assets/img/type_android.png\" alt=\"\" *ngIf=\"user.info.userType == '1'\" />\n                <img src=\"assets/img/type_pc.png\" alt=\"\" *ngIf=\"user.info.userType == '2'\" />\n                <img src=\"assets/img/type_IPC.png\" alt=\"\" *ngIf=\"user.info.userType == '3'\" />\n                <img src=\"assets/img/type_DB.png\" alt=\"\" *ngIf=\"user.info.userType == '4'\" />\n            </div>\n            <div class=\"userName\">\n                {{ user.info.userName }}\n            </div>\n            <div class=\"state\" *ngIf=\"user.info.type\">\n                <div *ngIf=\"user.info.type.devStatus == 0\" class=\"offline\">离线</div>\n                <div *ngIf=\"user.info.type.devStatus == 1\" class=\"online\">在线</div>\n                <div *ngIf=\"user.info.type.devStatus == 2\" class=\"telephone\">通话</div>\n            </div>\n        </div>\n        <div class=\"statebox\">\n            <div *ngIf=\"state == 1\" class=\"timer\">\n                {{ str }}\n            </div>\n            <div *ngIf=\"state == 1\">正在呼叫</div>\n            <div *ngIf=\"state == 2\" class=\"timer\">\n                <app-timer></app-timer>\n            </div>\n            <div *ngIf=\"state == 2\">正在通话</div>\n        </div>\n    </div>\n    <div class=\"operationbox\">\n        <div class=\"close\"><img src=\"assets/img/P2P_close.png\" alt=\"\"></div>\n        <div class=\"dial\"><img src=\"assets/img/P2P_audio.png\" alt=\"\"></div>\n        <!-- <div class=\"maintain\">呼叫保持</div> -->\n    </div>\n</div>","import { Component, OnInit,Output ,EventEmitter,Input} from '@angular/core';\n\n@Component({\n  selector: 'app-group-busy',\n  templateUrl: './group-busy.component.html',\n  styleUrls: ['./group-busy.component.less']\n})\nexport class GroupBusyComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @Input() groupbusylist: any = '';\n  constructor() {}\n  ngOnInit(): void {\n  }\n  close(){\n    this.outer.emit(false);\n  }\n}\n","<div class=\"fullscreen\">\n    <div class=\"box\">\n        <div class=\"drag\" appDrag>\n            <div class=\"usertitle\">\n                <div class=\"title\">呼叫用户</div>\n                <div class=\"closebox\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"close()\"></i>\n                </div>\n            </div>\n            <div class=\"userbox\">\n                <div class=\"user\">\n                    <ng-container *ngFor=\"let item of groupbusylist; let i = index\">\n                        <app-personal [user]=\"item\"></app-personal>\n                    </ng-container>\n                    <div class=\"placeholder\"></div>\n                    <div class=\"placeholder\"></div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { cache } from '../../protocol/rtc/cache';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { OverallService } from '../../common/overall.service';\nimport { ResourceService } from '../../protocol/resource/resource.service';\n@Component({\n  selector: 'app-hotline',\n  templateUrl: './hotline.component.html',\n  styleUrls: ['./hotline.component.less'],\n})\nexport class HotlineComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  listfirst = [\n    { label: '用户', value: '用户' },\n    { label: '固话', value: '固话' },\n    { label: '移动电话', value: '移动电话' },\n  ];\n  listtwo = [\n    { label: '用户', value: '用户' },\n    { label: '固话', value: '固话' },\n    { label: '移动电话', value: '移动电话' },\n  ];\n  listthree = [\n    { label: '用户', value: '用户' },\n    { label: '固话', value: '固话' },\n    { label: '移动电话', value: '移动电话' },\n  ];\n  listfour = [\n    { label: '用户', value: '用户' },\n    { label: '固话', value: '固话' },\n    { label: '移动电话', value: '移动电话' },\n  ];\n  phoneset: number = 1;\n  selectedfrist = '用户';\n  selectedtwo = '用户';\n  selectedthree = '用户';\n  selectedfour = '用户';\n  valuefirst = '热线1';\n  valuetwo = '热线2';\n  valuethree = '热线3';\n  valuefour = '热线4';\n  phonefirst = '';\n  phonetwo = '';\n  phonethree = '';\n  phonefour = '';\n  userName = '';\n  confirm: boolean = false;\n  setnav: number = 1;\n  videonav: number = 1;\n  videosetlist = [\n    { label: '3840x2880', value: '3840x2880' },\n    { label: '1920x1440', value: '1920x1440' },\n    { label: '1280x960', value: '1280x960' },\n    { label: '640x480', value: '640x480' },\n  ];\n  videotwolist = [\n    { label: '30fps', value: '30' },\n    { label: '20fps', value: '20' },\n    { label: '15fps', value: '15' },\n    { label: '10fps', value: '10' },\n    { label: '8fps', value: '8' },\n  ];\n  videothreelist = [\n    { label: '8000kbps', value: '8000000' },\n    { label: '4000kbps', value: '4000000' },\n    { label: '2000kbps', value: '2000000' },\n    { label: '1000kbps', value: '1000000' },\n    { label: '700kbps', value: '700000' },\n    { label: '500kbps', value: '500000' },\n    { label: '400kbps', value: '400000' },\n    { label: '300kbps', value: '300000' },\n    { label: '200kbps', value: '200000' },\n    { label: '100kbps', value: '100000' },\n    { label: '50kbps', value: '50000' },\n  ];\n  videofourlist = [\n    { label: '变码率', value: '2' },\n    { label: '固定码率', value: '1' },\n  ];\n  videofivelist = [\n    { label: '120ms', value: '120ms' },\n    { label: '110ms', value: '110ms' },\n    { label: '100ms', value: '100ms' },\n    { label: '90ms', value: '90ms' },\n    { label: '80ms', value: '80ms' },\n    { label: '70ms', value: '70ms' },\n    { label: '60ms', value: '60ms' },\n    { label: '50ms', value: '50ms' },\n    { label: '40ms', value: '40ms' },\n    { label: '30ms', value: '30ms' },\n  ];\n  resolutionvalue = '3840x2880';\n  fpsvalue = '30fps';\n  coderatevalue = '500000';\n  transfervalue = '变码率';\n  echovalue = '100ms';\n  voiceValue = '声音';\n  answerValue = '手动应答';\n  videoFlag = '手动接收';\n  meetingchecked = true;\n  videochecked = true;\n  module: any;\n  constructor(\n    private rx: RxService,\n    private sendService: OverallService,\n    private datastate: ResourceService\n  ) {}\n  ngOnInit(): void {\n    this.userName = this.rx.userName;\n    this.rx.loadcache();\n    this.valuefirst = cache.setting[0].name;\n    this.selectedfrist = cache.setting[0].type;\n    this.phonefirst = cache.setting[0].phone;\n    this.valuetwo = cache.setting[1].name;\n    this.selectedtwo = cache.setting[1].type;\n    this.phonetwo = cache.setting[1].phone;\n    this.valuethree = cache.setting[2].name;\n    this.selectedthree = cache.setting[2].type;\n    this.phonethree = cache.setting[2].phone;\n    this.valuefour = cache.setting[3].name;\n    this.selectedfour = cache.setting[3].type;\n    this.phonefour = cache.setting[3].phone;\n    this.voiceValue = cache.voice;\n    this.answerValue = cache.answer;\n    this.resolutionvalue = cache.resolution;\n    this.fpsvalue = cache.fps;\n    this.coderatevalue = cache.coderate;\n    this.transfervalue = cache.transfer;\n    this.echovalue = cache.echo;\n    this.meetingchecked = cache.meetingchecked;\n    this.videochecked = cache.videochecked;\n    this.videoFlag = cache.videoFlag;\n    this.module = this.datastate.module;\n    if (this.module.person.audioCall) {\n      this.setnav = 2;\n    } else if (this.module.group.enable) {\n      this.setnav = 5;\n    }else {\n      this.setnav =0\n    }\n  }\n  cut(ev: number) {\n    this.phoneset = ev;\n  }\n  ensure() {\n    if (this.valuefirst == '') {\n      this.valuefirst = '热线1';\n    } else if (this.valuefirst == '') {\n      this.valuetwo = '热线2';\n    } else if (this.valuefirst == '') {\n      this.valuethree = '热线3';\n    } else if (this.valuefirst == '') {\n      this.valuefour = '热线4';\n    }\n    if (this.selectedfrist == '用户' && this.phonefirst != '') {\n      this.openphone(this.phonefirst);\n    } else if (this.selectedtwo == '用户' && this.phonetwo != '') {\n      this.openphone(this.phonetwo);\n    } else if (this.selectedthree == '用户' && this.phonethree != '') {\n      this.openphone(this.phonethree);\n    } else if (this.selectedfour == '用户' && this.phonefour != '') {\n      this.openphone(this.phonefour);\n    } else {\n      this.save();\n    }\n  }\n  openphone(ev: any) {\n    let whether = this.sendService.judgeuser(ev);\n    if (whether == false) {\n      this.confirm = true;\n    } else {\n      if (ev == this.phonefirst) {\n        if (this.selectedtwo == '用户' && this.phonetwo != '') {\n          this.openphone(this.phonetwo);\n        } else if (this.selectedthree == '用户' && this.phonethree != '') {\n          this.openphone(this.phonethree);\n        } else if (this.selectedfour == '用户' && this.phonefour != '') {\n          this.openphone(this.phonefour);\n        } else {\n          this.save();\n        }\n      } else if (ev == this.phonetwo) {\n        if (this.selectedthree == '用户' && this.phonethree != '') {\n          this.openphone(this.phonethree);\n        } else if (this.selectedfour == '用户' && this.phonefour != '') {\n          this.openphone(this.phonefour);\n        } else {\n          this.save();\n        }\n      } else if (ev == this.phonethree) {\n        if (this.selectedfour == '用户' && this.phonefour != '') {\n          this.openphone(this.phonefour);\n        } else {\n          this.save();\n        }\n      } else {\n        this.save();\n      }\n    }\n  }\n\n  save() {\n    this.cancel();\n    cache.setting = [\n      {\n        name: this.valuefirst,\n        type: this.selectedfrist,\n        phone: this.phonefirst,\n      },\n      {\n        name: this.valuetwo,\n        type: this.selectedtwo,\n        phone: this.phonetwo,\n      },\n      {\n        name: this.valuethree,\n        type: this.selectedthree,\n        phone: this.phonethree,\n      },\n      {\n        name: this.valuefour,\n        type: this.selectedfour,\n        phone: this.phonefour,\n      },\n    ];\n\n    this.rx.savecache(JSON.stringify(cache));\n    this.outer.emit(false);\n  }\n  cancel() {\n    this.confirm = false;\n  }\n  close() {\n    this.outer.emit(false);\n  }\n  setselect(ev: number) {\n    this.setnav = ev;\n  }\n  voice() {\n    cache.voice = this.voiceValue;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  answer() {\n    cache.answer = this.answerValue;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  cutvideoFlag() {\n    cache.videoFlag = this.videoFlag;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  resolution() {\n    cache.resolution = this.resolutionvalue;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  fps() {\n    cache.fps = this.fpsvalue;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  coderate() {\n    cache.coderate = this.coderatevalue;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  transfer() {\n    cache.transfer = this.transfervalue;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  echo() {\n    cache.echo = this.echovalue;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  videosetting(ev: any) {\n    this.videonav = ev;\n  }\n  videocheck() {\n    cache.videochecked = this.videochecked;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n  meetingcheck() {\n    cache.meetingchecked = this.meetingchecked;\n    this.rx.savecache(JSON.stringify(cache));\n  }\n}\n","<div class=\"box\">\n    <div class=\"navbox\">\n        <div class=\"nav\" cdkDrag>\n            <div class=\"setname\" cdkDragHandle>\n                <div>{{ userName }}设置</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"close()\"></i>\n            </div>\n            <div class=\"setbox\">\n                <div class=\"set\">\n                    <!-- <div class=\"select\" [ngClass]=\"setnav == 1 ? 'active' : ''\" (click)=\"setselect(1)\">\n                        声音模式\n                    </div> -->\n                    <div class=\"select\" [ngClass]=\"setnav == 2 ? 'active' : ''\" (click)=\"setselect(2)\" *ngIf=\"module.person.audioCall\">\n                        应答模式\n                    </div>\n                    <div class=\"select\" [ngClass]=\"setnav == 3 ? 'active' : ''\" (click)=\"setselect(3)\" *ngIf=\"module.person.videoCall&&module.group.videoTalk&&module.meeting.videoMeeting\">\n                        视频设置\n                    </div>\n                    <div class=\"select\" [ngClass]=\"setnav == 4 ? 'active' : ''\" (click)=\"setselect(4)\" *ngIf=\"module.person.audioCall\">\n                        热线设置\n                    </div>\n                    <div class=\"select\" [ngClass]=\"setnav == 5 ? 'active' : ''\" (click)=\"setselect(5)\" *ngIf=\"module.group.enable\">\n                        群组设置\n                    </div>\n                </div>\n                <div class=\"setnav\">\n                    <div class=\"setting\" *ngIf=\"setnav == 1\">\n                        <div class=\"selectname\">声音模式</div>\n                        <div class=\"voiceset\">\n                            <div class=\"pattern\">请选择声音模式</div>\n                            <nz-radio-group [(ngModel)]=\"voiceValue\" (ngModelChange)=\"voice()\">\n                                <label nz-radio nzValue=\"声音\">声音</label>\n                                <label nz-radio nzValue=\"静音\">静音</label>\n                            </nz-radio-group>\n                        </div>\n                    </div>\n                    <div class=\"setting\" *ngIf=\"setnav == 2\">\n                        <div class=\"selectname\">应答模式</div>\n                        <div class=\"pattern\">呼叫和视频点播应答模式</div>\n                        <nz-radio-group [(ngModel)]=\"answerValue\" (ngModelChange)=\"answer()\">\n                            <!-- <label nz-radio nzValue=\"自动接听\">自动接听</label>\n                            <label nz-radio nzValue=\"手动接听\">手动接听</label> -->\n                            <label nz-radio nzValue=\"自动应答\">自动应答</label>\n                            <label nz-radio nzValue=\"手动应答\">手动应答</label>\n                        </nz-radio-group>\n                    </div>\n                    <div class=\"setting\" *ngIf=\"setnav == 3\">\n                        <div class=\"videobox\">\n                            <div class=\"videosetting\" [ngClass]=\"videonav == 1 ? 'videoactive' : ''\" (click)=\"videosetting(1)\">视频参数</div>\n                            <div class=\"videosetting\" [ngClass]=\"videonav == 2 ? 'videoactive' : ''\" (click)=\"videosetting(2)\">视频预览</div>\n                        </div>\n                        <div *ngIf=\"videonav==2\">\n                            <div class=\"pattern\">视频预览设置</div>\n                            <div class=\"videoset\">\n                                <div class=\"videoshow\">视频呼叫接通时默认开启视频预览&nbsp;:&nbsp;&nbsp;</div>\n                                <div>\n                                    <label nz-checkbox [(ngModel)]=\"videochecked\" (ngModelChange)=\"videocheck()\"></label>\n                                </div>\n                            </div>\n                            <div class=\"videoset\">\n                                <div class=\"videoshow\">视频会议接通时默认开启视频预览&nbsp;:&nbsp;&nbsp;</div>\n                                <div>\n                                    <label nz-checkbox [(ngModel)]=\"meetingchecked\" (ngModelChange)=\"meetingcheck()\"></label>\n                                </div>\n                            </div>\n\n                        </div>\n                        <div *ngIf=\"videonav==1\">\n                            <div class=\"pattern\">上行视频设置项</div>\n                            <div class=\"videoset\">\n                                <div class=\"videoname\">分辨率&nbsp;:&nbsp;&nbsp;</div>\n                                <div>\n                                    <nz-select [(ngModel)]=\"resolutionvalue\" [nzOptions]=\"videosetlist\" (ngModelChange)=\"resolution()\"></nz-select>\n                                </div>\n                            </div>\n                            <div class=\"videoset\">\n                                <div class=\"videoname\">帧率&nbsp;:&nbsp;&nbsp;</div>\n                                <div>\n                                    <nz-select [(ngModel)]=\"fpsvalue\" [nzOptions]=\"videotwolist\" [nzOptionOverflowSize]=\"4\" (ngModelChange)=\"fps()\"></nz-select>\n                                </div>\n                            </div>\n                            <div class=\"videoset\">\n                                <div class=\"videoname\">码率&nbsp;:&nbsp;&nbsp;</div>\n                                <div>\n                                    <nz-select [(ngModel)]=\"coderatevalue\" [nzOptions]=\"videothreelist\" [nzOptionOverflowSize]=\"4\" (ngModelChange)=\"coderate()\"></nz-select>\n                                </div>\n                            </div>\n                            <div class=\"videoset\">\n                                <div class=\"videoname\">码率传输模式&nbsp;:&nbsp;&nbsp;</div>\n                                <div>\n                                    <nz-select [(ngModel)]=\"transfervalue\" [nzOptions]=\"videofourlist\" (ngModelChange)=\"transfer()\"></nz-select>\n                                </div>\n                            </div>\n                            <div class=\"videoset\">\n                                <div class=\"videoname\">回声消除延时&nbsp;:&nbsp;&nbsp;</div>\n                                <div>\n                                    <nz-select [(ngModel)]=\"echovalue\" [nzOptions]=\"videofivelist\" [nzOptionOverflowSize]=\"4\" (ngModelChange)=\"echo()\"></nz-select>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"setting\" *ngIf=\"setnav == 4\">\n                        <div class=\"selectname\">热线设置</div>\n                        <div class=\"hotlineset\">\n                            <div class=\"phone\" [ngClass]=\"phoneset == 1 ? 'li-active' : ''\" (click)=\"cut(1)\">\n                                热线1\n                            </div>\n                            <div class=\"phone\" [ngClass]=\"phoneset == 2 ? 'li-active' : ''\" (click)=\"cut(2)\">\n                                热线2\n                            </div>\n                            <div class=\"phone\" [ngClass]=\"phoneset == 3 ? 'li-active' : ''\" (click)=\"cut(3)\">\n                                热线3\n                            </div>\n                            <div class=\"phone\" [ngClass]=\"phoneset == 4 ? 'li-active' : ''\" (click)=\"cut(4)\">\n                                热线4\n                            </div>\n                        </div>\n                        <div class=\"phoneset\" *ngIf=\"phoneset == 1\">\n                            <div class=\"username\">\n                                <div class=\"name\">名称:&nbsp;&nbsp;</div>\n                                <div>\n                                    <input nz-input [(ngModel)]=\"valuefirst\" />\n                                </div>\n                            </div>\n                            <div class=\"usertype\">\n                                <div class=\"name\">类型:&nbsp;&nbsp;</div>\n                                <div>\n                                    <nz-select [(ngModel)]=\"selectedfrist\" [nzOptions]=\"listfirst\"></nz-select>\n                                </div>\n                            </div>\n                            <div class=\"userphone\">\n                                <div class=\"name\">号码:&nbsp;&nbsp;</div>\n                                <div>\n                                    <input nz-input [(ngModel)]=\"phonefirst\" />\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"phoneset\" *ngIf=\"phoneset == 2\">\n                            <div class=\"username\">\n                                <div class=\"name\">名称:&nbsp;&nbsp;</div>\n                                <div>\n                                    <input nz-input [(ngModel)]=\"valuetwo\" />\n                                </div>\n                            </div>\n                            <div class=\"usertype\">\n                                <div class=\"name\">类型:&nbsp;&nbsp;</div>\n                                <div>\n                                    <nz-select [(ngModel)]=\"selectedtwo\" [nzOptions]=\"listtwo\"></nz-select>\n                                </div>\n                            </div>\n                            <div class=\"userphone\">\n                                <div class=\"name\">号码:&nbsp;&nbsp;</div>\n                                <div>\n                                    <input nz-input [(ngModel)]=\"phonetwo\" />\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"phoneset\" *ngIf=\"phoneset == 3\">\n                            <div class=\"username\">\n                                <div class=\"name\">名称:&nbsp;&nbsp;</div>\n                                <div>\n                                    <input nz-input [(ngModel)]=\"valuethree\" />\n                                </div>\n                            </div>\n                            <div class=\"usertype\">\n                                <div class=\"name\">类型:&nbsp;&nbsp;</div>\n                                <div>\n                                    <nz-select [(ngModel)]=\"selectedthree\" [nzOptions]=\"listthree\"></nz-select>\n                                </div>\n                            </div>\n                            <div class=\"userphone\">\n                                <div class=\"name\">号码:&nbsp;&nbsp;</div>\n                                <div>\n                                    <input nz-input [(ngModel)]=\"phonethree\" />\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"phoneset\" *ngIf=\"phoneset == 4\">\n                            <div class=\"username\">\n                                <div class=\"name\">名称:&nbsp;&nbsp;</div>\n                                <div>\n                                    <input nz-input [(ngModel)]=\"valuefour\" />\n                                </div>\n                            </div>\n                            <div class=\"usertype\">\n                                <div class=\"name\">类型:&nbsp;&nbsp;</div>\n                                <div>\n                                    <nz-select [(ngModel)]=\"selectedfour\" [nzOptions]=\"listfour\"></nz-select>\n                                </div>\n                            </div>\n                            <div class=\"userphone\">\n                                <div class=\"name\">号码:&nbsp;&nbsp;</div>\n                                <div>\n                                    <input nz-input [(ngModel)]=\"phonefour\" />\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"buttonbox\">\n                            <button (click)=\"ensure()\">保存</button>\n                            <!-- <button (click)=\"close()\">关闭</button> -->\n                        </div>\n                    </div>\n                    <div class=\"setting\" *ngIf=\"setnav == 5\">\n                        <div class=\"selectname\">群组模式</div>\n                        <div class=\"pattern\">视频接收模式</div>\n                        <nz-radio-group [(ngModel)]=\"videoFlag\" (ngModelChange)=\"cutvideoFlag()\">\n                            <!-- <label nz-radio nzValue=\"自动接听\">自动接听</label>\n                            <label nz-radio nzValue=\"手动接听\">手动接听</label> -->\n                            <label nz-radio nzValue=\"自动接收\">自动接收</label>\n                            <label nz-radio nzValue=\"手动接收\">手动接收</label>\n                        </nz-radio-group>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"confirmbox\" *ngIf=\"confirm\">\n            <div class=\"confirm\" cdkDrag>\n                <div class=\"setname\">\n                    <div>提示</div>\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"cancel()\"></i>\n                </div>\n                <div class=\"sethint\">设置用户不存在,是否保存</div>\n                <div class=\"setbutton\">\n                    <button (click)=\"save()\">确定</button>\n                    <button (click)=\"cancel()\">取消</button>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  OnInit,\n  ViewChild,\n  Output,\n  EventEmitter,\n} from '@angular/core';\n\n@Component({\n  selector: 'app-localityvideo',\n  templateUrl: './localityvideo.component.html',\n  styleUrls: ['./localityvideo.component.less'],\n})\nexport class LocalityvideoComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @ViewChild('localvideo') localvideo?: any;\n  localStream: any = null;\n  constructor() {}\n  ngOnInit(): void {\n    this.video();\n  }\n  ngOnDestroy(){\n    // 销毁触发\n    this.refuse()\n  }\n  video = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: true,\n        audio: false,\n      };\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          this.localStream = stream;\n          this.localvideo.nativeElement.srcObject = stream;\n        })\n        .catch(this.handleError);\n    }\n  };\n  handleError() {}\n  refuse() {\n    // console.log('关闭');\n    this.localStream.getTracks().forEach((track: any) => {\n      track.stop();\n    });\n    \n    this.localvideo.nativeElement.srcObject = null;\n    this.outer.emit({ data: false });\n  }\n}\n","<div class=\"local\" appDrag>\n    <div class=\"closeout\">\n        <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"refuse()\"></i>\n    </div>\n    <video src=\"\" #localvideo autoplay playsinline></video>\n</div>","import {\n  Component,\n  Input,\n  OnInit,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { ResourceService } from '../../protocol/resource/resource.service';\nimport { cache } from '../../protocol/rtc/cache';\nimport { RxService } from '../../protocol/rtc/rx.service';\n\n@Component({\n  selector: 'app-avradiotree',\n  templateUrl: './avradiotree.component.html',\n  styleUrls: ['./avradiotree.component.less'],\n})\nexport class AvradiotreeComponent implements OnInit {\n  @Input() uservalue: any = '';\n  rawData: any = '';\n  arr: any = []; //渲染列表\n  shows: boolean = true;\n  searchtype: number = 1;\n  newarr: any = [];\n  userListtypes = '';\n  userName = '';\n  facilitylist = [];\n  constructor(private datastact: ResourceService, private rx: RxService) {}\n  ngOnInit(): void {\n    this.rawData = this.datastact.userlist;\n    this.chi(this.rawData.childs);\n    // console.log(this.arr);\n    this.userListtypes = this.datastact.userType;\n    this.userName = this.rx.userName;\n    this.merge();\n  }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.uservalue) {\n      this.arr = this.rawData.childs;\n      this.merge();\n      if (this.uservalue == '') {\n        this.searchtype = 1;\n      } else {\n        if (this.rebuildData(this.uservalue, this.arr).length == 0) {\n          this.searchtype = 2;\n        } else {\n          this.arr = this.rebuildData(this.uservalue, this.arr);\n        }\n      }\n    }\n  }\n  rebuildData(value: any, arr: any) {\n    this.newarr = [];\n    arr.forEach((element: any) => {\n      if (element.info.userName != undefined) {\n        if (element.info.userName.indexOf(value) > -1) {\n          // 判断条件\n          this.newarr.push(element);\n        } else {\n          if (element.info.childs && element.info.childs.length > 0) {\n            let redata = this.rebuildData(value, element.info.childs);\n            let obj = {\n              ...element,\n              children: redata,\n            };\n            if (redata && redata.length > 0) {\n              this.newarr.push(obj);\n            }\n          }\n        }\n      }\n    });\n    return this.newarr;\n  }\n\n  chi(obj: any) {\n    this.arr = [];\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n  // 修改本机状态\n  merge() {\n    // console.log(this.arr);\n    if(this.arr.length>0){\n      for (let i = 0; i < this.arr.length; i++) {\n        let arr = this.arr[i].info.userID;\n        for (let j = 0; j < this.userListtypes.length; j++) {\n          let type: any = this.userListtypes[j];\n          if (arr == type.userID) {\n            this.arr[i].info.type = type;\n          }\n        }\n      }\n      for (let i = 0; i < this.arr.length; i++) {\n        let arr = this.arr[i].info.userID;\n        if (arr == this.rx.userID) {\n          this.arr.splice(i, 1);\n        }\n      }\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  usercheck(ev: any) {\n    if (ev.show == true) {\n      ev.show = false;\n    } else {\n      for (let i = 0; i < this.arr.length; i++) {\n        this.arr[i].show = false;\n      }\n      ev.show = true;\n    }\n  }\n}\n","<div *ngIf=\"searchtype == 1\">\n    <div class=\"root\" *ngIf=\"rawData.root\">\n        <div [style.display]=\"shows ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_down.png\" alt=\"\" />\n        </div>\n        <div [style.display]=\"!shows ? 'block' : 'none'\" class=\"imgbox\" (click)=\"show()\">\n            <img src=\"assets/img/white_branch_right.png\" alt=\"\" />\n        </div>\n        <div class=\"userName \">\n            {{ rawData.root }}\n        </div>\n    </div>\n    <div [style.display]=\"shows ? 'block' : 'none'\">\n        <div *ngFor=\"let item of arr; let i=index\">\n            <div class=\"userbox \">\n                <div *ngIf=\"item.info \">\n                    <div class=\"checkbox\" (click)=\"usercheck(item)\" *ngIf=\"item.info.type.devStatus==1||item.info.type.devStatus==2\">\n                        <i nz-icon nzType=\"check\" nzTheme=\"outline\" *ngIf=\"item.show \"></i>\n                    </div>\n                    <div class=\"checkbox\" *ngIf=\"item.info.type.devStatus==0\">\n                        <i nz-icon nzType=\"close\" nzTheme=\"outline\"></i>\n                    </div>\n                </div>\n                <div class=\"userstatus\" *ngIf=\"item.info.type \">\n                    <div class=\"infoimg\" *ngIf=\"item.info.type.devStatus==0 \">\n                        <img src=\"assets/img/head.png \" alt=\" \" />\n                    </div>\n                    <div class=\"buleStatus \" *ngIf=\"item.info.type.devStatus==1 \">\n                        <img src=\"assets/img/head.png \" alt=\" \" />\n                    </div>\n                    <div class=\"greenStatus \" *ngIf=\"item.info.type.devStatus==2 \">\n                        <img src=\"assets/img/head.png \" alt=\" \" />\n                    </div>\n                </div>\n                <div class=\"tpye \" *ngIf=\"item.info \">\n                    <img src=\"assets/img/type_android.png \" alt=\" \" *ngIf=\"item.info.userType=='1' \" />\n                    <img src=\"assets/img/type_pc.png \" alt=\" \" *ngIf=\"item.info.userType=='2' \" />\n                    <img src=\"assets/img/type_IPC.png \" alt=\" \" *ngIf=\"item.info.userType=='3' \" />\n                    <img src=\"assets/img/type_DB.png \" alt=\" \" *ngIf=\"item.info.userType=='4' \" />\n                </div>\n                <div class=\"userName\" *ngIf=\"item.info\">\n                    {{ item.info.userName }}\n                </div>\n                <div class=\"state\" *ngIf=\"item.info \">\n                    <div *ngIf=\"item.info.type.devStatus==0 \" class=\"offline\">\n                        离线\n                    </div>\n                    <div *ngIf=\"item.info.type.devStatus==1 \" class=\"online\">\n                        在线\n                    </div>\n                    <div *ngIf=\"item.info.type.devStatus==2 \" class=\"telephone\">\n                        通话\n                    </div>\n                </div>\n\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"searchtype==2\" class=\"searching \">未检索的到用户</div>","import {\n  Component,\n  OnInit,\n  Output,\n  EventEmitter,\n  ViewChild,\n} from '@angular/core';\n\n@Component({\n  selector: 'app-avtransition',\n  templateUrl: './avtransition.component.html',\n  styleUrls: ['./avtransition.component.less'],\n})\nexport class AvtransitionComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  @ViewChild('cart') cart: any;\n  inputValue?: string;\n  uservalue: any = '';\n  constructor() {}\n\n  ngOnInit(): void {}\n  close() {\n    let data = {\n      modal: true,\n    };\n    this.outer.emit(data);\n  }\n  userTree() {\n    this.uservalue = this.inputValue;\n  }\n  userempty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  persontransfer() {\n    let arr = this.rebuildData(this.cart.arr);\n    if (arr.length > 0) {\n      let data = {\n        phonetransfer: arr[0],\n      };\n      this.outer.emit(data);\n    } else {\n      //没有选择\n    }\n  }\n  rebuildData(arr: any) {\n    let newarr: any = [];\n    arr.forEach((element: any) => {\n      if (element.show == true) {\n        newarr.push(element);\n      }\n    });\n    return newarr;\n  }\n}\n","<div class=\"fullscreen\">\n    <div class=\"box\">\n        <div class=\"drag\" cdkDrag>\n            <div class=\"cutuser\" cdkDragHandle>\n                <div class=\"title\">选择用户</div>\n                <div class=\"closebox\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"close()\"></i>\n                </div>\n            </div>\n            <div class=\"searchbox\">\n                <div class=\"search\">\n                    <nz-input-group [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"inputClear\">\n                        <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"userTree()\" />\n                    </nz-input-group>\n                    <ng-template #prefixTemplate><i nz-icon nzType=\"search\"></i\n        ></ng-template>\n        <ng-template #inputClear>\n          <div *ngIf=\"inputValue\">\n            <i\n              nz-icon\n              nzType=\"close-circle\"\n              nzTheme=\"outline\"\n              (click)=\"userempty()\"\n            ></i>\n                </div>\n                </ng-template>\n            </div>\n        </div>\n        <div class=\"treebox\">\n            <app-avradiotree #cart [uservalue]=\"uservalue\"></app-avradiotree>\n        </div>\n        <div class=\"buttonbox\">\n            <button (click)=\"persontransfer()\">确定</button>\n            <button (click)=\"close()\">取消</button>\n        </div>\n    </div>\n</div>\n</div>","import { Component, OnInit, EventEmitter, Output } from '@angular/core';\r\nimport { AvService } from '../../protocol/rtc/av.service';\r\nimport { ResourceService } from '../../protocol/resource/resource.service';\r\n@Component({\r\n  selector: 'app-dial',\r\n  templateUrl: './dial.component.html',\r\n  styleUrls: ['./dial.component.less'],\r\n})\r\nexport class DialComponent implements OnInit {\r\n  @Output() private outer = new EventEmitter<any>();\r\n  dial: boolean = false;\r\n  value: any = '';\r\n  items = [\r\n    { text: '1', isClicked: false },\r\n    { text: '2', isClicked: false },\r\n    { text: '3', isClicked: false },\r\n    { text: '4', isClicked: false },\r\n    { text: '5', isClicked: false },\r\n    { text: '6', isClicked: false },\r\n    { text: '7', isClicked: false },\r\n    { text: '8', isClicked: false },\r\n    { text: '9', isClicked: false },\r\n    { text: '*', isClicked: false },\r\n    { text: '0', isClicked: false },\r\n    { text: '#', isClicked: false },\r\n    // Add more items as needed\r\n  ];\r\n  person:any\r\n  constructor(private AV: AvService,    private datastate: ResourceService,) {}\r\n\r\n  ngOnInit(): void {\r\n    this.person = this.datastate.module.person;\r\n  }\r\n  sendParent() {\r\n    this.outer.emit(this.dial);\r\n  }\r\n  addphone(ev: any) {\r\n    if (this.value.length > 20) {\r\n    } else {\r\n      this.value = this.value + ev;\r\n    }\r\n  }\r\n  reset() {\r\n    this.value = '';\r\n  }\r\n  swap() {\r\n    if (this.value != '') {\r\n      this.value = this.value.substring(0, this.value.length - 1);\r\n    }\r\n  }\r\n  // 发送信息\r\n  chat() {\r\n    if (this.value == '') {\r\n    } else {\r\n      let data = {\r\n        type: true,\r\n        nav: this.value,\r\n      };\r\n      this.outer.emit(data);\r\n    }\r\n  }\r\n  clvoice() {\r\n    if(this.value == ''){\r\n\r\n    }else {\r\n      this.AV.callonevoice(this.value);\r\n      this.sendParent();\r\n    }\r\n  }\r\n  callme() {\r\n    if (this.value == '') {\r\n    } else {\r\n      this.AV.callonevideo(this.value);\r\n      this.sendParent();\r\n    }\r\n  }\r\n}\r\n\r\n","<div class=\"box\">\n    <div class=\"navbox\">\n        <div class=\"nav\" cdkDrag>\n            <div class=\"setname\" cdkDragHandle>\n                <div class=\"name\">拨号</div>\n                <div class=\"close\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent()\"></i>\n                </div>\n            </div>\n            <div class=\"sethint\">\n                <div class=\"dialinputbox\">\n                    <div class=\"dialinput\">\n                        <nz-input-group [nzSuffix]=\"inputClearTpl\">\n                            <input type=\"text\" nz-input [(ngModel)]=\"value\" placeholder=\"请输入\" />\n                        </nz-input-group>\n                        <ng-template #inputClearTpl>\n                            <span nz-icon class=\"ant-input-clear-icon\" nzTheme=\"fill\" nzType=\"close-circle\" *ngIf=\"value\" (click)=\"value = ''\"></span>\n                        </ng-template>\n                    </div>\n                    <div class=\"clearinput\">\n                        <button nz-button nzType=\"primary\" (click)=\"swap()\"><i nz-icon nzType=\"swap-left\" nzTheme=\"outline\"></i></button>\n                    </div>\n                </div>\n                <div class=\"dial\">\n                    <div class=\"keyboardbox\">\n                        <ng-container *ngFor=\"let item of items\">\n                            <div class=\"keyboard\" [ngClass]=\"{'blue-background': item.isClicked, 'white-background': !item.isClicked}\" (mousedown)=\"item.isClicked = true\" (mouseup)=\"item.isClicked = false\">\n                                <div class=\"number\" (click)=\"addphone(item.text)\">{{item.text}}</div>\n                            </div>\n                        </ng-container>\n                    </div>\n                    <div class=\"callbox\">\n                        <div class=\"vodcll\">\n                            <div class=\"informationleft\" (click)=\"chat()\" *ngIf=\"person.message\"></div>\n                        </div>\n                        <div class=\"vodcll\">\n                            <div class=\"voicelest\" (click)=\"clvoice()\" *ngIf=\"person.audioCall\"></div>\n                        </div>\n                        <div class=\"vodcll\">\n                            <div class=\"videoleft\" (click)=\"callme()\" *ngIf=\"person.videoCall\"></div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { ResourceService } from '../../protocol/resource/resource.service';\nimport { RxService } from '../../protocol/rtc/rx.service';\n@Component({\n  selector: 'app-selectbroad',\n  templateUrl: './selectbroad.component.html',\n  styleUrls: ['./selectbroad.component.less'],\n})\nexport class SelectbroadComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  devarr: any = [];\n  arr: any = [];\n  devlist: any;\n  userlist: any;\n  userListtype: any;\n  shows: any = true;\n  check: boolean = false;\n  indeterminate = false;\n  constructor(private datastate: ResourceService, private rx: RxService) {}\n\n  ngOnInit(): void {\n    this.userlist = this.datastate.userlist;\n    this.chi(this.userlist.childs);\n    this.userListtype = this.datastate.userType;\n    this.merge();\n    this.devlist = this.datastate.equipmentlist;\n    this.csh(this.devlist.deviceList);\n    this.updateSingleChecked()\n    this.deleteid()\n  }\n  close() {\n    let data = {\n      selectbroad: true,\n    };\n    this.outer.emit(data);\n  }\n  chi(obj: any) {\n    for (let i in obj) {\n      obj[i].show = false;\n      this.arr.push(obj[i]);\n    }\n  }\n  merge() {\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      for (let j = 0; j < this.userListtype.length; j++) {\n        let type: any = this.userListtype[j];\n        if (arr == type.userID) {\n          this.arr[i].info.type = type;\n        } \n      }\n    }\n    for (let i = 0; i < this.arr.length; i++) {\n      let arr = this.arr[i].info.userID;\n      if (arr == this.rx.userID) {\n        this.arr.splice(i, 1);\n      }\n    }\n  }\n  deleteid(){\n    for (let i = 0; i < this.devarr.length; i++) {\n      let arr = this.devarr[i].deviceType;\n      if (arr =='2') {\n        this.devarr.splice(i, 1);\n        i--\n      }\n    }\n  }\n  csh(obj: any) {\n    for (let i in obj) {\n      obj[i].show = false;\n      this.devarr.push(obj[i]);\n    }\n  }\n  show() {\n    this.shows = !this.shows;\n  }\n  allcheck() {\n    this.indeterminate = false;\n    if (this.check == true) {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        show: true,\n      }));\n      this.devarr = this.devarr.map((item: any) => ({\n        ...item,\n        show: true,\n      }));\n    } else {\n      this.arr = this.arr.map((item: any) => ({\n        ...item,\n        show: false,\n      }));\n      this.devarr = this.devarr.map((item: any) => ({\n        ...item,\n        show: false,\n      }));\n    }\n  }\n  updateSingleChecked(): void {\n    if (this.arr.every((item: any) => !item.show)&&this.devarr.every((item: any) => !item.show)) {\n      this.check = false;\n      this.indeterminate = false;\n    } else if (this.arr.every((item: any) => item.show)&&this.devarr.every((item: any) => item.show)) {\n      this.check = true;\n      this.indeterminate = false;\n    } else {\n      this.indeterminate = true;\n    }\n  }\n  personamend() {\n    let broadcast = '';\n    for (let i = 0; i < this.arr.length; i++) {\n      if (this.arr[i].show == true) {\n        broadcast += this.arr[i].info.userID + ';';\n      }\n    }\n    for (let i = 0; i < this.devarr.length; i++) {\n      if (this.devarr[i].show == true) {\n        broadcast += this.devarr[i].deviceID + ';';\n      }\n    }\n    if (broadcast == '') {\n    } else {\n      let data: any = {\n        memListID: this.rx.userID + ';' + broadcast,\n        broadcastName: this.rx.userName,\n        describe: '',\n        isTemp: '1',\n      };\n      this.rx.createBroadcastGroup(data);\n      let cutdata = {\n        cutbroad: true,\n      };\n      this.outer.emit(cutdata);\n    }\n  }\n}\n","<div class=\"fullscreen\">\n    <div class=\"box\">\n        <div class=\"drag\" cdkDrag>\n            <div class=\"usertitle\" cdkDragHandle>\n                <div class=\"title\">选择设备</div>\n                <div class=\"closebox\">\n                    <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"close()\"></i>\n                </div>\n            </div>\n            <div class=\"list\">\n                <div (click)=\"show()\" class=\"listbox\">\n                    <div>\n                        <label nz-checkbox [(ngModel)]=\"check\" [nzIndeterminate]=\"indeterminate\" (ngModelChange)=\"allcheck()\"></label>\n                    </div>\n                    <div [style.display]=\" shows ? 'block' : 'none' \" class=\"imgbox \">\n                        <img src=\"assets/img/white_branch_down.png \" alt=\" \" />\n                    </div>\n                    <div [style.display]=\"!shows ? 'block' : 'none' \" class=\"imgbox \">\n                        <img src=\"assets/img/white_branch_right.png \" alt=\" \" />\n                    </div>\n                    <div class=\"root \">\n                        {{ userlist.root }}\n                    </div>\n                    <div class=\"blank \"></div>\n                </div>\n                <div [style.display]=\"shows ? 'block' : 'none' \">\n                    <div *ngFor=\"let item of arr; let i=index \">\n                        <div class=\"itembox \" *ngIf=\"item.info \">\n                            <div>\n                                <label nz-checkbox [(ngModel)]=\"item.show\" (ngModelChange)=\"updateSingleChecked()\"></label>\n                            </div>\n                            <div class=\"itemimg \">\n                                <div><img src=\"assets/img/人员.png \" alt=\" \" /></div>\n                            </div>\n                            <div class=\"itemname \">\n                                {{ item.info.userName }}\n                            </div>\n                            <div class=\"itemtpye \" *ngIf=\"item.info.type \">\n                                <div *ngIf=\"item.info.type.devStatus==0 \" style=\"color: #a09f9f \">\n                                    离线\n                                </div>\n                                <div *ngIf=\"item.info.type.devStatus==1 \" style=\"color: #5898d7 \">\n                                    在线\n                                </div>\n                                <div *ngIf=\"item.info.type.devStatus==2 \" style=\"color: #3ca02d \">\n                                    通话\n                                </div>\n                            </div>\n\n                        </div>\n                        <div class=\"childs \" *ngIf=\"item.info.childs \">\n                            <div (click)=\"item.show=! item.show \" class=\"listbox \">\n                                <div [style.display]=\"item.show ? 'block' : 'none' \" class=\"imgbox \">\n                                    <img src=\"assets/img/white_branch_down.png \" alt=\" \" />\n                                </div>\n                                <div [style.display]=\"!item.show ? 'block' : 'none' \" class=\"imgbox \">\n                                    <img src=\"assets/img/white_branch_right.png \" alt=\" \" />\n                                </div>\n                                <div class=\"root \">\n                                    {{ item.info.root }}\n                                </div>\n                                <div class=\"blank \"></div>\n                            </div>\n                            <div [style.display]=\"item.show ? 'block' : 'none' \">\n                                <div *ngFor=\"let items of item.info.childs; let i=index \">\n                                    <div *ngIf=\"items.info.groupName \" class=\"groupName \">\n                                        {{ items.info.groupName }}\n                                    </div>\n                                    <div *ngIf=\"items.info.root \" class=\"groupName \">\n                                        {{ items.info.root }}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div (click)=\"show() \" class=\"listbox \">\n                    <div [style.display]=\"shows ? 'block' : 'none' \" class=\"imgbox \">\n                        <img src=\"assets/img/white_branch_down.png \" alt=\" \" />\n                    </div>\n                    <div [style.display]=\"!shows ? 'block' : 'none' \" class=\"imgbox \">\n                        <img src=\"assets/img/white_branch_right.png \" alt=\" \" />\n                    </div>\n                    <div class=\"root \">\n                        {{ devlist.root }}\n                    </div>\n                    <div class=\"blank \"></div>\n                </div>\n                <div [style.display]=\"shows ? 'block' : 'none' \">\n                    <div *ngFor=\"let item of devarr; let i=index \">\n                        <div class=\"itembox\" *ngIf=\"item.deviceType == 1\">\n                            <div>\n                                <label nz-checkbox [(ngModel)]=\"item.show\" (ngModelChange)=\"updateSingleChecked()\"></label>\n                            </div>\n                            <div class=\"itemimg \">\n                                <div class=\"infoimg \" *ngIf=\"item.deviceStatus==0 \">\n                                    <img src=\"assets/img/ic_device.png \" alt=\" \" />\n                                </div>\n                                <div class=\"buleStatus \" *ngIf=\"item.deviceStatus==1 \">\n                                    <img src=\"assets/img/ic_device.png \" alt=\" \" />\n                                </div>\n                            </div>\n                            <div class=\"itemname \">\n                                {{ item.deviceName }}\n                            </div>\n                            <div class=\"itemtpye \">\n                                <div *ngIf=\"item.deviceStatus==0 \" style=\"color: #a09f9f \">\n                                    离线\n                                </div>\n                                <div *ngIf=\"item.deviceStatus==1 \" style=\"color: #5898d7 \">\n                                    在线\n                                </div>\n                                <div *ngIf=\"item.deviceStatus==2 \" style=\"color: #3ca02d \">\n                                    通话\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"buttonbox \">\n                <button (click)=\"personamend() \">确定</button>\n                <button (click)=\"close() \">取消</button>\n            </div>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  ElementRef,\n  HostListener,\n  OnInit,\n  QueryList,\n  ViewChildren,\n  Input,\n  SimpleChange,\n  SimpleChanges,\n} from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { OverallService } from './common/overall.service';\nimport { VoiceComponent } from './components/voice/voice.component';\nimport { ResourceService } from './protocol/resource/resource.service';\nimport { cache } from './protocol/rtc/cache';\nimport { state } from './protocol/rtc/icstDefines';\nimport { RxService } from './protocol/rtc/rx.service';\nimport { WebService } from './protocol/rtc/web.service';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { AvService } from './protocol/rtc/av.service';\nimport { TalkGroupList, Userlist } from './protocol/rtc/resource';\n\n@Component({\n  selector: 'owoMain',\n  templateUrl: './owosdk.component.html',\n  styleUrls: ['./owosdk.component.less'],\n})\nexport class OwosdkComponent implements OnInit {\n  @Input() modules: any;\n  username: any; //用户名字\n  featureArray: any;\n  addressState: boolean = false;\n  status: boolean = true;\n  onecall: any;\n  callnav: any;\n  calltypes: any;\n  item: any = 0;\n  today: any = Date.now();\n  timer: any;\n  week: any;\n  hinttype = 4;\n  calltype: boolean = false;\n  onemessage: boolean = false;\n  chatnav: any = '';\n  cmsmessage: any = '';\n  portraitState: boolean = false;\n  userquit: boolean = false;\n  volumeState: boolean = false;\n  microphoneState: boolean = false;\n  volumenumber: number = 100;\n  recordnumber: number = 100;\n  talkgroupitem: any = '';\n  meetingmessage: boolean = false;\n  discussionmessane: any = '';\n  voice: boolean = false;\n  voicenav: any = '';\n  meetinghint: boolean = false;\n  cmschatnav: any = '';\n  videomeeting: any = '';\n  cmsvideo: any = '';\n  inputValue?: string;\n  uservalue: any = '';\n  hint = false;\n  overallvolume: number = 1;\n  recordvolume: number = 1;\n  broadside: boolean = false;\n  operationclass = 'operation';\n  leftsider: boolean = false;\n  active: number = 0;\n  messagestate: number = 0;\n  reminderlist: any[] = [];\n  phonelist: any[] = [];\n  messagelist: any[] = [];\n  communicate: boolean = false;\n  modal: boolean = false;\n  groupbusy: boolean = false;\n  modaltype = '';\n  groupbusylist: any[] = [];\n  personlist: any[] = [];\n  statuslist: any[] = [];\n  setting: boolean = false;\n  heatraylist: any = [];\n  isFullscreen = false;\n  localshow = false;\n  subscription: any;\n  chatscription: any;\n  meetingscription: any;\n  videoshowscription: any;\n  cutpagescription: any;\n  cuthomepagescription: any;\n  meetinglist: any[] = [];\n  cutmeetingshow: boolean = false;\n  meetingnav: any;\n  reminderactive: any = -1; //呼叫列表选中\n  avmodal = false;\n  reminderdata: any = '';\n  phoneactive: any = -1;\n  dialshow = false; //拨号显示\n  passwardshow: boolean = false;\n  originalpass = '';\n  modificationpass = '';\n  affirmpass = '';\n  module: any;\n  broadcastshow: boolean = false;\n  iconshow: boolean = true;\n  constructor(\n    private ws: WebService,\n    private datastate: ResourceService,\n    private rx: RxService,\n    public el: ElementRef,\n    private sendService: OverallService,\n    private AV: AvService,\n    private message: NzMessageService\n  ) {\n    this.timer = setInterval(() => {\n      this.today = new Date();\n    }, 1000);\n    this.week = this.transform(this.today);\n    this.subscription = this.AV.incoming$.subscribe((message) => {\n      this.reminderlist = message;\n    });\n    this.chatscription = this.AV.chat$.subscribe((message) => {\n      this.phonelist = message;\n    });\n    this.videoshowscription = this.AV.videoshow$.subscribe((message) => {\n      this.localshow = message.data;\n    });\n    this.meetingscription = this.AV.meeting$.subscribe((message) => {\n      this.meetinglist = message;\n    });\n    this.cutpagescription = this.AV.cutpage$.subscribe((message) => {\n      this.item = message.item;\n    });\n    this.cuthomepagescription = this.AV.cuthomepage$.subscribe((message) => {\n      this.active = message.data;\n    });\n  }\n  ngOnInit(): void {\n    // window.onbeforeunload = (event) => {\n    //   (event || window.event).returnValue = '还未保存是否离开';\n    //   // 这里写关闭时需要处理的时间，刷新也会执行这里的方法\n    // };\n    this.sendService.sendsider(true);\n    this.ws.wssend$.subscribe((ev: any) => {\n      let nav = JSON.parse(ev.jsonStr);\n      // console.log(nav)\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let cmdBody = nav.cmdBody;\n      let resultdata = nav.resultData;\n      switch (respcmdid) {\n        case state.OWO_CMD_CHAT_BARGE_IN + 1: {\n          this.AV.addchatoverride(resultdata);\n          break;\n        }\n        case state.OWO_CMD_CHAT_INTERCEPT + 1: {\n          this.AV.addchatdata(resultdata);\n          break;\n        }\n        case state.OWO_CMD_CHAT_REQUEST + 1: {\n          this.AV.adddialogID(resultdata);\n          break;\n        }\n        case state.OWO_CMD_MAP_STATIC_POINT_GET + 1: {\n          this.featureArray = resultdata.staticPointList;\n          break;\n        }\n        case state.OWO_CMD_GET_MEMLIST + 1: {\n          this.datastate.userlist = resultdata;\n          let user = new Userlist();\n          user.storage(resultdata);\n          break;\n        }\n        case state.OWO_CMD_TALKGROUP_GET_LIST + 1: {\n          this.datastate.talkGroupList = resultdata.talkGroupList;\n          let talk = new TalkGroupList();\n          talk.storage(resultdata.talkGroupList);\n          break;\n        }\n        case state.OWO_CMD_GET_MEMLIST_STATUS + 1: {\n          this.datastate.userType = resultdata.userList;\n          this.statuslist = resultdata.userList;\n          break;\n        }\n        case state.OWO_CMD_GET_DEV_LIST + 1: {\n          this.datastate.equipmentlist = resultdata;\n          break;\n        }\n        case state.OWO_CMD_USER_LOAD_CACHE + 1: {\n          console.log('权限')\n          let data = resultdata.cache;\n          if (resultdata.cache == '') {\n            let eva = JSON.stringify(cache);\n            this.rx.savecache(eva);\n          } else {\n            let save = JSON.parse(data);\n            if (save.group == undefined) {\n              cache.group = '';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.person == undefined) {\n              cache.group = save.group;\n              cache.person = '';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.equipment == undefined) {\n              cache.group = save.group;\n              cache.person = save.person;\n              cache.equipment = '';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.message == undefined) {\n              cache.group = save.group;\n              cache.person = save.person;\n              cache.equipment = save.equipment;\n              cache.message = <any[]>[];\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.setting == undefined) {\n              cache.group = save.group;\n              cache.person = save.person;\n              cache.equipment = save.equipment;\n              cache.message = save.message;\n              cache.setting = <any[]>[\n                {\n                  name: '热线1',\n                  type: '用户',\n                  phone: '',\n                },\n                {\n                  name: '热线2',\n                  type: '用户',\n                  phone: '',\n                },\n                {\n                  name: '热线3',\n                  type: '用户',\n                  phone: '',\n                },\n                {\n                  name: '热线4',\n                  type: '用户',\n                  phone: '',\n                },\n              ];\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.voice == undefined) {\n              cache.voice = '声音';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.answer == undefined) {\n              cache.answer = '手动应答';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.resolution == undefined) {\n              cache.resolution = '1280x960';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.fps == undefined) {\n              cache.fps = '30';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.coderate == undefined) {\n              cache.coderate = '500000';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.transfer == undefined) {\n              cache.transfer = '2';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.echo == undefined) {\n              cache.echo = '100ms';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.largelist == undefined) {\n              cache.largelist = <any[]>[];\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.videochecked == undefined) {\n              cache.videochecked = true;\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.meetingchecked == undefined) {\n              cache.meetingchecked = true;\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.broadcast == undefined) {\n              cache.broadcast = '';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.personlist == undefined) {\n              cache.personlist = [];\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.equipmentlist == undefined) {\n              cache.equipmentlist = [];\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else if (save.videoFlag == undefined) {\n              cache.videoFlag = '手动接收';\n              let eva = JSON.stringify(cache);\n              this.rx.savecache(eva);\n            } else {\n              cache.group = save.group;\n              cache.personlist = save.personlist;\n              cache.equipmentlist = save.equipmentlist;\n              cache.person = save.person;\n              cache.equipment = save.equipment;\n              cache.message = save.message;\n              cache.setting = save.setting;\n              cache.voice = save.voice;\n              cache.answer = save.answer;\n              cache.resolution = save.resolution;\n              cache.fps = save.fps;\n              cache.coderate = save.coderate;\n              cache.transfer = save.transfer;\n              cache.echo = save.echo;\n              cache.largelist = save.largelist;\n              cache.videochecked = save.videochecked;\n              cache.meetingchecked = save.meetingchecked;\n              cache.broadcast = save.broadcast;\n              if (\n                save.videoFlag != '自动接收' &&\n                save.videoFlag != '手动接收'\n              ) {\n                cache.videoFlag = '手动接收';\n                let eva = JSON.stringify(cache);\n                this.rx.savecache(eva);\n              } else {\n                cache.videoFlag = save.videoFlag;\n              }\n              if (save.answer != '手动应答' && save.answer != '自动应答') {\n                cache.answer = '手动应答';\n                let eva = JSON.stringify(cache);\n                this.rx.savecache(eva);\n              } else {\n                cache.answer = save.answer;\n              }\n              this.newmessage();\n              this.heatray();\n            }\n          }\n          break;\n        }\n        case state.OWO_CMD_USER_SAVE_CACHE + 1: {\n          this.rx.loadcache();\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_START + 1: {\n          this.rx.gainAudioConference(); //获取视频会议列表\n          break;\n        }\n\n        default:\n          break;\n      }\n      switch (cmdid) {\n        case state.OWO_CMD_MSGDLG_SEND_MSG:\n          cmdBody.timer = this.getNowFormatDate();\n          if (cache.message.length == 0) {\n            cache.message.unshift(cmdBody);\n          } else {\n            let label = false;\n            for (let i = 0; i < cache.message.length; i++) {\n              if (cache.message[i].srcID == cmdBody.srcID) {\n                cache.message[i] = cmdBody;\n                label = true;\n              }\n            }\n            if (label == false) {\n              cache.message.unshift(cmdBody);\n            }\n          }\n          let eva = JSON.stringify(cache);\n          this.rx.savecache(eva);\n          this.newmessage();\n          if (this.onemessage == false) {\n            this.onemessage = true;\n            this.meetingmessage = false;\n            this.cmsmessage = cmdBody;  \n          } else if (this.onemessage == true) {\n            this.cmsmessage = cmdBody;\n          }\n          break;\n        case state.OWO_CMD_MSGGROUP_SEND_MSG: {\n          if (this.meetingmessage == true) {\n            this.discussionmessane = nav.cmdBody;\n          } else if (this.meetingmessage == false) {\n            this.onemessage = false;\n            this.meetingmessage = true;\n            this.discussionmessane = cmdBody;\n          }\n          break;\n        }\n\n        case state.OWO_CMD_CHAT_REQUEST_BK: {\n          if (nav.cmdBody.permission == 2) {\n            let data = { dialogID: nav.cmdBody.dialogID };\n            this.AV.delete(data);\n            // console.log('挂断');\n          } else if (nav.cmdBody.permission == 1) {\n            // console.log('接通');\n            this.AV.addchat(nav.cmdBody);\n          }\n          break;\n        }\n        case state.OWO_CMD_CHAT_REQUEST: {\n          // cms语音呼叫\n          let cmschat = {\n            phonetype: cmdBody.requestType,\n            userName: cmdBody.srcID,\n            cmschat: cmdBody,\n            callout: '2',\n          };\n          this.AV.callVideo(cmschat);\n          break;\n        }\n        case state.OWO_CMD_CHAT_CLOSE: {\n          // console.log('关闭');\n          let data = { dialogID: cmdBody.dialogID };\n          this.AV.delete(data);\n          break;\n        }\n        case state.OWO_CMD_VIDEOMEET_START: {\n          // cms开启视频会议\n          let cmschat = {\n            phonetype: '4',\n            userName: cmdBody.videoMeetName,\n            cmschat: cmdBody,\n            callout: '2',\n          };\n          this.AV.callVideo(cmschat);\n          this.rx.viodeList(); //获取视频会议列表\n          break;\n        }\n        default:\n          break;\n      }\n    });\n    this.username = this.rx.userName;\n    this.module = this.datastate.module;\n    this.cutitem();\n    if (\n      this.module.person.audioCall == 0 ||\n      this.module.person.videoCall == 0 ||\n      this.module.meeting.enable == 0 ||\n      this.module.person.message == 0\n    ) {\n      this.operation();\n      this.iconshow = false;\n    }\n  }\n  // ngOnChanges() {\n  //   this.module = this.datastate.module;\n  // }\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    if (changes.modules) {\n      console.log(this.modules);\n      this.module = this.modules\n    }\n  }\n\n  ngOnDestroy() {\n    // 销毁时清除数据\n    this.datastate.equipmentlist = '';\n    this.datastate.userlist = '';\n    this.datastate.talkGroupList = '';\n    this.datastate.videoMeetList = '';\n    this.datastate.audioMeetList = '';\n    this.datastate.userType = '';\n    this.datastate.equipmentstact = '';\n    this.subscription.unsubscribe();\n    this.chatscription.unsubscribe();\n    this.videoshowscription.unsubscribe();\n    this.meetingscription.unsubscribe();\n    this.cutpagescription.unsubscribe();\n    this.cuthomepagescription.unsubscribe();\n  }\n  cutitem() {\n    if (this.module.video.enable == 1) {\n      this.item = 0;\n      return;\n    } else if (this.module.group.enable == 1) {\n      this.item = 1;\n      return;\n    } else if (this.module.person.enable == 1) {\n      this.item = 5;\n      return;\n    } else if (this.module.device.enable == 1) {\n      this.item = 6;\n      return;\n    } else if (this.module.meeting.enable == 1) {\n      this.item = 2;\n      return;\n    } else if (this.module.broadcast.enable == 1) {\n      this.item = 9;\n      return;\n    } else if (this.module.map.enable == 1) {\n      this.item = 3;\n      return;\n    } else if (this.module.screen.enable == 1) {\n      this.item = 7;\n      return;\n    } else if (this.module.plan.enable == 1) {\n      this.item = 8;\n      return;\n    } else if (this.module.history.enable == 1) {\n      this.item = 4;\n      return;\n    } else if (this.module.alarm.enable == 1) {\n      this.item = 10;\n      return;\n    } else if (this.module.data.enable == 1) {\n      this.item = 11;\n      return;\n    }\n  }\n  modificationdst(ev: any) {\n    for (let i = 0; i < this.phonelist.length; i++) {\n      if (this.phonelist[i].cmschat.dialogID == ev.eventParam.dialogID) {\n        if (ev.eventParam.dstID == this.rx.userID) {\n          this.phonelist[i].userName = ev.eventParam.srcID;\n        } else if (ev.eventParam.srcID == this.rx.userID) {\n          this.phonelist[i].userName = ev.eventParam.dstID;\n        }\n      }\n    }\n  }\n  // 日期设置\n  transform(value: any): any {\n    if (value !== undefined) {\n      let weekArray = new Array(\n        '星期日',\n        '星期一',\n        '星期二',\n        '星期三',\n        '星期四',\n        '星期五',\n        '星期六'\n      );\n      let myDate = new Date(value);\n      let week = weekArray[myDate.getDay()];\n      return week;\n    }\n  }\n  titles(ev: number) {\n    if (ev == 3) {\n      this.rx.gainGPS(this.datastate.gainalllist());\n    }\n    this.item = ev;\n    this.AV.titleactive = ev;\n  }\n  run(ev: any) {\n    this.calltype = false;\n  }\n\n  voiceout(ev: any) {\n    this.voice = ev;\n  }\n  chat(ev: any) {\n    this.onemessage = ev;\n    this.meetingmessage = ev;\n  }\n  //退出登录\n  quits() {\n    this.userquit = true;\n  }\n  //不退出\n  sendParent() {\n    this.userquit = false;\n  }\n  //确定退出\n  userquits() {\n    this.userquit = false;\n    this.rx.quit();\n  }\n  // 音量改变\n  slider(ev: any) {\n    this.overallvolume = Math.round(ev / 10) / 10;\n  }\n  // 控制录音音量\n  record(ev: any) {\n    this.recordvolume = Math.round(ev / 10) / 10;\n  }\n  // 会议发送信息\n  meetingParent(ev: any) {\n    this.talkgroupitem = ev;\n    this.meetingmessage = !this.meetingmessage;\n  }\n\n  hintrun(ev: any) {\n    if (ev.videomeeting) {\n      this.item = 2;\n      this.cmsvideo = ev.videomeeting;\n    }\n    this.meetinghint = false;\n  }\n  userTree() {\n    this.uservalue = this.inputValue;\n  }\n  userempty() {\n    this.inputValue = '';\n    this.uservalue = '';\n  }\n  // 对讲组发送信息和用户操作\n  groupParent(ev: any) {\n    if (ev.message) {\n      this.talkgroupitem = ev.message;\n      this.meetingmessage = !this.meetingmessage;\n    } else if (ev.item) {\n      this.item = ev.item;\n    } else if (ev.navs) {\n      this.calltype = true;\n      this.onecall = ev.navs;\n    } else if (ev.nav) {\n      this.chatnav = ev.nav;\n      this.onemessage = true;\n    } else if (ev.hite) {\n      this.hint = true;\n      this.hinttype = 2;\n    } else if (ev.voice) {\n      if (ev.voice.info.type.devStatus == '0') {\n        this.hinttype = 2;\n        this.hint = true;\n      } else if (ev.voice.info.type.devStatus == '1') {\n        this.voice = true;\n        this.voicenav = ev.voice;\n      }\n    } else if (ev.modaltype) {\n      this.modal = true;\n      this.modaltype = ev.modaltype;\n    } else if (ev.vodvideoshow) {\n      if (ev.vodvideoshow == 1) {\n        this.localshow = false;\n      } else {\n        this.localshow = true;\n      }\n    } else if (ev.throwovershow) {\n      this.reminderactive = -1;\n      this.phoneactive = -1;\n      this.AV.sendchangeover('');\n    }\n  }\n  hintruntype() {\n    this.hint = false;\n  }\n  operation() {\n    // 侧边栏切换\n    this.broadside = true;\n    this.operationclass = 'broadside';\n  }\n  sidebar() {\n    this.broadside = false;\n    this.operationclass = 'operation';\n  }\n  activetype(ev: any) {\n    this.active = ev;\n  }\n  messagetype(ev: any) {\n    this.messagestate = ev;\n  }\n  openmessage(ev: any) {\n    this.onemessage = true;\n    this.meetingmessage = false;\n    this.cmsmessage = ev;\n  }\n  newmessage() {\n    this.messagelist = cache.message;\n  }\n  // 时间\n  getNowFormatDate() {\n    let today = new Date();\n    let hour: any = today.getHours();\n    if (hour >= 0 && hour <= 9) {\n      hour = '0' + hour;\n    }\n    let min: any = today.getMinutes();\n    if (min >= 0 && min <= 9) {\n      min = '0' + min;\n    }\n    let sen: any = today.getSeconds();\n    if (sen >= 0 && sen <= 9) {\n      sen = '0' + sen;\n    }\n    let timer = hour + ':' + min + ':' + sen;\n    return timer;\n  }\n  hangup(e: any) {\n    this.reminderlist.splice(e, 1);\n  }\n  phonehangup(i: any) {\n    this.phonelist.splice(i, 1);\n  }\n  flockcall() {\n    this.modal = true;\n    this.modaltype = 'phone';\n  }\n  masstexting() {\n    this.modal = true;\n    this.modaltype = 'message';\n  }\n  modaldata(ev: any) {\n    if (ev.phonetransfer) {\n      this.modal = false;\n      this.groupbusy = true;\n      this.groupbusylist = ev.arr;\n    }\n    if (ev.modal) {\n      this.modal = false;\n    }\n  }\n  groupdata(ev: any) {\n    this.groupbusy = ev;\n  }\n  openset() {\n    this.setting = true;\n  }\n  hotline(ev: any) {\n    this.setting = ev;\n  }\n  heatray() {\n    this.heatraylist = cache.setting;\n  }\n  heatrayphone(ev: any) {\n    if (ev.type == '用户' && ev.phone != '') {\n      let whether = this.sendService.judgeuser(ev.phone);\n      if (whether == false) {\n        this.hinttype = 7;\n        this.hint = true;\n      } else {\n        if (ev.phone == this.rx.userName) {\n          this.hinttype = 8;\n          this.hint = true;\n        } else {\n          let devStatus = this.sendService.judgeuserstact(ev.phone);\n          if (devStatus == 1) {\n            this.AV.callonevoice(ev.phone);\n          } else {\n            this.hinttype = 2;\n            this.hint = true;\n          }\n        }\n      }\n    }\n  }\n\n  fullScreen(elem: any = document.documentElement): void {\n    if (!document.fullscreenElement) {\n      const docElm = elem;\n      if (docElm.requestFullscreen) {\n        docElm.requestFullscreen();\n        this.isFullscreen = true;\n      } else if (docElm.mozRequestFullscreen) {\n        docElm.mozRequestFullscreen();\n        this.isFullscreen = true;\n      } else if (docElm.webkitRequestFullscreen) {\n        docElm.webkitRequestFullscreen();\n        this.isFullscreen = true;\n      } else if (docElm.msRequestFullscreen) {\n        docElm.msRequestFullscreen();\n        this.isFullscreen = true;\n      }\n    } else {\n      if (document.exitFullscreen) {\n        document.exitFullscreen();\n        this.isFullscreen = false;\n      }\n    }\n  }\n  closePhone(ev: any) {\n    this.rx.initiativeCloseChat(ev.cmschat.dialogID);\n    this.AV.delete({ dialogID: ev.cmschat.dialogID });\n  }\n  answerPhone(ev: any) {\n    let data = {\n      dialogID: ev.cmschat.dialogID,\n      permission: '1',\n      recvIP: ev.cmschat.recvIP,\n      recvRtpPort: ev.cmschat.recvRtpPort,\n      recvRtcpPort: ev.cmschat.recvRtcpPort,\n    };\n    this.rx.requestchatReturn(data);\n    let chatdata = {\n      SSRC: ev.cmschat.SSRC,\n      audio: ev.cmschat.audio,\n      audioBit: ev.cmschat.audioBit,\n      bitrate: ev.cmschat.bitrate,\n      bits: ev.cmschat.bits,\n      dialogID: ev.cmschat.dialogID,\n      dstID: ev.cmschat.srcID,\n      framerate: ev.cmschat.framerate,\n      recvIP: ev.cmschat.recvIP,\n      recvRtcpPort: ev.cmschat.recvRtcpPort,\n      recvRtpPort: ev.cmschat.recvRtpPort,\n      requestType: ev.cmschat.requestType,\n      resolution: ev.cmschat.resolution,\n      samp: ev.cmschat.samp,\n      srcID: ev.cmschat.dstID,\n      tenantID: ev.cmschat.tenantID,\n      timeout: ev.cmschat.timeout,\n      transType: ev.cmschat.transType,\n      video: ev.cmschat.video,\n    };\n    this.AV.addchat(chatdata);\n    this.AV.answeraddchat(ev.cmschat);\n    this.active = 0;\n  }\n  localityshow(ev: any) {\n    this.localshow = ev.data;\n  }\n  answeraudio(ev: any) {\n    // 接听音频会议\n    let data = this.AV.judgeopenmeeting();\n    if (data == true) {\n      this.meetingnav = ev;\n      this.cutmeetingshow = true;\n    } else {\n      ev.openshow = true;\n      this.AV.addaudiomeeting(ev);\n    }\n    this.active = 1;\n  }\n  consent(ev: any) {\n    // 接听视频会议\n    let data = this.AV.judgeopenmeeting();\n    if (data == true) {\n      this.meetingnav = ev;\n      this.cutmeetingshow = true;\n    } else {\n      ev.openshow = true;\n      this.AV.addmeeting(ev);\n      this.item = 0;\n    }\n    this.active = 1;\n  }\n  cutmeeting(ev: any) {\n    this.cutmeetingshow = false;\n  }\n  closeaudiomeeting(ev: any) {\n    this.AV.deleteaudio(ev);\n  }\n\n  closevideomeeting(ev: any) {\n    this.rx.whetherConsentApplyforAddVideoPush(ev.cmschat.videoMeetID, '0');\n    this.AV.deleteincoming(ev);\n  }\n  cutaudiomeeting(ev: any) {\n    this.meetingnav = ev;\n    this.cutmeetingshow = true;\n  }\n  override() {\n    // 强插\n    let data = {\n      type: 'override',\n    };\n    this.AV.cutperson(data);\n  }\n  ollbreakdown() {\n    //  强拆\n    let data = {\n      type: 'breakdown',\n    };\n    this.AV.cutperson(data);\n  }\n  changeover() {\n    //  转接\n    this.avmodal = true;\n  }\n  pickup() {\n    //代答\n    let data = {\n      type: 'pickup',\n    };\n    this.AV.cutperson(data);\n  }\n  monitor() {\n    // 监听\n    let data = {\n      type: 'monitor',\n    };\n    this.AV.cutperson(data);\n  }\n\n  bannedpost() {\n    // 禁言\n    let data = {\n      type: 'bannedpost',\n    };\n    this.AV.cutperson(data);\n  }\n  broadcast() {\n    //广播\n    // let data = {\n    //   type:'broadcast'\n    // }\n    // this.AV.cutperson(data)\n    this.broadcastshow = true;\n  }\n  reminderstact(ev: any, active: any) {\n    if (this.reminderactive == active) {\n      this.reminderactive = -1;\n      this.AV.sendchangeover('');\n      this.reminderdata = '';\n    } else {\n      this.reminderdata = ev;\n      this.phoneactive = -1;\n      this.reminderactive = active;\n      this.AV.sendchangeover(ev);\n    }\n  }\n  timerdata(ev: any) {\n    for (let i = 0; i < this.reminderlist.length; i++) {\n      if (this.reminderlist[i].cmschat.dialogID == ev.cmschat.dialogID) {\n        this.reminderactive = -1;\n        this.AV.sendchangeover('');\n      }\n    }\n    this.AV.delete({ dialogID: ev.cmschat.dialogID });\n  }\n  avmodaldata(ev: any) {\n    if (ev.phonetransfer) {\n      this.avmodal = false;\n      if (ev.phonetransfer.info.type.barringFlag == '1') {\n        this.message.create('warning', '选择的个人已被禁话');\n      } else {\n        if (ev.phonetransfer.Chatdata) {\n          if (this.judgename(ev.phonetransfer.Chatdata.eventParam) == true) {\n            this.message.create('warning', '不能转换本机');\n          } else {\n            this.rx.changeover(\n              ev.phonetransfer.info.userID,\n              this.reminderdata.cmschat.dialogID\n            );\n          }\n        } else {\n          this.rx.changeover(\n            ev.phonetransfer.info.userID,\n            this.reminderdata.cmschat.dialogID\n          );\n        }\n      }\n    }\n    if (ev.modal) {\n      this.avmodal = false;\n    }\n  }\n  judgename(ev: any) {\n    let judge = false;\n    if (ev.srcID == this.rx.userID || ev.dstID == this.rx.userID) {\n      judge = true;\n    }\n    return judge;\n  }\n  phoneact(ev: any, active: any) {\n    if (this.phoneactive == active) {\n      this.phoneactive = -1;\n      this.AV.sendchangeover('');\n      this.reminderdata = '';\n    } else {\n      this.reminderdata = ev;\n      this.reminderactive = -1;\n      this.phoneactive = active;\n      this.AV.sendchangeover(ev);\n    }\n  }\n  dialcut() {\n    this.dialshow = true;\n  }\n  dialouter(ev: any) {\n    if (ev.nav) {\n      this.chatnav = ev.nav;\n      this.onemessage = true;\n    }\n    this.dialshow = false;\n  }\n  selectbroad(ev: any) {\n    if (ev.selectbroad) {\n      this.broadcastshow = false;\n    } else if (ev.cutbroad) {\n      this.broadcastshow = false;\n      this.item = 9;\n    }\n  }\n  changepassword() {\n    this.passwardshow = true;\n  }\n  closepass() {\n    this.passwardshow = false;\n  }\n  modification() {\n    if (\n      this.originalpass == '' ||\n      this.modificationpass == '' ||\n      this.affirmpass == ''\n    ) {\n      this.message.create('warning', '请输入修改的密码');\n    } else {\n      if (this.modificationpass == this.affirmpass) {\n        this.rx.modifypassword(this.originalpass, this.modificationpass);\n        this.originalpass = '';\n        this.modificationpass = '';\n        this.affirmpass = '';\n        this.closepass();\n      } else {\n        this.message.create('warning', '修改密码与确认密码不一致');\n      }\n    }\n  }\n}\n","<div class=\"box\">\r\n    <div class=\"header\">\r\n        <div class=\"logbox\">\r\n            <!-- <div class=\"longimg\">\r\n                <img src=\"assets/img/owotalk18.png\" alt=\"\" />\r\n            </div> -->\r\n            <div class=\"logtext\">多媒体调度</div>\r\n        </div>\r\n        <div class=\"titlebox\">\r\n            <div class=\"routerbox\">\r\n                <ul class=\"routerul clearfix\">\r\n                    <li *ngIf=\"module.video.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 0 ? 'li-active' : ''\" (click)=\"titles(0)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/videoondemand.png\" alt=\"\" *ngIf=\"item == 0\" />\r\n                                <img src=\"assets/img/videoondemand.png\" alt=\"\" *ngIf=\"item != 0\" />\r\n                            </div>\r\n                            <div class=\"routertext\">视频</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.group.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 1 ? 'li-active' : ''\" (click)=\"titles(1)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/intercom.png\" alt=\"\" *ngIf=\"item == 1\" />\r\n                                <img src=\"assets/img/intercom.png\" alt=\"\" *ngIf=\"item != 1\" />\r\n                            </div>\r\n                            <div class=\"routertext\">群组</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.person.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 5 ? 'li-active' : ''\" (click)=\"titles(5)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/ic_homepage_my.png\" alt=\"\" *ngIf=\"item == 5\" />\r\n                                <img src=\"assets/img/ic_homepage_my.png\" alt=\"\" *ngIf=\"item != 5\" />\r\n                            </div>\r\n                            <div class=\"routertext\">单兵</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.device.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 6 ? 'li-active' : ''\" (click)=\"titles(6)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item == 6\" />\r\n                                <img src=\"assets/img/ic_device.png\" alt=\"\" *ngIf=\"item != 6\" />\r\n                            </div>\r\n                            <div class=\"routertext\">设备</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.meeting.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 2 ? 'li-active' : ''\" (click)=\"titles(2)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/meeting.png\" alt=\"\" *ngIf=\"item == 2\" />\r\n                                <img src=\"assets/img/meeting.png\" alt=\"\" *ngIf=\"item != 2\" />\r\n                            </div>\r\n                            <div class=\"routertext\">会议</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.broadcast.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 9 ? 'li-active' : ''\" (click)=\"titles(9)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/广播_01.png\" alt=\"\" *ngIf=\"item == 9\" />\r\n                                <img src=\"assets/img/广播_01.png\" alt=\"\" *ngIf=\"item != 9\" />\r\n                            </div>\r\n                            <div class=\"routertext\">广播</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.map.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 3 ? 'li-active' : ''\" (click)=\"titles(3)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/map.png\" alt=\"\" *ngIf=\"item == 3\" />\r\n                                <img src=\"assets/img/map.png\" alt=\"\" *ngIf=\"item != 3\" />\r\n                            </div>\r\n                            <div class=\"routertext\">地图</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.screen.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 7 ? 'li-active' : ''\" (click)=\"titles(7)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/screen.png\" alt=\"\" *ngIf=\"item == 7\" />\r\n                                <img src=\"assets/img/screen.png\" alt=\"\" *ngIf=\"item != 7\" />\r\n                            </div>\r\n                            <div class=\"routertext\">大屏</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.plan.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 8 ? 'li-active' : ''\" (click)=\"titles(8)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/flow.png\" alt=\"\" *ngIf=\"item == 8\" />\r\n                                <img src=\"assets/img/flow.png\" alt=\"\" *ngIf=\"item != 8\" />\r\n                            </div>\r\n                            <div class=\"routertext\">预案</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.history.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 4 ? 'li-active' : ''\" (click)=\"titles(4)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/历史_01.png\" alt=\"\" *ngIf=\"item == 4\" />\r\n                                <img src=\"assets/img/历史_01.png\" alt=\"\" *ngIf=\"item != 4\" />\r\n                            </div>\r\n                            <div class=\"routertext\">历史</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.alarm.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 10 ? 'li-active' : ''\" (click)=\"titles(10)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/告警_01.png\" alt=\"\" *ngIf=\"item == 10\" />\r\n                                <img src=\"assets/img/告警_01.png\" alt=\"\" *ngIf=\"item != 10\" />\r\n                            </div>\r\n                            <div class=\"routertext\">告警</div>\r\n                        </div>\r\n                    </li>\r\n                    <li *ngIf=\"module.data.enable\">\r\n                        <div class=\"routerimg\" [ngClass]=\"item == 11 ? 'li-active' : ''\" (click)=\"titles(11)\">\r\n                            <div class=\"imgbox\">\r\n                                <img src=\"assets/img/数据_01.png\" alt=\"\" *ngIf=\"item == 11\" />\r\n                                <img src=\"assets/img/数据_01.png\" alt=\"\" *ngIf=\"item !=11\" />\r\n                            </div>\r\n                            <div class=\"routertext\">数据</div>\r\n                        </div>\r\n                    </li>\r\n                </ul>\r\n            </div>\r\n        </div>\r\n        <div class=\"titleright\">\r\n            <div class=\"userbox\">\r\n                <ul class=\"userimg clearfix\">\r\n                    <li>\r\n                        <div class=\"volume\" nz-dropdown [nzDropdownMenu]=\"volume\" [nzTrigger]=\"'click'\"></div>\r\n                    </li>\r\n                    <li>\r\n                        <div class=\"microphone\" nz-dropdown [nzDropdownMenu]=\"microphone\" [nzTrigger]=\"'click'\"></div>\r\n                    </li>\r\n                    <li nz-dropdown [nzDropdownMenu]=\"address\" [nzTrigger]=\"'click'\">\r\n                        <div class=\"address\"></div>\r\n                    </li>\r\n                    <!-- <li>\r\n                        <div class=\"fullScreen\" (click)=\"fullScreen()\"></div>\r\n                    </li>\r\n                    <li nz-dropdown [nzDropdownMenu]=\"menu\" [nzTrigger]=\"'click'\">\r\n                        <div class=\"portrait\"></div>\r\n                    </li>\r\n                    <li>\r\n                        <div style=\"margin-right: 15px; font-size: 14px; margin-top: -3px\">\r\n                            当前用户:&nbsp;&nbsp;{{ username }}\r\n                        </div>\r\n                    </li> -->\r\n                </ul>\r\n            </div>\r\n            <div class=\"timebox\">\r\n                {{ today | date: \"yyyy年MM月dd日 HH:mm:ss\" }}&nbsp;&nbsp;{{ week }}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"contentbox\">\r\n        <div [style.display]=\"item == 0 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-vod (outer)=\"groupParent($event)\" [broadside]=\"broadside\"></app-vod>\r\n        </div>\r\n        <div [style.display]=\"item == 1 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-group (outer)=\"groupParent($event)\" [overallvolume]=\"overallvolume\" [recordvolume]=\"recordvolume\" [broadside]=\"broadside\"></app-group>\r\n        </div>\r\n        <div [style.display]=\"item == 2 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-meeting (outer)=\"meetingParent($event)\" [broadside]=\"broadside\" [cmsvideo]=\"cmsvideo\" [recordvolume]=\"recordvolume\" [overallvolume]=\"overallvolume\"></app-meeting>\r\n        </div>\r\n        <div *ngIf=\"item == 3\" class=\"compomemtbox\">\r\n            <app-map (outer)=\"groupParent($event)\" [featureArray]=\"featureArray\" [broadside]=\"broadside\"></app-map>\r\n        </div>\r\n        <div [style.display]=\"item == 4 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-history [broadside]=\"broadside\"></app-history>\r\n        </div>\r\n        <div [style.display]=\"item == 5 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-person (outer)=\"groupParent($event)\" [broadside]=\"broadside\" [statuslist]=\"statuslist\"></app-person>\r\n        </div>\r\n        <div [style.display]=\"item == 6 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-equipment (outer)=\"groupParent($event)\"></app-equipment>\r\n        </div>\r\n        <div [style.display]=\"item == 7 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-largescreen (outer)=\"groupParent($event)\" [broadside]=\"broadside\"></app-largescreen>\r\n        </div>\r\n        <div [style.display]=\"item == 8 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-flowchart></app-flowchart>\r\n        </div>\r\n        <div [style.display]=\"item == 9 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-broadcast></app-broadcast>\r\n        </div>\r\n        <div [style.display]=\"item == 10 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-warning></app-warning>\r\n        </div>\r\n        <div [style.display]=\"item == 11 ? 'block' : 'none'\" class=\"compomemtbox\">\r\n            <app-information></app-information>\r\n        </div>\r\n        <div class=\"{{ operationclass }}\">\r\n            <div class=\"operationnav\" [style.display]=\"broadside == false ? 'block' : 'none'\">\r\n                <div class=\"unfold\">\r\n                    <i nz-icon nzType=\"menu-unfold\" nzTheme=\"outline\" (click)=\"operation()\"></i>\r\n                </div>\r\n                <div class=\"avbox\" *ngIf=\"module.person.audioCall||module.person.videoCall||module.meeting.enable\">\r\n                    <div class=\"tablebox\">\r\n                        <div class=\"phonetype\" [ngClass]=\"active == 0 ? 'active' : ''\" (click)=\"activetype(0)\" *ngIf=\"module.person.audioCall||module.person.videoCall\">\r\n                            呼叫\r\n                        </div>\r\n\r\n                        <div class=\"videotype\" [ngClass]=\"active == 1 ? 'active' : ''\" (click)=\"activetype(1)\" *ngIf=\"module.meeting.enable\">\r\n                            会议\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"phonebox\" [style.display]=\"active == 0 ? 'block' : 'none'\">\r\n                        <div class=\"calltpye\">\r\n                            <div class=\"present\" [ngClass]=\"communicate == false ? 'callactive' : ''\" (click)=\"communicate = false\">\r\n                                当前通话\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"phonelist\" [style.display]=\"communicate == false ? 'block' : 'none'\">\r\n                            <ng-container *ngFor=\"let phone of phonelist; let i = index\">\r\n                                <div (click)=\"phoneact(phone,i)\" [ngClass]=\"phoneactive == i ? 'bureborder' : 'phoneborder'\">\r\n                                    <div class=\"phone\" [ngClass]=\"phone.active == true ? 'borderactive' : ''\">\r\n                                        <div *ngIf=\"phone.phonetype == 1||phone.phonetype == 5||phone.phonetype == 6\">\r\n                                            <app-voice [voicenav]=\"phone\" (outer)=\"cutaudiomeeting($event)\"></app-voice>\r\n                                        </div>\r\n                                        <div *ngIf=\"phone.phonetype == 2\">\r\n                                            <app-video [voicenav]=\"phone\"></app-video>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </ng-container>\r\n                        </div>\r\n                        <div class=\"meetinglist\" [style.display]=\"communicate == true ? 'block' : 'none'\">\r\n                            <div>\r\n                                <div></div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"phonebox\" [style.display]=\"active == 1 ? 'block' : 'none'\">\r\n                        <div class=\"calltpye\">\r\n                            <div class=\"present\" [ngClass]=\"communicate == false ? 'callactive' : ''\" (click)=\"communicate = false\">\r\n                                当前会议\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"phonelist\" [style.display]=\"communicate == false ? 'block' : 'none'\">\r\n                            <ng-container *ngFor=\"let meeting of meetinglist; let i = index\">\r\n                                <div class=\"phone\" [ngClass]=\"meeting.active == false ? '' : 'borderactive'\">\r\n                                    <div *ngIf=\"meeting.phonetype == 3\">\r\n                                        <app-voice [voicenav]=\"meeting\"></app-voice>\r\n                                    </div>\r\n                                    <div *ngIf=\"meeting.phonetype == 4\">\r\n                                        <app-video [voicenav]=\"meeting\"></app-video>\r\n                                    </div>\r\n                                </div>\r\n                            </ng-container>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"informationbox\" *ngIf=\"module.person.message\">\r\n                    <div class=\"tablebox\">\r\n                        <div class=\"informationtype\" [ngClass]=\"messagestate == 0 ? 'active' : ''\" (click)=\"messagetype(0)\">\r\n                            信息\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"messagebox\" [style.display]=\"messagestate == 0 ? 'block' : 'none'\">\r\n                        <div class=\"messagelist\">\r\n                            <ng-container *ngFor=\"let message of messagelist; let i = index\">\r\n                                <div class=\"message\" (click)=\"openmessage(message)\">\r\n                                    <div class=\"messagestate\">\r\n                                        <img src=\"assets/img/head.png\" alt=\"\" *ngIf=\"message.msgType == 1\" />\r\n                                        <img src=\"assets/img/intercomtreehead.png\" alt=\"\" *ngIf=\"message.msgType == 2\" />\r\n                                    </div>\r\n                                    <div class=\"messageuser\">{{ message.srcID }}</div>\r\n                                    <div class=\"lastmessage\">{{ message.msgInfo }}</div>\r\n                                    <div class=\"messagetimer\">{{ message.timer }}</div>\r\n                                </div>\r\n                            </ng-container>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"videobox\" [style.display]=\"messagestate == 1 ? 'block' : 'none'\"></div>\r\n                </div>\r\n            </div>\r\n            <div class=\"operationlist\" [style.display]=\"broadside == true ? 'block' : 'none'\">\r\n                <div>\r\n                    <i nz-icon nzType=\"menu-fold\" nzTheme=\"outline\" (click)=\"sidebar()\" *ngIf=\"iconshow\"></i>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"footerbox\">\r\n        <div class=\"footerleft\"></div>\r\n        <div class=\"footer\">\r\n            <div class=\"dialbox\">\r\n                <div class=\"dial\" *ngIf=\"module.person.audioCall||module.person.videoCall||module.person.message\">\r\n                    <div class=\"closetalk\" (click)=\"dialcut()\">&nbsp;&nbsp;拨号</div>\r\n                </div>\r\n            </div>\r\n            <div class=\"phoneoperationbox\">\r\n                <div class=\"phoneoperation\" *ngIf=\"module.person.audioCall\">\r\n                    <div class=\"operation\" (click)=\"override()\">\r\n                        <div class=\"override\">\r\n                            <div class=\"closetalk\">&nbsp;&nbsp;强插</div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"operation\" (click)=\"ollbreakdown()\">\r\n                        <div class=\"ollbreakdown\">\r\n                            <div class=\"closetalk\">&nbsp;&nbsp;强拆</div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"operation\" (click)=\"changeover()\">\r\n                        <div class=\"changeover\">\r\n                            <div class=\"closetalk\">&nbsp;&nbsp;转接</div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"operation\" (click)=\"pickup()\">\r\n                        <div class=\"pickup\">\r\n                            <div class=\"closetalk\">&nbsp;&nbsp;代答</div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"operation\" (click)=\"monitor()\">\r\n                        <div class=\"monitor\">\r\n                            <div class=\"closetalk\">&nbsp;&nbsp;监听</div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"operation\" (click)=\"bannedpost()\">\r\n                        <div class=\"bannedpost\">\r\n                            <div class=\"closetalk\">&nbsp;&nbsp;禁话</div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"flock\">\r\n                <div class=\"operation\" (click)=\"flockcall()\" *ngIf=\"module.person.multiCall\">\r\n                    <div class=\"qunhu\">\r\n                        <div class=\"closetalk\">&nbsp;&nbsp;群呼</div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"operation\" (click)=\"masstexting()\" *ngIf=\"module.person.multiSend\">\r\n                    <div class=\"qunfa\">\r\n                        <div class=\"closetalk\">&nbsp;&nbsp;群发</div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"operation\" (click)=\"broadcast()\" *ngIf=\"module.broadcast.enable\">\r\n                    <div class=\"broadcast\">\r\n                        <div class=\"closetalk\">&nbsp;&nbsp;广播</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"footerright\">\r\n            <div *ngIf=\"module.person.audioCall\" class=\"phonebox\">\r\n                <ng-container *ngFor=\"let heatrayb of heatraylist; let i = index\">\r\n                    <div class=\"phone\" (click)=\"heatrayphone(heatrayb)\">\r\n                        <i nz-icon nzType=\"user\" nzTheme=\"outline\" *ngIf=\"heatrayb.type == '用户'\"></i>\r\n                        <i nz-icon *ngIf=\"heatrayb.type == '移动电话'\"><svg\r\n                  t=\"1648871500145\"\r\n                  class=\"icon\"\r\n                  viewBox=\"0 0 1024 1024\"\r\n                  version=\"1.1\"\r\n                  xmlns=\"http://www.w3.org/2000/svg\"\r\n                  p-id=\"3836\"\r\n                  width=\"12\"\r\n                  height=\"12\"\r\n                >\r\n                  <path\r\n                    d=\"M798 0H226c-35.3 0-64 28.7-64 64v896c0 35.3 28.7 64 64 64h572c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z m0 928c0 17.6-14.4 32-32 32H258c-17.6 0-32-14.4-32-32V773.8h572V928zM226 709.8V96c0-17.6 14.4-32 32-32h508c17.6 0 32 14.4 32 32v613.8H226z\"\r\n                    p-id=\"3837\"\r\n                  ></path>\r\n                  <path\r\n                    d=\"M457 869.4a55 55 0 1 0 110 0 55 55 0 1 0-110 0z\"\r\n                    p-id=\"3838\"\r\n                  ></path></svg\r\n              ></i>\r\n                        <i nz-icon *ngIf=\"heatrayb.type == '固话'\"><svg\r\n                  t=\"1648868598983\"\r\n                  class=\"icon\"\r\n                  viewBox=\"0 0 1024 1024\"\r\n                  version=\"1.1\"\r\n                  xmlns=\"http://www.w3.org/2000/svg\"\r\n                  p-id=\"2743\"\r\n                  width=\"12\"\r\n                  height=\"12\"\r\n                >\r\n                  <path\r\n                    d=\"M526.9 112H544c98.4 0 195.9 21 274.6 59.2 35.9 17.4 66.1 37.5 89.7 59.6 21.1 19.7 36 40.6 43.2 60.4 5 13.7 8.1 36 8.3 59.7 0.2 20.4-1.8 35.5-3.4 42.9-0.6 0.1-1.6 0.2-2.8 0.2-0.9 0-1.8-0.1-2.8-0.2l-2.3-0.3-2.3-0.1c-47-2.8-94.1-5.5-141.1-8.3-6.1-0.4-12.3-0.7-18.4-1.1l-4-0.2c-3.2-0.8-6.3-1.9-9.1-3.4-2.8-1.4-5.1-3-8.3-9.1-4.6-9-8.3-22.9-12.3-37.6-9.4-35.4-22.3-83.8-64.5-121.8-51.1-46.1-114.3-52-163.7-52-3.9 0-7.8 0-12.7 0.1-4.9-0.1-8.8-0.1-12.7-0.1-49.4 0-112.6 5.9-163.7 52-42.1 38-55 86.5-64.5 121.8-3.9 14.7-7.6 28.6-12.3 37.6-3.2 6.2-5.5 7.7-8.3 9.1-2.8 1.4-5.9 2.6-9.1 3.4l-4 0.2c-6.1 0.4-12.3 0.7-18.4 1.1-47 2.8-94.1 5.5-141.1 8.3l-2.3 0.1-2.3 0.3c-0.9 0.1-1.9 0.2-2.8 0.2-1.2 0-2.2-0.1-2.8-0.2-1.6-7.5-3.6-22.6-3.4-42.9 0.2-23.6 3.3-45.9 8.3-59.7 7.2-19.8 22.2-40.7 43.2-60.4 23.6-22.1 53.8-42.1 89.7-59.6C284.1 133 381.6 112 480 112H526.9m0-64H480C253.1 48 56.1 149.3 12.4 269.3c-18.5 50.8-13.7 137.9 0 158.3 8.4 12.5 19.8 19.8 19.8 19.8 0.8 0.5 1.7 1.1 2.5 1.5 12.8 7.4 26 9.1 35.8 9.1 4.6 0 8.4-0.4 11.2-0.7 47-2.8 94.1-5.5 141.1-8.3 9-0.5 18-1.1 27.1-1.6 6.2-1.1 17.3-3.6 29.7-9.9 66-33.5 39.4-124.4 98.9-178.1 36-32.4 85-35.5 120.8-35.5 4.5 0 8.7 0 12.7 0.1 4-0.1 8.3-0.1 12.7-0.1 35.8 0 84.9 3.1 120.8 35.5 59.6 53.7 33 144.6 98.9 178.1 12.4 6.3 23.5 8.8 29.7 9.9 9 0.5 18 1 27.1 1.6 47 2.8 94.1 5.5 141.1 8.3 2.7 0.4 6.6 0.7 11.2 0.7 9.8 0 23-1.7 35.8-9.1 0.8-0.5 1.7-1 2.5-1.5 0 0 11.4-7.3 19.8-19.8 13.7-20.4 18.5-107.5 0-158.3C967.9 149.3 771 48 544 48h-17.1z\"\r\n                    p-id=\"2744\"\r\n                  ></path>\r\n                  <path\r\n                    d=\"M512 448c29.9 0 59.6 5.3 88.5 15.7 25.3 9.1 50.7 22.4 75.6 39.5 47.4 32.6 84.2 73.1 108.5 99.9 48 52.8 84.8 114.9 109.4 184.5 15.1 42.9 25.4 87.8 30.5 133.5-1.1 12.1-10 21.7-13.9 25.4-9.9 9.3-21.6 13.5-28.7 13.5H142.2c-8.4 0-19.3-5.2-27.6-13.1-8.1-7.7-13-17-13.7-26 4.8-45.6 14.8-90.4 29.8-133.3C155 717.9 191.6 655.8 239.4 603c24.1-26.6 60.6-66.9 108-99.6 24.9-17.2 50.4-30.5 75.8-39.7 29-10.4 58.8-15.7 88.8-15.7m0-64c-160.5 0-268.5 119.2-320 176C67.9 697 43.2 854.3 36.8 918.5v0.1c0 58.2 54.3 105.4 105.4 105.4h739.7c51 0 106.7-47.2 106.7-105.4-6.7-64.8-32.3-221.9-156.6-358.6-52.2-57.4-159.9-176-320-176z\"\r\n                    p-id=\"2745\"\r\n                  ></path>\r\n                  <path\r\n                    d=\"M512 640c52.9 0 96 43.1 96 96s-43.1 96-96 96h-3c-51.5-1.6-93-44-93-96 0-52.9 43.1-96 96-96m0-64c-88.4 0-160 71.7-160 160s71.6 160 160 160 160-71.7 160-160-71.6-160-160-160z\"\r\n                    p-id=\"2746\"\r\n                  ></path></svg></i>&nbsp;{{ heatrayb.name }}\r\n                    </div>\r\n                </ng-container>\r\n            </div>\r\n            <div class=\"set\">\r\n                <i nz-icon nzType=\"setting\" nzTheme=\"outline\" *ngIf=\"module.person.audioCall||module.group.enable\" (click)=\"openset()\"></i>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div *ngIf=\"calltype\">\r\n        <app-chat (outer)=\"run($event)\" [onecall]=\"onecall\"></app-chat>\r\n    </div>\r\n    <div *ngIf=\"voice\">\r\n        <app-voice [voicenav]=\"voicenav\" (outer)=\"voiceout($event)\"></app-voice>\r\n    </div>\r\n    <div *ngIf=\"onemessage\">\r\n        <owoMessage (outer)=\"chat($event)\" [chatnav]=\"chatnav\" [cmsmessage]=\"cmsmessage\"></owoMessage>\r\n    </div>\r\n    <div *ngIf=\"meetingmessage\">\r\n        <owoMessage (outer)=\"chat($event)\" [talkgroupitem]=\"talkgroupitem\" [discussionmessane]=\"discussionmessane\"></owoMessage>\r\n    </div>\r\n    <nz-dropdown-menu #menu=\"nzDropdownMenu\">\r\n        <div class=\"portraittype\" #portraittype>\r\n            <div (click)=\"changepassword()\">修改密码</div>\r\n            <div (click)=\"quits()\">退出</div>\r\n        </div>\r\n    </nz-dropdown-menu>\r\n    <nz-dropdown-menu #address=\"nzDropdownMenu\">\r\n        <div class=\"addressstate\">\r\n            <div class=\"usertitle\">用户列表</div>\r\n            <div class=\"searchbox\">\r\n                <div class=\"search\">\r\n                    <nz-input-group [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"inputClear\">\r\n                        <input type=\"text\" nz-input [(ngModel)]=\"inputValue\" (keyup.enter)=\"userTree()\" />\r\n                    </nz-input-group>\r\n                    <ng-template #prefixTemplate><i nz-icon nzType=\"search\" class=\"icon\"></i\r\n            ></ng-template>\r\n            <ng-template #inputClear>\r\n              <div *ngIf=\"inputValue\" class=\"icon\">\r\n                <i\r\n                  nz-icon\r\n                  nzType=\"close-circle\"\r\n                  nzTheme=\"outline\"\r\n                  (click)=\"userempty()\"\r\n                ></i>\r\n                </div>\r\n                </ng-template>\r\n            </div>\r\n        </div>\r\n        <div class=\"treebox\">\r\n            <app-tree (outer)=\"groupParent($event)\" [status]=\"status\" [uservalue]=\"uservalue\"></app-tree>\r\n        </div>\r\n</div>\r\n</nz-dropdown-menu>\r\n\r\n</div>\r\n<div *ngIf=\"meetinghint\">\r\n    <app-hint (outer)=\"hintrun($event)\" [hinttype]=\"hinttype\" [videomeeting]=\"videomeeting\"></app-hint>\r\n</div>\r\n<div class=\"userquitbox\" *ngIf=\"userquit\">\r\n    <div class=\"userquit\">\r\n        <div class=\"nav\" cdkDrag>\r\n            <div class=\"setname\" cdkDragHandle>\r\n                <div>提示</div>\r\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"sendParent()\"></i>\r\n            </div>\r\n            <div class=\"sethint\">确定要关闭吗？</div>\r\n            <div class=\"sethintbutton\">\r\n                <button (click)=\"userquits()\">确定</button>\r\n                <button (click)=\"userquit = false\">取消</button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<div class=\"passwardbox\" *ngIf=\"passwardshow\">\r\n    <div class=\"passward\">\r\n        <div class=\"pass\" appDrag>\r\n            <div class=\"passtitle\">\r\n                <div>修改密码</div>\r\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"closepass()\"></i>\r\n            </div>\r\n            <div class=\"sethint\">\r\n                <div class=\"passbox\">\r\n                    <div class=\"nametitle\">原始密码:</div>&nbsp;&nbsp;\r\n                    <div class=\"userName\">\r\n                        <input nz-input placeholder=\"请输入密码\" [(ngModel)]=\"originalpass\" />\r\n                    </div>\r\n                </div>\r\n                <div class=\"passbox\">\r\n                    <div class=\"nametitle\">修改密码:</div>&nbsp;&nbsp;\r\n                    <div class=\"userName\">\r\n                        <input nz-input placeholder=\"请输入密码 \" [(ngModel)]=\"modificationpass \" />\r\n                    </div>\r\n                </div>\r\n                <div class=\"passbox\">\r\n                    <div class=\"nametitle\">缺认密码:</div>\r\n                    &nbsp;&nbsp;\r\n                    <div class=\"userName\">\r\n                        <input nz-input placeholder=\"请输入密码\" [(ngModel)]=\"affirmpass\" />\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"sethintbutton\">\r\n                <button (click)=\"modification()\">确定</button>\r\n                <button (click)=\"closepass()\">取消</button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<nz-dropdown-menu #volume=\"nzDropdownMenu\">\r\n    <div class=\"volumeset\">\r\n        <div class=\"sliderbox\">\r\n            <nz-slider nzVertical [ngModel]=\"volumenumber\" (ngModelChange)=\"slider($event)\"></nz-slider>\r\n        </div>\r\n    </div>\r\n</nz-dropdown-menu>\r\n<nz-dropdown-menu #microphone=\"nzDropdownMenu\">\r\n    <div class=\"microphoneset\">\r\n        <div class=\"sliderbox\">\r\n            <nz-slider nzVertical [ngModel]=\"recordnumber\" (ngModelChange)=\"record($event)\"></nz-slider>\r\n        </div>\r\n    </div>\r\n</nz-dropdown-menu>\r\n\r\n<div *ngIf=\"hint\">\r\n    <app-hint (outer)=\"hintruntype()\" [hinttype]=\"hinttype\"></app-hint>\r\n</div>\r\n<div class=\"voicebox\" *ngIf=\"reminderlist.length > 0\">\r\n    <div class=\"reminder\">呼叫列表</div>\r\n    <div class=\"reminderbox\">\r\n        <div *ngFor=\"let reminder of reminderlist; let i = index\">\r\n            <div class=\"reminderlist\" [ngClass]=\"reminderactive == i ? 'reminderactive' : 'reminderborder'\" (click)=\"reminderstact(reminder,i)\">\r\n                <div class=\" tishi \">\r\n                    <img src=\"assets/img/语音_左侧_01.png \" alt=\" \" *ngIf=\"reminder.phonetype==1 \" />\r\n                    <img src=\"assets/img/视频_左侧_01.png \" alt=\" \" *ngIf=\"reminder.phonetype==2 \" />\r\n                    <img src=\"assets/img/audiomeeting_01.png \" alt=\" \" *ngIf=\"reminder.phonetype==3 \" />\r\n                    <img src=\"assets/img/videomeeting_01.png \" alt=\" \" *ngIf=\"reminder.phonetype==4 \" />\r\n                </div>\r\n                <div class=\"remindername \">\r\n                    <div class=\"remindertest \">\r\n                        {{ reminder.userName }}\r\n                    </div>\r\n                    <div class=\"remindertest\">\r\n                        <app-timer [reminder]=\"reminder\" (outer)=\"timerdata($event)\"></app-timer>\r\n                    </div>\r\n                </div>\r\n                <div class=\"answer \" *ngIf=\"reminder.phonetype==2 ||reminder.phonetype==1 \"><img src=\"assets/img/P2P_audio.png \" alt=\" \" *ngIf=\"reminder.callout=='2' \" (click)=\"answerPhone(reminder) \" /></div>\r\n                <div class=\"hangup \" *ngIf=\"reminder.phonetype==2 ||reminder.phonetype==1 \" (click)=\"closePhone(reminder) \"><img src=\"assets/img/P2P_close.png \" alt=\" \" /></div>\r\n                <div class=\"answer \" *ngIf=\"reminder.phonetype==3 \">\r\n                    <img src=\"assets/img/P2P_audio.png \" alt=\" \" (click)=\"answeraudio(reminder) \" /></div>\r\n                <div class=\"hangup \" *ngIf=\"reminder.phonetype==3 \" (click)=\"closeaudiomeeting(reminder) \"><img src=\"assets/img/P2P_close.png \" alt=\" \" /></div>\r\n                <div class=\"answer \" *ngIf=\"reminder.phonetype==4 \">\r\n                    <img src=\"assets/img/P2P_audio.png \" alt=\" \" (click)=\"consent(reminder) \" /></div>\r\n                <div class=\"hangup \" *ngIf=\"reminder.phonetype==4 \" (click)=\"closevideomeeting(reminder) \"><img src=\"assets/img/P2P_close.png \" alt=\" \" /></div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"modal\">\r\n    <app-multiaction [type]=\"modaltype\" (outer)=\"modaldata($event) \"></app-multiaction>\r\n</div>\r\n\r\n<div *ngIf=\"groupbusy \">\r\n    <app-group-busy (outer)=\"groupdata($event) \" [groupbusylist]=\"groupbusylist \"></app-group-busy>\r\n</div>\r\n\r\n<div *ngIf=\"setting \">\r\n    <app-hotline (outer)=\"hotline($event) \"></app-hotline>\r\n</div>\r\n<div *ngIf=\"localshow \" class=\"localvideo \">\r\n    <app-localityvideo (outer)=\"localityshow($event) \"></app-localityvideo>\r\n</div>\r\n<div class=\"cutmeeting \" *ngIf=\"cutmeetingshow \">\r\n    <app-cutmeeting (outer)=\"cutmeeting($event) \" [meetingnav]=\"meetingnav \"></app-cutmeeting>\r\n</div>\r\n\r\n<div *ngIf=\"avmodal\">\r\n    <app-avtransition (outer)=\"avmodaldata($event) \"></app-avtransition>\r\n</div>\r\n\r\n<div *ngIf=\"dialshow\">\r\n    <app-dial (outer)=\"dialouter($event) \"></app-dial>\r\n</div>\r\n<div *ngIf=\"broadcastshow\">\r\n    <app-selectbroad (outer)=\"selectbroad($event) \"></app-selectbroad>\r\n</div>","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { OverallService } from '../../common/overall.service';\nimport { state } from '../../protocol/rtc/icstDefines';\nimport { RxService } from '../../protocol/rtc/rx.service';\nimport { WebService } from '../../protocol/rtc/web.service';\nimport { AvService } from '../../protocol/rtc/av.service';\n@Component({\n  selector: 'app-spilt-screen',\n  templateUrl: './spilt-screen.component.html',\n  styleUrls: ['./spilt-screen.component.less'],\n})\nexport class SpiltScreenComponent implements OnInit {\n  @Output() private outer = new EventEmitter<any>();\n  constructor(\n    private rx: RxService,\n    private ws: WebService,\n    private sendService: OverallService,\n    private AV: AvService\n  ) {\n    const configuration = {};\n    this.pcPeer = new RTCPeerConnection(configuration);\n    this.subscription = this.sendService.plantingsendsider$.subscribe((message) => {\n        this.planting = message;\n        console.log(message);\n        this.openplanting();\n      });\n  }\n  @ViewChild('remotevideo') remotevideo?: any;\n  @Input() item: number = 4;\n  @Input() planting: any = '';\n  subscription: any;\n  _allowDays: any = '';\n  page: number = 1; //第几页\n  pageSize: number = 4; //页的大小\n  total: number = 16; //总数量\n  totalpages = Math.ceil(this.total / this.pageSize); ///总共有几页\n  pagingclass = 'videofour';\n  videolist: any = [\n    { wang: 1, show: false, hascall: false, dstID: '' },\n    { wang: 2, show: false, hascall: false, dstID: '' },\n    { wang: 3, show: false, hascall: false, dstID: '' },\n    { wang: 4, show: false, hascall: false, dstID: '' },\n    { wang: 5, show: false, hascall: false, dstID: '' },\n    { wang: 6, show: false, hascall: false, dstID: '' },\n    { wang: 7, show: false, hascall: false, dstID: '' },\n    { wang: 8, show: false, hascall: false, dstID: '' },\n    { wang: 9, show: false, hascall: false, dstID: '' },\n    { wang: 10, show: false, hascall: false, dstID: '' },\n    { wang: 11, show: false, hascall: false, dstID: '' },\n    { wang: 12, show: false, hascall: false, dstID: '' },\n    { wang: 13, show: false, hascall: false, dstID: '' },\n    { wang: 14, show: false, hascall: false, dstID: '' },\n    { wang: 15, show: false, hascall: false, dstID: '' },\n    { wang: 16, show: false, hascall: false, dstID: '' },\n  ];\n  activeIndex = -1;\n  type: number = -1;\n  pcPeer: any = null;\n  channelID: any = '';\n  localStream: any = null;\n  videotype: number = 0;\n  channelPeer: any = null;\n  channelLocal: any = null;\n  srcprice = 0;\n  PeerList: any = [];\n  popup: boolean = false;\n  cutlimit: number = 0;\n  cutdata: any = '';\n  full: boolean = false;\n  fullnav: any = '';\n  localSize: any = '';\n  localPage: any = '';\n  ngOnInit(): void {\n    this.ws.wssend$.subscribe((ev: any) => {\n      let serial = ev.serial;\n      let nav = JSON.parse(ev.jsonStr);\n      let respcmdid = nav.respCmdID;\n      let cmdid = nav.cmdID;\n      let resultdata = nav.resultData;\n      let that = this;\n      console.log(cmdid);\n      console.log(nav);\n      switch (cmdid) {\n        case state.OWO_CMD_CHAT_CLOSE: {\n          // console.log('关闭视频');\n          this.clearonevideo()\n          break;\n        }\n        case state.OWO_CMD_VOD_LEAVE: {\n          // 点播关闭\n          for (let i = 0; i < this.videolist.length; i++) {\n            if (this.videolist[i].dstID != '') {\n              if (this.videolist[i].dstID.info.userID == nav.cmdBody.memID) {\n                if (this.videolist[i].hascall == true) {\n                  this.videolist[i].hascall = false;\n                  this.videolist[i].dstID = '';\n                  this.PeerList[i].close();\n                  this.PeerList[i] = null;\n                  this.videotype = 0;\n                }\n              }\n            }\n          }\n          this.rx.replycmsLeave(serial);\n          break;\n        }\n        case state.OWO_CMD_VOD_OPEN_VIDEO_BK: {\n          // 点播返回\n          console.log(nav);\n          if (nav.cmdBody.permission == 1) {\n            for (let i = 0; i < this.videolist.length; i++) {\n              if (this.videolist[i].dstID != '') {\n                if (\n                  this.videolist[i].dstID.info.userID == nav.cmdBody.reqUserID\n                ) {\n                  this.srcprice = i;\n                }\n              }\n            }\n          } else if (nav.cmdBody.permission == 2) {\n            for (let i = 0; i < this.videolist.length; i++) {\n              if (this.videolist[i].dstID != '') {\n                if (\n                  this.videolist[i].dstID.info.userID == nav.cmdBody.reqUserID\n                ) {\n                  this.videolist[i].hascall = false;\n                  this.videolist[i].dstID = '';\n                  delete this.videolist[i].src;\n                  delete this.videolist[i].channelID;\n                  this.PeerList[i].close();\n                  this.PeerList[i] = null;\n                  this.videotype = 0;\n                }\n              }\n            }\n          }\n          this.rx.replyCmsVideoBk(serial);\n          break;\n        }\n\n        default:\n          break;\n      }\n      switch (respcmdid) {\n        case state.OWO_CMD_VOD_OPEN_VIDEO + 1: {\n          that.channelID = resultdata.SSRC;\n          this.video();\n          break;\n        }\n        case state.OWO_CMD_RTC_OFFER + 1: {\n          if (resultdata.channelID == that.channelID) {\n            that.remoteAnswer(nav);\n          }\n          break;\n        }\n        default:\n      }\n    });\n  }\n\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges) {\n    this.pageSize = this.item;\n    if (this.pageSize == 4) {\n      this.pagingclass = 'videofour';\n    } else if (this.pageSize == 1) {\n      this.pagingclass = 'videofirst';\n    } else if (this.pageSize == 16) {\n      this.pagingclass = 'videosixteen';\n    } else if (this.pageSize == 12) {\n      this.pagingclass = 'videotwelve';\n    } else if (this.pageSize == 9) {\n      this.pagingclass = 'videonine';\n    } else if (this.pageSize == 6) {\n      this.pagingclass = 'videosix';\n    }\n    this.totalpages = Math.ceil(this.total / this.pageSize);\n\n    this.page = 1;\n  }\n  openplanting() {\n    let judge = false;\n    var limit: any;\n    console.log(this.videolist);\n    for (let i = 0; i < this.videolist.length; i++) {\n      if (this.videolist[i].dstID != '') {\n        let items = this.videolist[i].dstID.info.userID;\n        if (items == this.planting.info.userID) {\n          judge = true;\n          limit = this.videolist[i].wang;\n        }\n      }\n    }\n    if (judge == false) {\n      if (this.activeIndex == -1) {\n        this.srcprice = 0;\n        for (let i = 0; i < this.videolist.length; i++) {\n          if (this.videolist[i].hascall == false) {\n            this.srcprice = i;\n            break;\n          }\n        }\n        this.cutopen(this.srcprice, this.planting);\n      } else {\n        this.srcprice = this.activeIndex;\n        if (this.videolist[this.srcprice].hascall == true) {\n          this.popup = true;\n          this.cutlimit = this.srcprice;\n          this.cutdata = this.planting;\n        } else {\n          this.cutopen(this.srcprice, this.planting);\n        }\n      }\n    } else {\n      this.page = Math.ceil(limit / this.pageSize);\n    }\n  }\n  addonevideo(ev: any) {\n    this.srcprice = 0;\n    for (let i = 0; i < this.videolist.length; i++) {\n      if (this.videolist[i].hascall == false) {\n        this.srcprice = i;\n        break;\n      }\n    }\n    this.channelID = ev.cmschat.SSRC;\n    const configuration = {};\n    this.videolist[this.srcprice].dstID = {\n      info: {\n        userID: ev.userName,\n      }\n    };\n\n    this.videolist[this.srcprice].hascall = true;\n    this.PeerList[this.srcprice] = new RTCPeerConnection(configuration);\n    this.onevideo();\n  }\n  closeonevideo() {}\n  clearonevideo() {\n    this.videolist[this.srcprice].dstID = '';\n    this.videolist[this.srcprice].hascall = false;\n    this.videolist[this.srcprice].src = null\n    this.videolist[this.srcprice].localStream\n      .getTracks()\n      .forEach((track: any) => {\n        track.stop();\n      });\n    this.PeerList[this.srcprice].close();\n    this.PeerList[this.srcprice] = null;\n  }\n  //点击前一个\n  prePage() {\n    if (this.page > 1) {\n      //page减1让\n      this.page--;\n    }\n  }\n  //点击后一个\n  nextPage() {\n    //判断是否小于最大页数\n    if (this.page < this.totalpages) {\n      this.page++;\n    }\n  }\n  //文本框输入页数触发事件\n  changePage(page: number) {\n    //是否在0至最大页数之间\n    if (page > 0 && page < this.totalpages) {\n      //输入的数付给page\n      this.page = page;\n      //浮点数向上取整\n      this.totalpages = Math.ceil(this.total / this.pageSize);\n    } else if (page < 0) {\n      //小于则返回到第一页\n      page = 1;\n      this.page = 1;\n    } else {\n      //大于则调到最后一页\n      page = this.totalpages;\n      this.page = this.totalpages;\n    }\n  }\n  videoborder(ev: any) {\n    if (this.type == ev) {\n      this.activeIndex = -1;\n      this.type = -1;\n    } else {\n      this.activeIndex = ev;\n      this.type = ev;\n    }\n  }\n  closevideo($event: any, ev: any) {\n    $event.stopPropagation();\n    let wang = ev.wang - 1;\n    if (ev.src) {\n      this.rx.closrVideo(ev.dstID);\n      this.videolist[wang].hascall = false;\n      this.videolist[wang].dstID = '';\n      this.PeerList[wang].close();\n      this.PeerList[wang] = null;\n      this.videotype = 0;\n    }\n  }\n  video = () => {\n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      this.call();\n    }\n  };\n  ngAfterViewInit() {}\n  call = () => {\n    this.videolist[this.srcprice].hascall = true;\n    this.PeerList[this.srcprice].onicecandidate = (event: any) => {};\n    this.PeerList[this.srcprice].onaddstream = (event: any) => {\n      this.videotype = 1;\n      this.getRemoteSream(event);\n    };\n    this.PeerList[this.srcprice].ontrack = (event: any) => {\n      // console.log('监听');\n      // console.log(event);\n    };\n    this.PeerList[this.srcprice].onconnection = (event: any) => {\n      // console.log(event);\n    };\n    this.PeerList[this.srcprice].ondatachannel = (event: any) => {\n      // console.log(event);\n    };\n    this.rx.sendOffer({\n      SDP: 'web client sdp',\n      channelID: this.channelID,\n      audioDirection: 'sendonly',\n      videoDirection: 'sendonly',\n    });\n  };\n  remoteAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.PeerList[this.srcprice].setRemoteDescription(desc);\n    this.PeerList[this.srcprice].createAnswer().then((sdp: any) => {\n      this.gotDescription2(sdp);\n    });\n  };\n  gotDescription2 = (desc: any) => {\n    this.PeerList[this.srcprice].setLocalDescription(desc).then();\n  };\n  handlDescError(err: any) {\n    console.log(err);\n  }\n  // 给video赋值显示\n  getRemoteSream = (e: any) => {\n    this.videolist[this.srcprice].src = e.stream;\n  };\n  handleError(err: any) {\n    console.log(err);\n  }\n  // 拖拽进入\n  eventinto(e: any, item: any) {\n    // console.log('进入目标元素')\n  }\n  eventtarget(ev: any, item: any) {\n    // console.log('在目标元素中拖拽');\n    ev.preventDefault();\n  }\n  eventleave(ev: any, item: any) {\n    // console.log('拖放离开目标元素');\n  }\n  eventdrop(ev: any, limit: any) {\n    // console.log('拖放');\n    var item = ev.dataTransfer.getData('item');\n    var type = ev.dataTransfer.getData('type');\n    var devStatus = ev.dataTransfer.getData('devStatus');\n    let data = {\n      info: {\n        userID: item,\n        userType: type,\n        devStatus: devStatus,\n      },\n    };\n    if (data.info.userType == 2) {\n      this.outer.emit('3');\n      return;\n    } else {\n      if (data.info.devStatus == 0) {\n        this.outer.emit('2');\n        return;\n      }\n    }\n    if (this.videolist[limit].hascall == true) {\n      this.popup = true;\n      this.cutlimit = limit;\n      this.cutdata = data;\n    } else {\n      let judge = false;\n      for (let i = 1; i < this.videolist.length; i++) {\n        if (this.videolist[i].dstID != '') {\n          let items = this.videolist[i].dstID.info.userID;\n          if (items == item) {\n            judge = true;\n            limit = i;\n          }\n        }\n      }\n      if (judge == false) {\n        if (this.videolist[limit].hascall == true) {\n          this.popup = true;\n        } else {\n          this.cutopen(limit, data);\n        }\n      } else {\n        this.page = Math.ceil(limit / this.pageSize);\n      }\n    }\n  }\n  cutout() {\n    this.popup = false;\n  }\n  cutconfirm() {\n    //关闭\n    this.rx.closrVideo(this.videolist[this.cutlimit].dstID);\n    this.videolist[this.cutlimit].hascall = false;\n    this.videolist[this.cutlimit].dstID = '';\n    this.PeerList[this.cutlimit].close();\n    this.PeerList[this.cutlimit] = null;\n    //点播\n    this.cutopen(this.cutlimit, this.cutdata);\n    this.popup = false;\n  }\n  cutopen(limit: any, dataID: any) {\n    const configuration = {};\n    this.videolist[limit].dstID = dataID;\n    this.videolist[limit].hascall = true;\n    this.PeerList[limit] = new RTCPeerConnection(configuration);\n    this.srcprice = limit;\n    this.rx.openVideo(dataID);\n  }\n  videomagnify(i: any) {\n    if (this.full == false) {\n      if (this.pagingclass == 'videofirst') {\n        this.full = false;\n      } else {\n        this.fullnav = this.pagingclass;\n        this.pagingclass = 'videofirst';\n        this.full = true;\n        this.localSize = this.pageSize;\n        this.pageSize = 1;\n        this.totalpages = Math.ceil(this.total / this.pageSize);\n        this.localPage = this.page;\n        this.page = i + 1;\n      }\n    } else if (this.full == true) {\n      this.pagingclass = this.fullnav;\n      this.full = false;\n      this.pageSize = this.localSize;\n      this.totalpages = Math.ceil(this.total / this.localSize);\n      this.page = this.localPage;\n    }\n  }\n  tit(ev: any) {\n    console.log(ev);\n  }\n\n  onevideo = () => {\n    \n    if (!navigator.mediaDevices) {\n      console.log('err');\n    } else {\n      var constraints = {\n        video: true,\n        audio: true,\n      };\n      let that = this;\n      navigator.mediaDevices\n        .getUserMedia(constraints)\n        .then((stream) => {\n          // video标签的srcObject\n          this.videolist[this.srcprice].localStream = stream;\n          that.onecall();\n        })\n        .catch(this.onehandleError);\n    }\n  };\n  onecall = () => {\n    this.PeerList[this.srcprice].onicecandidate = (event: any) => {};\n    // 将本地采集的流添加到pcPeer中\n    this.videolist[this.srcprice].localStream\n      .getTracks()\n      .forEach((track: any) => {\n        this.PeerList[this.srcprice].addTrack(\n          track,\n          this.videolist[this.srcprice].localStream\n        );\n      });\n    this.PeerList[this.srcprice].onaddstream = (event: any) => {\n      this.getRemoteSream(event);\n    };\n    this.PeerList[this.srcprice].onconnection = function () {};\n    this.PeerList[this.srcprice].ondatachannel = (event: any) => {\n      console.log(event);\n    };\n    this.rx.sendOffer({ SDP: 'web client sdp', channelID: this.channelID });\n  };\n  oneremoteAnswer = (e: any) => {\n    let resultdata = e.resultData;\n    let SDP = resultdata.SDP;\n    let desc = new RTCSessionDescription(SDP);\n    this.PeerList[this.srcprice].setRemoteDescription(desc);\n    this.PeerList[this.srcprice].createAnswer().then((sdp: any) => {\n      this.gotDescription2(sdp);\n    });\n  };\n  onegotDescription2 = (desc: any) => {\n    this.PeerList[this.srcprice].setLocalDescription(desc).then();\n  };\n  onehandlDescError(err: any) {\n    console.log(err);\n  }\n  onegetRemoteSream = (e: any) => {\n    // if (this.remotesvideo.nativeElement.srcObject !== e.stream) {\n    //   this.remotesvideo.nativeElement.srcObject = e.stream;\n    this.videolist[this.srcprice].src = e.stream;\n    // }\n  };\n  onehandleError(err: any) {\n    console.log(err);\n  }\n}\n","<div class=\"popupbox\" *ngIf=\"popup\">\n    <div class=\"popup\">\n        <div class=\"nav\" appDrag>\n            <div class=\"setname\">\n                <div>提示</div>\n                <i nz-icon nzType=\"close\" nzTheme=\"outline\" (click)=\"cutout()\"></i>\n            </div>\n            <div class=\"sethint\">当前已有点播是否切换</div>\n            <div class=\"sethintbutton\">\n                <button (click)=\"cutconfirm()\">确定</button>\n                <button (click)=\"cutout()\">取消</button>\n            </div>\n        </div>\n    </div>\n</div>\n<div class=\"box\">\n    <!-- 分屏 -->\n    <ng-container *ngFor=\"let title of videolist; let i = index\">\n        <div *ngIf=\"i >= (page - 1) * pageSize && i < page * pageSize\" (click)=\"videoborder(i)\" class=\"{{ pagingclass }}\" [ngClass]=\"activeIndex == i ? 'addborder' : 'removerborder'\">\n            <div class=\"videobox\" (mouseenter)=\"this.title.show = true\" (mouseleave)=\"this.title.show = false\" (dragenter)=\"eventinto($event, i)\" (dragover)=\"eventtarget($event, i)\" (dragleave)=\"eventleave($event, i)\" (drop)=\"eventdrop($event, i)\" (dblclick)=\"videomagnify(i)\">\n                <div class=\"hover\">\n                    <div class=\"borderbox\">\n                        &nbsp;&nbsp; <span *ngIf=\"title.dstID!=''\">{{title.dstID.info.userID}}</span>\n                    </div>\n                </div>\n                <div class=\"videoplay\">\n                    <video [srcObject]=\"title.src\" autoplay class=\"videoitem\"></video>\n                </div>\n                <div class=\"vide\">\n                    <div class=\"camera\" *ngIf=\"this.title.show\">\n                        <ul class=\"clearfix\">\n                            <li>\n                                <div class=\"cameraimg\" (click)=\"closevideo($event,title)\"></div>\n                            </li>\n                            <li>\n                                <div class=\"voiceimg\" (click)=\"tit(title)\"></div>\n                            </li>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </ng-container>\n</div>\n<div class=\"fenyebox\">\n    <span (click)=\"prePage()\" class=\"prePage\">上一页</span>\n    <span>{{ page }}/{{ totalpages }}</span>\n    <span (click)=\"nextPage()\" class=\"nextPage\">下一页</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n</div>","import {\n  Directive,\n  Output,\n  EventEmitter,\n  ElementRef,\n  HostListener,\n} from '@angular/core';\n@Directive({\n  selector: '[appClickOutside]',\n})\nexport class ClickOutsideDirective {\n  constructor(private elementRef: ElementRef) {}\n  @Output() clickOutside = new EventEmitter();\n  @HostListener('document:click', ['$event.target'])\n  onClick(targetElement: any) {\n    const isClickedInside =\n      this.elementRef.nativeElement.contains(targetElement);\n    if (!isClickedInside) {\n      this.clickOutside.emit(isClickedInside);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { OwosdkComponent } from './owosdk.component';\nimport { MeetingComponent } from './meeting/meeting.component';\nimport { VodComponent } from './vod/vod.component';\nimport { SpiltScreenComponent } from './components/spilt-screen/spilt-screen.component';\nimport { MapComponent } from './map/map.component';\nimport { AddmemberComponent } from './components/add-member/add-member.component';\nimport { VoiceComponent } from './components/voice/voice.component';\nimport { GroupComponent } from './group/group.component';\nimport { TimerComponent } from './components/timer/timer.component';\nimport { EquipmenttreeComponent } from './components/equipment-tree/equipment-tree.component';\nimport { MultiactionComponent } from './components/multiaction/multiaction.component';\nimport { GroupBusyComponent } from './components/group-busy/group-busy.component';\nimport { HotlineComponent } from './components/hotline/hotline.component';\nimport { PersonalComponent } from './components/personal/personal.component';\nimport { SelectTreeComponent } from './components/select-tree/select-tree.component';\nimport { SelectGroupComponent } from './components/select-group/select-group.component';\nimport { GroupTreeComponent } from './components/group-tree/group-tree.component';\nimport { PersonalinformationComponent } from './components/personalinformation/personalinformation.component';\nimport { HistoryComponent } from './history/history.component';\nimport { TreeComponent } from './components/tree/tree.component';\nimport { HintComponent } from './components/hint/hint.component';\nimport { PersonComponent } from './person/person.component';\nimport { EquipmentComponent } from './equipment/equipment.component';\nimport { EquipmentframeComponent } from './equipment/equipmentframe/equipmentframe.component';\nimport { ChatComponent } from './chat/chat.component';\nimport { OwoMessageComponent } from './message/message.component';\nimport { OverallService } from './common/overall.service';\nimport { NZ_I18N } from 'ng-zorro-antd/i18n';\nimport { zh_CN } from 'ng-zorro-antd/i18n';\nimport { registerLocaleData } from '@angular/common';\nimport zh from '@angular/common/locales/zh';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzLayoutModule } from 'ng-zorro-antd/layout';\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzPaginationModule } from 'ng-zorro-antd/pagination';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzTimePickerModule } from 'ng-zorro-antd/time-picker';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { NzUploadModule } from 'ng-zorro-antd/upload';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { NzSliderModule } from 'ng-zorro-antd/slider';\nimport { NzMessageModule } from 'ng-zorro-antd/message';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\n// import { WebService } from './protocol/rtc/web.service';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\nimport { VideomeetingComponent } from './meeting/videomeeting/videomeeting.component';\nimport { LargescreenComponent } from './largescreen/largescreen.component';\nimport { ExcelComponent } from './components/excel/excel.component';\nimport { ArrPipe } from './common/pipe/arr.pipe';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { FlowchartComponent } from './flowchart/flowchart.component';\nimport { BpmnComponent } from './flowchart/bpmn/bpmn.component';\nimport { NodeComponent } from './flowchart/node/node.component';\nimport { VideoComponent } from './components/video/video.component';\nimport { OnevideoComponent } from './vod/onevideo/onevideo.component';\nimport { LocalityvideoComponent } from './components/localityvideo/localityvideo.component';\nimport { CutmeetingComponent } from './components/cut-meeting/cut-meeting.component';\nimport { AvtransitionComponent } from './person/avtransition/avtransition.component';\nimport { AvradiotreeComponent } from './person/avradiotree/avradiotree.component';\nimport { BroadcastComponent } from './broadcast/broadcast.component';\nimport { BroadcasthandleComponent } from './broadcast/broadcast-handle/broadcast-handle.component';\nimport { AddbroadcastComponent } from './broadcast/add-broadcast/add-broadcast.component';\nimport { ClickOutsideDirective } from './common/click-outside.directive';\nimport { AudiomenuComponent } from './broadcast/broadcast-handle/audio-menu/audio-menu.component';\nimport { CycleselectComponent } from './broadcast/broadcast-handle/cycle-select/cycle-select.component';\nimport { BroadcastlocalityComponent } from './broadcast/broadcast-locality/broadcast-locality.component';\nimport { SelectBroadcastComponent } from './broadcast/select-broadcast/select-broadcast.component';\nimport { BroadcastTreeComponent } from './broadcast/select-broadcast/broadcast-tree/broadcast-tree.component';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport { HistoryavComponent } from './history/historyav/historyav.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ResizableModule } from 'angular-resizable-element';\nimport { WarningComponent } from './warning/warning.component';\nimport { InformationComponent } from './information/information.component';\nimport { DialComponent } from './components/dial/dial.component';\nimport { InquireTreeComponent } from './components/inquire-tree/inquire-tree.component';\nimport { InquireEquipmentComponent } from './components/inquire-equipment/inquire-equipment.component';\nimport { NgxEchartsModule, NGX_ECHARTS_CONFIG } from 'ngx-echarts';\nimport { EquimenttranstionComponent } from './equipment/equimenttranstion/equimenttranstion.component';\nimport { EquimenttreeComponent } from './equipment/equimenttree/equimenttree.component';\nimport { SelectbroadComponent } from './components/selectbroad/selectbroad.component';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DragDirective } from './common/drag';\nimport { IconDefinition } from '@ant-design/icons-angular';\nimport {\n  AccountBookFill,\n  AlertFill,\n  AlertOutline,\n} from '@ant-design/icons-angular/icons';\nconst icons: IconDefinition[] = [AccountBookFill, AlertOutline, AlertFill];\nimport { NzIconService } from 'ng-zorro-antd/icon';\nimport { ImageDisplayComponent } from './components/image-display/image-display.component';\n// import { VodPopComponent } from './components/vod-pop/vod-pop.component';\n@NgModule({\n  declarations: [\n    OwosdkComponent,\n    DragDirective,\n    VodComponent,\n    SpiltScreenComponent,\n    MapComponent,\n    TreeComponent,\n    HintComponent,\n    ChatComponent,\n    MeetingComponent,\n    OwoMessageComponent,\n    AddmemberComponent,\n    VoiceComponent,\n    GroupComponent,\n    TimerComponent,\n    HistoryComponent,\n    PersonComponent,\n    EquipmentComponent,\n    EquipmenttreeComponent,\n    EquipmentframeComponent,\n    PersonalinformationComponent,\n    MultiactionComponent,\n    GroupBusyComponent,\n    HotlineComponent,\n    SelectGroupComponent,\n    PersonalComponent,\n    SelectTreeComponent,\n    GroupTreeComponent,\n    VideomeetingComponent,\n    LargescreenComponent,\n    ExcelComponent,\n    ArrPipe,\n    FlowchartComponent,\n    BpmnComponent,\n    NodeComponent,\n    VideoComponent,\n    OnevideoComponent,\n    LocalityvideoComponent,\n    CutmeetingComponent,\n    AvtransitionComponent,\n    AvradiotreeComponent,\n    BroadcastComponent,\n    BroadcasthandleComponent,\n    AddbroadcastComponent,\n    ClickOutsideDirective,\n    AudiomenuComponent,\n    CycleselectComponent,\n    BroadcastlocalityComponent,\n    SelectBroadcastComponent,\n    BroadcastTreeComponent,\n    HistoryavComponent,\n    WarningComponent,\n    InformationComponent,\n    DialComponent,\n    InquireTreeComponent,\n    InquireEquipmentComponent,\n    EquimenttranstionComponent,\n    EquimenttreeComponent,\n    SelectbroadComponent,\n    ImageDisplayComponent,\n    // VodPopComponent,\n  ],\n  imports: [\n    CommonModule,\n    NzIconModule.forRoot(icons),\n    // BrowserModule,\n    FormsModule,\n    // BrowserAnimationsModule,\n    NzButtonModule,\n    NzLayoutModule,\n    NzMenuModule,\n    NzTreeModule,\n    NzInputModule,\n    NzIconModule,\n    NzPaginationModule,\n    NzSelectModule,\n    NzCheckboxModule,\n    NzRadioModule,\n    NzDatePickerModule,\n    NzTimePickerModule,\n    NzTableModule,\n    NzUploadModule,\n    NzSliderModule,\n    NzMessageModule,\n    NgbModule,\n    NzInputNumberModule,\n    NzDropDownModule,\n    NzTabsModule,\n    NzModalModule,\n    // HttpClientModule,\n    DragDropModule,\n    ResizableModule,\n    NgxEchartsModule,\n  ],\n  providers: [\n    { provide: NZ_I18N, useValue: zh_CN },\n    { provide: NzMessageService },\n    OverallService,\n    // WebService,\n    { provide: NzIconService },\n    {\n      provide: NGX_ECHARTS_CONFIG,\n      useFactory: () => ({ echarts: () => import('echarts') }),\n    },\n  ],\n  exports: [OwosdkComponent, OwoMessageComponent],\n})\nexport class OwosdkModule {}\n","import { Injectable } from '@angular/core';\nimport { WebService } from './web.service';\n@Injectable({\n  providedIn: 'root',\n})\nexport class ConnectService {\n  url = 'wss://172.16.133.101:7443';\n  // url = 'wss://222.128.117.18:7443';\n  constructor(private ws: WebService) {}\n  init() {\n    this.ws.initSocket(this.url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { AvService } from '../protocol/rtc/av.service';\nimport{NgmodalService} from './ngmodal.service'\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CallservieService {\n  constructor(\n    private message: NzMessageService,\n    private AV: AvService,\n    private modal: NgmodalService\n  ) {}\n  callaudio(userID: any) {\n    if(this.AV.judgephone(userID)){\n      this.message.create('warning', `语音已存在`);\n    }else{\n      this.modal.createaudio(userID);\n    }\n  }\n  callvideo(userID: any) {\n    if(this.AV.judgephone(userID)){\n      this.message.create('warning', `视频已存在`);\n    }else{\n      this.modal.createvideo(userID);\n    }\n  }\n  callvod(userID: any) {\n    if(this.judgeuserID(userID)){\n      this.message.create('warning', `点播已存在`);\n    }else{\n     this.modal.createvod(userID);\n    }\n  }\n  judgeuserID(ev: any) {\n    let type = false;\n    this.AV.onevideolist.forEach((element: any) => {\n      if (element.userID == ev&&element.type == '1') {\n        // 判断条件\n        type =true\n      }\n    });\n    return type;\n  }\n}\n","/*\n * Public API Surface of owosdk\n */\nexport * from './lib/owosdk.component';\nexport * from './lib/owosdk.module';\nexport * from './lib/protocol/rtc/connect.service';\nexport * from './lib/protocol/rtc/rx.service';\nexport * from './lib/protocol/rtc/web.service';\nexport * from './lib/protocol/resource/resource.service';\nexport * from './lib/protocol/rtc/icstDefines';\nexport * from './lib/common/callservie.service';\nexport * from './lib/message/message.component';\n\n// export * from './lib/components/voice/voice.component';\n// export * from './lib/chat/chat.component';\n// export * from './lib/components/vod-pop/vod-pop.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["svgCreate","svgAppend","CustomPalette","BpmnModeler"],"mappings":"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AI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACrE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACrE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACrE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EA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K,EAAE,EAAE,EAAE;YACnD,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACnD,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACnD,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACnD,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACnD,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACnD,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACnD,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACnD,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpD,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpD,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpD,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpD,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpD,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;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"}