From d259bd9cf2943926d1c8078ee0ce70a0aa1afef3 Mon Sep 17 00:00:00 2001
From: hanbaoshan <hanbaoshan@aiotlink.com>
Date: 星期四, 06 八月 2020 09:58:38 +0800
Subject: [PATCH] 实时监控/摄像机配置/数据栈配置布局调整,应用窗口调整,算法管理更换为应用中心

---
 src/pages/desktop/index/components/DFrame.vue          |   25 
 src/components/canvas/index.vue                        |    5 
 public/images/desktop/desk-logo.png                    |    0 
 src/pages/ai/index/main.ts                             |    0 
 src/pages/desktop/index/mock/userData.json             |   12 
 public/css/overried.scss                               |  134 +++++
 src/pages/ai/index/App.vue                             |    0 
 src/components/subComponents/SystemInfo.vue            |    2 
 src/pages/desktop/index/components/Tools.vue           |    1 
 public/css/element-variables.scss                      |   31 +
 src/pages/cameraAccess/components/SeparateRules.vue    |   17 
 src/pages/cameraAccess/components/LinkageRule.vue      |   26 
 public/index.html                                      |  308 +++++++++++
 src/pages/cameraVideo/index/Video.vue                  |    5 
 src/pages/cameraAccess/components/scene/SlideScene.vue |   28 
 /dev/null                                              |   79 ---
 public/css/messages.scss                               |  367 ++++++++++++++
 src/pages/desktop/index/store/modules/desktop.js       |   18 
 public/css/common.scss                                 |  332 +++++++++++++
 src/pages/ai/index/mixins.ts                           |    0 
 src/pages/cameraAccess/index/App.vue                   |   35 
 src/components/subComponents/DataStackCard.vue         |    2 
 src/pages/cameraAccess/index/VideoManage.vue           |   15 
 src/pages/cameraAccess/components/CameraInfo.vue       |    4 
 src/pages/ai/index/api.ts                              |    0 
 25 files changed, 1,270 insertions(+), 176 deletions(-)

