Преглед на файлове

1、门禁设备
2、大屏视频对接

slowslo преди 4 години
родител
ревизия
7fb7ce660d
променени са 37 файла, в които са добавени 536 реда и са изтрити 369 реда
  1. 1 1
      public/index.html
  2. 3 3
      src/api/device/videoclouddevice.js
  3. 4 2
      src/api/enterprise/staff.js
  4. 2 2
      src/components/login/foot/index.vue
  5. 3 3
      src/components/select-dialog/select-dialog-residential.vue
  6. 1 1
      src/config/website.js
  7. 1 1
      src/lang/zh.js
  8. 2 2
      src/page/index/sidebar/index.vue
  9. 2 3
      src/page/index/top/index.vue
  10. 1 1
      src/page/index/top/nav/nav-bar.vue
  11. 5 5
      src/page/index/top/nav/nav-canvas.js
  12. 71 27
      src/page/login/index.vue
  13. 1 1
      src/page/login/userlogin.vue
  14. 1 1
      src/router/axios.js
  15. 2 0
      src/store/modules/user.js
  16. 52 0
      src/styles/avue.scss
  17. 67 2
      src/styles/common.scss
  18. 1 0
      src/styles/element-rewrite/index.scss
  19. 58 0
      src/styles/element-rewrite/message.scss
  20. BIN
      src/styles/element-theme/fonts/element-icons.ttf
  21. BIN
      src/styles/element-theme/fonts/element-icons.woff
  22. 0 0
      src/styles/element-theme/index.css
  23. 54 27
      src/styles/login.scss
  24. 9 7
      src/styles/media.scss
  25. 14 14
      src/styles/sidebar.scss
  26. 9 8
      src/styles/tags.scss
  27. 28 10
      src/styles/top.scss
  28. 28 1
      src/styles/variables.scss
  29. 2 2
      src/views/community/agency.vue
  30. 20 84
      src/views/device/doordevice.vue
  31. 3 0
      src/views/device/videodevice/devicePlayer.vue
  32. 3 2
      src/views/device/videodevice/wvp/wvpvideodevice.vue
  33. 3 0
      src/views/enterprise/enterprise.vue
  34. 1 1
      src/views/enterprise/staff.vue
  35. 22 97
      src/views/estate/accessrecord.vue
  36. 59 59
      src/views/wel/index.vue
  37. 3 2
      vue.config.js

+ 1 - 1
public/index.html

@@ -32,7 +32,7 @@
   <script type="text/javascript" src="./js/jessibuca/index.js"></script>
   <script type="text/javascript" src="./js/ZLMRTCClient.js"></script>
   <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=rk73w8dv1rkE4UdZsataG68VarhYQzrx&s=1"></script>
-  <title>CY-SMART</title>
+  <title>榕基智慧园区</title>
   <style>
     html,
     body,

+ 3 - 3
src/api/device/videoclouddevice.js

