From d8944c4764c3fc4b7baf6b5c1586cf17c88b0bb1 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期三, 23 三月 2022 22:38:20 +0800
Subject: [PATCH] 修改ztree复选框默认为父子联动

---
 src/pages/cameraAccess/components/DataStackInfo.vue |  577 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 310 insertions(+), 267 deletions(-)

diff --git a/src/pages/cameraAccess/components/DataStackInfo.vue b/src/pages/cameraAccess/components/DataStackInfo.vue
index aebdd67..55e70d6 100644
--- a/src/pages/cameraAccess/components/DataStackInfo.vue
+++ b/src/pages/cameraAccess/components/DataStackInfo.vue
@@ -3,41 +3,42 @@
     <el-row>
       <el-col :span="12">
         <el-form ref="addForm" :model="form" :rules="rules" label-width="88px">
-          <el-form-item label="鍚嶇О" prop="name" style="width:440px">
+          <el-form-item label="鍚嶇О" prop="name" style="width: 440px">
             <el-input v-model="form.name" size="small" :disabled="isDisabled"></el-input>
           </el-form-item>
 
-          <el-form-item label="绫诲瀷" prop="type" style="width:440px">
+          <el-form-item label="绫诲瀷" prop="type" style="width: 440px">
             <el-radio v-model="form.type" :label="1" :disabled="!isAdd">瑙嗛</el-radio>
             <el-radio v-model="form.type" :label="2" :disabled="!isAdd">鍥剧墖</el-radio>
             <el-radio v-model="form.type" :label="3" :disabled="!isAdd">闊抽</el-radio>
             <el-radio v-model="form.type" :label="4" :disabled="!isAdd">鍏朵粬鏁版嵁</el-radio>
           </el-form-item>
-
-          <el-form-item
-            label="澶勭悊瀹屾垚鍚庤嚜鍔ㄥ垹闄ゆ枃浠�"
-            prop="isAutoDelFile"
-            label-width="200px"
-            style="width:440px"
-          >
+          <el-form-item label="澶勭悊鍒嗚鲸鐜�" style="width: 440px">
+            <el-select
+              v-model="form.resolution"
+              placeholder="鏈満鍒嗚鲸鐜�"
+              style="position: absolute; left: 0"
+              size="small"
+              @change="checkResolution"
+            >
+              <el-option
+                v-for="item in form.resolutions"
+                :key="`${item.width}*${item.height}`"
+                :label="`${item.width}*${item.height}` == '0*0' ? '鏈満鍒嗚鲸鐜�' : `${item.width}*${item.height}`"
+                :value="`${item.width}*${item.height}`"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="澶勭悊瀹屾垚鍚庤嚜鍔ㄥ垹闄ゆ枃浠�" prop="isAutoDelFile" label-width="200px" style="width: 440px">
             <el-radio v-model="form.isAutoDelFile" :label="true" :disabled="isDisabled">鏄�</el-radio>
             <el-radio v-model="form.isAutoDelFile" :label="false" :disabled="isDisabled">鍚�</el-radio>
           </el-form-item>
 
           <el-form-item label-width="0px" style="text-align: left">
-            <el-button
-              size="small"
-              type="primary"
-              @click="onSubmit('addForm')"
-              :disabled="isDisabled"
-            >淇濆瓨</el-button>
-            <el-button
-              type="danger"
-              size="small"
-              @click="deleteDir"
-              v-if="!isAdd"
-              :disabled="isDisabled"
-            >鍒犻櫎鏁版嵁鏍�</el-button>
+            <el-button size="small" type="primary" @click="onSubmit('addForm')" :disabled="isDisabled">淇濆瓨</el-button>
+            <el-button type="danger" size="small" @click="deleteDir" v-if="!isAdd" :disabled="isDisabled"
+              >鍒犻櫎鏁版嵁鏍�</el-button
+            >
           </el-form-item>
         </el-form>
       </el-col>
@@ -49,7 +50,7 @@
             <ul>
               <li>
                 <info-card
-                  style="width: 100%;min-width: 440px"
+                  style="width: 100%; min-width: 440px"
                   :realtime="PollData.RealTimeValidCount"
                   :polling="PollData.PollValidCount"
                   :dataStack="PollData.stackChannelCount"
@@ -70,34 +71,24 @@
     <!-- 涓婁紶绠$悊 -->
     <el-divider></el-divider>
     <div class="upload-menu">
