From ccee429d379e0108b7445f72ade8d97c110a6fb3 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期二, 09 十一月 2021 18:01:59 +0800
Subject: [PATCH] 问题修复

---
 src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue |  860 ++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 634 insertions(+), 226 deletions(-)

diff --git a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
index 23901ef..ead0f1a 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
@@ -2,13 +2,8 @@
   <div class="search-for-video-analyze">
     <div class="filter-area">
       <div class="input-area">
-        <el-input
-          class="search-input"
-          size="small"
-          v-model="keyword"
-          placeholder="璇疯緭鍏ュ徃鏈恒�佽溅娆°�佹満杞﹀彿绛夊叧閿瘝杩涜鎼滅储"
-        ></el-input>
         <el-date-picker
+          style="width: 350px"
           v-model="searchTime"
           type="datetimerange"
           size="small"
@@ -16,12 +11,24 @@
           range-separator="鑷�"
           start-placeholder="寮�濮嬫棩鏈�"
           end-placeholder="缁撴潫鏃ユ湡"
-          align="right"
         ></el-date-picker>
-        <el-button size="small" type="primary" @click="init">鎼滅储</el-button>
+        <el-input
+          class="search-input"
+          size="small"
+          v-model="keyword"
+          placeholder="璇疯緭鍏ュ徃鏈恒�佽溅娆°�佹満杞﹀彿绛夊叧閿瘝"
+          style="width: 315px"
+        >
+          <el-button
+            slot="append"
+            icon="el-icon-search"
+            size="small"
+            @click="init"
+          ></el-button>
+        </el-input>
       </div>
       <div class="checked-config">
-        <span style="margin-top: 3px">宸查�夋潯浠�:</span>
+        <span style="margin-top: 3px; color: #425277">宸茬瓫閫夋潯浠�:</span>
         <span
           v-show="!checkedConfigs.length"
           class="tip"
@@ -36,11 +43,6 @@
           <span class="title">{{ config.title }}</span
           >&nbsp;:
           <span class="val" v-for="option in config.data" :key="option.id">
-            <!-- <template>
-              <div>
-                
-              </div>
-            </template>-->
             <span v-if="option.isChecked" class="val-show">
               {{ option.name }}
               <i>銆�</i>
@@ -66,7 +68,10 @@
           :key="index"
         >
           <template v-if="config.isShow">
-            <div class="title">{{ config.title }}</div>
+            <div class="title">
+              <span class="icon iconfont">{{ getIcon(config.title) }}</span>
+              <span>{{ config.title }}</span>
+            </div>
             <div class="options-wrap">
               <div
                 class="options"
@@ -78,11 +83,12 @@
                   v-for="(option, index) in config.data"
                   :key="index"
                 >
-                  <div v-show="config.isMultCheck">
+                  <div v-show="config.isMultCheck" class="check-name">
                     <el-checkbox v-model="option.isChecked"></el-checkbox>
                     <span>{{ option.name }}</span>
                   </div>
                   <div
+                    class="option-name"
                     v-show="!config.isMultCheck"
                     @click="checkOption(config, option)"
                   >
@@ -91,14 +97,18 @@
                 </div>
               </div>
               <div class="btns text-center" v-show="config.isMultCheck">
-                <el-button size="mini" @click="cancleMultCheck(config)"
-                  >鍙栨秷</el-button
-                >
                 <el-button
+                  class="sure"
                   size="mini"
                   type="primary"
                   @click="checkOption(config)"
                   >纭畾</el-button
+                >
+                <el-button
+                  size="mini"
+                  @click="cancleMultCheck(config)"
+                  class="cancel"
+                  >鍙栨秷</el-button
                 >
               </div>
             </div>
@@ -108,12 +118,12 @@
                 v-if="config.showMore"
                 @click="showMore(config)"
               >
-                <span>鏇村</span>&nbsp;
+                <span>鏇村</span>
                 <i
                   :class="
                     config.isShowMore
-                      ? 'el-icon-arrow-up'
-                      : 'el-icon-arrow-down'
+                      ? 'el-icon-caret-top'
+                      : 'el-icon-caret-bottom'
                   "
                 ></i>
               </div>
@@ -128,7 +138,10 @@
           </template>
         </div>
         <div class="config" v-if="showAdvance">
-          <div class="title">楂樼骇閫夐」</div>
+          <div class="title">
+            <span class="icon iconfont">{{ "\ue793" }}</span>
+            <span>楂樼骇閫夐」</span>
+          </div>
           <div>
             <el-menu
               class="el-menu-demo"
@@ -148,6 +161,7 @@
                   :key="ind"
                   :index="index + '-' + ind"
                   @click="checkOption(config, option)"
