Parcourir la source

feat:监控更换协议

zhb il y a 1 an
Parent
commit
f97ef5c128
35 fichiers modifiés avec 13764 ajouts et 235 suppressions
  1. 27 0
      static/ezuikit/ezuikit.js
  2. 168 0
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl1/HasSIMD/Decoder.js
  3. 168 0
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl1/NoSIMD/Decoder.js
  4. 21 0
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/HasSIMD/Decoder.js
  5. BIN
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/HasSIMD/Decoder.wasm
  6. 1 0
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/HasSIMD/Decoder.worker.js
  7. 21 0
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/NoSIMD/Decoder.js
  8. BIN
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/NoSIMD/Decoder.wasm
  9. 1 0
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/NoSIMD/Decoder.worker.js
  10. 21 0
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/noWorker/Decoder.js
  11. BIN
      static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/noWorker/Decoder.wasm
  12. 1257 0
      static/ezuikit/ezuikit_static/css/component.css
  13. 354 0
      static/ezuikit/ezuikit_static/css/inspectTheme.css
  14. 126 0
      static/ezuikit/ezuikit_static/css/theme copy.css
  15. 140 0
      static/ezuikit/ezuikit_static/css/theme.css
  16. BIN
      static/ezuikit/ezuikit_static/imgs/bg.png
  17. 33 0
      static/ezuikit/ezuikit_static/imgs/bg.svg
  18. BIN
      static/ezuikit/ezuikit_static/imgs/empty.png
  19. BIN
      static/ezuikit/ezuikit_static/imgs/end.png
  20. 52 0
      static/ezuikit/ezuikit_static/imgs/fallback.svg
  21. BIN
      static/ezuikit/ezuikit_static/imgs/start.png
  22. 1522 0
      static/ezuikit/ezuikit_static/rec/datepicker.js
  23. 36 0
      static/ezuikit/ezuikit_static/rec/datepicker.min.css
  24. 19 0
      static/ezuikit/ezuikit_static/rec/datepicker.zh-CN.js
  25. 2 0
      static/ezuikit/ezuikit_static/rec/jquery.min.js
  26. 145 0
      static/ezuikit/ezuikit_static/speed/speed.css
  27. 5497 0
      static/ezuikit/ezuikit_static/talk/adapeter.js
  28. 3507 0
      static/ezuikit/ezuikit_static/talk/janus.js
  29. 343 0
      static/ezuikit/ezuikit_static/talk/tts-v4.js
  30. 294 227
      static/h52.html
  31. 1 0
      static/js/uni.webview.1.5.2.js.js
  32. 1 1
      unpackage/cache/apk/apkurl
  33. 1 1
      unpackage/cache/apk/cmManifestCache.json
  34. 5 5
      unpackage/dist/build/app-plus/app-service.js
  35. 1 1
      unpackage/dist/build/app-plus/app-view.js

Fichier diff supprimé car celui-ci est trop grand
+ 27 - 0
static/ezuikit/ezuikit.js


Fichier diff supprimé car celui-ci est trop grand
+ 168 - 0
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl1/HasSIMD/Decoder.js


Fichier diff supprimé car celui-ci est trop grand
+ 168 - 0
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl1/NoSIMD/Decoder.js


Fichier diff supprimé car celui-ci est trop grand
+ 21 - 0
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/HasSIMD/Decoder.js


BIN
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/HasSIMD/Decoder.wasm


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/HasSIMD/Decoder.worker.js


Fichier diff supprimé car celui-ci est trop grand
+ 21 - 0
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/NoSIMD/Decoder.js


BIN
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/NoSIMD/Decoder.wasm


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/hasWorker/NoSIMD/Decoder.worker.js


Fichier diff supprimé car celui-ci est trop grand
+ 21 - 0
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/noWorker/Decoder.js


BIN
static/ezuikit/ezuikit_static/PlayCtrlWasm/playCtrl3/noWorker/Decoder.wasm


Fichier diff supprimé car celui-ci est trop grand
+ 1257 - 0
static/ezuikit/ezuikit_static/css/component.css


+ 354 - 0
static/ezuikit/ezuikit_static/css/inspectTheme.css

