From 5449cced03ef77f5e95a08e871996abb7132c40b Mon Sep 17 00:00:00 2001
From: heyujie <516346543@qq.com>
Date: 星期五, 17 六月 2022 16:26:23 +0800
Subject: [PATCH] cp dialog
---
src/pages/cameraAccess/components/DataStackInfo.vue | 608 ++++++++++++++++++++++++++++++------------------------
1 files changed, 339 insertions(+), 269 deletions(-)
diff --git a/src/pages/cameraAccess/components/DataStackInfo.vue b/src/pages/cameraAccess/components/DataStackInfo.vue
index 8a29a18..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,8 +50,8 @@
<ul>
<li>
<info-card
- style="width: 100%;min-width: 440px"
- :realtime="PollData.RealTimeSum"
+ style="width: 100%; min-width: 440px"
+ :realtime="PollData.RealTimeValidCount"
:polling="PollData.PollValidCount"
:dataStack="PollData.stackChannelCount"
></info-card>
@@ -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">
@@ -105,31 +96,44 @@
</el-tooltip>
<!-- 鏂囦欢涓婁紶 -->
- <el-button type="primary" size="small" :disabled="!DataStackPool.selectedDir.id" @click="handleUpload">
- 涓婁紶
- <i class="el-icon-upload el-icon--right"></i>
- </el-button>
+ <template v-for="stack in DataStackPool.dirs">
+ <el-button
+ :class="`uploader_${stack.id}`"
+ :key="stack.id"
+ type="primary"
+ size="small"
+ v-show="stack.id == DataStackPool.selectedDir.id"
+ :disabled="!DataStackPool.selectedDir.id"
+ @click="handleUpload"
+ >
+ 涓婁紶
+ <i class="el-icon-upload el-icon--right"></i>
+ </el-button>
+ </template>
</div>
</div>
<!-- 宸蹭笂浼犳枃浠跺垪琛� -->
<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" width="50" align="center" :selectable="isSelectable"></el-table-column>
+ <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"
@@ -138,11 +142,11 @@
<div slot="error" :class="snapshotClass"></div>
</el-image>
<el-image
- v-if="row.type==2"
- style="width: 30x; height: 30px"
- :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>
@@ -154,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="澶у皬" width="120">
- <template slot-scope="scope">{{scope.row.size | readFileSizeUnit}}</template>
+ <el-table-column prop="fileSize" label="澶у皬">
+ <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">
@@ -213,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>
@@ -248,29 +263,41 @@
<!-- 鍒嗛〉 -->
<div class="pagination">
<el-pagination
+ v-show="activeName == 'uploaded'"
@size-change="handleSizeChange"
@current-change="handleRefrashFileList"
:current-page="page"
- :page-sizes="[5, 10, 15, 20]"
+ :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>
</div>
- <!-- 鏂囦欢涓婁紶缁勪欢 -->
- <file-uploader ref="uploader" v-show="activeName === 'uploading'" />
-
+ <template v-for="stack in DataStackPool.dirs">
+ <!-- 鏂囦欢涓婁紶缁勪欢 -->
+ <file-uploader
+ :ref="`uploader_${stack.id}`"
+ :key="stack.id"
+ v-show="activeName === 'uploading' && stack.id == DataStackPool.selectedDir.id"
+ :sourceType="stack.type"
+ />
+ </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>
@@ -278,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>
@@ -299,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
}
@@ -325,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) {
@@ -364,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
})
}
@@ -384,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,
@@ -404,24 +432,30 @@
timer: 0,
targetDir: "",
targetFile: ""
- };
+ }
},
mounted() {
- this.initFormData();
- console.log(this.PollData.barCharts)
+ this.initFormData()
},
beforeDestroy() {
- this.taskUid = 0;
+ 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)
}
},
// 娓呯┖杈撳叆妗�
@@ -433,104 +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() {
@@ -539,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.$refs.button.$refs.btn.click())
+ 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({
@@ -593,7 +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()
this.$notify({
type: "success",
message: "鏂囦欢鎺掑簭鎴愬姛锛�"
@@ -601,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({
@@ -618,7 +680,7 @@
status: status
})
if (res && res.success) {
- this.fetchFileList();
+ this.fetchFileList()
this.$notify({
type: "success",
message: "鍒囨崲鏂囦欢澶勭悊鐘舵�佹垚鍔�"
@@ -629,12 +691,13 @@
}
},
dropdownClick(cmd) {
- cmd.cb(cmd.data);
+ cmd.cb(cmd.data)
},
handleFileDelete(rows, multi = false) {
- let ids = this.multipleSelection;
+ let _this = this
+ let ids = this.multipleSelection
if (!multi) {
- ids = [rows.id];
+ ids = [rows.id]
}
if (!ids.length) {
this.$notify({
@@ -643,63 +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",
@@ -709,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",
@@ -725,7 +792,7 @@
})
}
}
-};
+}
</script>
<style lang="scss">
@@ -741,9 +808,9 @@
.el-form-item__label {
text-align: left;
}
- .el-button--primary.is-disabled{
+ .el-button--primary.is-disabled {
background-color: #9eb4f0 !important;
- border-color: #9eb4f0 !important;
+ border-color: #9eb4f0 !important;
}
.label {
color: #606266;
@@ -843,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