+                  class="highlevel-option"
                   >{{ option.name }}</el-menu-item
                 >
               </el-submenu>
@@ -164,10 +178,11 @@
               v-model="IsFollow"
               size="mini"
               @change="filterSearchData"
+              style="width: 120px"
             >
               <el-option value label="鍏ㄩ儴"></el-option>
-              <el-option :value="false" label="鏈叧娉�"></el-option>
-              <el-option :value="true" label="宸插叧娉�"></el-option>
+              <el-option :value="'1'" label="鏈叧娉�"></el-option>
+              <el-option :value="'0'" label="宸插叧娉�"></el-option>
             </el-select>
           </div>
           <div>
@@ -175,6 +190,7 @@
               v-model="IsOperate"
               size="mini"
               @change="filterSearchData"
+              style="width: 120px"
             >
               <el-option value label="鍏ㄩ儴"></el-option>
               <el-option value="0" label="鏈鐞�"></el-option>
@@ -189,14 +205,15 @@
               :class="{ current: showType == 'menu' }"
               @click="checkType('menu')"
             >
-              <i class="el-icon-menu"></i>
+              <span class="iconfont icon">&#xe703; </span>
             </div>
             <div
-              class="type"
+              class="type list"
               :class="{ current: showType == 'list' }"
               @click="checkType('list')"
             >
-              <i class="el-icon-s-operation"></i>
+              <span class="iconfont icon">&#xe70f;</span>
+              <!-- <i class="el-icon-s-operation"></i> -->
             </div>
           </div>
         </div>
@@ -213,7 +230,7 @@
           >
             <div class="card">
               <div class="video-wrap" @click="checkVideoDetail(data)">
-                <img :src="data.VideoCover" alt />
+                <img :src="data.VideoCover | fixPath" alt />
               </div>
               <div class="video-info">
                 <div class="base-info">
@@ -227,7 +244,7 @@
                   </div>
                   <div class="flex-box">
                     <label>鏃堕棿:</label>
-                    <span>{{ data.VideoDate }}</span>
+                    <span>{{ data.StartTime }}</span>
                   </div>
                   <div class="flex-box">
                     <label>鍙告満 | 鍓徃鏈�:</label>
@@ -240,12 +257,17 @@
                     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 }}
+                    </span>
                   </div>
-                  <div v-else >
+                  <div v-else-if="hasError(data)" class="has-error">
+                    <span>鏈夊紓甯�</span>
+                  </div>
+                  <div v-else class="no-error">
                     <span>鏃犲紓甯�</span>
                   </div>
                   <div
@@ -257,7 +279,8 @@
                       type="info"
                       v-for="(label, index) in data.EventLst"
                       :key="index"
-                      style="margin-right:5px;margin-bottom:5px"
+                      style="margin-right: 5px; margin-bottom: 5px"
+                      @click="checkEventVideo(label)"
                       >{{ label.Event }}</el-tag
                     >
                   </div>
@@ -274,7 +297,8 @@
               </div>
               <div class="star" @click="toggleFollow(data)">
                 <i
-                  :class="[data.IsFollow ? 'follow' : '', 'el-icon-star-off']"
+                  class="iconfont"
+                  :class="[data.IsFollow == '0' ? 'follow' : '', 'iconguanzhu']"
                 ></i>
               </div>
             </div>
@@ -293,36 +317,52 @@
         ></el-pagination>
       </div>
       <div class="content" v-show="showType == 'list'">
-        <el-table :data="tableData" fit ref="elTable">
+        <el-table
+          :data="tableData"
+          stripe
+          fit
+          ref="elTable"
+          @row-click="checkVideoDetail"
+          :header-cell-style="{
+            background: '#2D52D7',
+            color: '#fff',
+            height: '50px',
+            padding: 0,
+          }"
+        >
           <el-table-column label="鍚嶇О" prop="VideoName" sortable width="500">