-      <span
-        @click="activeName = 'uploaded'"
-        :class="activeName === 'uploaded' ? 'active tab' : 'tab'"
-      >宸蹭笂浼�</span>
-      <span
-        @click="activeName = 'uploading'"
-        :class="activeName === 'uploading' ? 'active tab' : 'tab'"
-      >姝e湪涓婁紶</span>
+      <span @click="activeName = 'uploaded'" :class="activeName === 'uploaded' ? 'active tab' : 'tab'">宸蹭笂浼�</span>
+      <span @click="activeName = 'uploading'" :class="activeName === 'uploading' ? 'active tab' : 'tab'">姝e湪涓婁紶</span>
 
       <div class="btn-right">
         <el-input
           v-model="searchInput"
           placeholder="鎼滅储"
           clearable
-          style="width: 203px;"
+          style="width: 203px"
           size="small"
           @change="handelSearchInputChange"
         >
-          <i class="el-icon-search el-input__icon" style="color:#DCDFE6;padding:0px" slot="prefix"></i>
+          <i class="el-icon-search el-input__icon" style="color: #dcdfe6; padding: 0px" slot="prefix"></i>
         </el-input>
 
         <!-- 鎵归噺鏆傚仠 -->
         <el-tooltip content="鎵归噺鏆傚仠" placement="bottom" popper-class="atooltip">
-          <el-button
-            type="text"
-            class="iconfont iconzanting btn"
-            @click="handleFileStatus({}, 0, true)"
-          ></el-button>
+          <el-button type="text" class="iconfont iconzanting btn" @click="handleFileStatus({}, 0, true)"></el-button>
         </el-tooltip>
         <!-- 鎵归噺鍒犻櫎 -->
         <el-tooltip content="鎵归噺鍒犻櫎" placement="bottom" popper-class="atooltip">
@@ -125,20 +116,24 @@
     <!-- 宸蹭笂浼犳枃浠跺垪琛� -->
     <el-table
       ref="multipleTable"
-      v-show="activeName === 'uploaded' "
+      v-show="activeName === 'uploaded'"
       :data="fileList"
       tooltip-effect="dark"
       border
-      :header-cell-style="{background:'#f8f8f8', color:'#222222', textAlign:'center'}"
+      :header-cell-style="{
+        background: '#f8f8f8',
+        color: '#222222',
+        textAlign: 'center'
+      }"
       @select="handleSelect"
       @select-all="handleSelect"
     >
       <el-table-column type="selection" align="center" :selectable="isSelectable"></el-table-column>
       <el-table-column prop="name" label="鏂囦欢鍚�">
-        <template slot-scope="{row}">
+        <template slot-scope="{ row }">
           <div :class="snapshotClass">
             <el-image
-              v-if="row.type==1"
+              v-if="row.type == 1"
               style="width: 30x; height: 30px"
               :src="'/httpImage/' + row.snapshot_url"
               fit="fill"
@@ -147,11 +142,11 @@
               <div slot="error" :class="snapshotClass"></div>
             </el-image>
             <el-image
-              v-if="row.type==2"
-              style="width: 30x; height: 30px;background:#fff;"
-              :src="`/files/${row.path.substr(row.path.lastIndexOf('/')+1)}`"
+              v-if="row.type == 2"
+              style="width: 30x; height: 30px; background: #fff"
+              :src="`/files/${row.path.substr(row.path.lastIndexOf('/') + 1)}`"
               fit="fill"
-              :preview-src-list="[`/files/${row.path.substr(row.path.lastIndexOf('/')+1)}`]"
+              :preview-src-list="[`/files/${row.path.substr(row.path.lastIndexOf('/') + 1)}`]"
             >
               <div slot="error" :class="snapshotClass"></div>
             </el-image>
@@ -163,24 +158,42 @@
             v-model="row.name"
             size="small"
             @blur="cellRenameFile(row)"
-            style="display: inline-block;width: calc(100% - 50px);margin-left: 10px;"
+            style="
+              display: inline-block;
+              width: calc(100% - 50px);
+              margin-left: 10px;
+            "
           />
-          <a
-            v-else
-            style="line-height: 30px;margin-left: 10px; cursor:pointer"
-            @click="preview(row)"
-          >{{row.name}}</a>
+          <a v-else style="line-height: 30px; margin-left: 10px; cursor: pointer" @click="preview(row)">{{
+            row.name
+          }}</a>
         </template>
       </el-table-column>
       <el-table-column prop="fileSize" label="澶у皬">