@@ -0,0 +1,354 @@
+.BMap_noprint button[title="倾斜"] {
+  display: none;
+}
+.BMap_noprint button[title="恢复"] {
+  display: none;
+}
+/* .anchorBL{
+  display:none;  
+}  */
+.BMap_cpyCtrl {
+  display: none;
+}
+
+.inspect-event-item {
+  padding-left: 12.5px;
+  position: relative;
+  border-left: 1px solid #d9d9d9;
+  margin-left: 20.5px;
+  padding-bottom: 16px;
+  color: #595959;
+}
+
+.inspect-event-item:last-child {
+  border-left: 1px solid transparent;
+}
+
+.inspect-event-item-header-wrap {
+  margin-top: -4px;
+}
+.inspect-event-item:first-child .inspect-event-item-header-wrap{
+  padding-top: 0;
+}
+
+.inspect-event-item-header {
+  width: 240px;
+  height: 32px;
+  background: #F5F5F5;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  cursor: pointer;
+}
+
+.inspect-event-item-header-left {
+  display: flex;
+  align-items: center;
+  padding-left: 9px;
+}
+
+.inspect-event-item-header-right, .inspect-event-item-body-info-opr {
+  padding-right: 8px;
+}
+.inspect-event-item-body-info-opr-icon{
+  color: #595959;
+  cursor: pointer;
+}
+.inspect-event-item-body-info-opr-icon:hover{
+  color: #407AFF;
+}
+.inspect-event-item-header-toggle {
+  width: 16px;
+  height: 32px;
+  cursor: pointer;
+  display: block;
+  padding: 8px 0;
+  box-sizing: border-box;
+}
+
+.inspect-event-item-time {
+  padding-left: 9px;
+}
+
+.inspect-event-item-status-wrap {
+  position: absolute;
+  height: 28px;
+  background: #fff;
+  top: 4px;
+  left: -5.5px;
+}
+.inspect-event-item:first-child .inspect-event-item-status-wrap {
+  top: 0;
+  padding-top: 5px;
+}
+
+.inspect-event-item-status {
+  width: 10px;
+  height: 10px;
+  background: #407AFF;
+  border-radius: 100%;
+  display: inline-block;
+}
+
+.storage .inspect-event-item-status {
+  background: #FAAD14;
+}
+
+.storage-error .inspect-event-item-status{
+  background: #FF4D4F;
+}
+.storage-error .inspect-event-item-header-left,
+.storage-error .inspect-event-item-time {
+  color: #FF4D4F;
+}
+
+.inspect-event-item-time {
+  font-size: 12px;
+  color: #262626;
+}
+
+.inspect-event-item-body {
+  width: 240px;
+  background: #FAFAFA;
+  padding-top:  8px;
+ 
+}
+.inspect-event-item-img {
+  width: 224px;
+  height: 126px;
+  margin: 0 8px;
+  display: block;
+  cursor: pointer;
+}
+
+.inspect-event-item-body-info {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.inspect-event-item-body-info-tag {
+  max-width: 140px;
+  background: #FFF1F0;
+  border-radius: 2px;
+  text-align: center;
+  margin: 8px;
+  height: 24px;
+  line-height: 24px;
+  padding: 0 8px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.inspect-event-item-body-info-tag-label{
+  font-size: 12px;
+  color: #FF4D4F;
+}
+
+
+.inspect-event-detail-wrap {
+  width: 0;
+  overflow: auto;
+  padding: 0;
+  box-sizing: border-box;
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 9;
+  background: #ffffff;
+  transition: width 0.15s ease 0s;
+}
+
+.inspect-event-detail-wrap.show {
+  width: 290px;
+}
+
+.inspectEventDetail-header {
+  display: flex;
+  align-items: center;
+  padding: 16px 16px;
+}
+
+.inspectEventDetail-back {
+  fill: #595959;
+  cursor: pointer;
+  margin-right: 8px;
+  display: flex;
+  align-items: center;
+}
+
+.inspectEventDetail-type {
+  height: 22px;
+  font-size: 14px;
+  color: #262626;
+  line-height: 22px;
+  font-weight: bold;
+}
+.inspectEventDetail-content {
+  padding: 0 16px 24px;
+  box-sizing: border-box;
+}
+
+.inspectEventDetail-content-info {
+  font-size: 14px;
+  color: #262626;
+  line-height: 22px;
+  overflow: hidden;
+}
+
+.inspectEventDetail-content-info-item-title {
+  margin: 24px 0 4px;
+}
+
+.inspectEventDetail-content-info-item-value {
+  color: #595959;
+}
+
+.inspectEventDetail-content-info-item-title-required:before {
+  display: inline-block;
+  margin-right: 4px;
+  color: #ff4d4f;
+  font-size: 14px;
+  font-family: SimSun,sans-serif;
+  line-height: 1;
+  content: "*";
+}
+
+.inspectEventDetail-footer {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  background: #fff;
+  padding: 16px 0;
+  right: 0;
+  text-align: center;
+}
+
+.inspectEventDetail-footer-btn {
+  margin: 0 4px;
+}
+
+.inspectEventDetail-content-img-tips,
+.inspectEventDetail-content-video-tips {
+  font-size: 14px;
+  color: #407AFF;
+  line-height: 22px;
+  margin: 0 0 8px;
+}
+
+.inspectEventDetail-content-img-detail,
+.inspectEventDetail-content-video-detail {
+  display: block;
+  width: 224px;
+  height: 126px;
+  cursor: pointer;
+}
+
+.video-stroage-exceptional-status-tips-wrap {
+  width: 100%;
+  height: 100%;
+  color: #fff;
+  text-align: center;
+  cursor: default;
+}
+
+.video-stroage-exceptional-status-icon {
+  font-size: 16px;
+  padding: 40px 0 0px;
+  display: flex;
+  justify-content: center;
+}
+
+.video-stroage-exceptional-status-tips-error .video-stroage-exceptional-status-icon{
+  padding: 40px 0 8px;
+}
+
+.video-stroage-exceptional-status-tips {
+  font-size: 14px;
+  line-height: 22px;
+}
+
+.inspectEventDetail-content-video-timer {
+  display: flex;
+  align-items: center;
+}
+
+.video-recording-time-wrap {
+  height: 24px;
+  background: #FF5C5C;
+  border-radius: 12px;
+  padding: 0 24px;
+  line-height: 24px;
+  display: flex;
+  align-items: center;
+  color: #fff;
+}
+
+.video-recording-time {
+  font-size: 14px;
+  color: #FFFFFF;
+  letter-spacing: 0;
+  font-weight: 400;
+  margin-left: 8px;
+}
+
+.inspectEventDetail-stop-btn {
+  margin-left: 12px;
+}
+
+.inspectEventDetail-delete-confirm,
+.inspectEventDetail-back-confirm {
+  width: 288px;
+  padding: 12px 8px;
+  box-sizing: border-box;
+}
+.inspectEventDetail-delete-confirm-title,
+.inspectEventDetail-back-confirm-title {
+  display: flex;
+}
+
+.inspectEventDetail-delete-confirm-title-label,
+.inspectEventDetail-back-confirm-title-label {
+  font-size: 16px;
+  color: #262626;
+  line-height: 24px;
+  font-weight: bold;
+}
+
+.inspectEventDetail-delete-confirm-title svg,
+.inspectEventDetail-back-confirm-title svg {
+  color: #FAAD14 ;
+  margin-right: 16px;
+}
+.inspectEventDetail-delete-confirm-btns,
+.inspectEventDetail-back-confirm-btns {
+  margin: 24px 0 0;
+  text-align: right;
+}
+
+.inspectEventDetail-delete-confirm-btns .ezuikit-btn,
+.inspectEventDetail-back-confirm-btns .ezuikit-btn {
+  margin:  0 4px;
+}
+
+/* .inspect-event-box及其子元素滚动条效果设置 */
+
+
+.inspect-event-box::-webkit-scrollbar,
+.inspect-event-box *::-webkit-scrollbar {
+  width: 10px
+}
+
+.inspect-event-box::-webkit-scrollbar-thumb,
+.inspect-event-box *::-webkit-scrollbar-thumb {
+  border-radius: 10px!important;
+  -webkit-box-shadow: inset 0 0 5px #8C8C8C!important;
+  background: #8C8C8C!important;
+  border: 3px solid #fff!important
+}
+
+.inspect-event-box::-webkit-scrollbar-track,
+.inspect-event-box *::-webkit-scrollbar-track {
+  border-radius: 0
+}

+ 126 - 0
static/ezuikit/ezuikit_static/css/theme copy.css

@@ -0,0 +1,126 @@
+.footer-controls .theme-icon-item {
+  margin: 0 1%;
+}
+
+.footer-controls.themeEditing .theme-icon-item {
+  position: relative;
+  /* margin: 0 8px; */
+}
+
+.footer-controls .footer-controls-left {
+  margin-left: 12px;
+}
+
+.footer-controls.themeEditing .footer-controls-left .theme-icon-item {
+  /* margin-left: 12px; */
+}
+
+.footer-controls.themeEditing .footer-controls-right .theme-icon-item {
+  /* margin-right: 12px; */
+}
+
+.footer-controls .theme-icon-item .icon-move {
+  display: none;
+}
+
+.footer-controls.themeEditing .theme-icon-item:hover .icon-move {
+  display: block;
+}
+
+.footer-controls.themeEditing .footer-controls-left .theme-icon-item:first-child .icon-move.left {
+  display: none;
+}
+
+.footer-controls.themeEditing .footer-controls-left .theme-icon-item:nth-last-child(1) .icon-move.right {
+  display: none;
+}
+
+.footer-controls.themeEditing .theme-icon-item:first-child .icon-move.left {
+  display: none;
+}
+
+.footer-controls.themeEditing .theme-icon-item:nth-last-child(1) .icon-move.right {
+  display: none;
+}
+
+.footer-controls .footer-controls-right {
+  margin-right: 12px;
+}
+
+.footer-controls.themeEditing .footer-controls-right .theme-icon-item:first-child .icon-move.left {
+  display: none;
+}
+
+.footer-controls.themeEditing .footer-controls-right .theme-icon-item:nth-last-child(1) .icon-move.right {
+  display: none;
+}
+
+.header-controls .theme-icon-item {
+  margin: 0 1%;
+}
+
+.header-controls.themeEditing .theme-icon-item {
+  position: relative;
+  /* margin: 0 8px; */
+}
+
+.header-controls.themeEditing .header-controls-left {
+  margin-left: 12px;
+}
+
+.header-controls.themeEditing .header-controls-right {
+  margin-right: 12px;
+}
+
+.header-controls .theme-icon-item .icon-move {
+  display: none;
+}
+
+.header-controls.themeEditing .theme-icon-item:hover .icon-move {
+  display: block;
+}
+
+.header-controls.themeEditing .header-controls-left .theme-icon-item:first-child .icon-move.left {
+  display: none;
+}
+
+.header-controls.themeEditing .header-controls-left .theme-icon-item:nth-last-child(1) .icon-move.right {
+  display: none;
+}
+
+.header-controls.themeEditing .header-controls-right .theme-icon-item:first-child .icon-move.left {
+  display: none;
+}
+
+.header-controls.themeEditing .header-controls-right .theme-icon-item:nth-last-child(1) .icon-move.right {
+  display: none;
+}
+
+
+.time-area {
+  position: absolute;
+  color: #FFFFFF;
+  width: 68px;
+  height: 24px;
+  line-height: 24px;
+  background: rgba(0, 0, 0, 0.5);
+  border-radius: 12px;
+  display: none;
+  align-content: center;
+  left: calc(50% - 34px);
+  top: -30px;
+  align-items: center;
+  justify-content: space-around;
+  padding-left: 4px;
+  z-index: 9999999;
+
+}
+
+.time-area .dot {
+  display: inline-block;
+  width: 8px;
+  height: 8px;
+  background: red;
+  border-radius: 100%;
+  margin: 0 4px 1px 4px;
+}

+ 140 - 0
static/ezuikit/ezuikit_static/css/theme.css

@@ -0,0 +1,140 @@
+.footer-controls .theme-icon-item {
+  margin: 0 1%;
+}
+
+.footer-controls.themeEditing .theme-icon-item {
+  position: relative;
+  /* margin: 0 8px; */
+}
+
+.footer-controls .footer-controls-left {
+  margin-left: 12px;
+}
+
+.footer-controls.themeEditing .footer-controls-left .theme-icon-item {
+  /* margin-left: 12px; */
+}
+
+.footer-controls.themeEditing .footer-controls-right .theme-icon-item {
+  /* margin-right: 12px; */
+}
+
+.footer-controls .theme-icon-item .icon-move {
+  display: none;
+}
+
+.footer-controls.themeEditing .theme-icon-item:hover .icon-move {
+  display: block;
+}
+
+.footer-controls.themeEditing .footer-controls-left .theme-icon-item:first-child .icon-move.left {
+  display: none;
+}
+
+.footer-controls.themeEditing .footer-controls-left .theme-icon-item:nth-last-child(1) .icon-move.right {
+  display: none;
+}
+
+.footer-controls .footer-controls-right {
+  margin-right: 12px;
+}
+
+.footer-controls.themeEditing .footer-controls-right .theme-icon-item:first-child .icon-move.left {
+  display: none;
+}
+
+.footer-controls.themeEditing .footer-controls-right .theme-icon-item:nth-last-child(1) .icon-move.right {
+  display: none;
+}
+
+.header-controls .theme-icon-item {
+  margin: 0 1%;
+}
+
+.header-controls.themeEditing .theme-icon-item {
+  position: relative;
+  /* margin: 0 8px; */
+}
+
+.header-controls.themeEditing .header-controls-left {
+  margin-left: 12px;
+}
+
+.header-controls.themeEditing .header-controls-right {
+  margin-right: 12px;
+}
+
+.header-controls .theme-icon-item .icon-move {
+  display: none;
+}
+
+.header-controls.themeEditing .theme-icon-item:hover .icon-move {
+  display: block;
+}
+
+.header-controls.themeEditing .header-controls-left .theme-icon-item:first-child .icon-move.left {
+  display: none;
+}
+
+.header-controls.themeEditing .header-controls-left .theme-icon-item:nth-last-child(1) .icon-move.right {
+  display: none;
+}
+
+.header-controls.themeEditing .header-controls-right .theme-icon-item:first-child .icon-move.left {
+  display: none;
+}
+
+.header-controls.themeEditing .header-controls-right .theme-icon-item:nth-last-child(1) .icon-move.right {
+  display: none;
+}
+
+
+.time-area {
+  position: absolute;
+  color: #FFFFFF;
+  width: 68px;
+  height: 24px;
+  line-height: 24px;
+  background: rgba(0, 0, 0, 0.5);
+  border-radius: 12px;
+  display: none;
+  align-content: center;
+  left: calc(50% - 34px);
+  top: -30px;
+  align-items: center;
+  justify-content: space-around;
+  padding-left: 4px;
+  z-index: 9999999;
+
+}
+
+.time-area .dot {
+  display: inline-block;
+  width: 8px;
+  height: 8px;
+  background: red;
+  border-radius: 100%;
+  margin: 0 4px 1px 4px;
+}
+
+
+/* .footer-controls.themeEditing .theme-icon-item {
+  position: relative;
+  margin: 0 8px;
+}
+.footer-controls.themeEditing .footer-controls-left .theme-icon-item:nth-child(1) .ezuikit-theme-icon >span:first-child{
+  display: none!important;
+}
+.footer-controls.themeEditing .footer-controls-left .theme-icon-item:nth-last-child(2) .ezuikit-theme-icon >span:nth-child(3){
+  display: none!important;
+}
+
+.footer-controls.themeEditing .theme-icon-item:hover .ezuikit-theme-icon {
+  display: block!important;
+}
+.footer-controls.themeEditing .footer-controls-right .theme-icon-item:nth-child(1) .ezuikit-theme-icon >span:first-child{
+  display: none!important;
+}
+.footer-controls.themeEditing .footer-controls-right .theme-icon-item:nth-last-child(1) .ezuikit-theme-icon >span:nth-child(3){
+  display: none!important;
+} */

BIN
static/ezuikit/ezuikit_static/imgs/bg.png


+ 33 - 0
static/ezuikit/ezuikit_static/imgs/bg.svg

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="1920px" height="1080px" viewBox="0 0 1920 1080" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>视频背景图</title>
+    <defs>
+        <rect id="path-1" x="0" y="0" width="1920" height="1080"></rect>
+        <filter x="0.0%" y="0.0%" width="100.0%" height="100.0%" filterUnits="objectBoundingBox" id="filter-2">
+            <feGaussianBlur stdDeviation="0" in="SourceGraphic"></feGaussianBlur>
+        </filter>
+        <linearGradient x1="6.42733681%" y1="61.4046072%" x2="84.9937231%" y2="19.1492851%" id="linearGradient-4">
+            <stop stop-color="#9DC2FE" stop-opacity="0" offset="0%"></stop>
+            <stop stop-color="#648FFC" stop-opacity="0.129889642" offset="100%"></stop>
+        </linearGradient>
+        <linearGradient x1="91.8908498%" y1="82.8715916%" x2="45.1536245%" y2="-4.31442764%" id="linearGradient-5">
+            <stop stop-color="#9DC2FE" stop-opacity="0" offset="0%"></stop>
+            <stop stop-color="#648FFC" stop-opacity="0.129889642" offset="100%"></stop>
+        </linearGradient>
+        <linearGradient x1="94.5535203%" y1="72.2238976%" x2="-8.96417241%" y2="9.01768502%" id="linearGradient-6">
+            <stop stop-color="#9DC2FE" stop-opacity="0" offset="0%"></stop>
+            <stop stop-color="#648FFC" stop-opacity="0.129889642" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Cam-Thumbnail">
+            <mask id="mask-3" fill="white">
+                <use xlink:href="#path-1"></use>
+            </mask>
+            <use id="Cam-Mask" fill="#18191C" filter="url(#filter-2)" xlink:href="#path-1"></use>
+            <circle id="椭圆形" fill="url(#linearGradient-4)" mask="url(#mask-3)" cx="1868.8" cy="870.4" r="394.24"></circle>
+            <circle id="椭圆形备份-2" fill="url(#linearGradient-5)" mask="url(#mask-3)" cx="0" cy="143.36" r="394.24"></circle>
+            <ellipse id="椭圆形备份-3" fill-opacity="0.45" fill="url(#linearGradient-6)" mask="url(#mask-3)" cx="427.52" cy="350.72" rx="161.28" ry="158.72"></ellipse>
+        </g>
+    </g>
+</svg>

BIN
static/ezuikit/ezuikit_static/imgs/empty.png


BIN
static/ezuikit/ezuikit_static/imgs/end.png


+ 52 - 0
static/ezuikit/ezuikit_static/imgs/fallback.svg

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 23.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 225 126" style="enable-background:new 0 0 225 126;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#F5F5F5;}
+	.st1{filter:url(#Adobe_OpacityMaskFilter);}
+	.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
+	.st3{mask:url(#mask-2_1_);}
+	.st4{fill:#BFBFBF;}
+	.st5{filter:url(#Adobe_OpacityMaskFilter_1_);}
+	.st6{mask:url(#mask-2_2_);}
+</style>
+<title>加载失败@3x</title>
+<rect x="0.7" class="st0" width="224" height="126"/>
+<defs>
+	<filter id="Adobe_OpacityMaskFilter" filterUnits="userSpaceOnUse" x="95.1" y="48.4" width="18.7" height="29.2">
+		<feColorMatrix  type="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0"/>
+	</filter>
+</defs>
+<mask maskUnits="userSpaceOnUse" x="95.1" y="48.4" width="18.7" height="29.2" id="mask-2_1_">
+	<g class="st1">
+		<rect id="path-1_1_" x="0.7" class="st2" width="224" height="126"/>
+	</g>
+</mask>
+<g class="st3">
+	<g id="形状结合" transform="translate(94.326510, 48.000000)">
+		<path class="st4" d="M16.7,0.4c0.1,0,0.2,0,0.2,0l-0.6,2.5L5,2.9c-0.9,0-1.7,0.7-1.7,1.6l0,0.1v12.5l6.4-4.5c1-0.7,2.3-0.7,3.3,0
+			l0.2,0.1l6.4,5l-0.8,2.6l-7.1-5.6c-0.1-0.1-0.3-0.1-0.4-0.1l-0.1,0l-7.8,5.5v5.2c0,0.9,0.7,1.6,1.6,1.7l0.2,0l11.7,0l-0.7,2.5
+			L5,29.6c-2.3,0-4.1-1.8-4.2-4l0-0.2V4.6c0-2.3,1.8-4.1,4-4.2l0.2,0H16.7z"/>
+	</g>
+</g>
+<defs>
+	<filter id="Adobe_OpacityMaskFilter_1_" filterUnits="userSpaceOnUse" x="112.8" y="48.4" width="17.3" height="29.2">
+		<feColorMatrix  type="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0"/>
+	</filter>
+</defs>
+<mask maskUnits="userSpaceOnUse" x="112.8" y="48.4" width="17.3" height="29.2" id="mask-2_2_">
+	<g class="st5">
+		<rect id="path-1_2_" x="0.7" class="st2" width="224" height="126"/>
+	</g>
+</mask>
+<g class="st6">
+	
+		<g transform="translate(121.479530, 63.000000) rotate(-360.000000) translate(-121.479530, -63.000000) translate(111.979530, 48.000000)">
+		<path class="st4" d="M13.9,0.4c2.3,0,4.1,1.8,4.2,4l0,0.2v20.7c0,2.3-1.8,4.1-4,4.2l-0.2,0l-13.1,0l0.7-2.5l12.3,0
+			c0.9,0,1.7-0.7,1.7-1.6l0-0.1V4.6c0-0.9-0.8-1.7-1.8-1.7l-12.6,0l0.6-2.5L13.9,0.4z M4.4,17.7l6.8,5.3c0.5,0.4,0.6,1.2,0.2,1.8
+			c-0.4,0.5-1.1,0.6-1.6,0.3L9.6,25l-6-4.7L4.4,17.7z M8.6,5.4c2.5,0,4.6,2.1,4.6,4.6s-2.1,4.6-4.6,4.6S4,12.5,4,10S6,5.4,8.6,5.4z
+			 M8.6,7.9c-1.2,0-2.1,0.9-2.1,2.1s0.9,2.1,2.1,2.1c1.2,0,2.1-0.9,2.1-2.1S9.7,7.9,8.6,7.9z"/>
+	</g>
+</g>
+</svg>

BIN
static/ezuikit/ezuikit_static/imgs/start.png


Fichier diff supprimé car celui-ci est trop grand
+ 1522 - 0
static/ezuikit/ezuikit_static/rec/datepicker.js


Fichier diff supprimé car celui-ci est trop grand
+ 36 - 0
static/ezuikit/ezuikit_static/rec/datepicker.min.css


+ 19 - 0
static/ezuikit/ezuikit_static/rec/datepicker.zh-CN.js

@@ -0,0 +1,19 @@
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) :
+  typeof define === 'function' && define.amd ? define(['jquery'], factory) :
+  (factory(global.jQuery));
+}(this, (function ($) {
+  'use strict';
+
+  $.fn.datepicker.languages['zh-CN'] = {
+    format: 'yyyy年mm月dd日',
+    days: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
+    daysShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
+    daysMin: ['日', '一', '二', '三', '四', '五', '六'],
+    months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    monthsShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+    weekStart: 1,
+    yearFirst: true,
+    yearSuffix: '年'
+  };
+})));

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 0
static/ezuikit/ezuikit_static/rec/jquery.min.js


+ 145 - 0
static/ezuikit/ezuikit_static/speed/speed.css

@@ -0,0 +1,145 @@
+.speed-select {
+  text-align: center;
+  display: block;
+  width: 120px;
+  background: rgb(255, 255, 255);
+  box-shadow: rgb(0 0 0 / 10%) 0px 3px 20px 0px;
+  border-radius: 2px;
+  padding: 0px;
+  position: absolute;
+  bottom: 48px;
+  left: -30px;
+  color: rgba(0, 0, 0, 0.85);
+}
+.speed-select li:hover{
+  background: #1890FF1a;
+ }
+ .speed-select ::after{
+    position: absolute;
+    bottom: -16px;
+    left: 40%;
+    content: ' ';
+    border: 8px solid transparent;
+    border-top: 8px solid #FFFFFF;
+ }
+  /*避免触发onmouseleave事件*/
+  .speed-select ::before{
+    position: absolute;
+    bottom: -16px;
+    left: 0;
+    content: ' ';
+    border: 8px solid transparent;
+    border-top: 8px solid transparent;
+    width: 100%;
+  }
+ .speed-select.mobile {
+  display: block;
+  position: fixed;
+  z-index: 2;
+  left: 0;
+  /* top: 0; */
+  top: calc(100vh - 400px);
+
+  width: 90%;
+  margin: auto;
+  margin: 0px 5% 50px;
+  border-radius: 10px;
+  padding: 10px 0;
+ }
+ .hd.speed-select.mobile {
+   height: 90px;
+ }
+ .speed.speed-select.mobile {
+   height: 180px;
+   top: calc(100vh - 400px);
+ }
+ .speed-select.mobile .selectOption.active{
+   color: #648FFC;
+ }
+ .speed-select .selectOption.active{
+  color: #648FFC;
+}
+ .speed-select.mobile .selectOption.cancel{
+  position: absolute;background: #FFFF;
+  width: 100%;
+  margin-top: 30px;
+  height: 45px;
+  text-align: center;
+  line-height: 45px;
+  list-style: none;
+  cursor: pointer;
+  font-size: 16px;
+  color: rgba(0, 0, 0, .85);
+  border-radius: 10px;
+ }
+ .speed-select.mobile ::after{
+   display: none;
+}
+.speed-select-mask {
+  position: fixed;
+  width: 100%;
+  background: rgba(0,0,0,0.40);
+  /* height: 100vh; */
+  top: 0;
+  z-index: 1;
+  left: 0;
+  bottom: 0;
+}
+
+.speed-select.mobile.expend {
+  bottom: 0;
+  top: auto;
+  width: 240px;
+  right: 0;
+  left: auto;
+  height: 100vw;
+  margin: 0;
+  background: rgba(0,0,0,0.75);
+  color: #FFFFFF;
+
+  display: flex;
+  justify-content: center;
+  flex-direction: column;
+  align-items: center;
+  padding: 0;
+  border-radius: 0;
+}
+
+.speed-select.mobile.expend li{
+  color: #FFFFFF;
+}
+.speed-select.mobile.expend li:first-child{
+  margin-top: 40%;
+}
+.speed-select.mobile.expend .selectOption.cancel{
+    left: 0;
+    top: 0;
+    width: 40px;
+    font-size: 0;
+    background: none;
+    margin-top: 0;
+ }
+ .speed-select.mobile.expend .selectOption.cancel::before {
+  content: "";
+  display: block;
+  width: 16px;
+  height: 1px;
+  background: #FFFFFF;
+  border: none;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%) rotate(45deg);
+}
+.speed-select.mobile.expend .selectOption.cancel::after {
+  content: "";
+  display: block;
+  width: 1px;
+  height: 16px;
+  background: #FFFFFF;
+  border: none;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%) rotate(45deg);
+}

Fichier diff supprimé car celui-ci est trop grand
+ 5497 - 0
static/ezuikit/ezuikit_static/talk/adapeter.js


Fichier diff supprimé car celui-ci est trop grand
+ 3507 - 0
static/ezuikit/ezuikit_static/talk/janus.js


+ 343 - 0
static/ezuikit/ezuikit_static/talk/tts-v4.js

@@ -0,0 +1,343 @@
+// We make use of this 'server' variable to provide the address of the
+// REST Janus API. By default, in this example we assume that Janus is
+// co-located with the web server hosting the HTML pages but listening
+// on a different port (8088, the default for HTTP in Janus), which is
+// why we make use of the 'window.location.hostname' base address. Since
+// Janus can also do HTTPS, and considering we don't really want to make
+// use of HTTP for Janus if your demos are served on HTTPS, we also rely
+// on the 'window.location.protocol' prefix to build the variable, in
+// particular to also change the port used to contact Janus (8088 for
+// HTTP and 8089 for HTTPS, if enabled).
+// In case you place Janus behind an Apache frontend (as we did on the
+// online demos at http://janus.conf.meetecho.com) you can just use a
+// relative path for the variable, e.g.:
+//
+// 		var server = "/janus";
+//
+// which will take care of this on its own.
+//
+//
+// If you want to use the WebSockets frontend to Janus, instead, you'll
+// have to pass a different kind of address, e.g.:
+//
+// 		var server = "ws://" + window.location.hostname + ":8188";
+//
+// Of course this assumes that support for WebSockets has been built in
+// when compiling the server. WebSockets support has not been tested
+// as much as the REST API, so handle with care!
+//
+//
+// If you have multiple options available, and want to let the library
+// autodetect the best way to contact your server (or pool of servers),
+// you can also pass an array of servers, e.g., to provide alternative
+// means of access (e.g., try WebSockets first and, if that fails, fall
+// back to plain HTTP) or just have failover servers:
+//
+//		var server = [
+//			"ws://" + window.location.hostname + ":8188",
+//			"/janus"
+//		];
+//
+// This will tell the library to try connecting to each of the servers
+// in the presented order. The first working server will be used for
+// the whole session.
+//
+var server = null;
+if(window.location.protocol === 'http:')
+  //server = "http://" + window.location.hostname + ":9020/janus";
+  // yujianbo
+  server = "https://" + "10.80.21.211" + ":9022/janus";
+else
+  //server = "https://" + window.location.hostname + ":9022/janus";
+  // -yujianbo
+  server = "https://" + "10.80.21.211" + ":9022/janus";
+
+var janus = null;
+var tts = null;
+var opaqueId = "tts-"+Janus.randomString(12);
+
+var spinner = null;
+
+	// Initialize the library (all console debuggers enabled)
+	Janus.init({debug: "all", callback: function() {
+		window.stopTalk = function (){
+			janus.destroy();
+		}
+		// debugger;
+		window.startTalk = function() {
+			// Make sure the browser supports WebRTC
+			if(!Janus.isWebrtcSupported()) {
+				bootbox.alert("No WebRTC support... ");
+				return;
+			}
+
+			// if($('#tts_url').val().length == 0){
+			// 	bootbox.alert("Please input tts url... ");
+			// 	return;
+			// }
+
+			// $(this).attr('disabled', true).unbind('click');
+
+			// Create session
+			janus = new Janus(
+				{
+					server: window.EZUIKit.opt.rtcUrl,
+					// No "iceServers" is provided, meaning janus.js will use a default STUN server
+					// Here are some examples of how an iceServers field may look like to support TURN
+					// 		iceServers: [{urls: "turn:yourturnserver.com:3478", username: "janususer", credential: "januspwd"}],
+					// 		iceServers: [{urls: "turn:yourturnserver.com:443?transport=tcp", username: "janususer", credential: "januspwd"}],
+					// 		iceServers: [{urls: "turns:yourturnserver.com:443?transport=tcp", username: "janususer", credential: "januspwd"}],
+					// Should the Janus API require authentication, you can specify either the API secret or user token here too
+					//		token: "mytoken",
+					//	or
+					//		apisecret: "serversecret",
+					success: function() {
+						// Attach to tts plugin
+						janus.attach(
+							{
+								plugin: "rtcgw.plugin.tts",
+								opaqueId: opaqueId,
+								success: function(pluginHandle) {
+									// $('#details').remove();
+									tts = pluginHandle;
+									Janus.log("Plugin attached! (" + tts.getPlugin() + ", id=" + tts.getId() + ")");
+									// Negotiate WebRTC
+									//var url = "tts://61.130.6.23:8664/talk://D13781761:0:1:cas.ys7.com:6500?97fbd2a75fa94b7682c994d3d1fac8ca:ut.5porslgu79e9r7ca48z32k8abgl3rp58-77bhb6i7xr-1kmumtg-jkhy7pvfr:0:3"
+									
+
+									//var url = "tts://10.86.15.209:8664/talk://D13781761:0:1:cas.ys7.com:6500?32db2578ba7c4a84be22ecc0bcd0f8db:ut.5lqpkhim5m7cdk2y5w60g7hm9vd7i3v0-3d2pwhxe2t-11wx2ge-sh4yazbll:0:3"
+									//var url = "tts://10.86.15.209:8664/talk://D13781761:0:1:cas.ys7.com:6500"
+									//test12.ys.com
+									//var url = "tts://10.86.15.209:8664/talk://D08197169:0:1:cas.ys7.com:6500"
+									//test10.ys.com
+									//var url = "tts://10.86.29.210:8664/talk://D08197169:0:1:cas.ys7.com:6500"
+									var url = window.EZUIKit.opt.talkLink;
+									console.log("ttsUlr",url);
+									var body = { "request": "start", "url": url, "codec": "opus", "dir": "sendrecv", "audio_debug": 1};
+									//tts.send({"message": body});
+									Janus.debug("Trying a createOffer too (audio/video sendrecv)");
+									tts.createOffer(
+										{
+											// No media provided: by default, it's sendrecv for audio and video
+											media: { audio: true, video: false, data: false },	// Audio only
+											// If you want to test simulcasting (Chrome and Firefox only), then
+											// pass a ?simulcast=true when opening this demo page: it will turn
+											// the following 'simulcast' property to pass to janus.js to true
+											simulcast: false,
+											simulcast2: false,
+											success: function(jsep) {
+												Janus.debug("Got SDP!");
+												Janus.debug(jsep);
+												tts.send({"message": body, "jsep": jsep});
+												if(typeof window.EZUIKit.handleTalkSuccess !== 'undefined'){
+													window.EZUIKit.handleTalkSuccess();
+												}
+											},
+											error: function(error) {
+												Janus.error("WebRTC error:", error);
+											//	bootbox.alert("WebRTC error... " + JSON.stringify(error));
+											if(typeof window.EZUIKit.handleTalkError !== 'undefined'){
+												window.EZUIKit.handleTalkError(error);
+											}
+											}
+										});
+									// $('#start').removeAttr('disabled').html("Stop")
+									// 	.click(function() {
+									// 		$(this).attr('disabled', true);
+									// 		janus.destroy();
+									// 	});
+								},
+								error: function(error) {
+									console.error("  -- Error attaching plugin...", error);
+									bootbox.alert("Error attaching plugin... " + error);
+									if(window.EZUIKit.handleTalkError !== 'undefined'){
+										window.EZUIKit.handleTalkError(error);
+									}
+								},
+								consentDialog: function(on) {
+									Janus.debug("Consent dialog should be " + (on ? "on" : "off") + " now");
+									if(on) {
+										// Darken screen and show hint
+										// $.blockUI({
+										// 	message: '<div><img src="up_arrow.png"/></div>',
+										// 	css: {
+										// 		border: 'none',
+										// 		padding: '15px',
+										// 		backgroundColor: 'transparent',
+										// 		color: '#aaa',
+										// 		top: '10px',
+										// 		left: (navigator.mozGetUserMedia ? '-100px' : '300px')
+										// 	} });
+									} else {
+										// Restore screen
+										// $.unblockUI();
+									}
+								},
+								iceState: function(state) {
+									Janus.log("ICE state changed to " + state);
+								},
+								mediaState: function(medium, on) {
+									Janus.log("Janus " + (on ? "started" : "stopped") + " receiving our " + medium);
+								},
+								webrtcState: function(on) {
+									Janus.log("Janus says our WebRTC PeerConnection is " + (on ? "up" : "down") + " now");
+									// $("#audioleft").parent().unblock();
+								},
+								slowLink: function(uplink, lost) {
+									Janus.warn("Janus reports problems " + (uplink ? "sending" : "receiving") +
+										" packets on this PeerConnection (" + lost + " lost packets)");
+								},
+								onmessage: function(msg, jsep) {
+									Janus.debug(" ::: Got a message :::");
+									Janus.debug(msg);
+									if(jsep !== undefined && jsep !== null) {
+										Janus.debug("Handling SDP as well...");
+										Janus.debug(jsep);
+										tts.handleRemoteJsep({jsep: jsep});
+									}
+									var result = msg["result"];
+									if(result !== null && result !== undefined) {
+										if(result === "done") {
+											// The plugin closed
+											bootbox.alert("The TTS Test is over");
+											if(spinner !== null && spinner !== undefined)
+												spinner.stop();
+											spinner = null;
+											// $('#myaudio').remove();
+											//$('#waitingvideo').remove();
+											// $('#peeraudio').remove();
+											return;
+										}
+
+										if(result === "msg"){
+											if(typeof window.EZUIKit.handleTalkMessage !== 'undefined'){
+												window.EZUIKit.handleTalkMessage(msg);
+								      }
+                    }
+										// Any loss?
+										var status = result["status"];
+										if(status === "slow_link") {
+											//~ var bitrate = result["bitrate"];
+											//~ toastr.warning("The bitrate has been cut to " + (bitrate/1000) + "kbps", "Packet loss?", {timeOut: 2000});
+											toastr.warning("Janus apparently missed many packets we sent, maybe we should reduce the bitrate", "Packet loss?", {timeOut: 2000});
+										}
+									}
+								},
+								onlocalstream: function(stream) {
+									Janus.debug(" ::: Got a local stream :::");
+									Janus.debug(stream);
+
+									// if($('#myaudio').length === 0) {
+									// 	$('#audios').removeClass('hide').show();
+									// 	$('#audioleft').append('<audio id="myaudio" autoplay controls muted>Your browser does not support audio tag</audio>');
+									// }
+									Janus.attachMediaStream(document.getElementById("myaudio"), stream);
+									//$("#myaudio").get(0).muted = "muted";
+									if(tts.webrtcStuff.pc.iceConnectionState !== "completed" &&
+											tts.webrtcStuff.pc.iceConnectionState !== "connected") {
+										// $("#audioleft").parent().block({
+										// 	message: '<b>Publishing...</b>',
+										// 	css: {
+										// 		border: 'none',
+										// 		backgroundColor: 'transparent',
+										// 		color: 'white'
+										// 	}
+										// });
+										// No remote video yet
+										//$('#audioright').append('<video class="rounded centered" id="waitingvideo" width=320 height=240 />');
+										if(spinner == null) {
+											var target = document.getElementById('audioright');
+											//spinner = new Spinner({top:100}).spin(target);
+										} else {
+											spinner.spin();
+										}
+									}
+									var audioTracks = stream.getAudioTracks();
+									if(audioTracks === null || audioTracks === undefined || audioTracks.length === 0) {
+										// $('#myaudio').hide();
+									} else {
+										// $('#myaudio').removeClass('hide').show();
+										// document.getElementById('myaudio').play();
+									}
+								},
+								onremotestream: function(stream) {
+									Janus.debug(" ::: Got a remote stream :::");
+									Janus.debug(stream);
+									// if($('#peeraudio').length === 0) {
+									// 	$('#audios').removeClass('hide').show();
+									// 	// $('#audioright').append('<audio id="peeraudio" autoplay controls>Your browser does not support audio tag</audio>');
+									// 	// Show the video, hide the spinner and show the resolution when we get a playing event
+									// 	var audio = $('<audio id="peeraudio" autoplay controls playsinline preload="preload" loop="true"></audio>');
+									// 	audio = audio.get(0);
+									// 	audio.setAttribute("id", 'peeraudio');
+									// 	audio.setAttribute("preload","preload");
+									// 	// 自动播放解决苹果不兼容autoplay属性
+									// 	audio.setAttribute("loop",true);
+									// 	$('#audioright').append(audio);
+									// 	$("#peeraudio").bind("playing", function () {
+									// 		//$('#waitingvideo').remove();
+									// 		$('#peeraudio').removeClass('hide').show();
+									// 		if(spinner !== null && spinner !== undefined)
+									// 			spinner.stop();
+									// 		spinner = null;
+									// 	});
+									// }
+									Janus.attachMediaStream(document.getElementById("peeraudio"), stream);
+									var audioTracks = stream.getAudioTracks();
+									if(audioTracks === null || audioTracks === undefined || audioTracks.length === 0) {
+									//	$('#peeraudio').hide();
+									} else {
+									//	$('#peeraudio').removeClass('hide').show();
+										document.getElementById('peeraudio').play();
+									}
+								},
+								ondataopen: function(data) {
+									Janus.log("The DataChannel is available!");
+								},
+								ondata: function(data) {
+									Janus.debug("We got data from the DataChannel! " + data);
+								},
+								oncleanup: function() {
+									Janus.log(" ::: Got a cleanup notification :::");
+									if(spinner !== null && spinner !== undefined)
+										spinner.stop();
+									spinner = null;
+									// $('#myaudio').remove();
+									// //$('#waitingvideo').remove();
+									// $("#audioleft").parent().unblock();
+									// $('#peeraudio').remove();
+								}
+							});
+					},
+					error: function(error) {
+						Janus.error(error);
+						if(window.EZUIKit.handleTalkError !== 'undefined'){
+							window.EZUIKit.handleTalkError(error);
+						}
+					},
+					destroyed: function() {
+						// window.location.reload();
+					}
+				});
+			}
+
+	}});
+
+function checkEnter(event) {
+	var theCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
+	if(theCode == 13) {
+		sendData();
+		return false;
+	} else {
+		return true;
+	}
+}
+
+// Helper to parse query string
+function getQueryStringValue(name) {
+	name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
+	var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
+		results = regex.exec(location.search);
+	return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
+}
+

+ 294 - 227
static/h52.html

@@ -1,234 +1,301 @@
 <!DOCTYPE html>
-<html lang=zh-CN>
-	<head>
-		<meta charset="utf-8" />
-		<meta name="viewport"
-			content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-		<title>监控详情页</title>
-		<style type="text/css">
-			body {
-				margin: 0;
-				background-color: #f3f3f3;
-			}
-
-			/* iframe {
+<html lang="zh-CN">
+  <head>
+    <meta charset="utf-8" />
+    <meta
+      name="viewport"
+      content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"
+    />
+    <title>监控详情页</title>
+    <style type="text/css">
+      body {
+        margin: 0;
+        background-color: #f3f3f3;
+      }
+
+      /* iframe {
 				width: 375px;
 				height: 667px;
 				background-color: #fff;
 				box-sizing: content-box;
 				border: none;
 			} */
-			.btn-box {
-				margin-top: 20px;
-				display: flex;
-				flex-direction: row;
-				justify-content: space-around;
-				align-items: center;
-			}
-
-			.more,
-			.less {
-				flex: 1
-			}
-
-			img {
-				width: 100%;
-			}
-
-			.direc {
-				width: 150px;
-				height: 150px;
-				background: url('http://www.hnyfwlw.com:8006/bigdata_app/image/monitor/1.png');
-				background-size: 100% auto;
-				background-repeat: no-repeat;
-				position: relative;
-			}
-
-			.direc div {
-				width: 50px;
-				height: 50px;
-				position: absolute;
-			}
-
-			.top {
-				top: 0;
-				left: 50px
-			}
-
-			.bottom {
-				bottom: 0;
-				left: 50px
-			}
-
-			.left {
-				left: 0;
-				top: 50px
-			}
-
-			.right {
-				right: 0;
-				top: 50px
-			}
-
-			#box {
-				height: 300px;
-				width: 100%;
-				background: #000;
-			}
-
-			#dialog {
-				display: none;
-				width: 200px;
-				line-height: 80px;
-				background: rgba(0, 0, 0, .8);
-				color: #fff;
-				text-align: center;
-				position: absolute;
-				left: 50%;
-				margin-left: -100px;
-				border-radius: 4px;
-				z-index: 999;
-				top: 50%;
-				margin-top: -40px;
-			}
-
-			.imgBtn {
-				position: absolute;
-				width: 100%;
-				padding: 10px;
-				bottom: 0;
-				left: 0;
-				text-align: center;
-				color: #338cd9;
-				font-size: 16px;
-				box-sizing: border-box;
-			}
-			.imgBtn img{
-				display: inline-block;
-				width: 20px;
-				height: 20px;
-				vertical-align: middle;
-				margin-right: 2px;
-				margin-bottom: 3px;
-			}
-		</style>
-	</head>
-	<body>
-		<div id="box"></div>
-		<div id="dialog">
-
-		</div>
-		<div class="btn-box">
-			<div class="more" ontouchstart="configCamera('move', 8)" ontouchend="stopConfigCamera()">
-				<image src="http://www.hnyfwlw.com:8006/bigdata_app/image/monitor/3.png" mode="widthFix"></image>
-			</div>
-			<div class="direc">
-				<div class="top" ontouchstart="configCamera('move', 0)" ontouchend="stopConfigCamera()">
-
-				</div>
-				<div class="bottom" ontouchstart="configCamera('move', 1)" ontouchend="stopConfigCamera()">
-
-				</div>
-				<!-- <div class="photo" ontouchstart="configCamera('takephoto', '')">
-
-				</div> -->
-				<div class="left" ontouchstart="configCamera('move', 2)" ontouchend="stopConfigCamera()">
-
-				</div>
-				<div class="right" ontouchstart="configCamera('move', 3)" ontouchend="stopConfigCamera()">
-
-				</div>
-			</div>
-			<div class="less" ontouchstart="configCamera('move', 9)" ontouchend="stopConfigCamera()">
-				<image src="http://www.hnyfwlw.com:8006/bigdata_app/image/monitor/2.png" mode="widthFix"></image>
-			</div>
-		</div>
-		<div class="imgBtn">
-			<img src="images/image.png" />查看图片
-		</div>
-	</body>
-	<script src="./js/jquery.min.js"></script>
-	<!-- 微信 JS-SDK 如果不需要兼容小程序,则无需引用此 JS 文件。 -->
-	<!-- <script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> -->
-	<!-- uni 的 SDK -->
-	<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
-	<script type="text/javascript" src="http://www.hnyfwlw.com:8006/bigdata_app/js/ezuikit.js"></script>
-	<script type="text/javascript">
-		function configCamera(ctrl, movenum) {
-			if (ctrl == "takephoto") {
-				$.ajax({
-					type: "POST",
-					url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.camera_takephoto",
-					data: {
-						device_id: device_id,
-					}
-				}).then((res) => {
-					if (res.data.data) {
-						var data = JSON.parse(res.data.data);
-						var picUrl = data.data.picUrl;
-					} else {
-						console.log(res.data.message)
-					}
-				});
-			} else {
-				//上下左右、放大、缩小
-				$.ajax({
-					type: "POST",
-					url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.ctrl_camera",
-					data: {
-						device_id: device_id,
-						ctrl: ctrl,
-						movenum: movenum,
-					}
-				}).then((res) => {
-					$('#dialog').html('指令下发成功,请等待...').stop().show(500).delay(3000).hide(500)
-				})
-			}
-		}
-
-		function stopConfigCamera() {
-			$.ajax({
-				type: "POST",
-				url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.ctrl_camera",
-				data: {
-					device_id: device_id,
-					ctrl: "stop",
-				},
-			});
-		}
-		//上下左右和拍照
-		var str = window.location.search.substr(1)
-		var arr = str.split('&')
-		console.log(str);
-		var device_id = arr[0].split('=')[1]
-		console.log(device_id);
-		var accessToken = arr[1].split('=')[1]
-		console.log(accessToken)
-		$.ajax({
-			type: "POST",
-			url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.addr_camera",
-			data: {
-				device_id: device_id,
-			}
-		}).then((res) => {
-			var data = res.data;
-			
-			var hlsHdSrc = data.hlsHd || data.hls;
-			console.log(hlsHdSrc)
-			var rtmpHdSrc = data.rtmpHd;
-			var playHtml =
-				`<video id="myPlayer" autoplay   poster='' controls playsInline  webkit-playsinline src=${hlsHdSrc}  style="width:100%; height:100%;"></video>`;
-			$("#box").html(playHtml)
-			var myVideo = new EZUIKit.EZUIPlayer("myPlayer");
-			setTimeout(() => {
-				myVideo.play();
-			}, 150);
-
-		})
-		document.addEventListener('UniAppJSBridgeReady', function() {
-			$('.imgBtn').click(function() {
-				uni.navigateTo({url:'/pages/monitor/imagelist?id=' + device_id})
-			})
-		});
-	</script>
-</html>
+      .btn-box {
+        margin-top: 20px;
+        display: flex;
+        flex-direction: row;
+        justify-content: space-around;
+        align-items: center;
+      }
+
+      .more,
+      .less {
+        flex: 1;
+      }
+
+      img {
+        width: 100%;
+      }
+
+      .direc {
+        width: 150px;
+        height: 150px;
+        background: url('http://www.hnyfwlw.com:8006/bigdata_app/image/monitor/1.png');
+        background-size: 100% auto;
+        background-repeat: no-repeat;
+        position: relative;
+      }
+
+      .direc div.photo {
+        bottom: -40px;
+        left: 50%;
+        transform: translateX(-50%);
+        text-align: center;
+        font-size: 14px;
+        line-height: 40px;
+        color: #19be6b;
+        height: 40px;
+        padding: 0 20px;
+        border-radius: 10px;
+        background-color: #fff;
+      }
+
+      .direc div {
+        width: 50px;
+        height: 50px;
+        position: absolute;
+      }
+
+      .top {
+        top: 0;
+        left: 50px;
+      }
+
+      .bottom {
+        bottom: 0;
+        left: 50px;
+      }
+
+      .left {
+        left: 0;
+        top: 50px;
+      }
+
+      .right {
+        right: 0;
+        top: 50px;
+      }
+
+      #box {
+        height: 300px;
+        width: 100%;
+        background: #000;
+      }
+
+      #dialog {
+        display: none;
+        width: 200px;
+        line-height: 80px;
+        background: rgba(0, 0, 0, 0.8);
+        color: #fff;
+        text-align: center;
+        position: absolute;
+        left: 50%;
+        margin-left: -100px;
+        border-radius: 4px;
+        z-index: 999;
+        top: 50%;
+        margin-top: -40px;
+      }
+
+      .imgBtn {
+        position: absolute;
+        width: 100%;
+        padding: 10px;
+        bottom: 0;
+        left: 0;
+        text-align: center;
+        color: #338cd9;
+        font-size: 16px;
+        box-sizing: border-box;
+      }
+
+      .imgBtn img {
+        display: inline-block;
+        width: 20px;
+        height: 20px;
+        vertical-align: middle;
+        margin-right: 2px;
+        margin-bottom: 3px;
+      }
+    </style>
+  </head>
+  <body>
+    <div id="box"></div>
+    <div id="dialog"></div>
+    <div class="btn-box">
+      <div
+        class="more"
+        ontouchstart="configCamera('move', 8)"
+        ontouchend="stopConfigCamera()"
+      >
+        <image
+          src="http://www.hnyfwlw.com:8006/bigdata_app/image/monitor/3.png"
+          mode="widthFix"
+        ></image>
+      </div>
+      <div class="direc">
+        <div
+          class="top"
+          ontouchstart="configCamera('move', 0)"
+          ontouchend="stopConfigCamera()"
+        ></div>
+        <div
+          class="bottom"
+          ontouchstart="configCamera('move', 1)"
+          ontouchend="stopConfigCamera()"
+        ></div>
+        <div class="photo" ontouchstart="configCamera('takephoto', '')">
+          拍照
+        </div>
+        <div
+          class="left"
+          ontouchstart="configCamera('move', 2)"
+          ontouchend="stopConfigCamera()"
+        ></div>
+        <div
+          class="right"
+          ontouchstart="configCamera('move', 3)"
+          ontouchend="stopConfigCamera()"
+        ></div>
+      </div>
+      <div
+        class="less"
+        ontouchstart="configCamera('move', 9)"
+        ontouchend="stopConfigCamera()"
+      >
+        <image
+          src="http://www.hnyfwlw.com:8006/bigdata_app/image/monitor/2.png"
+          mode="widthFix"
+        ></image>
+      </div>
+    </div>
+    <div class="imgBtn"><img src="images/image.png" />查看图片</div>
+  </body>
+  <script src="./js/jquery.min.js"></script>
+  <!-- 微信 JS-SDK 如果不需要兼容小程序,则无需引用此 JS 文件。 -->
+  <!-- <script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> -->
+  <!-- uni 的 SDK -->
+  <script type="text/javascript" src="./js/uni.webview.1.5.2.js.js"></script>
+  <script type="text/javascript" src="./ezuikit/ezuikit.js"></script>
+  <!-- <script
+    type="text/javascript"
+    src="http://www.hnyfwlw.com:8006/bigdata_app/js/ezuikit.js"
+  ></script> -->
+  <script type="text/javascript">
+    const baseUrl = 'http://118.178.196.153:7000/iotprod-api/bigdata-api';
+
+    function configCamera(ctrl, movenum) {
+      if (ctrl == 'takephoto') {
+        $.ajax({
+          type: 'POST',
+          url:
+            baseUrl +
+            '/api/api_gateway?method=camera.camera_manage.camera_takephoto',
+          data: {
+            device_id: device_id,
+          },
+        }).then((res) => {
+          if (res.errorCode == 0) {
+            $('#dialog')
+              .html('拍照指令下发成功,请等待...')
+              .stop()
+              .show(500)
+              .delay(3000)
+              .hide(500);
+          } else {
+            console.log(res.data.message);
+          }
+        });
+      } else {
+        //上下左右、放大、缩小
+        $.ajax({
+          type: 'POST',
+          url:
+            baseUrl +
+            '/api/api_gateway?method=camera.camera_manage.ctrl_camera',
+          data: {
+            device_id: device_id,
+            ctrl: ctrl,
+            movenum: movenum,
+          },
+        }).then((res) => {
+          stopConfigCamera();
+          $('#dialog')
+            .html('指令下发成功,请等待...')
+            .stop()
+            .show(500)
+            .delay(3000)
+            .hide(500);
+        });
+      }
+    }
+
+    function stopConfigCamera() {
+      $.ajax({
+        type: 'POST',
+        url:
+          baseUrl + '/api/api_gateway?method=camera.camera_manage.ctrl_camera',
+        data: {
+          device_id: device_id,
+          ctrl: 'stop',
+        },
+      });
+    }
+
+    //上下左右和拍照
+    var str = window.location.search.substr(1);
+    var arr = str.split('&');
+
+    var device_id = arr[0].split('=')[1];
+    console.log(device_id);
+    var accessToken = arr[1].split('=')[1];
+    console.log(accessToken);
+    $.ajax({
+      type: 'POST',
+      url: baseUrl + '/api/api_gateway?method=camera.camera_manage.addr_camera',
+      data: {
+        device_id: device_id,
+      },
+    }).then((res) => {
+      console.log(
+        res.data,
+        '--------------------- res.data 获取地址',
+        JSON.stringify(res.data)
+      );
+      var data =
+        typeof res.data === 'string' ? eval('(' + res.data + ')') : res.data;
+      var hlsHdSrc = data.hlsHd;
+      console.log(hlsHdSrc);
+      var rtmpHdSrc = data.rtmpHd;
+      var playHtml = `<video id="myPlayer" autoplay   poster='' controls playsInline  webkit-playsinline  style="width:100%; height:100%;"></video>`;
+      $('#box').html(playHtml);
+      var myVideo = new EZUIKit.EZUIKitPlayer({
+        id: `myPlayer`,
+        url: data.ezopen,
+        accessToken: data.token,
+        handleError(err) {
+          console.warn(err, 'ezuikit player', data.token);
+        },
+      });
+      // setTimeout(() => {
+      //   myVideo.play();
+      // }, 150);
+    });
+    document.addEventListener('UniAppJSBridgeReady', function () {
+      $('.imgBtn').click(function () {
+        uni.navigateTo({ url: '/pages/monitor/imagelist?id=' + device_id });
+      });
+    });
+  </script>
+</html>

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
static/js/uni.webview.1.5.2.js.js


+ 1 - 1
unpackage/cache/apk/apkurl

@@ -1 +1 @@
-https://app.liuyingyong.cn/build/download/c47763e0-52dd-11ef-b2ac-e70cbd95aad0
+https://app.liuyingyong.cn/build/download/aa1a6f70-5871-11ef-8fd6-5f227bbca080

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/cache/apk/cmManifestCache.json


Fichier diff supprimé car celui-ci est trop grand
+ 5 - 5
unpackage/dist/build/app-plus/app-service.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
unpackage/dist/build/app-plus/app-view.js