-            <template slot-scope="scope">
-              <div style="cursor: pointer" @click="checkVideoDetail(scope.row)">
-                {{ scope.row.VideoName }}
+            <template slot-scope="scope" style="cursor: pointer">
+              <div>{{ scope.row.VideoName }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column label="澶у皬" prop="VideoSize" sortable>
+            <template slot-scope="scope" style="cursor: pointer">
+              <div>
+                {{ Math.round(+scope.row.VideoSize / (1024 * 1024)) + " MB" }}
               </div>
             </template>
           </el-table-column>
           <el-table-column
-            label="澶у皬"
-            prop="VideoSize"
+            label="瑙嗛鏃堕棿"
+            prop="StartTime"
             sortable
           ></el-table-column>
-          <el-table-column
-            label="淇敼鏃ユ湡"
-            prop="UpdatedAt"
-            sortable
-          ></el-table-column>
-          <el-table-column
-            label="鍒涘缓鏃ユ湡"
-            prop="CreatedAt"
-            sortable
-          ></el-table-column>
+          <!-- <el-table-column label="鍒涘缓鏃ユ湡" prop="VideoCreateDate" sortable></el-table-column> -->
+
           <el-table-column label="鎿嶄綔">
             <template slot-scope="scope">
               <div class="operation">
-                <i
-                  class="el-icon-star-off"
-                  @click="toggleFollow(scope.row)"
-                ></i>
+                <div class="star">
+                  <i
+                    class="iconfont"
+                    :class="[
+                      scope.row.IsFollow == '0' ? 'follow' : '',
+                      'iconguanzhu',
+                    ]"
+                    @click.stop="toggleFollow(scope.row)"
+                  ></i>
+                </div>
               </div>
             </template>
           </el-table-column>
@@ -338,18 +378,46 @@
           :total="tableTotal"
         ></el-pagination>
       </div>
+      <!-- 
+
+       v-drag v-resize
+
+      -->
+      <!-- <div > -->
+      <!-- :modal="false" -->
       <el-dialog
+        v-drag
+        v-resize
         class="dialog-video"
         :visible="videoDialogVisible"
-        @close="videoDialogVisible = false"
+        @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>
+            <img src="/images/shuohuang/璺緞 414.png" alt="" />
             <span>鎾斁瑙嗛</span>
           </div>
         </div>
-        <video-analyze :videoDetails="selectedVideo" />
+        <video-analyze
+          v-if="videoDialogVisible"
+          :videoDetails="selectedVideo"
+        />
+      </el-dialog>
+      <!-- </div> -->
+
+      <el-dialog
+        class="dialog-event"
+        :visible="eventDialogVisible"
+        @close="eventDialogVisible = false"
+      >
+        <div class="title" slot="title">
+          <img src="/images/shuohuang/璺緞 414.png" alt="" />
+          <span>{{ curEvName }}瑙嗛</span>
+        </div>
+        <event-videos :eventVideoArr="eventVideoArr"></event-videos>
       </el-dialog>
     </div>
   </div>
@@ -358,34 +426,41 @@
 <script>
 import {
   getlstInit,
-  updateVideoAnalyze,
+  updateFollow,
   getlst,
-  getRelatedVideoInfo,
   getLabelMap,
-  delLabel,
-  editLabel,
+  getEventVideo,
 } from "@/api/shuohuang";
 import VideoAnalyze from "./videoAnalyze";