-        <template slot-scope="scope">{{scope.row.size | readFileSizeUnit}}</template>
+        <template slot-scope="scope">{{ scope.row.size | readFileSizeUnit }}</template>
       </el-table-column>
-      <el-table-column prop="duration" label="鏃堕暱" show-overflow-tooltip align="center"></el-table-column>
+      <el-table-column
+        prop="duration"
+        label="鏃堕暱"
+        show-overflow-tooltip
+        align="center"
+        v-if="form.type != 2"
+      ></el-table-column>
       <el-table-column prop="uploadTime" label="涓婁紶鏃堕棿" show-overflow-tooltip align="center">
-        <template slot-scope="scope">{{scope.row.createTime | moment}}</template>
+        <template slot-scope="scope">{{ scope.row.createTime | moment }}</template>
       </el-table-column>
       <el-table-column prop="status" label="澶勭悊鐘舵��" show-overflow-tooltip align="center">
-        <template slot-scope="scope">{{scope.row.status | statusFormat}}</template>
+        <template slot-scope="scope">
+          <div
+            class="lowHash"
+            v-if="!PollData.stackChannelCount && (scope.row.status == '1' || scope.row.status == '2')"
+          >
+            鏁版嵁鏍堢畻鍔涗笉瓒�
+          </div>
+          <div class="normal" v-else>
+            {{ scope.row.status | statusFormat }}
+          </div>
+        </template>
       </el-table-column>
       <el-table-column label="鎿嶄綔" show-overflow-tooltip align="center">
         <template slot-scope="scope">
@@ -222,31 +235,24 @@
                 :disabled="scope.row.status == 2"
                 class="iconfont iconzhongxinkaishi btn"
                 @click="handleFileStatus(scope.row, 1)"
-                v-show="scope.row.status === 9"
+                v-show="scope.row.status === 9 || scope.row.status === -2"
               ></el-button>
             </el-tooltip>
 
             <!-- 鍏朵粬鎿嶄綔 -->
             <el-dropdown @command="dropdownClick">
               <!-- <span class="iconfont icongengduo1 btn"></span> -->
-              <el-button
-                type="text"
-                :disabled="scope.row.status == 2"
-                class="iconfont icongengduo1 btn"
-              ></el-button>
+              <el-button type="text" :disabled="scope.row.status == 2" class="iconfont icongengduo1 btn"></el-button>
               <el-dropdown-menu slot="dropdown">
-                <el-dropdown-item
-                  icon="el-icon-edit"
-                  :command="{cb: handleFileRename, data: scope.row}"
-                >閲嶅懡鍚�</el-dropdown-item>
-                <el-dropdown-item
-                  icon="el-icon-copy-document"
-                  :command="{cb: handleFileMove, data: scope.row}"
-                >绉诲姩/澶嶅埗</el-dropdown-item>
-                <el-dropdown-item
-                  icon="el-icon-delete"
-                  :command="{cb: handleFileDelete, data: scope.row}"
-                >鍒犻櫎</el-dropdown-item>
+                <el-dropdown-item icon="el-icon-edit" :command="{ cb: handleFileRename, data: scope.row }"
+                  >閲嶅懡鍚�</el-dropdown-item
+                >
+                <el-dropdown-item icon="el-icon-copy-document" :command="{ cb: handleFileMove, data: scope.row }"
+                  >绉诲姩/澶嶅埗</el-dropdown-item
+                >
+                <el-dropdown-item icon="el-icon-delete" :command="{ cb: handleFileDelete, data: scope.row }"
+                  >鍒犻櫎</el-dropdown-item
+                >
               </el-dropdown-menu>
             </el-dropdown>
           </div>
@@ -257,13 +263,13 @@
     <!-- 鍒嗛〉 -->
     <div class="pagination">
       <el-pagination
-        v-show="activeName=='uploaded'"
+        v-show="activeName == 'uploaded'"
         @size-change="handleSizeChange"
         @current-change="handleRefrashFileList"
         :current-page="page"
         :page-sizes="[10, 20, 50, 100]"
         :page-size="size"
-        style="position:absolute;right:10px;bottom:5px"
+        style="position: absolute; right: 10px; bottom: 5px"
         :total="total"
         layout="total, sizes, prev, pager, next"
       ></el-pagination>
