From bae0368f502f524fc739003fe751fb0eb06c5859 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期四, 17 六月 2021 14:48:29 +0800
Subject: [PATCH] 修改朔黄前端分析

---
 src/pages/shuohuangMonitorAnalyze/index/App.vue                        |   56 +++-
 vue.config.js                                                          |    7 
 src/pages/shuohuangMonitorAnalyze/components/charts/line.vue           |    4 
 src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue |  273 ++++++++----------------
 src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue  |   25 +-
 src/pages/cameraAccess/components/DataStackInfo.vue                    |    4 
 src/pages/shuohuangMonitorAnalyze/components/leftNav.vue               |   26 +-
 src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue          |  110 ++++-----
 src/api/shuohuang.ts                                                   |   39 ++-
 src/pages/shuohuangMonitorAnalyze/components/lkgManage.vue             |   65 +++++
 10 files changed, 301 insertions(+), 308 deletions(-)

diff --git a/src/api/shuohuang.ts b/src/api/shuohuang.ts
index 592f571..869ca98 100644
--- a/src/api/shuohuang.ts
+++ b/src/api/shuohuang.ts
@@ -36,7 +36,7 @@
     method: 'get',
     params: query
   })
-  export const getCarVideos = (query: any) =>
+export const getCarVideos = (query: any) =>
   request({
     url: '/data/api-c/lkg/getCarVideos',
     method: 'get',
@@ -125,39 +125,46 @@
     method: 'post',
     data
   })
-export const uploadDirectory = (data:any) =>
+export const uploadDirectory = (data: any) =>
   request({
-    url:'/data/api-c/user/uploadMulti',
-    method:'post',
+    url: '/data/api-c/user/uploadMulti',
+    method: 'post',
     data
   })
 