-
+import EventVideos from "./eventVideos";
 export default {
   name: "SearchMain",
   components: {
     VideoAnalyze,
+    EventVideos,
+  },
+  filters: {
+    fixPath(str) {
+      if (!str || str == undefined) {
+        return "";
+      }
+
+      return str.replace("/opt/vasystem", "");
+    },
   },
   data() {
     return {
       CLIP: "http://",
       keyword: "",
       IsFollow: "",
-      //searchTime: [this.$moment(new Date().getTime() - 3600 * 1000 * 24 * 5).format("YYYY-MM-DD HH:mm:ss"), this.$moment(new Date()).format("YYYY-MM-DD HH:mm:ss")],
       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,
       tabPageSize: 8,
-      pageSizes: [2, 8, 12, 24],
+      pageSizes: [8, 12, 24],
       tabTotal: 0,
       tablePageSize: 8,
       tableTotal: 0,
@@ -428,7 +503,6 @@
               const end = new Date();
               const start = new Date();
               start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-              //start.setHours(0,0,0);
               picker.$emit("pick", [start, end]);
             },
           },
@@ -442,48 +516,15 @@
       settle: "",
       IsOperate: "",
       showType: "menu",
-      tableData: [
-        {
-          name: "SS4B115_06_B鑺備簩绔徃鏈哄_20201115_091500.mp4",
-          size: "17.66M",
-          updateTime: "2020-11-04 15:41",
-          createTime: "2020-11-04 15:41",
-        },
-        {
-          name: "SS4B115_06_B鑺備簩绔徃鏈哄_20201115_091700.mp4",
-          size: "17.76M",
-          updateTime: "2020-11-04 15:41",
-          createTime: "2020-11-07 17:41",
-        },
-      ],
-      tabData: [
-        {
-          id: "ss1",
-          no: "SS4B115",
-          frequency: "8084",
-          time: "2020-09-21 20:45:08",
-          driver: "寮犱笁",
-          marks: ["鏈懠鍞ゃ�佸懠鍞や笉鏍囧噯", "瀛︿範鍙告満鏈簲绛�"],
-          markType: 1,
-          tags: ["杩涘嚭绔�", "鍙告満绂诲矖"],
-          follow: true,
-        },
-        {
-          id: "ss2",
-          no: "SS4B115",
-          frequency: "8084",
-          time: "2020-09-21 20:45:08",
-          driver: "寮犱笁",
-          marks: [],
-          markType: 0,
-          tags: ["杩涘嚭绔�", "鍙告満绂诲矖"],
-          follow: false,
-        },
-      ],
+      tableData: [],
+      tabData: [],
       videoDialogVisible: false,
       hiddenDanger: 1,
       labelDialogVisible: false,
       selectedVideo: {},
+      eventDialogVisible: false,
+      curEvName: "",
+      eventVideoArr: [],
     };
   },
   watch: {
@@ -498,6 +539,26 @@
     this.init();
   },
   methods: {
+    checkEventVideo(label) {
+      if (label.LKGID != "") {
+        this.$message.warning("璇ヤ簨浠舵病鏈夌浉鍏宠仈鐨勮棰�");
+        return;
+      }
+
+      this.eventDialogVisible = true;
+      this.curEventDetail = label;
+      let _this = this;
+      getEventVideo({ event: label.Event, videoId: label.VideoIds }).then(
+        (res) => {
+          _this.eventVideoArr = res.data;
+          _this.curEvName = label.Event;
+        }
+      );
+    },
+    closeDial() {
+      this.videoDialogVisible = false;
+      this.selectedVideo = {};
+    },
     handleTabSizeChange(size) {
       this.tabPageSize = size;
       this.filterSearchData();
@@ -512,14 +573,6 @@
     //浜岀骇鏌ヨ
     filterSearchData() {
       let _this = this;
-      let isFollow = "";
-      if (this.IsFollow === "") {
-        isFollow = "";
-      } else if (!!this.IsFollow) {
-        isFollow = "1";
-      } else {
-        isFollow = "0";
-      }
       let query = {
         KeyWord: this.keyword,
         StartDate: this.searchTime[0],
@@ -529,7 +582,7 @@
         PageSize:
           this.showType == "list" ? this.tablePageSize : this.tabPageSize,
         IsDetail: this.showType == "list",
-        IsFollow: isFollow,
+        IsFollow: this.IsFollow,
         IsOperate: this.IsOperate,
       };
       let filterQuerys = [];
@@ -552,12 +605,29 @@
         } else {
           _this.tabTotal = res.total;
           _this.tabData = res.data;
-        
+          _this.tabData = _this.tabData.map(function (item) {
+            const set = new Set();
+            item.LableLst.forEach(function (label) {
+              label.Desc.split(",").forEach(function (d) {
+                set.add(d);
+              });
+            });
+            const lblst = [];
+            set.forEach(function (d) {
+              lblst.push({ Desc: d });
+            });
+            item.LableLst = lblst;
+            return item;
+          });
         }
       });
     },
     //涓�绾ф煡璇�
     init() {
+      if (this.checkedConfigs.length) {
+        this.filterSearchData();
+        return;
+      }
       let _this = this;
       let query = {
         KeyWord: this.keyword,
@@ -571,6 +641,18 @@
         IsFollow: this.IsFollow,
         IsOperate: this.IsOperate,
       };
+      let filterQuerys = [];
+      this.checkedConfigs.forEach((config) => {
+        let checkedOpts = config.data.filter((option) => option.isChecked);
+        if (checkedOpts.length) {
+          var linkOpts = checkedOpts.map((opt) => opt.name);
+          linkOpts = linkOpts.join(",");
+          let obj = {};
+          obj[config.NameEn] = linkOpts;
+          filterQuerys.push(obj);
+        }
+      });
+      Object.assign(query, ...filterQuerys);
       this.optionalConfigs = [];
       this.highLevelConfigs = [];
       getlstInit(query).then((res) => {
@@ -580,31 +662,23 @@
         } else {
           _this.tabTotal = res.total;
           _this.tabData = res.data;
-          // debugger
-           _this.tabData =  _this.tabData.map(function (item) {
-            const set =new Set()
+          _this.tabData = _this.tabData.map(function (item) {
+            const set = new Set();
             item.LableLst.forEach(function (label) {
-              label.Desc.split("锛�").forEach(function (d) {
-                set.add(d)
-              })
-            })
-            const lblst = []
+              label.Desc.split(",").forEach(function (d) {
+                set.add(d);
+              });
+            });
+            const lblst = [];
             set.forEach(function (d) {
-              lblst.push({Desc:d})
-            })
-            item.LableLst=lblst
-            return item
-          })
+              lblst.push({ Desc: d });
+            });
+            item.LableLst = lblst;
+            return item;
+          });
         }