@@ -280,13 +286,18 @@
     </template>
     <!-- 鏂囦欢棰勮 -->
     <el-dialog title="鏌ョ湅鏂囦欢" :visible.sync="previewDialog" width="500px">
-      <video v-if="videoUrl" :src="videoUrl" controls style="margin-top: 12px;">鎮ㄧ殑娴忚鍣ㄤ笉鏀寔 video 鏍囩銆�</video>
+      <!-- <video v-if="videoUrl" :src="videoUrl" controls style="margin-top: 12px">
+        鎮ㄧ殑娴忚鍣ㄤ笉鏀寔 video 鏍囩銆�
+      </video> -->
+
+      <wasm-player :rtspUrl="videoUrl" :showArea="false" v-if="videoUrl"></wasm-player>
+
       <el-image v-if="imgUrl" :src="imgUrl"></el-image>
     </el-dialog>
 
     <el-dialog title="绉诲姩/澶嶅埗" :visible.sync="fileDialog" width="500px">
-      <p style="margin:0px 0px 20px 0px">璇烽�夋嫨鎮ㄦ兂澶嶅埗/绮樿创鍒扮殑 鏁版嵁鏍堬細</p>
-      <span class="iconfont iconwenjian" style="color:#3d68e1; margin-right:5px"></span>
+      <p style="margin: 0px 0px 20px 0px">璇烽�夋嫨鎮ㄦ兂澶嶅埗/绮樿创鍒扮殑 鏁版嵁鏍堬細</p>
+      <span class="iconfont iconwenjian" style="color: #3d68e1; margin-right: 5px"></span>
       <el-select v-model="targetDir" placeholder="璇烽�夋嫨鐩爣鏂囦欢澶�" size="mini">
         <el-option v-for="item in dirOptions" :key="item.id" :label="item.name" :value="item.id">
           <span class="iconfont iconwenjian"></span>
@@ -294,7 +305,7 @@
         </el-option>
       </el-select>
 
-      <div style="margin-top:20px">
+      <div style="margin-top: 20px">
         <el-button type="primary" size="mini" @click="cellFileCopy">澶嶅埗</el-button>
         <el-button type="primary" size="mini" @click="cellFileMove">绉诲姩</el-button>
         <el-button type="info" size="mini" @click="fileDialog = false">鍙栨秷</el-button>
@@ -315,25 +326,26 @@
   renameFile,
   moveFile,
   copyFile
-} from "@/api/localVedio";
-
-import { changeRunType } from "@/api/pollConfig";
+} from "@/api/localVedio"
 
 import InfoCard from "./infoCard"
