diff --git a/src/assets/css/layout.scss b/src/assets/css/layout.scss index 19d4b88..f838c46 100644 --- a/src/assets/css/layout.scss +++ b/src/assets/css/layout.scss @@ -197,7 +197,7 @@ header { justify-content: space-between; align-items: center; position: relative; - z-index: 1; + // z-index: 1; background: #fff; padding: 0 10px; box-sizing: border-box; diff --git a/src/assets/images/webPuc/pngs/callRecord_icon.png b/src/assets/images/webPuc/pngs/callRecord_icon.png new file mode 100644 index 0000000..25f2bcc Binary files /dev/null and b/src/assets/images/webPuc/pngs/callRecord_icon.png differ diff --git a/src/assets/images/webPuc/pngs/call_icon.png b/src/assets/images/webPuc/pngs/call_icon.png new file mode 100644 index 0000000..67f0625 Binary files /dev/null and b/src/assets/images/webPuc/pngs/call_icon.png differ diff --git a/src/assets/images/webPuc/pngs/call_icon_muted.png b/src/assets/images/webPuc/pngs/call_icon_muted.png new file mode 100644 index 0000000..5fd1d92 Binary files /dev/null and b/src/assets/images/webPuc/pngs/call_icon_muted.png differ diff --git a/src/assets/images/webPuc/pngs/collapse.png b/src/assets/images/webPuc/pngs/collapse.png new file mode 100644 index 0000000..6dff382 Binary files /dev/null and b/src/assets/images/webPuc/pngs/collapse.png differ diff --git a/src/assets/images/webPuc/pngs/collapse_light.png b/src/assets/images/webPuc/pngs/collapse_light.png new file mode 100644 index 0000000..02bc760 Binary files /dev/null and b/src/assets/images/webPuc/pngs/collapse_light.png differ diff --git a/src/assets/images/webPuc/pngs/control_bg.png b/src/assets/images/webPuc/pngs/control_bg.png new file mode 100644 index 0000000..f29f93e Binary files /dev/null and b/src/assets/images/webPuc/pngs/control_bg.png differ diff --git a/src/assets/images/webPuc/pngs/empty-dark-pic.png b/src/assets/images/webPuc/pngs/empty-dark-pic.png new file mode 100644 index 0000000..6249f5a Binary files /dev/null and b/src/assets/images/webPuc/pngs/empty-dark-pic.png differ diff --git a/src/assets/images/webPuc/pngs/empty-light-pic.png b/src/assets/images/webPuc/pngs/empty-light-pic.png new file mode 100644 index 0000000..1271489 Binary files /dev/null and b/src/assets/images/webPuc/pngs/empty-light-pic.png differ diff --git a/src/assets/images/webPuc/pngs/fax_call.png b/src/assets/images/webPuc/pngs/fax_call.png new file mode 100644 index 0000000..cd12bc2 Binary files /dev/null and b/src/assets/images/webPuc/pngs/fax_call.png differ diff --git a/src/assets/images/webPuc/pngs/fax_icon.png b/src/assets/images/webPuc/pngs/fax_icon.png new file mode 100644 index 0000000..b617de1 Binary files /dev/null and b/src/assets/images/webPuc/pngs/fax_icon.png differ diff --git a/src/assets/images/webPuc/pngs/gis_clearMap.png b/src/assets/images/webPuc/pngs/gis_clearMap.png new file mode 100644 index 0000000..6bb613a Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_clearMap.png differ diff --git a/src/assets/images/webPuc/pngs/gis_clearMap_light.png b/src/assets/images/webPuc/pngs/gis_clearMap_light.png new file mode 100644 index 0000000..936b7b9 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_clearMap_light.png differ diff --git a/src/assets/images/webPuc/pngs/gis_measureArea.png b/src/assets/images/webPuc/pngs/gis_measureArea.png new file mode 100644 index 0000000..ba3f42f Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_measureArea.png differ diff --git a/src/assets/images/webPuc/pngs/gis_measureArea_light.png b/src/assets/images/webPuc/pngs/gis_measureArea_light.png new file mode 100644 index 0000000..1eb5401 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_measureArea_light.png differ diff --git a/src/assets/images/webPuc/pngs/gis_measureDistance.png b/src/assets/images/webPuc/pngs/gis_measureDistance.png new file mode 100644 index 0000000..749e5d6 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_measureDistance.png differ diff --git a/src/assets/images/webPuc/pngs/gis_measureDistance_light.png b/src/assets/images/webPuc/pngs/gis_measureDistance_light.png new file mode 100644 index 0000000..89eb882 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_measureDistance_light.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_circle_checked.png b/src/assets/images/webPuc/pngs/gis_toolip_circle_checked.png new file mode 100644 index 0000000..7a77166 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_circle_checked.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_circle_checked_light.png b/src/assets/images/webPuc/pngs/gis_toolip_circle_checked_light.png new file mode 100644 index 0000000..1fed5b6 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_circle_checked_light.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_cross_alarm.png b/src/assets/images/webPuc/pngs/gis_toolip_cross_alarm.png new file mode 100644 index 0000000..e8f1473 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_cross_alarm.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_cross_alarm_light.png b/src/assets/images/webPuc/pngs/gis_toolip_cross_alarm_light.png new file mode 100644 index 0000000..ff4e0e2 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_cross_alarm_light.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_interest_point.png b/src/assets/images/webPuc/pngs/gis_toolip_interest_point.png new file mode 100644 index 0000000..c24c339 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_interest_point.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_interest_point_light.png b/src/assets/images/webPuc/pngs/gis_toolip_interest_point_light.png new file mode 100644 index 0000000..1c19c35 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_interest_point_light.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_over_speed_alarm.png b/src/assets/images/webPuc/pngs/gis_toolip_over_speed_alarm.png new file mode 100644 index 0000000..57a6396 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_over_speed_alarm.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_over_speed_alarm_light.png b/src/assets/images/webPuc/pngs/gis_toolip_over_speed_alarm_light.png new file mode 100644 index 0000000..a761563 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_over_speed_alarm_light.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_replay_track.png b/src/assets/images/webPuc/pngs/gis_toolip_replay_track.png new file mode 100644 index 0000000..df4ed3b Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_replay_track.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_replay_track_light.png b/src/assets/images/webPuc/pngs/gis_toolip_replay_track_light.png new file mode 100644 index 0000000..0fcc8ff Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_replay_track_light.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_sub_management.png b/src/assets/images/webPuc/pngs/gis_toolip_sub_management.png new file mode 100644 index 0000000..f31d794 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_sub_management.png differ diff --git a/src/assets/images/webPuc/pngs/gis_toolip_sub_management_light.png b/src/assets/images/webPuc/pngs/gis_toolip_sub_management_light.png new file mode 100644 index 0000000..a285562 Binary files /dev/null and b/src/assets/images/webPuc/pngs/gis_toolip_sub_management_light.png differ diff --git a/src/assets/images/webPuc/pngs/header_banner_left.png b/src/assets/images/webPuc/pngs/header_banner_left.png new file mode 100644 index 0000000..679f581 Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_banner_left.png differ diff --git a/src/assets/images/webPuc/pngs/header_banner_middle.png b/src/assets/images/webPuc/pngs/header_banner_middle.png new file mode 100644 index 0000000..a6b7c3f Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_banner_middle.png differ diff --git a/src/assets/images/webPuc/pngs/header_banner_right.png b/src/assets/images/webPuc/pngs/header_banner_right.png new file mode 100644 index 0000000..0cbd7af Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_banner_right.png differ diff --git a/src/assets/images/webPuc/pngs/header_bar_dial.png b/src/assets/images/webPuc/pngs/header_bar_dial.png new file mode 100644 index 0000000..c25b818 Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_bar_dial.png differ diff --git a/src/assets/images/webPuc/pngs/header_bar_message_disable.png b/src/assets/images/webPuc/pngs/header_bar_message_disable.png new file mode 100644 index 0000000..97acd29 Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_bar_message_disable.png differ diff --git a/src/assets/images/webPuc/pngs/header_bar_message_normal.png b/src/assets/images/webPuc/pngs/header_bar_message_normal.png new file mode 100644 index 0000000..8884102 Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_bar_message_normal.png differ diff --git a/src/assets/images/webPuc/pngs/header_bar_microphone_off.png b/src/assets/images/webPuc/pngs/header_bar_microphone_off.png new file mode 100644 index 0000000..28b090d Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_bar_microphone_off.png differ diff --git a/src/assets/images/webPuc/pngs/header_bar_microphone_on.png b/src/assets/images/webPuc/pngs/header_bar_microphone_on.png new file mode 100644 index 0000000..10acc7b Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_bar_microphone_on.png differ diff --git a/src/assets/images/webPuc/pngs/header_bar_video_disable.png b/src/assets/images/webPuc/pngs/header_bar_video_disable.png new file mode 100644 index 0000000..7426ae8 Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_bar_video_disable.png differ diff --git a/src/assets/images/webPuc/pngs/header_bar_video_normal.png b/src/assets/images/webPuc/pngs/header_bar_video_normal.png new file mode 100644 index 0000000..fbebc1d Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_bar_video_normal.png differ diff --git a/src/assets/images/webPuc/pngs/header_bar_voice_normal.png b/src/assets/images/webPuc/pngs/header_bar_voice_normal.png new file mode 100644 index 0000000..f13f9ed Binary files /dev/null and b/src/assets/images/webPuc/pngs/header_bar_voice_normal.png differ diff --git a/src/assets/images/webPuc/pngs/history_message_report.png b/src/assets/images/webPuc/pngs/history_message_report.png new file mode 100644 index 0000000..2a29fc5 Binary files /dev/null and b/src/assets/images/webPuc/pngs/history_message_report.png differ diff --git a/src/assets/images/webPuc/pngs/horn_icon.png b/src/assets/images/webPuc/pngs/horn_icon.png new file mode 100644 index 0000000..55d852c Binary files /dev/null and b/src/assets/images/webPuc/pngs/horn_icon.png differ diff --git a/src/assets/images/webPuc/pngs/horn_icon_muted.png b/src/assets/images/webPuc/pngs/horn_icon_muted.png new file mode 100644 index 0000000..382097a Binary files /dev/null and b/src/assets/images/webPuc/pngs/horn_icon_muted.png differ diff --git a/src/assets/images/webPuc/pngs/login_bg.png b/src/assets/images/webPuc/pngs/login_bg.png new file mode 100644 index 0000000..89e23ea Binary files /dev/null and b/src/assets/images/webPuc/pngs/login_bg.png differ diff --git a/src/assets/images/webPuc/pngs/login_form_bg.png b/src/assets/images/webPuc/pngs/login_form_bg.png new file mode 100644 index 0000000..f5fa05c Binary files /dev/null and b/src/assets/images/webPuc/pngs/login_form_bg.png differ diff --git a/src/assets/images/webPuc/pngs/login_lang_bg.png b/src/assets/images/webPuc/pngs/login_lang_bg.png new file mode 100644 index 0000000..5bb28c2 Binary files /dev/null and b/src/assets/images/webPuc/pngs/login_lang_bg.png differ diff --git a/src/assets/images/webPuc/pngs/monitor_panel_bg.png b/src/assets/images/webPuc/pngs/monitor_panel_bg.png new file mode 100644 index 0000000..67ec7c6 Binary files /dev/null and b/src/assets/images/webPuc/pngs/monitor_panel_bg.png differ diff --git a/src/assets/images/webPuc/pngs/not_collapse.png b/src/assets/images/webPuc/pngs/not_collapse.png new file mode 100644 index 0000000..0180366 Binary files /dev/null and b/src/assets/images/webPuc/pngs/not_collapse.png differ diff --git a/src/assets/images/webPuc/pngs/not_collapse_light.png b/src/assets/images/webPuc/pngs/not_collapse_light.png new file mode 100644 index 0000000..19165e6 Binary files /dev/null and b/src/assets/images/webPuc/pngs/not_collapse_light.png differ diff --git a/src/assets/images/webPuc/pngs/user.png b/src/assets/images/webPuc/pngs/user.png new file mode 100644 index 0000000..1009a4d Binary files /dev/null and b/src/assets/images/webPuc/pngs/user.png differ diff --git a/src/assets/images/webPuc/pngs/video_icon.png b/src/assets/images/webPuc/pngs/video_icon.png new file mode 100644 index 0000000..ed58105 Binary files /dev/null and b/src/assets/images/webPuc/pngs/video_icon.png differ diff --git a/src/assets/images/webPuc/pngs/video_icon_muted.png b/src/assets/images/webPuc/pngs/video_icon_muted.png new file mode 100644 index 0000000..0997769 Binary files /dev/null and b/src/assets/images/webPuc/pngs/video_icon_muted.png differ diff --git a/src/assets/images/webPuc/pngs/voice_middle_called.png b/src/assets/images/webPuc/pngs/voice_middle_called.png new file mode 100644 index 0000000..e600ea5 Binary files /dev/null and b/src/assets/images/webPuc/pngs/voice_middle_called.png differ diff --git a/src/assets/images/webPuc/pngs/voice_middle_calling.png b/src/assets/images/webPuc/pngs/voice_middle_calling.png new file mode 100644 index 0000000..a412af6 Binary files /dev/null and b/src/assets/images/webPuc/pngs/voice_middle_calling.png differ diff --git a/src/assets/images/webPuc/pngs/voice_middle_disconnect.png b/src/assets/images/webPuc/pngs/voice_middle_disconnect.png new file mode 100644 index 0000000..caa6e3d Binary files /dev/null and b/src/assets/images/webPuc/pngs/voice_middle_disconnect.png differ diff --git a/src/assets/images/webPuc/pngs/voice_middle_disconnect_light.png b/src/assets/images/webPuc/pngs/voice_middle_disconnect_light.png new file mode 100644 index 0000000..bce8884 Binary files /dev/null and b/src/assets/images/webPuc/pngs/voice_middle_disconnect_light.png differ diff --git a/src/assets/images/webPuc/pngs/voice_middle_urgent.png b/src/assets/images/webPuc/pngs/voice_middle_urgent.png new file mode 100644 index 0000000..3349803 Binary files /dev/null and b/src/assets/images/webPuc/pngs/voice_middle_urgent.png differ diff --git a/src/assets/images/webPuc/pngs/white_bg.png b/src/assets/images/webPuc/pngs/white_bg.png new file mode 100644 index 0000000..3ec099b Binary files /dev/null and b/src/assets/images/webPuc/pngs/white_bg.png differ diff --git a/src/assets/images/webPuc/pois/Camera.svg b/src/assets/images/webPuc/pois/Camera.svg new file mode 100644 index 0000000..e0cfc3b --- /dev/null +++ b/src/assets/images/webPuc/pois/Camera.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/Camera1.svg b/src/assets/images/webPuc/pois/Camera1.svg new file mode 100644 index 0000000..39910e2 --- /dev/null +++ b/src/assets/images/webPuc/pois/Camera1.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/Emergenc.svg b/src/assets/images/webPuc/pois/Emergenc.svg new file mode 100644 index 0000000..1619c5c --- /dev/null +++ b/src/assets/images/webPuc/pois/Emergenc.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/FireHouse.svg b/src/assets/images/webPuc/pois/FireHouse.svg new file mode 100644 index 0000000..60554cf --- /dev/null +++ b/src/assets/images/webPuc/pois/FireHouse.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/Inform.svg b/src/assets/images/webPuc/pois/Inform.svg new file mode 100644 index 0000000..724d910 --- /dev/null +++ b/src/assets/images/webPuc/pois/Inform.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/pois/Interest.svg b/src/assets/images/webPuc/pois/Interest.svg new file mode 100644 index 0000000..8aed505 --- /dev/null +++ b/src/assets/images/webPuc/pois/Interest.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/Mask group.svg b/src/assets/images/webPuc/pois/Mask group.svg new file mode 100644 index 0000000..f00e595 --- /dev/null +++ b/src/assets/images/webPuc/pois/Mask group.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/webPuc/pois/Online.svg b/src/assets/images/webPuc/pois/Online.svg new file mode 100644 index 0000000..81ab3eb --- /dev/null +++ b/src/assets/images/webPuc/pois/Online.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/Police.svg b/src/assets/images/webPuc/pois/Police.svg new file mode 100644 index 0000000..dbf7d2c --- /dev/null +++ b/src/assets/images/webPuc/pois/Police.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/School.svg b/src/assets/images/webPuc/pois/School.svg new file mode 100644 index 0000000..d67d375 --- /dev/null +++ b/src/assets/images/webPuc/pois/School.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/UAV.svg b/src/assets/images/webPuc/pois/UAV.svg new file mode 100644 index 0000000..dc7e14f --- /dev/null +++ b/src/assets/images/webPuc/pois/UAV.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/Warning.svg b/src/assets/images/webPuc/pois/Warning.svg new file mode 100644 index 0000000..6d4de6e --- /dev/null +++ b/src/assets/images/webPuc/pois/Warning.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/map_Camera_Online.png b/src/assets/images/webPuc/pois/map_Camera_Online.png new file mode 100644 index 0000000..166ac34 Binary files /dev/null and b/src/assets/images/webPuc/pois/map_Camera_Online.png differ diff --git a/src/assets/images/webPuc/pois/map_Emergency_online 1.png b/src/assets/images/webPuc/pois/map_Emergency_online 1.png new file mode 100644 index 0000000..56a8f90 Binary files /dev/null and b/src/assets/images/webPuc/pois/map_Emergency_online 1.png differ diff --git a/src/assets/images/webPuc/pois/map_European_Online.png b/src/assets/images/webPuc/pois/map_European_Online.png new file mode 100644 index 0000000..3ffe660 Binary files /dev/null and b/src/assets/images/webPuc/pois/map_European_Online.png differ diff --git a/src/assets/images/webPuc/pois/map_FireHouse_online.png b/src/assets/images/webPuc/pois/map_FireHouse_online.png new file mode 100644 index 0000000..f8e7f90 Binary files /dev/null and b/src/assets/images/webPuc/pois/map_FireHouse_online.png differ diff --git a/src/assets/images/webPuc/pois/map_InterestPoint_online.png b/src/assets/images/webPuc/pois/map_InterestPoint_online.png new file mode 100644 index 0000000..ced848d Binary files /dev/null and b/src/assets/images/webPuc/pois/map_InterestPoint_online.png differ diff --git a/src/assets/images/webPuc/pois/map_Police_online.png b/src/assets/images/webPuc/pois/map_Police_online.png new file mode 100644 index 0000000..9d9e244 Binary files /dev/null and b/src/assets/images/webPuc/pois/map_Police_online.png differ diff --git a/src/assets/images/webPuc/pois/map_School_online.png b/src/assets/images/webPuc/pois/map_School_online.png new file mode 100644 index 0000000..b546322 Binary files /dev/null and b/src/assets/images/webPuc/pois/map_School_online.png differ diff --git a/src/assets/images/webPuc/pois/map_UAV_online.png b/src/assets/images/webPuc/pois/map_UAV_online.png new file mode 100644 index 0000000..b31b324 Binary files /dev/null and b/src/assets/images/webPuc/pois/map_UAV_online.png differ diff --git a/src/assets/images/webPuc/pois/map_Warning_online.png b/src/assets/images/webPuc/pois/map_Warning_online.png new file mode 100644 index 0000000..013a482 Binary files /dev/null and b/src/assets/images/webPuc/pois/map_Warning_online.png differ diff --git a/src/assets/images/webPuc/pois/map_Warning_online.svg b/src/assets/images/webPuc/pois/map_Warning_online.svg new file mode 100644 index 0000000..0ff0e14 --- /dev/null +++ b/src/assets/images/webPuc/pois/map_Warning_online.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/poi_camera.svg b/src/assets/images/webPuc/pois/poi_camera.svg new file mode 100644 index 0000000..91a2641 --- /dev/null +++ b/src/assets/images/webPuc/pois/poi_camera.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/pois/poi_rtsp.svg b/src/assets/images/webPuc/pois/poi_rtsp.svg new file mode 100644 index 0000000..be85836 --- /dev/null +++ b/src/assets/images/webPuc/pois/poi_rtsp.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/alarm_note_svg.svg b/src/assets/images/webPuc/svgs/alarm_note_svg.svg new file mode 100644 index 0000000..cda5253 --- /dev/null +++ b/src/assets/images/webPuc/svgs/alarm_note_svg.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/all_call.svg b/src/assets/images/webPuc/svgs/all_call.svg new file mode 100644 index 0000000..d0f2f09 --- /dev/null +++ b/src/assets/images/webPuc/svgs/all_call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/answer.svg b/src/assets/images/webPuc/svgs/answer.svg new file mode 100644 index 0000000..e1386a4 --- /dev/null +++ b/src/assets/images/webPuc/svgs/answer.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_all_small.svg b/src/assets/images/webPuc/svgs/avatar_call_all_small.svg new file mode 100644 index 0000000..07af9d7 --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_all_small.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_conference_small.svg b/src/assets/images/webPuc/svgs/avatar_call_conference_small.svg new file mode 100644 index 0000000..008fdce --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_conference_small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_dispatcher_small.svg b/src/assets/images/webPuc/svgs/avatar_call_dispatcher_small.svg new file mode 100644 index 0000000..0bd12e5 --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_dispatcher_small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_dispatcher_small_offline.svg b/src/assets/images/webPuc/svgs/avatar_call_dispatcher_small_offline.svg new file mode 100644 index 0000000..5c9dbbf --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_dispatcher_small_offline.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_group_small.svg b/src/assets/images/webPuc/svgs/avatar_call_group_small.svg new file mode 100644 index 0000000..035653c --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_group_small.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_offline_close_small.svg b/src/assets/images/webPuc/svgs/avatar_call_offline_close_small.svg new file mode 100644 index 0000000..ac2dcdf --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_offline_close_small.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_offline_lock_small.svg b/src/assets/images/webPuc/svgs/avatar_call_offline_lock_small.svg new file mode 100644 index 0000000..0cec043 --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_offline_lock_small.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_offline_small.svg b/src/assets/images/webPuc/svgs/avatar_call_offline_small.svg new file mode 100644 index 0000000..909d8f1 --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_offline_small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_offline_user_small.svg b/src/assets/images/webPuc/svgs/avatar_call_offline_user_small.svg new file mode 100644 index 0000000..72a2b55 --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_offline_user_small.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_online_close_small.svg b/src/assets/images/webPuc/svgs/avatar_call_online_close_small.svg new file mode 100644 index 0000000..d920026 --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_online_close_small.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_online_lock_small.svg b/src/assets/images/webPuc/svgs/avatar_call_online_lock_small.svg new file mode 100644 index 0000000..f3a28cd --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_online_lock_small.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_online_small.svg b/src/assets/images/webPuc/svgs/avatar_call_online_small.svg new file mode 100644 index 0000000..49cbbce --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_online_small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_online_user_small.svg b/src/assets/images/webPuc/svgs/avatar_call_online_user_small.svg new file mode 100644 index 0000000..708b9de --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_online_user_small.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_call_phone_small.svg b/src/assets/images/webPuc/svgs/avatar_call_phone_small.svg new file mode 100644 index 0000000..aa1ba1b --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_call_phone_small.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_crosspatch_disabled.svg b/src/assets/images/webPuc/svgs/avatar_crosspatch_disabled.svg new file mode 100644 index 0000000..17b9d3d --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_crosspatch_disabled.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_crosspatch_enabled.svg b/src/assets/images/webPuc/svgs/avatar_crosspatch_enabled.svg new file mode 100644 index 0000000..7ce19d1 --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_crosspatch_enabled.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_gis_subcribe_offline_small.svg b/src/assets/images/webPuc/svgs/avatar_gis_subcribe_offline_small.svg new file mode 100644 index 0000000..cb23d56 --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_gis_subcribe_offline_small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/avatar_gis_subcribe_small.svg b/src/assets/images/webPuc/svgs/avatar_gis_subcribe_small.svg new file mode 100644 index 0000000..31d7f2d --- /dev/null +++ b/src/assets/images/webPuc/svgs/avatar_gis_subcribe_small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/base_domain.svg b/src/assets/images/webPuc/svgs/base_domain.svg new file mode 100644 index 0000000..e3c78d4 --- /dev/null +++ b/src/assets/images/webPuc/svgs/base_domain.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/call.svg b/src/assets/images/webPuc/svgs/call.svg new file mode 100644 index 0000000..d5ec8b8 --- /dev/null +++ b/src/assets/images/webPuc/svgs/call.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/call_actived.svg b/src/assets/images/webPuc/svgs/call_actived.svg new file mode 100644 index 0000000..42ec92f --- /dev/null +++ b/src/assets/images/webPuc/svgs/call_actived.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/call_user.svg b/src/assets/images/webPuc/svgs/call_user.svg new file mode 100644 index 0000000..9c07aa4 --- /dev/null +++ b/src/assets/images/webPuc/svgs/call_user.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/callingNotification_answer.svg b/src/assets/images/webPuc/svgs/callingNotification_answer.svg new file mode 100644 index 0000000..f373d7d --- /dev/null +++ b/src/assets/images/webPuc/svgs/callingNotification_answer.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/callingNotification_hang_up.svg b/src/assets/images/webPuc/svgs/callingNotification_hang_up.svg new file mode 100644 index 0000000..ed791ca --- /dev/null +++ b/src/assets/images/webPuc/svgs/callingNotification_hang_up.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/camera.svg b/src/assets/images/webPuc/svgs/camera.svg new file mode 100644 index 0000000..42e1b5c --- /dev/null +++ b/src/assets/images/webPuc/svgs/camera.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/camera_mute.svg b/src/assets/images/webPuc/svgs/camera_mute.svg new file mode 100644 index 0000000..9e82e24 --- /dev/null +++ b/src/assets/images/webPuc/svgs/camera_mute.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/channelMonitor.svg b/src/assets/images/webPuc/svgs/channelMonitor.svg new file mode 100644 index 0000000..7d21768 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channelMonitor.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/webPuc/svgs/channelMonitor_actived.svg b/src/assets/images/webPuc/svgs/channelMonitor_actived.svg new file mode 100644 index 0000000..183e1c1 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channelMonitor_actived.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/webPuc/svgs/channel_insert_disabled.svg b/src/assets/images/webPuc/svgs/channel_insert_disabled.svg new file mode 100644 index 0000000..3a6eea7 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_insert_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/channel_insert_off.svg b/src/assets/images/webPuc/svgs/channel_insert_off.svg new file mode 100644 index 0000000..7c09e69 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_insert_off.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/channel_insert_on.svg b/src/assets/images/webPuc/svgs/channel_insert_on.svg new file mode 100644 index 0000000..c395ce9 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_insert_on.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/channel_monitor_disabled.svg b/src/assets/images/webPuc/svgs/channel_monitor_disabled.svg new file mode 100644 index 0000000..e65942f --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_monitor_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/channel_monitor_off.svg b/src/assets/images/webPuc/svgs/channel_monitor_off.svg new file mode 100644 index 0000000..78ac0a2 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_monitor_off.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/channel_monitor_on.svg b/src/assets/images/webPuc/svgs/channel_monitor_on.svg new file mode 100644 index 0000000..ae9d6f7 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_monitor_on.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/webPuc/svgs/channel_show_off.svg b/src/assets/images/webPuc/svgs/channel_show_off.svg new file mode 100644 index 0000000..6d488d0 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_show_off.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/channel_show_on.svg b/src/assets/images/webPuc/svgs/channel_show_on.svg new file mode 100644 index 0000000..836abd1 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_show_on.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/channel_split_disabled.svg b/src/assets/images/webPuc/svgs/channel_split_disabled.svg new file mode 100644 index 0000000..59ecf2e --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_split_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/channel_split_off.svg b/src/assets/images/webPuc/svgs/channel_split_off.svg new file mode 100644 index 0000000..c029c1d --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_split_off.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/channel_split_on.svg b/src/assets/images/webPuc/svgs/channel_split_on.svg new file mode 100644 index 0000000..873d40a --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_split_on.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/channel_status_0.svg b/src/assets/images/webPuc/svgs/channel_status_0.svg new file mode 100644 index 0000000..4337dab --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_status_0.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/channel_status_1.svg b/src/assets/images/webPuc/svgs/channel_status_1.svg new file mode 100644 index 0000000..6dc1a2a --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_status_1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/channel_status_2.svg b/src/assets/images/webPuc/svgs/channel_status_2.svg new file mode 100644 index 0000000..29febf9 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_status_2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/channel_status_3.svg b/src/assets/images/webPuc/svgs/channel_status_3.svg new file mode 100644 index 0000000..3046a33 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_status_3.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/channel_status_4.svg b/src/assets/images/webPuc/svgs/channel_status_4.svg new file mode 100644 index 0000000..2b92fdd --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_status_4.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/channel_status_5.svg b/src/assets/images/webPuc/svgs/channel_status_5.svg new file mode 100644 index 0000000..462384a --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_status_5.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/channel_status_busy.svg b/src/assets/images/webPuc/svgs/channel_status_busy.svg new file mode 100644 index 0000000..ebb0e8e --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_status_busy.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/channel_status_free.svg b/src/assets/images/webPuc/svgs/channel_status_free.svg new file mode 100644 index 0000000..ebb0e8e --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_status_free.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/channel_sub_off.svg b/src/assets/images/webPuc/svgs/channel_sub_off.svg new file mode 100644 index 0000000..9eadda3 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_sub_off.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/channel_sub_on.svg b/src/assets/images/webPuc/svgs/channel_sub_on.svg new file mode 100644 index 0000000..d03cc04 --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_sub_on.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/channel_table_empty.svg b/src/assets/images/webPuc/svgs/channel_table_empty.svg new file mode 100644 index 0000000..939eccb --- /dev/null +++ b/src/assets/images/webPuc/svgs/channel_table_empty.svg @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/close.svg b/src/assets/images/webPuc/svgs/close.svg new file mode 100644 index 0000000..ebba0fd --- /dev/null +++ b/src/assets/images/webPuc/svgs/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/collected.svg b/src/assets/images/webPuc/svgs/collected.svg new file mode 100644 index 0000000..de2b3ab --- /dev/null +++ b/src/assets/images/webPuc/svgs/collected.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/conference_icom_cancel_voice_stimulation.svg b/src/assets/images/webPuc/svgs/conference_icom_cancel_voice_stimulation.svg new file mode 100644 index 0000000..a317fbf --- /dev/null +++ b/src/assets/images/webPuc/svgs/conference_icom_cancel_voice_stimulation.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/conversation.svg b/src/assets/images/webPuc/svgs/conversation.svg new file mode 100644 index 0000000..90a70e1 --- /dev/null +++ b/src/assets/images/webPuc/svgs/conversation.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/conversation_light.svg b/src/assets/images/webPuc/svgs/conversation_light.svg new file mode 100644 index 0000000..093e800 --- /dev/null +++ b/src/assets/images/webPuc/svgs/conversation_light.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/cross_zone_alarm.svg b/src/assets/images/webPuc/svgs/cross_zone_alarm.svg new file mode 100644 index 0000000..677fe0b --- /dev/null +++ b/src/assets/images/webPuc/svgs/cross_zone_alarm.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/delay_ring_tone.svg b/src/assets/images/webPuc/svgs/delay_ring_tone.svg new file mode 100644 index 0000000..56afb76 --- /dev/null +++ b/src/assets/images/webPuc/svgs/delay_ring_tone.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_all_alarm_online_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_all_alarm_online_small.svg new file mode 100644 index 0000000..a6b637d --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_all_alarm_online_small.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_all_gps_offline_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_all_gps_offline_small.svg new file mode 100644 index 0000000..0b416de --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_all_gps_offline_small.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_all_gps_online_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_all_gps_online_small.svg new file mode 100644 index 0000000..0f08a7a --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_all_gps_online_small.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_all_offline_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_all_offline_small.svg new file mode 100644 index 0000000..076e8ad --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_all_offline_small.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_all_online_gps_alarm_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_all_online_gps_alarm_small.svg new file mode 100644 index 0000000..a454aee --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_all_online_gps_alarm_small.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_all_online_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_all_online_small.svg new file mode 100644 index 0000000..bc95cb3 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_all_online_small.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_broadband_alarm_online_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_broadband_alarm_online_small.svg new file mode 100644 index 0000000..b3b7022 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_broadband_alarm_online_small.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_broadband_online_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_broadband_online_small.svg new file mode 100644 index 0000000..abdabca --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_broadband_online_small.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_close_offline_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_close_offline_small.svg new file mode 100644 index 0000000..a2b1671 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_close_offline_small.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_close_online_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_close_online_small.svg new file mode 100644 index 0000000..7d9346f --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_close_online_small.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_lock_offline_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_lock_offline_small.svg new file mode 100644 index 0000000..8288c7a --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_lock_offline_small.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_lock_online_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_lock_online_small.svg new file mode 100644 index 0000000..359eff4 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_lock_online_small.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_narrowband_alarm_online_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_narrowband_alarm_online_small.svg new file mode 100644 index 0000000..c5bf4db --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_narrowband_alarm_online_small.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/device_bimodal_narrowband_online_small.svg b/src/assets/images/webPuc/svgs/device_bimodal_narrowband_online_small.svg new file mode 100644 index 0000000..0b691ef --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_bimodal_narrowband_online_small.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/device_camera_offline_small.svg b/src/assets/images/webPuc/svgs/device_camera_offline_small.svg new file mode 100644 index 0000000..671becb --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_camera_offline_small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_camera_online_gps_small.svg b/src/assets/images/webPuc/svgs/device_camera_online_gps_small.svg new file mode 100644 index 0000000..190cb7f --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_camera_online_gps_small.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/device_camera_online_small.svg b/src/assets/images/webPuc/svgs/device_camera_online_small.svg new file mode 100644 index 0000000..9367ef3 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_camera_online_small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_offline_lock_gps_small.svg b/src/assets/images/webPuc/svgs/device_offline_lock_gps_small.svg new file mode 100644 index 0000000..378f784 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_offline_lock_gps_small.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/device_online_lock_alarm_small.svg b/src/assets/images/webPuc/svgs/device_online_lock_alarm_small.svg new file mode 100644 index 0000000..2e0fe41 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_online_lock_alarm_small.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_online_lock_gps_alarm_small.svg b/src/assets/images/webPuc/svgs/device_online_lock_gps_alarm_small.svg new file mode 100644 index 0000000..be2a49a --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_online_lock_gps_alarm_small.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_online_lock_gps_small.svg b/src/assets/images/webPuc/svgs/device_online_lock_gps_small.svg new file mode 100644 index 0000000..80784b9 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_online_lock_gps_small.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_roip_offline_lock_gps_small.svg b/src/assets/images/webPuc/svgs/device_roip_offline_lock_gps_small.svg new file mode 100644 index 0000000..87e9eca --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_roip_offline_lock_gps_small.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_roip_online_lock_alarm_small.svg b/src/assets/images/webPuc/svgs/device_roip_online_lock_alarm_small.svg new file mode 100644 index 0000000..7b336f5 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_roip_online_lock_alarm_small.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_roip_online_lock_gps_alarm_small.svg b/src/assets/images/webPuc/svgs/device_roip_online_lock_gps_alarm_small.svg new file mode 100644 index 0000000..b194082 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_roip_online_lock_gps_alarm_small.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_roip_online_lock_gps_small.svg b/src/assets/images/webPuc/svgs/device_roip_online_lock_gps_small.svg new file mode 100644 index 0000000..0c94e75 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_roip_online_lock_gps_small.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_stun_offline_subscribe.svg b/src/assets/images/webPuc/svgs/device_stun_offline_subscribe.svg new file mode 100644 index 0000000..26e9542 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_stun_offline_subscribe.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_stun_online_subscribe.svg b/src/assets/images/webPuc/svgs/device_stun_online_subscribe.svg new file mode 100644 index 0000000..572a15f --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_stun_online_subscribe.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_stun_subscribe_alarm.svg b/src/assets/images/webPuc/svgs/device_stun_subscribe_alarm.svg new file mode 100644 index 0000000..3f5ca88 --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_stun_subscribe_alarm.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/device_subscribe_alarm.svg b/src/assets/images/webPuc/svgs/device_subscribe_alarm.svg new file mode 100644 index 0000000..577f0dd --- /dev/null +++ b/src/assets/images/webPuc/svgs/device_subscribe_alarm.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/dispatch_car_offline_small.svg b/src/assets/images/webPuc/svgs/dispatch_car_offline_small.svg new file mode 100644 index 0000000..c9372d6 --- /dev/null +++ b/src/assets/images/webPuc/svgs/dispatch_car_offline_small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/dispatch_car_online_small.svg b/src/assets/images/webPuc/svgs/dispatch_car_online_small.svg new file mode 100644 index 0000000..768ef53 --- /dev/null +++ b/src/assets/images/webPuc/svgs/dispatch_car_online_small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/dispatcher_call_user.svg b/src/assets/images/webPuc/svgs/dispatcher_call_user.svg new file mode 100644 index 0000000..0ca53ad --- /dev/null +++ b/src/assets/images/webPuc/svgs/dispatcher_call_user.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/drop_down.svg b/src/assets/images/webPuc/svgs/drop_down.svg new file mode 100644 index 0000000..05786fe --- /dev/null +++ b/src/assets/images/webPuc/svgs/drop_down.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/drop_right.svg b/src/assets/images/webPuc/svgs/drop_right.svg new file mode 100644 index 0000000..e7ef8fc --- /dev/null +++ b/src/assets/images/webPuc/svgs/drop_right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/dual_mode_terminal_offline.svg b/src/assets/images/webPuc/svgs/dual_mode_terminal_offline.svg new file mode 100644 index 0000000..123c8d7 --- /dev/null +++ b/src/assets/images/webPuc/svgs/dual_mode_terminal_offline.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/dual_mode_terminal_online.svg b/src/assets/images/webPuc/svgs/dual_mode_terminal_online.svg new file mode 100644 index 0000000..a4a8b0f --- /dev/null +++ b/src/assets/images/webPuc/svgs/dual_mode_terminal_online.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/earpiece.svg b/src/assets/images/webPuc/svgs/earpiece.svg new file mode 100644 index 0000000..a410a5a --- /dev/null +++ b/src/assets/images/webPuc/svgs/earpiece.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/earpiece_mute.svg b/src/assets/images/webPuc/svgs/earpiece_mute.svg new file mode 100644 index 0000000..cfeb2aa --- /dev/null +++ b/src/assets/images/webPuc/svgs/earpiece_mute.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/encryption.svg b/src/assets/images/webPuc/svgs/encryption.svg new file mode 100644 index 0000000..2eab897 --- /dev/null +++ b/src/assets/images/webPuc/svgs/encryption.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/expand.svg b/src/assets/images/webPuc/svgs/expand.svg new file mode 100644 index 0000000..0d712ec --- /dev/null +++ b/src/assets/images/webPuc/svgs/expand.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/eye.svg b/src/assets/images/webPuc/svgs/eye.svg new file mode 100644 index 0000000..5d4beff --- /dev/null +++ b/src/assets/images/webPuc/svgs/eye.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/eye_slash.svg b/src/assets/images/webPuc/svgs/eye_slash.svg new file mode 100644 index 0000000..d5e1c41 --- /dev/null +++ b/src/assets/images/webPuc/svgs/eye_slash.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/flip_camera.svg b/src/assets/images/webPuc/svgs/flip_camera.svg new file mode 100644 index 0000000..bd2036c --- /dev/null +++ b/src/assets/images/webPuc/svgs/flip_camera.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/folder.svg b/src/assets/images/webPuc/svgs/folder.svg new file mode 100644 index 0000000..ef909cf --- /dev/null +++ b/src/assets/images/webPuc/svgs/folder.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/force_insert.svg b/src/assets/images/webPuc/svgs/force_insert.svg new file mode 100644 index 0000000..1849b85 --- /dev/null +++ b/src/assets/images/webPuc/svgs/force_insert.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/fullDuplex.svg b/src/assets/images/webPuc/svgs/fullDuplex.svg new file mode 100644 index 0000000..4020155 --- /dev/null +++ b/src/assets/images/webPuc/svgs/fullDuplex.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/fusion_group_online.svg b/src/assets/images/webPuc/svgs/fusion_group_online.svg new file mode 100644 index 0000000..158977f --- /dev/null +++ b/src/assets/images/webPuc/svgs/fusion_group_online.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/gis.svg b/src/assets/images/webPuc/svgs/gis.svg new file mode 100644 index 0000000..1e5eca6 --- /dev/null +++ b/src/assets/images/webPuc/svgs/gis.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/gis_actived.svg b/src/assets/images/webPuc/svgs/gis_actived.svg new file mode 100644 index 0000000..ebb0e8e --- /dev/null +++ b/src/assets/images/webPuc/svgs/gis_actived.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/gis_call_user.svg b/src/assets/images/webPuc/svgs/gis_call_user.svg new file mode 100644 index 0000000..6405dd2 --- /dev/null +++ b/src/assets/images/webPuc/svgs/gis_call_user.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/green_answer.svg b/src/assets/images/webPuc/svgs/green_answer.svg new file mode 100644 index 0000000..ac5dc36 --- /dev/null +++ b/src/assets/images/webPuc/svgs/green_answer.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/grey_answer.svg b/src/assets/images/webPuc/svgs/grey_answer.svg new file mode 100644 index 0000000..2f63bda --- /dev/null +++ b/src/assets/images/webPuc/svgs/grey_answer.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/grey_video.svg b/src/assets/images/webPuc/svgs/grey_video.svg new file mode 100644 index 0000000..5016db3 --- /dev/null +++ b/src/assets/images/webPuc/svgs/grey_video.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/group_bimodal_all_offline_small.svg b/src/assets/images/webPuc/svgs/group_bimodal_all_offline_small.svg new file mode 100644 index 0000000..3f2d824 --- /dev/null +++ b/src/assets/images/webPuc/svgs/group_bimodal_all_offline_small.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/group_call.svg b/src/assets/images/webPuc/svgs/group_call.svg new file mode 100644 index 0000000..f0b9997 --- /dev/null +++ b/src/assets/images/webPuc/svgs/group_call.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/halfDuplex.svg b/src/assets/images/webPuc/svgs/halfDuplex.svg new file mode 100644 index 0000000..6f17004 --- /dev/null +++ b/src/assets/images/webPuc/svgs/halfDuplex.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/hang_up.svg b/src/assets/images/webPuc/svgs/hang_up.svg new file mode 100644 index 0000000..ba01d52 --- /dev/null +++ b/src/assets/images/webPuc/svgs/hang_up.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/header_camera_off.svg b/src/assets/images/webPuc/svgs/header_camera_off.svg new file mode 100644 index 0000000..3adec6f --- /dev/null +++ b/src/assets/images/webPuc/svgs/header_camera_off.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/header_camera_on.svg b/src/assets/images/webPuc/svgs/header_camera_on.svg new file mode 100644 index 0000000..c296550 --- /dev/null +++ b/src/assets/images/webPuc/svgs/header_camera_on.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/header_logo.svg b/src/assets/images/webPuc/svgs/header_logo.svg new file mode 100644 index 0000000..d67d356 --- /dev/null +++ b/src/assets/images/webPuc/svgs/header_logo.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/header_microphone_off.svg b/src/assets/images/webPuc/svgs/header_microphone_off.svg new file mode 100644 index 0000000..549f6b3 --- /dev/null +++ b/src/assets/images/webPuc/svgs/header_microphone_off.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/header_microphone_on.svg b/src/assets/images/webPuc/svgs/header_microphone_on.svg new file mode 100644 index 0000000..4bafcf7 --- /dev/null +++ b/src/assets/images/webPuc/svgs/header_microphone_on.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/header_volumn_off.svg b/src/assets/images/webPuc/svgs/header_volumn_off.svg new file mode 100644 index 0000000..cfeb2aa --- /dev/null +++ b/src/assets/images/webPuc/svgs/header_volumn_off.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/header_volumn_on.svg b/src/assets/images/webPuc/svgs/header_volumn_on.svg new file mode 100644 index 0000000..a410a5a --- /dev/null +++ b/src/assets/images/webPuc/svgs/header_volumn_on.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/headset.svg b/src/assets/images/webPuc/svgs/headset.svg new file mode 100644 index 0000000..b7c3867 --- /dev/null +++ b/src/assets/images/webPuc/svgs/headset.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/horizontal_screen.svg b/src/assets/images/webPuc/svgs/horizontal_screen.svg new file mode 100644 index 0000000..24ee6f5 --- /dev/null +++ b/src/assets/images/webPuc/svgs/horizontal_screen.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/icon_broadcast.svg b/src/assets/images/webPuc/svgs/icon_broadcast.svg new file mode 100644 index 0000000..39090bc --- /dev/null +++ b/src/assets/images/webPuc/svgs/icon_broadcast.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/icon_embrave.svg b/src/assets/images/webPuc/svgs/icon_embrave.svg new file mode 100644 index 0000000..3c0f010 --- /dev/null +++ b/src/assets/images/webPuc/svgs/icon_embrave.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/icon_video_pause.svg b/src/assets/images/webPuc/svgs/icon_video_pause.svg new file mode 100644 index 0000000..badb6fa --- /dev/null +++ b/src/assets/images/webPuc/svgs/icon_video_pause.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/icon_video_play.svg b/src/assets/images/webPuc/svgs/icon_video_play.svg new file mode 100644 index 0000000..f8809f3 --- /dev/null +++ b/src/assets/images/webPuc/svgs/icon_video_play.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/img_broadcast.svg b/src/assets/images/webPuc/svgs/img_broadcast.svg new file mode 100644 index 0000000..d79800a --- /dev/null +++ b/src/assets/images/webPuc/svgs/img_broadcast.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/layout_1_n.svg b/src/assets/images/webPuc/svgs/layout_1_n.svg new file mode 100644 index 0000000..b7915a9 --- /dev/null +++ b/src/assets/images/webPuc/svgs/layout_1_n.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/layout_selected.svg b/src/assets/images/webPuc/svgs/layout_selected.svg new file mode 100644 index 0000000..dbb789e --- /dev/null +++ b/src/assets/images/webPuc/svgs/layout_selected.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/listen.svg b/src/assets/images/webPuc/svgs/listen.svg new file mode 100644 index 0000000..977ee8f --- /dev/null +++ b/src/assets/images/webPuc/svgs/listen.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/login_form_domainName.svg b/src/assets/images/webPuc/svgs/login_form_domainName.svg new file mode 100644 index 0000000..cbf5d5b --- /dev/null +++ b/src/assets/images/webPuc/svgs/login_form_domainName.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/login_form_password.svg b/src/assets/images/webPuc/svgs/login_form_password.svg new file mode 100644 index 0000000..c594a29 --- /dev/null +++ b/src/assets/images/webPuc/svgs/login_form_password.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/login_form_user.svg b/src/assets/images/webPuc/svgs/login_form_user.svg new file mode 100644 index 0000000..afaabe9 --- /dev/null +++ b/src/assets/images/webPuc/svgs/login_form_user.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/logo_text.svg b/src/assets/images/webPuc/svgs/logo_text.svg new file mode 100644 index 0000000..e90282a --- /dev/null +++ b/src/assets/images/webPuc/svgs/logo_text.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_alarm_speaking.svg b/src/assets/images/webPuc/svgs/map_pin_alarm_speaking.svg new file mode 100644 index 0000000..3f928ce --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_alarm_speaking.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_camera.svg b/src/assets/images/webPuc/svgs/map_pin_camera.svg new file mode 100644 index 0000000..584058a --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_camera.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_camera_outline.svg b/src/assets/images/webPuc/svgs/map_pin_camera_outline.svg new file mode 100644 index 0000000..a332a67 --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_camera_outline.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_cluster.svg b/src/assets/images/webPuc/svgs/map_pin_cluster.svg new file mode 100644 index 0000000..8775c49 --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_cluster.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_crossZoneAlarm.svg b/src/assets/images/webPuc/svgs/map_pin_crossZoneAlarm.svg new file mode 100644 index 0000000..e74c58b --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_crossZoneAlarm.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_emergencyAlarm.svg b/src/assets/images/webPuc/svgs/map_pin_emergencyAlarm.svg new file mode 100644 index 0000000..bd48d2b --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_emergencyAlarm.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_idle.svg b/src/assets/images/webPuc/svgs/map_pin_idle.svg new file mode 100644 index 0000000..1a691b1 --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_idle.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_normal.svg b/src/assets/images/webPuc/svgs/map_pin_normal.svg new file mode 100644 index 0000000..f8cd197 --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_normal.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_outline.svg b/src/assets/images/webPuc/svgs/map_pin_outline.svg new file mode 100644 index 0000000..df026b6 --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_outline.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_overspeedAlarm.svg b/src/assets/images/webPuc/svgs/map_pin_overspeedAlarm.svg new file mode 100644 index 0000000..b73ac17 --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_overspeedAlarm.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_speaking.svg b/src/assets/images/webPuc/svgs/map_pin_speaking.svg new file mode 100644 index 0000000..0b00ccb --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_speaking.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/map_pin_vertigo.svg b/src/assets/images/webPuc/svgs/map_pin_vertigo.svg new file mode 100644 index 0000000..ea94645 --- /dev/null +++ b/src/assets/images/webPuc/svgs/map_pin_vertigo.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/message.svg b/src/assets/images/webPuc/svgs/message.svg new file mode 100644 index 0000000..bb3acaf --- /dev/null +++ b/src/assets/images/webPuc/svgs/message.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/microphone.svg b/src/assets/images/webPuc/svgs/microphone.svg new file mode 100644 index 0000000..28ac14c --- /dev/null +++ b/src/assets/images/webPuc/svgs/microphone.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/microphone_mute.svg b/src/assets/images/webPuc/svgs/microphone_mute.svg new file mode 100644 index 0000000..29ce1a9 --- /dev/null +++ b/src/assets/images/webPuc/svgs/microphone_mute.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/monitor.svg b/src/assets/images/webPuc/svgs/monitor.svg new file mode 100644 index 0000000..443df36 --- /dev/null +++ b/src/assets/images/webPuc/svgs/monitor.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/monitor_actived.svg b/src/assets/images/webPuc/svgs/monitor_actived.svg new file mode 100644 index 0000000..d3ba939 --- /dev/null +++ b/src/assets/images/webPuc/svgs/monitor_actived.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/more.svg b/src/assets/images/webPuc/svgs/more.svg new file mode 100644 index 0000000..d397112 --- /dev/null +++ b/src/assets/images/webPuc/svgs/more.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/more_off_small.svg b/src/assets/images/webPuc/svgs/more_off_small.svg new file mode 100644 index 0000000..7043b59 --- /dev/null +++ b/src/assets/images/webPuc/svgs/more_off_small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/more_on_small.svg b/src/assets/images/webPuc/svgs/more_on_small.svg new file mode 100644 index 0000000..1a219ed --- /dev/null +++ b/src/assets/images/webPuc/svgs/more_on_small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/narrow.svg b/src/assets/images/webPuc/svgs/narrow.svg new file mode 100644 index 0000000..a6f6341 --- /dev/null +++ b/src/assets/images/webPuc/svgs/narrow.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/no_click.svg b/src/assets/images/webPuc/svgs/no_click.svg new file mode 100644 index 0000000..ab2c034 --- /dev/null +++ b/src/assets/images/webPuc/svgs/no_click.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/not_collected.svg b/src/assets/images/webPuc/svgs/not_collected.svg new file mode 100644 index 0000000..56ff828 --- /dev/null +++ b/src/assets/images/webPuc/svgs/not_collected.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/notification.svg b/src/assets/images/webPuc/svgs/notification.svg new file mode 100644 index 0000000..e1d58b5 --- /dev/null +++ b/src/assets/images/webPuc/svgs/notification.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/on_duty.svg b/src/assets/images/webPuc/svgs/on_duty.svg new file mode 100644 index 0000000..5b28dca --- /dev/null +++ b/src/assets/images/webPuc/svgs/on_duty.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/overspeed_alarm.svg b/src/assets/images/webPuc/svgs/overspeed_alarm.svg new file mode 100644 index 0000000..1984cb7 --- /dev/null +++ b/src/assets/images/webPuc/svgs/overspeed_alarm.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/phone_call.svg b/src/assets/images/webPuc/svgs/phone_call.svg new file mode 100644 index 0000000..7708605 --- /dev/null +++ b/src/assets/images/webPuc/svgs/phone_call.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/phone_off_small.svg b/src/assets/images/webPuc/svgs/phone_off_small.svg new file mode 100644 index 0000000..f1ff9f7 --- /dev/null +++ b/src/assets/images/webPuc/svgs/phone_off_small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/phone_on_small.svg b/src/assets/images/webPuc/svgs/phone_on_small.svg new file mode 100644 index 0000000..c7db647 --- /dev/null +++ b/src/assets/images/webPuc/svgs/phone_on_small.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/images/webPuc/svgs/polling.svg b/src/assets/images/webPuc/svgs/polling.svg new file mode 100644 index 0000000..09cca50 --- /dev/null +++ b/src/assets/images/webPuc/svgs/polling.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/priority.svg b/src/assets/images/webPuc/svgs/priority.svg new file mode 100644 index 0000000..293fd55 --- /dev/null +++ b/src/assets/images/webPuc/svgs/priority.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/pull_up_video.svg b/src/assets/images/webPuc/svgs/pull_up_video.svg new file mode 100644 index 0000000..06175b3 --- /dev/null +++ b/src/assets/images/webPuc/svgs/pull_up_video.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/quick_phrases.svg b/src/assets/images/webPuc/svgs/quick_phrases.svg new file mode 100644 index 0000000..aa1d45a --- /dev/null +++ b/src/assets/images/webPuc/svgs/quick_phrases.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/red_no_answer.svg b/src/assets/images/webPuc/svgs/red_no_answer.svg new file mode 100644 index 0000000..310c9f2 --- /dev/null +++ b/src/assets/images/webPuc/svgs/red_no_answer.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/reportForm.svg b/src/assets/images/webPuc/svgs/reportForm.svg new file mode 100644 index 0000000..9e299c9 --- /dev/null +++ b/src/assets/images/webPuc/svgs/reportForm.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/reportForm_actived.svg b/src/assets/images/webPuc/svgs/reportForm_actived.svg new file mode 100644 index 0000000..47bb60d --- /dev/null +++ b/src/assets/images/webPuc/svgs/reportForm_actived.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/roip_alarm_stun_subscribe.svg b/src/assets/images/webPuc/svgs/roip_alarm_stun_subscribe.svg new file mode 100644 index 0000000..7f06de2 --- /dev/null +++ b/src/assets/images/webPuc/svgs/roip_alarm_stun_subscribe.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/roip_alarm_subscribe.svg b/src/assets/images/webPuc/svgs/roip_alarm_subscribe.svg new file mode 100644 index 0000000..60527b0 --- /dev/null +++ b/src/assets/images/webPuc/svgs/roip_alarm_subscribe.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/webPuc/svgs/roip_allOnline_stun_subscribe_small.svg b/src/assets/images/webPuc/svgs/roip_allOnline_stun_subscribe_small.svg new file mode 100644 index 0000000..242fbda --- /dev/null +++ b/src/assets/images/webPuc/svgs/roip_allOnline_stun_subscribe_small.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/roip_allOnline_subscribe_small.svg b/src/assets/images/webPuc/svgs/roip_allOnline_subscribe_small.svg new file mode 100644 index 0000000..07b84de --- /dev/null +++ b/src/assets/images/webPuc/svgs/roip_allOnline_subscribe_small.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/webPuc/svgs/roip_call_user.svg b/src/assets/images/webPuc/svgs/roip_call_user.svg new file mode 100644 index 0000000..0c152e6 --- /dev/null +++ b/src/assets/images/webPuc/svgs/roip_call_user.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/roip_group_call.svg b/src/assets/images/webPuc/svgs/roip_group_call.svg new file mode 100644 index 0000000..28616f8 --- /dev/null +++ b/src/assets/images/webPuc/svgs/roip_group_call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/roip_offline_stun_subscribe_small.svg b/src/assets/images/webPuc/svgs/roip_offline_stun_subscribe_small.svg new file mode 100644 index 0000000..ed7c6c6 --- /dev/null +++ b/src/assets/images/webPuc/svgs/roip_offline_stun_subscribe_small.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/roip_offline_subscribe_small.svg b/src/assets/images/webPuc/svgs/roip_offline_subscribe_small.svg new file mode 100644 index 0000000..c356328 --- /dev/null +++ b/src/assets/images/webPuc/svgs/roip_offline_subscribe_small.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/webPuc/svgs/scout_listen.svg b/src/assets/images/webPuc/svgs/scout_listen.svg new file mode 100644 index 0000000..7c3316a --- /dev/null +++ b/src/assets/images/webPuc/svgs/scout_listen.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/scout_monitor.svg b/src/assets/images/webPuc/svgs/scout_monitor.svg new file mode 100644 index 0000000..fe7f641 --- /dev/null +++ b/src/assets/images/webPuc/svgs/scout_monitor.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/screen_record.svg b/src/assets/images/webPuc/svgs/screen_record.svg new file mode 100644 index 0000000..f341f3a --- /dev/null +++ b/src/assets/images/webPuc/svgs/screen_record.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/screenshot.svg b/src/assets/images/webPuc/svgs/screenshot.svg new file mode 100644 index 0000000..416e99d --- /dev/null +++ b/src/assets/images/webPuc/svgs/screenshot.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/setting.svg b/src/assets/images/webPuc/svgs/setting.svg new file mode 100644 index 0000000..bb4ea96 --- /dev/null +++ b/src/assets/images/webPuc/svgs/setting.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/share_video.svg b/src/assets/images/webPuc/svgs/share_video.svg new file mode 100644 index 0000000..a5422bc --- /dev/null +++ b/src/assets/images/webPuc/svgs/share_video.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/sift.svg b/src/assets/images/webPuc/svgs/sift.svg new file mode 100644 index 0000000..d99f66d --- /dev/null +++ b/src/assets/images/webPuc/svgs/sift.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/single_call_alarm.svg b/src/assets/images/webPuc/svgs/single_call_alarm.svg new file mode 100644 index 0000000..6b1f31a --- /dev/null +++ b/src/assets/images/webPuc/svgs/single_call_alarm.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/single_call_alarm_mini.svg b/src/assets/images/webPuc/svgs/single_call_alarm_mini.svg new file mode 100644 index 0000000..61f6ead --- /dev/null +++ b/src/assets/images/webPuc/svgs/single_call_alarm_mini.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/speaker_settings.svg b/src/assets/images/webPuc/svgs/speaker_settings.svg new file mode 100644 index 0000000..123a1fe --- /dev/null +++ b/src/assets/images/webPuc/svgs/speaker_settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/status_message.svg b/src/assets/images/webPuc/svgs/status_message.svg new file mode 100644 index 0000000..33524ac --- /dev/null +++ b/src/assets/images/webPuc/svgs/status_message.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/terminal_alarm.svg b/src/assets/images/webPuc/svgs/terminal_alarm.svg new file mode 100644 index 0000000..939949b --- /dev/null +++ b/src/assets/images/webPuc/svgs/terminal_alarm.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/terminal_alarm_mini.svg b/src/assets/images/webPuc/svgs/terminal_alarm_mini.svg new file mode 100644 index 0000000..e51e75e --- /dev/null +++ b/src/assets/images/webPuc/svgs/terminal_alarm_mini.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/terminal_gps_online_mini.svg b/src/assets/images/webPuc/svgs/terminal_gps_online_mini.svg new file mode 100644 index 0000000..8c3fe34 --- /dev/null +++ b/src/assets/images/webPuc/svgs/terminal_gps_online_mini.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/terminal_gps_outline_mini.svg b/src/assets/images/webPuc/svgs/terminal_gps_outline_mini.svg new file mode 100644 index 0000000..5c1514c --- /dev/null +++ b/src/assets/images/webPuc/svgs/terminal_gps_outline_mini.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/toolbox.svg b/src/assets/images/webPuc/svgs/toolbox.svg new file mode 100644 index 0000000..9000825 --- /dev/null +++ b/src/assets/images/webPuc/svgs/toolbox.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/toolbox_actived.svg b/src/assets/images/webPuc/svgs/toolbox_actived.svg new file mode 100644 index 0000000..1f8f020 --- /dev/null +++ b/src/assets/images/webPuc/svgs/toolbox_actived.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/trackPlayback_call.svg b/src/assets/images/webPuc/svgs/trackPlayback_call.svg new file mode 100644 index 0000000..8b4a6eb --- /dev/null +++ b/src/assets/images/webPuc/svgs/trackPlayback_call.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/trackPlayback_current_node.svg b/src/assets/images/webPuc/svgs/trackPlayback_current_node.svg new file mode 100644 index 0000000..2b32c36 --- /dev/null +++ b/src/assets/images/webPuc/svgs/trackPlayback_current_node.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/trackPlayback_export.svg b/src/assets/images/webPuc/svgs/trackPlayback_export.svg new file mode 100644 index 0000000..b0ba35f --- /dev/null +++ b/src/assets/images/webPuc/svgs/trackPlayback_export.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/webPuc/svgs/trackPlayback_future_node.svg b/src/assets/images/webPuc/svgs/trackPlayback_future_node.svg new file mode 100644 index 0000000..da72113 --- /dev/null +++ b/src/assets/images/webPuc/svgs/trackPlayback_future_node.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/trackPlayback_past_node.svg b/src/assets/images/webPuc/svgs/trackPlayback_past_node.svg new file mode 100644 index 0000000..5d552ec --- /dev/null +++ b/src/assets/images/webPuc/svgs/trackPlayback_past_node.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/trackPlayback_video.svg b/src/assets/images/webPuc/svgs/trackPlayback_video.svg new file mode 100644 index 0000000..b49d7c4 --- /dev/null +++ b/src/assets/images/webPuc/svgs/trackPlayback_video.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/trumpet_mute.svg b/src/assets/images/webPuc/svgs/trumpet_mute.svg new file mode 100644 index 0000000..a9aba48 --- /dev/null +++ b/src/assets/images/webPuc/svgs/trumpet_mute.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/tsc.svg b/src/assets/images/webPuc/svgs/tsc.svg new file mode 100644 index 0000000..7efcb91 --- /dev/null +++ b/src/assets/images/webPuc/svgs/tsc.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/urgent.svg b/src/assets/images/webPuc/svgs/urgent.svg new file mode 100644 index 0000000..dfda4fd --- /dev/null +++ b/src/assets/images/webPuc/svgs/urgent.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/user.svg b/src/assets/images/webPuc/svgs/user.svg new file mode 100644 index 0000000..72cb1de --- /dev/null +++ b/src/assets/images/webPuc/svgs/user.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/user_light.svg b/src/assets/images/webPuc/svgs/user_light.svg new file mode 100644 index 0000000..83e85fc --- /dev/null +++ b/src/assets/images/webPuc/svgs/user_light.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/vector.svg b/src/assets/images/webPuc/svgs/vector.svg new file mode 100644 index 0000000..3782355 --- /dev/null +++ b/src/assets/images/webPuc/svgs/vector.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/video_1_N.svg b/src/assets/images/webPuc/svgs/video_1_N.svg new file mode 100644 index 0000000..4cc3cd8 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_1_N.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_call_user.svg b/src/assets/images/webPuc/svgs/video_call_user.svg new file mode 100644 index 0000000..6405dd2 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_call_user.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/video_camera.svg b/src/assets/images/webPuc/svgs/video_camera.svg new file mode 100644 index 0000000..55652ee --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_camera.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/video_camera_light.svg b/src/assets/images/webPuc/svgs/video_camera_light.svg new file mode 100644 index 0000000..56c9923 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_camera_light.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/video_equal_mode.svg b/src/assets/images/webPuc/svgs/video_equal_mode.svg new file mode 100644 index 0000000..862e3e6 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_equal_mode.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_force_insert.svg b/src/assets/images/webPuc/svgs/video_force_insert.svg new file mode 100644 index 0000000..542dabf --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_force_insert.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/video_group_call.svg b/src/assets/images/webPuc/svgs/video_group_call.svg new file mode 100644 index 0000000..925a073 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_group_call.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_hang_up_connected.svg b/src/assets/images/webPuc/svgs/video_hang_up_connected.svg new file mode 100644 index 0000000..c54abd3 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_hang_up_connected.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/video_off_small.svg b/src/assets/images/webPuc/svgs/video_off_small.svg new file mode 100644 index 0000000..5675368 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_off_small.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/images/webPuc/svgs/video_on_small.svg b/src/assets/images/webPuc/svgs/video_on_small.svg new file mode 100644 index 0000000..ca09319 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_on_small.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_connected_left.svg b/src/assets/images/webPuc/svgs/video_panel_footer_connected_left.svg new file mode 100644 index 0000000..e9e5886 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_connected_left.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_connected_left_light.svg b/src/assets/images/webPuc/svgs/video_panel_footer_connected_left_light.svg new file mode 100644 index 0000000..e9e5886 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_connected_left_light.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_connected_middle.svg b/src/assets/images/webPuc/svgs/video_panel_footer_connected_middle.svg new file mode 100644 index 0000000..3818d93 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_connected_middle.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_connected_middle_light.svg b/src/assets/images/webPuc/svgs/video_panel_footer_connected_middle_light.svg new file mode 100644 index 0000000..3818d93 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_connected_middle_light.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_connected_right.svg b/src/assets/images/webPuc/svgs/video_panel_footer_connected_right.svg new file mode 100644 index 0000000..ccae546 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_connected_right.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_connected_right_light.svg b/src/assets/images/webPuc/svgs/video_panel_footer_connected_right_light.svg new file mode 100644 index 0000000..ccae546 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_connected_right_light.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_left.svg b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_left.svg new file mode 100644 index 0000000..0ba6827 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_left.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_left_light.svg b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_left_light.svg new file mode 100644 index 0000000..05d5c7e --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_left_light.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_middle.svg b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_middle.svg new file mode 100644 index 0000000..df1a8e6 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_middle.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_middle_light.svg b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_middle_light.svg new file mode 100644 index 0000000..8ca153f --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_middle_light.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_right.svg b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_right.svg new file mode 100644 index 0000000..137b6f0 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_right.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_right_light.svg b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_right_light.svg new file mode 100644 index 0000000..b9f9934 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_footer_disconnect_right_light.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_called_left.svg b/src/assets/images/webPuc/svgs/video_panel_header_called_left.svg new file mode 100644 index 0000000..59aa6c5 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_called_left.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_called_right.svg b/src/assets/images/webPuc/svgs/video_panel_header_called_right.svg new file mode 100644 index 0000000..6f55b93 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_called_right.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_connected_left.svg b/src/assets/images/webPuc/svgs/video_panel_header_connected_left.svg new file mode 100644 index 0000000..de34569 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_connected_left.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_connected_left_light.svg b/src/assets/images/webPuc/svgs/video_panel_header_connected_left_light.svg new file mode 100644 index 0000000..b33a866 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_connected_left_light.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_connected_middle.svg b/src/assets/images/webPuc/svgs/video_panel_header_connected_middle.svg new file mode 100644 index 0000000..c428176 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_connected_middle.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_connected_middle_light.svg b/src/assets/images/webPuc/svgs/video_panel_header_connected_middle_light.svg new file mode 100644 index 0000000..09557e9 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_connected_middle_light.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_connected_right.svg b/src/assets/images/webPuc/svgs/video_panel_header_connected_right.svg new file mode 100644 index 0000000..c34312e --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_connected_right.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_connected_right_light.svg b/src/assets/images/webPuc/svgs/video_panel_header_connected_right_light.svg new file mode 100644 index 0000000..bf55267 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_connected_right_light.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_disconnect_left.svg b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_left.svg new file mode 100644 index 0000000..f6a3061 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_left.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_disconnect_left_light.svg b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_left_light.svg new file mode 100644 index 0000000..4f44e92 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_left_light.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_disconnect_middle.svg b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_middle.svg new file mode 100644 index 0000000..2921470 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_middle.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_disconnect_middle_light.svg b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_middle_light.svg new file mode 100644 index 0000000..7ff8dd0 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_middle_light.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_disconnect_right.svg b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_right.svg new file mode 100644 index 0000000..d5d6334 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_right.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_disconnect_right_light.svg b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_right_light.svg new file mode 100644 index 0000000..e996b0a --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_disconnect_right_light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_urgent_left.svg b/src/assets/images/webPuc/svgs/video_panel_header_urgent_left.svg new file mode 100644 index 0000000..888a46c --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_urgent_left.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_panel_header_urgent_right.svg b/src/assets/images/webPuc/svgs/video_panel_header_urgent_right.svg new file mode 100644 index 0000000..0f1a35e --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_panel_header_urgent_right.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_phone_call.svg b/src/assets/images/webPuc/svgs/video_phone_call.svg new file mode 100644 index 0000000..574c5ab --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_phone_call.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/webPuc/svgs/video_single_mode.svg b/src/assets/images/webPuc/svgs/video_single_mode.svg new file mode 100644 index 0000000..3d24419 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_single_mode.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/video_to_call.svg b/src/assets/images/webPuc/svgs/video_to_call.svg new file mode 100644 index 0000000..cefbb3b --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_to_call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/video_to_call_light.svg b/src/assets/images/webPuc/svgs/video_to_call_light.svg new file mode 100644 index 0000000..047db02 --- /dev/null +++ b/src/assets/images/webPuc/svgs/video_to_call_light.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_hang_up.svg b/src/assets/images/webPuc/svgs/voice_hang_up.svg new file mode 100644 index 0000000..18f8254 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_hang_up.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/voice_hang_up_white.svg b/src/assets/images/webPuc/svgs/voice_hang_up_white.svg new file mode 100644 index 0000000..c19bfa2 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_hang_up_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_connected_left.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_left.svg new file mode 100644 index 0000000..50d7aec --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_left.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_connected_left_light.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_left_light.svg new file mode 100644 index 0000000..7843754 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_left_light.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_connected_middle.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_middle.svg new file mode 100644 index 0000000..412c73c --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_middle.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_connected_middle_light.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_middle_light.svg new file mode 100644 index 0000000..eddcfa8 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_middle_light.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_connected_right.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_right.svg new file mode 100644 index 0000000..c33f171 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_right.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_connected_right_light.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_right_light.svg new file mode 100644 index 0000000..8fe0fd8 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_connected_right_light.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_left.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_left.svg new file mode 100644 index 0000000..affc255 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_left.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_left_light.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_left_light.svg new file mode 100644 index 0000000..fee256e --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_left_light.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_middle.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_middle.svg new file mode 100644 index 0000000..90b3efc --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_middle.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_middle_light.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_middle_light.svg new file mode 100644 index 0000000..cc15b9b --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_middle_light.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_right.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_right.svg new file mode 100644 index 0000000..04caad7 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_right.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_right_light.svg b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_right_light.svg new file mode 100644 index 0000000..c1d06c1 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_footer_disconnect_right_light.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_force_insert.svg b/src/assets/images/webPuc/svgs/voice_panel_force_insert.svg new file mode 100644 index 0000000..811404c --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_force_insert.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_connected_left.svg b/src/assets/images/webPuc/svgs/voice_panel_header_connected_left.svg new file mode 100644 index 0000000..cfc59b8 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_connected_left.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_connected_left_light.svg b/src/assets/images/webPuc/svgs/voice_panel_header_connected_left_light.svg new file mode 100644 index 0000000..1ee3dac --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_connected_left_light.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_connected_middle.svg b/src/assets/images/webPuc/svgs/voice_panel_header_connected_middle.svg new file mode 100644 index 0000000..a0a56e0 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_connected_middle.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_connected_middle_light.svg b/src/assets/images/webPuc/svgs/voice_panel_header_connected_middle_light.svg new file mode 100644 index 0000000..81e5e17 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_connected_middle_light.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_connected_right.svg b/src/assets/images/webPuc/svgs/voice_panel_header_connected_right.svg new file mode 100644 index 0000000..4a6e51c --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_connected_right.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_connected_right_light.svg b/src/assets/images/webPuc/svgs/voice_panel_header_connected_right_light.svg new file mode 100644 index 0000000..5ed3d8c --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_connected_right_light.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_left.svg b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_left.svg new file mode 100644 index 0000000..291b905 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_left.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_left_light.svg b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_left_light.svg new file mode 100644 index 0000000..056664f --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_left_light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_middle.svg b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_middle.svg new file mode 100644 index 0000000..8cd519d --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_middle.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_middle_light.svg b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_middle_light.svg new file mode 100644 index 0000000..797e13d --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_middle_light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_right.svg b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_right.svg new file mode 100644 index 0000000..a48e4d0 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_right.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_right_light.svg b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_right_light.svg new file mode 100644 index 0000000..288b3ac --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_header_disconnect_right_light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/webPuc/svgs/voice_panel_priority.svg b/src/assets/images/webPuc/svgs/voice_panel_priority.svg new file mode 100644 index 0000000..1889a25 --- /dev/null +++ b/src/assets/images/webPuc/svgs/voice_panel_priority.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/router/index.js b/src/router/index.js index 539c16a..21e70e9 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -159,6 +159,11 @@ export const publicRoutes = [ name: "home", component: () => import("@/views/home/index") //系统登录 }, + { + path: "/consultation", + name: "consultation", + component: () => import("@/views/consultation/demo") + }, { path: "/KeyPopulations", name: "KeyPopulations", diff --git a/src/store/index.js b/src/store/index.js index dacd621..dd9b1f7 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,16 +5,10 @@ import theme from './modules/theme'; import sysDict from './modules/sysDict'; import permission from './modules/permission'; import display from './modules/display'; - +import useGlobalStore from './modules/global/index'; import getters from './getters'; export default createStore({ - // state: { - // }, - // mutations: { - // }, - // actions: { - // }, getters, modules: { user, @@ -22,6 +16,7 @@ export default createStore({ theme, sysDict, permission, - display + display, + useGlobalStore } }); diff --git a/src/store/modules/global/index.js b/src/store/modules/global/index.js new file mode 100644 index 0000000..c2c399e --- /dev/null +++ b/src/store/modules/global/index.js @@ -0,0 +1,50 @@ +import { CONFERENCE_ROLE_NORMAL } from '@/views/consultation/sdk/conferenceControl'; +export default { + id: 'global', + state: () => ({ + showConfencePanel: false, // 是否展示会议面板 + IS_GLOBAL_LOADING: false, + activeMeetingConfig: null, // 当前进行中会议配置信息 + layoutTypeOptions: [], + }), + getters: { + GET_IS_GLOBAL_LOADING() { + return this.IS_GLOBAL_LOADING; + }, + IS_CURRENT_MEETING_OWNER() { + const members = this.activeMeetingConfig.members; + + if (!this.activeMeetingConfig || !members) return false; + + // 当前登录人是会议【创建者】或【主席】 + return members + .filter((v) => v.role !== CONFERENCE_ROLE_NORMAL) + .map((v) => v.basedata_id) + .includes(sessionStorage.getItem('user_basedata_id')); + }, + }, + mutations:{ + setMeetting(state, val) { + state.activeMeetingConfig = val; + }, + }, + + actions: { + ACT_IS_GLOBAL_LOADING(isLoading) { + this.IS_GLOBAL_LOADING = isLoading; + }, + setLayoutTypeOptions(layoutTypeOptions) { + this.layoutTypeOptions = layoutTypeOptions; + }, + setActiveConfig(context, config) { + this.activeMeetingConfig = config; + context.commit("setMeetting", config); + }, + setShowConfencePanel(show) { + this.showConfencePanel = show; + }, + }, + persist: { + enabled: true, + }, +}; diff --git a/src/views/backOfficeSystem/JudgmentHome/MeetingRoom/index.vue b/src/views/backOfficeSystem/JudgmentHome/MeetingRoom/index.vue index 0198cca..2fa5fc8 100644 --- a/src/views/backOfficeSystem/JudgmentHome/MeetingRoom/index.vue +++ b/src/views/backOfficeSystem/JudgmentHome/MeetingRoom/index.vue @@ -5,6 +5,9 @@ 新增 + + DEMO +
@@ -21,7 +24,6 @@
会商处置意见:{{ item.czyj }}
会议时间:{{ item.hskssj }} - {{ item.hsjssj }}
-
参会人员:{{ item.chry }}
@@ -67,10 +69,15 @@ + + + + + \ No newline at end of file diff --git a/src/views/consultation/components/content.vue b/src/views/consultation/components/content.vue new file mode 100644 index 0000000..64463da --- /dev/null +++ b/src/views/consultation/components/content.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/views/consultation/components/footer.vue b/src/views/consultation/components/footer.vue new file mode 100644 index 0000000..54294ad --- /dev/null +++ b/src/views/consultation/components/footer.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/views/consultation/components/js/useConfernceControlEvent.js b/src/views/consultation/components/js/useConfernceControlEvent.js new file mode 100644 index 0000000..7577123 --- /dev/null +++ b/src/views/consultation/components/js/useConfernceControlEvent.js @@ -0,0 +1,460 @@ +import { ref, onUnmounted } from 'vue'; +import { ElNotification } from 'element-plus'; +import emitter from "@/utils/eventBus.js"; +import useConferenceControlModule from '@/views/consultation/sdk/conferenceControl'; +import store from '@/store' + +const sdkConfernceControlModule = useConferenceControlModule(); + +// 通知时长 +const duration = 5 * 1000; + +const lockCallbackId = ref(''); +const activeConfigChangeCallbackId = ref(''); +const memberJoinCallbackId = ref(''); +const memberLeftCallbackId = ref(''); +const updateSubjecCallbackId = ref(''); +const updateMemberNickCallbackId = ref(''); +const inviteMemberCallbackId = ref(''); +const memberCameraCallbackId = ref(''); +const memberProhibitionCallbackId = ref(''); +const allMemberProhibitionCallbackId = ref(''); +const memberMuteCallbackId = ref(''); +const memberSpeakCallbackId = ref(''); +const voiceStimulationCallbackId = ref(''); +const memberSpeakingStateCallbackId = ref(''); +const setLayoutTypenCallbackId = ref(''); +const setMemberRoleCallbackId = ref(''); +const cancelMemberSpeakCallbackId = ref(''); +const addMemberCallbackId = ref(''); +const deleteMemberCallbackId = ref(''); +const screenSharingCallbackId = ref(''); +const deviceListChangegCallbackId = ref(''); + +// 移除事件注册 +const unRegisterConferenceControldata = () => { + sdkConfernceControlModule.removeLockListener(lockCallbackId.value); + sdkConfernceControlModule.removeActiveConfigChangeListener( + activeConfigChangeCallbackId.value + ); + sdkConfernceControlModule.removeMemberJoinListener( + memberJoinCallbackId.value + ); + sdkConfernceControlModule.removeMemberLeftListener( + memberLeftCallbackId.value + ); + sdkConfernceControlModule.removeUpdateSubjectListener( + updateSubjecCallbackId.value + ); + sdkConfernceControlModule.removeModifyMemberNickListener( + updateMemberNickCallbackId.value + ); + sdkConfernceControlModule.removeInviteMemberListener( + inviteMemberCallbackId.value + ); + sdkConfernceControlModule.removeMemberCameraListener( + memberCameraCallbackId.value + ); + sdkConfernceControlModule.removeMemberProhibitionListener( + memberProhibitionCallbackId.value + ); + sdkConfernceControlModule.removeAllMemberProhibitionListener( + allMemberProhibitionCallbackId.value + ); + sdkConfernceControlModule.removeMemberMuteListener( + memberMuteCallbackId.value + ); + sdkConfernceControlModule.removeAssignMemberSpeakListener( + memberSpeakCallbackId.value + ); + sdkConfernceControlModule.removeVoiceStimulationListener( + voiceStimulationCallbackId.value + ); + sdkConfernceControlModule.removeMemberSpeakingStateListener( + memberSpeakingStateCallbackId.value + ); + sdkConfernceControlModule.removeSetLayoutTypeListener( + setLayoutTypenCallbackId.value + ); + sdkConfernceControlModule.removeSetMemberRoleListener( + setMemberRoleCallbackId.value + ); + sdkConfernceControlModule.removeCancelMemberSpeakListener( + cancelMemberSpeakCallbackId.value + ); + sdkConfernceControlModule.removeAddMemberListener(addMemberCallbackId.value); + sdkConfernceControlModule.removeDeleteMemberListener( + deleteMemberCallbackId.value + ); + sdkConfernceControlModule.removeScreenSharingListener( + screenSharingCallbackId.value + ); + sdkConfernceControlModule.removeDeviceListChangeListener( + deviceListChangegCallbackId.value + ); +}; + +/* 会控管理相关 */ +export default ({ onDeviceListChange }) => { + // 初始化清除回调事件,避免外部重复调用注册方法导致事件重复 + unRegisterConferenceControldata(); + const globalStore = store.state.useGlobalStore; + + // 事件注册方便任意位置调用 + emitter.on('unRegisterConferenceControldata', unRegisterConferenceControldata); + + // 组件卸载时自动移除 + onUnmounted(() => { + unRegisterConferenceControldata(); + }); + + /** + * 当前进行中会议配置信息变化通知 + * */ + activeConfigChangeCallbackId.value = + sdkConfernceControlModule.addActiveConfigChangeListener((config) => { + store.dispatch("setActiveConfig",config); + }); + + /** + * 会议室锁定通知 + * */ + lockCallbackId.value = sdkConfernceControlModule.addLockListener((data) => { + console.log('+++++++++ 会议室锁定通知 ++++++++++', data); + + const descMap = { + 0: '解锁', + 1: '锁定', + }; + + ElNotification.info({ + id: `${Date.now()}`, + title: '会议室锁定通知', + message: `【${data.operator.alias}】${descMap[data.status]}会议室`, + }); + }); + + /** + * 增加会议成员通知 + * */ + addMemberCallbackId.value = sdkConfernceControlModule.addAddMemberListener( + (data) => { + console.log('+++++++++ 【会控】增加会议成员通知 ++++++++++', data); + + const name = data.members.map((v) => v.alias || v.number).join('; '); + + ElNotification.info({ + id: `${Date.now()}`, + title: '【会控】增加会议成员通知', + message: `【${name}】已成为【会议:${data.meeting.number}】的会议成员!`, + }); + } + ); + + /** + * 删除会议成员通知 + * */ + deleteMemberCallbackId.value = + sdkConfernceControlModule.addDeleteMemberListener((data) => { + console.log('+++++++++ 【会控】删除会议成员通知 ++++++++++', data); + + const name = data.member.alias || data.member.number; + + ElNotification.info({ + id: `${Date.now()}`, + title: '【会控】删除会议成员通知', + message: `【${name}】已不属于【会议:${data.meeting.number}】的会议成员!`, + }); + }); + + /** + * 成员入会通知 + * */ + memberJoinCallbackId.value = sdkConfernceControlModule.addMemberJoinListener( + (data) => { + console.log('+++++++++ 成员入会通知 ++++++++++', data); + + const name = data.member.alias || data.member.number; + + ElNotification.info({ + id: `${Date.now()}`, + title: '成员入会通知', + message: `【${name}】加入了【会议:${data.meeting.number}】!`, + }); + + // 自己入会,展示会议面板 + if ( + data.member.basedata_id === sessionStorage.getItem('user_basedata_id') + ) { + // 展示会议面板 + globalStore.setShowConfencePanel(true); + } + } + ); + + /** + * 成员离会通知 + * */ + memberLeftCallbackId.value = sdkConfernceControlModule.addMemberLeftListener( + (data) => { + console.log('+++++++++ 成员离会通知 ++++++++++', data); + + const name = data.member.alias || data.member.number; + + ElNotification.info({ + id: `${Date.now()}`, + title: '成员离会通知', + message: `【${name}】离开了【会议:${data.meeting.number}】!`, + }); + + // 不是自己,不需处理 + if ( + data.member.basedata_id !== sessionStorage.getItem('user_basedata_id') + ) { + return; + } + } + ); + + /** + * 更新会议主题通知 + * */ + updateSubjecCallbackId.value = + sdkConfernceControlModule.addUpdateSubjectListener((data) => { + console.log('+++++++++ 更新会议主题通知 ++++++++++', data); + + ElNotification.info({ + id: `${Date.now()}`, + title: '更新会议主题通知', + message: `【${data.operator.alias}】修改了会议主题!`, + }); + }); + + /** + * 设置成员角色通知 + * */ + setMemberRoleCallbackId.value = + sdkConfernceControlModule.addSetMemberRoleListener((data) => { + console.log('+++++++++ 设置成员角色通知 ++++++++++', data); + + const roleDesc = { + 0: '成员', + 1: '主席', + 2: '创建者', + }; + + ElNotification.info({ + id: `${Date.now()}`, + title: '设置成员角色通知', + message: `${data.operator.alias} 将 ${data.member.alias} 设置为了【${ + roleDesc[data.member_role] + }】`, + }); + }); + + /** + * 修改会议成员昵称通知 + * */ + updateMemberNickCallbackId.value = + sdkConfernceControlModule.addModifyMemberNickListener((data) => { + console.log('+++++++++ 修改会议成员昵称通知 ++++++++++', data); + + ElNotification.info({ + id: `${Date.now()}`, + title: '修改会议成员昵称通知', + message: `【${data.operator.alias}】修改了会议成员昵称为【${data.nickname}】!`, + }); + }); + + /** + * 呼叫未入会成员通知 + * */ + inviteMemberCallbackId.value = + sdkConfernceControlModule.addInviteMemberListener((data) => { + console.log('+++++++++ 呼叫未入会成员通知 ++++++++++', data); + + ElNotification.info({ + id: `${Date.now()}`, + title: '呼叫未入会成员通知', + message: `收到会议号【${data.meeting.number}】的入会通知!`, + }); + }); + + /** + * 摄像头开关通知 + * */ + memberCameraCallbackId.value = + sdkConfernceControlModule.addMemberCameraListener((data) => { + console.log('+++++++++ 摄像头开关通知 ++++++++++', data); + + const cameraDesc = { + 0: '已关闭', + 1: '已开启', + 2: '无', + }; + + ElNotification.info({ + id: `${Date.now()}`, + title: '摄像头开关通知', + message: `${data.operator.alias}【${cameraDesc[data.status]}】${ + data.member.alias + } 的摄像头`, + }); + }); + + /** + * 禁言通知 + * */ + memberProhibitionCallbackId.value = + sdkConfernceControlModule.addMemberProhibitionListener((data) => { + console.log('+++++++++ 禁言通知 ++++++++++', data); + + const prohibitioDesc = { + 0: '解除禁言', + 1: '禁言', + }; + const name = data.member.alias || data.member.number; + ElNotification.info({ + id: `${Date.now()}`, + title: '禁言通知', + message: `${data.operator.alias} 对【${name}】${ + prohibitioDesc[data.status] + }!`, + }); + }); + + /** + * 全部禁言通知 + * */ + allMemberProhibitionCallbackId.value = + sdkConfernceControlModule.addAllMemberProhibitionListener((data) => { + console.log('+++++++++ 全部禁言通知 ++++++++++', data); + + const prohibitioDesc = { + 0: '解除全部禁言', + 1: '开启全部禁言', + }; + + ElNotification.info({ + id: `${Date.now()}`, + title: '全部禁言通知', + message: `${data.operator.alias} ${prohibitioDesc[data.status]}!`, + }); + }); + + /** + * 静音通知 + * */ + memberMuteCallbackId.value = sdkConfernceControlModule.addMemberMuteListener( + (data) => { + console.log('+++++++++ 静音通知 ++++++++++', data); + + const muteDesc = { + 0: '取消静音', + 1: '静音', + 2: '无音频', + }; + const name = data.member.alias || data.member.number; + + ElNotification.info({ + id: `${Date.now()}`, + title: '静音通知', + message: `${data.operator.alias} 对【${name}】${ + muteDesc[data.status] + }!`, + }); + } + ); + + /** + * 设备列表变化通知 + * */ + deviceListChangegCallbackId.value = + sdkConfernceControlModule.addDeviceListChangeListener((data) => { + console.log('+++++++++ 设备列表变化通知 ++++++++++', data); + if (onDeviceListChange) { + onDeviceListChange(data); + } + }); + + /** + * 指定成员讲话通知 + * */ + memberSpeakCallbackId.value = + sdkConfernceControlModule.addAssignMemberSpeakListener((data) => { + console.log('+++++++++ 指定成员讲话通知 ++++++++++', data); + + const name = data.member.alias || data.member.number; + + ElNotification.info({ + id: `${Date.now()}`, + title: '指定成员讲话通知', + message: `${data.operator.alias} 指定【${name}】讲话!`, + }); + }); + + /** + * 取消指定成员讲话通知 + * */ + cancelMemberSpeakCallbackId.value = + sdkConfernceControlModule.addCancelMemberSpeakListener((data) => { + console.log('+++++++++ 取消成员讲话通知 ++++++++++', data); + + const name = data.member.alias || data.member.number; + + ElNotification.info({ + id: `${Date.now()}`, + title: '取消成员讲话通知', + message: `${data.operator.alias} 取消【${name}】讲话!`, + }); + }); + + /** + * 成员讲话状态通知 + * */ + memberSpeakingStateCallbackId.value = + sdkConfernceControlModule.addMemberSpeakingStateListener((data) => { + console.log('+++++++++ 成员讲话状态通知 ++++++++++', data); + }); + + /** + * 语音激励成员讲话状态通知 + * */ + voiceStimulationCallbackId.value = + sdkConfernceControlModule.addVoiceStimulationListener((data) => { + console.log('+++++++++ 语音激励成员讲话状态通知 ++++++++++', data); + }); + + /** + * 修改布局通知 + * */ + setLayoutTypenCallbackId.value = + sdkConfernceControlModule.addSetLayoutTypeListener((data) => { + console.log('+++++++++ 修改布局通知 ++++++++++', data); + + ElNotification.info({ + id: `${Date.now()}`, + title: '修改布局通知', + message: `修改布局通知`, + }); + }); + + /** + * 屏幕共享通知 + * */ + screenSharingCallbackId.value = + sdkConfernceControlModule.addScreenSharingListener((data) => { + console.log('+++++++++ 屏幕共享通知 ++++++++++', data); + + const descMap = { + 0: '取消共享', //(未共享) + 1: '共享屏幕', //(已共享) + }; + + ElNotification.info({ + id: `${Date.now()}`, + title: '屏幕共享通知', + message: `【${data.member.alias}】${descMap[data.sharing_status]}`, + }); + }); +}; diff --git a/src/views/consultation/components/js/useConfernceEvent.js b/src/views/consultation/components/js/useConfernceEvent.js new file mode 100644 index 0000000..69d1471 --- /dev/null +++ b/src/views/consultation/components/js/useConfernceEvent.js @@ -0,0 +1,234 @@ +import { ref, getCurrentInstance, onUnmounted } from 'vue'; +import { ElNotification } from 'element-plus'; +import { ConferenceCallingNotification } from '@/views/consultation/hooks/callingNotification'; +import useConfernceModule from '@/views/consultation/sdk/conference'; +import store from '@/store' +import emitter from "@/utils/eventBus.js"; + +const sdkConfernceModule = useConfernceModule(); + +// 通知时长 +const duration = 10 * 1000; + +const createCallbackId = ref(''); +const reminCallbackId = ref(''); +const deleteCallbackId = ref(''); +const updateCallbackId = ref(''); +const addMemberCallbackId = ref(''); +const deleteMemberCallbackId = ref(''); +const mediaStreamCallbackId = ref(''); +const answerAckCallbackId = ref(''); +const hangupCallbackId = ref(''); +const incomingCallbackId = ref(''); +const stateCallbackId = ref(''); + +// 移除事件注册 +const unRegisterConferenceEvent = () => { + sdkConfernceModule.removeCreateListener(createCallbackId.value); + sdkConfernceModule.removeRemindListener(reminCallbackId.value); + sdkConfernceModule.removeDeleteListener(deleteCallbackId.value); + sdkConfernceModule.removeUpdateListener(updateCallbackId.value); + sdkConfernceModule.removeAddMemberListener(addMemberCallbackId.value); + sdkConfernceModule.removeDeleteMemberListener(deleteMemberCallbackId.value); + sdkConfernceModule.removeMediaStream(mediaStreamCallbackId.value); + sdkConfernceModule.removeAnswerAckEvt(answerAckCallbackId.value); + sdkConfernceModule.removeHangupEvt(hangupCallbackId.value); + sdkConfernceModule.removeIncomingEvt(incomingCallbackId.value); + sdkConfernceModule.removeStateChangeListener(stateCallbackId.value); +}; + +/* 会议管理相关 */ +export default () => { + const globalStore = store.state.useGlobalStore; + + // 初始化清除回调事件,避免外部重复调用注册方法导致事件重复 + unRegisterConferenceEvent(); + + // 事件注册方便任意位置调用 + emitter.on('unRegisterConferenceEvent',unRegisterConferenceEvent) + + // 组件卸载时自动移除 + onUnmounted(() => { + unRegisterConferenceEvent(); + }); + + /** + * 添加创建通知,事件分发中心会自动过滤【创建者】 + * */ + createCallbackId.value = sdkConfernceModule.addCreateListener((data) => { + console.log('+++++++++ 会议创建通知 ++++++++++', data); + + ElNotification.info({ + id: `${Date.now()}`, + title: '会议创建通知', + message: `收到来自【${ data.creator.alias }】创建的会议提醒,会议开始时间为【${data.appointment}】,参会者 ${ data.members.length } 人【${data.members.map((v) => v.alias).join('; ')}】`, + }); + + // 拉取会议列表 + emitter.emit('fetchConfence'); + }); + + /** + * 添加会议提醒通知 + */ + reminCallbackId.value = sdkConfernceModule.addRemindListener((data) => { + console.log('+++++++++ 会议开始提醒 ++++++++++', data); + + ElNotification.info({ + id: `${Date.now()}`, + title: '会议开始提醒', + message: `收到来自【${data.creator.alias}】创建的会议提醒,会议主题【${ data.subject }】,会议开始时间为【${data.appointment}】,参会者 ${ data.members.length } 人【${data.members.map((v) => v.alias).join('; ')}】`, + }); + }); + + /** + * 会议删除通知(注:服务端目前只修改成员会议的状态,不会真正删除,即不会派发 evt 通知) + */ + deleteCallbackId.value = sdkConfernceModule.addDeleteListener((data) => { + console.log('+++++++++ 会议删除通知 ++++++++++', data); + + ElNotification.info({ + id: `${Date.now()}`, + title: '会议删除通知', + message: `由【${data.creator.alias}】创建的【${data.appointment}】【${data.subject}】的会议已被删除!`, + }); + + // 拉取会议列表 + emitter.emit('fetchConfence'); + }); + + /** + * 会议修改通知 + * */ + updateCallbackId.value = sdkConfernceModule.addUpdateListener((data) => { + console.log('+++++++++ 会议修改通知 ++++++++++', data); + + ElNotification.info({ + id: `${Date.now()}`, + title: '会议修改通知', + message: `由【${data.creator.alias}】创建的【${data.appointment}】【${data.subject}】的会议发生调整!`, + }); + }); + + /** + * 增加会议成员通知 + * */ + addMemberCallbackId.value = sdkConfernceModule.addAddMemberListener( + (data) => { + console.log('+++++++++ 增加会议成员通知 ++++++++++', data); + + const name = data.members.map((v) => v.alias || v.number).join('; '); + + ElNotification.info({ + id: `${Date.now()}`, + title: '增加会议成员通知', + message: `【${name}】已成为【会议:${data.meeting.number}】的会议成员!`, + }); + } + ); + + /** + * 删除会议成员通知 + * */ + deleteMemberCallbackId.value = sdkConfernceModule.addDeleteMemberListener( + (data) => { + console.log('+++++++++ 删除会议成员通知 ++++++++++', data); + const name = data.member.alias || data.member.number; + + ElNotification.info({ + id: `${Date.now()}`, + title: '删除会议成员通知', + message: `【${name}】已不属于【会议:${data.meeting.number}】的会议成员!`, + }); + } + ); + + /** + * 来电通知 + * */ + incomingCallbackId.value = sdkConfernceModule.addIncomingEvt((data) => { + console.log('+++++++++ 来电通知 ++++++++++', data); + + // 显示来电弹窗 + ConferenceCallingNotification({ + conference: data.conference, + call_id: data.call_id, + text: { + calling: '来电', + title:'会议已经开始', + answer: '立即进入', + hangUp: '暂不进入', + }, + }); + }); + + /** + * 来电接听通知 + * */ + answerAckCallbackId.value = sdkConfernceModule.addAnswerAckEvt((data) => { + console.log('+++++++++ 来电接听通知 ++++++++++', data); + }); + + /** + * 挂断通知:来电挂断 或 离开会议 + * */ + hangupCallbackId.value = sdkConfernceModule.addHangupEvt((data) => { + console.log('+++++++++ 挂断通知 ++++++++++', data); + + emitter.emit('onHangup', data); + }); + + /** + * 媒体流通知 + * */ + mediaStreamCallbackId.value = sdkConfernceModule.addMediaStream( + (call_id, stream, type) => { + console.log('+++++++++ 媒体流通知 ++++++++++'); + emitter.emit('onMediaStream', { call_id, stream, type }); + } + ); + + /** + * 会议状态变更通知 + */ + stateCallbackId.value = sdkConfernceModule.addStateChangeListener((data) => { + console.log('+++++++++ 会议状态变更通知 ++++++++++', data); + + // state 0=未开始,1=进行中,2=已取消,3=已结束,三方网关 上报会议开始 为 1,上报会议结束 为 3 + switch (data.state) { + case 0: // 未开始 + break; + + case 1: // 进行中 + ElNotification.info({ + id: `${Date.now()}`, + title: '会议开始通知', + message: `会议号为【${data.meeting.number}】的会议正在进行中!`, + }); + break; + + case 2: // 已取消 + ElNotification.info({ + id: `${Date.now()}`, + title: '会议取消通知', + message: `会议号为【${data.meeting.number}】的会议已被取消!`, + }); + break; + + case 3: // 已结束 + ElNotification.info({ + id: `${Date.now()}`, + title: '会议结束通知', + message: `会议号为【${data.meeting.number}】的会议已结束!`, + }); + + // window.video.src = undefined; + // window.showVideo.value = false; + // window.videoViewRoot.style.display = 'none'; + break; + } + + // 拉取会议列表 + emitter.emit('fetchConfence'); + }); +}; diff --git a/src/views/consultation/components/meetingView.vue b/src/views/consultation/components/meetingView.vue new file mode 100644 index 0000000..bdc0204 --- /dev/null +++ b/src/views/consultation/components/meetingView.vue @@ -0,0 +1,842 @@ + + + + + diff --git a/src/views/consultation/components/micPop.vue b/src/views/consultation/components/micPop.vue new file mode 100644 index 0000000..b3507a4 --- /dev/null +++ b/src/views/consultation/components/micPop.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/src/views/consultation/components/zh_CN.json b/src/views/consultation/components/zh_CN.json new file mode 100644 index 0000000..11a25f2 --- /dev/null +++ b/src/views/consultation/components/zh_CN.json @@ -0,0 +1,3203 @@ +{ + "code": 20000, + "data": { + "advancedConference.content.subject": "会议主题", + "advancedConference.content.remark": "备注", + "advancedConference.content.duration": "会议时长", + "advancedConference.content.alarm": "提醒时间", + "advancedConference.content.appointment": "开始时间", + "conference.member.present": "会议中", + "conference.member.absent": "未入会", + "conference.role.creator": "创建者", + "conference.role.common": "成员", + "conference.role.host": "主席", + "conference.halfDuplex_call": "半双工呼叫", + "conference.fullDuplex_call": "全双工呼叫", + "conference.control.allCall": "呼叫全部未入会", + "conference.control.disableMic": "禁言成员", + "conference.control.releaseMic": "解除禁言", + "conference.control.muteMember": "静音成员", + "conference.control.openCamera": "打开摄像头", + "conference.control.closeCamera": "关闭摄像头", + "conference.control.setAsMember": "设置为成员", + "conference.control.setAsHost": "设置为主席", + "conference.control.designatedSpeech": "指定发言", + "conference.control.reName": "修改昵称", + "conference.control.removeMeeting": "移出会议", + "conference.components.attendee.restrictOption.label3": "踢出会议", + "conference.cancel_speak": "取消发言", + "conference.all_cancel_ban": "全部取消禁言", + "conference.control.unmute": "解除静音", + "conference.control.cancel.image": "取消指定", + "conference.control.appoint.image": "指定画面", + "conference.components.media.footer.defaultBtns.invitingAttendees": "邀请参会", + "conference.join": "进入会议", + "conference.start": "开始会议", + "conference.status.init": "待开始", + "conference.status.progress": "进行中", + "conference.status.end": "已结束", + "conference.status.canceled": "已取消", + "conference.cmmon.quit.btn": "退出会议", + "conference.control.allBan": "全部禁言", + "conference.control.openAllBan": "解除全部禁言", + "conference.member.count": "成员数量", + "conference.notification.action.join": "立即进入", + "conference.notification.action.later": "暂不进入", + "conference.notification.canceled": "会议已经取消", + "conference.notification.started": "会议已经开始会议已经开始", + "conference.control.calling": "呼叫中...", + "conference.components.media.audioPop.selectSpeaker": "选择扬声器", + "conference.components.media.audioPop.volumeSetting": "音量设置", + "conference.components.media.cameraPop.switchCamera": "选择摄像头", + "conference.components.media.cameraPop.selectMicrophone": "选择麦克风", + "conference.update.result.ok": "修改成功", + "common.number.invalid": "无效号码", + "conference.join.setting.nick": "您的昵称", + "conference.join.setting.label": "会议设置", + "conference.join.setting.audio": "自动连接音频", + "conference.join.setting.camera": "入会开启摄像头", + "conference.join.setting.mic": "入会开启麦克风", + "conference.property.number": "会议号码", + "conference.components.media.header.speaking": "正在讲话", + "conference.banned": "您已被禁言", + "conference.components.media.header.stateText.shareScreen": "正在共享屏幕", + "conference.share.stop": "结束共享", + "conference.share.stoped.msg": "屏幕共享已经结束", + "conference.components.media.footer.voiceStimulation.on": "语音激励已开启", + "conference.components.media.footer.voiceStimulation.off": "语音激励已关闭", + "conference.shortcut": "快速会议", + "conference.book.result.ok": "预定会议成功", + "conference.conflict.msg": "你当前正在参加会议", + + "login.error.tips":"是否跳转到到对接平台,检查一下网络情况", + "call.floor":"话权", + "accountsList.columns.alias": "别名", + "accountsList.columns.confirmPassword": "确认密码", + "accountsList.columns.number": "号码", + "accountsList.columns.userName": "用户名", + "accountsList.columns.validate.content": "内容不能为空", + "addOnDuty.result.error": "值守异常", + "addOnDuty.result.fail": "值守失败", + "addOnDuty.result.success": "值守成功", + "alarmNote.buttom.deal": "处理", + "alarmNote.buttom.gis": "查看定位", + "alarmNote.buttom.ignore": "忽略", + "alarmNote.buttom.ignoreObject": "忽略该对象", + "alarmNote.buttom.ignoreOne": "忽略本条", + "alarmNote.crossZoneType.0": "离开【", + "alarmNote.crossZoneType.1": "进入【", + "alarmNote.overspeedType.0": "超速告警", + "alarmNote.overspeedType.1": "低速告警", + "alarmNote.symbol.barckets": "】", + "alarmNote.type.0": "无类型", + "alarmNote.type.1": "普通告警", + "alarmNote.type.2": "告警带呼叫", + "alarmNote.type.3": "gps告警", + "alarmNote.type.4": "告警带gps和呼叫", + "alarmNote.type.5": "紧急呼叫", + "alarmNote.type.6": "显式告警", + "alarmNote.type.7": "隐式告警", + "basicData.mailList.equipment.alias": "别名", + "basicData.mailList.equipment.device_alias.reg": "名称中不允许有 $1 特殊字符", + "basicData.mailList.equipment.latitude": "纬度", + "basicData.mailList.equipment.longitude": "经度", + "basicData.mailList.equipment.number": "号码", + "basicData.mailList.equipment.onlynumber": "只可输入数字", + "basicData.mailList.equipment.operation": "操作", + "basicData.mailList.equipment.org": "所属组织", + "basicData.mailList.equipment.save": "保存", + "basicData.mailList.equipment.validLatitudeMsg": "纬度整数部分为0-85,小数部分为0到6位", + "basicData.mailList.equipment.validLongitudeMsg": "经度整数部分为0-180,小数部分为0到6位!", + "basicData.mailList.equipment.validate.content": "内容不能为空!", + "basicData.mailList.group.broadcast": "广播", + "basicData.mailList.group.encryption": "加密", + "basicData.mailList.group.member": "组成员(号码)", + "basicData.mailList.staff.delOrgError.1": "还有子组织", + "basicData.mailList.staff.delOrgError.2": "还有设备信息", + "basicData.mailList.staff.delOrgError.3": "还有人员信息", + "basicData.mailList.staff.delOrgError.4": "还有组信息", + "basicData.mailList.staff.delOrgError.5": "删除组织架构错误", + "basicData.mailList.staff.delOrgError.9": "删除组织架构错误", + "basicData.role.3rdConfrance": "第三方会议", + "basicData.role.Interrupt": "强插", + "calling.notification.answer": "接听", + "calling.notification.hangUp": "挂断", + "channel.search": "基站名称", + "channel.subscribeAll": "全部订阅", + "channel.unsubscribeAll": "取消全部订阅", + "channelMonitor.callMode.crossStation": "跨站", + "channelMonitor.callMode.singleStation": "单站", + "channelMonitor.channelState.busy": "忙碌", + "channelMonitor.channelState.dormancy": "休眠", + "channelMonitor.channelState.free": "空闲", + "channelMonitor.channelState.invalid": "无效", + "channelMonitor.channelState.isolation": "隔离", + "channelMonitor.channelState.preemption": "抢占", + "channelMonitor.chnType.GPSGroupVoice": "GPS组呼语音信道", + "channelMonitor.chnType.GPSPullUpService": "GPS组呼数据信道", + "channelMonitor.chnType.auxiliaryControl": "辅控制信道(GPS辅控信道)", + "channelMonitor.chnType.dataService": "数据业务信道", + "channelMonitor.chnType.dataTransmissionSharing": "数传共享信道", + "channelMonitor.chnType.dualSlotDataTransmission": "双时隙数传专用信道", + "channelMonitor.chnType.dualSlotExclusiveData": "双时隙独占型数据信道", + "channelMonitor.chnType.dualSlotSharedData": "双时隙共享型数据信道", + "channelMonitor.chnType.groupCallBroadcast": "组呼广播信道", + "channelMonitor.chnType.masterControl": "主控制信道", + "channelMonitor.chnType.mediumRotaryTable": "中转台", + "channelMonitor.chnType.priorityDataTransmission": "优先级数传专用信道", + "channelMonitor.chnType.satelliteSpecificData": "卫星专用数据信道", + "channelMonitor.chnType.singleTimeSlotDataTransmission": "单时隙数传专用信道", + "channelMonitor.chnType.supplementaryRegistrationService": "辅助登记业务信道", + "channelMonitor.chnType.unused": "未使用信道", + "channelMonitor.chnType.voiceService": "语音业务信道", + "channelMonitor.icon.hide": "隐藏", + "channelMonitor.icon.show": "显示", + "channelMonitor.icon.subscribe": "订阅", + "channelMonitor.icon.unsubscribe": "取消订阅", + "channelMonitor.tableBody.empty": "暂无内容,请选择订阅的基站", + "channelMonitor.tableHeader.channelStatus": "信道状态", + "channelMonitor.tableHeader.channelType": "信道类型", + "channelMonitor.tableHeader.crossStationMode": "跨站模式", + "channelMonitor.tableHeader.no": "编号", + "channelMonitor.tableHeader.speaker": "讲话人", + "channelMonitor.tableHeader.timeOfChange": "变化时间", + "channelMonitor.tableHeader.tsc": "基站", + "channelMonitor.tips.Listening": "正在监听", + "channelMonitor.tips.getTscListError": "获取基站列表失败", + "channelMonitor.tips.subscriptionFailed": "基站信道信息订阅失败", + "channelMonitor.tips.successfullySubscribing": "基站信道信息订阅成功", + "channelMonitor.tips.successfullyUnsubscribing": "基站信道信息取消订阅成功", + "channelMonitor.tips.unsubscribingFailed": "基站信道信息取消订阅失败", + "common.button.cancel": "取消", + "common.button.confirm": "确认", + "common.button.selectALl": "全选", + "common.delete.tip": "是否确认删除?", + "common.handle.error": "处理异常", + "common.me.label": "我", + "common.model.tip": "提示", + "conference.message.beHangUp": "会议被挂断", + "demo.documentation": "文档说明", + "deviceCtrl.button.highSpeed": "高速", + "deviceCtrl.button.imageMagnification": "图像放大", + "deviceCtrl.button.imageReduction": "图像缩小", + "deviceCtrl.button.lowSpeed": "低速", + "deviceCtrl.button.mediumSpeed": "中速", + "deviceCtrl.button.moveDown": "下移", + "deviceCtrl.button.moveLeft": "左移", + "deviceCtrl.button.moveRight": "右移", + "deviceCtrl.button.moveUp": "上移", + "deviceCtrl.title.deviceControl": "云台控制", + "deviceTable.device.lockStatus1": "未被锁定", + "deviceTable.device.lockStatus2": "遥晕", + "deviceTable.device.lockStatus3": "遥醒", + "deviceTable.device.lockStatus4": "遥毙", + "deviceTable.deviceKill.result": "遥毙执行结果", + "deviceTable.deviceRevive.result": "遥醒执行结果", + "deviceTable.deviceStun.result": "遥晕执行结果", + "deviceTable.window.groupListWindow.fail": "获取用户归属组失败!", + "deviceTable.window.groupListWindow.group_name": "组名称", + "deviceTable.window.groupListWindow.number": "成员号码", + "deviceTable.window.groupListWindow.number_type": "号码类型", + "deviceTable.window.groupListWindow.title": "用户归属组", + "deviceTable.window.groupMember.fail": "查询成员失败!", + "deviceTable.window.groupMember.number": "成员号码", + "deviceTable.window.groupMember.title": "组内成员", + "deviceTable.window.nameWindow.fail": "功能别名发送失败!", + "deviceTable.window.nameWindow.name": "功能名称", + "deviceTable.window.nameWindow.success": "查询成功", + "deviceTable.window.nameWindow.title": "功能别名", + "deviceTable.window.onlineWindow.name": "终端", + "deviceTable.window.onlineWindow.status": "状态", + "deviceTable.window.onlineWindow.status1": "离线", + "deviceTable.window.onlineWindow.status2": "在线", + "deviceTable.window.onlineWindow.status3": "检测失败", + "deviceTable.window.onlineWindow.title": "在线检测", + "deviceTable.window.primary": "确定", + "deviceTable.window.statusWindow.fail": "查询锁定状态发送失败!", + "deviceTable.window.statusWindow.name": "终端", + "deviceTable.window.statusWindow.status": "锁定状态", + "deviceTable.window.statusWindow.success": "查询锁定状态发送成功!", + "deviceTable.window.statusWindow.title": "锁定状态", + "dial.panel.tips.PSTNNumber": "PSTN系统下的号码", + "dial.panel.tips.PSTNSystemNotFound": "未找到PSTN系统", + "download.finish": "下载完成", + "dynamic.columns.alias": "别名", + "error.code.detail": "详情", + "fax.down.tip": "下载地址不存在", + "fax.fileStatus.noRead": "未读", + "fax.fileStatus.read": "已读", + "fax.hint,newFax": "新传真", + "fax.list.contact_fax": "传真号", + "fax.list.contact_name": "姓名", + "fax.search.fax_rec_phone": "接收者号码", + "fax.search.fax_send_phone": "发送者号码", + "fax.sendFax.file": "文件", + "fax.sendFax.noCan": "不支持该格式", + "fax.sendFax.person": "收件人", + "fax.sendFax.regFile": "文件不能为空", + "fax.sendFax.regTel": "传真号格式错误", + "fax.sendFax.sending": "发送中", + "fax.sendFax.submitSuccess": "传真提交成功,发送状态发送列表查看", + "fax.sendFax.success": "上传成功", + "fax.sendFax.tip": "请选择或输入传真号", + "fax.sendFax.tipUpload": "请上传jpg,png,pdf格式", + "fax.tab.text1": "收件箱", + "fax.tab.text2": "未读传真", + "fax.tab.text3": "发件箱", + "fax.tab.text4": "写传真", + "fax.tabel.download": "下载", + "fax.userModal.choose": "选择联系人", + "fax.userModal.chooseNum": "已选:xx名用户", + "gateway.options.Heartbeat.0": "不发送", + "gateway.options.Heartbeat.1": "发送", + "gateway.tip.MCSSSIError1": "仅允许整数", + "gis.btnGroup.title.circleChecked": "圈选", + "gis.btnGroup.title.circleChecked.normal": "常规圈选", + "gis.btnGroup.title.circleChecked.polygon": "多边形圈选", + "gis.btnGroup.title.clearScreen": "清屏", + "gis.btnGroup.title.crossAlarm": "越区告警", + "gis.btnGroup.title.interestPoint": "兴趣点", + "gis.btnGroup.title.measureSurface": "测面", + "gis.btnGroup.title.replayTrack": "轨迹回放", + "gis.btnGroup.title.stadiometry": "测距", + "gis.btnGroup.title.subManagement": "订阅管理", + "gis.cicle.createGroupFailed": "圈选呼叫建立组失败", + "gis.cicle.noGroupMember": "没有组成员", + "gis.cross.add": "新增", + "gis.cross.addMember": "添加成员", + "gis.cross.addRegion": "添加区域", + "gis.cross.collapse.coll": "收起", + "gis.cross.color.error": "颜色错误,请重新选择", + "gis.cross.del.enble.warnMsg": "规则已启用不允许删除", + "gis.cross.del.region.warnMsg": "确定要删除选中的区域吗?", + "gis.cross.del.rule.warnMsg": "确定要删除选中的规则吗?", + "gis.cross.delResult0": "删除成功", + "gis.cross.delResult1": "操作失败", + "gis.cross.delResult2": "未启动越区告警功能", + "gis.cross.delResult9": "该区域已绑定规则,不可删除", + "gis.cross.editRegion": "编辑区域", + "gis.cross.empty": "暂无内容,请新建", + "gis.cross.new.addMember.typeError": "只支持添加终端", + "gis.cross.new.color": "颜色", + "gis.cross.new.desc": "描述", + "gis.cross.new.desp.placehodler": "描述信息", + "gis.cross.new.fail": "新增失败", + "gis.cross.new.name": "名称", + "gis.cross.new.period": "启用时段", + "gis.cross.new.receiver": "告警成员", + "gis.cross.new.region": "区域", + "gis.cross.new.region.have": "已有区域", + "gis.cross.new.region.title": "新增区域", + "gis.cross.new.result0": "保存成功", + "gis.cross.new.result1": "保存失败", + "gis.cross.new.result2": "未启动越区告警功能", + "gis.cross.new.succ": "新增成功", + "gis.cross.new.title": "新增规则", + "gis.cross.new.type": "规则类型", + "gis.cross.region.cood.error": "绘制图形并非区域面,请重新绘制", + "gis.cross.region.new.name.placehodler": "区域名称", + "gis.cross.region.new.tip": "请在地图上绘制区域", + "gis.cross.regionManager": "区域管理", + "gis.cross.rule": "规则", + "gis.cross.rule.name.exist": "名称已存在,请重新命名", + "gis.cross.rule.new.name.placehodler": "规则名称", + "gis.cross.rule.off": "规则已关闭", + "gis.cross.rule.on": "规则已启用", + "gis.cross.transfered": "已选对象", + "gis.detail.electricity": "电量", + "gis.interestPoint.InterestInfo.add": "新增兴趣点", + "gis.interestPoint.InterestInfo.choosen": "必选项", + "gis.interestPoint.InterestInfo.lonlat": "经纬度", + "gis.interestPoint.InterestInfo.placehodler": "兴趣点名称", + "gis.interestPoint.InterestInfo.search": "搜索兴趣点名称", + "gis.interestPoint.InterestInfo.type": "请选择类型", + "gis.interestPoint.InterestInfo.type200": "摄像头", + "gis.interestPoint.InterestInfo.type201": "实时流", + "gis.interestPoint.InterestInfo.type211": "医务室", + "gis.interestPoint.InterestInfo.type212": "消防站", + "gis.interestPoint.InterestInfo.type213": "兴趣点", + "gis.interestPoint.InterestInfo.type214": "警察站", + "gis.interestPoint.InterestInfo.type215": "学校", + "gis.interestPoint.InterestInfo.type216": "警告", + "gis.interestPoint.InterestInfo.type217": "无人机", + "gis.interestPoint.InterestInfo.update": "编辑兴趣点", + "gis.interestPoint.index.del": "确定删除该兴趣点吗?", + "gis.interestPoint.index.hideAll": "全部关闭", + "gis.interestPoint.index.showAll": "全部显示", + "gis.interestPoint.latitude.required": "纬度不能为空", + "gis.interestPoint.longitude.required": "经度不能为空", + "gis.measure.esc.delete": "按Esc键或Delete键可取消创建!", + "gis.measure.finish.esc.delete": "双击结束测量,按Esc键或Delete键可取消创建!", + "gis.measure.processing": "业务执行中,禁止打开地图工具栏!", + "gis.speed.del.delRule": "删除规则", + "gis.speed.del.enable.warnMsg": "当前规则正在使用,删除后将终止任务", + "gis.speed.del.warnMsg": "确定删除该规则吗?", + "gis.speed.form,speedJudgeTimes": "判断次数", + "gis.speed.form.limitSpeed": "限值(km/h)", + "gis.speed.form.ruleAddError": "新增规则失败", + "gis.speed.form.ruleAddSuccess": "新增规则成功", + "gis.speed.form.ruleNameInput": "请输入规则名称", + "gis.speed.form.ruleUpdateError": "更新规则失败", + "gis.speed.form.ruleUpdateSuccess": "更新规则成功", + "gis.speed.form.speedJudgeTimesInput": "请输入判断次数", + "gis.speed.form.speedLimitInput": "请输入速度", + "gis.speed.new.title": "新增超速告警", + "gis.subManagement.content.cancel.error": "取消失败", + "gis.subManagement.content.cancel.success": "取消成功", + "gis.subManagement.content.cancelMinSubPeriod": "取消最小订阅周期", + "gis.subManagement.content.currentPullPeriod": "当前上拉周期(s)", + "gis.subManagement.content.edit.error": "修改失败", + "gis.subManagement.content.edit.success": "修改成功", + "gis.subManagement.content.isCancelMinSubPeriod": "确定取消所选对象的最小订阅周期吗?", + "gis.subManagement.content.isUnsubscribe": "确定取消所选对象的订阅操作吗?", + "conference.content.isCancel": "确定取消当前会议吗?", + "conference.history": "历史会议", + "gis.subManagement.content.messagecheck": "请选择至少一条数据", + "gis.subManagement.content.minSubPeriod": "最小订阅周期(s)", + "gis.subManagement.content.number": "号码", + "gis.subManagement.content.object": "对象", + "gis.subManagement.content.pullPeriod": "上拉周期(s)", + "gis.subManagement.content.recoveryTime": "恢复时间(s)", + "gis.subManagement.content.setWholeNet.messageInfo1": "设置全网订阅参数成功", + "gis.subManagement.content.setWholeNet.messageInfo2": "设置全网允许最小订阅周期成功", + "gis.subManagement.content.setting": "设置", + "gis.subManagement.content.subPeriods": "订阅周期(s)", + "gis.subManagement.content.subRelationship": "订阅关系", + "gis.subManagement.content.subRelationship.message": "详情", + "gis.subManagement.content.subStatus": "订阅状态", + "gis.subManagement.content.subStatus.0": "禁止", + "gis.subManagement.content.subStatus.1": "全网上拉", + "gis.subManagement.content.subStatus.2": "部分上拉", + "gis.subManagement.content.subTime": "订阅时间", + "gis.subManagement.content.unsubscribe.messageError": "取消订阅失败", + "gis.subManagement.content.unsubscribe.messageInfo": "取消订阅成功", + "gis.subManagement.header.add": "添加", + "gis.subManagement.header.addObject": "选择订阅对象", + "gis.subManagement.header.modifyMinSubPeriod": "修改最小订阅周期", + "gis.subManagement.header.unsubscribe": "取消位置订阅", + "gis.subManagement.panel.device": "终端", + "gis.subManagement.panel.dispatcher": "调度员", + "gis.subManagement.panel.wholeNet": "全网", + "gis.subManagement.validate.limitNumber": "应不低于全网最小值$1s", + "gis.title.circleCall": "圈选呼叫", + "gis.track.dataProssing": "数据处理中...", + "gis.track.dateNotNull": "日期不能为空!", + "gis.track.east": "正东", + "gis.track.export.direction": "方向", + "gis.track.export.filename": "轨迹数据", + "gis.track.export.latitude": "纬度", + "gis.track.export.longitude": "经度", + "gis.track.export.number": "序号", + "gis.track.export.receiveTime": "接收时间", + "gis.track.export.reportTime": "上报时间", + "gis.track.export.speed": "速度", + "gis.track.kiloPerHour": "千米/小时", + "gis.track.northeast": "东北", + "gis.track.northwest": "西北", + "gis.track.nroth": "正北", + "gis.track.overNumber": "终端位置信息上报数量过大,取最新的10000个坐标点显示", + "gis.track.overSeven": "搜索间隔周期不能大于七天!", + "gis.track.pleaseInput": "请输入终端号码或者名称进行查询", + "gis.track.searchLoading": "轨迹数据查询中...", + "gis.track.selectNull": "查询终端信息为空或查询结果不存在!", + "gis.track.south": "正南", + "gis.track.southeast": "东南", + "gis.track.southwest": "西南", + "gis.track.trackData": "轨迹回放数据", + "gis.track.trackLoading": "轨迹数据加载中...", + "gis.track.trackPainting": "轨迹绘制中...", + "gis.track.west": "正西", + "gis.trackPlayback.node": "节点", + "gis.trackPlayback.timeQuantum": "时间段", + "grafstatus.notice.content": "当前集群是备机,是否切换到主机", + "grafstatus.notice.directtips": "当前集群是备机,切换到主机", + "groupList.columns.member": "成员", + "groupList.numberType.11": "会议", + "gw_config.tipTitle": "提示", + "header.date.day.0": "星期天", + "header.date.day.1": "星期一", + "header.date.day.2": "星期二", + "header.date.day.3": "星期三", + "header.date.day.4": "星期四", + "header.date.day.5": "星期五", + "header.date.day.6": "星期六", + "header.date.day.format": "{0}日", + "header.date.month.0": "1月", + "header.date.month.1": "2月", + "header.date.month.10": "11月", + "header.date.month.11": "12月", + "header.date.month.12": "12月", + "header.date.month.2": "3月", + "header.date.month.3": "4月", + "header.date.month.4": "5月", + "header.date.month.5": "6月", + "header.date.month.6": "7月", + "header.date.month.7": "8月", + "header.date.month.8": "9月", + "header.date.month.9": "10月", + "localResource.advance.search.tip": "筛选", + "localResource.device.numberType0": "个呼", + "localResource.device.numberType2": "电呼", + "localResource.device.numberType22": "双模", + "localResource.group.numberType0": "组呼", + "localResource.group.numberType3": "全呼", + "localResource.search.domain.tip": "切域", + "login.form.domain.errMsg": "域名不能为空", + "login.form.domain.placeholder": "域名", + "login.form.login": "登录", + "login.form.login.errMsg": "登录出错,请刷新重试", + "login.form.login.success": "欢迎使用", + "login.form.logout.error": "登出失败", + "login.form.logout.success": "登出成功", + "login.form.logout.timeout": "登出超时", + "login.form.password.errMsg": "密码不能为空", + "login.form.password.placeholder": "密码", + "login.form.protocol": "服务协议", + "login.form.readAndAgree": "阅读并同意", + "login.form.userName.errMsg": "用户名不能为空", + "login.form.userName.placeholder": "账号", + "login.logout.tip": "确定退出登录?", + "login.ptt.download": "PTT插件", + "login.tips.needAgreeProtocol": "需要阅读并同意服务协议", + "meeting.add.errTip": "只支持终端、调度台、第三方会议!", + "meeting.add.number": "会议成员", + "meeting.btn.endMeeting": "结束会议", + "meeting.btn.startMeeting": "开始会议", + "meeting.btn.videoMeeting": "音视频会议进行中", + "meeting.call.add_conference_video_call": "添加音视频会议", + "meeting.call.conference_video_call": "音视频会议", + "meeting.delete.fail": "会议删除失败!", + "meeting.delete.success": "会议删除成功!", + "meeting.cancel.success": "会议取消成功!", + "meeting.deleteUser.fail": "移除会议失败", + "meeting.deleteUser.success": "移除会议成功", + "meeting.list.addMeeting_fail": "会议新增失败", + "meeting.list.addMeeting_success": "会议新增成功", + "meeting.list.editMeeting_fail": "会议修改失败", + "meeting.list.editMeeting_success": "会议修改成功", + "meeting.maxLength": "会议成员不超过128", + "meeting.modal.confirmContent": "确定开始会议?", + "meeting.modal.control_move_text": "移除会议", + "meeting.modal.control_text": "管控", + "meeting.modal.control_voice_text": "禁言成员", + "meeting.modal.delText": "确定删除吗?", + "meeting.modal.noCanAdd": "不可以添加", + "meeting.modal.no_online": "当前不在线", + "meeting.modal.personType": "创建者", + "meeting.modal.release_text": "解除", + "meeting.modal.release_voice_text": "解除禁言", + "meeting.modal.user.placeholder": "号码", + "meeting.modal.user.title": "管理成员", + "meeting.modal.userExit": "成员已存在", + "meeting.modal.userManger": "成员管理", + "meeting.modal.voice.mutedFail": "禁言失败", + "meeting.modal.voice.mutedSuccess": "禁言成功", + "meeting.modal.voice.no_mutedFail": "解除禁言失敗", + "meeting.modal.voice.no_mutedSuccess": "解除禁言成功", + "meeting.opration.ban": "不允许操作", + "meeting.opration.look": "查看", + "meeting.opration.missBan": "会议未接不允许操作", + "meeting.setting.soundCenter": "立体声", + "meeting.setting.soundLeft": "左声道", + "meeting.setting.soundRight": "右声道", + "meeting.setting.voiceSet": "音量设置", + "meeting.tip.no_can_del": "会议创建者不允许删除", + "meetingGroup.list.dispatcher_account": "调度员", + "meetingGroup.list.system_id": "所属系统", + "meeting_btn_no_sendMessage": "音频会议不支持发送消息", + "menu.basicData": "基础数据", + "menu.basicData.system": "系统", + "menu.tree.org": "组织架构", + "message.audio.min.size": "文件过小,请点击下载查看", + "message.download.picture.name": "下载图片.jpg", + "message.historical.reports": "历史短信报表", + "message.prompt.image.download": "收到新文件,点击下载", + "message.prompt.prompt": "提示", + "message.prompt.size.exceed": "上传文件大小不能超过20MB!", + "message.prompt.warning": "是否关闭弹窗,离开后,消息将被清空", + "message.send.enter": "发送 (Enter)", + "message.sending.area": "消息发送区域", + "message.status.messages": "状态短信", + "message.status.sent": "已发送状态短消息:", + "message.template": "快捷短语", + "message.template.conlength": "不允许超过100个字符", + "messageBox.logout": "登出登录", + "messageBox.tab.title.clean": "是否清空未读消息?", + "messageBox.tab.title.content": "清空消息后将不再显示消息内容", + "messageBox.tab.title.message": "消息", + "messageBox.tab.title.notice": "通知", + "messageBox.tab.title.unviewed": "未读的消息", + "messageBox.userCenter": "用户中心", + "monitor.call.connecting": "上拉连接中...", + "monitor.call.disconnect": "视频上拉未建立", + "monitor.call.preReconnect": "准备重连...", + "monitor.call.reconnecting": "上拉重连中...", + "monitor.more": "更多", + "monitor.video.endMonitor": "结束监控", + "monitor.video.polling": "轮询", + "monitor.video.surveillance": "视频侦视", + "monitor.voice.surveillance": "语音侦视", + "multistageScheduling.form.failedToLoadData": "加载数据失败", + "multistageScheduling.gateForm.server": "服务器", + "navbar.action.locale": "中文", + "navbar.settings.changePassword": "修改密码", + "navbar.settings.confirmPasswordTip": "与新密码不一致!", + "navbar.settings.newPassword": "新密码", + "navbar.settings.oldPassword": "原始密码", + "navbar.settings.saveSuccess": "保存成功,请重新登录", + "navbar.settings.userNameTip": "与当前账号不一致!", + "onDuty.search": "别名/号码", + "onDuty.speak.0": "正在讲话...", + "onDuty.speak.1": "话权空闲...", + "onDuty.status.0": "离线", + "onDuty.status.1": "空闲", + "onDuty.status.2": "正在语音...", + "onDuty.status.3": "正在视频...", + "onDuty.status.4": "正在音视频...", + "onDuty.status.5": "正在消息...", + "onDuty.status.6": "通话中...", + "onDuty.unattended": "取消值守", + "onDuty.overrideCall": "强拆", + "onDuty.interruptCall": "强插", + "onQueue.status.-1": "未接", + "onQueue.status.-2": "回呼", + "onQueue.status.0": "来电", + "onQueue.status.1": "未接", + "onQueue.status.2": "接听中", + "onQueue.status.callback_handler": "处理人:", + "org.tree.add": "新增", + "org.tree.del": "删除", + "org.tree.del.confirm": "确定删除所选组织架构?", + "org.tree.edit": "编辑", + "org.tree.org.select": "选择", + "org.tree.org_alias": "别名", + "org.tree.org_alias.maxlength": "别名最大长度30", + "org.tree.org_alias.required": "别名不能为空!", + "org.tree.refresh": "刷新", + "org.tree.select.node.please": "请选择节点", + "org.tree.tips": "提示", + "public.columns.placeholder.input": "请输入...", + "public.modal.delText": "确定删除吗?", + "public.use.cancel": "取消", + "public.use.edit": "编辑", + "public.use.export": "导出", + "public.use.fail": "失败", + "public.use.noSend": "已提交待发送", + "public.use.operations": "操作", + "public.use.requestFail": "请求失败", + "public.use.search": "搜索", + "public.use.submit": "提交", + "public.use.success": "成功", + "public.use.upload": "上传", + "pullVideo.GB.choosePoc": "只支持poc终端", + "queue.callBack.title": "回呼请求", + "queue.missCall.title": "未接来电", + "queue.search": "号码", + "removeOnDuty.result.error": "取消值守异常", + "removeOnDuty.result.fail": "取消值守失败", + "removeOnDuty.result.limit": "不允许取消信道监控值守对象", + "removeOnDuty.result.success": "取消值守成功", + "report.ROIPterminalRRS.option1": "窄带上线", + "report.ROIPterminalRRS.option2": "宽带上线", + "report.ROIPterminalRRS.option3": "宽窄带同时上线", + "report.alarm.note": "告警通知", + "report.callBackRequest.callBackCode": "回呼状态码", + "report.callBackRequest.callBackHandler": "回呼处理人", + "report.callBackRequest.callBackHandlerTime": "回呼处理时间", + "report.callBackRequest.callBackTime": "回呼时间", + "report.callee.AdminSetting_BroadCastNumber_PDT1": "基站全呼", + "report.callee.AdminSetting_BroadCastNumber_PDT2": "本地全呼", + "report.callee.AdminSetting_BroadCastNumber_PDT3": "地域全呼", + "report.callee.AdminSetting_BroadCastNumber_PDT4": "全网全呼", + "report.callee.AdminSetting_BroadCastNumber_DMR3": "全网呼叫", + "report.callee.AdminSetting_BroadCastNumber_HF": "HF全呼", + "report.callee.AdminSetting_BroadCastNumber_CORMDFSI": "Tetra全呼", + "AdminSetting_BroadCastNumber_AllCall": "全网全呼", + "AdminSetting_BroadCastNumber_DMR3": "全网全呼", + "report.callee.downloaddata": "用户下载数据", + "report.callee.uploaddata": "用户上传数据", + "report.calltype.option.CTCFREE": "空闲", + "report.calltype.option.CTCUNKNOWN": "未知", + "report.calltype.option.CTEnvListen": "环境侦听", + "report.calltype.option.CTEnvWatch": "环境侦视", + "report.calltype.option.CTGroupSds": "分组短信", + "report.calltype.option.CTRouteCall": "路由呼叫", + "report.calltype.option.CTVideoPlayback": "三方视频平台回放", + "report.calltype.option.CTVideoPullForward": "视频上拉并转发", + "report.calltype.option.analog": "模拟呼叫", + "report.calltype.option.broadcastCall": "广播呼叫", + "report.calltype.option.callbackRequest": "回呼请求", + "report.calltype.option.conference": "调度台接收视频会议呼叫", + "report.calltype.option.crosspatch": "跨系统派接", + "report.calltype.option.crosspatchcall": "群组", + "report.calltype.option.diffVideoGroupCall": "不同源可视组呼", + "report.calltype.option.emergencyvideoSendBack": "紧急视频回传", + "report.calltype.option.groupVoice": "语音组呼", + "report.calltype.option.homologyVideoGroupCall": "同源视频组呼", + "report.calltype.option.homologyVideoGroupCallWithoutVoice": "同源视频组呼(无语音)", + "report.calltype.option.interDispatcher": "调度员互通", + "report.calltype.option.interDispatcherWithVideo": "调度员互通(有视频)", + "report.calltype.option.interDispatcherWithVideoWithoutVoice": "调度员互通(有视频无语音)", + "report.calltype.option.joinConference": "调度台呼叫入会", + "report.calltype.option.multipartycall": "包容呼叫", + "report.calltype.option.onlyVideoMulticast": "仅视频组播", + "report.calltype.option.privateVideoWithVoice": "可视单呼(有语音)", + "report.calltype.option.privateVideoWithoutVoice": "可视单呼(无语音)", + "report.calltype.option.privateVoice": "语音单呼", + "report.calltype.option.pstn": "外线", + "report.calltype.option.pullDownVideo": "视频下拉", + "report.calltype.option.pullVideo": "视频上拉", + "report.calltype.option.pullVideoWithVoice": "视频上拉(有语音)", + "report.calltype.option.pullVideoWithoutVoice": "视频上拉(无语音)", + "report.calltype.option.pushVideo": "视频推送", + "report.calltype.option.recordpay": "录音回放", + "report.calltype.option.remoteMonitor": "远程监听呼叫", + "report.calltype.option.routeCall": "路由呼叫", + "report.calltype.option.systemCall": "系统全呼", + "report.calltype.option.videoConference": "语音视频会议", + "report.calltype.option.videoMulticast": "视频组播", + "report.calltype.option.videoPlayBack": "三方视频平台回放", + "report.calltype.option.videoPullForward": "视频上拉并转发", + "report.calltype.option.videoSendBack": "视频回传", + "report.calltype.option.voiceConference": "语音会议", + "report.calltype.option.voiceMulticast": "语音组播", + "report.crossAlarm.alarmStatus.title": "告警状态", + "report.crossAlarm.alarmTime.title": "告警时间", + "report.crossAlarm.alarmType.title": "告警类型", + "report.crossAlarm.cancel.title": "取消告警时间", + "report.crossAlarm.regionName.title": "区域名称", + "report.crossAlarm.ruleName.title": "规则名称", + "report.crossAlarmState.option.cancel": "取消告警", + "report.crossAlarmState.option.make": "产生告警", + "report.crossAlarmType.option.in": "进入告警", + "report.crossAlarmType.option.out": "离开告警", + "report.dispatcher.title": "监听者", + "report.emergencyAlarm.header.alarmDeviceNum": "终端号码/别名", + "report.emergencyAlarm.header.alarmStatus": "告警状态", + "report.emergencyAlarm.header.alarmStatus.0": "取消告警", + "report.emergencyAlarm.header.alarmStatus.1": "标识告警", + "report.emergencyAlarm.header.alarmType": "告警类型", + "report.emergencyAlarm.tableList.alarmTime": "告警时间", + "report.emergencyAlarm.tableList.cancleAlarmTime": "取消告警时间", + "report.emergencyAlarm.tableList.device": "终端", + "report.emergencyAlarm.tableList.num": "序号", + "report.encryption.option.n": "非加密", + "report.encryption.option.y": "加密", + "report.encryption.title": "加密类型", + "report.export.occupied": "有其它报表正在导出,请稍后再试", + "report.file.audioError1": "请求终止了", + "report.file.audioError2": "网络异常", + "report.file.audioError3": "文件解码异常", + "report.file.audioError4": "文件不支持", + "report.file.downFail": "查找文件失败", + "report.file.downloadFail": "下载失败", + "report.file.export.messageInfo.beginExport": "开始导出数据", + "report.file.export.messageInfo.daysLimit": "导出不能超过7天时间", + "report.file.export.messageInfo.limit": "导出数据不能超过10000条记录", + "report.file.export.messageInfo.noData": "没有要导出的数据", + "report.file.export.noData": "数据为空", + "report.file.urlEmpty": "未找到文件", + "report.file.urlError": "获取文件失败", + "report.input.numAndAlias": "号码/别名", + "report.msgSendType.option.group": "组发", + "report.msgSendType.option.placeholder": "发送类别", + "report.msgSendType.option.private": "个发", + "report.msgType.option.binary": "二进制短信", + "report.msgType.option.location": "位置短信", + "report.msgType.option.mutilMedia": "多媒体消息", + "report.msgType.option.nomaltext": "普通短信", + "report.msgType.option.placeholder": "消息类型", + "report.msgType.option.status": "状态消息", + "report.operation.check": "查看", + "report.operation.export": "导出", + "report.operation.search": "搜索", + "report.option.all": "全部", + "report.option.callMode": "双工模式", + "report.option.callPriority": "呼叫级别", + "report.option.callTime": "通话时长", + "report.option.called": "被叫", + "report.option.calling": "主叫", + "report.option.emergencyCall": "紧急呼叫", + "report.option.norrmalCall": "普通呼叫", + "report.option.setupTime": "发起时间", + "report.option.startTime": "起始时间", + "report.receiver.title": "接收者", + "report.receiver.title.placehodler": "接收者号码/别名", + "report.result.empty": "查询结果为空", + "report.sdsContent.title": "消息内容", + "report.sdsType.location": "位置短信", + "report.sdsType.media": "多媒体短信", + "report.sdsType.normal": "普通短信", + "report.sdsType.state": "状态短信", + "report.select.option.default": "请选择", + "report.sendTime.title": "发送时间", + "report.sendType.title": "发送类型", + "report.sender.title": "发送者", + "report.sender.title.placehodler": "发送者号码/别名", + "report.serial.title": "序号", + "report.speedWarning.alarmType": "告警状态", + "report.speedWarning.alarmType.1": "取消告警", + "report.speedWarning.alarmType.2": "产生告警", + "report.speedWarning.overspeed": "超速时速度", + "report.speedWarning.ruleName": "规则名称", + "report.status.option.fail": "发送失败", + "report.status.option.placeholder": "发送状态", + "report.status.option.success": "发送成功", + "report.tab.EmergencyAlarm": "紧急告警", + "report.tab.call": "呼叫", + "report.tab.callbackrequest": "回呼请求", + "report.tab.crossAreaAlert": "越区告警", + "report.tab.msg": "消息", + "report.tab.speedingAlert": "超速告警", + "report.tab.terminalOnOffLineRecord": "上下线记录", + "report.terminal.title": "终端", + "report.terminalRRS.option.offline": "下线", + "report.terminalRRS.option.online": "上线", + "report.terminalRRS.status.placeholder": "状态", + "report.terminalRRS.terminalType.default": "终端", + "report.terminalRRS.terminalType.dispatcher": "调度台", + "report.time.title": "时间", + "report.timeDiff.range": "查询间隔时间不能大于30天", + "report.type.title": "类型", + "report.unknown": "未知", + "request.error.rqsErr": "请求错误", + "routingManagement.columns.call": "呼叫", + "routingManagement.columns.callType": "呼叫类型", + "routingManagement.columns.environmentListen": "环境侦听", + "routingManagement.columns.environmentalRegards": "环境侦视", + "routingManagement.columns.fullDuplex": "全双工", + "routingManagement.columns.halfDuplex": "半双工", + "sapType.option.1": "PDT DFSI", + "sapType.option.5": "PDT", + "setting.basicSetting.uploadLogo.size.hint": "文件大小不能超过2M", + "setting.basicSetting.uploadLogo.type.hint": "只能上传.png或.svg类型文件", + "settings.alertContent": "配置之后仅是临时生效,要想真正作用于项目,点击下方的复制配置按钮,将配置替换到 settings.json 中即可。", + "settings.close": "关闭", + "settings.colorWeak": "色弱模式", + "settings.content": "内容区域", + "settings.copySettings": "复制配置", + "settings.copySettings.message": "复制成功,请粘贴到 src/settings.json 文件中", + "settings.footer": "底部", + "settings.language": "语言", + "settings.menu": "菜单栏", + "settings.menuFromServer": "菜单来源于后台", + "settings.menuWidth": "菜单宽度 (px)", + "settings.navbar": "导航栏", + "settings.navbar.screen.toExit": "点击退出全屏模式", + "settings.navbar.screen.toFull": "点击切换全屏模式", + "settings.navbar.theme": "主题", + "settings.navbar.theme.dark": "暗色", + "settings.navbar.theme.light": "亮色", + "settings.otherSettings": "其他设置", + "settings.password.validate.len": "4-18个字符", + "settings.search": "搜索", + "settings.tabBar": "多页签", + "settings.title": "页面配置", + "shunt.bus_type.option.1": "分流", + "shunt.bus_type.option.2": "转发", + "shunt.call_status.option.0": "半双工", + "shunt.call_status.option.1": "全双工", + "shunt.columns.callType": "呼叫类型", + "state.loading": "加载中...", + "systemList.columns.validate.content": "内容不能为空", + "systemList.columns.validate.placeholder1": "ID", + "systemList.columns.validate.placeholder2": "系统别名", + "systemList.modal.checkwarn": "请检查表单输入项", + "systemType.option.3": "PDT", + "temporary.crosspatch.active.flag.disable": "禁用", + "temporary.crosspatch.active.flag.enable": "启用", + "temporary.crosspatch.columns.delay": "发送延迟", + "temporary.crosspatch.columns.grantmode": "话权模式", + "temporary.crosspatch.columns.grantmode.dtmf": "DTMF", + "temporary.crosspatch.columns.grantmode.mute": "静音检测", + "temporary.crosspatch.columns.grantmode.mute.or.dtmf": "DTMF或静音检测", + "temporary.crosspatch.columns.grantmode.ppt": "PTT模式", + "temporary.crosspatch.columns.priority": "优先级", + "temporary.crosspatch.columns.property.settings": "属性设置", + "temporary.crosspatch.window.message.exists.failed.added": "已存在,新增失败", + "temporary.crosspatch.window.message.successfully.added": "添加成功", + "temporary.crosspatch.window.title.add.part": "新增", + "temporary.crosspatch.window.title.edit.part": "编辑", + "temporary.dispatch.sys.group.empty.validate.members": "派接组创建时至少有一个组成员", + "temporary.dispatchsys.olny.group.supported": "派接组只支持静态组", + "temporary.dynamic.delete.auto.delete": "自动删除", + "temporary.dynamic.delete.confirm.window": "确认要删除?", + "temporary.dynamic.empty.validate.members": "动态重组创建时至少有一个组成员", + "temporary.dynamic.olny.terminals.supported": "动态组只支持终端", + "temporary.dynamic.own.level.supported": "只支持本级终端", + "temporary.dynamic.system.tyeps.mustbe.consistent": "添加的设备系统类型必须一致", + "temporary.group.add.fail": "添加组失败", + "temporary.group.add.group.placeholder.alias": "请输入别名", + "temporary.group.add.group.placeholder.delete.fail": "删除组失败", + "temporary.group.add.group.placeholder.delete.success": "删除组成功", + "temporary.group.add.group.placeholder.dispatcher_account": "请选择调度员", + "temporary.group.add.group.placeholder.number": "请输入号码", + "temporary.group.add.group.placeholder.option.detail": "操作详情", + "temporary.group.add.group.placeholder.select.object": "已选对象", + "temporary.group.add.group.placeholder.title.new": "新增群组", + "temporary.group.add.success": "添加组成功", + "temporary.group.edit.alias": "别名", + "temporary.group.edit.alias.validate.maxLength": "最大长度64个字符", + "temporary.group.edit.idle.timeout": "空闲超时(秒)", + "temporary.group.edit.number": "号码", + "temporary.group.edit.number.validate.maxLength": "最大长度20个数字", + "temporary.group.edit.priority": "优先级", + "temporary.group.edit.ptt.timeout": "话权占有超时(秒)", + "temporary.group.multi.talker.not.supported": "多话权组不允许加入到群组", + "temporary.group.null.member": "请先添加组成员", + "temporary.group.type.not.supported": "不支持添加此类型的设备", + "terminal.name": "终端名称", + "toolbox.list.allTool": "全部工具", + "toolbox.list.fax": "传真", + "userCenter.setting.PTT.answer": "自动接听语音通话", + "userCenter.setting.PTT.com": "COM口", + "userCenter.setting.PTT.placeholder1": "请输入...", + "userCenter.setting.PTT.placeholder2": "请选择...", + "userCenter.setting.PTT.time": "ptt短按有效时间", + "userCenter.setting.alarm.echoDelay": "启用回呼铃声延迟", + "userCenter.setting.alarm.echoTone": "启用回呼音", + "userCenter.setting.alarm.interval": "回呼延迟响铃时间间隔", + "userCenter.setting.alarm.placeholder": "请输入...", + "userCenter.setting.alarm.showCallBackHandlerTime": "显示回呼处理人时长", + "userCenter.setting.alarm.startAlarm": "启动告警音", + "userCenter.setting.basic.LOGO": "LOGO", + "userCenter.setting.basic.cart.sort": "呼叫卡片排序", + "userCenter.setting.basic.cart.sort.value1": "正序", + "userCenter.setting.basic.cart.sort.value2": "倒序", + "userCenter.setting.basic.log.apiState": "日志接口信息上报状态", + "userCenter.setting.basic.log.level": "日志级别", + "userCenter.setting.basic.log.level.value0": "不打印日志", + "userCenter.setting.basic.log.level.value1": "Error", + "userCenter.setting.basic.log.level.value2": "Warn", + "userCenter.setting.basic.log.level.value3": "Information", + "userCenter.setting.basic.log.level.value4": "Debug", + "userCenter.setting.basic.log.state": "日志开启状态", + "userCenter.setting.basic.pattern": "个性化设置模式切换", + "userCenter.setting.basic.pattern.value1": "暗", + "userCenter.setting.basic.pattern.value2": "亮", + "userCenter.setting.basic.placeholder": "请选择文件...", + "userCenter.setting.basic.terminalDisplay": "终端显示形式", + "userCenter.setting.basic.terminalDisplay.value1": "别名", + "userCenter.setting.basic.terminalDisplay.value2": "号码", + "userCenter.setting.basic.terminalDisplay.value3": "别名+号码", + "userCenter.setting.label": "设置", + "userCenter.setting.loginTime": "登陆时间", + "userCenter.setting.logout": "退出登录", + "userCenter.setting.map.call": "在地图上显示呼叫状态", + "userCenter.setting.map.defaultLevel": "默认地图层级", + "userCenter.setting.map.defaultLonLat": "默认中心点经纬度", + "userCenter.setting.map.details": "鼠标悬停与定位终端显示其详情", + "userCenter.setting.map.dstGpsSystem": "目的坐标系统", + "userCenter.setting.map.mapType": "地图类型选择", + "userCenter.setting.map.online": "在地图上显示离线设备", + "userCenter.setting.map.option1": "谷歌在线地图", + "userCenter.setting.map.option2": "谷歌离线地图", + "userCenter.setting.map.option3": "高德在线地图", + "userCenter.setting.map.placeholder": "请选择...", + "userCenter.setting.map.srcGpsSystem": "源坐标系统", + "userCenter.setting.version": "版本", + "userCenter.setting.video.camera": "摄像头", + "userCenter.setting.video.pixel": "视频像素", + "userCenter.setting.video.placeholder": "请选择...", + "userCenter.setting.voice.Microphone": "麦克风", + "userCenter.setting.voice.horn": "喇叭", + "userCenter.setting.voice.placeholder1": "请选择...", + "userCenter.setting.voice.placeholder2": "请选择...", + "userCenter.setting.voice.title1": "喇叭设置", + "userCenter.setting.voice.title2": "麦克风设置", + "userCenter.setting.window.cancel": "取消", + "userCenter.setting.window.save": "保存", + "userCenter.setting.window.success": "保存成功", + "userCenter.setting.window.tab1": "基础设置", + "userCenter.setting.window.tab2": "语音设置", + "userCenter.setting.window.tab3": "PTT设置", + "userCenter.setting.window.tab4": "告警设置", + "userCenter.setting.window.tab5": "地图设置", + "userCenter.setting.window.tab6": "视频设置", + "userCenter.setting.window.title": "设置", + "userInfo.nodata": "暂无数据", + "userSetting.SecuritySettings.button.settings": "设置", + "userSetting.cancel": "取消", + "userSetting.certification.button.check": "查看", + "userSetting.comfirm": "确定", + "userSetting.reset": "重置", + "userSetting.save": "保存", + "userSetting.tab.basicInformation": "基础信息", + "webLogSetting.l1": "服务器日志保存时间(日)", + "webLogSetting.l2": "服务器日志文件容量(MB)", + "webLogSetting.l3": "服务器日志保存文件数量", + "webLogSetting.p1": "7日到30日", + "webLogSetting.p2": "最小10MB,最大30M", + "webLogSetting.p3": "最少500,最多3000", + "webPuc.call.HangUpVideo": "挂断视频", + "webPuc.call.HorV": "横竖屏设置", + "webPuc.call.Horizontal": "横屏", + "webPuc.call.add.Inclusive.group": "添加包容组", + "webPuc.call.add.callObject": "添加呼叫对象", + "webPuc.call.add.transfer.obj": "添加转移对象", + "webPuc.call.answer": "{role}来电", + "webPuc.call.applying": "话权申请中...", + "webPuc.call.autoAnswer": "自动接听", + "webPuc.call.camera": "视频", + "webPuc.call.cameraType": "摄像头方向", + "webPuc.call.click_PPT_talk": "按下PPT讲话", + "webPuc.call.click_answer": "点击接听", + "webPuc.call.click_connect": "点击建立呼叫", + "webPuc.call.click_connect_monitor": "点击建立视频上拉", + "webPuc.call.click_release": "单击释放话权", + "webPuc.call.click_talk": "单击说话", + "webPuc.call.createVideoCall": "添加视频面板", + "webPuc.call.createVoiceCall": "添加语音面板", + "webPuc.call.disconnect": "呼叫未建立", + "webPuc.call.fail": "网络状态不佳, 话权建立失败", + "webPuc.call.flipCamera": "翻转摄像头", + "webPuc.call.fourSquares": "四宫格", + "webPuc.call.fullDuplex_connected": "通话中…", + "webPuc.call.fullDuplex_connecting": "正在呼叫中...", + "webPuc.call.fullDuplex_talking": "通话中...", + "webPuc.call.group.include.failure": "包容失败!", + "webPuc.call.group.include.success": "包容成功!", + "webPuc.call.halfDuplex_connecting": "呼叫建立中...", + "webPuc.call.halfDuplex_idle": "话权空闲", + "webPuc.call.halfDuplex_others_talking": "{role}正在讲话...", + "webPuc.call.halfDuplex_talking": "我正在讲话...", + "webPuc.call.hang_up": "挂断通话", + "webPuc.call.horizontalScreen": "翻转", + "webPuc.call.internation_and_forward": "国标上拉并转发", + "webPuc.call.isHangUp": "确定要挂断与{role}的通话吗?", + "webPuc.call.isHangUpVideo": "确定关闭当前视频面板吗?", + "webPuc.call.me": "我", + "webPuc.call.meetMemberFail": "获取成员失败", + "webPuc.call.microphone": "麦克", + "webPuc.call.nineSquares": "九宫格", + "webPuc.call.noSpeakRight": "暂无话权", + "webPuc.call.not.hangUp.other.dispatcher": "禁止挂断其他调度员呼叫!", + "webPuc.call.not.insert.other.dispatcher": "禁止插入其他调度员呼叫!", + "webPuc.call.oneSquare": "一宫格", + "webPuc.call.priority": "优先", + "webPuc.call.pushVideo": "推送", + "webPuc.call.screenRecord": "录屏", + "webPuc.call.screenshot": "截图", + "webPuc.call.shareVideo": "转发", + "webPuc.call.stopScreenRecord": "结束录屏", + "webPuc.call.support.deviceOrDispatcher": "只支持设备、调度台账户!", + "webPuc.call.support.deviceOrGroupOrDispatcher": "只支持设备、组、调度台账户!", + "webPuc.call.support.group": "只支持组!", + "webPuc.call.surVideoType": "视频类型", + "webPuc.call.surVideoType.notWithVolume": "纯视频", + "webPuc.call.surVideoType.withVolume": "音视频", + "webPuc.call.trumpet": "喇叭", + "webPuc.call.uploadFile": "选择上传文件,MP4格式!", + "webPuc.call.uploadFile.limit": "上传文件超过限制大小!", + "webPuc.call.urgent": "紧急", + "webPuc.call.vertical": "竖屏", + "webPuc.call.videoPixel": "视频像素", + "webPuc.call.videoType": "具体上拉摄像头", + "webPuc.call.videoUpperLimit": "已达视频数量上限!", + "webPuc.call.video_call": "视频呼叫", + "webPuc.call.voice_call": "语音呼叫", + "webPuc.call.volumeSetting": "音量设置", + "webPuc.dispatch.car.channel": "信道", + "webPuc.header.PTT.noBinding": "无", + "webPuc.header.call.answer": "来电接听", + "webPuc.header.call.environmentListen": "侦听中...", + "webPuc.header.call.environmentalRegards": "侦视中...", + "webPuc.header.call.halfDuplex_talking": "我...", + "webPuc.header.call.onDuty": "值守中...", + "webPuc.localResource.device": "设备", + "webPuc.localResource.device.countUnit": "条", + "webPuc.localResource.device.total": "共", + "webPuc.localResource.dispatchCar.channel.type": "信道类型", + "webPuc.localResource.dispatchCar.channel.type.0": "模拟", + "webPuc.localResource.dispatchCar.channel.type.1": "数字", + "webPuc.localResource.dispatchCar.dataError1": "数据未成功加载,请稍后重试", + "webPuc.localResource.dispatchCar.defaultGroup": "默认组", + "webPuc.localResource.dispatchCar.mode": "模式", + "webPuc.localResource.dispatcher": "调度台", + "webPuc.localResource.dispatcher.changeEventConfirm": "当前登录账号信息已变更,是否刷新组织架构信息?", + "webPuc.localResource.function.GPSsubscription.direction": "方向", + "webPuc.localResource.function.GPSsubscription.distance": "距离(m)", + "webPuc.localResource.function.GPSsubscription.distanceinput": "请输入订阅距离", + "webPuc.localResource.function.GPSsubscription.latitude": "纬度", + "webPuc.localResource.function.GPSsubscription.longitude": "经度", + "webPuc.localResource.function.GPSsubscription.no_unit_time": "时间", + "webPuc.localResource.function.GPSsubscription.speed": "速度(km/h)", + "webPuc.localResource.function.GPSsubscription.speedinput": "请输入订阅速度", + "webPuc.localResource.function.GPSsubscription.time": "时间(s)", + "webPuc.localResource.function.attribute": "属性", + "webPuc.localResource.function.back": "后置", + "webPuc.localResource.function.del": "删除", + "webPuc.localResource.function.edit": "编辑", + "webPuc.localResource.function.encryption": "加密", + "webPuc.localResource.function.environmentAudioVisual": "环境视听", + "webPuc.localResource.function.environmentListen": "环境侦听", + "webPuc.localResource.function.environmentalRegards": "环境侦视", + "webPuc.localResource.function.fastGpsEnd": "快速GPS停止", + "webPuc.localResource.function.fastGpsStart": "快速GPS启动", + "webPuc.localResource.function.front": "前置", + "webPuc.localResource.function.functionName": "功能名称", + "webPuc.localResource.function.launchTrajectoryTracking": "启轨迹跟踪", + "webPuc.localResource.function.memberGroupInfo": "查询组内成员", + "webPuc.localResource.function.onDuty": "值守", + "webPuc.localResource.function.onlineTesting": "在线检测", + "webPuc.localResource.function.pullOnVideo": "视频上拉", + "webPuc.localResource.function.queryingLockStatus": "查询锁定状态", + "webPuc.localResource.function.shakeOff": "遥晕", + "webPuc.localResource.function.shakeShoot": "遥毙", + "webPuc.localResource.function.shakeUp": "遥醒", + "webPuc.localResource.function.singlePullUp": "单次上拉", + "webPuc.localResource.function.sms": "短消息", + "webPuc.localResource.function.subscriptionGps": "位置订阅", + "webPuc.localResource.function.thePositionIsCentered": "位置居中显示", + "webPuc.localResource.function.turnOffTrackTracking": "关闭轨迹跟踪", + "webPuc.localResource.function.turnOffTrajectoryTracking": "关闭轨迹跟踪", + "webPuc.localResource.function.turnOnTrackTracking": "开启轨迹跟踪", + "webPuc.localResource.function.unencrypted": "非加密", + "webPuc.localResource.function.userOwningGroup": "用户归属组", + "webPuc.localResource.function.viewTheCallStatusDiagram": "查看呼叫状态上图", + "webPuc.localResource.group": "组", + "webPuc.localResource.modal.result.consequence": "操作结果", + "webPuc.localResource.modal.result.equipment": "设备", + "webPuc.localResource.modal.result.errorLabel": "操作失败数量:", + "webPuc.localResource.modal.result.successLabel": "操作成功数量:", + "webPuc.localResource.org.advancedSearch": "高级搜索", + "webPuc.localResource.org.changeEventConfirm": "组织架构已变更,是否刷新?", + "webPuc.localResource.org.domain": "域", + "webPuc.localResource.org.noneData": "所选项数据已不存在,请重新选择", + "webPuc.localResource.tempGroup": "临时组", + "webPuc.localResource.tempGroup.carGroup": "调度车台", + "webPuc.localResource.tempGroup.conference": "会议", + "webPuc.localResource.tempGroup.dynamicGroup": "动态重组", + "webPuc.localResource.tempGroup.group": "群组", + "webPuc.localResource.tempGroup.sysSendGroup": "系统派接", + "webPuc.menu.call": "呼叫", + "webPuc.menu.channelMonitor": "信道监控", + "webPuc.menu.gis": "GIS", + "webPuc.menu.monitor": "监控", + "webPuc.menu.reportForm": "报表", + "webPuc.menu.tool_box": "工具箱", + "webPuc.menu.toolbox": "工具箱", + "webPuc.monitor.maxPanelLen": "最多支持9路视频!", + "webPuc.monitor.pushVideo.tip": "{name}上拉面板已存在", + "webPuc.monitor.reconnect": "异常挂断重拉次数", + "webPuc.monitor.reconnectTip": "仅摄像头设备支持", + "webPuc.onDuty": "值守", + "webPuc.org.components.GPSsubscription.startGpsSubscription": "订阅成功!", + "webPuc.org.components.deviceTable.cancelDefaultSubscription": "取消订阅成功!", + "webPuc.org.components.deviceTable.defaultSubscription": "默认订阅成功!", + "webPuc.org.components.deviceTable.fastGpsEnd": "快速GPS停止成功!", + "webPuc.org.components.deviceTable.fastGpsStart": "快速GPS启动成功!", + "webPuc.org.components.deviceTable.invalidGpsData": "无效GPS数据", + "webPuc.org.components.deviceTable.pullUpFailed": "上拉失败", + "webPuc.org.components.deviceTable.pullUpSuccessfully": "上拉成功", + "webPuc.queue.call": "呼叫队列", + "webPuc.queue.callRecord": "呼叫记录", + "webPuc.recorder.end": "结束录制", + "webPuc.recorder.mediaError": "录屏失败,未获取到媒体流", + "webPuc.recorder.start": "开始录制", + "webPuc.resource.local": "本地资源", + "webPuc.video.pull.onSamePerson": "不允许转发给本人", + "webPuc.video.pull.onlyDevice": "只支持终端!", + "webPuc.video.pull.onlyDeviceGroupDisPatch": "只支持终端、组、调度台!", + "webPuc.video.pull.polling": "视频轮询", + "webPuc.video.pull.pushNoCanPushVideo": "轮询时,不可以转发", + "webPuc.video.pull.recall": "连接中断,是否重新拉起?", + "webPuc.video.pull.selectData": "请选择数据!", + "webPuc.video.pull.selectDataChange": "请新增或删除数据!", + "webPuc.video.pull.share": "视频转发", + "webPuc.video.pull.timeInterval": "时间间隔(秒)", + "webPuc.video.pull.timeInterval.max": "最大时间间隔为3000秒", + "webPuc.video.pull.timeInterval.min": "最小时间间隔为10秒", + "webPuc.video.pull.timeInterval.placeholder": "请输入轮询时间间隔", + "webPuc.video.pull.unknowError": "未知错误!", + "webpuc.fax.list.fax_file_name": "文件名", + "webpuc.fax.list.fax_id": "传真id", + "webpuc.fax.list.fax_rec_time": "接收时间", + "webpuc.fax.list.fax_receiver": "接收人", + "webpuc.fax.list.fax_send_phone": "发送者", + "webpuc.fax.list.fax_send_time": "发送时间", + "webpuc.fax.list.fax_status": "已读状态", + "webpuc.fax.list.send_status": "发送状态", + "webpuc.ui.version": "版本号", + "wwebPuc.call.videoType.shoulder": "肩眯", + "AdminSetting_BroadCastNumber_PDT1": "基站全呼", + "AdminSetting_BroadCastNumber_PDT2": "本地全呼", + "AdminSetting_BroadCastNumber_PDT3": "地域全呼", + "AdminSetting_BroadCastNumber_PDT4": "全网全呼", + "webPuc.localResource.function.current.group":"当前组", + "webPuc.localResource.tempGroup.onlyOne.window": "同时只能打开一个弹出窗口", + "webPuc.localResource.function.current.group.notfound":"未附着组", + "report.sdsType.reply":"回执短信", + "report.sdsType.police":"警情短信", + "report.sdsType.recorder":"执法记录仪配置与查询", + "report.sdsType.transparent":"透传短信", + "report.sdsType.crowd":"重点人群上报", + "reportForm.hyistory.video": "历史视频", + "reportForm.form.export": "表单导出", + "reportForm.call.startTime": "通话开始时间", + "reportForm.play": "播放" + }, + "errorCode": { + "0": "成功", + "1": "参数不合法", + "3": "网络错误或者数字证书未导入", + "4": "未登录", + "10": "请求超时", + "50": "WebSocket通道关闭", + "51": "WebSocket通道异常", + "52": "WebSocket通道超时", + "101": "puc_id不匹配问题", + "102": "系统不匹配", + "103": "对应的系统未找到", + "104": "成员类型错误", + "151": "视频呼叫传入的分辨率与硬件支持的分辨率不匹配", + "152": "号码类型不匹配", + "153": "获取媒体流失败", + "154": "该呼叫不存在", + "161": "值守操作失败", + "162": "值守号码被删除", + "171": "当前是全双工,不需要申请话权", + "172": "不允许申请话权", + "173": "当前是全双工,不能释放话权", + "174": "不允许释放话权", + "175": "不允许强插话权", + "220": "呼叫记录文件地址为空", + "221": "多媒体文件不存在", + "240": "告警已经处理过", + "350": "单次上拉失败", + "351": "无效GPS数据", + + "0x90000000": "hbp配置错误", + "0x90000001": "json解析错误", + "0x90000002": "缓存集群解析错误", + "0x90000003": "消息队列集群解析错误", + "0x90000004": "注册中心集群解析错误", + "0x90000005": "缓存集群运行错误", + "0x90000006": "消息队列集群运行错误", + "0x90000007": "注册中心集群运行错误", + "0x90000011": "找不到公共配置回调", + "0x90000012": "找不到增量配置回调", + "0x900C0000": "从请求json中获取MO ID错误", + "0x900C0001": "从请求json中获取MO操作类型错误", + "0x900C0002": "在响应json中添加MO ID错误", + "0x900C0003": "在响应中添加MO操作类型错误", + "0x900C0004": "在响应中添加参数错误", + "0x900C0005": "MO操作类型与请求头中的接口类型不兼容", + "0x900C0006": "从静态MO数据表中获取MO元数据错误,不存在!", + "0x900C0007": "请求json中包含空参数", + "0x900C0008": "不为空的数据为空", + "0x900C0009": "添加mo到本地配置错误", + "0x900C0010": "在响应json中添加键值对错误", + "0x900C0011": "合并响应数据错误", + "0x900C0012": "将查询结果添加到Parameter错误", + "0x900C0013": "获取数组类型MO主键错误", + "0x90320000": "企业用户实践失败", + "0x90320001": "企业用户添加失败", + "0x90320002": "企业用户修改失败", + "0x90320003": "IP修改失败", + "0x90320004": "延时修改失败", + "0x90970000": "Sipgw配置错误", + "0x90970001": "超时配置解析错误", + "0x90970002": "配置参数解析错误", + "100002": "低电量", + "100003": "终端本机ID错误", + "100004": "终端背景组ID错误", + "100005": "服务忙", + "100007": "服务拒绝", + "100008": "呼叫连接失败", + "100009": "被叫忙", + "100010": "被叫拒绝", + "100012": "服务错误", + "100013": "服务超时", + "100014": "服务失败", + "100015": "PTT禁用", + "100016": "秘钥更新中", + "100017": "PLL解锁", + "100018": "DSP错误", + "100019": "呼叫取消", + "100020": "正常取消", + "100021": "中止退出", + "100022": "异常退出(被告优先级业务中断)", + "100023": "被叫未接收到ACK", + "100028": "服务不支持", + "100029": "服务未授权", + "100030": "被叫未授权", + "100031": "无被叫方", + "100032": "被叫未注册", + "100033": "设备已遥晕", + "100034": "无人值守组", + "100035": "仅接收", + "100036": "无设备", + "100037": "信道繁忙", + "100038": "ID已禁用", + "1001": "rpc tlv消息解析/反序列化失败", + "100101": "短信发送失败", + "1002": "rpc tlv消息编码/序列化失败", + "101001": "rpc反序列化失败", + "101002": "rpc序列化失败", + "101003": "json反序列化失败", + "101004": "json序列化失败", + "101005": "cmd_name错误", + "101006": "sap不存在", + "101007": "sap未注册", + "101008": "sap不存在call模块", + "101009": "请求缺少必要字段", + "1600001": "中转台请求命令错误", + "1600002": "中转台解析信令出错", + "1600003": "中转台Sap状态错误", + "1600004": "中转台没有找到对应的Sap", + "1600005": "中转台用户验证错误", + "1600006": "中转台没有找到设备或设备没在线", + "1600007": "中转台操作缓存错误", + "1600101": "中转台监听错误", + "1600202": "中转台呼叫繁忙", + "1600203": "中转台呼叫类型错误", + "1600204": "中转台呼叫超时", + "1600205": "中转台呼叫状态错误", + "1600206": "中转台呼叫结束", + "1600207": "中转台呼叫监听失败", + "1600208": "中转台呼叫话权申请错误", + "1600209": "中转台呼叫请求错误", + "1600210": "中转台信道类型错误", + "1600211": "中转台没有找到另一个时隙", + "1600212": "中转台创建媒体失败", + "1600301": "中转台短信错误", + "1600302": "中转台短信参数错误", + "1600303": "中转台短信信道繁忙", + "1600304": "中转台短信只读错误", + "1600305": "中转台短信低电量", + "1600306": "中转台短信解锁错误", + "1600307": "中转台短信没有回执", + "1600308": "中转台短信唤醒错误", + "1600309": "中转台短信内容错误", + "1600310": "中转台短信写拒绝错误", + "1600311": "中转台短信中断", + "1600401": "中转台GPS错误", + "1600501": "中转台RRS错误", + "1600601": "中转台紧急告警错误", + "1600701": "中转台信道错误", + "1600702": "中转台摇晕失败", + "1600703": "中转台摇醒失败", + "200000": "未知错误", + "200001": "用户请求挂断", + "200002": "呼叫超时", + "200004": "呼叫建立失败", + "200101": "短信发送失败", + "2003": "服务器内部错误", + "201001": "rpc反序列化失败", + "201002": "rpc序列化失败", + "201003": "json反序列化失败", + "201004": "json序列化失败", + "201005": "cmd_name错误", + "201006": "sap不存在", + "201007": "sap未注册", + "201008": "sap不存在call模块", + "201009": "请求缺少必要字段", + "2100000": "未知错误", + "2100001": "调度台请求挂断", + "2100002": "网关未开启呼叫控制服务", + "2100003": "终端不在线", + "2100004": "呼叫建立失败", + "2100005": "调度台号码无权限", + "2100006": "被叫号码不存在", + "2100007": "被叫忙", + "2100008": "被叫拒绝", + "2100009": "被叫不支持加密", + "2100010": "系统呼叫模块忙", + "2100011": "调度台呼叫超时", + "2101001": "rpc反序列化失败", + "2101002": "rpc序列化失败", + "2101003": "json反序列化失败", + "2101004": "json序列化失败", + "2101005": "cmd_name错误", + "2101006": "sap不存在", + "2101007": "sap未注册", + "2101008": "sap不存在call模块", + "2101009": "请求缺少必要字段", + "2148604672": "MO约束未知错误", + "2148604673": "MO约束参数错误", + "2148604674": "保存MO记录失败", + "2148604675": "插入MO记录失败", + "2148604676": "删除MO记录失败", + "2148604677": "更新MO记录失败", + "2148604678": "查询MO记录失败", + "2148604679": "MO记录已存在", + "2148604680": "MO记录不存在", + "2148604681": "数据库表不存在", + "2148604682": "数据库文件不存在", + "2148604683": "不支持的数据库操作", + "2148604684": "MO信息的枚举值不在JSON对应范围内", + "2148604685": "解析OAM码流错误", + "2148604686": "导入约束模块失败", + "2148604687": "约束类初始化失败", + "2148604688": "前置校验失败", + "2148604689": "连带操作失败", + "2148604690": "后置检查失败", + "2148604691": "MO约束框架初始化失败", + "2148604692": "没有找到MO JSON文件", + "2148604693": "动态分支参数约束错误", + "2148604694": "MOD操作必须包含非主键参数", + "2416377902": "激活IOS证书失败", + "2416377904": "解析IOS证书解析失败", + "2416377905": "证书信息入库失败", + "2416377906": "不存在下载好的证书", + "2416377907": "此状态下不支持手动开关", + "2416377908": "手动开关失败", + "2416377909": "没有下载好的媒体提示音", + "2416381952": "返回网管,错误未知", + "2416381953": "无查询的MID或者结果消息", + "2416381954": "用户输入的MO不存在", + "2416381955": "收到NMS的不完整消息", + "2416381956": "mmL语句为空", + "2416381957": "词法检查NumberFormatException", + "2416381958": "Token管理错误", + "2416381959": "解析异常", + "2416381960": "查询MO的定义配置信息为NUll", + "2416381961": "MO操作op不存在", + "2416381978": "输入的MO存在重复字段", + "2416381979": "输入的MO缺少必须的输入参数", + "2416381980": "配置不存在该mo的属性描述", + "2416381981": "输入的为非U32数字", + "2416381982": "U32不合法,超出定义范围", + "2416381984": "Text不合法,长度超出限制", + "2416381985": "IPv4字段输入格式错误", + "2416381986": "IPv4不合法", + "2416381987": "IPv6字段输入格式错误", + "2416381988": "IPv6不合法", + "2416381989": "MO下不包含任何字段定义,不容许用户输入操作", + "2416381990": "当前实例已经存在上载配置任务,不可以重复执行", + "2416381991": "downCFG当前实例已经存在下载配置任务,不可以重复执行", + "2416381992": "从ftp服务器下载配置文件到设备失败", + "2416381993": "下载的配置文件中包含的mml存在语法错误", + "2416381994": "上传配置文件到ftp服务器失败", + "2416381995": "Text不合法,不包含完整的双引号", + "2416381996": "LIC查询许可信息失败,无信息", + "2416381997": "导入的LIC文件不在有效期,无法激活", + "2416381998": "导入的LIC文件,内存查询Lic信息失败", + "2416382000": "导入的LIC文件,变更内存状态信息失败", + "2416382001": "导入的LIC文件,获取ftp信息失败", + "2416382002": "激活LIC文件,当前待激活文件不存在", + "2416382003": "激活LIC文件失败", + "2416382004": "Http请求超时", + "2416382005": "加载lic信息,缺少激活的lic文件", + "2416382006": "加载lic信息,缺少默认的lic文件", + "2416382007": "加载lic信息,激活目录存在多个lic文件", + "2416382008": "加载lic信息,激活目录不存lic文件", + "2416382009": "lic信息记录刷新内存失败", + "2416382010": "LIC默认目录存在多个lic文件", + "2416382011": "LIC默认目录不存在lic文件", + "2416382012": "LIC默认lic文件解析失败", + "2416382013": "加载lic信息,下载目录存在多个lic文件", + "2416382014": "加载lic信息,下载目录不存lic文件", + "2416382016": "查询实例信息不存在", + "2416382017": "枚举类型的值配置文件中描述错误,正确的需要是int类型", + "2416382018": "输入的枚举类型的值不在定义中", + "2416382019": "BOOLEAN类型的值配置文件中描述错误,正确的需要是int类型", + "2416382020": "输入的BOOLEAN类型的值不在定义中", + "2416382021": "导入的配置文件中描述的业务服务版本不匹配", + "2416382022": "cp模块处理网管请求出错", + "2416382023": "LICENSE激活检查备用设备码不一致", + "2416382024": "LICENSE激活检查主用设备码不一致", + "2416382025": "公共配置消息发送成功的服务有: {0},发送失败的服务有: {1},发送超时的服务有: {2}. 提示:该消息包含的数据已经执行入库存储,异常的服务在恢复正常后可主动向配置中心获取。", + "2416382032": "单机模式下不支持手动主备倒换", + "2416382033": "导入的配置文件中不包含配置数据。", + "2416382034": "配置导入未成功", + "2416382035": "多个配置导入未完全成功,其中成功有: {0},失败有: {1}.", + "2416382036": "配置导入时截取的instanceID不合法", + "2416382037": "批量导入配置时,解压文件失败导致异常", + "2416382038": "LIC下载文件失败,获取ftp信息失败", + "2416386048": "未知错误", + "2416386049": "文件不存在", + "2416386050": "文件解压错误", + "2416386051": "文件格式错误", + "2416386052": "命令查询结果返回空", + "2416386053": "数据库中已存在记录", + "2416386054": "数据库未查询到对应数据", + "2416386055": "数据类型转换错误", + "2416386056": "异常信息,错误码不确定", + "2416386057": "平台请求处理错误", + "2416386058": "请求错误", + "2416386059": "服务响应超时.提示:消息包含的数据已执行入库存储,服务重启后可主动向配置中心获取。", + "2416386060": "FTP下载错误", + "2416386061": "解析mometa失败", + "2416386062": "执行shell脚本错误", + "2416386063": "数据备份脚本执行失败", + "2416386064": "从dp同步数据失败", + "2416386065": "发送公共服务命令的实例ID对应为空,只执行了入库,没有发送业务警告", + "2416386066": "备份数据库不存在", + "2416386067": "执行OS的脚本错误", + "2416386068": "执行OS操作未知错误", + "2416386069": "执行配置的Host IP为空", + "2416386070": "未加载到 python 约束框架,请检查资源文件是否正确加载", + "2416386071": "Python 约束框架调用异常", + "2425356288": "公共配置错误", + "2425356289": "域名配置解析错误", + "2425356290": "本端服务配置解析错误", + "2425356291": "远端服务配置解析错误", + "2425356292": "IP配置解析错误", + "2425356293": "信令接口配置解析错误", + "2425356294": "状态机定时器配置解析错误", + "2425356295": "业务开关配置解析错误", + "2425356296": "数据库配置解析错误", + "2425356297": "业务定时器配置解析错误", + "2425356298": "产品配置解析错误", + "2425356299": "公共业务标识配置解析错误", + "2425356300": "地址权重配置解析错误", + "2425356301": "服务配置解析错误", + "2425356302": "话统开关配置解析错误", + "2425356303": "平台公共配置解析错误", + "2425356305": "域名配置运行错误", + "2425356306": "本端服务配置运行错误", + "2425356307": "远端服务配置运行错误", + "2425356308": "IP配置运行错误", + "2425356309": "信令接口配置运行错误", + "2425356310": "状态机定时器配置运行错误", + "2425356311": "业务开关配置运行错误", + "2425356312": "数据库配置运行错误", + "2425356313": "业务定时器配置运行错误", + "2425356314": "产品配置运行错误", + "2425356315": "公共业务标识配置运行错误", + "2425356316": "地址权重配置运行错误", + "2425356317": "服务配置运行错误", + "2425356318": "话统开关配置运行错误", + "2425356319": "平台公共配置运行错误", + "2425356321": "ID字段不能为0", + "2425356322": "主键(域名ID)不能重复配置", + "2425356323": "该条记录域名ID字段已被(本端服务配置)引用", + "2425356324": "域名配置为空,不能添加本端服务配置", + "2425356325": "域名逻辑ID不在域名配置表配置范围", + "2425356326": "该条记录服务逻辑ID字段已被(信号接口配置)引用", + "2425356327": "主键(服务逻辑ID)不能重复配置", + "2425356328": "服务逻辑ID配置错误,不能添加信号接口配置", + "2425356329": "主键(IP逻辑ID)不能重复配置", + "2425356330": "该条记录IP逻辑ID字段已被(信号接口配置)引用", + "2425356331": "主键(记录索引)不能重复配置", + "2425356332": "该字段为最小配置范围,不允许删除", + "2425356333": "该字段有效配置范围为30到300", + "300000": "原因未定义或未知", + "300001": "抢先使用资源", + "300002": "用户释放", + "300003": "被叫提供不可接受服务", + "300004": "被叫不可达", + "300005": "被叫被拒绝", + "300006": "网关延时抢占", + "300007": "与DM-REP或DM-GATE的链接未建立或失败", + "300008": "无效请求", + "300009": "DM-GATE拒绝", + "300010": "SwMI拒绝", + "300011": "TMO模式呼叫建立失败", + "300012": "TMO资源丢失或定时器到期", + "300013": "发射能力授权失效", + "300014": "被叫方与主叫方DM-GATE相同", + "300015": "保留", + "300016": "静态秘钥失败", + "300017": "被叫方不支持端到端加密", + "300018": "信道定时器失效", + "300019": "信道忙", + "300020": "信道被占用", + "300021": "呼叫已丢失", + "300022": "切换或抢占失败", + "300023": "切换或抢占被拒绝", + "300024": "被叫方不支持请求的服务", + "300025": "无法识别TETRA ID", + "300026": "未知的外部订户标识", + "300027": "被叫忙", + "300028": "被叫方不支持加密", + "300029": "被叫方需要加密", + "300030": "被叫方需要端到端加密", + "300031": "被叫方拒绝呼叫", + "300032": "安全参数不匹配", + "300033": "保留", + "300034": "保留", + "300035": "请求被DM-GATE拒绝", + "300036": "保留", + "300064": "消息不允许/不支持", + "300065": "响应消息超时", + "300066": "错误的目标设备地址", + "300067": "设备数据未知", + "300068": "最小发送功率高于允许值", + "300069": "无法发送", + "300070": "格式不正确的请求", + "300071": "通道状态已更改", + "300101": "用户拒绝", + "300102": "被叫忙", + "300103": "被叫被拒绝", + "300104": "被叫不支持加密", + "300105": "网络正忙", + "300106": "通讯不允许", + "300107": "通讯不相容", + "300108": "服务不可用", + "300109": "双方被抢占", + "300110": "无效的呼叫id", + "300111": "被叫方拒绝呼叫", + "300112": "无CC实体", + "300113": "定时器到期", + "300114": "SwMI断开", + "300115": "无确认", + "300500": "短信发送失败", + "301001": "rpc反序列化失败", + "301002": "rpc序列化失败", + "301003": "json反序列化失败", + "301004": "json序列化失败", + "301005": "cmd_name错误", + "301006": "sap不存在", + "301007": "sap未注册", + "301008": "sap不存在call模块", + "301009": "请求缺少必要字段", + "301010": "当前服务接入点不支持该功能", + "400": "消息类型错误或者消息体长度错误", + "401": "授权错误", + "403": "资源不可用", + "404": "找不到资源", + "406": "不接受", + "408": "请求超时", + "4200001": "未知错误", + "4200002": "未知用户", + "4200003": "未知组号", + "4200004": "用户不在线", + "4200005": "用户无权限", + "4200006": "用户不可用", + "4200007": "用户无响应", + "4200008": "被叫忙", + "4200009": "被叫不可达", + "4200010": "被叫不支持加密", + "4200011": "被叫拒绝呼叫", + "4200012": "呼叫失败", + "4200013": "请求的业务不支持", + "4200014": "组附属被拒绝", + "4200015": "遥晕遥毙失败", + "4200016": "动态重组失败", + "429": "频次限制", + "500": "服务器错误", + "500001": "网关启动错误", + "500002": "公共错误", + "500003": "发送rpc失败", + "500004": "没有发现句柄", + "500005": "没有发现会话", + "500006": "呼叫控制服务未开启", + "500007": "调度号码未登录", + "500008": "呼叫失败", + "500009": "该号码不存在", + "500010": "对方拒绝", + "500011": "对方不支持", + "500012": "呼叫超时", + "500013": "强拆无权限", + "500014": "申请媒体资源失败", + "500015": "更新媒体资源失败", + "500016": "呼叫冲突", + "500017": "号码不可用", + "500018": "操作超时", + "500019": "终端原因导致失败", + "500020": "手台被遥晕", + "500021": "手台被遥毙", + "500022": "组已存在", + "500023": "手台号码错误", + "500024": "被叫无权限", + "500025": "主叫不存在", + "500026": "主叫无上拉权限", + "500027": "被叫不存在", + "500028": "挂断成功", + "500029": "用户请求挂断", + "500030": "呼叫控制服务未开启", + "500031": "未登录", + "500032": "呼叫失败", + "500033": "无权限", + "500034": "该号码不存在", + "500035": "对方忙", + "500036": "对方拒绝", + "500037": "对方不支持", + "500038": "系统呼叫模块忙", + "500039": "呼叫超时", + "500040": "无效会话id", + "500041": "全部失败", + "500042": "部分失败", + "500043": "未登录", + "500044": "无权限", + "500045": "该号码不存在", + "500046": "对方忙", + "500047": "动态重组操作超时", + "500048": "终端原因导致失败", + "500049": "系统无可用动态组地址", + "500050": "DGNA组成员不能为调度台", + "500051": "超过最大组成员数", + "500052": "动态组号不存在", + "500053": "手台被遥晕", + "500054": "手台被遥毙", + "500055": "组已存在", + "500056": "手台号码错误", + "500057": "组号码错误", + "500058": "组号码不在本系统资源内", + "500059": "系统模式不匹配", + "500060": "其他失败原因码", + "500061": "GPS未知错误", + "500062": "GPS被叫无权限", + "500063": "GPS主叫不存在", + "500064": "GPS主叫无上拉权限", + "500065": "GPS被叫不存在", + "500066": "GPS被叫手台激活失败", + "500067": "GPS周期订阅未知错误", + "500068": "GPS周期订阅被叫无权限", + "500069": "GPS周期订阅主叫不存在", + "500070": "GPS周期订阅主叫无上拉权限", + "500071": "GPS周期订阅被叫不存在", + "500072": "GPS周期订阅被叫手台激活失败", + "500073": "GPS周期订阅数达到最大值", + "500074": "GPS周期订阅服务临时不支持", + "500075": "停止GPS订阅未知错误", + "500076": "停止GPS订阅被叫手台去激活失败", + "500077": "停止GPS订阅重复请求,系统正在处理中", + "500078": "GPS周期订阅数据上拉状态未知错误", + "500079": "GPS周期订阅数据上拉状态用户无数据", + "500080": "GPS周期订阅数据上拉状态系统不支持", + "500081": "GPS周期订阅数据上拉状态服务未授权", + "500082": "GPS周期订阅数据上拉状态服务临时不支持", + "500083": "GPS周期订阅数据上拉状态系统过载", + "500084": "GPS周期订阅数据上拉状态系统辅控关闭", + "500085": "GPS周期订阅数据上拉状态辅控信道异常", + "500086": "GPS周期订阅数据上拉状态基站断开", + "500087": "GPS周期订阅数据上拉状态手台去登记", + "500088": "GPS周期订阅数据上拉状态GPS订阅达到最大数", + "500089": "GPS周期订阅数据上拉状态服务临时不支持", + "500090": "GPS周期订阅数据上拉状态手台被销户", + "500091": "GPS周期订阅数据上拉状态手台被遥毙", + "500092": "GPS周期上报事件结果用户无数据", + "500093": "GPS周期上报事件结果信道机辅控信道异常断开", + "500094": "GPS周期上报事件结果系统超时", + "500095": "GPS周期上报事件结果手台超时", + "500096": "发送文本短信结果未知错误", + "500097": "发送文本短信结果号码错误", + "500098": "发送文本短信结果号码不在线", + "500099": "发送文本短信结果号码不可用", + "500100": "发送文本短信结果没有权限", + "500101": "未知错误", + "500102": "没有遥晕license权限", + "500103": "已在包容呼叫中", + "500104": "接入点不存在", + "501": "不具备完成请求的功能", + "506": "没有正确配置", + "507": "网络信号不稳定", + "51300001": "tlv消息解析/反序列化失败", + "51300002": "用户不在线", + "51300003": "处理业务RPC失败", + "51300004": "发送WebSocket消息失败", + "51500001": "消息解析失败", + "51500002": "未知错误", + "51500003": "权限不足", + "51500004": "未找到父级", + "51500005": "发送RPC到MSDL失败", + "51500006": "未找到用户信息", + "51700002": "越区告警结构体错误", + "51700003": "越区告警查询数据繁忙", + "51700004": "越区告警删除区域失败,因为绑定了规则", + "51700005": "越区告警功能开关未打开", + "51800001": "密码无效", + "51800002": "账号无效", + "51800003": "域名不存在", + "51800004": "db为空", + "51800005": "执行SQL失败", + "51800006": "账号不存在", + "51800007": "原始密码错误", + "51800008": "管理员账禁止删除", + "51800009": "未识别的命令字", + "51800010": "json反序列化失败", + "51800011": "conf调用失败", + "51800012": "common域无此类型数据", + "51800013": "数据同步超时", + "51800014": "数据同步失败", + "5200001": "反序列化失败", + "5200002": "序列化失败", + "5200003": "参数错误", + "5200004": "不支持的命令字", + "5200005": "接入点不存在", + "5200006": "接入点离线", + "5200007": "接入点不存在呼叫模块", + "5200008": "接入点不存在控制模块", + "5200009": "接入点初始化失败", + "5200010": "已配置网闸但未向sipgw注册", + "5200011": "构造sip消息失败", + "5200012": "解析sdp失败", + "5200013": "sdp缺少视频参数", + "5200014": "sip缺少sdp", + "5200015": "会话状态错误", + "5200016": "不存在会话", + "5200017": "发送sip到后置失败", + "5200018": "发送rpc到后置失败", + "5200019": "发送sip到前置失败", + "5200020": "发送rpc到前置失败", + "5200021": "发送rpc到gual失败", + "5200022": "发送sip到系统失败", + "5200023": "错误的sip消息", + "5200024": "不支持的sip方法", + "5200025": "强制类型转换失败", + "5200026": "被叫不存在", + "5200027": "获取被叫媒体uri失败", + "5200028": "申请媒体失败", + "5200029": "更新媒体失败", + "5200030": "前置网关返回错误", + "5200031": "系统主动挂断", + "5200032": "系统返回错误", + "5200033": "设备不存在", + "5200034": "RPC返回错误", + "5200035": "同步失败", + "5200036": "未定义错误", + "52200002": "超速告警结构体错误", + "52200003": "超速告警查询数据繁忙", + "52300002": "报表查询超出范围", + "52300003": "报表查询呼叫记录数量失败", + "52300004": "报表查询呼叫记录失败", + "52300005": "报表查询短信记录数量失败", + "52300006": "报表查询短信记录失败", + "52300007": "报表查询紧急告警记录数量失败", + "52300008": "报表查询紧急告警分页记录失败", + "52300009": "报表查询紧急告警状态记录失败", + "52300010": "报表查询越区告警数量失败", + "52300011": "报表查询越区告警分页记录失败", + "52300012": "报表查询越区告警未处理记录失败", + "52300013": "报表查询超速告警数量失败", + "52300014": "报表查询超速告警分页记录失败", + "52300015": "报表查询超速告警未处理记录失败", + "52300016": "报表查询上下线记录数量失败", + "52300017": "报表查询上下线记录失败", + "52300018": "报表查询回呼请求记录数量失败", + "52300019": "报表查询回呼请求记录失败", + "52300023": "不支持组织和号码组合查询", + "52400001": "tlv反序列化失败", + "52400002": "tlv序列化失败", + "52400003": "json反序列化失败", + "52400004": "json序列化失败", + "52400005": "Base64解码失败", + "52400006": "AuthorizeBasic格式错误", + "52400007": "从Redis获取DB连接失败", + "52400008": "从Redis获取RRS服务失败", + "52400009": "从Redis获取用户密码失败", + "52400010": "将令牌插入Redis失败", + "52400011": "从Redis选择令牌失败", + "52400012": "Redis获取在线用户信息失败", + "52400013": "从Redis删除在线用户失败", + "52400014": "从Redis删除令牌失败", + "52400015": "UserId格式错误", + "52400016": "从Redis在线用户集删除失败", + "52400017": "踢出调度用户失败", + "52400018": "断开调度Websocket连接失败", + "52400019": "向Mq广播用户状态失败", + "52400020": "从Redis获取Realm在线用户失败", + "52400021": "按Mq将用户状态推送到同域的其他用户失败", + "52400022": "设置Redis基础数据用户状态字段失败", + "52400023": "设置Redis基本数据用户OS字段失败", + "52400024": "设置Redis基本数据用户media_ip字段失败", + "52400025": "连接DB失败", + "52400026": "将数据插入注册失败", + "52400027": "从Redis获取基本数据用户信息失败", + "52400028": "将在线用户插入Redis失败", + "52400029": "将用户插入Redis在线用户集失败", + "52400030": "更新Redis中的Token状态失败", + "52400031": "添加在线域名失败", + "52400032": "从Redis获取在线域名失败", + "52400033": "取解除锁定类型块失败", + "52400034": "获取本地Ip地址失败", + "52400035": "将用户插入到redis中相应SSI的set中", + "52400036": "将用户从redis中相应SSI的set中删除", + "52400037": "从SSI集获取用户失败", + "52400038": "从Redis获取用户密码失败", + "52400039": "更新用户SSI字段失败", + "52400040": "用户登录到Mcs失败", + "52400041": "从Mcs注销用户失败", + "52400042": "在Redis中设置令牌过期时间失败", + "52400043": "在Redis中持久化令牌失败", + "52400045": "从Redis获取联机客户端计数失败", + "52400046": "设置Redis中的联机客户端计数失败", + "52400047": "登陆限流", + "52400048": "用户已过期", + "52400049": "用户名或密码错误", + "52400050": "基础数据未启动完成", + "52400051": "上下线服务未启动完成", + "52400052": "Reg服务不是主服务(异地容灾降备)", + "52400053": "token错误", + "52400054": "重复登陆", + "52400056": "账号正在操作中", + "52400057": "坐席登录系统失败", + "52400058": "登录客户端类型错误", + "52400059": "登出时检测到未登录", + "52400060": "心跳超时", + "52400061": "重复登录踢出", + "52400062": "sap异常退出登出", + "52400063": "异地容灾降备", + "52400064": "调度账号被删除", + "52400065": "用户类型为坐席修改加密类型", + "52600002": "通用透传服务结构体错误", + "52700001": "tlv消息解析/反序列化失败", + "52700002": "cmd_name填写错误", + "52700003": "未知错误", + "52700004": "告警类型错误", + "52700005": "回呼请求类型错误", + "52700006": "告警信息不存在", + "52700007": "接警状态错误", + "52700008": "处警状态错误", + "52900001": "tlv消息解析/反序列化失败", + "52900002": "路由类型错误", + "52900003": "PUCID为空", + "52900004": "系统ID为空", + "52900005": "域名为空", + "52900006": "主叫号码为空", + "53100001": "无效的CMD", + "53100002": "保存redis失败", + "53100003": "保存数据库失败", + "53100004": "访问redis数据失败", + "53100005": "访问数据失败", + "53300001": "消息解析失败", + "53300002": "生成业务ID失败", + "53300003": "保存呼叫业务失败", + "53300004": "获取呼叫业务失败", + "53300005": "呼叫通道已关闭", + "53300006": "呼叫消息投递失败", + "53300007": "呼叫信令不支持", + "53300008": "呼叫业务ID为空", + "53300009": "呼叫限流过载失败", + "53300555": "呼叫正常挂断", + "53300666": "呼叫转移成功挂断转移人", + "53300701": "创建媒体资源失败", + "53300702": "呼叫冲突", + "53300703": "更新媒体资源失败", + "53300706": "呼叫并入失败", + "53300707": "话权空闲超时挂断", + "53300709": "主叫挂断", + "53300710": "被叫挂断", + "53300718": "媒体无流挂断", + "53300721": "录音回放结束挂断", + "53300731": "获取会议成员失败挂断", + "53300733": "会议删除挂断", + "53300734": "会议成员删除挂断", + "53300801": "创建调度腿失败挂断", + "53300806": "调度不在线挂断", + "53300823": "取消监听挂断", + "53300827": "调度登出挂断", + "53300828": "群组成员呼叫结束挂断", + "53300834": "获取群组成员失败挂断", + "53300841": "群组成员为空挂断", + "53300843": "群组创建者不在线挂断", + "53300849": "群组成员删除挂断", + "53300855": "强拆挂断", + "53300856": "强插新建呼叫挂断", + "53300857": "创建源呼叫腿失败挂断", + "53300858": "非系统监听不支持强拆", + "53300859": "群组删除挂断", + "53300860": "呼叫过载挂断", + "53300861": "呼叫同振挂断其他", + "53300862": "视频被转发人挂断", + "53300863": "呼叫最大时长超时挂断", + "53300864": "获取监听关系失败挂断", + "53400002": "ACS无法找到网关", + "53400003": "ACS客户端登出挂断呼叫", + "53400004": "ACS派接被删除而挂断呼叫", + "53600001": "消息解析失败", + "53700001": "tlv消息解析/反序列化失败", + "53700002": "tlv消息编码/序列化失败", + "53700003": "通用错误", + "53700004": "非法的微服务", + "53700005": "CallSetup请求缺少必要字段", + "53700006": "SDS短信请求缺少必要字段", + "53700007": "调用RPC失败", + "53700008": "呼叫建立冲突", + "53700009": "组呼主动并入失败", + "53700010": "添加新协程到map失败", + "53700011": "呼叫不存在", + "53700012": "协程通道关闭", + "53700013": "发送数据到协程通道失败", + "53700014": "呼叫状态机null状态超时", + "53700015": "呼叫状态机process状态超时", + "53700016": "呼叫状态机connect状态超时", + "53700017": "呼叫状态机active状态超时", + "53700018": "呼叫状态机release状态超时", + "53800000": "话权错误码开始", + "53800001": "创建并增加话权通道集合错误", + "538000010": "只允许接收", + "538000011": "无可用资源", + "538000012": "队列满", + "538000013": "优先级不足", + "538000014": "其他原因话权拒绝", + "538000015": "话权正在变化不接受话权操作", + "538000016": "外系统拒绝话权", + "538000017": "外系统不接受主叫调度之外的坐席话权", + "53800002": "定位查询话权通道集合错误", + "53800003": "话权将消息发送到通道错误", + "53800004": "话权通道关闭错误", + "53800005": "话权重启清除数据错误", + "53800006": "其他客户端有话权", + "53800007": "内部错误", + "53800008": "当前会话只有一个参与方", + "53800009": "重试定时器不存在", + "53800010": "只允许接收", + "53800011": "无可用资源", + "53800012": "队列满", + "53800013": "优先级不足", + "53800014": "其他原因话权拒绝", + "53800015": "话权正在变化不接受话权操作", + "53800016": "外系统拒绝话权", + "53800017": "外系统只接受主叫调度话权操作", + "53900001": "未知错误", + "53900002": "tlv反序列化失败", + "53900003": "tlv序列化失败", + "53900004": "当前puc非主服务", + "53900005": "未启用多级调度", + "53900006": "多级调度rpc错误", + "53900007": "rpc错误", + "53900008": "未知命令字", + "53900009": "鉴权失败", + "53900010": "会话未鉴权", + "53900011": "会话不存在", + "53900012": "pucid为空", + "53900013": "本地pucid", + "53900014": "呼叫会话已存在", + "53900015": "呼叫会话不存在", + "53900016": "sip未知错误", + "53900017": "接收多媒体文件失败", + "54001000": "错误码开始标识", + "54001001": "基础数据重复", + "54001002": "数据不存在", + "54001003": "修改调度员密码时,原密码错误", + "54001004": "超过lic限制错误", + "54001005": "没有操作权限错误", + "54001006": "网关返回失败", + "54001007": "SAP与system类型不匹配", + "54001008": "基础数据同步中", + "54001009": "基础数据不存在", + "54002000": "数据库操作失败", + "54002001": "redis操作失败", + "54002002": "json序列化失败", + "54002003": "json反序列化失败", + "54002004": "lics错误", + "54002005": "数据重复(数据已存在)", + "54002006": "数据不存在", + "54002007": "信令中携带的租户信息不存在", + "54002008": "修改密码时,原密码错误", + "54002009": "cmd_name未找到", + "54002010": "没有操作数据权限错误", + "54002011": "sap类型和系统类型不匹配", + "54002012": "要删除的系统存在基础数据,不允许被删除", + "54002013": "网关返回失败", + "54002014": "预定义组已用完", + "54002015": "该系统无需使用预定义组", + "54002016": "数据类型不存在", + "54002017": "调度台无权限", + "54002018": "检验四线携带的内容不合规", + "54002019": "检验下级域携带的内容不合规", + "54002020": "四线携带组数量不对", + "54002021": "四线携带组类型不对", + "54002022": "下级域的区号重复", + "54002023": "短信模板的个数超过最大限度", + "54002024": "调度台创建的群组存在", + "54002025": "调度台创建的会议存在", + "54002026": "调度台创建的动态组存在", + "54002027": "调度台创建的多选呼叫存在", + "54002028": "调度台创建的派接组存在", + "54003000": "命令字错误", + "54003001": "json解析错误", + "54003002": "没有生效或者执行", + "54003003": "查询结果为空", + "54003004": "查询结果返回值错误", + "54003005": "增加简短的组织错误", + "54003006": "更新简短的组织错误", + "54003007": "删除组织错误", + "54003008": "redis查询错误", + "54003009": "不符合要求", + "54003010": "输入的参数错误", + "54003011": "pucid的输入错误", + "54090001": "请求解析失败", + "54090002": "当前没有导入导出任务", + "54090003": "当前已存在导入或者导出任务", + "54090004": "未找到该任务", + "54090005": "导入文件为空", + "54090006": "上传frs失败", + "54090007": "获取token失败", + "54090011": "基本配置导出失败", + "54090012": "组织信息导出失败", + "54090013": "系统信息导出失败", + "54090014": "接入点配置导出失败", + "54090015": "调度员信息导出失败", + "54090021": "导入文件base64解码失败", + "54090022": "导入文件base64解码后长度为0", + "54090023": "导入文件json解码失败", + "54090024": "基本配置导入失败", + "54090025": "组织信息导入失败", + "54090026": "系统信息导入失败", + "54090027": "接入点配置导入失败", + "54090028": "调度员信息导入失败", + "54090030": "导入基础数据请求反序列化失败", + "54090031": "导入基础数据的任务已经存在", + "54090032": "导入基础数据为文件内容为空", + "54090033": "导入基础数据解码失败", + "54090034": "导入基础数据解码后内容为空", + "54090035": "导入基础数据文件内容反序列化失败", + "54090036": "导入基础数据任务不存在", + "54090037": "导入基础数据上传导入结果文件失败", + "54090038": "导入基础数据获取token失败", + "54090039": "导入基础数据没找到匹配任务", + "54100001": "", + "54100002": "rpc tlv消息解析/反序列化失败", + "54100003": "rpc tlv消息编码/序列化失败", + "54100004": "寻找服务注册到gual的路由失败", + "54100005": "寻找网关注册到gual的路由失败", + "54100006": "没有找到可用的网关服务", + "54100007": "向网关发送数据失败", + "54100008": "Marshal 数据为空", + "54100009": "Rpc发送给服务器失败", + "54100010": "保存路由信息失败", + "54100011": "获取路由信息失败", + "54100012": "拆分呼叫失败", + "54100013": "sap 不在线", + "54100014": "融合系统组配置错误,在多个宽窄融合系统注册", + "54100015": "强插呼叫建立失败,发送话权拒绝", + "54200001": "解析失败", + "54200002": "redis操作错误", + "54200003": "LBSIP地址错误", + "54200004": "LBS端口错误", + "54200005": "实体ID错误", + "54200006": "网关号码为空", + "54200007": "网关名称为空", + "54200008": "网关函数名为空", + "54200009": "系统ID为空", + "54200010": "系统ID未找到对应的mo配置", + "54200011": "上下线值错误", + "54200012": "SipHandle为空", + "54200013": "远端的SIPIP错误", + "54200014": "远端的SIP端口为0", + "54200015": "未找到sip平台的LBS信息", + "54200016": "pucID为空", + "54200017": "获取redis的SessionID信息错误", + "54200018": "未知错误", + "54200019": "缺少必要字段", + "54200020": "SipLbs心跳函数名为空", + "54200021": "SipLbs绑定端口错误", + "54200022": "SipLbs资源不足", + "54200023": "SipLbs配置ID不存在", + "54200024": "SipLbs配置ID为空", + "54200025": "协议类型填写错误", + "5600101": "用户未授权、或授权失败", + "5600107": "用户无权限", + "5600109": "用户无权限", + "5600113": "组号码不存在", + "5600114": "组数据查询失败", + "5600115": "群组不可用", + "5600116": "主叫不属于这个组", + "5600120": "主叫未附着到群组", + "5600124": "超过最大并发单呼数量", + "5600125": "无自动单呼权限", + "5600126": "无手动单呼权限", + "5600129": "用户去附着", + "5600130": "用户注销", + "5600131": "申请TMF媒体资源失败", + "5600132": "更新TMF媒体资源失败", + "5600133": "最大呼叫建立时长定时器超时", + "5600134": "静音检测超时", + "5600136": "被叫被抢占", + "5600139": "检查校验XML完整性保护失败", + "5600154": "校验用户环境监听、监视权限失败", + "5600160": "PSTN呼叫被拒绝", + "5600198": "被叫未附着到群组", + "5600200": "用户没有数据传输权限", + "5600202": "呼叫建立超时", + "5600203": "呼叫连接超时", + "5600204": "呼叫激活超时", + "5600208": "呼叫类型格式错误", + "5600213": "限制呼入", + "5600225": "签约数据查询失败", + "5600403": "无权限", + "5600404": "找不到用户", + "5600408": "请求超时", + "5600480": "临时不可用", + "5600481": "会话不存在", + "5600486": "用户忙", + "5600488": "此处不接受", + "5600500": "服务器内部错误", + "5600502": "网关不可用", + "5600503": "服务不可用", + "5600504": "服务响应超时", + "5600603": "被叫拒接", + "5600610": "用户数据不可用", + "5600611": "被叫不存在", + "5600612": "被叫不在线", + "5600613": "服务端内部RPC调用失败", + "5600623": "请求缺少必要字段", + "5600634": "业务并发受限", + "5600640": "license限制", + "5600642": "签约数据不可用", + "5600644": "呼叫不存在", + "5600652": "无加密呼叫权限", + "5601035": "业务限流", + "5601065": "没有遥晕遥毙权限", + "5601067": "遥晕遥毙失败", + "5602006": "查询订阅关系失败", + "5603013": "用户被遥晕遥毙", + "5603014": "错误的调度台监听设置请求", + "5603015": "无效消息", + "5603018": "发送消息失败", + "5603038": "用户无权限", + "5603040": "无紧急单呼权限", + "5603041": "无取消紧急单呼权限", + "5603043": "呼叫模式错误", + "5603045": "呼叫被拒绝", + "5603053": "无单呼权限", + "5603054": "无视频回传权限", + "5603055": "用户在黑名单中", + "5603067": "主叫发起的呼叫释放", + "5603068": "核心网强制呼叫释放", + "5603069": "超时释放", + "5603070": "被叫发起的呼叫释放", + "5603071": "呼叫转移导致的释放", + "5603075": "无呼叫转接权限", + "5603160": "群组权限关闭禁止呼叫", + "5603506": "组内没有被叫", + "5603507": "无法建立组呼", + "5603508": "系统内部处理失败", + "5603509": "呼叫冲突", + "5603510": "主叫没有附着", + "5603511": "组的媒体格式协商失败", + "5603512": "组内所有被叫没有附着", + "5603514": "释放老的呼叫分支失败", + "5605014": "会话心跳超时释放呼叫", + "5605020": "所有被叫处理失败", + "5611001": "rpc反序列化失败", + "5611002": "rpc序列化失败", + "5611003": "json反序列化失败", + "5611004": "json序列化失败", + "5611005": "数据库操作失败", + "5611007": "信令中携带的租户信息不存在", + "5611008": "信令中携带的用户信息不存在", + "5611009": "cmd_name错误", + "5611010": "sap不存在", + "5611011": "sap未注册", + "5611012": "sap不存在call模块", + "5611014": "未知错误", + "5612001": "请求缺少必要字段", + "5612002": "多话权组不支持群组呼叫", + "5613001": "动态组创建失败", + "5613002": "动态组删除失败", + "5613003": "动态组更新失败", + "5613004": "动态组添加成员失败", + "5613005": "动态组删除成员失败", + "5613101": "系统派接组创建失败", + "5613102": "系统派接组删除失败", + "5613103": "系统派接组更新失败", + "5613104": "系统派接组添加成员失败", + "5613105": "系统派接组删除成员失败", + "5613201": "语音业务监听失败", + "5613202": "视频业务监听失败", + "5613203": "数据业务监听失败", + "5613301": "遥晕失败", + "5613302": "复活失败", + "5613303": "遥毙失败", + "5614001": "不可抢占话权", + "5614002": "系统内部话权错误", + "5614003": "只有一个参与方", + "5614004": "话权被回收后未到申请时间", + "5614005": "只能接收媒体", + "5614006": "无可用资源", + "5614007": "话权队列满", + "5614255": "其他原因", + "5615001": "坐席发起组呼未找到组秘钥", + "5615002": "坐席发起加密组呼组秘钥过期", + "5615003": "坐席发起加密单呼生成秘钥失败", + "5690065": "通用释放呼叫", + "5690066": "主叫释放呼叫", + "5690067": "核心网强制释放呼叫", + "5690068": "超时释放", + "5690069": "被叫释放呼叫", + "5690070": "呼叫转移导致释放", + "5690071": "呼叫升级导致释放", + "5690100": "系统组呼服务崩溃或者重启释放呼叫", + "5690129": "用户去附着", + "5690130": "用户注销", + "5690131": "调度台强拆", + "5690132": "紧急呼叫打断", + "5690133": "用户被遥晕或遥毙", + "5690134": "静音检测超时", + "5690135": "主叫被抢占", + "5690136": "被叫被抢占", + "5690486": "用户忙", + "5690491": "呼叫被高优先级打断", + "5690500": "系统内部原因释放呼叫", + "5690504": "呼叫超时", + "5693067": "主叫发起的呼叫释放", + "5693068": "核心网强制呼叫释放", + "5693069": "超时释放", + "5693070": "被叫发起的呼叫释放", + "5693071": "呼叫转移导致的释放", + "5694021": "系统强制释放呼叫", + "57100001": "反序列化Json Tlv数据失败", + "57100002": "序列化为Json Tlv数据失败", + "57100003": "获取API失败", + "57100004": "sip未注册", + "57100005": "处理GUAL信令失败", + "57100006": "sap不在线/未登录", + "57100007": "不支持的信令", + "57100008": "CallManager为空", + "57100009": "二进制数据转sip格式失败", + "57100010": "接收sip更新信息失败", + "57200001": "反序列化Json Tlv数据失败", + "57200002": "序列化为Json Tlv数据失败", + "57200003": "获取API失败", + "57200004": "sip未注册", + "57200005": "处理GUAL信令失败", + "57200006": "sap不在线/未登录", + "57200007": "不支持的信令", + "57200008": "CallManager为空", + "57200009": "rtsp server未初始化", + "57200010": "二进制数据转sip格式失败", + "57200011": "接收sip更新信息失败", + "58900001": "找不到websocket链路", + "58900002": "反序列化失败", + "58900003": "序列化失败", + "58900004": "Rpc消息体超过限制", + "58900005": "向优先级队列添加消息失败", + "58900006": "IceGw断链", + "60000001": "创建AudioOfferSDP失败", + "60000002": "创建VideoOfferSDP失败", + "60000003": "未登录", + "600001": "消息解析失败", + "600002": "消息编码失败", + "600003": "sap不存在", + "600004": "内部错误", + "600005": "发送rpc失败", + "600006": "调度号码未登录", + "600007": "未知原因", + "600008": "未知用户", + "600009": "未知组号", + "600010": "用户不在线", + "600011": "用户无权限", + "600012": "用户不可用", + "600013": "用户无响应", + "600014": "被叫忙", + "600015": "被叫不可达", + "600016": "被叫不支持加密", + "600017": "被叫拒绝呼叫", + "600018": "呼叫冲突", + "600019": "呼叫失败", + "600020": "请求的业务不支持", + "600021": "组附属被拒绝", + "600022": "遥晕遥毙失败", + "600023": "动态重组失败", + "600024": "短消息传输失败", + "600025": "消息超出最大数量限制", + "600026": "消息已经在处理中", + "600027": "监听失败", + "600028": "请求消息错误", + "600029": "无效范围", + "600030": "资源限制", + "600031": "无效handle", + "600032": "超时", + "600033": "Dmx挂断呼叫", + "600034": "sap未登录", + "6011001": "rpc反序列化失败", + "6011010": "sap不存在", + "6011011": "sap未注册", + "6011014": "未知错误", + "6200001": "反序列化失败", + "6200002": "序列化失败", + "6200003": "参数错误", + "6200004": "不支持的命令字", + "6200005": "接入点不存在", + "6200006": "接入点离线", + "6200007": "接入点不存在呼叫模块", + "6200008": "接入点不存在控制模块", + "6200009": "接入点初始化失败", + "6200010": "已配置网闸但未向sipgw注册", + "6200011": "构造sip消息失败", + "6200012": "解析sdp失败", + "6200013": "sdp缺少视频参数", + "6200014": "sip缺少sdp", + "6200015": "会话状态错误", + "6200016": "不存在会话", + "6200017": "发送sip到后置失败", + "6200018": "发送rpc到后置失败", + "6200019": "发送sip到前置失败", + "6200020": "发送rpc到前置失败", + "6200021": "发送rpc到gual失败", + "6200022": "发送sip到系统失败", + "6200023": "错误的sip消息", + "6200024": "不支持的sip方法", + "6200025": "强制类型转换失败", + "6200026": "被叫不存在", + "6200027": "获取被叫媒体uri失败", + "6200028": "申请媒体失败", + "6200029": "更新媒体失败", + "6200030": "前置网关返回错误", + "6200031": "系统主动挂断", + "6200032": "系统返回错误", + "6200033": "设备不存在", + "6200034": "RPC返回错误", + "6200035": "未定义错误", + "6900001": "消息解析失败", + "6900002": "消息编码失败", + "6900003": "sap不存在", + "6900004": "内部错误", + "6900005": "发送rpc失败", + "6900006": "调度号码未登录", + "6900007": "呼叫冲突", + "6900008": "发送tdp消息失败", + "6901000": "未知错误", + "6901001": "用户请求挂断呼叫", + "6901002": "被叫忙", + "6901003": "被叫不可达", + "6901004": "被叫不支持加密", + "6901005": "拥堵中", + "6901006": "通道不允许", + "6901007": "通道不兼容", + "6901008": "请求服务不可用", + "6901009": "预占优先导致呼叫挂断", + "6901010": "无效呼叫标识", + "6901011": "被叫拒绝呼叫", + "6901012": "没有空闲的CC实体", + "6901013": "呼叫超时", + "6901014": "SwMI请求挂断呼叫", + "6901015": "呼叫未确认", + "6901016": "未知的tetra标识", + "6901017": "SS断开呼叫", + "6901018": "未知外部用户标识", + "6901019": "其他用户的呼叫恢复失败", + "6901020": "被叫需要加密", + "6901021": "当前呼叫建立不被支持", + "6901022": "被叫方与主叫方在同一DM-GATE下", + "6901023": "非呼叫所有者请求断开连接", + "6901032": "重复请求", + "6901033": "呼叫超时", + "6901034": "SBS错误", + "6901035": "呼叫处理中", + "6901036": "呼叫排队超时", + "6901037": "呼叫排队超时", + "6901038": "呼叫排队超时", + "6901039": "呼叫排队超时", + "6901040": "无效的被叫SSI", + "6901041": "呼叫类型不支持", + "6901042": "无效的主叫SSI", + "6901043": "呼叫类型不支持", + "6901044": "优先级导致呼叫挂断", + "6901045": "组呼叫不属于被叫群组", + "6901046": "转移不支持", + "6901047": "呼叫无法恢复", + "6901048": "呼叫挂断", + "6901049": "呼叫挂断", + "6901050": "呼叫未被应答", + "6901051": "被叫不在VPN范围内", + "6901052": "服务暂时不可用", + "6901054": "空组", + "6901055": "SBS链路丢失", + "6901056": "被叫未注册", + "6901057": "被叫不可达", + "6901058": "MS漫游出覆盖范围导致呼叫恢复失败", + "6901059": "没有资源导致呼叫恢复失败", + "6901115": "呼叫未按照预期建立", + "6901116": "呼叫断开未被响应", + "6902004": "短消息转发到外部网络", + "6902005": "短信息已转发并被阻止", + "6902006": "短消息已被接收", + "6902032": "拥塞导致短消息已被存储", + "6902033": "短消息已被存储", + "6902034": "目的不可达且短消息已被存储", + "6902054": "空组", + "6902064": "网络过载", + "6902065": "BS上的服务永久不可用", + "6902066": "BS上的服务暂时不可用", + "6902067": "SDS未授权", + "6902068": "SDS未授权", + "6902069": "未知目的网关或服务中心地址", + "6902070": "未知地址", + "6902071": "组地址错误", + "6902072": "消息超时未被接收", + "6902073": "消息超时未被确认", + "6902074": "传输错误", + "6902075": "目标未注册", + "6902076": "目标队列已满", + "6902077": "消息太长", + "6902080": "协议不支持", + "6902081": "消息编码方式不支持", + "6902083": "目标不接受SDS消息", + "6902084": "消息太长", + "6902086": "目标地址被禁止", + "6902087": "无法路由到外部网络", + "6902088": "未知外部用户号码", + "6902090": "目标不可达", + "6902093": "消息被丢弃", + "6902099": "No pending messages", + "6902128": "格式错误", + "6902129": "一般错误", + "6902130": "无效的被叫SSI", + "6902259": "用户数据长度错误", + "6903000": "请求失败", + "6903003": "用户未授权", + "6903004": "无效的组标识", + "6903005": "不支持的组类型", + "6903006": "组数量超出限制", + "6903007": "信息不足", + "6904000": "请求失败", + "6904003": "用户未授权", + "6904004": "无效的组标识", + "6904007": "信息不足", + "6905000": "请求失败", + "6905003": "用户未授权", + "6905004": "无效的组标识", + "6905015": "不允许删除静态组", + "6905016": "请求失败", + "6905017": "组不为空", + "6906000": "请求失败", + "6906002": "ISSI不可达", + "6906003": "用户未授权", + "6906004": "用户标识无效", + "6906005": "请求类型不支持", + "6906006": "没有成员", + "6906007": "服务暂时不可用", + "7003": "Sap不在线", + "7200603": "拒绝", + "7500404": "sap不在线", + "7500603": "拒绝", + "7700001": "获取传真访问令牌失败", + "7700002": "验证传真账号失败", + "7700003": "传真账号不存在或者账号密码错误", + "7700004": "访问令牌无效", + "7700005": "没有管理员权限", + "7700006": "添加传真账号失败", + "7700007": "更新传真账号失败", + "7700008": "删除传真账号失败", + "7700009": "获取传真账号失败", + "7700010": "添加传真联系人失败", + "7700011": "更新传真联系人失败", + "7700012": "删除传真联系人失败", + "7700013": "获取传真联系人列表失败", + "7700014": "获取传真发送列表失败", + "7700015": "获取收件列表失败", + "7700016": "设置传真已读失败", + "7700017": "发送传真失败", + "7700018": "没有传真发送权限", + "7700019": "传真不存在", + "7700020": "操作不允许", + "7700021": "发送超时", + "7700022": "不能重复添加", + "8200001": "消息解析失败", + "8200002": "消息编码失败", + "8200003": "sap不存在", + "8200004": "sap离线", + "8200005": "内部错误", + "8200006": "不支持的命令", + "8200007": "发送rpc失败", + "8200008": "调度号码未登录", + "8200009": "呼叫冲突", + "8200010": "发送tdp消息失败", + "8200011": "未知错误", + "8200012": "用户请求挂断呼叫", + "8200013": "被叫忙", + "8200014": "被叫不可达", + "8200015": "被叫不支持加密", + "8200016": "拥堵中", + "8200017": "通道不允许", + "8200018": "通道不兼容", + "8200019": "请求服务不可用", + "8200020": "预占优先导致呼叫挂断", + "8200021": "无效呼叫标识", + "8200022": "被叫拒绝呼叫", + "8200023": "没有空闲的CC实体", + "8200024": "呼叫超时", + "8200025": "SwMI请求挂断呼叫", + "8200026": "呼叫未确认", + "8200027": "未知的tetra标识", + "8200028": "SS断开呼叫", + "8200029": "未知外部用户标识", + "8200030": "其他用户的呼叫恢复失败", + "8200031": "被叫需要加密", + "8200032": "当前呼叫建立不被支持", + "8200033": "被叫方与主叫方在同一DM-GATE下", + "8200034": "非呼叫所有者请求断开连接", + "8200035": "重复请求", + "8200036": "呼叫超时", + "8200037": "SBS错误", + "8200038": "呼叫处理中", + "8200039": "呼叫排队超时", + "8200040": "呼叫排队超时", + "8200041": "呼叫排队超时", + "8200042": "呼叫排队超时", + "8200043": "无效的被叫SSI", + "8200044": "呼叫类型不支持", + "8200045": "无效的主叫SSI", + "8200046": "呼叫类型不支持", + "8200047": "优先级导致呼叫挂断", + "8200048": "组呼叫不属于被叫群组", + "8200049": "转移不支持", + "8200050": "呼叫无法恢复", + "8200051": "呼叫挂断", + "8200052": "呼叫挂断", + "8200053": "呼叫未被应答", + "8200054": "被叫不在VPN范围内", + "8200055": "服务暂时不可用", + "8200056": "空组", + "8200057": "SBS链路丢失", + "8200058": "被叫未注册", + "8200059": "被叫不可达", + "8200060": "MS漫游出覆盖范围导致呼叫恢复失败", + "8200061": "没有资源导致呼叫恢复失败", + "8200062": "呼叫未按照预期建立", + "8200063": "呼叫断开未被响应", + "8200064": "短消息转发到外部网络", + "8200065": "短信息已转发并被阻止", + "8200066": "短消息已被接收", + "8200067": "拥塞导致短消息已被存储", + "8200068": "短消息已被存储", + "8200069": "目的不可达且短消息已被存储", + "8200070": "空组", + "8200071": "网络过载", + "8200072": "BS上的服务永久不可用", + "8200073": "BS上的服务暂时不可用", + "8200074": "SDS未授权", + "8200075": "SDS未授权", + "8200076": "未知目的网关或服务中心地址", + "8200077": "未知地址", + "8200078": "组地址错误", + "8200079": "消息超时未被接收", + "8200080": "消息超时未被确认", + "8200081": "传输错误", + "8200082": "目标未注册", + "8200083": "目标队列已满", + "8200084": "消息太长", + "8200085": "协议不支持", + "8200086": "消息编码方式不支持", + "8200087": "目标不接受SDS消息", + "8200088": "消息太长", + "8200089": "目标地址被禁止", + "8200090": "无法路由到外部网络", + "8200091": "未知外部用户号码", + "8200092": "目标不可达", + "8200093": "消息被丢弃", + "8200094": "No pending messages", + "8200095": "格式错误", + "8200096": "一般错误", + "8200097": "无效的被叫SSI", + "8200098": "用户数据长度错误", + "8200099": "请求失败", + "8200100": "用户未授权", + "8200101": "无效的组标识", + "8200102": "不支持的组类型", + "8200103": "组数量超出限制", + "8200104": "信息不足", + "8200105": "请求失败", + "8200106": "用户未授权", + "8200107": "无效的组标识", + "8200108": "信息不足", + "8200109": "请求失败", + "8200110": "用户未授权", + "8200111": "无效的组标识", + "8200112": "不允许删除静态组", + "8200113": "请求失败", + "8200114": "组不为空", + "8200115": "请求失败", + "8200116": "ISSI不可达", + "8200117": "用户未授权", + "8200118": "用户标识无效", + "8200119": "请求类型不支持", + "8200120": "没有成员", + "8200121": "服务暂时不可用", + "8400000": "接受", + "8400001": "部分接受", + "8400002": "通用拒绝", + "8400003": "被叫拒绝", + "8400004": "集群核心网拒绝", + "8400005": "集群核心网发起的注销", + "8400064": "保留", + "8400065": "通用呼叫释放", + "8400066": "主叫发起的呼叫释放", + "8400067": "集群核心网强制呼叫释放", + "8400068": "超时释放", + "8400069": "被叫发起的呼叫释放", + "8400070": "调度台发起的取消视频推送", + "8400071": "集群核心网发起的取消视频推送", + "84000752": "未授权系统,无法分配服务接入点", + "84000753": "有授权系统,找不到在线服务接入点", + "84000754": "调度员授权的服务接入点不在线", + "84001000": "rpc tlv消息解析/反序列化失败", + "84001001": "rpc tlv消息编码/序列化失败", + "84001002": "json反序列化失败", + "84001003": "json序列化失败", + "84001004": "数据库操作失败", + "84001005": "redis操作失败", + "84001006": "信令中携带的租户信息不存在", + "84001007": "信令中携带的用户信息不存在", + "84001008": "cmd_name填写错误", + "84001009": "sap不存在", + "84001010": "sap未注册", + "84001011": "此sap不存在call 模块", + "84001012": "pucid错误", + "84001013": "未知错误", + "8400128": "被叫不支持加密呼叫", + "8400129": "通用话权释放", + "8400130": "讲话者发起的话权释放", + "8400131": "集群核心网强制话权释放", + "8400132": "超时发起的话权释放", + "8400192": "动态重组不可达", + "8400256": "秘钥版本未启用", + "8400257": "无对应的秘钥版本", + "8400752": "未授权系统,无法分配服务接入点", + "8400753": "有授权系统,找不到在线服务接入点", + "8400754": "调度员授权的服务接入点不在线", + "8400756": "调度员授权的服务接入点不在线", + "8401000": "rpc tlv消息解析/反序列化失败", + "8401001": "rpc tlv消息编码/序列化失败", + "8401002": "json反序列化失败", + "8401003": "json序列化失败", + "8401004": "数据库操作失败", + "8401005": "redis操作失败", + "8401006": "信令中携带的租户信息不存在", + "8401007": "信令中携带的用户信息不存在", + "8401008": "cmd_name填写错误", + "8401009": "sap不存在", + "8401010": "sap未注册", + "8401011": "此sap不存在call 模块", + "8401012": "pucid错误", + "8401013": "未知错误", + "8410000": "挂断", + "84100403": "POC服务器拒绝执行", + "84100404": "被叫不在线", + "84100481": "业务不存在", + "84100486": "呼叫遇忙", + "84100487": "呼叫请求终止", + "84100488": "特定资源不能接受", + "84100500": "POC服务器内部错误", + "84100603": "被叫拒绝", + "8410403": "POC服务器拒绝执行", + "8410404": "被叫不在线", + "8410408": "请求超时", + "8410480": "该终端不在线", + "8410481": "业务不存在", + "8410486": "呼叫遇忙", + "8410487": "呼叫请求终止", + "8410488": "特定资源不能接受", + "8410500": "POC服务器内部错误", + "8410603": "被叫拒绝", + "8410701": "硬加密不允许视频呼叫", + "8410702": "POC不允许视频加密呼叫", + "84200500": "添加动态组失败,请确认poc有可用的动态组", + "8420500": "添加动态组失败,请确认poc有可用的动态组", + "8500001": "tlv消息解析/反序列化失败", + "8500002": "tlv消息编码/序列化失败", + "8500003": "找不到呼叫会话信息", + "8500004": "未找到Sap", + "8500005": "未注册sipgw", + "8500006": "协议名不匹配", + "8500007": "未知错误", + "8500008": "摄像头未在sap上注册", + "8500009": "调度无系统权限", + "8600001": "未知错误", + "8600002": "未知用户", + "8600003": "未知组号", + "8600004": "用户不在线", + "8600005": "用户无权限", + "8600006": "用户不可用", + "8600007": "用户无响应", + "8600008": "被叫忙", + "8600009": "被叫不可达", + "8600010": "被叫不支持加密", + "8600011": "被叫拒绝呼叫", + "8600012": "呼叫失败", + "8600013": "请求的业务不支持", + "8600014": "组附属被拒绝", + "8600015": "遥晕遥毙失败", + "8600016": "动态重组失败", + "8800001": "未知错误", + "8800002": "未知用户", + "8800003": "未知组号", + "8800004": "用户不在线", + "8800005": "用户无权限", + "8800006": "用户不可用", + "8800007": "用户无响应", + "8800008": "被叫忙", + "8800009": "被叫不可达", + "8800010": "被叫不支持加密", + "8800011": "被叫拒绝呼叫", + "8800012": "呼叫失败", + "8800013": "请求的业务不支持", + "8800014": "组附属被拒绝", + "8800015": "遥晕遥毙失败", + "8800016": "动态重组失败", + "9000000": "接受", + "9000001": "部分接受", + "9000002": "通用拒绝", + "9000003": "被叫拒绝", + "9000004": "集群核心网拒绝", + "9000005": "集群核心网发起的注销", + "900001": "未分配(未分配)编号", + "900002": "没有到指定公交网络的路线", + "900003": "没有到达目的地的路线", + "900004": "发送特殊信息音", + "900005": "拨错的中继线前缀", + "900006": "不可接受的信道", + "9000064": "保留", + "9000065": "通用呼叫释放", + "9000066": "主叫发起的呼叫释放", + "9000067": "集群核心网强制呼叫释放", + "9000068": "超时释放", + "9000069": "被叫发起的呼叫释放", + "900007": "呼叫被授予并在既定渠道中传递", + "9000070": "调度台发起的取消视频推送", + "9000071": "集群核心网发起的取消视频推送", + "900008": "优先权", + "900009": "优先权-保留用于再利用的电路", + "9000128": "被叫不支持加密呼叫", + "9000129": "通用话权释放", + "9000130": "讲话者发起的话权释放", + "9000131": "集群核心网强制话权释放", + "9000132": "超时发起的话权释放", + "900016": "正常呼叫清除", + "900017": "用户正忙", + "900018": "没有用户响应", + "900019": "用户无应答(用户提醒)", + "9000192": "动态重组不可达", + "900020": "订阅者缺席", + "900021": "呼叫被拒绝", + "900022": "编号已更改", + "900023": "重定向到新目标", + "900025": "Exchange路由错误", + "9000256": "秘钥版本未启用", + "9000257": "无对应的秘钥版本", + "900026": "非选定用户清除", + "900027": "目的地故障", + "900028": "数字格式无效(地址不完整)", + "900029": "设施被拒绝", + "900030": "对状态查询的响应", + "900031": "正常,未指定", + "900034": "无电路/通道可用", + "900038": "网络脱离转发器", + "900039": "永久框架模式连接停止运行", + "900040": "永久框架模式连接运行", + "900041": "暂时性故障", + "900042": "交换设备拥塞", + "900043": "已丢弃访问信息", + "900044": "请求的电路/信道不可用", + "900046": "优先级呼叫被阻止", + "900047": "资源不可用,未指定", + "900049": "服务质量不可用", + "900050": "未预订所请求的设施", + "900053": "CUG内禁止传出呼叫", + "900055": "CUG内禁止来电", + "900057": "承载能力未认可", + "900058": "承载能力目前不可用", + "900062": "指定的传出访问信息和子脚本类不一致", + "900063": "服务或选项不可用,未指定", + "900065": "承载能力未实现", + "900066": "通道类型未实现", + "900069": "请求的设施未实施", + "900070": "只有受限的数字信息承载能力可用", + "9000752": "未授权系统,无法分配服务接入点", + "9000753": "有授权系统,找不到在线服务接入点", + "9000754": "调度员授权的服务接入点不在线", + "900079": "服务或选项未实现,未指定", + "900081": "调用引用值无效", + "900082": "已识别的频道不存在", + "900083": "挂起的呼叫存在,但此呼叫标识不存在", + "900084": "正在使用呼叫标识", + "900085": "没有暂停呼叫", + "900086": "具有所请求身份的呼叫已被清除", + "900087": "用户不是CUG成员", + "900088": "目标不兼容", + "900090": "不存在CUG", + "900091": "运输网络选择无效", + "900095": "无效消息,未指定", + "900096": "缺少强制性信息元素", + "900097": "消息类型不存在", + "900098": "错误的消息", + "900099": "参数不存在或未实现", + "900100": "内容无效", + "9001000": "rpc tlv消息解析/反序列化失败", + "9001001": "rpc tlv消息编码/序列化失败", + "9001002": "json反序列化失败", + "9001003": "json序列化失败", + "9001004": "数据库操作失败", + "9001005": "redis操作失败", + "9001006": "信令中携带的租户信息不存在", + "9001007": "信令中携带的用户信息不存在", + "9001008": "cmd_name填写错误", + "9001009": "sap不存在", + "900101": "消息与呼叫状态不兼容", + "9001010": "sap未注册", + "9001011": "此sap不存在call 模块", + "9001012": "pucid错误", + "9001013": "未知错误", + "900102": "定时器超时的恢复", + "900103": "参数不存在或未实现", + "900111": "协议错误", + "900127": "互通,未指定", + "900487": "发起人取消", + "900500": "崩溃", + "900501": "系统停机", + "900502": "非法响应", + "900503": "管理员请求", + "900600": "盲传输", + "900601": "有人陪伴的转移", + "900602": "分配超时", + "900603": "callee已经被联系上,但是不能或不想加入call", + "900604": "媒体超时", + "900605": "不被接受", + "9010000": "挂断", + "9010403": "POC服务器拒绝执行", + "9010404": "被叫不在线", + "9010480": "该终端不在线", + "9010481": "业务不存在", + "9010486": "呼叫遇忙", + "9010487": "呼叫请求终止", + "9010488": "特定资源不能接受", + "9010500": "POC服务器内部错误", + "9010603": "被叫拒绝", + "9010701": "硬加密不允许视频呼叫", + "9020500": "添加动态组失败,请确认poc有可用的动态组", + "200102": "遥晕失败", + "200103": "遥醒失败", + "52400066": "虚拟账号,不允许登录", + "52400067": "踢出虚拟账号", + "7500700": "信道繁忙", + "08410000+702": "POC不允许视频加密呼叫", + "8410462": "POC服务器拒绝执行", + "53800018": "话权空闲定时器超时释放", + "53800019": "最大呼叫时长定时器超时释放呼叫", + "53800020": "话权服务异常重启,释放呼叫", + "52400044": "从Redis获取License信息失败", + "52400055": "超过可登录的授权数", + "52400068": "登录客户端登陆类型错误", + "52400069": "License无效", + "7500701": "呼叫被打断", + "2200001": "XPT请求命令错误", + "2200002": "XPT解析信令出错", + "2200003": "XPT Sap状态错误", + "2200004": "XPT没有找到对应的Sap", + "2200005": "XPT用户验证错误", + "2200006": "XPT没有找到设备或设备没在线", + "2200007": "XPT操作缓存错误", + "2200101": "XPT监听错误", + "2200202": "XPT呼叫繁忙", + "2200203": "XPT呼叫类型错误", + "2200204": "XPT呼叫超时", + "2200205": "XPT呼叫状态错误", + "2200206": "XPT呼叫结束", + "2200207": "XPT呼叫监听失败", + "2200208": "XPT呼叫话权申请错误", + "2200209": "XPT呼叫请求错误", + "2200210": "XPT信道类型错误", + "2200211": "XPT没有找到另一个时隙", + "2200212": "XPT创建媒体失败", + "2200301": "XPT短信错误", + "2200302": "XPT短信参数错误", + "2200303": "XPT短信信道繁忙", + "2200304": "XPT短信只读错误", + "2200305": "XPT短信低电量", + "2200306": "XPT短信解锁错误", + "2200307": "XPT短信没有回执", + "2200308": "XPT短信唤醒错误", + "2200309": "XPT短信内容错误", + "2200310": "XPT短信写拒绝错误", + "2200311": "XPT短信中断", + "2200401": "XPT GPS错误", + "2200501": "XPT RRS错误", + "2200601": "XPT紧急告警错误", + "2200701": "XPT信道错误", + "2200702": "XPT摇晕失败", + "2200703": "XPT摇醒失败", + "2200801": "XPT系统异常", + "2200802": "信道繁忙", + "2200803": "被叫繁忙", + "2200804": "相同呼叫,禁止下发", + "2200805": "组呼列表非法 ", + "2200806": "目标ID非法", + "2200807": "禁止发射", + "2200808": "数据中转台禁止下发", + "2200809": "寻呼无应答", + "2200810": "网络异常", + "2200811": "握手碰撞", + "54002031": "缺少必要字段", + "54002032": "模板不合规输入数据错误", + "52700011": "告警已取消或者已处理,请忽略", + "7500702": "系统不支持强拆", + "8420501": "非文本短信不支持加密", + "5600406": "被叫不支持该业务", + "52400070": "该用户被禁用", + "54100018": "网关重启挂断呼叫", + "52400071": "系统异常踢出调度", + "53300867": "媒体RPC调用失败", + "53300868": "媒体TCP调用失败", + "53300869": "媒体心跳RPC失败挂断", + "53300870": "媒体流控操作失败", + "53300871": "其他单独上拉清理挂断", + "53300865": "媒体webrtc建链失败挂断", + "53300866": "媒体IPC解析失败挂断", + "52400072": "非本级坐席不能登陆", + "53100006": "JSON消息解析失败", + "53100007": "消息发送失败", + "53100008": "GIS上拉失败", + "8420400": "发送多媒体短信失败", + "201010": "终端不在线", + "53500101": "获取会议信息失败", + "53500102": "获取会议成员失败", + "53500103": "创建源呼叫腿失败", + "53500104": "结束会议挂断呼叫", + "53500105": "三方挂断呼叫", + "53500106": "删除会议成员挂断", + "53500107": "未到会议时间", + "53500108": "删除会议挂断", + "53500109": "无主席挂断呼叫", + "53500110": "并入会议失败挂断", + "53500111": "成员无流超时挂断", + "53500112": "成员添加失败挂断", + "53500113": "非成员会议锁定禁止入会", + "53500114": "调度员离线挂断", + "53500115": "会控创建媒体失败", + "53500116": "会控更新媒体失败", + "53500117": "会控媒体RPC调用失败", + "53500118": "成员并入冲突挂断", + "53500119": "拨号入会添加成员失败", + "53500201": "设置麦克风状态失败", + "53500202": "设置摄像头状态失败", + "53500203": "普通成员无法禁言操作", + "53500204": "半双工讲话中无法解禁言其他人", + "53500205": "设置禁言操作失败", + "53500206": "普通成员无法全部禁言操作", + "53500207": "设置全部禁言操作失败", + "53500208": "普通成员无法静音操作", + "53500209": "设置静音操作失败", + "53500210": "普通成员无法指定成员发言", + "53500211": "半双工讲话中无法指定其他人发言", + "53500212": "指定成员发言失败", + "53500213": "普通成员无法取消成员发言", + "53500214": "取消成员发言失败", + "53500215": "普通成员无法设置布局", + "53500216": "设置当前布局失败", + "53500217": "普通成员无法设置当前页", + "53500218": "设置当前页失败", + "53500219": "普通成员无法拖动布局", + "53500220": "设置布局拖动失败", + "53500221": "普通成员无法设置轮询", + "53500222": "设置布局轮询失败", + "53500223": "其他人屏幕共享中", + "53500224": "屏幕共享操作失败", + "53500225": "普通成员无法结束会议", + "53500226": "重复结束会议", + "53500227": "取消非指定发言成员无效", + "53500228": "指定成员媒体流失败", + "53500229": "普通成员无法指定媒体流", + "53500230": "三方会控不支持指定媒体流", + "53500301": "rpc头反序列化失败", + "53500302": "rpc头序列化失败", + "53500303": "rpc序列化失败", + "53500304": "发消息给GUAL失败", + "53500305": "发消息给DUAL失败", + "53500306": "发消息给SDS失败", + "53500307": "操作会议表失败", + "53500308": "操作会议成员表失败", + "53500309": "操作会议redis失败", + "53500310": "操作会议成员redis失败", + "53500311": "锁操作失败", + "53500312": "未找到会议", + "53500313": "未找到会议成员", + "53500314": "会议进行中", + "53500315": "会议已取消", + "53500316": "会议已结束", + "53500317": "即时会议不能修改", + "53500318": "不是创建者,不能修改会议", + "53500319": "不是创建者,不能取消会议", + "53500320": "获取调度账号失败", + "53500321": "会议成员为空", + "53500322": "会议号码为空", + "53500323": "未找到操作者", + "53500324": "会议未开始", + "53500325": "会议已锁定", + "53500326": "普通成员不能设置", + "53500327": "cmd_name错误", + "53500328": "三方会议已创建,不能修改", + "53500329": "不能修改创建者角色", + "53500330": "未找到会议布局", + "53500331": "设置会议布局失败", + "53500332": "会议主题不能为空", + "53500333": "创建者不能被删除", + "53500334": "添加三方成员失败", + "53500335": "普通成员不能删除成员", + "53500336": "三方会议未到会议提醒时间不能入会", + "53500337": "会议状态不是进行中,不能允许成员举手", + "53500338": "成员未举手,不能允许和拒绝操作", + "53500339": "有成员正在讲话,请稍后再试", + "53500340": "成员超出最大个数", + "53500341": "三方会控未就绪,请稍后再试", + "52300020": "文件不存在", + "52400073": "账号被锁定", + "8422112": "被叫无权限", + "8411035": "被叫无响应", + "8420403": "被叫拒绝", + "8411098": "poc系统无流挂断", + "8415037": "主控系统拒绝", + "8411128": "被叫不支持加密", + "8800017": "不支持的操作", + "6300010": "不支持该功能", + "6000001": "发送给前置失败", + "6000002": "发送给GUAL失败", + "6000003": "构造sip消息失败", + "6000005": "参数错误", + "6000006": "呼叫会话已存在", + "6000007": "呼叫会话不存在", + "6000008": "呼叫会话状态错误", + "6000009": "不支持的命令字", + "6011000": "rpc序列化失败", + "6011002": "未知参数", + "6011012": "网关类型错误", + "6011013": "数据同步错误", + "6011015": "会控http请求错误 ", + "6011016": "puc会议不存在", + "6011017": "puc设备不存在", + "6011018": "puc会议已存在", + "6011019": "会议不存在", + "6011020": "网关db错误", + "6011021": "设备不存在", + "6011022": "会议用户id无效", + "6011023": "亿联组织不存在", + "6011024": "亿联终端号已存在", + "6011025": "被邀请第三方成员不在线", + "6011026": "被邀请第三方成员拒接", + "6011027": "被邀请第三方成员未知错误", + "8410258": "企业没开启加密配置", + "101010": "话权拒绝", + "101011": "DMR3DFSI不支持该功能", + "2101010": "EM4不支持该功能", + "9300009": "因设备下线而挂断", + "9300008": "实时预览失败", + "9300007": "无摄像头或不支持的视频编码", + "9300006": "设备未登录", + "9300005": "找不到API接口", + "202011": "当前服务接入点不支持该功能", + "8410704": "不支持上拉过程中对讲", + "8410703": "上拉对讲业务不存在", + "8420502": "创建动态组失败,POC动态组名称长度超过32个字节", + "600035": "不支持组成员查询", + "6000004": "解析sip sdp失败", + "6011028": "被叫号码不是IP", + "6000100": "未知错误", + "6000101": "无效消息", + "6000102": "网络错误", + "6000103": "无路由", + "6000104": "不存在此用户", + "6000105": "带宽不足", + "6000106": "被叫用户不存在", + "6000107": "主叫用户不存在", + "6000108": "网守无可用资源", + "6000109": "网守不可达", + "6000110": "无权限,资源不可用", + "6000111": "缺失通用媒体能力", + "6000112": "重定向远端", + "6000113": "本端重定向", + "6000114": "远端释放", + "6000115": "本端释放", + "6000116": "被叫端忙", + "6000117": "本端忙", + "6000118": "本端无资源", + "6000119": "远端未回应", + "6000120": "本端未回应", + "6000121": "远端拒绝", + "6000122": "本端拒绝", + "6000123": "远端拥塞", + "6000124": "本端拥塞", + "6000125": "未配置的远端地址", + "6000126": "被叫不可达", + "6000127": "远端处理超时", + "6000128": "无效的呼叫ID", + "6000129": "无效的远端标识", + "6000130": "远端不支持的协议版本", + "6000131": "号码格式错误", + "6000132": "号码缺失", + "6000133": "未被授权的呼叫", + "6000134": "用户名或密码错误", + "6000135": "请求了远端不支持的能力", + "6000136": "远端已过载", + "6000137": "非标准原因值", + "6000138": "协议组件内部错误", + "5200400": "设备通信异常或忙线,请稍后重试", + "9500003": "需要按指定的顺序进行修改", + "9500005": "连接数据库失败", + "9500006": "数据库执行失败", + "9500007": "任务已经发布所以不能删除", + "9500008": "没找到", + "9500009": "插入数据库失败", + "9500010": "从数据库中删除失败", + "9500011": "任务状态不能回滚", + "9500012": "编辑数据失败", + "9500013": "转换JSON失败", + "8800018": "请求被PDT终止", + "8411112": "被叫不支持", + "53400010": "自定义单次任务执行时间已过,无法创建", + "53700020": "呼叫callid重复", + "53400012": "将点名任务保存到数据库失败", + "53400013": "从数据库中删除点名任务失败", + "53400014": "从数据库中更新点名任务失败", + "53400015": "从数据库查询点名任务失败", + "53400016": "无法将指定的成员保存到数据库", + "53400017": "将点名成员更新到数据库失败", + "53400018": "从数据库中删除点名成员失败", + "53400019": "从数据库查询点名任务成员失败", + "53400020": "将点名记录保存到数据库失败", + "53400021": "将点名记录更新到数据库失败", + "53400022": "从数据库查询点名记录失败", + "53400023": "将成员记录保存到数据库失败", + "53400024": "将成员记录更新到数据库失败", + "53400025": "从数据库查询成员记录失败", + "53400026": "统计DB成员失败记录", + "53400027": "将所有成员的状态重置为数据库失败", + "53400028": "将成员序列号修改为DB失败", + "52400101": "登录令牌无效", + "52400102": "访问认证中心超时", + "52400103": "无关联调度账号", + "901010": "sap不存在", + "601005": "无线电基础设施过载", + "601006": "Tetra拒绝呼叫(6)不允许的业务关系", + "601007": "Tetra拒绝呼叫(7)不兼容的业务关系", + "601008": "Tetra拒绝呼叫(8)请求的服务不可用", + "601009": "Tetra拒绝呼叫(9)抢先资源请求", + "601010": "Tetra拒绝呼叫(10)无效CallID", + "601012": "Tetra拒绝呼叫(12)没有呼叫资源", + "601015": "Tetra拒绝呼叫(15)确认的服务未完成", + "601016": "Tetra拒绝呼叫(16)请求的来源有故障", + "601017": "Tetra拒绝呼叫(17)请求的资源未知", + "601018": "Tetra拒绝呼叫(18)请求的资源处于非活动状态", + "601019": "Tetra拒绝呼叫(19)请求的资源正在用于另一个呼叫", + "601020": "Tetra拒绝呼叫(20)连接因小区重选而断开", + "601021": "Tetra拒绝呼叫(21)连接因为重复建立呼叫而断开", + "601023": "Tetra拒绝呼叫(23)未知的Tetra ID", + "601024": "Tetra拒绝呼叫(24)补充服务断开连接", + "601025": "Tetra拒绝呼叫(25)为外部用户指定的编号未知", + "601026": "Tetra拒绝呼叫(26)其他用户恢复呼叫未成功", + "601027": "Tetra拒绝呼叫(27)不正确的通信类型", + "601029": "Tetra拒绝呼叫(29)未知的虚拟目的地", + "601032": "Tetra拒绝呼叫(32)未知的呼叫ID", + "601043": "Tetra拒绝呼叫(43)A-CAPI服务器内部原因挂断", + "601045": "Tetra拒绝呼叫(45)不支持RTP载荷类型", + "601046": "Tetra拒绝呼叫(46)不支持该音频资源类型", + "301011": "当前服务接入点不支持全呼", + "52700013": "短信回执列表为空", + "52700014": "创建聊天组时成员不能为空", + "52700015": "聊天组成员为空", + "52700016": "二人聊天组不能添加成员", + "52700017": "操作聊天组表失败", + "52700018": "操作聊天组成员表失败", + "52700019": "操作聊天组redis失败", + "52700020": "操作聊天组成员redis失败", + "52700021": "操作锁失败", + "52700022": "未找到聊天组", + "52700023": "未找到聊天成员", + "52700024": "未找到聊天组创建者", + "52700025": "未找到操作者", + "52700026": "聊天组已解散", + "52700027": "聊天组成员已退出", + "52700028": "未找到要删除的成员", + "52700029": "添加聊天组成员不能为空", + "52700030": "操作者没有权限", + "52700031": "聊天组已删除", + "52700032": "二人聊天组不能解散", + "52700033": "操作聊天组消息失败", + "52700034": "分页失败", + "53300874": "添加被视频上拉成员失败", + "53300875": "添加被视频上拉成员已存在", + "53100016": "设置设备最小订阅周期不应小于全网最小订阅周期", + "52400076": "没有权限登录该平台", + "9700012": "请求被终止" + }, + "info": { + "item_name": "融合通信平台示例与对接帮助", + "title": "WEBPUC" + } +} \ No newline at end of file diff --git a/src/views/consultation/demo.vue b/src/views/consultation/demo.vue new file mode 100644 index 0000000..aaf8759 --- /dev/null +++ b/src/views/consultation/demo.vue @@ -0,0 +1,359 @@ + + + + + + \ No newline at end of file diff --git a/src/views/consultation/draggerAble.vue b/src/views/consultation/draggerAble.vue new file mode 100644 index 0000000..507ccb4 --- /dev/null +++ b/src/views/consultation/draggerAble.vue @@ -0,0 +1,351 @@ + + + + + diff --git a/src/views/consultation/hooks/axios.ts b/src/views/consultation/hooks/axios.ts new file mode 100644 index 0000000..6b3741e --- /dev/null +++ b/src/views/consultation/hooks/axios.ts @@ -0,0 +1,46 @@ +import axios from 'axios'; +import { Message } from '@arco-design/web-vue'; +import { showErrorMsgDesc } from '@/hooks/error'; + +const $axios = axios.create(); + +$axios.defaults.timeout = 50000; +let options = {}; +$axios.interceptors.request.use( + (config) => { + options = config; + // const { headers } = config; + + return config; + }, + (error) => { + console.info('request error', error); + return Promise.reject(error); + } +); +$axios.interceptors.response.use( + (response) => { + const { result, desc, msg } = response.data; + // @ts-ignore + const { isCatch } = options; + if (isCatch) return response.data; + if (result && result !== 0) { + showErrorMsgDesc(result, desc || msg); + return {}; + } + return response.data; + }, + (error) => { + // eslint-disable-next-line consistent-return + return new Promise((resolve, reject) => { + // @ts-ignore + const { isCatch } = options; + console.info('response error', JSON.stringify(error), isCatch); + if (isCatch) return reject(error); + Message.error(error.message); + resolve(''); + }); + } +); + +export default $axios; diff --git a/src/views/consultation/hooks/callingNotification.js b/src/views/consultation/hooks/callingNotification.js new file mode 100644 index 0000000..8cde535 --- /dev/null +++ b/src/views/consultation/hooks/callingNotification.js @@ -0,0 +1,27 @@ +import { h } from 'vue'; +import { ElNotification} from "element-plus"; +import { IconClose } from "element-plus" +import Content from '@/views/consultation/components/content.vue'; +import Footer from '@/views/consultation/components/footer.vue'; +import { formatShowNameFin } from '@/views/consultation/utils/format-show-name'; + +export default function handleCallingNotification(propsObj) { + const { callInfo, text } = propsObj; + const { calling, answer = 'answer', hangUp = 'hang up' } = text; + ElNotification.info({ + id: callInfo.call_id, + position: 'bottom-left', + closable: true, + closeIconElement: () => { + return h(IconClose); + }, + title: () =>h(Content, { + callInfo, + calling, + getName: formatShowNameFin( callInfo.caller_alias, callInfo.caller_number), + }), + message: () =>h(Footer, { callInfo, answer, hangUp }), + duration: 0, + style: { width: '260px' }, + }); +} diff --git a/src/views/consultation/hooks/error.ts b/src/views/consultation/hooks/error.ts new file mode 100644 index 0000000..4d84858 --- /dev/null +++ b/src/views/consultation/hooks/error.ts @@ -0,0 +1,57 @@ +import { h } from 'vue'; +import { Notification } from '@arco-design/web-vue'; +import { Random } from 'mockjs'; +import { $i18n } from '@/locale'; + +/* + * 使用示例: + * import { showErrorMsgDesc } from '@/hooks/error'; + * showErrorMsgDesc('2101006', 'HBP service run error', '出错了'); + * showErrorMsgDesc('2101006', 'HBP service run error'); + * showErrorMsgDesc('2101006'); + * showErrorMsgDesc('77778888'); + * */ + +export const showErrorMsgDesc = (code = '', desc = '', msg = '') => { + const id = `note_msg_${Random.guid()}`; + const existI18nMsg = $i18n.global.t(`errorCode.${code}`); + Notification.error({ + id, + class: 'notification-center-message', + closable: true, + duration: 15000, + showIcon: true, + style: { + 'width': '500px', + 'padding': '10px 20px', + 'align-items': 'center', + }, + title: () => { + const titTxt = msg || existI18nMsg; + return h('span', [ + h('span', titTxt), + h( + 'a', + { + style: { + 'margin-left': '16px', + 'font-size': '14px', + 'color': '#f53f3f', + }, + onClick: () => { + Notification.error({ + id, + title: titTxt, + content: desc, + }); + }, + }, + desc ? $i18n.global.t('error.code.detail') : '' + ), + ]); + }, + content: () => h('div'), + }); +}; + +export default null; diff --git a/src/views/consultation/hooks/loading.ts b/src/views/consultation/hooks/loading.ts new file mode 100644 index 0000000..a6f2768 --- /dev/null +++ b/src/views/consultation/hooks/loading.ts @@ -0,0 +1,16 @@ +import { ref } from 'vue'; + +export default function useLoading(initValue = false) { + const loading = ref(initValue); + const setLoading = (value: boolean) => { + loading.value = value; + }; + const toggle = () => { + loading.value = !loading.value; + }; + return { + loading, + setLoading, + toggle, + }; +} diff --git a/src/views/consultation/hooks/locale.ts b/src/views/consultation/hooks/locale.ts new file mode 100644 index 0000000..d1d5650 --- /dev/null +++ b/src/views/consultation/hooks/locale.ts @@ -0,0 +1,21 @@ +import { computed } from 'vue'; +import { $i18n, loadLocaleMessages, setI18nLanguage } from '@/locale'; +import { Message } from '@arco-design/web-vue'; + +export default function useLocale() { + const currentLocale = computed(() => { + return $i18n.global.locale; + }); + const changeLocale = (value: string) => { + localStorage.setItem('arco-locale-webPuc', value); + loadLocaleMessages($i18n, value).then(() => { + setI18nLanguage($i18n, value); + + Message.success($i18n.global.t('navbar.action.locale')); + }); + }; + return { + currentLocale, + changeLocale, + }; +} diff --git a/src/views/consultation/hooks/recorder.js b/src/views/consultation/hooks/recorder.js new file mode 100644 index 0000000..397060f --- /dev/null +++ b/src/views/consultation/hooks/recorder.js @@ -0,0 +1,138 @@ +import { ref } from 'vue'; +import { ElMessage } from "element-plus"; +import dayjs from 'dayjs'; + +export default function useRecorder() { + const data = ref([]); + const recording = ref(false) + const paused = ref(false); + let mediaRecorder; + const localMicAudioStream = ref(null); + const audioStream = ref(null); + + // 下载视频 + const download = () => { + const blob = new Blob(data.value, { type: 'video/webm' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + const name = dayjs().format('YYYYMMDDHHmmss'); + a.href = url; + a.download = `video${name}.webm`; + a.click(); + window.URL.revokeObjectURL(url); + data.value = []; + }; + const muteRecorderAudio = (type, isMute) => { + let stream = null; + if (type === 'mic') { + stream = localMicAudioStream.value; + } + if (type === 'audio') { + stream = audioStream.value; + } + if (stream) { + stream.getAudioTracks().forEach((track) => { + track.enabled = !isMute; + }); + } + }; + + // 初始化:创建mediaRecorder对象,获取音视频流,处理混流,定义mediaRecorder相关事件操作 + const init = async (video, audio) => { + let mediaStream = await video.captureStream(); + if (audio) { + const [videoCaptureStream, audioCaptureStream, localMicStream] = + await Promise.all([ + video.captureStream(), + audio.captureStream(), + navigator.mediaDevices.getUserMedia({ audio: true }), + ]); + localMicAudioStream.value = localMicStream; + audioStream.value = audioCaptureStream; + const videoTrack = videoCaptureStream.getVideoTracks()[0]; + /* 音频输入输出混流 */ + const audioContext = new AudioContext(); + if (localMicStream.getAudioTracks().length && audioCaptureStream.getAudioTracks().length) { + const localMicStreamNode = audioContext.createMediaStreamSource(localMicStream); + const audioCaptureStreamNode = audioContext.createMediaStreamSource(audioCaptureStream); + const mixedAudio = audioContext.createMediaStreamDestination(); + localMicStreamNode.connect(mixedAudio); + audioCaptureStreamNode.connect(mixedAudio); + const mixedAudioTrack = mixedAudio.stream.getTracks()[0]; + mediaStream = new MediaStream([mixedAudioTrack, videoTrack]); + } + } + mediaRecorder = await new MediaRecorder(mediaStream, { + mimeType: 'video/webm;codecs=vp8', + }); + + mediaRecorder.ondataavailable = (e) => { + if (e?.data?.size > 0) { + data.value.push(e.data); + } + }; + mediaRecorder.onstart = () => { + startTime = Date.now(); + recording.value = true; + paused.value = false; + ElMessage.success('开始录制'); + }; + mediaRecorder.onstop = () => { + endTime = Date.now(); + recording.value = false; + paused.value = true; + ElMessage.success('结束录制'); + download(); + }; + }; + + // 异常处理 + const validateMedia = (cbName, cb) => { + if (mediaRecorder && mediaRecorder[cbName]) { + cb(); + } else { + ElMessage.warning('录屏失败,未获取到媒体流'); + } + }; + // 开始录制 + const start = () => { + mediaRecorder.start(100); + }; + // 暂停 + const pause = () => { + paused.value = true; + mediaRecorder.pause(); + }; + + // 继续 + const resume = () => { + paused.value = false; + mediaRecorder.resume(); + }; + + // 结束录制 + const stop = () => { + mediaRecorder.stop(); + }; + + // 录制控制 + const handleRecordVideo = async () => { + if (!recording.value) { + validateMedia('start', start); + } else { + validateMedia('stop', stop); + } + }; + return { + init, + start, + pause, + resume, + stop, + download, + handleRecordVideo, + recording, + paused, + muteRecorderAudio, + }; +} diff --git a/src/views/consultation/hooks/static.ts b/src/views/consultation/hooks/static.ts new file mode 100644 index 0000000..1aec31d --- /dev/null +++ b/src/views/consultation/hooks/static.ts @@ -0,0 +1,149 @@ +/* eslint-disable no-bitwise */ + +import { DEVICE_STATE, DEVICE_TYPE } from '@/utils/contants'; + +/* 获取执法记录仪数据 如果以后基础数据变多,可以考虑用pinia在页面加载是进行初始化控制 */ +const rvmTypes = []; + +export default function useStaticData() { + /** + * 获取设备状态值方法(第三版本)以v2逻辑为主,整合v1业务逻辑 + * @param deviceInfo + * @returns + */ + const getDeviceStatusNumberV3 = (deviceInfo): number => { + const { + status, + conference_guid, + number, + device_type, + basedata_id, + latitude, + longitude, + terminal_model, + } = deviceInfo; + + let deviceState = 0; + // console.debug('getDeviceStatusNumberV3--->', deviceInfo); + const number_type = window.lemon.basedata.getNumberType(basedata_id); + /* 会议类型 */ + if (conference_guid) return DEVICE_STATE.DEVICE_STATE_TYPE_CONFERENCE; + /* PSTN电话 */ + if (number_type === DEVICE_STATE.DEVICE_STATE_TYPE_EXTERNAL) + return DEVICE_STATE.DEVICE_STATE_TYPE_EXTERNAL; + + /* 设备类型 */ + if ( + number_type === window.lemon.NUMBER_TYPE.INDIVIDUAL || + number_type === window.lemon.NUMBER_TYPE.ROIP_INDIVIDUAL + ) { + // 判断是否是执法记录仪 + const isRvm = rvmTypes.includes(terminal_model); + // 判断是否是摄像头 + const isCamera = device_type === DEVICE_TYPE.DEVICE_TYPE_CAMERA; + // 设备号码类型 + // 执法记录仪 + if (isRvm) { + deviceState |= DEVICE_STATE.DEVICE_STATE_TYPE_RVM; + } + // 摄像头 + else if (isCamera) { + deviceState |= DEVICE_STATE.DEVICE_STATE_TYPE_CAMERA; + } else { + deviceState |= number_type; + } + + // 设备号码状态(是否遥晕遥毙..) + switch (status?.lock_state) { + case 0: // 遥醒 + deviceState |= DEVICE_STATE.DEVICE_STATE_LOCK_REVICE; + break; + case 1: // 遥晕 + deviceState |= DEVICE_STATE.DEVICE_STATE_LOCK_STUN; + break; + case 3: // 遥毙 + deviceState |= DEVICE_STATE.DEVICE_STATE_LOCK_KILL; + break; + default: + break; + } + /* 在线状态 */ + // 摄像头设备 + if (isCamera) { + if (status?.online === 1) { + // 根据经纬度数据确认是否上报GPS数据 + deviceState |= + latitude !== 0 || longitude !== 0 + ? DEVICE_STATE.DEVICE_STATE_GPS_REPORT_Y + : DEVICE_STATE.DEVICE_STATE_GPS_REPORT_N; + // 上线状态 + deviceState |= DEVICE_STATE.DEVICE_STATE_ONLINE_ALL; + } else { + deviceState |= DEVICE_STATE.DEVICE_STATE_ONLINE_NULL; + } + } + // 多模设备 + else if ( + number_type === DEVICE_STATE.DEVICE_STATE_TYPE_ROIP_GROUP || + number_type === DEVICE_STATE.DEVICE_STATE_TYPE_ROIP_INDIVIDUAL + ) { + // 窄带在线 + if (status.narrowband === window.lemon.ONLINE_STATE.ON) { + deviceState |= DEVICE_STATE.DEVICE_STATE_ONLINE_NARROW; + } + // 宽带在线 + if (status.broadband === window.lemon.ONLINE_STATE.ON) { + deviceState |= DEVICE_STATE.DEVICE_STATE_ONLINE_BROAD; + } + } + // 单模设备 || 执法记录仪 + else if ( + number_type === DEVICE_STATE.DEVICE_STATE_TYPE_INDIVIDUAL || + number_type === DEVICE_STATE.DEVICE_STATE_TYPE_GROUP || + isRvm + ) { + // 单模只要有一个模式在线就可以认为是在线了 + if ( + status?.narrowband === window.lemon.ONLINE_STATE.ON || + status?.broadband === window.lemon.ONLINE_STATE.ON + ) { + deviceState |= DEVICE_STATE.DEVICE_STATE_ONLINE_ALL; + } + } + + // 订阅 + if (deviceInfo.is_subscribe === 1) { + deviceState |= DEVICE_STATE.DEVICE_STATE_SUBSCRIBE_Y; + } + + // console.debug( + // 'getDeviceStatusNumberV3--->', + // number, + // deviceState.toString(2) + // ); + return deviceState; + } + + /* 组类型 */ + if ( + number_type === window.lemon.NUMBER_TYPE.GROUP || + number_type === window.lemon.NUMBER_TYPE.ROIP_GROUP + ) { + // roip组在线图标 + if (number_type === 23) { + return DEVICE_STATE.DEVICE_STATE_TYPE_ROIP_GROUP; + } + // 全呼组类型图标 + if (number_type === 3) { + return DEVICE_STATE.DEVICE_STATE_TYPE_ALL_CALL; + } + // 其他组类型暂时返回默认组图标 + return DEVICE_STATE.DEVICE_STATE_TYPE_GROUP; + } + return deviceState; + }; + + return { + getDeviceStatusNumberV3, + }; +} diff --git a/src/views/consultation/memberMangerModal/components/SearchList.vue b/src/views/consultation/memberMangerModal/components/SearchList.vue new file mode 100644 index 0000000..ca52852 --- /dev/null +++ b/src/views/consultation/memberMangerModal/components/SearchList.vue @@ -0,0 +1,5 @@ + + + diff --git a/src/views/consultation/memberMangerModal/components/UserItem.vue b/src/views/consultation/memberMangerModal/components/UserItem.vue new file mode 100644 index 0000000..1a8de1f --- /dev/null +++ b/src/views/consultation/memberMangerModal/components/UserItem.vue @@ -0,0 +1,390 @@ + + + + + diff --git a/src/views/consultation/memberMangerModal/index.vue b/src/views/consultation/memberMangerModal/index.vue new file mode 100644 index 0000000..72ab089 --- /dev/null +++ b/src/views/consultation/memberMangerModal/index.vue @@ -0,0 +1,834 @@ + + + + + + + diff --git a/src/views/consultation/sdk/baseData.js b/src/views/consultation/sdk/baseData.js new file mode 100644 index 0000000..51ad4a5 --- /dev/null +++ b/src/views/consultation/sdk/baseData.js @@ -0,0 +1,562 @@ + +export default function useBaseDataModule() { + /** + * + * @param param + * @returns + */ + const getSystemOrg = (param) => { + return window.lemon.basedata.fetchSystemOrg(param); + }; + /** + * request devices in special organization + * @param param + * @returns + */ + const getDeviceList = (param)=> { + return window.lemon.basedata.fetchDeviceList(param); + }; + /** + * request common groups in special organization,if key_word is not undefind,search common groups with key_word + * @param param + * @returns + */ + const getGroupList = (param)=> { + return window.lemon.basedata.fetchGroupList(param); + }; + /** + * get all members in static group + */ + const getGroupMembers = (group_basedata_id) => { + return window.lemon.basedata.fetchGroupMember({ + basedata_id: group_basedata_id, + }); + }; + /** + * request all dispatchers + * @param filterSelf if exclude self,default true + * @returns + */ + const getDispatcherList = (filterSelf)=> { + return window.lemon.basedata.fetchDispatcherList(filterSelf); + }; + + /** + * request all cross patch group from server + * @returns + */ + const getCrosspatchList = ()=> { + return window.lemon.basedata.fetchCrosspatch(); + }; + /** + * create crosspatch,member could froms different system + * @param number new crosspatch's number + * @param alias new crosspatch's alias + * @param member_list new crosspatch's mmebers + * @returns + */ + const createCrosspatch = ( + number, + alias, + member_list + ) => { + return window.lemon.basedata.createCrosspatch({ + number, + alias, + member_list, + }); + }; + + /** + * + * @param record crosspatch's info + * @returns + */ + const updateCrosspatch = (record) => { + return window.lemon.basedata.updateCrosspatch(record); + }; + /** + * + * @param guid + * @param enable 1 enbale,0 disenable + */ + const setCrosspatchEnabled = (guid, enable) => { + return window.lemon.basedata.updateCrosspatchActiveStatus({ + guid, + active: enable ? 1 : 0, + }); + }; + /** + * + * @param guid crosspatch's guid + * @returns + */ + const deleteCrosspatch = (guid) => { + return window.lemon.basedata.deleteCrosspatch({ guid }); + }; + /** + * + * @returns + */ + const getDynamicGroupList = ()=> { + return window.lemon.basedata.fetchDynamicGroupList(); + }; + /** + * + * @param param + * @returns + */ + const createDynamicGroup = (param)=> { + return window.lemon.basedata.createDynamicGroup({ + alias: param.alias, + member_list: param.members, + encryption: 1, + }); + }; + /** + * + * @param record + * @returns + */ + const getDynamicGroupMember = (record) => { + // return window.lemon.basedata.fetchDynamicGroupMember(record); + return window.lemon.basedata.fetchDynamicGroupMember({ + guid: record.guid, + number: record.number, + basedata_id: record.basedata_id, + alias: record.alias, + }); + }; + /** + * + * @param basedata_id + * @returns + */ + const isConference = (basedata_id) => { + return window.lemon.basedata.getNumberType(basedata_id); + }; + /** + * remove conference'memnber + * @param conference_guid + * @param member_guid + * @returns + */ + const removeConferenceMember = ( + conference_guid, + member_guid + ) => { + return window.lemon.basedata.removeConferenceMember({ + conference_guid, + member_guid, + }); + }; + /** + * + * @param param + * @returns + */ + const updateDynamicGroup = (param) => { + return window.lemon.basedata.updateDynamicGroup(param); + }; + /** + * @param data + * @param data.guid gorup's guid + * @param data.basedata_id gorup's basedata_id + * @returns + */ + const deleteDynamicGroup = (data) => { + return window.lemon.basedata.deleteDynamicGroup({ + guid: data.guid, + basedata_id: data.basedata_id, + }); + }; + /** + * add member to dynamic group + * @param group_guid + * @param mmeber_guid + * @param member_basedata_id + * @param member_number + * @returns + */ + const addDynamicGroupMember = ( + group_guid, + mmeber_guid, + member_basedata_id, + member_number + ) => { + return window.lemon.basedata.addDynamicGroupMember({ + dgna_guid: group_guid, + target_guid: mmeber_guid, + target_basedata_id: member_basedata_id, + target_number: member_number, + }); + }; + /** + * remove dynamic group's member + * @param group_guid + * @param mmeber_guid guid of member in group,not guid of member object + * @param member_basedata_id + * @returns + */ + const removeDynamicGroupMember = ( + group_guid, + mmeber_guid, + member_basedata_id + ) => { + return window.lemon.basedata.removeDynamicGroupMember({ + guid: group_guid, + member_guid: mmeber_guid, + basedata_id: member_basedata_id, + }); + }; + /** + * create a conference + * @param number conference'number + * @param alias conference'alias + * @param member_list conference'members + */ + const createConference = ( + number, + alias, + member_list + ) => { + return window.lemon.basedata.createConference({ + number, + alias, + member_list, + }); + }; + /** + * update conference info, + * @param record conference object + * @returns + */ + const updateConference = (record) => { + return window.lemon.basedata.updateConference(record); + }; + + /** + * get all member of conference + * @param guid + * @returns + */ + const getConferenceMember = (guid) => { + return window.lemon.basedata.fetchConferenceMember({ guid }); + }; + + /** + * get all ThirdConference + * @returns + */ + const getThirdConference = () => { + return window.lemon.basedata.fetchThirdConference(); + }; + /** + * + * @param number new number + * @param alias + * @param system_id + */ + const createThirdConference = ( + number, + alias, + system_id + ) => { + return window.lemon.basedata.createThirdConference({ + number, + alias, + system_id, + }); + }; + /** + * + * @param record ThirdConference object + * @returns + */ + const updateThirdConference = (record) => { + return window.lemon.basedata.updateThirdConference(record); + }; + + /** + * delete Third Conference + * 删除第三方会议 + * @param guid + * @param basedata_id + * @param number + * @returns + */ + const deleteThirdConference = ( + guid, + basedata_id, + number + ) => { + return window.lemon.basedata.deleteThirdConference({ + guid, + basedata_id, + number, + }); + }; + + /** + * get systemPatch List + * 获取系统派接列表 + * @returns + */ + const getSystemPatchList = () => { + return window.lemon.basedata.fetchSystemPatchList(); + }; + /** + * get systemPatch List + * 获取系统派接列表 + * @returns + */ + const getSystemPatchMember = (record) => { + return window.lemon.basedata.fetchSystemPatchMember({ + syspatch_guid: record.guid, + number: record.number, + basedata_id: record.basedata_id, + alias: record.alias, + }); + }; + + /** + * create system patch + * 创建派接组 + * @param param + * @returns + */ + const createSystemPatch = (param)=> { + return window.lemon.basedata.createSystemPatch({ + alias: param.alias, + member_list: param.members, + encryption: 1, + }); + }; + + /** + * 删除派接组 + * delete SystemPatch + * @param guid + * @param basedata_id + * @param number + * @returns + */ + const deleteSystemPatch = (guid, basedata_id) => { + return window.lemon.basedata.deleteSystemPatch({ + syspatch_guid: guid, + basedata_id, + }); + }; + + /** + * + * @param param + * @returns + */ + const updateSystemPatch = (param) => { + return window.lemon.basedata.updateSystemPatch({ + syspatch_guid: param.guid, + number: param.number, + basedata_id: param.basedata_id, + alias: param.alias, + encryption: param.encryption, + }); + }; + + /** + * add member to system patch + * 系统派接组添加成员 + * @param group_guid + * @param mmeber_guid + * @param member_basedata_id + * @param member_number + * @returns + */ + const addSystemPatchMember = ( + group_guid, + mmeber_guid, + member_basedata_id, + member_number + ) => { + return window.lemon.basedata.addSystemPatchMember({ + syspatch_guid: group_guid, + target_guid: mmeber_guid, + target_basedata_id: member_basedata_id, + target_number: member_number, + }); + }; + /** + * remove system patch member + * 系统派接组移除成员 + * @param group_guid + * @param mmeber_guid guid of member in group,not guid of member object + * @param member_basedata_id + * @returns + */ + const removeSystemPatchMember = ( + group_guid, + mmeber_guid, + member_basedata_id + ) => { + return window.lemon.basedata.removeSystemPatchMember({ + syspatch_guid: group_guid, + member_guid: mmeber_guid, + basedata_id: member_basedata_id, + }); + }; + + // 模糊查询 + const fuzzyQuery = (param = { key_word }) => { + return window.lemon.basedata.fuzzyQuery(param); + }; + + const getOnlineInfo = (org_id) => { + return window.lemon.basedata.queryDeviceOnlineInfo(org_id); + }; + + const addCrosspatchChangeListener = (updateCallBackFn) => { + return window.lemon.basedata.addCrosspatchChangeListener(updateCallBackFn); + }; + + const removeCrosspatchChangeListener = (callbackUpdateCrosspatchGuid) => { + return window.lemon.basedata.removeCrosspatchChangeListener( + callbackUpdateCrosspatchGuid + ); + }; + + const addCrosspatchMemberChangeListener = (onMemberChange) => { + return window.lemon.basedata.addCrosspatchMemberChangeListener( + onMemberChange + ); + }; + + const removeCrosspatchMemberChangeListener = (membercbid) => { + return window.lemon.basedata.removeCrosspatchMemberChangeListener( + membercbid + ); + }; + + const addThirdConferenceChangeListener = (onThirdConferenceChange) => { + return window.lemon.basedata.addThirdConferenceChangeListener( + onThirdConferenceChange + ); + }; + + const removeThirdConferenceChangeListener = (callbackUpdate3rdConfGuid) => { + return window.lemon.basedata.removeThirdConferenceChangeListener( + callbackUpdate3rdConfGuid + ); + }; + const addSystemPatchChangeListener = (onSystemPatchChange) => { + return window.lemon.basedata.addSystemPatchChangeListener( + onSystemPatchChange + ); + }; + + const removeSystemPatchChangeListener = (callbackSystemPatchGuid) => { + return window.lemon.basedata.removeThirdConferenceChangeListener( + callbackSystemPatchGuid + ); + }; + + // 遥晕 + const deviceStun = (record) => { + return window.lemon.basedata.deviceStun({ + basedata_id: record.basedata_id, + device_guid: record.guid, + }); + }; + // 遥醒 + const deviceRevive = (record) => { + return window.lemon.basedata.deviceRevive({ + basedata_id: record.basedata_id, + device_guid: record.guid, + }); + }; + // 遥毙 + const deviceKill = (record) => { + return window.lemon.basedata.deviceKill({ + basedata_id: record.basedata_id, + device_guid: record.guid, + }); + }; + + // PTZ camera + // 云台控制 + const deviceCtl = (record) => { + // start left move + window.lemon.basedata.deviceCtl({ + basedata_id: record.basedata_id, + operate_type: 1, + operate_action: 1, + }); + + // stop left move + setTimeout(() => { + window.lemon.basedata.deviceCtl({ + basedata_id: record.basedata_id, + operate_type: 2, + operate_action: 1, + }); + }, 2000); + }; + + const getPucList = () => { + return window.lemon.basedata.fetchPucList(); + }; + const setBasedataPucId = (basedataPucId) => { + return window.lemon.basedata.setBasedataPucId({ puc_id: basedataPucId }); + }; + + return { + getSystemOrg, + getDeviceList, + getGroupList, + getGroupMembers, + getDispatcherList, + getCrosspatchList, + fuzzyQuery, + getDynamicGroupList, + getDynamicGroupMember, + createDynamicGroup, + updateDynamicGroup, + deleteDynamicGroup, + isConference, + removeConferenceMember, + addDynamicGroupMember, + removeDynamicGroupMember, + createCrosspatch, + updateCrosspatch, + setCrosspatchEnabled, + deleteCrosspatch, + createConference, + updateConference, + getConferenceMember, + getThirdConference, + createThirdConference, + updateThirdConference, + deleteThirdConference, + getOnlineInfo, + addCrosspatchChangeListener, + addCrosspatchMemberChangeListener, + removeCrosspatchChangeListener, + removeCrosspatchMemberChangeListener, + addThirdConferenceChangeListener, + removeThirdConferenceChangeListener, + getSystemPatchList, + getSystemPatchMember, + deleteSystemPatch, + updateSystemPatch, + createSystemPatch, + addSystemPatchMember, + removeSystemPatchMember, + addSystemPatchChangeListener, + removeSystemPatchChangeListener, + deviceStun, + deviceRevive, + deviceKill, + getPucList, + setBasedataPucId, + deviceCtl, + }; +} diff --git a/src/views/consultation/sdk/call.js b/src/views/consultation/sdk/call.js new file mode 100644 index 0000000..021857f --- /dev/null +++ b/src/views/consultation/sdk/call.js @@ -0,0 +1,558 @@ + +import { ElMessage } from "element-plus"; +import mitt from 'mitt'; +import handleCallingNotification from '../hooks/callingNotification'; + +let call_id; +let hangup_event_cb_id; +let force_hangup_event_cb_id; +let answer_ack_cb_id; +let incoming_cb_id; +let floor_grant_cb_id; + +// Whether it is a pushVideoFile call +// 是否为视频推送的呼叫 +let pushing_video = false; +// monitor call list +// 值守呼叫列表 +const monitor_call_list = []; + +const emitter = mitt(); + +export default function useCallModule() { + // we allow only one call exist in demo.but actually,sdk supports more + + /** + * make private vioce call,return nothing,receive result in callback + * This interface has been expanded to support makeGroupVoiceCall、makeDispatcherVoiceCall、makeConferenceVoiceCall、makeCrosspatchVoiceCall + * 这个接口已扩展,除了支持语音单呼外,还支持语音组呼、语音呼叫调度员、语音会议、群组呼叫。 + * @param record who you wanna call + * @returns + */ + const makeVoiceCall = (record ) => { + if (call_id) return; + + window.lemon.call.makeVoiceCall({ basedata_id: record.basedata_id, hook_flag: 0 })?.then((resp) => { + call_id = resp.call_id; + }); + }; + /** + * make private video call,call with vioce and video,return nothing,receive result in callback + * This interface has been expanded to support makeGroupVideoCall、makeDispatcherVideoCall、makeConferenceVideoCall + * 这个接口已扩展,除了支持视频单呼外,还支持视频组呼、视频呼叫调度员、视频会议 + * @param record who you wanna call + * @returns + */ + const makeVideoCall = (record) => { + if (call_id) return; + window.lemon.call.makeVideoCall({ basedata_id: record.basedata_id, video_frame_size: 3 })?.then((resp) => { + call_id = resp.call_id; + }); + }; + const makeGroupVideoCall = (record) => { + if (call_id) return; + window.lemon.call.makeGroupVideoCall({ basedata_id: record.basedata_id, video_frame_size: 3 })?.then((resp) => { + call_id = resp.call_id; + }); + }; + const makeGroupVoiceCall = (record) => { + if (call_id) return; + window.lemon.call.makeGroupVoiceCall({ + basedata_id: record.basedata_id, + })?.then((resp) => { + call_id = resp.call_id; + }); + }; + + const makeCrosspatchVoiceCall = (record) => { + window.lemon.call.makeCrosspatchVoiceCall({ basedata_id: record.basedata_id })?.then((resp) => { + call_id = resp.call_id; + }); + }; + + /** + * 视频上拉 + * make pure video call,only video, no voice + * @param record who you wanna call + * @returns + */ + const pureVideoCall = (record) => { + if (call_id) return; + window.lemon.call.pullVideo({ basedata_id: record.basedata_id, hook_flag: 0 })?.then((resp) => { + call_id = resp.call_id; + }); + }; + /** + * 环境监听 + * @param record + */ + const voiceDetect = (record) => { + window.lemon.call + .makeCall({ + callee_guid: record.basedata_id, + attribute: { + call_type: 0, + call_mode: 0, + duplex_flag: 0, + ambience_flag: 1, + }, + }) + ?.then((resp) => { + call_id = resp.call_id; + }); + }; + + /** + * 环境监视 + * @param record + */ + const videoDetect = (record) => { + window.lemon.call.makeCall({ + callee_guid: record.basedata_id, + attribute: { call_type: 11, call_mode: 2, duplex_flag: 0, ambience_flag: 1 }, + })?.then((resp) => { + call_id = resp.call_id; + }); + }; + /** + * 音频会议 + * @param record + */ + const makeConferenceVoiceCall = (record) => { + window.lemon.call.makeConferenceVoiceCall({ basedata_id: record.basedata_id })?.then((resp) => { + call_id = resp.call_id; + }); + }; + /** + * 音视频会议 + * @param record + */ + const makeConferenceVideoCall = (record) => { + window.lemon.callmakeConferenceVideoCall({basedata_id: record.basedata_id})?.then((resp) => { + call_id = resp.call_id; + }); + }; + + // 广播呼叫 + // Broadcast Call + const makeBroadcastCall = (record) => { + window.lemon.call.makeCall({ callee_guid: record.basedata_id,attribute: { call_type: 3,call_mode: 0,},})?.then((resp) => { + call_id = resp.call_id; + }); + }; + + /** + * hangup call + */ + const hangup = (id) => { + console.log(id,'=====挂断'); + window.lemon.call.hangupCall({ call_id: id || call_id })?.then(() => { + console.log('00000000000=====挂断'); + call_id = undefined; + window.calling_conference = undefined; + }) + .catch((err) => { + console.error('hangup call error,', err); + }); +}; + + /** + * 接听呼叫 + * answer call + */ + const answerCall = () => { + // Notification.remove(call_id); + window.lemon.call.answerCall({ call_id })?.then(() => { + // Notification.remove(call_id); + }).catch((err) => { + console.error('answer call error,', err); + }); + }; + + // 禁麦 + // mute the microphone + const setMuteMic = (mute) => { + return window.lemon.call.muteMic({ + call_id, + is_mute: mute, + }); + }; + + // 禁摄像头 + // disable the camera + const setMuteCamera = (mute) => { + return window.lemon.call.muteCamera({ + call_id, + is_mute: mute, + }); + }; + // 静音 + // mute call + const setMuteCall = (mute) => { + return window.lemon.call.muteCall({ + call_id, + is_mute: mute, + }); + }; + + const removeMonitorCall = (callId) => { + const index = monitor_call_list.findIndex( + (item) => item.call_id === callId + ); + if (index >= 0) { + monitor_call_list.splice(index, 1); + emitter.emit('monitorUpdate'); + } + }; + + const getMonitorCallList = () => { + return monitor_call_list; + }; + + // 添加 挂断 回调 + // After hanging up the call, you can receive a notification and process the style of the current page based on the notification + const registerhangupEvent = () => { + if (hangup_event_cb_id !== undefined) { + return; + } + + hangup_event_cb_id = window.lemon.call.addHangupEvt((data) => { + if (data.call_id === call_id) { + // Notification.remove(call_id); + call_id = undefined; + window.calling_conference = undefined; + } + + // pushVideoFile uninit + // 如果是视频推送的,挂断是反初始化一些东西。 + if (pushing_video) { + window.video.src = undefined; + window.showVideo.value = false; + pushing_video = false; + window.videoViewRoot.style.display = 'none'; + } + removeMonitorCall(data.call_id); + }); + }; + + // 添加强拆事件 + const registerForceHangupEvent = () => { + if (force_hangup_event_cb_id !== undefined) { + return; + } + force_hangup_event_cb_id = window.lemon.call.addForceHangupEvt((data) => { + // 目前强拆成功,都是走挂断通知事件。 当失败了,才走强拆事件通知。 + if (data.result === 0) { + if (data.call_id === call_id) { + // Notification.remove(call_id); + call_id = undefined; + window.calling_conference = undefined; + } + removeMonitorCall(data.call_id); + } else { + // 强拆失败 fail + ElMessage.error(`errorCode.${data.result}`); + } + }); + }; + + // 添加接听回调通知 代表呼叫建立 + // receive the answer acknowledgement asynchronously after the call is established + const registerCallEstablishEvent = () => { + if (answer_ack_cb_id !== undefined) { + return; + } + answer_ack_cb_id = window.lemon.call.addAnswerAckEvt((data) => { + call_id = data.call_id; + // 接通后,视频推送的文件开始播放 + if (pushing_video) { + window.videoViewRoot.style.display = 'unset'; + window.showVideo.value = true; + window.video.play(); + } + }); + }; + + // 注册来电通知回调 + // add the incoming call callback + const registerReceiveCallEvent = () => { + if (incoming_cb_id !== undefined) { + return; + } + incoming_cb_id = window.lemon.call.addIncomingEvt((session) => { + console.log('receive call------>', session); + call_id = session.call_id; + const callingReq = { + callInfo: session, + equipment: undefined, + text: { + calling: '来电', + answer: '接听', + hangUp: '挂断', + }, + }; + console.log('receive this------>', useCallModule()); + if (session.listen_flag) { + // monitor call,auto answer call + // 值守的来电呼叫,自动接听 + window.lemon.call.answerCall({ call_id: session.call_id }); + monitor_call_list.push(session); + + emitter.emit('monitorUpdate'); + } else { + // normal call + // 正常来电,弹框询问接听 + handleCallingNotification(callingReq); + } + }); + }; + + // 申请话权 + // apply floor + const applyFloor = ()=> { + console.info('try applyFloor,call_id=', call_id); + if (!call_id) { + console.warn('no call exits'); + return undefined; + } + return window.lemon.floor + .applySpeak({ call_id }) + ?.then((resp) => { + if (resp.result === 0) { + console.log('applyFloor request sucess'); + } else { + ElMessage.error(`errorCode.${resp.result}`); + } + }) + .catch((err) => { + console.error('applyFloor error,', err); + }); + }; + + // 释放话权 + // release floor + const releaseFloor = () => { + console.info('try releaseFloor,call_id=', call_id); + return window.lemon.floor + .releaseSpeak({ call_id }) + ?.then((resp) => { + if (resp.result === 0) { + console.log('releaseSpeak request sucess'); + } else { + ElMessage.error(`errorCode.${resp.result}`); + } + }) + .catch((err) => { + console.error('releaseSpeak error,', err); + }); + }; + + // add floor event + // 添加话权通知事件 + const registerFloorGrantEvent = () => { + if (floor_grant_cb_id !== undefined) { + return; + } + floor_grant_cb_id = window.lemon.floor.addGrantEvt((grantInfo) => { + console.log('registerFloorGrantEvent', grantInfo); + if (grantInfo.result !== 0) { + ElMessage.error(`errorCode.${grantInfo.result}`); + } + }); + }; + + // 强拆 + // override the call + const forceHangupCall = (callId) => { + return window.lemon.call + .forceHangupCall({ call_id: callId || call_id }) + ?.then((resp) => { + if (resp.result === 0) { + console.log('forceHangupCall request sucess'); + } else { + ElMessage.error(`errorCode.${resp.result}`); + } + call_id = undefined; + window.calling_conference = undefined; + // console.log('2222233registerCallEstablishEven'); + }) + .catch((err) => { + console.error('forceHangupCall error,', err); + }); + }; + // 强插 + // interrupt the call during monitoring + const forceApplySpeak = (callId) => { + return window.lemon.floor + .forceApplySpeak({ call_id: callId || call_id }) + ?.then((resp) => { + if (resp.result === 0) { + console.log('forceApplySpeak request sucess'); + call_id = callId; + } else { + ElMessage.error(`errorCode.${resp.result}`); + } + }) + .catch((err) => { + console.error('forceApplySpeak error,', err); + }); + }; + + /** + * 会议成员禁言 + * mute or unmute a conference member + * @param param + * @param param.conference_basedata_id + */ + const muteMemberInConference = ( conference_basedata_id, member_basedata_id, mute) => { + return window.lemon.call.conferenceMemberSpeakSet({ + conference_call_id: call_id, + conference_basedata_id, + member_setting: { + member_basedata_id, + forbid: mute ? 1 : 0, + }, + }); + }; + + /** + * 视频推送 + * select a local video file and play then push the stream to remote + * @param record + * @param file + * @returns + */ + const pushVideoFile = (record, url) => { + if (call_id) return; + if (window.video) { + const canPlayListener = () => { + window.video.removeEventListener('canplay', canPlayListener); + // capture stream + const stream = (window.video)?.captureStream(); + console.info('pushVideoFile,inited stream=', stream); + // register hook listner ,play the video when remote hooked + registerCallEstablishEvent(); + // init the call + window.lemon.call + .pushVideoFile({ + basedata_id: record?.basedata_id, + stream, + }) + ?.then((resp) => { + pushing_video = true; + call_id = resp.call_id; + }); + }; + + const endListener = () => { + console.info('pushVideoFile,video play end'); + window.video.removeEventListener('ended', endListener); + hangup(); + }; + window.video.removeEventListener('ended', endListener); + console.info('pushVideoFile,add canplay Event Listener', canPlayListener); + window.video.addEventListener('canplay', canPlayListener); + console.info('pushVideoFile,add ended Event Listener', endListener); + window.video.addEventListener('ended', endListener); + window.video.autoplay = false; + window.video.src = url; + } + }; + + /** + * 视频转发 + * share a exist call to another device + * @param record + * @param stop + * @returns + */ + const forwardVideoCall = (record, stop) => { + console.info('try forwardVideoCall,call_id=', call_id); + if (!call_id) { + console.warn('no call exits,can not forward'); + ElMessage.warning('no call exits'); + return undefined; + } + return window.lemon.call + .forwardVideoCall({ + basedata_id: record?.basedata_id, + call_id, + action: stop ? 1 : 0, + }) + ?.then((resp) => { + if (resp.result === 0) { + console.log('forwardVideoCall request sucess'); + } else { + ElMessage.error((`errorCode.${resp.result}`)); + } + }) + .catch((err) => { + console.error('forwardVideoCall error,', err); + }); + }; + + const getEmitter = () => { + return emitter; + }; + + // call sdk unInit + const unInit = () => { + call_id = undefined; + + if (hangup_event_cb_id) { + window.lemon.call.removeHangupEvt(hangup_event_cb_id); + hangup_event_cb_id = undefined; + } + if (force_hangup_event_cb_id) { + window.lemon.call.removeForceHangupEvt(force_hangup_event_cb_id); + force_hangup_event_cb_id = undefined; + } + if (answer_ack_cb_id) { + window.lemon.call.removeAnswerAckEvt(answer_ack_cb_id); + answer_ack_cb_id = undefined; + } + if (incoming_cb_id) { + window.lemon.call.removeIncomingEvt(incoming_cb_id); + incoming_cb_id = undefined; + } + if (floor_grant_cb_id) { + window.lemon.floor.removeGrantEvt(floor_grant_cb_id); + floor_grant_cb_id = undefined; + } + monitor_call_list.length = 0; + }; + + return { + makeVoiceCall, + makeVideoCall, + pureVideoCall, + registerhangupEvent, + registerReceiveCallEvent, + answerCall, + makeGroupVoiceCall, + makeGroupVideoCall, + makeBroadcastCall, + hangup, + voiceDetect, + videoDetect, + applyFloor, + releaseFloor, + setMuteCamera, + setMuteMic, + setMuteCall, + muteMemberInConference, + makeConferenceVoiceCall, + makeConferenceVideoCall, + makeCrosspatchVoiceCall, + registerCallEstablishEvent, + pushVideoFile, + forwardVideoCall, + forceHangupCall, + getMonitorCallList, + getEmitter, + forceApplySpeak, + registerFloorGrantEvent, + registerForceHangupEvent, + unInit, + }; +} diff --git a/src/views/consultation/sdk/conference.js b/src/views/consultation/sdk/conference.js new file mode 100644 index 0000000..5c6173f --- /dev/null +++ b/src/views/consultation/sdk/conference.js @@ -0,0 +1,302 @@ + + +export default function useConfernceModule() { + /** + * 创建会议 + */ + const createConference = (data) => { + return window.lemon.conference.createConference(data); + }; + + /** + * 根据会议号获取会议信息 + */ + const getConferenceInfo = (data) => { + return window.lemon.conference.getConferenceInfo(data); + }; + + /** + * 更新会议 + */ + const updateConference = (data) => { + return window.lemon.conference.updateConference(data); + } + + /** + * 更新会议备注 + */ + const updateConferenceRemark = (data) => { + return window.lemon.conference.updateConferenceRemark(data); + } + + /** + * 删除会议 + */ + const deleteConference = (callback) => { + return window.lemon.conference.deleteConference(callback) + } + + /** + * 取消会议 + */ + const cancelConference = (callback) => { + return window.lemon.conference.cancelConference(callback) + } + + /** + * 添加创建会议通知回调 + */ + const addCreateListener = (callback) => { + return window.lemon.conference.addCreateListener(callback) + } + + /** + * 删除创建会议通知回调 + */ + const removeCreateListener = (callback_id) => { + return window.lemon.conference.removeCreateListener(callback_id) + } + + /** + * 添加会议开始前提醒回调 + */ + const addRemindListener = (callback) => { + return window.lemon.conference.addRemindListener(callback) + } + + /** + * 删除会议开始前提醒回调 + */ + const removeRemindListener = (callback_id) => { + return window.lemon.conference.removeRemindListener(callback_id) + } + + /** + * 添加删除会议通知回调 + */ + const addDeleteListener = (callback) => { + return window.lemon.conference.addDeleteListener(callback) + } + + /** + * 移除删除会议通知回调 + */ + const removeDeleteListener = (callback_id) => { + return window.lemon.conference.removeDeleteListener(callback_id) + } + + /** + * 获取会议列表 + */ + const fetchConferences = (data) => { + return window.lemon.conference.fetchConferences(data); + } + + /** + * 添加会议成员 + */ + const addConferenceMember = (data) => { + return window.lemon.conference.addConferenceMember(data); + } + + /** + * 删除会议成员 + */ + const deleteConferenceMember = (data) => { + return window.lemon.conference.deleteConferenceMember(data); + } + + /** + * 获取会议成员列表 + */ + const fetchConferenceMembers = (data) => { + return window.lemon.conference.fetchConferenceMembers(data); + } + + /** + * 添加新增会议成员回调 + */ + const addAddMemberListener = (callback) => { + return window.lemon.conference.addAddMemberListener(callback); + } + + /** + * 移除新增会议成员回调 + */ + const removeAddMemberListener = (callback) => { + return window.lemon.conference.removeAddMemberListener(callback); + } + + /** + * 移除删除会议成员回调 + */ + const addDeleteMemberListener = (callback) => { + return window.lemon.conference.addDeleteMemberListener(callback); + } + + /** + * 移除删除会议成员回调 + */ + const removeDeleteMemberListener = (callback) => { + return window.lemon.conference.removeDeleteMemberListener(callback); + } + + /** + * 添加修改会议回调 + */ + const addUpdateListener = (callback) => { + return window.lemon.conference.addUpdateListener(callback); + } + + /** + * 移除修改会议回调 + */ + const removeUpdateListener = (callback_id) => { + return window.lemon.conference.removeUpdateListener(callback_id) + } + + /** + * 添加媒体流获取回调 + */ + const addMediaStream = (callback) => { + return window.lemon.conference.addMediaStream(callback); + } + + /** + * 移除媒体流获取回调 + */ + const removeMediaStream = (callback_id) => { + return window.lemon.conference.removeMediaStream(callback_id) + } + + /** + * 添加接听回调 + */ + const addAnswerAckEvt = (callback) => { + return window.lemon.conference.addAnswerAckEvt(callback); + } + + /** + * 移除接听回调 + */ + const removeAnswerAckEvt = (callback_id) => { + return window.lemon.conference.removeAnswerAckEvt(callback_id) + } + + /** + * 添加挂断回调 + */ + const addHangupEvt = (callback) => { + return window.lemon.conference.addHangupEvt(callback); + } + + /** + * 移除挂断回调 + */ + const removeHangupEvt = (callback_id) => { + return window.lemon.conference.removeHangupEvt(callback_id) + } + + /** + * 添加来电回调 + */ + const addIncomingEvt = (callback) => { + return window.lemon.conference.addIncomingEvt(callback); + } + + /** + * 移除来电回调 + */ + const removeIncomingEvt = (callback_id) => { + return window.lemon.conference.removeIncomingEvt(callback_id) + } + + /** + * 拨号进入会议 + */ + const enterConferenceByNumber = (data) => { + return window.lemon.conference.enterConferenceByNumber(data); + } + + /** + * 主动开始会议 + */ + const enterConference = (data) => { + return window.lemon.conference.enterConference(data); + } + + /** + * 结束会议 + */ + const endConference = (data) => { + return window.lemon.conference.endConference(data); + } + + /** + * 接到呼叫,进入会议 + */ + const answerCall = (data) => { + return window.lemon.conference.answerCall(data); + } + + /** + * 离开会议 + */ + const hangupCall = (data) => { + return window.lemon.conference.hangupCall(data); + } + + /** + * 添加会议状态变更回调 + */ + const addStateChangeListener = (callback) => { + return window.lemon.conference.addStateChangeListener(callback); + } + + /** + * 移除会议状态变更 + */ + const removeStateChangeListener = (callback_id) => { + return window.lemon.conference.removeStateChangeListener(callback_id); + } + + return { + createConference, + removeCreateListener, + addRemindListener, + removeRemindListener, + deleteConference, + addCreateListener, + addDeleteListener, + removeDeleteListener, + fetchConferences, + fetchConferenceMembers, + cancelConference, + updateConference, + addUpdateListener, + removeUpdateListener, + addConferenceMember, + addAddMemberListener, + removeAddMemberListener, + addDeleteMemberListener, + removeDeleteMemberListener, + deleteConferenceMember, + getConferenceInfo, + updateConferenceRemark, + addMediaStream, + removeMediaStream, + addAnswerAckEvt, + removeAnswerAckEvt, + addHangupEvt, + removeHangupEvt, + addIncomingEvt, + removeIncomingEvt, + enterConferenceByNumber, + enterConference, + endConference, + hangupCall, + answerCall, + addStateChangeListener, + removeStateChangeListener, + }; +} diff --git a/src/views/consultation/sdk/conferenceControl.js b/src/views/consultation/sdk/conferenceControl.js new file mode 100644 index 0000000..1648a5c --- /dev/null +++ b/src/views/consultation/sdk/conferenceControl.js @@ -0,0 +1,690 @@ +// 会议状态-未开始 +export const CONFERENCE_STATUS_DEFAULT = 0; +// 会议状态-进行中 +export const CONFERENCE_STATUS_PROGRESS = 1; +// 会议状态-已结束 +export const CONFERENCE_STATUS_ENDED = 3; +// 会议状态-已取消 +export const CONFERENCE_STATUS_CANCELED = 2; + +// 成员是否参加过会议-否(在历史记录中有效) +export const CONFERENCE_MEMBER_ABSENT = 0; +// 成员是否参加过会议-是(在历史记录中有效) +export const CONFERENCE_MEMBER_PRESENT = 1; + +// 成员在会议中的状态-未入会 +export const CONFERENCE_MEMBER_STATE_OUT = 0; +// 成员在会议中的状态-已入会 +export const CONFERENCE_MEMBER_STATE_IN = 1; +// 成员在会议中的状态-呼叫中 +export const CONFERENCE_MEMBER_STATE_CALLING = 2; + +// 成员角色-普通成员 +export const CONFERENCE_ROLE_NORMAL = 0; +// 成员角色-主持人 +export const CONFERENCE_ROLE_HOST = 1; +// 成员角色-创建者 +export const CONFERENCE_ROLE_CREATOR = 2; + +// 会议类型-预约会议 +export const CONFERENCE_TYPE_BOOK = 1; +// 会议类型-即时会议 +export const CONFERENCE_TYPE_SHORTCUT = 0; + +// 会议主题最大长度 +export const CONFERENCE_SUBJECT_MAX_LENGTH = 64; + +// 麦克风关闭 +export const MICROPHONE_STATUS_CLOSE = 0; +// 麦克风打开 +export const MICROPHONE_STATUS_OPEN = 1; +// 没有麦克风 +export const MICROPHONE_STATUS_NO = 2; + +// 摄像头关闭 +export const CAMERA_STATUS_CLOSE = 0; +// 摄像头打开 +export const CAMERA_STATUS_OPEN = 1; +// 没有摄像头 +export const CAMERA_STATUS_NO = 2; + +// 未禁言 +export const PROHIBITION_STATUS_N = 0; +// 禁言 +export const PROHIBITION_STATUS_Y = 1; + +// 未静音 +export const MUTE_STATUS_N = 0; +// 静音 +export const MUTE_STATUS_Y = 1; + +// 没有讲话 +export const SPEAKING_STATUS_N = 0; +// 正在讲话 +export const SPEAKING_STATUS_Y = 1; + +// 半双工模式 +export const HALFDUPLEX_CALL = 0; +// 全双工 +export const FULLDUPLEX_CALL = 1; + +// 未举手 +export const RAISE_HAND_N = 0; +// 未举手 +export const RAISE_HAND_Y = 1; + +// 举手同意发言 +export const RAISE_HAND_ALLOW = 2; +// 举手同意拒绝 +export const RAISE_HAND_DENY = 3; +// 举手同意忽略 +export const RAISE_HAND_IGNORE = 4; + +export default function useConfernceModule() { + /** + * 是否锁定会议 + */ + const lockConference = (data) => { + return window.lemon.conferenceControl.lockConference(data); + }; + + /** + * 更新会议主题 + */ + const updateConferenceSubject = (data) => { + return window.lemon.conferenceControl.updateConferenceSubject(data); + }; + + /** + * 设置成员角色 + */ + const setMemberRole = (data) => { + return window.lemon.conferenceControl.setMemberRole(data); + }; + + /** + * 添加设置成员角色回调 + */ + const addSetMemberRoleListener = (callback) => { + return window.lemon.conferenceControl.addSetMemberRoleListener(callback); + }; + + /** + * 移除设置成员角色回调 + */ + const removeSetMemberRoleListener = (callback) => { + return window.lemon.conferenceControl.removeSetMemberRoleListener(callback); + }; + + /** + * 添加成员入会回调 + */ + const addMemberJoinListener = (callback) => { + return window.lemon.conferenceControl.addMemberJoinListener(callback); + }; + + /** + * 移除成员入会回调 + */ + const removeMemberJoinListener = (callback_id) => { + return window.lemon.conferenceControl.removeMemberJoinListener(callback_id); + }; + + /** + * 添加成员离会回调 + */ + const addMemberLeftListener = (callback) => { + return window.lemon.conferenceControl.addMemberLeftListener(callback); + }; + + /** + * 移除成员离会回调 + */ + const removeMemberLeftListener = (callback_id) => { + return window.lemon.conferenceControl.removeMemberLeftListener(callback_id); + }; + + /** + * 添加修改会议主题回调 + */ + const addUpdateSubjectListener = (callback) => { + return window.lemon.conferenceControl.addUpdateSubjectListener(callback); + }; + + /** + * 移除修改会议主题回调 + */ + const removeUpdateSubjectListener = (callback_id) => { + return window.lemon.conferenceControl.removeUpdateSubjectListener( + callback_id + ); + }; + + /** + * 修改会议成员昵称 + */ + const modifyMemberNickname = (data) => { + return window.lemon.conferenceControl.modifyMemberNickname(data); + }; + + /** + * 添加修改会议成员昵称回调 + */ + const addModifyMemberNickListener = (callback) => { + return window.lemon.conferenceControl.addModifyMemberNickListener(callback); + }; + + /** + * 移除修改会议成员昵称回调 + */ + const removeModifyMemberNickListener = (callback_id) => { + return window.lemon.conferenceControl.removeModifyMemberNickListener( + callback_id + ); + }; + + /** + * 呼叫全部未入会成员 + */ + const inviteMember = (data) => { + return window.lemon.conferenceControl.inviteMember(data); + }; + + /** + * 呼叫全部未入会成员 + */ + const inviteAllMember = (data) => { + return window.lemon.conferenceControl.inviteAllMember(data); + }; + + /** + * 添加呼叫未入会成员回调 + */ + const addInviteMemberListener = (callback) => { + return window.lemon.conferenceControl.addInviteMemberListener(callback); + }; + + /** + * 移除呼叫未入会成员回调 + */ + const removeInviteMemberListener = (callback_id) => { + return window.lemon.conferenceControl.removeInviteMemberListener( + callback_id + ); + }; + + /** + * 踢出会议中成员 + */ + const kickoutMember = (data) => { + return window.lemon.conferenceControl.kickoutMember(data); + }; + + /** + * 设置麦克风设备 + */ + const changeAudioInputDevice = (data) => { + return window.lemon.conferenceControl.changeAudioInputDevice(data); + }; + + /** + * 设置麦克风设备 + */ + const changeVideoInputDevice = (data) => { + return window.lemon.conferenceControl.changeVideoInputDevice(data); + }; + + /** + * 摄像头开关 + */ + const setMemberCamera = (data) => { + return window.lemon.conferenceControl.setMemberCamera(data); + }; + + /** + * 添加摄像头开关回调 + */ + const addMemberCameraListener = (callback) => { + return window.lemon.conferenceControl.addMemberCameraListener(callback); + }; + + /** + * 移除摄像头开关回调 + */ + const removeMemberCameraListener = (callback_id) => { + return window.lemon.conferenceControl.removeMemberCameraListener( + callback_id + ); + }; + + /** + * 静音成员 + */ + const setMemberMute = (data) => { + return window.lemon.conferenceControl.setMemberMute(data); + }; + + /** + * 禁言成员 + */ + const setMemberProhibition = (data) => { + return window.lemon.conferenceControl.setMemberProhibition(data); + }; + + /** + * 禁言全部成员 + */ + const setAllMemberProhibition = (data) => { + return window.lemon.conferenceControl.setAllMemberProhibition(data); + }; + + /** + * 添加禁言回调 + */ + const addMemberProhibitionListener = (callback) => { + return window.lemon.conferenceControl.addMemberProhibitionListener( + callback + ); + }; + + /** + * 移除禁言回调 + */ + const removeMemberProhibitionListener = (callback_id) => { + return window.lemon.conferenceControl.removeMemberProhibitionListener( + callback_id + ); + }; + + /** + * 添加全部禁言回调 + */ + const addAllMemberProhibitionListener = (callback) => { + return window.lemon.conferenceControl.addAllMemberProhibitionListener( + callback + ); + }; + + /** + * 移除全部禁言回调 + */ + const removeAllMemberProhibitionListener = (callback_id) => { + return window.lemon.conferenceControl.removeAllMemberProhibitionListener( + callback_id + ); + }; + + /** + * 添加静音回调 + */ + const addMemberMuteListener = (callback) => { + return window.lemon.conferenceControl.addMemberMuteListener(callback); + }; + + /** + * 移除静音回调 + */ + const removeMemberMuteListener = (callback_id) => { + return window.lemon.conferenceControl.removeMemberMuteListener(callback_id); + }; + + /** + * 指定成员讲话 + */ + const assignMemberSpeaker = (data) => { + return window.lemon.conferenceControl.assignMemberSpeaker(data); + }; + + /** + * 添加指定成员讲话回调 + */ + const addAssignMemberSpeakListener = (callback) => { + return window.lemon.conferenceControl.addAssignMemberSpeakListener( + callback + ); + }; + + /** + * 移除指定成员讲话回调 + */ + const removeAssignMemberSpeakListener = (callback_id) => { + return window.lemon.conferenceControl.removeAssignMemberSpeakListener( + callback_id + ); + }; + + /** + * 取消指定成员讲话 + */ + const cancelMemberSpeak = (data) => { + return window.lemon.conferenceControl.cancelMemberSpeak(data); + }; + + /** + * 添加取消成员讲话回调 + */ + const addCancelMemberSpeakListener = (callback) => { + return window.lemon.conferenceControl.addCancelMemberSpeakListener( + callback + ); + }; + + /** + * 移除取消成员讲话回调 + */ + const removeCancelMemberSpeakListener = (callback_id) => { + return window.lemon.conferenceControl.removeCancelMemberSpeakListener( + callback_id + ); + }; + + /** + * 添加成员讲话状态回调 + */ + const addMemberSpeakingStateListener = (callback) => { + return window.lemon.conferenceControl.addMemberSpeakingStateListener( + callback + ); + }; + + /** + * 移除成员讲话状态回调 + */ + const removeMemberSpeakingStateListener = (callback_id) => { + return window.lemon.conferenceControl.removeMemberSpeakingStateListener( + callback_id + ); + }; + + /** + * 添加语音激励回调 + */ + const addVoiceStimulationListener = (callback) => { + return window.lemon.conferenceControl.addVoiceStimulationListener(callback); + }; + + /** + * 移除语音激励回调 + */ + const removeVoiceStimulationListener = (callback_id) => { + return window.lemon.conferenceControl.removeVoiceStimulationListener( + callback_id + ); + }; + + /** + * 指定显示某路流 + */ + const specifyMemberMediaStream = (data) => { + return window.lemon.conferenceControl.specifyMemberMediaStream(data); + }; + + /** + * 指定显示多路流 + */ + const specifyMembersMediaStream = (data) => { + return window.lemon.conferenceControl.specifyMembersMediaStream(data); + }; + + /** + * 获取布局类型 + */ + const getLayoutType = (data) => { + return window.lemon.conferenceControl.getLayoutType(data); + }; + + /** + * 获取布局信息 + */ + const getLayoutInfo = () => { + return window.lemon.conferenceControl.getLayoutInfo(); + }; + + /** + * 切换布局信息 + */ + const setLayoutType = (data) => { + return window.lemon.conferenceControl.setLayoutType(data); + }; + + /** + * 添加修改布局回调 + */ + const addSetLayoutTypeListener = (callback) => { + return window.lemon.conferenceControl.addSetLayoutTypeListener(callback); + }; + + /** + * 移除修改布局回调 + */ + const removeSetLayoutTypeListener = (callback_id) => { + return window.lemon.conferenceControl.removeSetLayoutTypeListener( + callback_id + ); + }; + + /** + * 添加新增会议成员回调 + */ + const addAddMemberListener = (callback) => { + return window.lemon.conferenceControl.addAddMemberListener(callback); + }; + + /** + * 移除新增会议成员回调 + */ + const removeAddMemberListener = (callback) => { + return window.lemon.conferenceControl.removeAddMemberListener(callback); + }; + + /** + * 移除删除会议成员回调 + */ + const addDeleteMemberListener = (callback) => { + return window.lemon.conferenceControl.addDeleteMemberListener(callback); + }; + + /** + * 移除删除会议成员回调 + */ + const removeDeleteMemberListener = (callback) => { + return window.lemon.conferenceControl.removeDeleteMemberListener(callback); + }; + + /** + * 获取本地设备列表 + */ + const getLocalDeviceList = () => { + return window.lemon.conferenceControl.getLocalDeviceList(); + }; + + /** + * 移除设备列表变化回调 + */ + const addDeviceListChangeListener = (callback) => { + return window.lemon.conferenceControl.addDeviceListChangeListener(callback); + }; + + /** + * 移除设备列表变化回调 + */ + const removeDeviceListChangeListener = (callback) => { + return window.lemon.conferenceControl.removeDeviceListChangeListener( + callback + ); + }; + + /** + * 屏幕共享 + */ + const setShareScreenStatus = (data) => { + return window.lemon.conferenceControl.setShareScreenStatus(data); + }; + + /** + * 移除屏幕共享回调 + */ + const addScreenSharingListener = (callback) => { + return window.lemon.conferenceControl.addScreenSharingListener(callback); + }; + + /** + * 移除屏幕共享回调 + */ + const removeScreenSharingListener = (callback) => { + return window.lemon.conferenceControl.removeScreenSharingListener(callback); + }; + + /** + * 截屏操作 + */ + const startScreenshot = (data) => { + return window.lemon.conferenceControl.startScreenshot(data); + }; + + /** + * 创建录屏媒体对象 + */ + const createMediaRecorder = (data) => { + return window.lemon.conferenceControl.createMediaRecorder(data); + }; + + /** + * 开始视频广播 + */ + const broadcastVideo = (data) => { + return window.lemon.conferenceControl.broadcastVideo(data); + }; + + /** + * 停止视频广播 + */ + const stopBroadcast = () => { + return window.lemon.conferenceControl.stopBroadcast(); + }; + + /** + * 设置语音激励开关 + */ + const setVoiceStimulation = (data) => { + return window.lemon.conferenceControl.setVoiceStimulation(data); + }; + + /** + * 扬声器流开关 + */ + const setMuteCall = (data) => { + return window.lemon.conferenceControl.setMuteCall(data); + }; + + /** + * 切换扬声器设备 + */ + const changeAudioOutputDevice = (data) => { + return window.lemon.conferenceControl.changeAudioOutputDevice(data); + }; + + /** + * 添加当前进行中会议数据变更回调 + */ + const addActiveConfigChangeListener = (callback) => { + return window.lemon.conferenceControl.addActiveConfigChangeListener( + callback + ); + }; + + /** + * 移除当前进行中会议数据变更回调 + */ + const removeActiveConfigChangeListener = (data) => { + return window.lemon.conferenceControl.removeActiveConfigChangeListener(data); + }; + + /** + * 添加会议室锁定回调 + */ + const addLockListener = (callback) => { + return window.lemon.conferenceControl.addLockListener(callback); + }; + + /** + * 移除会议室锁定回调 + */ + const removeLockListener = (data) => { + return window.lemon.conferenceControl.removeLockListener(data); + }; + + return { + lockConference, + addLockListener, + removeLockListener, + removeMemberJoinListener, + addMemberJoinListener, + removeMemberLeftListener, + addMemberLeftListener, + updateConferenceSubject, + addUpdateSubjectListener, + removeUpdateSubjectListener, + addModifyMemberNickListener, + removeModifyMemberNickListener, + addInviteMemberListener, + removeInviteMemberListener, + inviteMember, + inviteAllMember, + kickoutMember, + setMemberCamera, + addMemberCameraListener, + removeMemberCameraListener, + addMemberProhibitionListener, + removeMemberProhibitionListener, + addAllMemberProhibitionListener, + removeAllMemberProhibitionListener, + setMemberMute, + setMemberProhibition, + setAllMemberProhibition, + addMemberMuteListener, + removeMemberMuteListener, + assignMemberSpeaker, + cancelMemberSpeak, + addAssignMemberSpeakListener, + removeAssignMemberSpeakListener, + addMemberSpeakingStateListener, + removeMemberSpeakingStateListener, + addVoiceStimulationListener, + removeVoiceStimulationListener, + specifyMemberMediaStream, + specifyMembersMediaStream, + getLayoutType, + getLayoutInfo, + setLayoutType, + addSetLayoutTypeListener, + removeSetLayoutTypeListener, + modifyMemberNickname, + setMemberRole, + addSetMemberRoleListener, + removeSetMemberRoleListener, + changeAudioInputDevice, + changeVideoInputDevice, + addCancelMemberSpeakListener, + removeCancelMemberSpeakListener, + addAddMemberListener, + removeAddMemberListener, + addDeleteMemberListener, + getLocalDeviceList, + removeDeleteMemberListener, + addDeviceListChangeListener, + removeDeviceListChangeListener, + setShareScreenStatus, + addScreenSharingListener, + removeScreenSharingListener, + startScreenshot, + createMediaRecorder, + stopBroadcast, + broadcastVideo, + setVoiceStimulation, + removeActiveConfigChangeListener, + addActiveConfigChangeListener, + setMuteCall, + changeAudioOutputDevice, + }; +} diff --git a/src/views/consultation/sdk/gis.ts b/src/views/consultation/sdk/gis.ts new file mode 100644 index 0000000..00d84dd --- /dev/null +++ b/src/views/consultation/sdk/gis.ts @@ -0,0 +1,390 @@ +/** + * 通用返回对象 + * @typedef {object} RetReslut + * @property {number} result 响应码,0成功,其他失败 + */ + +/** + * GPS上报数据 + * @typedef {object} GpsData + * @property {string} basedata_id 能根据这个信息定位到设备、组、群组等identifier + * @property {string} long_we 经度标识 取值:E:东经 W:西经 + * @property {number} longitude 经度 + * @property {string} lat_ns 纬度标识 取值:S:南纬 N:北纬 + * @property {number} latitude 纬度 + * @property {number} speed 速度 单位是海里/小时 + * @property {number} direction 方向(360度) + * @property {string} receive_time 接收时间(UTC 时间) + * @property {string} electricity 电量等级 + * @property {number} current_interval_time 当前的上拉周期(秒) + * @property {string} device_alias 上报设备名称 + * @property {string} device_staff_name 上报设备实名制名称 (PDT 系统才有) + * @property {string} device_number 上报设备号码 + */ + +/** + * GPS上报对象 + * @typedef {object} GpsReportInfo + * @property {string} user_id 用户账号 + * @property {Array.} gps_list 上报GPS数据列表 + */ + +/** + * 单次上拉的 GPS信息对象 + * @typedef {object} GpsInfo + * @property {number} result 响应码,0成功,其他失败 + * @property {string} user_id 用户账号 + * @property {GpsData} gps_data GPS数据 + */ + +/** + * 订阅参数对象 + * @typedef {object} Subscriber + * @property {string} basedata_id 基础数据对象id,必填项 + * @property {number} interval_time 订阅间隔时间(s),必填项 + * @property {number} distance 订阅距离,选填项 default 0 + * @property {number} speed 订阅速度,选填项 default 0 + * @property {number} sub_type 订阅类型,选填。 1:标识只启用按距离上传 2: 标识只启用按时间上传 3:标识启用按时间与距离上传 4: 标识启用按时间或距离上传 + */ + +/** + * 取消订阅参数对象 + * @typedef {object} UnSubscriber + * @property {string} basedata_id 基础数据对象id + */ + +/** + * 历史轨迹查询参数对象 + * @typedef {object} RecordGpsParams + * @property {string} basedata_id 基础数据对象id,必填项 + * @property {string} start_time 查询开始时间 必填项 ,时间格式参考示例,UTC时间 "2021-05-13T09:45:41Z" + * @property {string} end_time 查询结束时间 必填项 ,时间格式 如 "2021-05-13T09:45:41Z" + * @property {number} max_number 返回最多的轨迹点数,选填项 不能超过 10000. 取值范围 1000-10000。如果不填就默认10000个点。 + */ + +/** + * 轨迹点信息 对象 + * @typedef {object} GpsRecord + * @property {string} long_we 经度标识 取值:E:东经 W:西经 + * @property {number} longitude 经度 + * @property {string} lat_ns 纬度标识 取值:S:南纬 N:北纬 + * @property {number} latitude 纬度 + * @property {number} speed 速度 单位是海里/小时 + * @property {number} direction 方向 + * @property {string} gps_datetime : GPS时间(UTC 时间) + * @property {string} receive_time 接收时间(UTC 时间) + */ + +/** + * 历史轨迹查询结果 对象 + * @typedef {object} GpsRecordResult + * @property {number} result 响应码,0成功 其他是失败 + * @property {boolean} exceeded_the_maximum 是否超出最大值的轨迹点数,超出最大值,只返回最大值的点数。 + * @property {Array.} gps_record_list 轨迹点列表 + */ + +/** + * 分页获取订阅列表数据参数结构 + * @typedef {object} SubDeviecesParams + * @property {number} page_index 当前页码 必填项 + * @property {number} page_size 单页容量 必填项 + * @property {string} filter_key 通过这个关键字去匹配设备号码 非必填项 + */ + +/** + * 分页获取订阅列表返回 对象 + * @typedef {object} SubDeviecesResult + * @property {number} result 响应码,0成功 其他是失败 + * @property {number} total_number 总的订阅数据 + * @property {Array.} sub_device_list 订阅设备列表 + */ + +/** + * 订阅设备信息 + * @typedef {object} SubDevieceInfo + * @property {String} basedata_id 基础数据对象id,必填项 + * @property {string} alias 被订阅设备名称 + * @property {string} number 被订阅设备号码 + * @property {string} staff_name 被订阅设备实名制名称 (PDT 系统才有) + * @property {number} actual_report_cycle 实际上报周期,当前上拉周期 + * @property {number} min_cycle 允许最小订阅周期 + */ + +/** + * 获取订阅设备的订阅关系参数 + * @typedef {object} SubDeviceRelationParams + * @property {string} basedata_id 基础数据对象id + */ + +/** + * 获取订阅设备的订阅关系 返回结果 + * @typedef {object} SubDeviceRelationResult + * @property {number} result 响应码,0成功 其他是失败 + * @property {string} basedata_id 基础数据对象id + * @property {Array.} subscriber_list 订阅关系列表 + */ + +/** + * 订阅关系对象 + * @typedef {object} SubscriberRelation + * @property {string} dispatcher_id 调度台id + * @property {number} interval_time 订阅周期 + */ + +/** + * 取消调度员订阅参数对象 + * @typedef {object} UnSubDispatcher + * @property {string} basedata_id 基础数据对象id + */ + +/** + * 调度员取消订阅通知信息 + * @typedef {object} DispatcherCancelSubNofify + * @property {string} user_id 用户账号,被取消订阅的用户账号,一般是当前账号,因为只能收到自己被取消订阅的通知 + * @property {string} realm 用户账号登录域名 + * @property {string} handle_dispatcher 取消订阅操作的调度员 + * @property {string} handle_time 取消订阅操作的时间 + */ + +/** + * 设备被取消订阅通知信息 + * @typedef {object} DeviceCancelSubInfo + * @property {string} number 设备号码 + * @property {string} basedata_id 设备的basedata id + * @property {string} handle_dispatcher 取消订阅操作的调度员 + * @property {string} handle_time 取消订阅操作的时间 + */ +/** + * 设备被取消订阅通知信息 + * @typedef {object} DeviceCancelSubNofify + * @property {string} user_id 用户账号,被取消订阅的用户账号,一般是当前账号,因为只能收到自己被取消订阅的通知 + * @property {string} realm 用户账号登录域名 + * @property {Array.} cancel_sub_list 设备取消订阅列表 + */ + +/** + * 全网订阅参数 + * @typedef {object} WholeNetSubParams + * @property {number} sub_pull_mode 订阅拉取模式 0:禁止;1:全网上拉2:部分上拉 + * @property {number} whole_net_sub_cycle 订阅拉取周期 + * @property {number} recovery_time 恢复时间 + * @property {number} min_sub_cycle 全网允许最小订阅周期 + */ +/** + * 全网订阅参数结果 + * @typedef {object} WholeNetSubParamsResult + * @property {number} result 响应码,0成功 其他是失败 + * @property {string} min_sub_cycle_setter 全网允许最小订阅周期设置者 + * @property {WholeNetSubParams} whole_net_sub_params 全网订阅参数 + */ + +/** + * 取消调度员订阅参数对象 + * @typedef {object} Device + * @property {string} basedata_id 基础数据对象id + */ + +/** + * 设置设备最小订阅周期 请求参数 + * @typedef {object} DeviceMinSubCycleParams + * @property {number} min_sub_cycle 终端允许最小订阅周期,该值必须必须大于或等于全网最小订阅周期 + * @property {Array.} device_list 终端的basedata id 列表 + */ +export default function useGisModule() { + /** + * 发起GPS订阅(支持批量) + * @param {object} subscriberListParam 订阅列表 + * @param {Array. { + return window.lemon.gis.startSubscribeGps(subscriberListParam); + }; + + /** + * 取消对该设备(调用者的)订阅 (支持批量),但是不影响其他人的订阅关系 + * @param {Array.} unSubscribeListParam + * @param {Array.} unSubscribeListParam.cancel_subscribe_list + * @returns + */ + const stopSubscribeGps = (unSubscribeListParam) => { + return window.lemon.gis.stopSubscribeGps(unSubscribeListParam); + }; + + /** + * 取消该设备的全部订阅,连同其他的人对该设备的订阅也将取消去掉 (支持批量) + * @param {object} unSubscribeListParam + * @param {Array.} unSubscribeListParam.cancel_subscribe_list + * @returns + */ + const cancelDeviceAllGpsSub = (unSubscribeListParam) => { + return window.lemon.gis.cancelDeviceAllGpsSub(unSubscribeListParam); + }; + + /** + * 单次获取位置信息 + * @param {object} gpsInfoParam 基础数据对象id,必填项 + * @param {string} gpsInfoParam.basedata_id 基础数据对象id,必填项 + * @param {boolean} gpsInfoParam.is_encryption 是否加密, 选填。 默认加密 + * @returns {Promise.} + */ + const getGpsInfo = (gpsInfoParam) => { + return window.lemon.gis.getGpsInfo(gpsInfoParam); + }; + + /** + * 添加GPS 上报回调 + * @param {GpsCallback} callback 回调函数 + * @returns {string} callbackId {@link removeGPSReportListener } 需要根据这个id找到对应的回调函数 + */ + const addGPSReportListener = (callback) => { + return window.lemon.gis.addGPSReportListener(callback); + }; + + /** + * 根据callbackId删除之前注册的回调 + * + * @param {string} callbackId + */ + const removeGPSReportListener = (callbackId) => { + return window.lemon.gis.removeGPSReportListener(callbackId); + }; + + /** + * 获取已订阅列表 + * @param {SubDeviecesParams} subDeviecesParams 订阅列表参数对象 + * @returns {Promise.} + */ + const fetchSubDeviceList = (subDeviecesParams) => { + return window.lemon.gis.fetchSubDeviceList(subDeviecesParams); + }; + + /** + * 获取订阅设备的订阅关系 + * @param {SubDeviceRelationParams} subDeviceRelationParams 订阅列表参数对象 + * @returns {Promise.} + */ + const fetchSubDeviceRelation = (subDeviceRelationParams) => { + return window.lemon.gis.fetchSubDeviceRelation(subDeviceRelationParams); + }; + + /** + * 获取全网订阅参数 + * @returns {Promise.} + */ + const getWholeNetSubParams = () => { + return window.lemon.gis.getWholeNetSubParams(); + }; + /** + * 设置全网订阅参数 + * @param {WholeNetSubParams} wholeNetSubParams + * @returns {Promise.} + */ + const setWholeNetSubParams = (wholeNetSubParams) => { + return window.lemon.gis.setWholeNetSubParams(wholeNetSubParams); + }; + + /** + * 同步订阅功能 + * @returns {Promise.} + */ + const syncSubscribeList = () => { + return window.lemon.gis.syncSubscribeList(); + }; + + /** + * 设置终端最小订阅周期 + * @param {DeviceMinSubCycleParams} deviceMinSubCycleParams + * @returns {Promise.} + */ + const setDeviceMinSubCycle = (deviceMinSubCycleParams) => { + return window.lemon.gis.setDeviceMinSubCycle(deviceMinSubCycleParams); + }; + + /** + * 取消终端允许最小订阅周期 + * @param {object} cancelDeviceParam + * @param {Array.} cancelDeviceParam.cancel_device_list + * @returns {Promise.} + */ + const cancelDeviceMinSubCycle = (cancelDeviceParam) => { + return window.lemon.gis.cancelDeviceMinSubCycle(cancelDeviceParam); + }; + + /** + * 取消调度员的全部订阅操作 + * @param {object>} dispatcherListParam + * @param {Array.} dispatcherListParam.cancel_subscribe_list + * @returns + */ + const cancelDispatcherAllGpsSub = (dispatcherListParam) => { + return window.lemon.gis.cancelDispatcherAllGpsSub(dispatcherListParam); + }; + + /** + * 添加 调度台取消订阅通知回调 + * @param {DeviceCallback} callback 回调函数 + * @returns {string} callbackId {@link removeGPSReportListener } 需要根据这个id找到对应的回调函数 + */ + const addCXLDispatcherSubListener = (callback) => { + return window.lemon.gis.addCXLDispatcherSubListener(callback); + }; + + /** + * 根据callbackId删除之前注册的回调 + * + * @param {string} callbackId + */ + const removeCXLDispatcherSubListener = (callbackId) => { + return window.lemon.gis.removeCXLDispatcherSubListener(callbackId); + }; + + /** + * 添加 设备取消订阅通知回调 + * @param {DeviceCallback} callback 回调函数 + * @returns {string} callbackId {@link removeCXLDeviceSubListener } 需要根据这个id找到对应的回调函数 + */ + const addCXLDeviceSubListener = (callback) => { + return window.lemon.gis.addCXLDeviceSubListener(callback); + }; + + /** + * 根据callbackId删除之前注册的回调 + * + * @param {string} callbackId + */ + const removeCXLDeviceSubListener = (callbackId) => { + return window.lemon.gis.removeCXLDispatcherSubListener(callbackId); + }; + + /** + * 查询历史轨迹 + * @param {RecordGpsParams} recordGpsParams 历史轨迹查询参数对象 + * @returns {Promise.} + */ + const queryRecordGPS = (recordGpsParams) => { + return window.lemon.gis.queryRecordGPS(recordGpsParams); + }; + + return { + startSubscribeGps, + stopSubscribeGps, + cancelDeviceAllGpsSub, + getGpsInfo, + addGPSReportListener, + removeGPSReportListener, + fetchSubDeviceList, + fetchSubDeviceRelation, + getWholeNetSubParams, + setWholeNetSubParams, + syncSubscribeList, + setDeviceMinSubCycle, + cancelDeviceMinSubCycle, + addCXLDispatcherSubListener, + removeCXLDispatcherSubListener, + addCXLDeviceSubListener, + removeCXLDeviceSubListener, + cancelDispatcherAllGpsSub, + queryRecordGPS, + }; +} diff --git a/src/views/consultation/sdk/log.ts b/src/views/consultation/sdk/log.ts new file mode 100644 index 0000000..97c1620 --- /dev/null +++ b/src/views/consultation/sdk/log.ts @@ -0,0 +1,23 @@ +export default function useLogModule() { + /** + * set log level + * 0 : no log + * 1 : error + * 2 : warn + * 3 : info + * 4 : debug + * @param {日志级别 int} level + */ + const setLevel = (level) => { + window.lemon.log.setLevel(level); + }; + + const getLevel = () => { + return window.lemon.log.getLevel(); + }; + + return { + setLevel, + getLevel, + }; +} diff --git a/src/views/consultation/sdk/login.ts b/src/views/consultation/sdk/login.ts new file mode 100644 index 0000000..e4f14cb --- /dev/null +++ b/src/views/consultation/sdk/login.ts @@ -0,0 +1,73 @@ +export interface UserInfo { + username: string; + password: string; + realm: string; + webpucUrl: string; +} + +export default function useLoginModule() { + /** + * login + * @returns + */ + const login = (userInfo: UserInfo) => { + return window.lemon.login.login(userInfo); + }; + + /** + * logout + * @returns + */ + const logout = () => { + return window.lemon.login.logout(); + }; + + /** + * get login account infomation + * @returns + */ + const getLoginAccountInfo = () => { + return window.lemon.login.getLoginAccountInfo(); + }; + + /** + * Connect Websocket + * @returns + */ + const reConnectWebsocket = (reConnectInfo) => { + return window.lemon.login.reConnectWebsocket(reConnectInfo); + }; + + /** + * get the account login status + * @returns ture is login in, false is not logged in + */ + const isLogin = () => { + return window.lemon.login.isLogin(); + }; + + /** + * add login status change listener + * @returns callbackid + */ + const addLoginStatusChangeListener = (onLoginStatusChange) => { + return window.lemon.login.addLoginStatusChangeListener(onLoginStatusChange); + }; + + /** + * remove login status change listener + */ + const removeLoginStatusChangeListener = (loginStatusGuid: string) => { + window.lemon.login.removeLoginStatusChangeListener(loginStatusGuid); + }; + + return { + login, + logout, + reConnectWebsocket, + getLoginAccountInfo, + isLogin, + addLoginStatusChangeListener, + removeLoginStatusChangeListener, + }; +} diff --git a/src/views/consultation/sdk/message.ts b/src/views/consultation/sdk/message.ts new file mode 100644 index 0000000..4a5ec2d --- /dev/null +++ b/src/views/consultation/sdk/message.ts @@ -0,0 +1,86 @@ +export interface FormatedMsg { + sender: { + number: string; + alias: string; + basedata_id: string; + }; + recipient: { + number: string; + alias: string; + basedata_id: string; + }; + + file_parm: string; + sds_type: string; + sds_content: string; + time_stamp: string; + times: number; + sds_text: string; +} + +export default function useMessageModule() { + /** + * download message File + * @returns + */ + const downloadFile = (downloadParams: { url: string }) => { + return window.lemon.message.downloadFile(downloadParams); + }; + const dateTimeFormat = () => { + const date = new Date(); + + const hour = String(date.getHours()).padStart(2, '0'); + const minute = String(date.getMinutes()).padStart(2, '0'); + const second = String(date.getSeconds()).padStart(2, '0'); + return `${[hour, minute, second].join(':')}`; + }; + const formatMessage = (message: any): FormatedMsg => { + const resInfo: FormatedMsg = { + sender: { + number: message.caller.number, + alias: message.caller.number_alias, + basedata_id: message.caller.basedata_id, + }, + recipient: { + number: message.callee.number, + alias: message.callee.number_alias, + basedata_id: message.callee.basedata_id, + }, + file_parm: message.file_parm, + sds_type: message.sds_type, + sds_content: message.sds_content, + time_stamp: dateTimeFormat(), + times: new Date().getTime(), + sds_text: message.sds_text, + }; + return resInfo; + }; + /** + * send text message + * @param basedata_id target send to + * @param content message content + * @returns + */ + const sendTxtMessage = (basedata_id: string, content: string) => { + return window.lemon.message.sendMessageText({ + basedata_id, + message_content: content, + }); + }; + + const addCallback = (callback: (data) => void) => { + return window.lemon.message.addMessageReportListener(callback); + }; + + const removeCallback = (id: string) => { + return window.lemon.message.removeMessageReportListener(id); + }; + + return { + downloadFile, + formatMessage, + sendTxtMessage, + addCallback, + removeCallback, + }; +} diff --git a/src/views/consultation/sdk/monitor.ts b/src/views/consultation/sdk/monitor.ts new file mode 100644 index 0000000..0d66dca --- /dev/null +++ b/src/views/consultation/sdk/monitor.ts @@ -0,0 +1,76 @@ +// cache all monitor data +const monitorData = new Map(); + +let callback_id; + +export default function useMonitorModule() { + /** + * recover history monitor relationship,callback will receive results + * @returns + */ + const recoverHistory = () => { + return window.lemon.monitor.initQueue(); + }; + + /** + * cancel or monitor a object,like deivce、gorup or something else + * @param basedata_id + * @param alias + * @returns + */ + const monitor = (basedata_id: string, alias: string) => { + const has = monitorData.has(basedata_id); + console.log('try monitor->', has); + return window.lemon.monitor.change({ + basedata_id, + name: alias, + monitor_type: has ? 0 : 1, + }); + }; + + const removeCallback = (id?: string) => { + let inner; + if (!id) { + id = callback_id; + inner = true; + } + window.lemon.monitor.removeChangeListener(id); + if (inner) { + callback_id = undefined; + } + }; + + const addCallback = (callback: (data) => void) => { + return window.lemon.monitor.addChangeListener(callback); + }; + + const registerResultCallback = () => { + console.log('try register monitor '); + if (callback_id) { + console.log('there is already a callback,remove first'); + removeCallback(); + } + callback_id = addCallback((data) => { + if (data.result !== 0) { + return; + } + // if not in list + if (data.monitor_type === 0) { + const deleteFlag = monitorData.delete(data.basedata_id); + + console.log('deleteFlag', deleteFlag); + } + if (data.monitor_type === 1) { + monitorData.set(data.basedata_id, data); + } + }); + }; + + return { + recoverHistory, + monitor, + registerResultCallback, + addCallback, + removeCallback, + }; +} diff --git a/src/views/consultation/sdk/reportForm.ts b/src/views/consultation/sdk/reportForm.ts new file mode 100644 index 0000000..d2a5ac5 --- /dev/null +++ b/src/views/consultation/sdk/reportForm.ts @@ -0,0 +1,80 @@ +export default function useReportFormModule() { + /** + * query Call Record + * @returns + */ + const queryCallRecord = (callRecordParams) => { + return window.lemon.reportForm.queryCallRecord(callRecordParams); + }; + + /** + * fetch Call Recording File Url + * @returns + */ + const fetchCallRecordingFileUrl = (param: { sound_file: string }) => { + return window.lemon.reportForm.fetchCallRecordingFileUrl(param); + }; + + /** + * query message Record + * @returns + */ + const queryMsgRecord = (msgRecordParams) => { + return window.lemon.reportForm.queryMsgRecord(msgRecordParams); + }; + + /** + * query rrs Record + * @returns + */ + const queryRrsRecord = (rrsRecordParams) => { + return window.lemon.reportForm.queryRrsRecord(rrsRecordParams); + }; + + /** + * query emg alarm Record + * @returns + */ + const queryEmgAlarmRecord = (emgAlarmRecordParams) => { + return window.lemon.reportForm.queryEmgAlarmRecord(emgAlarmRecordParams); + }; + + /** + * query Geofencing alarm Record + * @returns + */ + const queryGeofencingAlarmRecord = (geofencingAlarmRecordParams) => { + return window.lemon.reportForm.queryGeofencingAlarmRecord( + geofencingAlarmRecordParams + ); + }; + + /** + * query speed alarm Record + * @returns + */ + const querySpeedAlarmRecord = (speedAlarmRecordParams) => { + return window.lemon.reportForm.querySpeedAlarmRecord( + speedAlarmRecordParams + ); + }; + + /** + * query CallBack Record + * @returns + */ + const queryCallBackRecord = (callBackRecordParams) => { + return window.lemon.reportForm.queryCallBackRecord(callBackRecordParams); + }; + + return { + queryCallRecord, + fetchCallRecordingFileUrl, + queryMsgRecord, + queryRrsRecord, + queryEmgAlarmRecord, + queryGeofencingAlarmRecord, + querySpeedAlarmRecord, + queryCallBackRecord, + }; +} diff --git a/src/views/consultation/utils/format-show-name.js b/src/views/consultation/utils/format-show-name.js new file mode 100644 index 0000000..c3fd0b4 --- /dev/null +++ b/src/views/consultation/utils/format-show-name.js @@ -0,0 +1,14 @@ +/** + * 按个性化设置格式化显示的名称,当3K时去掉前5位的直客ID + * @param name 别名(为空时返回号码) + * @param number 用户号码 + * @returns 格式化后用户看到的名称 + */ +export function formatShowNameFin(name, number) { + if (name) { + return `${name}(${number})`; + } + return number; +} + +export default null;