-
         res.filterlst.forEach((config) => {
           this.$set(config, "isShow", true);
-          // config.data = Object.keys(config.Node).map(key => {
-          //   let obj = {};
-          //   obj.name = key;
-          //   obj.id = config.Node[key]
-          //   return obj
-          // });
           config.data = config.Node.map((item) => {
             let obj = {};
             obj.name = item[0];
@@ -636,33 +710,33 @@
               config.showMore = false;
             }
           });
-          console.log(this.optionalConfigs);
         });
       });
+    },
+    hasError(data) {
+      if (!data.EventLst || data.EventLst.length == 0) {
+        return false;
+      }
+      const t = data.EventLst.some((x) => x.state == 0);
+      return t && data.IsOperate == "1";
     },
     toggleFollow(data) {
-      data.IsFollow = !data.IsFollow;
-      this.updataVideo(data);
-      if (data.IsFollow) {
+      data.IsFollow == "0" ? (data.IsFollow = "1") : (data.IsFollow = "0");
+      updateFollow({
+        id: data.id,
+        IsFollow: data.IsFollow,
+      }).then((res) => {
         this.$notify({
           type: "success",
-          message: "宸叉坊鍔犲叧娉�!",
+          message: data.IsFollow == "0" ? "宸叉坊鍔犲叧娉�!" : "宸插彇娑堝叧娉�!",
         });
-      }
-    },
-    updataVideo(data) {
-      let _this = this;
-      updateVideoAnalyze(data).then((res) => {
-        //浜岀骇鏌ヨ
       });
     },
-
     checkVideoDetail(data) {
       let _this = this;
       _this.selectedVideo = data;
       _this.videoDialogVisible = true;
     },
-    checkFollow() {},
     checkType(type) {
       this.showType = type;
       this.filterSearchData();
@@ -693,15 +767,11 @@
         option.isChecked = true;
       }
       this.checkedConfigs.push(config);
-
       config.isShow = false;
       config.isMultCheck = false;
       if (config.IsAdvanced) {
         this.showAdvance = false;
       }
-      // this.$nextTick(() => {
-      //   this.$set(config, 'isShow', false)
-      // })
     },
 
     cancleMultCheck(config) {
@@ -709,6 +779,25 @@
       config.data.forEach((opt) => {
         opt.isChecked = false;
       });
+    },
+    getIcon(name) {
+      switch (name) {
+        case "鏈鸿溅鍙�":
+          return "\ue796";
+        case "杞︽":
+          return "\ue795";
+        case "鍖烘/涓棿绔�":
+          return "\ue797";
+        case "閲嶇偣鍦版":
+          return "\ue78f";
+        case "鍗曚綅":
+          return "\ue794";
+        case "楂樼骇閫夐」":
+          return "\ue793";
+
+        default:
+          break;
+      }
     },
     handleSelect(key, keyPath) {},
     showMore(config) {
@@ -731,25 +820,139 @@
       this.$forceUpdate();
     },
   },