-import eChartsBar from '@/components/subComponents/eChartsBar'
-import FileUploader from '@/components/subComponents/FileUpload'
+import eChartsBar from "@/components/subComponents/eChartsBar"
+import FileUploader from "@/components/subComponents/FileUpload"
+
+import WasmPlayer from "@/components/wasmPlayer"
 
 export default {
   name: "DataStackInfo",
   components: {
     InfoCard,
     eChartsBar,
-    FileUploader
+    FileUploader,
+    WasmPlayer
   },
   props: {
     cameraList: {
       default: () => {
-        return [];
+        return []
       },
       type: Array
     }
@@ -341,35 +353,36 @@
   filters: {
     statusFormat(value) {
       let statusCode = {
+        "-2": "澶勭悊寮傚父",
         "-1": "宸插垹闄�",
-        "0": "鏆傚仠澶勭悊",
-        "1": "绛夊緟澶勭悊",
-        "2": "澶勭悊涓�",
-        "9": "澶勭悊瀹屾垚"
+        0: "鏆傚仠澶勭悊",
+        1: "绛夊緟澶勭悊",
+        2: "澶勭悊涓�",
+        9: "澶勭悊瀹屾垚"
       }
-      return statusCode[value];
+      return statusCode[value]
     },
     readFileSizeUnit(value) {
-      let UNITS = [' B', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB'];
-      let format = function (value, power) {
-        return (value / Math.pow(1024, power)).toFixed(2) + UNITS[power];
-      };
+      let UNITS = [" B", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"]
+      let format = function(value, power) {
+        return (value / Math.pow(1024, power)).toFixed(2) + UNITS[power]
+      }
 
-      value = parseFloat(value, 10);
+      value = parseFloat(value, 10)
       for (var i = 0; i < UNITS.length; i++) {
         if (value < Math.pow(1024, i)) {
           if (UNITS[i - 1]) {
-            return format(value, i - 1);
+            return format(value, i - 1)
           }
-          return value + UNITS[i];
+          return value + UNITS[i]
         }
       }
-      return format(value, i - 1);
+      return format(value, i - 1)
     }
   },
   computed: {
     snapshotClass() {
-      let classs = ["snapshot"];
+      let classs = ["snapshot"]
       if (this.form.type === 1) {
         classs.push("snapshot-video")
       } else if (this.form.type === 2) {
@@ -380,10 +393,10 @@
         classs.push("snapshot-files")
       }
 
-      return classs;
+      return classs
     },
     dirOptions() {
-      return this.DataStackPool.dirs.filter(dir => {
+      return this.DataStackPool.dirs.filter((dir) => {
         return dir.id !== this.DataStackPool.selectedDir.id
       })
     }
@@ -400,16 +413,15 @@
       multipleSelection: [],
       searchInput: "",
       form: {
-        id: ""
+        id: "",
+        resolution: ""
       },
       fileList: [],
       // 璁板綍娣诲姞鐘舵��
       isAdd: false,
       addParentId: "",
       rules: {
-        dirName: [
-          { required: true, message: "璁惧鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
-        ]
+        dirName: [{ required: true, message: "璁惧鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }]
       },
       activeName: "uploaded",
       page: 1,
@@ -419,36 +431,31 @@
       editRowId: "",
       timer: 0,
       targetDir: "",
-      targetFile: "",
-
-    };
+      targetFile: ""
+    }
   },
   mounted() {
-    this.initFormData();
-    console.log(this.PollData.barCharts)
-
+    this.initFormData()
   },
   beforeDestroy() {
-    this.taskUid = 0;
-  },
-  watch: {
-    'fileList.length': {
-      handler(n, o) {
-        //鏁版嵁鏍堟枃浠舵暟閲忓彉鏇�
-        //鏇存柊鐙珛鍦烘櫙鏁版嵁鏍堟枃浠�
-        this.$root.$children[0].$children[1].$refs['sepRule'].getStackFiles();
-      }
-    },
+    this.taskUid = 0
   },
   methods: {
+    checkResolution(val) {
+      this.form.resolution_width = Number(val.split("*")[0])
+      this.form.resolution_height = Number(val.split("*")[1])
+    },
     preview(row) {
-      this.previewDialog = true;
+      this.previewDialog = true
       if (row.type === 1) {
-
         this.videoUrl = "/files/" + row.identifier + ".mp4"
-      } else if (row.type === 2) {
 
-        this.imgUrl = "/files/" + row.path.substr(row.path.lastIndexOf('/') + 1)
+        // 涓烘湐榛勪娇鐢ㄦ暟鎹爤瀹氬埗, 娌℃湁MD5
+        if (row.identifier == "") {
+          this.videoUrl = row.path.replace("/opt/vasystem", "")
+        }
+      } else if (row.type === 2) {
+        this.imgUrl = "/files/" + row.path.substr(row.path.lastIndexOf("/") + 1)
       }
     },
     // 娓呯┖杈撳叆妗�
@@ -460,99 +467,123 @@
         name: "",
         sort: 0,
         status: 0,
-        type: 1
-      };
+        type: 1,
+        resolutions: [
+          {
+            height: 0,
+            width: 0
+          }
+        ]
+      }
     },
     // 娣诲姞璁惧
     addDir(node) {
-      this.isAdd = true;
-      this.isDisabled = false;
-      this.initFormData();
-      this.DataStackPool.clean();
-      this.fileList = [];
+      this.isAdd = true
+      this.isDisabled = false
+      this.initFormData()
+      this.DataStackPool.clean()
+      this.fileList = []
     },
+    // 鏁版嵁鏍堟枃浠跺す閫変腑鏃讹紝鐢辩埗缁勪欢瑙﹀彂
     selectDir(node) {
       if (node.id === "") {
         return
       }
-      this.isDisabled = false;
-      this.isAdd = false;
-      this.videoItem = null;
-      this.$refs.addForm.resetFields();
+
+      this.isDisabled = false
+      this.isAdd = false
+      this.videoItem = null
+      this.$refs.addForm.resetFields()
       // this.initFormData();
       // this.$refs.addForm.clearValidate();
-      this.form = { ...node };
-      delete this.form.createTime;
-      delete this.form.updateTime;
-      delete this.form.status;
+      this.form = { ...node }
+      this.form.resolution = `${node.resolution_width}*${node.resolution_height}`
+      delete this.form.createTime
+      delete this.form.updateTime
+      delete this.form.status
 
-      this.fileList = [];
-      this.searchInput = "";
-      this.page = 1;
-      this.size = 10;
-      this.total = 0;
-      this.multipleSelection = []; // 娓呯┖閫変腑鐘舵��
-      this.initFetchListTask();
-      this.videoUrl = '';
-      this.imgUrl = '';
+      this.fileList = []
+      this.searchInput = ""
+      this.page = 1
+      this.size = 10
+      this.total = 0
+      this.multipleSelection = [] // 娓呯┖閫変腑鐘舵��
+      this.initFetchListTask()
+      this.videoUrl = ""
+      this.imgUrl = ""
     },
     initFetchListTask() {
-      const uid = Math.round(Math.random() * 1000);
-      this.taskUid = uid;
-      this.timingtask(uid);
+      const uid = Math.round(Math.random() * 1000)
+      this.taskUid = uid
+      this.timingtask(uid)
     },
     timingtask(uid) {
       if (uid !== this.taskUid || this.form.id === "") {
-        return;
+        return
       }
-      this.fetchFileList();
-      let _this = this;
+      this.fetchFileList()
+      let _this = this
       this.timer = setTimeout(() => {
-        _this.timingtask(uid);
-      }, 2 * 1000);
+        _this.timingtask(uid)
+      }, 2 * 1000)
     },
     fetchFileList() {
-      findAllFileByStackId({ name: this.searchInput, stackId: this.form.id, page: this.page, size: this.size, type: 0 }).then(rsp => {
-        if (rsp && rsp.success && rsp.data.total >= 0) {
-          this.fileList = rsp.data.dataList;
-
-          this.total = rsp.data.total;
-
-          // 瀹氭椂鍒锋柊浼氭竻绌洪�変腑鐘舵�侊紝鍦ㄨ繖閲屾仮澶�
-          this.fileList.forEach(row => {
-            //this.polygonDatas.push({snapshot_url:row.snapshot_url})
-            if (this.multipleSelection.indexOf(row.id) !== -1) {
-              this.$nextTick(() => {
-                this.$refs.multipleTable.toggleRowSelection(row);
-              })
-            }
-          });
-        }
-      }).catch(err => {
-        console.log(err)
+      findAllFileByStackId({
+        name: this.searchInput,
+        stackId: this.form.id,
+        page: this.page,
+        size: this.size,
+        type: 0
       })
+        .then((rsp) => {
+          if (rsp && rsp.success && rsp.data.total >= 0) {
+            this.fileList = rsp.data.dataList
+            this.total = rsp.data.total
+            // 瀹氭椂鍒锋柊浼氭竻绌洪�変腑鐘舵�侊紝鍦ㄨ繖閲屾仮澶�
+            this.fileList.forEach((row) => {
+              //this.polygonDatas.push({snapshot_url:row.snapshot_url})
+              if (this.multipleSelection.indexOf(row.id) !== -1) {
+                this.$nextTick(() => {
+                  this.$refs.multipleTable.toggleRowSelection(row)
+                })
+              }
+            })
+          }
+        })
+        .catch((err) => {
+          console.log(err)
+        })
     },
 
     // 淇濆瓨
     onSubmit(formName) {
-      this.$refs[formName].validate(async valid => {
+      if (formName == "addForm") {
+        if (this.form.name.indexOf("/") >= 0) {
+          this.$notify({
+            type: "error",
+            message: "淇濆瓨澶辫触,鏁版嵁鏍堝悕绉颁笉鑳藉寘鍚�'/'锛�"
+          })
+          return
+        }
+      }
+      this.$refs[formName].validate(async (valid) => {
         if (valid) {
-          saveDir(this.form).then(rsp => {
+          saveDir(this.form).then((rsp) => {
             if (rsp.success) {
               this.$notify({
                 type: "success",
                 message: "鏁版嵁鏍堜俊鎭繚瀛樻垚鍔燂紒"
-              });
-              this.DataStackPool.fetchFiles();
+              })
+              this.DataStackPool.fetchFiles()
             } else {
               this.$notify({
                 type: "error",
                 message: "鏁版嵁鏍堜俊鎭繚瀛樺け璐ワ紒"
-              });
+              })
             }
           })
         }
-      });
+      })
     },
     // 鍒犻櫎鎽勫儚鏈�
     deleteDir() {
@@ -561,53 +592,59 @@
         cancelButtonClass: "comfirm-class-cancle",
         confirmButtonClass: "comfirm-class-sure"
       }).then(() => {
-        delDir(this.form.id).then(res => {
-          if (res.success) {
-            this.initFormData();
-            this.$notify({
-              type: "success",
-              message: "鍒犻櫎鎴愬姛锛�"
-            });
-            this.DataStackPool.fetchFiles();
-            this.DataStackPool.selectedDir = {};
-          } else {
+        delDir(this.form.id)
+          .then((res) => {
+            if (res.success) {
+              this.initFormData()
+              this.$notify({
+                type: "success",
+                message: "鍒犻櫎鎴愬姛锛�"
+              })
+              this.DataStackPool.fetchFiles()
+              this.DataStackPool.selectedDir = {}
+              // 鍒犻櫎鍚庢仮澶嶆湭閫変腑鐘舵��
+              this.addDir()
+              this.isAdd = false
+              this.isDisabled = true
+            } else {
+              this.$notify({
+                type: "error",
+                message: "鍒犻櫎澶辫触锛�"
+              })
+            }
+          })
+          .catch((err) => {
             this.$notify({
               type: "error",
               message: "鍒犻櫎澶辫触锛�"
-            });
-          }
-        }).catch(err => {
-          this.$notify({
-            type: "error",
-            message: "鍒犻櫎澶辫触锛�"
-          });
-        });
-      });
+            })
+          })
+      })
     },
     handleTabClick(tab, event) {
-      console.log(tab, event);
+      console.log(tab, event)
     },
     handleSelect(val) {
-      this.multipleSelection = val.map(row => {
-        return row.id;
-      });
+      this.multipleSelection = val.map((row) => {
+        return row.id
+      })
     },
     handelSearchInputChange(val) {
-      this.multipleSelection = [];
+      this.multipleSelection = []
     },
     handleUpload() {
       console.log(this.DataStackPool.selectedDir.id)
       console.log(this.$refs[`uploader_${this.DataStackPool.selectedDir.id}`][0].$refs.button.$refs.btn.click())
     },
     handleRefrashFileList(val) {
-      this.page = val;
-      this.multipleSelection = [];
-      this.fetchFileList();
+      this.page = val
+      this.multipleSelection = []
+      this.fetchFileList()
     },
     handleSizeChange(val) {
-      this.size = val;
-      this.multipleSelection = [];
-      this.fetchFileList();
+      this.size = val
+      this.multipleSelection = []
+      this.fetchFileList()
     },
     async handleSortFile(direct, id) {
       let res = await sortFile({
@@ -615,10 +652,10 @@
         direct: direct
       })
       if (res && res.success) {
-        this.fetchFileList();
+        this.fetchFileList()
         //鏇存柊鐙珛鍦烘櫙鏁版嵁鏍堟枃浠�
-        console.log(this.$root.$children[0].$children[1].$refs['sepRule'])
-        this.$root.$children[0].$children[1].$refs['sepRule'].getStackFiles();
+        console.log(this.$root.$children[0].$children[1].$refs["sepRule"])
+        this.$root.$children[0].$children[1].$refs["sepRule"].getStackFiles()
         this.$notify({
           type: "success",
           message: "鏂囦欢鎺掑簭鎴愬姛锛�"
@@ -626,9 +663,9 @@
       }
     },
     async handleFileStatus(row, status, multi = false) {
-      let ids = this.multipleSelection;
+      let ids = this.multipleSelection
       if (!multi) {
-        ids = [row.id];
+        ids = [row.id]
       }
       if (!ids.length) {
         this.$notify({
@@ -643,7 +680,7 @@
           status: status
         })
         if (res && res.success) {
-          this.fetchFileList();
+          this.fetchFileList()
           this.$notify({
             type: "success",
             message: "鍒囨崲鏂囦欢澶勭悊鐘舵�佹垚鍔�"
@@ -654,13 +691,13 @@
       }
     },
     dropdownClick(cmd) {
-      cmd.cb(cmd.data);
+      cmd.cb(cmd.data)
     },
     handleFileDelete(rows, multi = false) {
-      let _this = this;
-      let ids = this.multipleSelection;
+      let _this = this
+      let ids = this.multipleSelection
       if (!multi) {
-        ids = [rows.id];
+        ids = [rows.id]
       }
       if (!ids.length) {
         this.$notify({
@@ -669,64 +706,67 @@
         })
         return
       }
-      this.$confirm('鎻愮ず锛氱‘瀹氬垹闄よ鏂囦欢鍚楋紵', {
+      this.$confirm("鎻愮ず锛氱‘瀹氬垹闄よ鏂囦欢鍚楋紵", {
         center: true,
-        cancelButtonClass: 'comfirm-class-cancle',
-        confirmButtonClass: 'comfirm-class-sure'
-      }).then(() => {
-        deleteLocalFile({ ids: ids }).then(rsp => {
-          this.$notify({
-            type: "error",
-            message: "鏂囦欢宸插垹闄�"
+        cancelButtonClass: "comfirm-class-cancle",
+        confirmButtonClass: "comfirm-class-sure"
+      })
+        .then(() => {
+          deleteLocalFile({ ids: ids }).then((rsp) => {
+            this.$notify({
+              type: "error",
+              message: "鏂囦欢宸插垹闄�"
+            })
           })
-        });
-
-      }).catch(() => { })
+        })
+        .catch(() => {})
     },
     handleFileMove(row) {
-      this.targetDir = "";
-      this.targetFile = row.id;
-      this.fileDialog = true;
+      this.targetDir = ""
+      this.targetFile = row.id
+      this.fileDialog = true
     },
     handleFileRename(row) {
-      this.editRowId = row.id;
-      clearTimeout(this.timer);
-      this.timer = null;
+      this.editRowId = row.id
+      clearTimeout(this.timer)
+      this.timer = null
     },
     cellRenameFile(row) {
-      this.editRowId = "";
-      renameFile({ id: row.id, name: row.name }).then(rsp => {
-        if (rsp && rsp.success) {
-          this.$notify({
-            type: "success",
-            message: "鏂囦欢閲嶅懡鍚嶆垚鍔�"
-          })
-        } else {
-          this.$notify({
-            type: "error",
-            message: "鏂囦欢閲嶅懡鍚嶅け璐�"
-          })
-        }
-        if (!this.timer) {
-          this.initFetchListTask();
-        }
-      }).catch(() => {
-        if (!this.timer) {
-          this.initFetchListTask();
-        }
-      })
+      this.editRowId = ""
+      renameFile({ id: row.id, name: row.name })
+        .then((rsp) => {
+          if (rsp && rsp.success) {
+            this.$notify({
+              type: "success",
+              message: "鏂囦欢閲嶅懡鍚嶆垚鍔�"
+            })
+          } else {
+            this.$notify({
+              type: "error",
+              message: "鏂囦欢閲嶅懡鍚嶅け璐�"
+            })
+          }
+          if (!this.timer) {
+            this.initFetchListTask()
+          }
+        })
+        .catch(() => {
+          if (!this.timer) {
+            this.initFetchListTask()
+          }
+        })
     },
     isSelectable(row, rowIndex) {
       return row.status !== 2
     },
     cellFileCopy() {
-      copyFile({ id: this.targetFile, stackIds: [this.targetDir] }).then(rsp => {
+      copyFile({ id: this.targetFile, stackIds: [this.targetDir] }).then((rsp) => {
         if (rsp && rsp.success) {
           this.$notify({
             type: "success",
             message: "澶嶅埗鎴愬姛"
           })
-          this.fileDialog = false;
+          this.fileDialog = false
         } else {
           this.$notify({
             type: "error",
@@ -736,13 +776,13 @@
       })
     },
     cellFileMove() {
-      moveFile({ id: this.targetFile, stackId: this.targetDir }).then(rsp => {
+      moveFile({ id: this.targetFile, stackId: this.targetDir }).then((rsp) => {
         if (rsp && rsp.success) {
           this.$notify({
             type: "success",
             message: "绉诲姩鎴愬姛"
           })
-          this.fileDialog = false;
+          this.fileDialog = false
         } else {
           this.$notify({
             type: "error",
@@ -752,7 +792,7 @@
       })
     }
   }
-};
+}
 </script>
 
 <style lang="scss">
@@ -870,5 +910,8 @@
     background: url("/images/cameraAccess/files.png");
     background-repeat: round;
   }
+  .video-player {
+    height: 230px;
+  }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.8.0