@@ -94,7 +94,7 @@ export const stop = (params) => {
 //播放拉流代理
 export const play = (params) => {
   return request({
-    url: '/api/cyzh-third/videocloud/proxy/play',
+    url: '/api/cyzh-third/wvp/proxy/play',
     method: 'get',
     params: {
       ...params,
@@ -105,7 +105,7 @@ export const play = (params) => {
 //转码播放
 export const convert = (streamId) => {
   return request({
-    url: '/api/cyzh-third/videocloud/proxy/convert/' + streamId,
+    url: '/api/cyzh-third/wvp/proxy/convert/' + streamId,
     method: 'get',
   })
 }
@@ -113,7 +113,7 @@ export const convert = (streamId) => {
 //停止转码
 export const convertStop = (convertKey) => {
   return request({
-    url: '/api/cyzh-third/videocloud/proxy/convertKey/' + convertKey,
+    url: '/api/cyzh-third/wvp/proxy/convertKey/' + convertKey,
     method: 'get',
   })
 }

+ 4 - 2
src/api/enterprise/staff.js

@@ -48,11 +48,13 @@ export const update = (row) => {
   })
 }
 
-export const pushUserFace = (row) => {
+export const pushUserFace = (ids) => {
   return request({
     url: '/api/cyzh-enterprise/staff/pushUserFace',
     method: 'post',
-    data: row
+    params: {
+      ids,
+    }
   })
 }
 

+ 2 - 2
src/components/login/foot/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="footer-link">
+  <!--<div class="footer-link">
     <p>Copyright © 2021 Design and Development By 广州常运智慧科技</p>
     <p>
       Contact Me by  :
@@ -10,7 +10,7 @@
         >CHANGYUN SMART</a
       >
     </p>
-  </div>
+  </div>-->
 </template>
 
 <script>

+ 3 - 3
src/components/select-dialog/select-dialog-residential.vue

@@ -6,7 +6,7 @@
 
   import {getList} from "@/api/community/residential";
 
-  export default {
+  export default  {
     name: "select-dialog-residential",
     data(){
       return {
@@ -56,8 +56,8 @@
         this.column.children.column[0].label = "所属社区"
         this.column.children.column[1].label = "所属小区"
       }else if (tenantType == 1){
-        this.column.children.column[0].label = "所属区"
-        this.column.children.column[1].label = "所属区"
+        this.column.children.column[0].label = "所属区"
+        this.column.children.column[1].label = "所属区"
       }
     },
     methods: {

+ 1 - 1
src/config/website.js

@@ -2,7 +2,7 @@
  * 全局配置文件
  */
 export default {
-  title: "CY-SMART   智慧园区大数据平台",
+  title: "榕基-SMART   智慧园区大数据平台",
   logo: "CY",
   key: 'saber',//配置主键,目前用于存储
   indexTitle: '智慧园区大数据平台',

+ 1 - 1
src/lang/zh.js

@@ -1,6 +1,6 @@
 export default {
   tip: '提示',
-  title: 'CY-SMART',
+  title: '榕基智慧园区',
   logoutTip: '退出系统, 是否继续?',
   submitText: '确定',
   cancelText: '取消',

+ 2 - 2
src/page/index/sidebar/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <div class="avue-sidebar toRight">
-    <logo></logo>
+  <div class="avue-sidebar">
+    <!-- <logo></logo> -->
     <el-scrollbar style="height:100%">
       <div v-if="validatenull(menu)"
            class="avue-sidebar--tip">{{$t('menuTip')}}

+ 2 - 3
src/page/index/top/index.vue

@@ -96,11 +96,10 @@
       </el-dropdown>
     </div>
     <!-- announcement 公告  -->
-    
-    <!-- <div class="announcement"></div>
+    <div class="announcement"></div>
     <div class="nav-bar">
       <navbar></navbar>
-    </div> -->
+    </div>
   </div>
 </template>
 <script>

+ 1 - 1
src/page/index/top/nav/nav-bar.vue

@@ -97,7 +97,7 @@ export default {
       transition: color 0.2s;
       text-decoration: none !important;
       display: block;
-      color: #1A1D2D80;
+      color: #dddddd;
       width: auto;
       min-width: 80px;
       line-height: 40px;

+ 5 - 5
src/page/index/top/nav/nav-canvas.js

@@ -21,8 +21,8 @@ export class NavCanvas {
   }
 
   constructor(el, tabSelector, selectedTabIndex = 0) {
-    this.canvas = document.getElementById(el) 
-    this.tabs = document.querySelectorAll(tabSelector) 
+    this.canvas = document.getElementById(el)
+    this.tabs = document.querySelectorAll(tabSelector)
 
     const { opt } = this
     this.calcTabs()
@@ -76,7 +76,7 @@ export class NavCanvas {
     ctx.lineWidth = 0.4
     for (let g = 3, h = 0.8, j = 1; 30 > j; j++) {
     //设置或返回用于笔触的颜色、渐变或模式
-      ctx.strokeStyle = `RGBA(26,29,45, ${h})`
+      ctx.strokeStyle = `RGBA(22, 120, 160, ${h})`
       //开始一条路径
       ctx.beginPath()
       //把路径移动到画布中的指定点,不创建线条
@@ -119,9 +119,9 @@ export class NavCanvas {
 
     //clearRect 在给定的矩形内清除指定的像素,这里清完了
     ctx.clearRect(0, 0, 2 * opt.width, 2 * opt.height)
-    ctx.shadowColor = 'rgba(26,29,45, 1)'
+    ctx.shadowColor = 'rgba(36, 131, 255, 1)'
     ctx.shadowBlur = 5
-    ctx.strokeStyle = '#1A1D2D'
+    ctx.strokeStyle = '#004CB3'
     ctx.lineWidth = 0.8
     ctx.fillStyle = 'none'
     this.draw(ctx, false)

+ 71 - 27
src/page/login/index.vue

@@ -2,33 +2,72 @@
   <div class="login-container"
        ref="login"
        @keyup.enter.native="handleLogin">
-    <top-color v-show="false"></top-color>
-    <div class="login-weaper animated bounceInDown">
-      <div class="login-left">
-        <div class="login-time">
-          {{time}}
-        </div>
-        <img class="img" src="/img/logo.png" alt="">
-        <p class="title">{{ $t('login.info') }}</p>
+       <particles/>
+       <indexbg/>
+      <!-- <div class="login-container-left">
+        <h4 class="login-title"> -->
+          <!-- {{ $t('login.title') }} -->
+          <!-- {{website.title}} -->
+          <!-- <top-lang></top-lang> -->
+        <!-- </h4>
+        <div class="bg"></div>
       </div>
-      <div class="login-border">
-        <div class="login-main">
-          <h4 class="login-title">
-            {{ $t('login.title') }}{{website.title}}
-            <top-lang></top-lang>
-          </h4>
-          <userLogin v-if="activeName==='user'"></userLogin>
-          <codeLogin v-else-if="activeName==='code'"></codeLogin>
-          <thirdLogin v-else-if="activeName==='third'"></thirdLogin>
-          <div class="login-menu">
-            <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a>
-            <!--<a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a>-->
-            <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>
+      <div class="login-container-right"> -->
+        <!-- <div class="login-weaper animated bounceInDown">
+        <div class="login-left">
+          <div class="login-time">
+            {{time}}
+          </div>
+          <img class="img" src="/img/logo.png" alt="">
+          <p class="title">{{ $t('login.info') }}</p>
+        </div> -->
+        <div class="login-border">
+          <div class="login-main">
+            <span class="login-title">{{website.title}}</span>
+            <userLogin v-if="activeName==='user'"></userLogin>
+            <codeLogin v-else-if="activeName==='code'"></codeLogin>
+            <thirdLogin v-else-if="activeName==='third'"></thirdLogin>
+            <div class="login-menu">
+              <!-- <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a> -->
+              <!-- <a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a> -->
+              <!-- <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a> -->
+            </div>
           </div>
-        </div>
-
       </div>
-    </div>
+    <!-- </div>
+      </div> -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    <!-- <top-color v-show="false"></top-color> -->
+      <foot/>
   </div>
 </template>
 <script>
@@ -41,7 +80,9 @@
   import topLang from "@/page/index/top/top-lang";
   import topColor from "@/page/index/top/top-color";
   import {getQueryString, getTopUrl} from "@/util/util";
-
+  import indexbg from '@/components/login/bg'
+  import particles from "@/components/login/particles";
+  import foot from "@/components/login/foot";
   export default {
     name: "login",
     components: {
@@ -49,7 +90,10 @@
       codeLogin,
       thirdLogin,
       topLang,
-      topColor
+      topColor,
+      particles,
+      indexbg,
+      foot
     },
     data() {
       return {
@@ -116,4 +160,4 @@
 
 <style lang="scss">
   @import "@/styles/login.scss";
-</style>
+</style>

+ 1 - 1
src/page/login/userlogin.vue

@@ -79,7 +79,7 @@
         tenantMode: this.website.tenantMode,
         loginForm: {
           //租户ID
-          tenantId: "000000",
+          tenantId: "878865",
           //用户名
           username: "admin",
           //密码

+ 1 - 1
src/router/axios.js

@@ -17,7 +17,7 @@ import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
 
 //默认超时时间
-axios.defaults.timeout = 10000;
+axios.defaults.timeout = 100000;
 //返回其他状态码
 axios.defaults.validateStatus = function (status) {
   return status >= 200 && status <= 500;

+ 2 - 0
src/store/modules/user.js

@@ -194,6 +194,8 @@ const user = {
           const data = res.data.data;
           commit('SET_PERMISSION', data);
           resolve();
+        }).catch(e =>{
+          console.log(e)
         })
       })
     },

+ 52 - 0
src/styles/avue.scss

@@ -0,0 +1,52 @@
+$backgrouind: #17171A;
+
+.avue-crud__menu{
+  background: $backgrouind;
+}
+.avue-group .el-collapse,
+.avue-group .el-collapse-item__wrap {
+  border-color: $backgrouind;
+}
+
+.avue-crud .el-table th {
+  word-break: break-word;
+  color: rgba(0, 0, 0, .85);
+  background-color: #404458;
+}
+
+.el-loading-mask {
+  background-color: $backgrouind;
+}
+
+//对话框
+.avue-dialog .el-dialog__title,
+.avue-dialog .el-drawer__header {
+  color: #4f546f;
+}
+
+.avue-dialog .el-dialog__header {
+  padding: 16px 24px;
+  min-height: 20px;
+  border-bottom: 1px solid $backgrouind;
+}
+
+//空状态文本
+.avue-empty__desc {
+  color: #4f546f;
+}
+
+//日期范围选择输入
+.el-range-editor--small .el-range-input {
+  background: $backgrouind;
+}
+
+//表格斑马条纹
+.el-table--striped .el-table__body tr.el-table__row--striped td {
+  background: #414b57;
+}
+
+//表头字体颜色
+.avue-crud .el-table th {
+  color: rgba(164, 160, 160, 0.85);
+  background-color: #404458;
+}

+ 67 - 2
src/styles/common.scss

@@ -13,11 +13,20 @@
 // 动画
 @import './animate/vue-transition.scss';
 //主题
-@import './theme/index.scss';
+@import './element-theme/index.css';
 //适配
 @import './media.scss';
 //通用配置
 @import './normalize.scss';
+//element - 重写的样式
+@import url(./element-rewrite/index.scss);
+//avue - 重写的样式
+@import url(./avue.scss);
+
+
+
+
+
 
 a{
   text-decoration: none;
@@ -27,4 +36,60 @@ a{
   outline: none;
 }
 //滚动条样式
-@include scrollBar;
+@include scrollBar;
+
+.center{
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.full{
+  width: 100%;
+  height: 100%;
+}
+.linkHover:hover{
+  cursor: pointer;
+  text-shadow: 2px 2px 2px #007e8c;
+  text-decoration: underline;
+}
+
+.enterBuilding:hover:after{
+  content: "(进入楼栋)";
+}
+
+.toRight{
+  animation: to-right 1s ease-in-out ;
+}
+@keyframes to-right {
+  from{
+    opacity: 0;
+    transform: translate(-100%,0);
+  }
+}
+.toLeft{
+  animation: to-left 1s ease-in-out;
+}
+@keyframes to-left {
+  from{
+    opacity: 0;
+    transform: translate(100%,0);
+  }
+}
+.toTop{
+  animation: to-top 1s ease-in-out ;
+}
+@keyframes to-top {
+  from{
+    opacity: 0;
+    transform: translate(0,100%);
+  }
+}
+.toBottom{
+  animation: to-bottom 1s ease-in-out;
+}
+@keyframes to-bottom {
+  from{
+    opacity: 0;
+    transform: translate(0,-100%);
+  }
+}

+ 1 - 0
src/styles/element-rewrite/index.scss

@@ -0,0 +1 @@
+@import url(./message.scss);

+ 58 - 0
src/styles/element-rewrite/message.scss

@@ -0,0 +1,58 @@
+@import "../variables.scss";
+
+.el-message {
+  border-radius: 0;
+
+  .el-message__icon {
+    font-size: 16px;
+  }
+
+  .el-icon-success {
+    color: $color-success;
+  }
+
+  .el-icon-warning {
+    color: $color-warning;
+  }
+
+  .el-icon-error {
+    color: $color-red;
+  }
+}
+
+.el-message--error {
+  background-color: $message-bgcolor-error;
+  border-color: $message-border-color-error;
+
+  .el-message__content {
+    font-size: 12px;
+    font-weight: 500;
+    color: $message-font-color;
+  }
+}
+
+.el-message--success {
+  background-color: $message-bgcolor-success;
+  border-color: $message-border-color-success;
+
+  .el-message__content {
+    font-size: 12px;
+    font-weight: 500;
+    color: $message-font-color;
+  }
+}
+
+.el-message--warning {
+  background-color: $message-bgcolor-warning;
+  border-color: $message-border-color-warning;
+
+  .el-message__content {
+    font-size: 12px;
+    font-weight: 500;
+    color: $message-font-color;
+  }
+}
+
+.el-message__closeBtn {
+  color: $message-font-color;
+}

BIN
src/styles/element-theme/fonts/element-icons.ttf


BIN
src/styles/element-theme/fonts/element-icons.woff


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/styles/element-theme/index.css


+ 54 - 27
src/styles/login.scss

@@ -1,11 +1,14 @@
 .login-container {
   display: flex;
   align-items: center;
+  flex-direction: column;
   position: relative;
+  overflow: hidden;
   width: 100%;
   height: 100%;
+  background-color: #4682B4;
   margin: 0 auto;
-  background-image: url("/img/bg/bg.jpg");
+  // background-image: url("/img/bg/bg1.jpg");
   background-size: 100% 100%;
 }
 
@@ -32,10 +35,10 @@
   border-bottom-left-radius: 5px;
   justify-content: center;
   flex-direction: column;
-  background-color: #409EFF;
+  background-color: #4682B4;
   color: #fff;
   float: left;
-  width: 50%;
+  width: 70%;
   position: relative;
 }
 
@@ -65,19 +68,24 @@
 }
 
 .login-border {
-  border-left: none;
+  position: absolute;
+  right: 10%;
+  top: 30%;
+  // border-left: none;
   border-top-right-radius: 5px;
   border-bottom-right-radius: 5px;
   color: #fff;
-  background-color: #fff;
-  width: 50%;
-  float: left;
-  box-sizing: border-box;
+  background-color:transparent;
+  width: 30%;
+  // float: left;
+  // box-sizing: border-box;
 }
 
 .login-main {
   margin: 0 auto;
-  width: 65%;
+
+  width: 100%;
+  z-index: 9999999999;
   box-sizing: border-box;
 }
 
@@ -89,14 +97,14 @@
   color: #76838f;
 }
 
-.login-title {
-  color: #333;
-  margin-bottom: 40px;
-  font-weight: 500;
-  font-size: 22px;
-  text-align: center;
-  letter-spacing: 4px;
-}
+// .login-title {
+//   color: #fff;
+//   margin-bottom: 40px;
+//   font-weight: 500;
+//   font-size: 22px;
+//   text-align: center;
+//   letter-spacing: 4px;
+// }
 
 .login-menu {
   margin-top: 40px;
@@ -111,25 +119,26 @@
 }
 
 .login-submit {
-  width: 100%;
+  width: 20%;
   height: 45px;
-  border: 1px solid #409EFF;
-  background: none;
+  border: 1px solid #ddd;
+  background: #0C5B8D;
   font-size: 18px;
   letter-spacing: 2px;
   font-weight: 300;
-  color: #409EFF;
+  color: #ddd;
   cursor: pointer;
   margin-top: 30px;
   font-family: "neo";
   transition: 0.25s;
+  float: right;
 }
 
 .login-form {
-  margin: 10px 0;
+  margin: 100px 0;
 
   i {
-    color: #333;
+    color: #fff;
   }
 
   .el-form-item__content {
@@ -143,18 +152,20 @@
   .el-input {
     input {
       padding-bottom: 10px;
-      text-indent: 5px;
+      text-indent: 20px;
       background: transparent;
+      font-size: 20px;
+      width: 100%;
       border: none;
       border-radius: 0;
-      color: #333;
+      color: #fff;
       border-bottom: 1px solid rgb(235, 237, 242);
     }
 
     .el-input__prefix {
       i {
         padding: 0 5px;
-        font-size: 16px !important;
+        font-size: 25px !important;
       }
     }
   }
@@ -173,7 +184,7 @@
   height: 38px;
   background-color: #fdfdfd;
   border: 1px solid #f0f0f0;
-  color: #333;
+  color: #fff;
   font-size: 14px;
   font-weight: bold;
   letter-spacing: 5px;
@@ -182,3 +193,19 @@
   text-align: center;
   cursor:pointer!important;
 }
+
+// ======================================================================================
+#particles-js {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1000;
+  width: 100%;
+  height: 100%;
+}
+.login-title{
+  color: #fff;
+  font-size: 50px;
+  user-select: none;
+  margin-bottom: 100px;
+}

+ 9 - 7
src/styles/media.scss

@@ -1,3 +1,4 @@
+@import url('./variables.scss');
 .avue-left,
 .avue-header,
 .avue-top,
@@ -11,7 +12,7 @@
 .avue-contail {
   width: 100%;
   height: 100%;
-  background: #f0f2f5;
+  background: $backgrouind;
   background-size: 100%;
   background-repeat: no-repeat;
 }
@@ -20,7 +21,6 @@
 .avue-left {
   position: fixed;
   left: 0;
-  top: 0;
   width: 240px;
   height: 100%;
   z-index: 1025;
@@ -33,7 +33,7 @@
   }
 
   .avue-header {
-    padding-left: 60px;
+    padding-left: 0px;
   }
 
   .avue-main {
@@ -43,7 +43,7 @@
 }
 
 .avue-header {
-  padding-left: 240px;
+  padding-left: 0px;
   width: 100%;
   background-color: #fff;
   box-sizing: border-box;
@@ -55,11 +55,12 @@
   padding: 0;
   padding-bottom: 20px;
   width: calc(100% - 240px);
-  height: calc(100% - 64px);
+  height: calc(100% - 180px);
   box-sizing: border-box;
   overflow: hidden;
   transition: all 0.5s;
-  background: #f0f2f5;
+  // background: #f0f2f5;
+  background: $backgrouind;
   z-index: 1026;
 
   &--fullscreen {
@@ -153,7 +154,7 @@
   }
   .avue-header {
     margin-bottom: 15px;
-    padding-left: 15px;
+    padding-left: 0px;
   }
   .top-bar__item {
     display: none;
@@ -162,6 +163,7 @@
     .avue-left,
     .avue-logo {
       width: $width;
+      margin-top: 64px;
       left: 0;
     }
 

+ 14 - 14
src/styles/sidebar.scss

@@ -1,25 +1,25 @@
-
-
+$mainColor: #1b315e;
+@import url('./variables.scss');
 .el-menu--popup{
     .el-menu-item{
-        background-color: #20222a;
+        background-color: $mainColor;
         i,span{
             color:hsla(0,0%,100%,.7);
         }
         &:hover{
             i,span{
-                color:#fff;
+                color:rgb(99, 99, 99);
             }
         }
         &.is-active {
-            background-color: rgba(0,0,0,.8);
+            background-color: $backgrouind;
             &:before {
                 content: '';
                 top: 0;
                 left: 0;
                 bottom: 0;
                 width: 4px;
-                background: #409eff;
+                background: $backgrouind;
                 position: absolute;
             }
             i,span{
@@ -27,15 +27,15 @@
             }
         }
     }
-    
+
 }
 .avue-sidebar {
-    user-select: none; 
+    user-select: none;
     position: relative;
-    padding-top: 60px;
-    height: 100%;
+    // padding-top: 60px;
+    height: calc(100% - 180px);
     position: relative;
-    background-color: #20222a;
+    background-color: $backgrouind;
     transition: width .2s;
     box-sizing: border-box;
     box-shadow: 2px 0 6px rgba(0,21,41,.35);
@@ -78,7 +78,7 @@
                 left: 0;
                 bottom: 0;
                 width: 4px;
-                background: #409eff;
+                background: #2d58ac;
                 position: absolute;
             }
             background-color: rgba(0,0,0,.8);
@@ -87,5 +87,5 @@
             }
         }
     }
-    
-}
+
+}

+ 9 - 8
src/styles/tags.scss

@@ -1,14 +1,15 @@
-
+@import url('./variables.scss');
 
 .avue-tags {
-    user-select: none; 
+    user-select: none;
     position: relative;
     padding: 0 10px;
     margin-bottom: 10px;
     box-sizing: border-box;
     overflow: hidden;
-    border-top: 1px solid #f6f6f6;
-    background-color: #fff;
+    // border-top: 1px solid #f6f6f6;
+    // background-color: #fff;
+    background-color: $backgrouind;
     box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);
     .el-tabs--card>.el-tabs__header {
         margin: 0;
@@ -29,8 +30,8 @@
         font-weight: normal;
         color: #ccc;
         &.is-active {
-            color: #409EFF;
-            border-bottom: 3px solid #409EFF;
+            color: #dddddd;
+            border-bottom: 3px solid #1b315e;
         }
     }
     .el-tabs__nav-prev,
@@ -77,7 +78,7 @@
                 border-bottom-right-radius: 5px;
             }
             &:hover{
-                background-color: #409EFF;
+                background-color: #1b315e;
                 color:#fff;
             }
         }
@@ -89,4 +90,4 @@
         padding: 1px 0 0 15px;
         box-sizing: border-box;
     }
-}
+}

+ 28 - 10
src/styles/top.scss

@@ -1,22 +1,28 @@
-$height:64px;
+$height:180px;
+$mainColor: #ffffff;
+$floor-first: 80px;
+$font-color: #B2C0CC;
 .avue-top {
     padding: 0 20px;
     position: relative;
+    background: #17171A url("/img/bg/top-bg.png") no-repeat center/cover;
     box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
-    color: rgba(0, 0, 0, .65);
+    // color: rgba(0, 0, 0, .65);
+     color: $font-color;
     font-size: 28px;
     height: $height;
-    line-height: $height;
+    line-height: $floor-first;
     box-sizing: border-box;
     white-space: nowrap;
     .el-menu-item{
         i,span{
+            color: $font-color;
             font-size: 13px;
         }
     }
     .el-menu--horizontal>.el-menu-item {
-      height: $height;
-      line-height: $height;
+      height: $floor-first;
+      line-height: $floor-first;
     }
 }
 .avue-breadcrumb {
@@ -38,7 +44,7 @@ $height:64px;
 }
 
 .top-search {
-    line-height: $height;
+    line-height: $floor-first;
     position: absolute !important;
     left: 20px;
     top:0;
@@ -63,11 +69,11 @@ $height:64px;
 
 .top-bar__left,
 .top-bar__right {
-    height: $height;
+    height: $floor-first;
     position: absolute;
     top: 0;
     i{
-        line-height: $height;
+        line-height: $floor-first;
     }
 }
 
@@ -84,14 +90,14 @@ $height:64px;
 .top-bar__item {
     position: relative;
     display: inline-block;
-    height: $height;
+    height: $floor-first;
     margin:0 10px;
     font-size: 16px;
     &--show {
         display: inline-block !important;
     }
     .el-badge__content.is-fixed{
-        top:12px;
+        top:25px;
         right: 5px;
     }
 }
@@ -106,3 +112,15 @@ $height:64px;
     font-size: inherit;
     font-weight: 400;
 }
+
+
+// =================================================================
+
+.nav-bar{
+    width: 100%;
+    height: 80px;
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    background: linear-gradient(to bottom, transparent, #17181C);
+}

+ 28 - 1
src/styles/variables.scss

@@ -1,2 +1,29 @@
+
 //main
-$mainBg: #409eff;
+$mainBg: #4682B4;
+$mainColor: #1b315e;
+$backgrouind: #17171A;
+
+
+$color-white: #fff;
+$color-black: #000;
+$color-gray: #90a0ae;
+$color-dark: #262c33;
+$color-red: #eb6243;
+
+
+$color-primary: #2681ff;
+$color-success: #50e3c2;
+$color-warning: #f27a24;
+$color-error: red;
+$color-info: gray;
+
+
+// Message
+$message-font-color: #fff;
+$message-bgcolor-success: #1b3964;
+$message-bgcolor-warning: #593c27;
+$message-bgcolor-error: #5d2b3e;
+$message-border-color-success: $color-primary;
+$message-border-color-warning: $color-warning;
+$message-border-color-error: $color-red;

+ 2 - 2
src/views/community/agency.vue

@@ -101,13 +101,13 @@ export default {
         span:6,
         data: [
           {
-            title: '区数量',
+            title: '区数量',
             count: 0,
             icon: 'el-icon-office-building',
             color: 'rgb(49, 180, 141)',
           },
           {
-            title: '区数量',
+            title: '区数量',
             count: 0,
             icon: 'el-icon-school',
             color: 'rgb(56, 161, 242)',

+ 20 - 84
src/views/device/doordevice.vue

@@ -43,6 +43,11 @@
       <template slot="residentialIdForm" slot-scope="scope">
         <select-dialog-residential :id="form.residentialId" :name="form.residentialName" :callback="selectCallback"></select-dialog-residential>
       </template>
+      <template slot="deviceStatus" slot-scope="{row}">
+        <el-tag v-if="row.deviceStatus === 0" type="info">离线</el-tag>
+        <el-tag v-if="row.deviceStatus === 1" type="success">在线</el-tag>
+        <el-tag v-if="row.deviceStatus === 2" type="danger">异常</el-tag>
+      </template>
     </avue-crud>
   </basic-container>
 </template>
@@ -84,7 +89,7 @@ export default {
         menuWidth:350,
         column: [
           {
-            label: "名称",
+            label: "设备名称",
             prop: "name",
             search: true,
             overHidden: true,
@@ -97,8 +102,6 @@ export default {
           {
             label:'',
             prop:'mapSelect',
-            // row: true,
-            // span: 20,
             viewDisplay: false,
             formslot: true,
             hide: true,
@@ -128,7 +131,7 @@ export default {
             }]
           },
           {
-            label: "Mac编码",
+            label: "设备序列号",
             prop: "macAddress",
             width: 200,
             rules: [{
@@ -151,10 +154,17 @@ export default {
               required: true,
               message: "请选择设备厂商",
               trigger: "blur"
-            }]
+            }],
+            hide: true
           },
           {
-            label: "所属小区",
+            label: "所属园区",
+            prop: "agencyName",
+            editDisplay:false,
+            addDisplay:false
+          },
+          {
+            label: "所属区域",
             prop: "residentialId",
             dicFlag: true,
             type: "select",
@@ -173,7 +183,7 @@ export default {
             },
             rules: [{
               required: true,
-              message: "请选择所属区",
+              message: "请选择所属区",
               trigger: "change"
             }],
           },
@@ -193,89 +203,15 @@ export default {
             label: "设备状态",
             prop: "deviceStatus",
             type: "select",
-            hide: true,
             dicUrl:"/api/blade-system/dict-biz/dictionary?code=face_device_status",
             props: {
               label: 'dictValue',
               value: 'dictKey'
             },
             dataType: "number",
-            rules: [{
-              required: true,
-              message: "请输入设备状态:离线 异常",
-              trigger: "blur"
-            }],
-            display: false
-          },
-
-          // {
-          //   label: "门禁设备",
-          //   prop: "id",
-          //   hide: true,
-          //   display:false,
-          //   rules: [{
-          //     required: true,
-          //     message: "请输入门禁设备",
-          //     trigger: "blur"
-          //   }]
-          // },
-
-
-          // {
-          //   label: "所属省",
-          //   prop: "provinceCode",
-          //   // hide: true,
-          //   width: 150,
-          //   type: "select",
-          //   dicUrl: "/api/blade-system/region/lazy-tree?parentCode=000000",
-          //   cascaderItem:["cityCode"],
-          //   props:{
-          //     label:"title",
-          //     value: "id"
-          //   },
-          //   rules: [{
-          //     required: true,
-          //     message: "请输入省行政编码",
-          //     trigger: "blur"
-          //   }]
-          // },
-          // {
-          //   label: "所属市",
-          //   prop: "cityCode",
-          //   hide: true,
-          //   type: "select",
-          //   width: 150,
-          //   cascaderItem: ["areaCode"],
-          //   dicUrl: `/api/blade-system/region/lazy-tree?parentCode={{key}}`,
-          //   props:{
-          //     label: "title",
-          //     value: "id"
-          //   },
-          //   dicFlag: true,
-          //   rules: [{
-          //     required: true,
-          //     message: "请输入市行政编码",
-          //     trigger: "blur"
-          //   }]
-          // },
-          // {
-          //   label: "所属区",
-          //   prop: "areaCode",
-          //   type: "select",
-          //    width: 150,
-          //   dicFlag: true,
-          //   cascaderItem: ["residentialId"],
-          //   dicUrl: `/api/blade-system/region/lazy-tree?parentCode={{key}}`,
-          //   props:{
-          //     label: "title",
-          //     value: "id"
-          //   },
-          //   rules: [{
-          //     required: true,
-          //     message: "请输入区行政编码",
-          //     trigger: "blur"
-          //   }]
-          // },
+            display: false,
+            slot: true
+          }
         ]
       },
       data: []

+ 3 - 0
src/views/device/videodevice/devicePlayer.vue

@@ -184,6 +184,7 @@ export default {
             deviceId: '',
             channelId: '',
             tabActiveName: 'media',
+            mediaServerId : '',
             hasaudio: false,
             loadingRecords: false,
             recordsLoading: false,
@@ -235,6 +236,7 @@ export default {
             this.channelId = channelId;
             this.deviceId = deviceId;
             this.streamId = "";
+            this.mediaServerId = "";
             this.app = "";
             this.videoUrl = ""
             if (!!this.$refs.videoPlayer) {
@@ -451,6 +453,7 @@ export default {
                   var streamInfo = res.data.data;
                   that.app = streamInfo.app;
                   that.streamId = streamInfo.streamId;
+                  that.mediaServerId = streamInfo.mediaServerId;
                   that.videoUrl = that.getUrlByStreamInfo(streamInfo);
                   that.recordPlay = true;
                 });

+ 3 - 2
src/views/device/videodevice/wvp/wvpvideodevice.vue

@@ -153,6 +153,7 @@ export default {
       detailVisible: false,
       detailForm: {},
       selectValue: "",
+      mediaServerId : '',
       form: {},
       query: {},
       loading: true,
@@ -454,11 +455,11 @@ export default {
       let that = this;
       let deviceId = row.deviceId;
       let channelId = row.channelId;
-      this.startBtnLaoding = true;
+      this.stopBtnLoading = true;
       stopPlay(deviceId, channelId).then(res => {
         console.log(JSON.stringify(res));
         that.onLoadChannel(that.page);
-        this.startBtnLaoding = false;
+        this.stopBtnLoading = false;
       }).catch(err => {
         if (err.response.status === 402) { // 已经停止过
           that.onLoadChannel(that.page);

+ 3 - 0
src/views/enterprise/enterprise.vue

@@ -333,6 +333,9 @@
         return ids.join(",");
       }
     },
+    mounted() {
+      console.log(this.permission,"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
+    },
     methods: {
       rowSave(row, done, loading) {
         add(row).then(() => {

+ 1 - 1
src/views/enterprise/staff.vue

@@ -591,7 +591,7 @@
       },
       pushUserFaceToDevice(row){
         //下发人脸到测温系统和设备
-        pushUserFace(row).then(res => {
+        pushUserFace(row.id).then(res => {
           this.$message({
             type: "success",
             message: "操作成功!"

+ 22 - 97
src/views/estate/accessrecord.vue

@@ -156,30 +156,6 @@
                 trigger: "blur"
               }]
             },
-            {
-              label: "所属社区",
-              prop: "agencyId",
-              // slot: true,
-              hide:true,
-              type: "select",
-              search: true,
-              searchFilterable: true,
-              filterable: true,
-              cascaderItem: ['residentialId'],
-              dicUrl: "/api/cyzh-community/agency/list?size=9999",
-              props: {
-                label: "name",
-                value: "id"
-              },
-              dicFormatter: (res)=>{
-                return res.data.records;
-              },
-              rules: [{
-                required: true,
-                message: "请选择所属社区",
-                trigger: "blur"
-              }]
-            },
             {
               label: "人脸",
               prop: "faceUrl",
@@ -198,36 +174,19 @@
                 trigger: "blur"
               }]
             },
-            {
-              label: "设备唯一标识",
-              labelWidth:120,
-              prop: "deviceId",
-              hide:true,
-              rules: [{
-                required: true,
-                message: "请输入设备唯一标识",
-                trigger: "blur"
-              }]
-            },
             {
               label: "开门方式",
               prop: "openType",
-              hide:true,
               type:"select",
               dicData:[
                 {
-                  label:'人脸',
+                  label:'刷脸开门',
                   value:1
                 },{
-                  label:'远程',
+                  label:'远程开门',
                   value:2
                 }
               ],
-              rules: [{
-                required: true,
-                message: "请输入开门方式{1->人脸,2->远程}",
-                trigger: "blur"
-              }]
             },
             {
               label: "体温(℃)",
@@ -240,48 +199,27 @@
               }]
             },
             {
-              label: "小区名称",
+              label: "所属园区",
+              prop: "agencyName",
+            },
+            {
+              label: "所属区域",
               prop: "residentialName",
-              rules: [{
-                required: true,
-                message: "请输入小区名称",
-                trigger: "blur"
-              }]
             },
-            // {
-            //   label: "企业名称",
-            //   prop: "enterpriseName",
-            //   rules: [{
-            //     required: true,
-            //     message: "请输入企业名称",
-            //     trigger: "blur"
-            //   }]
-            // },
-            // {
-            //   label: "机构类型",
-            //   prop: "agencyType",
-            //   rules: [{
-            //     required: true,
-            //     message: "请输入机构类型",
-            //     trigger: "blur"
-            //   }]
-            // },
             {
-              label: "设备位置",
-              prop: "deviceAddress",
+              label: "设备编码",
+              prop: "deviceId",
+              hide:true,
               rules: [{
                 required: true,
-                message: "请输入设备位置",
+                message: "请输入设备唯一标识",
                 trigger: "blur"
               }]
             },
-            // {
-            //   label: "所属社区",
-            //   prop: "agencyName",
-            //   hide: true,
-            //   editDisplay: false,
-            //   addDisplay: false
-            // },
+            {
+              label: "设备名称",
+              prop: "deviceName",
+            },
             {
               label: "设备mac码",
               prop: "deviceMac",
@@ -301,15 +239,6 @@
                 trigger: "blur"
               }]
             },
-            // {
-            //   label: "机构路径",
-            //   prop: "orgPosition",
-            //   rules: [{
-            //     required: true,
-            //     message: "请输入机构路径",
-            //     trigger: "blur"
-            //   }]
-            // },
           ]
         },
         data: []
@@ -335,21 +264,17 @@
     },
     created() {
       const tenantType = localStorage.getItem("tenantType");
+      let agencyNameProp = this.findObject(this.option.column,"agencyName");
+      let residentialNameProp = this.findObject(this.option.column,"residentialName");
       if (tenantType == 0){
         //社区
-        let residentialNameProp = this.findObject(this.option.column,"residentialName");
-        // let agencyNameProp = this.findObject(this.option.column,"agencyName");
-        this.option.column[1].label="所属社区";
-        residentialNameProp.label="小区名称";
-        // agencyNameProp.label="所属社区";
+        agencyNameProp.label="所属社区";
+        residentialNameProp.label="所属小区";
       }else if (tenantType == 1){
         //园区
-        let residentialNameProp = this.findObject(this.option.column,"residentialName");
-        // let agencyNameProp = this.findObject(this.option.column,"agencyName");
-        this.option.column[1].label = "所属园区";
-        this.option.column.splice(2,0,this.enterpriseColumn)
-        residentialNameProp.label="区域名称";
-        // agencyNameProp.label="所属园区";
+        agencyNameProp.label = "所属园区";
+        this.option.column.splice(5,0,this.enterpriseColumn)
+        residentialNameProp.label="所属区域";
       }
     },
     methods: {

+ 59 - 59
src/views/wel/index.vue

@@ -1,6 +1,6 @@
 <template>
   <basic-container style="margin-top: 10px;">
-    <avue-data-card :option="option"></avue-data-card>  
+    <avue-data-card :option="option"></avue-data-card>
   </basic-container>
 </template>
 
@@ -29,65 +29,65 @@ export default {
             name: '信阳榕基软件园',
             src: './test/2.png',
             text: '信阳软件园区',
-            href:'http://8.135.18.59:1779/',
-            target:'_blank'
-          },
-          {
-            name: '城市指挥中心',
-            src: './test/5.png',
-            text: '城市指挥中心',
-            href:'http://36.103.227.152:1777',
-            target:'_blank'
-          },
-          {
-            name: '城市网格管理',
-            src: './test/4.png',
-            text: '城市网格管理',
-            href:'http://36.103.227.152:1666',
-            target:'_blank'
-          },
-          {
-            name: '宁夏银川市望远工业园区德锐斯创业园',
-            src: './test/6.png',
-            text: '宁夏银川市望远工业园区德锐斯创业园',
-            href:'http://139.9.103.171:1999/#/wel/index21',
-            target:'_blank'
-          },
-          {
-            name: '宁夏数字社区',
-            src: './test/7.png',
-            text: '宁夏数字社区',
-            href:'http://139.9.103.171:1888/#/wel/smartCommunity',
-            target:'_blank'
-          },
-          {
-            name: '消防态势--设备态势',
-            src: './test/8.png',  
-            text: '消防态势--设备态势',
-            href:'http://139.9.103.171:1888/#/wel/fireDevices',
-            target:'_blank'
-          },
-          {
-            name: '养老服务',
-            src: './test/9.png',
-            text: '养老服务',
-            href:'http://139.9.103.171:1888/#/wel/smartPension',
-            target:'_blank'
-          },
-          {
-            name: '公安服务',
-            src: './test/10.png',
-            text: '公安服务',
-            href:'http://139.9.103.171:1888/#/wel/smartPolice',
-            target:'_blank'
-          },
-          {
-            name: '运营服务',
-            src: './test/11.png',
-            text: '运营服务',
-            href:'http://139.9.103.171:1888/#/wel/operatePlatform',
+            href:'http://192.168.1.69:1888/',
             target:'_blank'
           },
+          // {
+          //   name: '城市指挥中心',
+          //   src: './test/5.png',
+          //   text: '城市指挥中心',
+          //   href:'http://36.103.227.152:1777',
+          //   target:'_blank'
+          // },
+          // {
+          //   name: '城市网格管理',
+          //   src: './test/4.png',
+          //   text: '城市网格管理',
+          //   href:'http://36.103.227.152:1666',
+          //   target:'_blank'
+          // },
+          // {
+          //   name: '宁夏银川市望远工业园区德锐斯创业园',
+          //   src: './test/6.png',
+          //   text: '宁夏银川市望远工业园区德锐斯创业园',
+          //   href:'http://139.9.103.171:1999/#/wel/index21',
+          //   target:'_blank'
+          // },
+          // {
+          //   name: '宁夏数字社区',
+          //   src: './test/7.png',
+          //   text: '宁夏数字社区',
+          //   href:'http://139.9.103.171:1888/#/wel/smartCommunity',
+          //   target:'_blank'
+          // },
+          // {
+          //   name: '消防态势--设备态势',
+          //   src: './test/8.png',
+          //   text: '消防态势--设备态势',
+          //   href:'http://192.168.1.69:1889/#/wel/fireDevices',
+          //   target:'_blank'
+          // },
+          // {
+          //   name: '养老服务',
+          //   src: './test/9.png',
+          //   text: '养老服务',
+          //   href:'http://192.168.1.69:1889/#/wel/smartPension',
+          //   target:'_blank'
+          // },
+          // {
+          //   name: '公安服务',
+          //   src: './test/10.png',
+          //   text: '公安服务',
+          //   href:'http://192.168.1.69:1889/#/wel/smartPolice',
+          //   target:'_blank'
+          // },
+          // {
+          //   name: '运营服务',
+          //   src: './test/11.png',
+          //   text: '运营服务',
+          //   href:'http://192.168.1.69:1889/#/wel/operatePlatform',
+          //   target:'_blank'
+          // },
         ]
       },
     }
@@ -110,7 +110,7 @@ export default {
     /* border-width: 1px;
     border-style: solid; */
     /* box-shadow: 2px 2px 2px #30313B; */
-    
+
 }
 /deep/ .el-card {
     border: 1px solid transparent;

+ 3 - 2
vue.config.js

@@ -22,11 +22,12 @@ module.exports = {
   },
   //开发模式反向代理配置,生产模式请使用Nginx部署并配置反向代理
   devServer: {
-    port: 1888,
+    port: 1889,
     proxy: {
       '/api': {
         //本地服务接口地址
-        target: 'http://8.135.18.59:1889/api',
+        target: 'http://192.168.1.69',
+        // target: 'http://8.135.18.59',
         //远程演示服务地址,可用于直接启动项目
         // target: 'https://saber.bladex.vip/api',
         ws: true,

Някои файлове не бяха показани, защото твърде много файлове са промени