+  directives: {
+    drag(el, binding) {
+      const dialogHeaderEl = el.querySelector(".el-dialog__header");
+      const dragDom = el.querySelector(".el-dialog");
+      dialogHeaderEl.style.cursor = "move";
+      const sty =
+        dragDom.currentStyle || window.getComputedStyle(dragDom, null);
+      dialogHeaderEl.onmousedown = (e) => {
+        const disX = e.clientX - dialogHeaderEl.offsetLeft;
+        const disY = e.clientY - dialogHeaderEl.offsetTop;
+        let styL, styT;
+
+        if (sty.left.includes("%")) {
+          styL =
+            +document.body.clientWidth * (+sty.left.replace(/\%/g, "") / 100);
+          styT =
+            +document.body.clientHeight * (+sty.top.replace(/\%/g, "") / 100);
+        } else {
+          styL = +sty.left.replace(/\px/g, "");
+          styT = +sty.top.replace(/\px/g, "");
+        }
+        document.onmousemove = function (e) {
+          const l = e.clientX - disX;
+          const t = e.clientY - disY;
+          dragDom.style.left = `${l + styL}px`;
+          dragDom.style.top = `${t + styT}px`;
+        };
+        document.onmouseup = function (e) {
+          document.onmousemove = null;
+          document.onmouseup = null;
+        };
+      };
+    },
+    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'; //榧犳爣鎷変几寮圭獥
+
+      resizeEl.onmousedown = (e) => {
+        // 璁板綍鍒濆x浣嶇疆
+        const clientX = e.clientX; // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂�
+        const disX = e.clientX - resizeEl.offsetLeft;
+        const disY = e.clientY - resizeEl.offsetTop;
+
+        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;
+        };
+      };
+    },
+  },
 };
 </script>
 
 <style lang="scss">
 .search-for-video-analyze {
-  padding: 20px 30px;
+  background-color: #f4f6f9;
+  margin: 0 5px;
+  margin-bottom: 10px;
+
+  * {
+    box-sizing: content-box;
+    color: #425277;
+  }
+  .el-input__inner {
+    border: 1px solid #d7dce8;
+    //  border-color: #CCD9F0;
+  }
   .flex-box {
     display: flex;
+    height: 18px;
+    line-height: 18px;
   }
   .filter-area {
+    background: #fff;
+    padding: 22px 33px;
+    box-shadow: 0px 3px 6px#D0D7F1;
+
+    border-radius: 10px;
     .input-area {
       display: flex;
       align-items: center;
       height: 50px;
+
+      .el-range-editor--small .el-range-input {
+        font-size: 13px;
+        color: #7084b1;
+      }
+      .el-input__inner::placeholder {
+        color: #c7d0e5;
+      }
+      .el-range-editor--small .el-range-separator {
+        line-height: 25px;
+        font-size: 13px;
+        color: #7084b1;
+      }
       .search-input {
         width: 408px;
       }
       .el-date-editor {
-        margin: 0 20px;
+        margin-right: 20px;
+      }
+      .el-input-group__append {
+        background-color: #2d52d7;
+        border: 1px solid #2d52d7;
+        padding: 0 16px;
+
+        white-space: nowrap;
+        font-size: 18px;
+        .el-icon-search {
+          color: #fff;
+        }
       }
     }
     .checked-config {
@@ -758,18 +961,18 @@
       margin-bottom: 10px;
       position: relative;
       .config-item {
-        padding-left: 10px;
-        margin: 0 0 5px 5px;
-        background: #f3f3f3;
-        border: 1px solid #ddd;
+        padding-left: 8px;
+        margin: 0 5px;
+        background: #cfd5e3;
         .remove {
           cursor: pointer;
           padding: 5px 5px;
           margin-left: 5px;
+          background: #e1e4ed;
         }
         &:hover {
           background: #fff;
-          border-color: #3d68e1;
+          outline: 1px solid #2d52d7;
           .remove {
             background: #3d68e1;
             color: #fff;
@@ -792,13 +995,19 @@
       .config {
         display: flex;
         flex-wrap: no-wrap;
-        cursor: pointer;
-        border-bottom: 1px solid #ddd;
+        border-bottom: 1px solid #d7dce8;
         .title {
           padding: 10px 20px;
-          width: 100px;
+          width: 105px;
           text-align: left;
-          background: #f3f3f3;
+          font-weight: bold;
+          span {
+            font-size: 14px;
+            color: #2d52d7;
+          }
+          .icon {
+            margin-right: 10px;
+          }
         }
         .options-wrap {
           flex: 1;
@@ -808,11 +1017,25 @@
             height: 40px;
             overflow: hidden;
             .option {
-              padding: 10px 20px;
+              padding: 10px 0px;
               height: 20px;
               line-height: 20px;
-              &:hover {
-                color: #6486e7;
+              min-width: 100px;
+              .check-name {
+                text-align: left;
+                padding-left: 10px;
+              }
+              .option-name {
+                padding: 0 10px;
+                text-align: left;
+                width: fit-content;
+              }
+              &:hover > .option-name {
+                // outline: 1px solid #a8b7ee;
+                background: #e2e7f9;
+                span {
+                  color: #2d52d7;
+                }
               }
               .el-checkbox {
                 padding-right: 6px;
@@ -820,7 +1043,23 @@
             }
           }
           .btns {
-            margin: 20px 0;
+            margin: 12px 0;
+            .el-button--mini {
+              padding: 6px 17px;
+              font-size: 12px;
+              border-radius: 4px;
+            }
+            .sure span,
+            .cancel span {
+              color: #fff;
+            }
+            .cancel {
+              background: rgba(175, 185, 208, 1);
+              border-color: rgba(175, 185, 208, 1);
+            }
+            .el-button + .el-button {
+              margin-left: 20px;
+            }
           }
         }
         .right-btns {
@@ -829,31 +1068,33 @@
           user-select: none;
           justify-content: flex-end;
           .more {
-            margin-top: 6px;
-            padding: 0px 12px;
-            border: 1px solid #ccc;
+            margin-top: 7px;
+            padding: 0px 6px;
+            cursor: pointer;
             margin-right: 10px;
-            width: 48px;
-            height: 26px;
-            line-height: 26px;
+            width: 46px;
+            height: 25px;
+            line-height: 25px;
+            border-radius: 2px;
+            background: #edeff2;
             &:hover {
               color: #6486e7;
             }
           }
           .multCheck {
-            margin-top: 6px;
-            width: 48px;
-            height: 26px;
-            line-height: 26px;
+            margin-top: 7px;
+            width: 44px;
+            cursor: pointer;
+            height: 23px;
+            line-height: 23px;
             padding: 0px 12px;
-            border: 1px solid #ccc;
-            &:hover {
-              color: #7695ec;
-              border-color: #7695ec;
+            border: 1px solid #d7dce7;
+            border-radius: 2px;
+            .el-icon-plus {
+              color: #ee4e6e;
             }
-            &.checked {
-              color: #409eff;
-              border-color: #409eff;
+            span {
+              color: #ee4e6e;
             }
           }
         }
@@ -862,9 +1103,7 @@
         }
         .config-submenu {
           .el-menu--horizontal {
-            //max-width: 700px;
-            //overflow-x: auto;
-            left: 20px !important;
+            // left: 20px !important;
             & > ul {
               flex-wrap: wrap;
             }
@@ -873,6 +1112,11 @@
             height: 40px;
             line-height: 40px;
             border: none;
+            color: #2c3e50;
+            font-size: 12px;
+            padding: 0 10px;
+            min-width: 100px;
+            text-align: left;
           }
           .el-menu--popup {
             display: flex;
@@ -880,6 +1124,13 @@
             li.el-menu-item {
               display: inline-block;
               min-width: auto;
+            }
+          }
+          .highlevel-option {
+            font-size: 12px;
+            color: #2c3e50;
+            &:hover {
+              color: #6486e7;
             }
           }
         }
@@ -890,10 +1141,14 @@
     }
   }
   .data-list {
-    margin-top: 20px;
+    margin-top: 24px;
+    background: #ffffff;
+    box-shadow: 0px 3px 6px #d0d7f1;
+    border-radius: 10px;
+    padding: 24px 33px;
     .header-bar {
-      padding-bottom: 5px;
-      border-bottom: 1px solid #ddd;
+      margin-bottom: 24px;
+
       .left {
         float: left;
         display: flex;
@@ -906,38 +1161,55 @@
         display: flex;
         .show-type {
           display: flex;
-          .type {
+          .list span {
             font-size: 20px;
-            padding: 2px 5px;
+          }
+          .type {
+            font-size: 18px;
+            padding: 2px 4px 0px 4px;
+            border-radius: 4px;
             cursor: pointer;
-            border: 1px solid #eee;
-            background-color: #ecf0fc;
-            border-radius: 3px;
-            color: #777;
             &.menu {
               margin-right: 10px;
+              span {
+                font-size: 15px;
+              }
             }
             &.current {
-              border-color: #409eff;
-              background-color: #fff;
+              span {
+                color: #fff;
+              }
+              background-color: #2d52d7;
             }
           }
         }
       }
     }
     .content {
-      padding-top: 14px;
+      padding: 0;
+      .el-table__row {
+        cursor: pointer;
+      }
+      .el-table {
+        border: none;
+        margin-bottom: 20px;
+      }
       .el-col {
         margin-bottom: 10px;
       }
       .card {
-        cursor: pointer;
         position: relative;
         text-align: left;
-        border: 1px solid #dedede;
-        border-radius: 5px;
-        height: 350px;
+        background: #fff;
+        border-radius: 0 0 5px 5px;
+        height: 368px;
+        margin-bottom: 10px;
+        border: 1px solid#CCD9F0;
+        &:hover {
+          box-shadow: 3px 3px 4px #d3def2;
+        }
         .video-wrap {
+          cursor: pointer;
           border-radius: 3px;
           width: 100%;
           padding-top: 56.25%;
@@ -948,31 +1220,71 @@
             top: 0;
             width: 100%;
             height: 100%;
-            object-fit: contain;
-            // width: 100%;
-            // max-height: 200px;
-            // border-radius: 3px;
+            object-fit: unset;
           }
         }
         .video-info {
-          padding: 10px;
+          padding: 14px;
           .base-info {
             > div {
-              margin-bottom: 5px;
+              margin-bottom: 1px;
             }
             label {
-              color: #999;
+              color: #808dab;
               padding-right: 8px;
+              line-height: 16px;
+            }
+            span {
+              font-weight: bold;
+              color: #425277;
+              line-height: 16px;
             }
           }
           .mark-info {
             margin: 10px 0;
             color: #3d68e1;
             .abnormal {
-              color: red;
+              overflow: hidden;
+              text-overflow: ellipsis;
+              white-space: nowrap;
+              .abnormal-label {
+                display: inline-block;
+                border: 1px solid;
+                border: 1px solid #bf3a3a;
+                border-radius: 2px;
+                color: #bf3a3a;
+                padding: 0 3px;
+                margin-right: 3px;
+              }
             }
-            .event-tag{
-              margin-top: 10px;
+            .event-tag {
+              margin-top: 8px;
+              .el-tag.el-tag--info {
+                background-color: #96a0b7;
+                border-color: #96a0b7;
+                color: #fff;
+                cursor: pointer;
+                height: 19px;
+                padding: 0 5px;
+              }
+            }
+            .has-error {
+              width: fit-content;
+              background: #bf3a3a;
+              padding: 1px 5px;
+              border-radius: 2px;
+              span {
+                color: #fff;
+              }
+            }
+            .no-error {
+              width: fit-content;
+              background: #2d52d7;
+              padding: 1px 5px;
+              border-radius: 2px;
+              span {
+                color: #fff;
+              }
             }
           }
           .tag-info {
@@ -991,36 +1303,64 @@
           font-size: 20px;
           right: 10px;
           bottom: 10px;
-          color: #ccc;
-          .follow {
-            color: #409eff;
-          }
         }
       }
+      .el-table--striped
+        .el-table__body
+        tr.el-table__row--striped
+        td.el-table__cell {
+        background: #f4f6f9;
+      }
       .el-table {
-        border: 1px solid #dedede;
         th {
           background: #f5f5f5;
           color: #333;
         }
-        .operation {
-          cursor: pointer;
+        th.el-table__cell > .cell {
+          color: #fff;
+        }
+        .el-table__row > td {
+          border: none;
+        }
+        th.is-leaf {
+          border: none;
         }
       }
       .pagination-center {
         text-align: center;
-        margin: 10px auto;
+        margin: 0 -10px;
+        padding: 10px 0 20px;
       }
     }
+    .star {
+      font-size: 20px;
+      i {
+        color: #c7d0e5;
+      }
+      .follow {
+        color: #f90741;
+      }
+    }
+    .el-dialog__wrapper {
+      top: -22px;
+    }
     .dialog-video {
-      z-index: 2096 !important;
       .el-dialog {
-        width: 1180px;
-        height: 918px;
+        width: 1340px;
+        top: 70px;
+        transform: none;
       }
       .el-dialog__body {
-        background: #f5f5f5;
+        background: #eaeaea;
         padding: 0;
+        height: inherit;
+      }
+      .el-dialog__header {
+        padding: 0px;
+        .el-dialog__headerbtn {
+          top: 10px;
+          font-size: 20px;
+        }
       }
       .title-partment {
         font-size: 14px;
@@ -1038,9 +1378,77 @@
         }
       }
       .title {
-        font-size: 18px;
+        font-size: 16px;
+        height: 40px;
+        line-height: 40px;
+        background: #2d52d7;
+
+        span {
+          line-height: 40px;
+          color: #fcfcfc;
+        }
+
+        img {
+          width: 20px;
+          vertical-align: middle;
+          margin-right: 10px;
+        }
+      }
+      .el-dialog__close::before {
+        color: #fff;
+      }
+    }
+    .dialog-event {
+      z-index: 2096 !important;
+
+      .el-dialog {
+        width: 1000px;
+        height: 800px;
+        background: #efefef;
+        .el-dialog__body {
+          padding: 0;
+        }
+        .el-dialog__header {
+          padding: 0px;
+          .el-dialog__headerbtn {
+            top: 6px;
+          }
+        }
+        .title {
+          font-size: 16px;
+          height: 40px;
+          line-height: 40px;
+          background: #2d52d7;
+
+          span {
+            line-height: 40px;
+            color: #fcfcfc;
+          }
+
+          img {
+            width: 20px;
+            vertical-align: middle;
+            margin-right: 10px;
+          }
+        }
+        .el-dialog__close::before {
+          color: #fff;
+          &:hover {
+            color: #fff;
+          }
+        }
+
+        .more-videos .top .title {
+          background-color: #fff;
+        }
       }
     }
   }
 }
+.window-view {
+  width: 100%;
+  height: auto;
+  overflow: auto;
+  z-index: 2000;
+}
 </style>
\ No newline at end of file

--
Gitblit v1.8.0