diff --git a/public/css/common.scss b/public/css/common.scss
new file mode 100644
index 0000000..a840ee6
--- /dev/null
+++ b/public/css/common.scss
@@ -0,0 +1,332 @@
+
+/*瀹氫綅*/
+.tl{text-align: left;}
+.tc{text-align: center;}
+.tr{text-align: right;}
+.bc{margin-left: auto;margin-right: auto;}
+.fl{float: left; display:inline;}
+.fr{float: right; display:inline;}
+.cb{clear:both;}
+.cl{clear: left;}
+.cr{clear: right;}
+
+
+ /*鏂囧瓧鎺掔増*/
+ .f12{font-size: 12px;}
+ .f13{font-size: 13px;}
+ .f14{font-size: 14px;}
+ .f16{font-size: 16px;}
+ .f18{font-size: 18px;}
+ .f20{font-size: 20px;}
+ .f22{font-size: 23px;}
+ .f25{font-size: 25px;}
+ .f30{font-size: 30px;}
+ .f35{font-size: 35px;}
+ .f40{font-size: 40px;}
+ .f45{font-size: 45px;}
+ .f50{font-size: 50px;}
+ .f55{font-size: 55px;}
+ .f60{font-size: 60px;}
+ .f65{font-size: 65px;}
+ .fb{font-weight: bold;}
+ .fn{font-weight: normal;}
+ .t2{text-indent: 2em;}
+ .lh150{line-height:150%;}
+ .lh180{line-height:180%;}
+ .lh200{line-height:200%;}
+ .unl{text-decoration: underline;}
+ .no_unl{text-decoration: none;}
+
+
+.clearfix:after{ display:block; content:''; clear:both;}
+.clearfix{ zoom:1;}
+.vm{vertical-align: middle;}
+
+.pr{position: relative;}
+.pa{position: absolute;}
+.pa100{position: absolute;left: 0;top: 0;right: 0;bottom: 0;}
+.zoom{zoom:1;}
+.hidden{visibility: hidden;}
+.none{display: none}
+/*闀垮害楂樺害*/
+.w10{width: 10px;}
+.w20{width: 20px;}
+.w30{width: 30px;}
+.w40{width: 40px;}
+.w50{width: 50px;}
+.w70{width: 70px;}
+.w90{width: 90px;}
+.w100{width: 100px;}
+.w300{width: 300px;}
+.w500{width: 500px;}
+.w600{width: 600px;}
+.w700{width: 700px;}
+.w800{width: 800px;}
+.w{width: 100%;}
+.h50{height: 50px;}
+.h100{height: 100px;}
+.h200{height: 200px;}
+.h{height: 100%;}
+
+/*缂栧墽*/
+.ma{margin: auto;}
+.m10{margin:10px;}
+.m15{margin:15px;}
+.m30{margin:30px;}
+.mt5{margin-top:5px;}
+.mt10{margin-top:10px;}
+.mt15{margin-top:15px;}
+.mt20{margin-top:20px;}
+.mt30{margin-top:30px;}
+.mt50{margin-top:50px;}
+.mt100{margin-top:100px;}
+.mb5{margin-bottom: 5px;}
+.mb10{margin-bottom: 10px;}
+.mb15{margin-bottom: 15px;}
+.mb20{margin-bottom: 20px;}
+.mb30{margin-bottom: 30px;}
+.mb50{margin-bottom: 50px;}
+.mb100{margin-bottom: 100px;}
+.ml5{margin-left: 5px;}
+.ml10{margin-left: 10px;}
+.ml15{margin-left: 15px;}
+.ml20{margin-left: 20px;}
+.ml30{margin-left: 30px;}
+.ml50{margin-left: 50px;}
+.ml100{margin-left: 100px;}
+.mr5{margin-right: 5px;}
+.mr10{margin-right:10px;}
+.mr15{margin-right: 15px;}
+.mr20{margin-right: 20px;}
+.mr30{margin-right: 30px;}
+.mr50{margin-right: 50px;}
+.mr100{margin-right: 100px;}
+.p5{padding: 5px;}
+.p10{padding:10px;}
+.p15{padding: 15px;}
+.p20{padding: 20px;}
+.p30{padding: 30px;}
+.p50{padding: 50px;}
+.p100{padding: 100px;}
+.pt5{padding-top: 5px;}
+.pt10{padding-top:10px;}
+.pt15{padding-top: 15px;}
+.pt20{padding-top: 20px;}
+.pt30{padding-top: 30px;}
+.pt50{padding-top: 50px;}
+.pt100{padding-top: 100px;}
+.pb5{padding-bottom: 5px;}
+.pb10{padding-bottom:10px;}
+.pb15{padding-bottom: 15px;}
+.pb20{padding-bottom: 20px;}
+.pb30{padding-bottom: 30px;}
+.pb50{padding-bottom: 50px;}
+.pb100{padding-bottom: 100px;}
+.pl5{padding-left: 5px;}
+.pl10{padding-left:10px;}
+.pl15{padding-left: 15px;}
+.pl20{padding-left: 20px;}
+.pl30{padding-left: 30px;}
+.pl50{padding-left: 50px;}
+.pl60{padding-left: 60px;}
+.pl100{padding-left: 100px;}
+.pr5{padding-right: 5px;}
+.pr10{padding-right:10px;}
+.pr15{padding-right: 15px;}
+.pr20{padding-right: 20px;}
+.pr30{padding-right: 30px;}
+.pr50{padding-right: 50px;}
+.pr100{padding-right: 100px;}
+.pl-checkbox{padding-left:44px;}
+.pd10{padding:10px;}
+.pd20{padding:20px;}
+
+.mg10{margin:10px;}
+.mg20{margin:20px;}
+.mg30{margin:30px;}
+.p0m0{padding:0; margin: 0;}
+.cursor-pointer{cursor: pointer;}
+.dis-inleblock{ display: inline-block; }
+.dis-inline{ display: inline; }
+.dis-block{ display: block; }
+.text-overflow{
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+.overflow-y{overflow-y: auto;overflow-x:hidden;}
+.overflow-x{overflow-x: auto;overflow-y:hidden;}
+.overflow-auto{overflow: auto;}
+.overflow-hidden{overflow:hidden;}
+
+.text-center{text-align: center;}
+.text-left{text-align: left;}
+.text-right{text-align: right;}
+
+.vertical-top{vertical-align: top;}
+.vertical-middle{vertical-align: middle;}
+.vertical-bottom{vertical-align: bottom;}
+.border-box{box-sizing: border-box;}
+.flex-center{
+    display:flex;
+    align-items:center;
+    justify-content:center;
+}
+.width100{width: 100%;}
+.width50{width: 50%;}
+.width60{width: 60%;}
+.width70{width: 70%;}
+
+.height100{height: 100%}
+.height40{height: 40%}
+.height50{height: 50%}
+.height60{height: 60%}
+.height70{height: 70%}
+.height80{height: 80%}
+
+.height50-10{height: calc(50% - 10px);}
+.height40-10{height: calc(40% - 10px);}
+.height30-10{height: calc(30% - 10px);}
+.height100-10{height: calc(100% - 10px);}
+.height100-20{height: calc(100% - 20px);}
+.height100-25{height: calc(100% - 25px);}
+.height100-30{height: calc(100% - 30px);}
+.height100-40{height: calc(100% - 40px);}
+.height100-45{height: calc(100% - 45px);}
+.height100-50{height: calc(100% - 50px);}
+.height100-55{height: calc(100% - 55px);}
+.height100-60{height: calc(100% - 60px);}
+.height100-65{height: calc(100% - 65px);}
+.height100-70{height: calc(100% - 70px);}
+.height100-75 {
+  height: calc(100% - 75px);
+}
+.height100-80{height: calc(100% - 80px);}
+.height100-85{height: calc(100% - 85px);}
+.height100-90 {
+  height: calc(100% - 90px);
+}
+.height100-95 {
+  height: calc(100% - 95px);
+}
+.height100-100 {
+  height: calc(100% - 100px);
+}
+.height100-120{height: calc(100% - 120px);}
+.is-always-shadow {
+  -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+}
+
+.bg-card-blue{
+  background: #f4fcff;
+}
+
+.radius-circle{
+  border-radius: 50%;
+  overflow: hidden;
+}
+.radius-5 {
+  border-radius: 5px;
+}
+.radius-10 {
+  border-radius: 10px;
+}
+.radius-15 {
+  border-radius: 15px;
+}
+.radius-20 {
+  border-radius: 20px;
+}
+.radius-25 {
+  border-radius: 25px;
+}
+/* 鑷畾涔塮lex甯冨眬 start */
+
+.flex-box {
+  display: -webkit-flex;
+  display: flex;
+}
+
+.flex-box-wrap {
+  display: -webkit-flex;
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.flex-center {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.flex-row-left {
+  display: flex;
+  align-items: flex-start;
+  justify-content: flex-start;
+}
+
+.flex-row-center {
+  display: flex;
+  align-items: flex-start;
+  justify-content: center;
+}
+
+.flex-row-right {
+  display: flex;
+  align-items: flex-start;
+  justify-content: flex-end;
+}
+
+.flex-row-between {
+  display: flex;
+  align-items: flex-start;
+  justify-content: space-between;
+}
+
+.flex-vertical-top {
+  display: flex;
+  align-items: flex-start;
+}
+
+.flex-vertical-center {
+  display: flex;
+  align-items: center;
+}
+
+.flex-vertical-bottom {
+  display: flex;
+  align-items: flex-end;
+}
+
+.flex-vertical-fill {
+  display: flex;
+  align-items: stretch;
+}
+
+.flex-iteam-top {
+  align-self: flex-start;
+}
+
+.flex-iteam-center {
+  align-self: center;
+}
+
+.flex-iteam-bottom {
+  align-self: flex-end;
+}
+
+// elementu-ui
+
+.el-radio__input.is-checked .el-radio__inner {
+  border-color: #3d68e1;
+  background: #3d68e1;
+}
+.el-radio__input.is-checked + .el-radio__label {
+  color: #3d68e1;
+}
+
+.el-switch.is-checked .el-switch__core {
+  border-color: #3d68e1;
+  background-color: #3d68e1;
+}
diff --git a/public/css/element-variables.scss b/public/css/element-variables.scss
new file mode 100644
index 0000000..e56b6c4
--- /dev/null
+++ b/public/css/element-variables.scss
@@ -0,0 +1,31 @@
+/**
+* I think element-ui's default theme color is too light for long-term use.
+* So I modified the default color and you can modify it to your liking.
+**/
+
+/* theme color */
+$--color-primary: #3D68E1;
+$--color-success: #13ce66;
+$--color-warning: #ff8725;
+$--color-danger: #f52323;
+$--color-info: #EAEAEA;
+
+$--button-font-weight: 400;
+
+// $--color-text-regular: #1f2d3d;
+
+$--border-color-light: #dfe4ed;
+$--border-color-lighter: #e6ebf5;
+
+$--table-border:1px solid#dfe6ec;
+
+/* icon font path, required */
+$--font-path: '~element-ui/lib/theme-chalk/fonts';
+
+@import "~element-ui/packages/theme-chalk/src/index";
+
+// the :export directive is the magic sauce for webpack
+// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
+:export {
+  theme: $--color-primary;
+}
\ No newline at end of file
diff --git a/public/css/messages.scss b/public/css/messages.scss
new file mode 100644
index 0000000..20a8c2d
--- /dev/null
+++ b/public/css/messages.scss
@@ -0,0 +1,367 @@
+
+$messages-inner-bg: transparent !default;
+$messages-sidebox-bg: #f3f3f3 !default;
+$messages-sidebox-width: 16rem !default;
+$messages-sidebox-border-width: 1px !default;
+$messages-transition-duration: .2s !default;
+$message-item-padding-y: .75rem !default;
+$message-sender-width: 10rem !default;
+$message-attachment-width: 18rem !default;
+$message-attachment-size: 4rem !default;
+
+// Make wrapper full page height
+.messages-wrapper {
+  position: relative;
+  display: flex;
+  overflow: hidden;
+  flex: 1 1 100%;
+  width: 100%;
+}
+
+.messages-card {
+  overflow: hidden;
+}
+
+.messages-wrapper,
+.messages-sidebox {
+  transition: all $messages-transition-duration;
+}
+
+.messages-sidebox {
+  flex-basis: 100%;
+  flex-grow: 0;
+}
+
+.messages-wrapper .messages-sidebox,
+.messages-card .messages-sidebox {
+  position: fixed;
+  left: calc(-#{$messages-sidebox-width} - #{$messages-sidebox-border-width});
+  z-index: 10;
+  flex-basis: auto;
+  flex-grow: 1;
+  width: $messages-sidebox-width;
+
+  [dir=rtl] & {
+    right: calc(-#{$messages-sidebox-width} - #{$messages-sidebox-border-width});
+    left: auto;
+  }
+}
+
+.layout-sidenav-100vh .messages-wrapper .messages-sidebox {
+  height: 100vh;
+}
+
+.messages-wrapper .messages-sidebox {
+  background: $messages-sidebox-bg;
+}
+
+.messages-card .messages-sidebox {
+  // position: absolute;
+  bottom: 0;
+}
+
+.messages-scroll {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  height: 100%;
+
+  &.messages-content {
+    position: absolute;
+    right: 0;
+    left: 0;
+    width: 100%;
+  }
+}
+
+// List
+
+.messages-list .list-group-item {
+  z-index: auto !important;
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+  padding-top: ($message-item-padding-y / 2);
+  padding-bottom: ($message-item-padding-y / 2);
+  width: 100%;
+  border-right: 0;
+  border-left: 0;
+  border-radius: 0;
+
+  &:first-child {
+    border-top: 0;
+  }
+
+  &:last-child {
+    border-bottom: 0;
+  }
+
+   > * {
+    padding-top: ($message-item-padding-y / 2);
+    padding-bottom: ($message-item-padding-y / 2);
+  }
+}
+
+.message-checkbox .custom-control {
+  display: block !important;
+  margin: 0;
+  margin-top: -1px;
+}
+
+.message-sender {
+  min-width: $message-sender-width;
+}
+
+.message-subject {
+  width: 100%;
+}
+
+.message-date {
+  white-space: nowrap;
+}
+
+// Attachments
+
+.message-attachment {
+  display: flex;
+  align-items: center;
+  width: 100%;
+
+   > .media-body {
+    min-width: 0;
+  }
+}
+
+.message-attachment-file,
+.message-attachment-img {
+  display: block;
+  flex-grow: 0;
+  flex-shrink: 0;
+  width: $message-attachment-size;
+  height: $message-attachment-size;
+}
+
+.message-attachment-file {
+  display: inline-block;
+  text-align: center;
+  line-height: $message-attachment-size;
+}
+
+.message-attachment-img {
+  background-color: transparent;
+  background-position: center center;
+  background-size: cover;
+}
+
+.message-attachment-filename {
+  display: block;
+  overflow: hidden;
+  width: 100%;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+
+.default-style {
+  @import "../_appwork/include";
+
+  .messages-wrapper .messages-sidebox {
+    z-index: $zindex-layout-fixed + 1;
+  }
+
+  .messages-sidebox-open .messages-sidebox {
+    left: 0;
+  }
+
+  .messages-card .messages-sidebox {
+    background: $white;
+    box-shadow: 0 0 0 $messages-sidebox-border-width $card-inner-border-color;
+  }
+
+  @include media-breakpoint-up(sm) {
+    .messages-list .list-group-item {
+      flex-wrap: nowrap;
+    }
+
+    .message-subject {
+      width: auto;
+    }
+
+    .message-date {
+      margin-left: auto;
+    }
+  }
+
+  @include media-breakpoint-up(md) {
+    .messages-sidebox {
+      flex-basis: $messages-sidebox-width;
+    }
+
+    .messages-wrapper .messages-sidebox {
+      flex-basis: auto;
+    }
+  }
+
+  @include media-breakpoint-up(lg) {
+    .messages-wrapper,
+    .messages-sidebox {
+      transition: none !important;
+    }
+
+    .messages-wrapper {
+      padding-left: $messages-sidebox-width;
+    }
+
+    .messages-sidebox {
+      z-index: auto !important;
+    }
+
+    .messages-wrapper .messages-sidebox {
+      position: absolute;
+      left: 0;
+      z-index: auto;
+    }
+
+    .messages-wrapper .messages-sidebox {
+      height: 100% !important;
+    }
+
+    .messages-card .messages-sidebox {
+      position: static;
+      right: auto;
+      left: auto;
+      flex-grow: 0;
+      height: auto;
+    }
+  }
+}
+
+.default-style[dir=rtl] {
+  @import "../_appwork/include";
+
+  .messages-sidebox-open .messages-sidebox {
+    right: 0;
+    left: auto;
+  }
+
+  @include media-breakpoint-up(sm) {
+    .message-date {
+      margin-right: auto;
+      margin-left: 0;
+    }
+  }
+
+  @include media-breakpoint-up(lg) {
+    .messages-wrapper {
+      padding-right: $messages-sidebox-width;
+      padding-left: 0;
+    }
+
+    .messages-wrapper .messages-sidebox {
+      right: 0;
+      left: auto;
+    }
+  }
+}
+
+.material-style {
+  @import "../_appwork/include-material";
+
+  .messages-wrapper .messages-sidebox {
+    z-index: $zindex-layout-fixed + 1;
+  }
+
+  .messages-sidebox-open .messages-sidebox {
+    left: 0;
+  }
+
+  .messages-card .messages-sidebox {
+    background: $white;
+    box-shadow: 0 0 0 $messages-sidebox-border-width $card-inner-border-color;
+  }
+
+  @include media-breakpoint-up(sm) {
+    .messages-list .list-group-item {
+      flex-wrap: nowrap;
+    }
+
+    .message-subject {
+      width: auto;
+    }
+
+    .message-date {
+      margin-left: auto;
+    }
+  }
+
+  @include media-breakpoint-up(md) {
+    .messages-sidebox {
+      flex-basis: $messages-sidebox-width;
+    }
+
+    .messages-wrapper .messages-sidebox {
+      flex-basis: auto;
+    }
+  }
+
+  @include media-breakpoint-up(lg) {
+    .messages-wrapper,
+    .messages-sidebox {
+      transition: none !important;
+    }
+
+    .messages-wrapper {
+      padding-left: $messages-sidebox-width;
+    }
+
+    .messages-sidebox {
+      z-index: auto !important;
+    }
+
+    .messages-wrapper .messages-sidebox {
+      position: absolute;
+      left: 0;
+      z-index: auto;
+    }
+
+    .messages-wrapper .messages-sidebox {
+      height: 100% !important;
+    }
+
+    .messages-card .messages-sidebox {
+      position: static;
+      right: auto;
+      left: auto;
+      flex-grow: 0;
+      height: auto;
+    }
+  }
+}
+
+.material-style[dir=rtl] {
+  @import "../_appwork/include-material";
+
+  .messages-sidebox-open .messages-sidebox {
+    right: 0;
+    left: auto;
+  }
+
+  @include media-breakpoint-up(sm) {
+    .message-date {
+      margin-right: auto;
+      margin-left: 0;
+    }
+  }
+
+  @include media-breakpoint-up(lg) {
+    .messages-wrapper {
+      padding-right: $messages-sidebox-width;
+      padding-left: 0;
+    }
+
+    .messages-wrapper .messages-sidebox {
+      right: 0;
+      left: auto;
+    }
+  }
+}
diff --git a/public/css/overried.scss b/public/css/overried.scss
new file mode 100644
index 0000000..120ed22
--- /dev/null
+++ b/public/css/overried.scss
@@ -0,0 +1,134 @@
+// 瑕嗙洊element-ui鍘熺敓鏍峰紡
+.el-dropdown-menu{
+  li:hover {
+    background: #F0F0F0 !important;
+    color: #222222 !important;
+  }
+}
+.el-popper[x-placement^=bottom] {
+  margin-top: -5px;
+}
+
+.el-select-dropdown__empty {
+  font-size: 13px !important;
+}
+.el-select-dropdown__item {
+  font-size: 13px !important;
+}
+
+.el-select-dropdown__item.selected {
+  color: #3D68E1;
+  font-weight: 700;
+}
+
+.el-select, .el-input, .is-focus, .el-input__inner {
+  border-color: #3D68E1;
+  border-radius: 2px;
+}
+
+.el-input__inner:focus {
+  border-color: #3D68E1;
+  outline: 0;
+}
+
+.el-input--small .el-input__inner {
+  border-radius: 2px;
+}
+
+.el-input--mini .el-input__inner {
+  border-radius: 2px;
+}
+
+.el-button .el-button--primary .el-button--small {
+  border-radius: 2px;
+}
+
+.el-select-dropdown__item.hover, .el-select-dropdown__item:hover {
+  background-color: #F0F0F0;
+}
+.el-select-dropdown.is-multiple .el-select-dropdown__item.selected {
+  color: #3D68E1;
+  background-color: #FFF;
+}
+.el-date-table td.end-date span, .el-date-table td.start-date span {
+  background-color: #3D68E1;
+}
+.el-date-table td.end-date span, .el-date-table td.start-date span {
+  background-color: #3D68E1;
+}
+.el-range-editor.is-active, .el-range-editor.is-active:hover {
+  border-color: #3D68E1;
+}
+.el-range-editor {
+  padding: 2px 10px;
+}
+.el-message-box {
+  display: inline-block;
+  width: 331px;
+  padding-bottom: 10px;
+  vertical-align: middle;
+  background-color: #FFF;
+  border-radius: 4px;
+  border: 1px solid #EBEEF5;
+  font-size: 18px;
+  -webkit-box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
+  box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
+  text-align: left;
+  overflow: hidden;
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+}
+.el-message-box--center {
+  padding-bottom: 24px;
+  .el-message-box__message {
+    font-size:13px;
+  }
+}
+.el-message-box__content {
+  position: relative;
+  padding: 0px 15px 20px 15px;
+  color: #606266;
+  font-size: 13px;
+}
+
+.el-table .descending .sort-caret.descending {
+  border-top-color: #3D68E1;
+}
+
+.el-table .ascending .sort-caret.ascending {
+  border-bottom-color: #3D68E1;
+}
+.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner {
+  background-color: #3D68E1;
+  border-color: #3D68E1;
+}
+.el-message-box{
+  .el-message-box__headerbtn{
+    top: 10px;
+  }
+  .el-message-box__btns{
+    .el-button--primary {
+      color: #FFFFFF;
+      background-color: #f53d3d;
+      border-color: #f53d3d;
+    }
+    .el-button--primary:hover {
+      background: #d22929;
+      background-color: #d22929;
+      border-color: #d22929;
+    }
+  }
+}
+.el-button--primary:active {
+  background: #3F6BE9 !important;
+  border-color: #3F6BE9 !important;
+  color: #FFFFFF;
+  outline: none;
+}
+.el-button--danger:active {
+  background: #F82323 !important;
+  border-color: #F82323 !important;
+  color: #FFFFFF;
+  outline: none;
+}
+
diff --git a/public/images/desktop/desk-logo.png b/public/images/desktop/desk-logo.png
new file mode 100644
index 0000000..dabfdaa
--- /dev/null
+++ b/public/images/desktop/desk-logo.png
Binary files differ
diff --git a/public/index.html b/public/index.html
index a862cfd..095ad5a 100644
--- a/public/index.html
+++ b/public/index.html
@@ -11,31 +11,303 @@
       sizes="32x32"
     />
     <link rel="stylesheet" href="/fonts/alibaba/iconfont.css">
+    <link rel="stylesheet" href="/css/element-variables.scss">
     <title><%= htmlWebpackPlugin.options.title %></title>
-    <style>
-      html,
-      body,
-      h2,
-      p,
-      ul,
-      li {
-        margin: 0;
-        padding: 0;
+    <style src="/css/common.scss" lang="scss"></style>
+    <style src="/css/overried.scss" lang="scss"></style>
+    <style >
+    html,body {
+      font-family: "Avenir", Helvetica, Arial, sans-serif;
+      -webkit-font-smoothing: antialiased;
+      -moz-osx-font-smoothing: grayscale;
+      text-align: center;
+      color: #2c3e50;
+      width: 100%;
+      height: 100%;
+    }
+    .el-button--primary:hover,
+      .el-button--primary:focus {
+        background: #2249b4;
+        border-color: #2249b4;
+      }
+      .el-button--warning:hover,
+      .el-button--warning:focus {
+        background: #fd780b;
+        border-color: #fd780b;
       }
 
-      .clearfix::after{
-        content: '';
-        display: block;
-        height: 0;
-        clear: both;
+      .el-button--danger:hover,
+      .el-button--danger:focus {
+        background: #d22929;
+        border-color: #d22929;
       }
-      .ml10{
-        margin-left: 10px;
+
+      .el-button--info {
+        color: #222222;
       }
-      .mr10{
-        margin-right: 10px;
+      .el-button--info:hover,
+      .el-button--info:focus {
+        background: rgb(190, 190, 190);
+        border-color: rgb(190, 190, 190);
       }
+
+      .el-button--text:focus,
+      .el-button--text:hover {
+        color: #2249b4;
+      }
+
+      .el-tag.el-tag--info {
+        background-color: #f4f4f5;
+        border-color: #e9e9eb;
+        color: #909399;
+      }
+    /* reset */
+    html {
+      color: #000;
+      background: #fff;
+    }
+    body,
+    div,
+    dl,
+    dt,
+    dd,
+    ul,
+    ol,
+    li,
+    h1,
+    h2,
+    h3,
+    h4,
+    h5,
+    h6,
+    input,
+    button,
+    textarea,
+    p,
+    blockquote,
+    th,
+    td {
+      margin: 0;
+      padding: 0;
+    }
+    /* body {
+      font: 12px/1 Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif;
+    } */
+    img {
+      border: none;
+    }
+    em,
+    strong {
+      font-style: normal;
+      font-weight: normal;
+    }
+    li {
+      list-style: none;
+    }
+    table {
+      border-collapse: collapse;
+      border-spacing: 0;
+    }
+    h1 {
+      font-size: 18px;
+    }
+    h2 {
+      font-size: 16px;
+    }
+    h3 {
+      font-size: 14px;
+    }
+    h4,
+    h5,
+    h6 {
+      font-size: 100%;
+    }
+    q:before,
+    q:after {
+      content: "";
+    } /* 娑堥櫎q鍓嶅悗鐨勫唴瀹� */
+    button,
+    input,
+    select,
+    textarea {
+      font-size: 100%;
+    } /* 浣垮緱琛ㄥ崟鍏冪礌鍦� ie 涓嬭兘缁ф壙瀛椾綋澶у皬 */
+    input,
+    button,
+    textarea,
+    select,
+    optgroup,
+    option {
+      font-family: inherit;
+      font-size: inherit;
+      font-style: inherit;
+      font-weight: inherit;
+    }
+    address,
+    cite,
+    dfn,
+    em,
+    var {
+      font-style: normal;
+    } /* 灏嗘枩浣撴壎姝� */
+    /* link */
+    a {
+      color: #3d68e1;
+      text-decoration: none;
+    }
+    a:hover {
+      color: #2249b4;
+      text-decoration: underline;
+    }
+    .fade-enter-active,
+    .fade-leave-active {
+      transition: opacity 0.5s;
+    }
+    .fade-enter,
+    .fade-leave-active {
+      opacity: 0;
+    }
+
+    /*瀹氫箟婊氬姩鏉¢珮瀹藉強鑳屾櫙 楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/
+    ::-webkit-scrollbar {
+      width: 8px;
+      height: 8px;
+      background-color: #f5f5f5;
+    }
+
+    /*瀹氫箟婊氬姩鏉¤建閬� 鍐呴槾褰�+鍦嗚*/
+    ::-webkit-scrollbar-track {
+      box-shadow: inset 0 0 3px rgba(122, 120, 120, 0.3);
+      border-radius: 5px;
+      background-color: #f5f5f5;
+    }
+
+    /*瀹氫箟婊戝潡 鍐呴槾褰�+鍦嗚*/
+    ::-webkit-scrollbar-thumb {
+      border-radius: 5px;
+      box-shadow: inset 0 0 3px rgba(245, 243, 243, 0.3);
+      background-color: rgba(160, 158, 158, 0.8);
+    }
+    .fade-enter-active,
+    .fade-leave-active {
+      transition: opacity 0.5s;
+    }
+    .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
+      opacity: 0;
+    }
+    .window {
+      z-index: 10 !important;
+    }
+    .el-card__body {
+      box-sizing: border-box;
+    }
+
+    .is-dark {
+      background: #00000090 !important;
+    }
+  
+    .el-tooltip__popper {
+      border-radius: 0px;
+      padding: 5px 10px;
+    }
+
+    .atooltip.el-tooltip__popper[x-placement^="bottom"] .popper__arrow {
+      border-bottom-color: #20202090;
+    }
+    .atooltip.el-tooltip__popper[x-placement^="bottom"] .popper__arrow:after {
+      border-bottom-color: #68666690;
+    }
+    .atooltip.el-tooltip__popper[x-placement^="top"] .popper__arrow {
+      border-top-color: #20202090;
+    }
+    .atooltip.el-tooltip__popper[x-placement^="top"] .popper__arrow:after {
+      border-top-color: #68666690;
+    }
+    .atooltip.el-tooltip__popper[x-placement^="left"] .popper__arrow {
+      border-left-color: #20202090;
+    }
+    .atooltip.el-tooltip__popper[x-placement^="left"] .popper__arrow:after {
+      border-left-color: #68666690;
+    }
+    .atooltip.el-tooltip__popper[x-placement^="right"] .popper__arrow {
+      border-right-color: #20202090;
+    }
+    .atooltip.el-tooltip__popper[x-placement^="right"] .popper__arrow:after {
+      border-right-color: #68666690;
+    }
+
+    .el-menu-vertical-demo {
+      overflow-y: hidden;
+      overflow-x: hidden;
+    }
+    .el-menu-vertical-demo::-webkit-scrollbar {
+      /*婊氬姩鏉℃暣浣撴牱寮�*/
+      width: 4px; /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/
+      height: 4px;
+    }
+    .el-menu-vertical-demo::-webkit-scrollbar-thumb {
+      /*婊氬姩鏉¢噷闈㈠皬鏂瑰潡*/
+      border-radius: 5px;
+      box-shadow: inset 0 0 5px rgba(157, 165, 183, 0);
+      -webkit-box-shadow: inset 0 0 5px rgba(157, 165, 183, 0);
+      background: rgb(202, 201, 201);
+    }
+    .el-menu-vertical-demo::-webkit-scrollbar-track {
+      /*婊氬姩鏉¢噷闈㈣建閬�*/
+      box-shadow: inset 0 0 5px rgba(157, 165, 183, 0);
+      -webkit-box-shadow: inset 0 0 5px rgba(157, 165, 183, 0);
+      border-radius: 0;
+      background: rgb(255, 255, 255);
+    }
+    .el-menu-vertical-demo::-webkit-scrollbar-thumb:hover {
+      background: rgba(0, 0, 0, 0.4);
+    }
+    .el-menu-vertical-demo:hover {
+      overflow-y: visible;
+      overflow-x: hidden;
+    }
+
+    .el-dropdown-menu__item:focus,
+    .el-dropdown-menu__item:not(.is-disabled):hover {
+      background: rgba(61, 104, 225, 0.5);
+      color: #fff;
+    }
+
+    /* 鎺у埗涓嬫媺鑿滃崟鏄剧ず6涓� */
+    .el-dropdown-menu {
+      border-radius: 0px;
+      max-height: 205px;
+      overflow: auto;
+    }
+
+    .el-range-editor.el-input__inner {
+      border-radius: 2px;
+    }
+
+    .el-message-box .el-message-box__btns .el-button--primary{
+      background-color:#3d68e1;
+      border-color:#3d68e1;
+    }
+    .el-message-box .el-message-box__btns .el-button--primary:hover{
+      background-color:#2249b4;
+      border-color:#2249b4;
+    }
+    .btn-icon {
+      cursor: pointer;
+    }
+
+    .btn-icon:hover {
+      filter: drop-shadow(0 0 0 #fff);
+      opacity: 0.8;
+    }
+    .clearfix::after{
+      content: '';
+      display: block;
+      height: 0;
+      clear: both;
+    }
     </style>
+
   </head>
   <body>
     <noscript>
diff --git a/src/components/canvas/index.vue b/src/components/canvas/index.vue
index fc937e1..b8ac906 100644
--- a/src/components/canvas/index.vue
+++ b/src/components/canvas/index.vue
@@ -473,6 +473,11 @@
 };
 </script>
 <style lang="scss" scoped>
+canvas{
+  position: absolute;
+  top: 0;
+  left: 0;
+}
 .s-cavas {
   width: 576px;
   height: 324px;
diff --git a/src/components/subComponents/DataStackCard.vue b/src/components/subComponents/DataStackCard.vue
index 3a52bf8..fa6f9c4 100644
--- a/src/components/subComponents/DataStackCard.vue
+++ b/src/components/subComponents/DataStackCard.vue
@@ -207,7 +207,7 @@
   display: flex;
   align-items: center;
   .card-name {
-    width:38%; 
+    width:40%; 
     height:100%; 
     display:flex;
     justify-content: center;
diff --git a/src/components/subComponents/SystemInfo.vue b/src/components/subComponents/SystemInfo.vue
index acb8c26..26f5206 100644
--- a/src/components/subComponents/SystemInfo.vue
+++ b/src/components/subComponents/SystemInfo.vue
@@ -114,7 +114,7 @@
     },
     borderWidth: {
       type: String,
-      default: '70%'
+      default: '64%'
     },
     liquidWidth: {
       type: String,
diff --git a/src/pages/algorithmManage/index/App.vue b/src/pages/ai/index/App.vue
similarity index 100%
rename from src/pages/algorithmManage/index/App.vue
rename to src/pages/ai/index/App.vue
diff --git a/src/pages/algorithmManage/index/api.ts b/src/pages/ai/index/api.ts
similarity index 100%
rename from src/pages/algorithmManage/index/api.ts
rename to src/pages/ai/index/api.ts
diff --git a/src/pages/algorithmManage/index/main.ts b/src/pages/ai/index/main.ts
similarity index 100%
rename from src/pages/algorithmManage/index/main.ts
rename to src/pages/ai/index/main.ts
diff --git a/src/pages/algorithmManage/index/mixins.ts b/src/pages/ai/index/mixins.ts
similarity index 100%
rename from src/pages/algorithmManage/index/mixins.ts
rename to src/pages/ai/index/mixins.ts
diff --git a/src/pages/algorithmManage/index/store/index.ts b/src/pages/algorithmManage/index/store/index.ts
deleted file mode 100644
index e69de29..0000000
--- a/src/pages/algorithmManage/index/store/index.ts
+++ /dev/null
diff --git a/src/pages/algorithmManage/index/store/modules/algorithm.js b/src/pages/algorithmManage/index/store/modules/algorithm.js
deleted file mode 100644
index e7735dc..0000000
--- a/src/pages/algorithmManage/index/store/modules/algorithm.js
+++ /dev/null
@@ -1,79 +0,0 @@
-const state = {
-  list1 = [],
-  list2 = [
-    {
-      id: "001",
-      name: "浠诲姟1",
-      child: [
-        {
-          id: "1",
-          sdk_name: "浜鸿劯妫�娴�",
-          isSelect: false
-        },
-        {
-          id: "2",
-          sdk_name: "浜鸿劯瀵规瘮",
-          isSelect: false
-        }
-      ],
-      isSetting: false,
-      isShowSetAlgo: false
-    }
-  ],
-  argsList : [],
-  baseObject : {
-    id: '',
-    algoId: '',
-    options1: [],
-    options2: [],
-    options3: [],
-    value1: '',
-    value2: '',
-    value3: '',
-    unit: ''
-  },
-  currentAlgoId : '',
-  currentTaskId : ''
-};
-
-const getters = {};
-
-const mutations = {
-  findAllSdk(state, data){
-    state.list1 = data;
-  },
-  findByType(state, data){
-    state.baseObject.options2 = data;
-  }
-};
-const actions = {
-  findAllSdk({commit},params) {
-    let res = await findAllSdk({});
-    if (res && res.success) {
-      commit('findAllSdk',res.data)
-    }
-  },
-
-  findByType({commit},params) {
-    let res = await findByType({});
-    console.log(res,'findByType')
-    if (res && res.success) {
-      let list = res.data.RULECOMPUTEBETWEEN.map((i) => {
-        let obj = {}
-        obj.name = i.name
-        obj.value = i.value
-        return obj
-      })
-      //this.baseObject.options2 = [...list]
-      commit('findByType',[...list]);
-    }
-  },
-
-  
-};
-export default{
-  state,
-  getters,
-  actions,
-  mutations
-}
\ No newline at end of file
diff --git a/src/pages/cameraAccess/components/CameraInfo.vue b/src/pages/cameraAccess/components/CameraInfo.vue
index e108dd6..3c7dd49 100644
--- a/src/pages/cameraAccess/components/CameraInfo.vue
+++ b/src/pages/cameraAccess/components/CameraInfo.vue
@@ -606,9 +606,9 @@
 <style lang="scss">
 .camera-info {
   width: 100%;
-  height: 100%;
+  
   margin-left: 20px;
-  overflow: auto;
+  
   .ai-select {
     text-align: left;
   }
diff --git a/src/pages/cameraAccess/components/LinkageRule.vue b/src/pages/cameraAccess/components/LinkageRule.vue
index f34535c..fc10795 100644
--- a/src/pages/cameraAccess/components/LinkageRule.vue
+++ b/src/pages/cameraAccess/components/LinkageRule.vue
@@ -5,7 +5,7 @@
         <b style="font-size: 14px;line-height: 18px;">宸查�夌畻娉�</b>
       </p>
 
-      <div>
+      <div class="clearfix">
         <div class="slide-scene">
           <span class="task-tip" v-if="tableRuleList.length == 0 ">鏆傛棤绠楁硶锛岃鍦ㄧ嫭绔嬭鍒欎腑閫夋嫨绠楁硶</span>
           <slide-scene :sceneData="tableRuleList"></slide-scene>
@@ -15,7 +15,7 @@
         <div class="top-right">
           <sysinfo
             v-if="showSysInfo"
-            style="margin-left: 25px;margin-top: -10px;"
+            style="margin-left: 10px;margin-top: -10px;"
             :ShowLocalVedio="this.TreeDataPool.treeActiveName !== 'camera'"
             :showRealPoll="this.TreeDataPool.treeActiveName == 'camera'"
           />
@@ -24,9 +24,7 @@
     </div>
 
     <div class="bottom">
-      <div
-        style="width: calc(100% + 80px);height: 10px;background-color: #E9EBF2;p;position:relative;left:-50px"
-      ></div>
+      <div class="devide"></div>
       <div class="bottom-right">
         <div class="draw-and-time-box">
           <div class="draw-box">
@@ -279,10 +277,14 @@
   width: 100%;
   height: 100%;
   position: relative;
+  .devide{
+    height: 10px;
+    background: #E9EBF2;
+  }
   .top {
     width: 100%;
-    height: 174px;
-    position: relative;
+    padding: 10px 20px;
+    box-sizing: border-box;
     top: 0;
     .swiper-box {
       height: 100%;
@@ -391,9 +393,7 @@
 
   .bottom {
     width: 100%;
-    height: calc(100% - 190px);
-    position: absolute;
-    top: 190px;
+    
     .bottom-side {
       height: 100%;
       width: 250px;
@@ -419,11 +419,7 @@
       }
     }
     .bottom-right {
-      width: calc(100% + 30px);
-      height: 100%;
-      float: left;
-      overflow: auto;
-      padding: 10px 0px;
+      padding: 10px 20px;
       box-sizing: border-box;
       .draw-and-time-box {
         height: 430px;
diff --git a/src/pages/cameraAccess/components/SeparateRules.vue b/src/pages/cameraAccess/components/SeparateRules.vue
index 807cc3b..b9580df 100644
--- a/src/pages/cameraAccess/components/SeparateRules.vue
+++ b/src/pages/cameraAccess/components/SeparateRules.vue
@@ -61,7 +61,7 @@
             v-if="Camera.analytics"
             class="flex-box"
           >
-            <span >绠楁硶蹇�熼�氶亾</span>
+            <span class="label">绠楁硶蹇�熼�氶亾</span>
             <div class="channel flex-box" >
               <el-tooltip
                 effect="dark"
@@ -95,7 +95,7 @@
 
     <div class="devide"></div>
 
-    <div class="top" style="top:60px;">
+    <div class="top" >
       <p class="task-css">
         <b style="font-size: 14px; line-height: 18px;">鍦烘櫙</b>
       </p>
@@ -106,7 +106,7 @@
             :showRealPoll="cameraType === 'camera'"
             :ShowLocalVedio="cameraType === 'dataStack'"
             v-if="showSysInfo"
-            style="margin-left: 25px;margin-top:-10px"
+            style="margin-left: 10px;margin-top:-10px"
           />
         </div>
       </div>
@@ -484,8 +484,18 @@
       -webkit-box-sizing: border-box;
       box-sizing: border-box;
       .ai-select{
+        text-align: left;
         line-height: 30px;
         height: 30px;
+        .flex-box{
+          .label{
+            &+label,&+div{
+              margin-left: 10px;
+              line-height: 1;
+            }
+            
+          }
+        }
       }
       .ai-select>div{
         display: inline-block;
@@ -494,6 +504,7 @@
         
         .channel{
           display: inline-block;
+          vertical-align: middle;
         }
       }
     }
diff --git a/src/pages/cameraAccess/components/scene/SlideScene.vue b/src/pages/cameraAccess/components/scene/SlideScene.vue
index 8494733..d2c7849 100644
--- a/src/pages/cameraAccess/components/scene/SlideScene.vue
+++ b/src/pages/cameraAccess/components/scene/SlideScene.vue
@@ -8,34 +8,34 @@
             <div class="scenario-icon">
               <div class="single" v-if="item.rules.length==1">
                 <div class="svg-wrap">
-                  <svg class="icon" aria-hidden="true" style="font-size:4rem;">
+                  <!-- <svg class="icon" aria-hidden="true" style="font-size:4rem;">
                     <use :xlink:href="`#${item.rules[0].icon}`" />
-                  </svg>
-                  <!-- <img class="baseImg" :src="`data:image/png;base64,${item.rules[0].iconBlob}`" alt=""> -->
+                  </svg> -->
+                  <img class="baseImg" :src="`data:image/png;base64,${item.rules[0].icon_blob}`" alt="">
                 </div>
               </div>
               <div class="double" v-else-if="item.rules.length==2">
                 <div class="svg-wrap" v-for="(rule,index) in item.rules" :key="index">
-                  <svg class="icon" aria-hidden="true" style="font-size:2rem;">
+                  <!-- <svg class="icon" aria-hidden="true" style="font-size:2rem;">
                     <use :xlink:href="`#${rule.icon}`" />
-                  </svg>
-                  <!-- <img class="baseImg" :src="`data:image/png;base64,${rule.iconBlob}`" alt=""> -->
+                  </svg> -->
+                  <img class="baseImg" :src="`data:image/png;base64,${rule.icon_blob}`" alt="">
                 </div>
               </div>
               <div class="third" v-else-if="item.rules.length==3">
                 <div class="svg-wrap" v-for="(rule,index) in item.rules" :key="'t'+index">
-                  <svg class="icon" aria-hidden="true" style="font-size:2rem;">
+                  <!-- <svg class="icon" aria-hidden="true" style="font-size:2rem;">
                     <use :xlink:href="`#${rule.icon}`" />
-                  </svg>
-                  <!-- <img class="baseImg" :src="`data:image/png;base64,${rule.iconBlob}`" alt=""> -->
+                  </svg> -->
+                  <img class="baseImg" :src="`data:image/png;base64,${rule.icon_blob}`" alt="">
                 </div>
               </div>
               <div class="four" v-else-if="item.rules.length==4">
                 <div class="svg-wrap" v-for="(rule,index) in item.rules" :key="'f'+index">
-                  <svg class="icon" aria-hidden="true" style="font-size:2rem;">
+                  <!-- <svg class="icon" aria-hidden="true" style="font-size:2rem;">
                     <use :xlink:href="`#${rule.icon}`" />
-                  </svg>
-                  <!-- <img class="baseImg" :src="`data:image/png;base64,${rule.iconBlob}`" alt=""> -->
+                  </svg> -->
+                  <img class="baseImg" :src="`data:image/png;base64,${rule.icon_blob}`" alt="">
                 </div>
               </div>
             </div>
@@ -217,11 +217,12 @@
           padding-top: 47%;
           text-align: center;
           box-shadow: 0 0 3px 2px rgb(247, 247, 247) inset;
-          svg {
+          img {
             position: absolute;
             top: 50%;
             left: 50%;
             transform: translate(-50%, -50%);
+            width: 96%;
           }
         }
       }
@@ -232,6 +233,7 @@
           left: 50%;
           transform: translate(-50%, -50%);
           box-shadow: none;
+          width: 100%
         }
       }
       .double {
diff --git a/src/pages/cameraAccess/index/App.vue b/src/pages/cameraAccess/index/App.vue
index ed18d33..c16940c 100644
--- a/src/pages/cameraAccess/index/App.vue
+++ b/src/pages/cameraAccess/index/App.vue
@@ -1,13 +1,13 @@
 <template>
-  <div class="column">
-    <div class="column-left" :style="`height:${screenHeight}px;`">
+  <div class="column" :style="`height:${screenHeight}px;`">
+    <div class="column-left" ref="left">
       <div class="resize-bar"></div>
       <div class="resize-line"></div>
       <div class="resize-save">
-        <left-nav :appName="app" :height="screenHeight - 40"></left-nav>
+        <left-nav :appName="app" :edit="editTree"></left-nav>
       </div>
     </div>
-    <div class="column-right" :style="`height:${screenHeight}px;`">
+    <div class="column-right" >
       <right-side />
     </div>
   </div>
@@ -31,16 +31,20 @@
   },
   data() {
     return {
+      leftWith: 0,
       screenHeight: 0,
+      editTree: true
     }
   },
   mounted() {
-    this.screenHeight = document.documentElement.clientHeight - 20;
+    this.screenHeight = document.documentElement.clientHeight;
     window.onresize = () => {
       return (() => {
-        this.screenHeight = document.documentElement.clientHeight - 20;
+        this.screenHeight = document.documentElement.clientHeight;
       })();
     };
+    debugger
+    this.leftWith = this.$refs['left'].width;
   },
   methods: {
     getUrlKey() {
@@ -53,19 +57,23 @@
 
 <style lang="scss" scoped>
 .column {
-  overflow: hidden;
+  //overflow: hidden;
+  display: flex;
+  width: 100%;
 }
 .column-left {
   height: inherit;
   background-color: #fff;
   position: relative;
-  float: left;
 }
 .column-right {
-  height: 100%;
+  min-width: 1442px;
+  flex:1;
+  position: relative;
   background-color: #fff;
   box-sizing: border-box;
   overflow: auto;
+  //height: 100%;
 }
 .resize-save {
   position: absolute;
@@ -73,8 +81,9 @@
   right: 5px;
   bottom: 0;
   left: 0;
-  padding: 16px;
+  padding: 14px;
   overflow-x: hidden;
+  overflow-y: hidden;
 }
 .resize-bar {
   width: 310px;
@@ -84,7 +93,7 @@
   opacity: 0;
   overflow: scroll;
   max-width: 500px; //璁惧畾鏈�澶ф媺浼搁暱搴�
-  min-width: 310px; //璁惧畾鏈�灏忓搴�
+  min-width: 33px; //璁惧畾鏈�灏忓搴�
 }
 /* 鎷栨嫿绾� */
 .resize-line {
@@ -92,8 +101,8 @@
   right: 0;
   top: 0;
   bottom: 0;
-  border-right: 2px solid #eee;
-  border-left: 1px solid #bbb;
+  border-right: 2px solid #efefef;
+  border-left: 1px solid #e0e0e0;
   pointer-events: none;
 }
 .resize-bar:hover ~ .resize-line,
diff --git a/src/pages/cameraAccess/index/VideoManage.vue b/src/pages/cameraAccess/index/VideoManage.vue
index b06836b..c388bb9 100644
--- a/src/pages/cameraAccess/index/VideoManage.vue
+++ b/src/pages/cameraAccess/index/VideoManage.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="s-video-manage">
-    <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
+    <el-tabs class="video-tab" v-model="activeName" type="border-card" @tab-click="handleClick">
       <el-tab-pane
         :label="firstLabeName"
         name="camera-info"
@@ -231,8 +231,6 @@
   height: 100%;
   float: right;
   box-sizing: border-box;
-  padding: 16px;
-  background-color: #e9ebf2;
   .el-tabs--border-card {
     box-shadow: none;
     -webkit-box-shadow: none;
@@ -249,9 +247,16 @@
   .el-tabs--border-card {
     height: 100%;
     width: 100%;
+    &.video-tab{
+      &>.el-tabs__header{
+        position: fixed;
+        top:0;
+        width:100%;
+        z-index:9;
+      }
+    }
     .el-tabs__header {
-      position: fixed;
-      top: 16px;
+       
       .is-active {
         color: #3d68e1 !important;
       }
diff --git a/src/pages/cameraVideo/index/Video.vue b/src/pages/cameraVideo/index/Video.vue
index 32cd6ca..b8cf1a2 100644
--- a/src/pages/cameraVideo/index/Video.vue
+++ b/src/pages/cameraVideo/index/Video.vue
@@ -1,5 +1,5 @@
 <template>
-  <div style="height: 100%;">
+  <div style="width:100%; height: 100%;">
     <div class="monitoring-right" ref="videoRight">
       <div class="monitoring-video" ref="monitorVideo">
         <div class="monitoring-video-guid">
@@ -558,10 +558,9 @@
   float: right;
   box-sizing: border-box;
   padding: 10px;
-  background-color: #fff;
+  background-color: #e9ebf2;
   .monitoring-video {
     width: 70.5%;
-    //min-width: 800px;
     min-width: 740px;
     max-width: 1208px;
     height: 75%;
diff --git a/src/pages/desktop/index/components/DFrame.vue b/src/pages/desktop/index/components/DFrame.vue
index 86c96e5..c6e7cc6 100644
--- a/src/pages/desktop/index/components/DFrame.vue
+++ b/src/pages/desktop/index/components/DFrame.vue
@@ -3,9 +3,10 @@
     v-show="data.isShow"
     :class="['d-frame', {'d-frame-full': fullScreen}]"
     :data-id="data.id"
-    v-bind:style="{left: data.leftOffset + '%', top: data.topOffset + '%', 'z-index': 125 + data.order, width: width + 'px', height: height + 'px'}"
+    v-bind:style="{left: data.leftOffset + 'px', top: data.topOffset + 'px', 'z-index': 125 + data.order, width: width + 'px', height: height + 'px'}"
+    @click="frameClick"
   >
-    <div class="d-frame-title" v-drag @click="frameClick()">
+    <div class="d-frame-title" v-drag>
       <div class="d-frame-title-operation">
         <i class="icon-minus d-frame-operation-minus" @click="minFrame(data,$event)">
           <img :src="`${publicPath}images/desktop/header-icon/min.png`" alt />
@@ -25,7 +26,7 @@
         </div>
       </slot>
     </div>
-    <div class="d-frame-content">
+    <div class="d-frame-content" @click="frameClick"  >
       <iframe :src="data.url" v-if="data.url"></iframe>
       <div v-html="data.html" v-if="data.html"></div>
       <!-- <span class="d-frame-operation-resize" v-resize></span> -->
@@ -94,8 +95,8 @@
     changeFullScreen: function () {
       this.fullScreen = !this.fullScreen;
     },
-    frameClick: function () {
-      debugger
+    frameClick() {
+    
       this.$store.commit('desktop/refreshFrame', this.data);
     },
     minFrame(data, e) {
@@ -149,16 +150,16 @@
           let toLeft = e.clientX - disx;
           let toTop = e.clientY - disy;
           //杈圭晫澶勭悊
-          if (toLeft <= 0) {
-            toLeft = 0
-          } else if (toLeft >= document.body.getBoundingClientRect().width - 40) {
-            toLeft = document.body.getBoundingClientRect().width - 40;
+          if (toLeft <= -(el.parentElement.offsetWidth-46*3)) {
+            toLeft = -(el.parentElement.offsetWidth-46*3)
+          } else if (toLeft >= document.body.getBoundingClientRect().width - 46*3) {
+            toLeft = document.body.getBoundingClientRect().width - 46*3;
           }
           el.parentElement.style.left = toLeft + 'px';
           if (toTop <= 40) {
             toTop = 40
-          } else if (toTop >= document.body.getBoundingClientRect().height - 40) {
-            toTop = document.body.getBoundingClientRect().height - 40;
+          } else if (toTop >= document.body.getBoundingClientRect().height - 31) {
+            toTop = document.body.getBoundingClientRect().height - 31;
           }
           el.parentElement.style.top = toTop + 'px';
         };
@@ -203,6 +204,7 @@
 }
 .d-frame {
   position: fixed;
+  box-shadow: 0 5px 10px rgba(0,0,0,.5);
 }
 
 .d-frame.d-frame-full {
@@ -240,6 +242,7 @@
   text-align: center;
   vertical-align: middle;
   cursor: pointer;
+  line-height: 28px;
 }
 
 .d-frame-title-operation i:hover {
diff --git a/src/pages/desktop/index/components/Tools.vue b/src/pages/desktop/index/components/Tools.vue
index 24d5c47..8bcadc0 100644
--- a/src/pages/desktop/index/components/Tools.vue
+++ b/src/pages/desktop/index/components/Tools.vue
@@ -183,6 +183,7 @@
 }
 .tools-middle .dock-item-wrap.actived{
   border-color: #40c3ff;
+  background-color: #98aabe;
 }
 .dock-item-wrap a {
   height: 100%;
diff --git a/src/pages/desktop/index/mock/userData.json b/src/pages/desktop/index/mock/userData.json
index dcdf442..c55fcb2 100644
--- a/src/pages/desktop/index/mock/userData.json
+++ b/src/pages/desktop/index/mock/userData.json
@@ -28,11 +28,11 @@
       {
         "id": "9",
         "name": "algorithmManage",
-        "src": "../../images/app-mid/algorithm-manage.png",
-        "alt": "绠楁硶绠$悊",
+        "src": "../../images/app-mid/algorithm-store.png",
+        "alt": "搴旂敤涓績",
         "type": "2",
-        "url": "/view/algorithmManage",
-        "title": "绠楁硶绠$悊",
+        "url": "/view/ai",
+        "title": "搴旂敤涓績",
         "width": 1528,
         "height": 915
       },
@@ -129,7 +129,9 @@
         "alt": "绯荤粺缁存姢",
         "type": "2",
         "url": "/view/vindicate",
-        "title": "绯荤粺缁存姢"
+        "title": "绯荤粺缁存姢",
+        "width": 733,
+        "height": 534
       }
     ]
   }
diff --git a/src/pages/desktop/index/store/modules/desktop.js b/src/pages/desktop/index/store/modules/desktop.js
index b6eaa52..3016c49 100644
--- a/src/pages/desktop/index/store/modules/desktop.js
+++ b/src/pages/desktop/index/store/modules/desktop.js
@@ -89,13 +89,17 @@
         offset = 5;
       }
     }
-    dframe.leftOffset = state.framesOffset + order;
-    dframe.topOffset = state.framesOffset + order;
+    // dframe.leftOffset = state.framesOffset + order;
+    // dframe.topOffset = state.framesOffset + order;
     dframe.order = 0;
     dframe.isShow = true;
     let curDframe = state.docks.find(dock => dock.id == dframe.id);
     dframe.width = curDframe.width;
     dframe.height = curDframe.height;
+    //鍏ㄩ儴缁濆灞呬腑
+    dframe.leftOffset = (document.body.offsetWidth - dframe.width)/2;
+    dframe.topOffset = (document.body.offsetHeight - dframe.height)/2;
+    
     state.framesOrder = order;
     state.framesOffset = offset;
     state.frames.push(dframe);
@@ -103,7 +107,7 @@
     return true;
   },
   addMinDock: (state, dock) => {
-    debugger
+    
     let ids = state.minDocks.map(item => item.id);
     
     if (ids.indexOf(dock.id) > -1) {
@@ -180,16 +184,16 @@
     state.safari.isShow = true;
   },
   refreshFrame: (state, item) => {
-    debugger
+    
     state.frames.forEach(function (it) {
-      debugger
+      
       if (it.id === item.id) {
         it.order = 1;
 
         state.minDocks.forEach((min,index)=>{
-          debugger
+          
           if(min.id == it.id){
-            debugger
+            
             min.highlight = true;
           }else{
             min.highlight = false;

--
Gitblit v1.8.0