-export const getTransferRecord = (query:any) => request({
-  url:'/data/api-c/saverecord/getlst',
+export const getTransferRecord = (query: any) => request({
+  url: '/data/api-c/saverecord/getlst',
   method: 'get',
   params: query
 })
 
 export const getTransferStatusList = () => request({
-  url:'/data/api-c/saverecord/getStatusList',
+  url: '/data/api-c/saverecord/getStatusList',
   method: 'get'
 })
-export const addDevice = (data:any)=>request({
-  url:'/data/api-c/device/add',
+export const addDevice = (data: any) => request({
+  url: '/data/api-c/device/add',
   method: 'post',
   data
 })
-export const getDeviceList = ()=>request({
-  url:'/data/api-c/device/getlst',
+export const getDeviceList = () => request({
+  url: '/data/api-c/device/getlst',
   method: 'get'
 })
-export const getDeviceInfoById = (query:any) => request({
-  url:'/data/api-c/slot/getlst',
+export const getDeviceInfoById = (query: any) => request({
+  url: '/data/api-c/slot/getlst',
   method: 'get',
   params: query
 })
-export const getEventVideo = (query:any) => request({
-  url:'/data/api-c/lkg/getEventClip',
+export const getEventVideo = (query: any) => request({
+  url: '/data/api-c/lkg/getEventClip',
   method: 'get',
   params: query
-})
\ No newline at end of file
+})
+
+export const uploadLKG = (data: any) =>
+  request({
+    url: '/data/api-c/lkg/uploadLKGExcel',
+    method: 'post',
+    data
+  })
\ No newline at end of file
diff --git a/src/pages/cameraAccess/components/DataStackInfo.vue b/src/pages/cameraAccess/components/DataStackInfo.vue
index 1806173..abf7198 100644
--- a/src/pages/cameraAccess/components/DataStackInfo.vue
+++ b/src/pages/cameraAccess/components/DataStackInfo.vue
@@ -457,8 +457,10 @@
       if (row.type === 1) {
 
         this.videoUrl = "/files/" + row.identifier + ".mp4"
+        if (row.identifier == "") {
+          this.videoUrl = row.path;
+        }
       } else if (row.type === 2) {
-
         this.imgUrl = "/files/" + row.path.substr(row.path.lastIndexOf('/') + 1)
       }
     },
diff --git a/src/pages/shuohuangMonitorAnalyze/components/charts/line.vue b/src/pages/shuohuangMonitorAnalyze/components/charts/line.vue
index 4e491b5..ef984b6 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/charts/line.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/charts/line.vue
@@ -9,11 +9,11 @@
       type: Object
     }
   },
-  mounted () {
+  mounted() {
     this.initLineChart();
   },
   methods: {
-    initLineChart () {
+    initLineChart() {
       this.$nextTick(() => {
         let dom = this.$echarts.init(this.$refs['lineChart']);
         dom && dom.setOption(this.options);
diff --git a/src/pages/shuohuangMonitorAnalyze/components/leftNav.vue b/src/pages/shuohuangMonitorAnalyze/components/leftNav.vue
index 3b6cb23..afeeec2 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/leftNav.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/leftNav.vue
@@ -40,6 +40,7 @@
         </template>
         <el-menu-item index="transferMemo">瑙嗛杞偍璁板綍</el-menu-item>
         <el-menu-item index="transferDeviceManage">杞偍璁惧绠$悊</el-menu-item>
+        <el-menu-item index="lkgManage">LKG鏁版嵁绠$悊</el-menu-item>
       </el-submenu>
       <el-submenu index="7">
         <template slot="title">
@@ -66,33 +67,33 @@
       type: Function
     }
   },
-  data () {
+  data() {
     return {
       publicPath: process.env.BASE_URL,
       activeIndex: 'guideIndex'
     }
   },
-  mounted(){
+  mounted() {
     console.log('mounted')
     window.onbeforeunload = () => {
       // debugger
       console.log('beforeunload')
       sessionStorage.setItem('leftNavAct', this.activeIndex);
     }
-    if(!!sessionStorage.getItem('leftNavAct')){
+    if (!!sessionStorage.getItem('leftNavAct')) {
       this.activeIndex = sessionStorage.getItem('leftNavAct');
-      this.$emit('menuChange',this.activeIndex);
+      this.$emit('menuChange', this.activeIndex);
     }
   },
   methods: {
-    handleSelect(index,indePath){
+    handleSelect(index, indePath) {
       this.activeIndex = index;
-      this.$emit('menuChange',index);
+      this.$emit('menuChange', index);
     },
-    handleOpen () {
+    handleOpen() {
 
     },
-    handleClose () {
+    handleClose() {
 
     }
   }
@@ -111,20 +112,19 @@
     border-bottom: 1px solid #eee;
     color: rgb(0, 150, 250);
   }
-  .iconfont{
+  .iconfont {
     padding-right: 10px;
   }
-  .el-menu-vertical-demo:not(.el-menu--collapse){
+  .el-menu-vertical-demo:not(.el-menu--collapse) {
     width: 250px;
   }
   .el-menu-item,
   .el-submenu__title {
     text-align: left;
   }
-  .el-menu-item.is-active{
-    color:#409EFF;
+  .el-menu-item.is-active {
+    color: #409eff;
     background-color: #ecf0fc;
   }
-  
 }
 </style>
\ No newline at end of file
diff --git a/src/pages/shuohuangMonitorAnalyze/components/lkgManage.vue b/src/pages/shuohuangMonitorAnalyze/components/lkgManage.vue
new file mode 100644
index 0000000..e765b28
--- /dev/null
+++ b/src/pages/shuohuangMonitorAnalyze/components/lkgManage.vue
@@ -0,0 +1,65 @@
+<template>
+  <div class="lkg-manage">
+    <div class="import-btn">
+      <label>涓婁紶LKG鏁版嵁鏂囦欢</label>
+      <el-button
+        size="mini"
+        type="primary"
+        @click="uploadDirectoryTrigger"
+        :loading="uploading"
+      >鐐瑰嚮涓婁紶</el-button>
+      <input
+        ref="directoryInput"
+        @change="importDirectory"
+        hidden
+        type="file"
+        accept=".xlsx, .xls"
+        multiple
+      />
+    </div>
+  </div>
+</template>
+
+<script>
+import { uploadLKG } from "@/api/shuohuang"
+
+export default {
+  data() {
+    return {
+      uploading: false
+    }
+  },
+  methods: {
+    uploadDirectoryTrigger() {
+      this.$refs['directoryInput'].click();
+    },
+    importDirectory() {
+      let _this = this;
+      _this.uploading = true;
+      let formData = new FormData;
+      for (let i = 0; i < this.$refs['directoryInput'].files.length; i++) {
+        formData.append('files', this.$refs['directoryInput'].files[i])
+      }
+
+      uploadLKG(formData).then(res => {
+        if (res && res.success) {
+          this.$message.success("涓婁紶鎴愬姛")
+        }
+        _this.uploading = false;
+      }).catch(err => {
+        this.$message.warning("涓婁紶澶辫触", err)
+        _this.uploading = false;
+      })
+    },
+  }
+}
+</script>
+
+<style lang="scss">
+.lkg-manage {
+  .import-btn {
+    text-align: left;
+    margin: 10px 20px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
index 8645349..0dddf47 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
@@ -26,15 +26,9 @@
           v-show="!checkedConfigs.length"
           class="tip"
           style="padding-left: 5px; margin-top: 3px"
-          >杩樻湭閫夋嫨绛涢�夋潯浠�</span
-        >
-        <div
-          class="config-item"
-          v-for="(config, index) in checkedConfigs"
-          :key="index"
-        >
-          <span class="title">{{ config.title }}</span
-          >&nbsp;:
+        >杩樻湭閫夋嫨绛涢�夋潯浠�</span>
+        <div class="config-item" v-for="(config, index) in checkedConfigs" :key="index">
+          <span class="title">{{ config.title }}</span>&nbsp;:
           <span class="val" v-for="option in config.data" :key="option.id">
             <!-- <template>
               <div>
@@ -46,25 +40,17 @@
               <i>銆�</i>
             </span>
           </span>
-          <i
-            class="el-icon-close remove"
-            @click="removeCheckedConfig(config)"
-          ></i>
+          <i class="el-icon-close remove" @click="removeCheckedConfig(config)"></i>
         </div>
         <el-button
           class="clear-config-btn"
           v-if="checkedConfigs.length"
           size="mini"
           @click="clearCheckedConfigs"
-          >鍙栨秷閫夋嫨</el-button
-        >
+        >鍙栨秷閫夋嫨</el-button>
       </div>
       <div class="optional-config">
-        <div
-          class="config"
-          v-for="(config, index) in optionalConfigs"
-          :key="index"
-        >
+        <div class="config" v-for="(config, index) in optionalConfigs" :key="index">
           <template v-if="config.isShow">
             <div class="title">{{ config.title }}</div>
             <div class="options-wrap">
@@ -73,41 +59,23 @@
                 :ref="'options' + config.id"
                 :style="{ height: fixedOneLineHeight + 'px' }"
               >
-                <div
-                  class="option"
-                  v-for="(option, index) in config.data"
-                  :key="index"
-                >
+                <div class="option" v-for="(option, index) in config.data" :key="index">
                   <div v-show="config.isMultCheck">
                     <el-checkbox v-model="option.isChecked"></el-checkbox>
                     <span>{{ option.name }}</span>
                   </div>
-                  <div
-                    v-show="!config.isMultCheck"
-                    @click="checkOption(config, option)"
-                  >
+                  <div v-show="!config.isMultCheck" @click="checkOption(config, option)">
                     <span>{{ option.name }}</span>
                   </div>
                 </div>
               </div>
               <div class="btns text-center" v-show="config.isMultCheck">
-                <el-button size="mini" @click="cancleMultCheck(config)"
-                  >鍙栨秷</el-button
-                >
-                <el-button
-                  size="mini"
-                  type="primary"
-                  @click="checkOption(config)"
-                  >纭畾</el-button
-                >
+                <el-button size="mini" @click="cancleMultCheck(config)">鍙栨秷</el-button>
+                <el-button size="mini" type="primary" @click="checkOption(config)">纭畾</el-button>
               </div>
             </div>
             <div class="right-btns">
-              <div
-                class="more"
-                v-if="config.showMore"
-                @click="showMore(config)"
-              >
+              <div class="more" v-if="config.showMore" @click="showMore(config)">
                 <span>鏇村</span>&nbsp;
                 <i
                   :class="
@@ -130,11 +98,7 @@
         <div class="config" v-if="showAdvance">
           <div class="title">楂樼骇閫夐」</div>
           <div>
-            <el-menu
-              class="el-menu-demo"
-              mode="horizontal"
-              @select="handleSelect"
-            >
+            <el-menu class="el-menu-demo" mode="horizontal" @select="handleSelect">
               <el-submenu
                 class="config-submenu"
                 :popper-append-to-body="false"
@@ -149,8 +113,7 @@
                   :index="index + '-' + ind"
                   @click="checkOption(config, option)"
                   class="highlevel-option"
-                  >{{ option.name }}</el-menu-item
-                >
+                >{{ option.name }}</el-menu-item>
               </el-submenu>
             </el-menu>
           </div>
@@ -161,22 +124,14 @@
       <div class="header-bar clearfix">
         <div class="left">
           <div>
-            <el-select
-              v-model="IsFollow"
-              size="mini"
-              @change="filterSearchData"
-            >
+            <el-select v-model="IsFollow" size="mini" @change="filterSearchData">
               <el-option value label="鍏ㄩ儴"></el-option>
               <el-option :value="false" label="鏈叧娉�"></el-option>
               <el-option :value="true" label="宸插叧娉�"></el-option>
             </el-select>
           </div>
           <div>
-            <el-select
-              v-model="IsOperate"
-              size="mini"
-              @change="filterSearchData"
-            >
+            <el-select v-model="IsOperate" size="mini" @change="filterSearchData">
               <el-option value label="鍏ㄩ儴"></el-option>
               <el-option value="0" label="鏈鐞�"></el-option>
               <el-option value="1" label="宸插鐞�"></el-option>
@@ -192,11 +147,7 @@
             >
               <i class="el-icon-menu"></i>
             </div>
-            <div
-              class="type"
-              :class="{ current: showType == 'list' }"
-              @click="checkType('list')"
-            >
+            <div class="type" :class="{ current: showType == 'list' }" @click="checkType('list')">
               <i class="el-icon-s-operation"></i>
             </div>
           </div>
@@ -204,14 +155,7 @@
       </div>
       <div class="content" v-show="showType == 'menu'">
         <el-row :gutter="20">
-          <el-col
-            :xs="8"
-            :sm="6"
-            :md="6"
-            :lg="6"
-            v-for="data in tabData"
-            :key="data.id"
-          >
+          <el-col :xs="8" :sm="6" :md="6" :lg="6" v-for="data in tabData" :key="data.id">
             <div class="card">
               <div class="video-wrap" @click="checkVideoDetail(data)">
                 <img :src="data.VideoCover" alt />
@@ -236,27 +180,22 @@
                   </div>
                 </div>
                 <div class="mark-info">
-                  <div
-                    class="abnormal"
-                    v-if="data.LableLst && data.LableLst.length"
-                  >
+                  <div class="abnormal" v-if="data.LableLst && data.LableLst.length">
                     <span
                       class="abnormal-label"
                       v-for="(label, index) in data.LableLst"
                       :key="index"
-                      >{{
-                        label.Desc +
-                        (index == data.LableLst.length - 1 ? "" : "锛�")
-                      }}</span
                     >
+                      {{
+                      label.Desc +
+                      (index == data.LableLst.length - 1 ? "" : "锛�")
+                      }}
+                    </span>
                   </div>
                   <div v-else>
                     <span>鏃犲紓甯�</span>
                   </div>
-                  <div
-                    class="event-tag"
-                    v-if="data.EventLst && data.EventLst.length"
-                  >
+                  <div class="event-tag" v-if="data.EventLst && data.EventLst.length">
                     <el-tag
                       size="mini"
                       type="info"
@@ -264,25 +203,15 @@
                       :key="index"
                       style="margin-right: 5px; margin-bottom: 5px"
                       @click="checkEventVideo(label)"
-                      >{{ label.Event }}</el-tag
-                    >
+                    >{{ label.Event }}</el-tag>
                   </div>
                 </div>
                 <div class="tag-info">
-                  <div
-                    class="tag"
-                    v-for="(tag, index) in data.tags"
-                    :key="index"
-                  >
-                    {{ tag }}
-                  </div>
+                  <div class="tag" v-for="(tag, index) in data.tags" :key="index">{{ tag }}</div>
                 </div>
               </div>
               <div class="star" @click="toggleFollow(data)">
-                <i
-                  class="iconfont"
-                  :class="[data.IsFollow ? 'follow' : '', 'iconguanzhu']"
-                ></i>
+                <i class="iconfont" :class="[data.IsFollow ? 'follow' : '', 'iconguanzhu']"></i>
               </div>
             </div>
           </el-col>
@@ -300,33 +229,16 @@
         ></el-pagination>
       </div>
       <div class="content" v-show="showType == 'list'">
-        <el-table
-          :data="tableData"
-          fit
-          ref="elTable"
-          @row-click="checkVideoDetail"
-        >
+        <el-table :data="tableData" fit ref="elTable" @row-click="checkVideoDetail">
           <el-table-column label="鍚嶇О" prop="VideoName" sortable width="500">
             <template slot-scope="scope" style="cursor: pointer">
               <div>{{ scope.row.VideoName }}</div>
             </template>
           </el-table-column>
 
-          <el-table-column
-            label="澶у皬"
-            prop="VideoSize"
-            sortable
-          ></el-table-column>
-          <el-table-column
-            label="淇敼鏃ユ湡"
-            prop="VideoUpdateDate"
-            sortable
-          ></el-table-column>
-          <el-table-column
-            label="鍒涘缓鏃ユ湡"
-            prop="VideoCreateDate"
-            sortable
-          ></el-table-column>
+          <el-table-column label="澶у皬" prop="VideoSize" sortable></el-table-column>
+          <el-table-column label="淇敼鏃ユ湡" prop="VideoUpdateDate" sortable></el-table-column>
+          <el-table-column label="鍒涘缓鏃ユ湡" prop="VideoCreateDate" sortable></el-table-column>
 
           <el-table-column label="鎿嶄綔">
             <template slot-scope="scope">
@@ -358,25 +270,27 @@
 
        v-drag v-resize
 
-       -->
+      -->
       <!-- <div > -->
-          <!-- :modal="false" -->
-        <el-dialog v-drag  v-resize
-          class="dialog-video"
-          :visible="videoDialogVisible"
-          @close="closeDial"
-          :close-on-click-modal="false"
-          :destroy-on-close="true"
-          :modal-append-to-body="false"
-        >
-          <div slot="title" class="title">
-            <div class="center">
-              <i class="el-icon-connection"></i>
-              <span>鎾斁瑙嗛</span>
-            </div>
+      <!-- :modal="false" -->
+      <el-dialog
+        v-drag
+        v-resize
+        class="dialog-video"
+        :visible="videoDialogVisible"
+        @close="closeDial"
+        :close-on-click-modal="false"
+        :destroy-on-close="true"
+        :modal-append-to-body="false"
+      >
+        <div slot="title" class="title">
+          <div class="center">
+            <i class="el-icon-connection"></i>
+            <span>鎾斁瑙嗛</span>
           </div>
-          <video-analyze v-if="videoDialogVisible" :videoDetails="selectedVideo" />
-        </el-dialog>
+        </div>
+        <video-analyze v-if="videoDialogVisible" :videoDetails="selectedVideo" />
+      </el-dialog>
       <!-- </div> -->
 
       <el-dialog
@@ -419,8 +333,8 @@
       keyword: "",
       IsFollow: "",
       searchTime: [
-        new Date(2020, 0, 1, 0, 0, 0),
-        new Date(2020, 11, 31, 23, 59, 59),
+        new Date(2021, 0, 1, 0, 0, 0),
+        new Date(2021, 11, 31, 23, 59, 59),
       ],
       curTabPage: 1,
       curTablePage: 1,
@@ -516,9 +430,9 @@
         }
       );
     },
-    closeDial(){
+    closeDial() {
       this.videoDialogVisible = false
-      this.selectedVideo={}
+      this.selectedVideo = {}
     },
     handleTabSizeChange(size) {
       this.tabPageSize = size;
@@ -696,7 +610,7 @@
       _this.selectedVideo = data;
       _this.videoDialogVisible = true;
     },
-    checkFollow() {},
+    checkFollow() { },
     checkType(type) {
       this.showType = type;
       this.filterSearchData();
@@ -744,7 +658,7 @@
         opt.isChecked = false;
       });
     },
-    handleSelect(key, keyPath) {},
+    handleSelect(key, keyPath) { },
     showMore(config) {
       config.isShowMore = !config.isShowMore;
       this.$refs[`options${config.id}`][0].style.height = config.isShowMore
@@ -799,43 +713,43 @@
       };
     },
     resize(el, binding, vnode) {
-        const dragDom = el.querySelector('.el-dialog') 
-        dragDom.style.overflow = 'hidden'
-        let minWidth = 400
-        let minHeight = 300 //
-        
-        // 鎷変几
-        let resizeEl = document.createElement('div')
-        dragDom.appendChild(resizeEl) // 鍦ㄥ脊绐楀彸涓嬭鍔犱笂涓�涓�10-10px鐨勬帶鍒跺潡
-        resizeEl.style.cursor = 'nwse-resize'
-        // resizeEl.style.cursor = 'se-resize'
-        resizeEl.style.position = 'absolute'
-        resizeEl.style.height = '12px'
-        resizeEl.style.width = '12px'
-        resizeEl.style.right = '0px'
-        resizeEl.style.bottom = '0px' //榧犳爣鎷変几寮圭獥
-        resizeEl.style.background = 'url("/images/desktop/resize.png") no-repeat' //榧犳爣鎷変几寮圭獥
+      const dragDom = el.querySelector('.el-dialog')
+      dragDom.style.overflow = 'hidden'
+      let minWidth = 400
+      let minHeight = 300 //
 
-        resizeEl.onmousedown = (e) => {
-            // 璁板綍鍒濆x浣嶇疆
-            const clientX = e.clientX // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂�
-            const disX = e.clientX - resizeEl.offsetLeft
-            const disY = e.clientY - resizeEl.offsetTop
+      // 鎷変几
+      let resizeEl = document.createElement('div')
+      dragDom.appendChild(resizeEl) // 鍦ㄥ脊绐楀彸涓嬭鍔犱笂涓�涓�10-10px鐨勬帶鍒跺潡
+      resizeEl.style.cursor = 'nwse-resize'
+      // resizeEl.style.cursor = 'se-resize'
+      resizeEl.style.position = 'absolute'
+      resizeEl.style.height = '12px'
+      resizeEl.style.width = '12px'
+      resizeEl.style.right = '0px'
+      resizeEl.style.bottom = '0px' //榧犳爣鎷変几寮圭獥
+      resizeEl.style.background = 'url("/images/desktop/resize.png") no-repeat' //榧犳爣鎷変几寮圭獥
 
-            document.onmousemove = function(e) {
-                e.preventDefault() // 绉诲姩鏃剁鐢ㄩ粯璁や簨浠� // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈
+      resizeEl.onmousedown = (e) => {
+        // 璁板綍鍒濆x浣嶇疆
+        const clientX = e.clientX // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂�
+        const disX = e.clientX - resizeEl.offsetLeft
+        const disY = e.clientY - resizeEl.offsetTop
 
-                const x = e.clientX - disX + (e.clientX - clientX) //杩欓噷 鐢变簬elementUI鐨刣ialog鎺у埗灞呬腑鐨勶紝鎵�浠ユ按骞虫媺浼告晥鏋滄槸鍙屽��
-                const y = e.clientY - disY //姣旇緝鏄惁灏忎簬鏈�灏忓楂�
-                dragDom.style.width = x > minWidth ? `${x}px` : minWidth + 'px'
-                dragDom.style.height =
-                    y > minHeight ? `${y}px` : minHeight + 'px'
-            } //鎷変几缁撴潫
-            document.onmouseup = function(e) {
-                document.onmousemove = null
-                document.onmouseup = null
-            }
+        document.onmousemove = function (e) {
+          e.preventDefault() // 绉诲姩鏃剁鐢ㄩ粯璁や簨浠� // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈
+
+          const x = e.clientX - disX + (e.clientX - clientX) //杩欓噷 鐢变簬elementUI鐨刣ialog鎺у埗灞呬腑鐨勶紝鎵�浠ユ按骞虫媺浼告晥鏋滄槸鍙屽��
+          const y = e.clientY - disY //姣旇緝鏄惁灏忎簬鏈�灏忓楂�
+          dragDom.style.width = x > minWidth ? `${x}px` : minWidth + 'px'
+          dragDom.style.height =
+            y > minHeight ? `${y}px` : minHeight + 'px'
+        } //鎷変几缁撴潫
+        document.onmouseup = function (e) {
+          document.onmousemove = null
+          document.onmouseup = null
         }
+      }
     },
   },
 };
@@ -1164,8 +1078,8 @@
         background: #f5f5f5;
       }
     }
-    .el-dialog__wrapper{
-          top: -22px;
+    .el-dialog__wrapper {
+      top: -22px;
     }
     .dialog-video {
       // z-index: 2020 !important;
@@ -1176,9 +1090,8 @@
       .el-dialog__body {
         background: #eaeaea;
         padding: 0;
-            // height: 100%;
-    height: inherit;
-
+        // height: 100%;
+        height: inherit;
       }
       .el-dialog__header {
         padding: 3px;
diff --git a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
index f11d59a..9ad68c8 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
@@ -34,7 +34,10 @@
         :key="indicator.id"
       >
         <div class="title">
-          <span class="dot" :class="{'kx':indicator.id=='kx','dx':indicator.id=='dx','ccgz':indicator.id=='ccgz'}"></span>
+          <span
+            class="dot"
+            :class="{'kx':indicator.id=='kx','dx':indicator.id=='dx','ccgz':indicator.id=='ccgz'}"
+          ></span>
           <span class="word">{{indicator.title}}</span>
         </div>
         <div class="indicator-val">{{indicator.slots.length}}</div>
@@ -52,7 +55,7 @@
           <label>璁惧鐘舵��:</label>
           <div>
             <el-select v-model="deviceState" size="small">
-              <el-option></el-option>
+              <el-option value="work" label="宸ヤ綔"></el-option>
             </el-select>
           </div>
         </div>
@@ -111,7 +114,7 @@
 <script>
 import { addDevice, getDeviceList, getDeviceInfoById } from '@/api/shuohuang';
 export default {
-  data () {
+  data() {
     return {
       actTab: 'dev1',
       devices: [],
@@ -124,11 +127,11 @@
       IP: '',
     }
   },
-  mounted () {
+  mounted() {
     this.findDeviceList();
   },
   methods: {
-    findDeviceList () {
+    findDeviceList() {
       let _this = this;
       getDeviceList().then(res => {
         _this.devices = res.data;
@@ -136,7 +139,7 @@
         _this.findDeviceIfo()
       })
     },
-    findDeviceIfo () {
+    findDeviceIfo() {
       let _this = this;
       getDeviceInfoById({ DeviceID: this.actTab }).then(res => {
         // debugger
@@ -162,7 +165,7 @@
         //_this.generalIndicators
       })
     },
-    toAddDevice () {
+    toAddDevice() {
       let _this = this;
       let params = {
         Name: this.Name,
@@ -178,14 +181,14 @@
         }
       })
     },
-    showAddDevice () {
+    showAddDevice() {
       this.visibleOfialogAddDev = true;
 
     },
-    checkTab (tab, event) {
+    checkTab(tab, event) {
       this.findDeviceIfo();
     },
-    checkSlot (row) {
+    checkSlot(row) {
 
     }
   }
@@ -247,7 +250,7 @@
       flex: 1;
       position: relative;
       &:not(.lastOne):after {
-        content: '';
+        content: "";
         width: 1px;
         height: 57px;
         background: #e9e9e9;
diff --git a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
index c1a6ea0..90ab683 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
@@ -9,15 +9,15 @@
           v-show="showLocChoise"
         >
           <span class="el-dropdown-link">
-            {{ curCamera }}<i class="el-icon-arrow-down el-icon--right"></i>
+            {{ curCamera }}
+            <i class="el-icon-arrow-down el-icon--right"></i>
           </span>
           <el-dropdown-menu slot="dropdown">
             <el-dropdown-item
               v-for="(item, index) in popDownArr"
               :key="index"
               :command="item"
-              >{{ item.Camera }}</el-dropdown-item
-            >
+            >{{ item.Camera }}</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
 
@@ -118,13 +118,11 @@
           </template>
           <div class="player-control">
             <div class="progress-bar">
-              <el-tooltip
-                placement="top"
-                v-for="(item, index) in eventMarks"
-                :key="index"
-              >
+              <el-tooltip placement="top" v-for="(item, index) in eventMarks" :key="index">
                 <div slot="content">
-                  {{ getTimeStr(item.offset) }}<br />{{ item.text }}
+                  {{ getTimeStr(item.offset) }}
+                  <br />
+                  {{ item.text }}
                 </div>
                 <div
                   class="self-dot"
@@ -134,13 +132,11 @@
                   @click="dotJump(item.offset)"
                 ></div>
               </el-tooltip>
-              <el-tooltip
-                placement="top"
-                v-for="(item, index) in labelMarks"
-                :key="index"
-              >
+              <el-tooltip placement="top" v-for="(item, index) in labelMarks" :key="index">
                 <div slot="content">
-                  {{ getTimeStr(item.offset) }}<br />{{ item.text }}
+                  {{ getTimeStr(item.offset) }}
+                  <br />
+                  {{ item.text }}
                 </div>
                 <div
                   class="label-dot"
@@ -161,7 +157,7 @@
                 @mouseover.native="intoBar"
                 @change="progressChange"
               ></el-slider>
-            </div> 
+            </div>
             <div class="control-zone">
               <span class="time">{{ curPlayTime }} / {{ maxVideoTime }}</span>
               <div class="play-btn">
@@ -205,23 +201,18 @@
                 v-show="isUnusual == 1"
                 type="primary"
                 @click="addLabel(curVideo)"
-                >娣诲姞鏍囨敞</el-button
-              >
+              >娣诲姞鏍囨敞</el-button>
             </div>
             <div class="flex-box fixed-height-box">
               <label v-if="!showTable">鏍囨敞淇℃伅:</label>
               <div class="mark-list" v-if="!showTable">
-                <div
-                  class="mark"
-                  v-for="mark in curVideo.LableLst"
-                  :key="mark.ID"
-                >
+                <div class="mark" v-for="mark in curVideo.LableLst" :key="mark.ID">
                   <div class="time">
-                    <span
-                      >{{ pad0(Math.floor(mark.Time / 60)) }}:{{
-                        pad0(mark.Time % 60)
-                      }}</span
-                    >
+                    <span>
+                      {{ pad0(Math.floor(mark.Time / 60)) }}:{{
+                      pad0(mark.Time % 60)
+                      }}
+                    </span>
                     <i class="el-icon-edit" @click="editCurLabel(mark)"></i>
                     <i class="el-icon-delete" @click="removeCurLabel(mark)"></i>
                   </div>
@@ -230,12 +221,12 @@
                   </div>
                 </div>
               </div>
-            </div></el-tab-pane
-          >
+            </div>
+          </el-tab-pane>
           <!-- <div class="flex-box fixed-height-box2"></div> -->
           <dataset-chart style="width: 100%" v-if="showTable"></dataset-chart>
 
-          <el-tab-pane label="鍏噷鏍�" name="second"> </el-tab-pane>
+          <el-tab-pane label="鍏噷鏍�" name="second"></el-tab-pane>
         </el-tabs>
       </div>
       <div class="bot-right block">
@@ -274,23 +265,16 @@
           <el-radio :label="1">鏍囨敞鍦ㄥ叏閮ㄤ綅缃殑瑙嗛娈�</el-radio>
           <el-radio :label="0">浠呮爣娉ㄩ�変腑鐨勮棰戞</el-radio>
         </el-radio-group>
-      </div> -->
+      </div>-->
       <div class="label-check">
         <p class="label">闅愭偅闂:</p>
         <el-checkbox-group v-model="labelCheckedList">
-          <el-checkbox
-            v-for="item in labelOptions"
-            :key="item.ID"
-            :label="item.ID"
-            >{{ item.Name }}</el-checkbox
-          >
+          <el-checkbox v-for="item in labelOptions" :key="item.ID" :label="item.ID">{{ item.Name }}</el-checkbox>
         </el-checkbox-group>
       </div>
       <div class="btns">
         <el-button @click="cancelLabelChecked" size="small">鍙栨秷</el-button>
-        <el-button @click="submitLabelChecked" size="small" type="primary"
-          >纭畾</el-button
-        >
+        <el-button @click="submitLabelChecked" size="small" type="primary">纭畾</el-button>
       </div>
     </el-dialog>
   </div>
@@ -540,18 +524,18 @@
         Driver1: cmd.Driver1,
       }).then((res) => {
         _this.allCurVideos = res.data;
-      _this.curCamera = cmd.Camera;
-      _this.curRoomVideos = _this.allCurVideos.filter((item) => {
-        return item.Camera == cmd.Camera;
+        _this.curCamera = cmd.Camera;
+        _this.curRoomVideos = _this.allCurVideos.filter((item) => {
+          return item.Camera == cmd.Camera;
+        });
+        _this.curVideo = _this.curRoomVideos.find((item) => {
+          return item.ID == cmd.ID;
+        });
+        _this.$nextTick(() => {
+          _this.$refs[`player_${_this.curVideo.ID}`][0].init();
+        });
       });
-      _this.curVideo = _this.curRoomVideos.find((item) => {
-        return item.ID == cmd.ID;
-      });
-      _this.$nextTick(() => {
-        _this.$refs[`player_${_this.curVideo.ID}`][0].init();
-      });
-      });
-      
+
     },
     pad0(val) {
       return val < 10 ? "0" + val : val;
@@ -583,7 +567,8 @@
         if (_this.guid == 1) {
           _this.maxVideoTime = _this.curVideo.VideoTime;
         }
-        _this.videoArrs = res.data.filter((item) => v.UniqeID == item.UniqeID);
+
+        _this.videoArrs = res.data.filter((item) => v.GroupID == item.GroupID);
         _this.allCurVideos = res.data;
         _this.curRoomVideos = _this.allCurVideos.filter((item) => {
           return item.Camera == "鍙告満瀹�";
@@ -600,7 +585,7 @@
     },
     getRelatedVideos(video) {
       let _this = this;
-      getRelatedVideoInfo({ UniqeID: video.UniqeID }).then((res) => {
+      getRelatedVideoInfo({ GroupID: video.GroupID }).then((res) => {
         let arr = [];
         let map = {};
         res.data.forEach((item) => {
@@ -618,7 +603,7 @@
       });
     },
     refreshCurVideoLabel(video) {
-      getRelatedVideoInfo({ UniqeID: video.UniqeID }).then((res) => {
+      getRelatedVideoInfo({ GroupID: video.GroupID }).then((res) => {
         res.data.forEach((d) => {
           if (d.ID === video.ID) {
             video.LableLst = d.LableLst;
@@ -630,7 +615,7 @@
       this.refreshCurVideoLabel(video);
       this.curVideo = video;
       this.videoArrs = this.allCurVideos.filter(
-        (item) => video.UniqeID == item.UniqeID
+        (item) => video.GroupID == item.GroupID
       );
       this.$nextTick(() => {
         this.$refs[`player_${this.curVideo.ID}`][0].init();
@@ -656,7 +641,7 @@
             `calc(` + 100 / guid + `%)`;
           // this.$refs["playerWrap"].offsetHeight / guid + "px";
         }
-        console.log(this.$refs[`player_${this.videoArrs[index].ID}`]);
+        // console.log(this.$refs[`player_${this.videoArrs[index].ID}`]);
       });
     },
     cancelLabelChecked() {
@@ -681,12 +666,12 @@
       let query = {
         ID: this.selectedLabelId,
         ParentID: tempArr.join(","),
-        ParentUniqID: this.curVideo.UniqeID + "",
+        ParentUniqID: this.curVideo.GroupID + "",
         Time: Math.round(this.setLabelTime) + "",
         Codes: this.labelCheckedList.join(","),
         Desc: desc.join("锛�"),
       };
-      
+
       editLabel(query).then((rsp) => {
         if (rsp && rsp.success) {
           _this.labelDialogVisible = false;
@@ -728,7 +713,7 @@
         Desc: mark.Desc,
         ParentUniqID: mark.ParentUniqID,
         Time: mark.Time,
-        ParentID:mark.ParentID
+        ParentID: mark.ParentID
       };
       delLabel(obj).then((rsp) => {
         if (rsp && rsp.success) {
@@ -751,6 +736,11 @@
       });
     },
     mergeMarks(videoInfo) {
+      if (!videoInfo.EventLst || !videoInfo.LableLst) {
+        console.log("mergeMarks data null")
+        return;
+      }
+
       const eMarks = videoInfo.EventLst.map((item) => {
         return {
           offset: item.SecondsInVideo,
diff --git a/src/pages/shuohuangMonitorAnalyze/index/App.vue b/src/pages/shuohuangMonitorAnalyze/index/App.vue
index 66b81b3..be77a89 100644
--- a/src/pages/shuohuangMonitorAnalyze/index/App.vue
+++ b/src/pages/shuohuangMonitorAnalyze/index/App.vue
@@ -11,55 +11,71 @@
         <top-nav></top-nav>
       </div>
       <div class="container">
+        <!-- 棣栭〉 -->
+        <guideIndex v-show="actPage=='guideIndex'"></guideIndex>
+
         <searchForVideoAnalyze v-if="actPage=='searchForVideoAnalyze'"></searchForVideoAnalyze>
         <memberManage v-if="actPage=='memberManage'"></memberManage>
         <taskManage v-if="actPage=='taskManage'"></taskManage>
         <transferMemo v-if="actPage=='transferMemo'"></transferMemo>
         <transferDeviceManage v-if="actPage=='transferDeviceManage'"></transferDeviceManage>
         <configManage v-if="actPage=='configManage'"></configManage>
-        <guideIndex v-if="actPage=='guideIndex'"></guideIndex>
+        <lkg v-if="actPage=='lkgManage'"></lkg>
       </div>
     </div>
   </div>
 </template>
 
 <script>
-import LeftNav from '../components/leftNav';
+import Lkg from '../components/lkgManage'
 import TopNav from '../components/topNav';
-import SearchForVideoAnalyze from '../components/searchForVideoAnalyze';
-import MemberManage from '../components/memberManage';
+import LeftNav from '../components/leftNav';
+import GuideIndex from '../components/guideIndex';
 import TaskManage from '../components/taskManage';
 import TransferMemo from '../components/transferMemo';
-import TransferDeviceManage from '../components/transferDeviceManage';
 import ConfigManage from '../components/configManage';
-import GuideIndex from '../components/guideIndex';
+import MemberManage from '../components/memberManage';
+import TransferDeviceManage from '../components/transferDeviceManage';
+import SearchForVideoAnalyze from '../components/searchForVideoAnalyze';
+
 export default {
-  components: { LeftNav, TopNav, SearchForVideoAnalyze, MemberManage, TaskManage, TransferMemo, TransferDeviceManage, ConfigManage, GuideIndex },
-  data () {
+  components: {
+    Lkg,
+    LeftNav,
+    TopNav,
+    SearchForVideoAnalyze,
+    MemberManage,
+    TaskManage,
+    TransferMemo,
+    TransferDeviceManage,
+    ConfigManage,
+    GuideIndex
+  },
+  data() {
     return {
       isCollapse: false,
       actPage: 'guideIndex',
     }
   },
-  mounted () {
-
+  mounted() {
+    // this.actPage = 'guideIndex';
   },
   methods: {
-    markNav () {
+    markNav() {
       sessionStorage.setItem('actPage', this.actPage);
       this.menuChange(this.actPage);
     },
-    toggleCollapse () {
+    toggleCollapse() {
       this.isCollapse = !this.isCollapse;
       //閫氱煡褰撳墠娲诲姩椤祎able(濡傛灉鏈�) doLayout
     },
-    menuChange (path) {
-      if(path == 'taskscreen'){
+    menuChange(path) {
+      if (path == 'taskscreen') {
         //window.location.href = window.location.href+'taskscreen/index.html'
-        window.open(window.location.href+'taskscreen/index.html','_blank')
-      }else if(path == 'hiddendangerscreen'){
+        window.open(window.location.href + 'taskscreen/index.html', '_blank')
+      } else if (path == 'hiddendangerscreen') {
         //window.location.href = window.location.href+'hiddendangerscreen/index.html'
-        window.open(window.location.href+'hiddendangerscreen/index.html','_blank')
+        window.open(window.location.href + 'hiddendangerscreen/index.html', '_blank')
       }
       this.actPage = path;
     }
@@ -70,11 +86,11 @@
 <style lang="scss">
 .flex-box {
   display: flex;
-  >label {
+  > label {
     padding-right: 10px;
   }
 }
-.flex-end{
+.flex-end {
   display: flex;
   justify-content: flex-end;
 }
@@ -119,7 +135,7 @@
       padding: 0 3px;
       color: #0096fa;
     }
-    i[class^='el-icon'] {
+    i[class^="el-icon"] {
       padding: 3px;
       font-size: 16px;
       color: #0096fa;
diff --git a/vue.config.js b/vue.config.js
index 54707a5..f623575 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -41,10 +41,7 @@
 })
 
 // const serverUrl = "http://58.118.225.79:41243" // 缇婁簲
-const serverUrl = "http://192.168.20.10:7009"
-
-
-
+const serverUrl = "http://192.168.20.117:7009"
 
 module.exports = {
   pages,
@@ -91,7 +88,7 @@
       },
       "/data/api-v/app/findAllApp": {
         // target: '/',
-        target: 'http://localhost:8081/',
+        target: 'http://localhost:8080/',
         changeOrigin: true,
         pathRewrite: {
           '^/data/api-v/app/findAllApp': 'apps.json'

--
Gitblit v1.8.0