| | |
| | | <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="处理分辨率" 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" |
| | |
| | | <li> |
| | | <info-card |
| | | style="width: 100%;min-width: 440px" |
| | | :realtime="PollData.RealTimeSum" |
| | | :realtime="PollData.RealTimeValidCount" |
| | | :polling="PollData.PollValidCount" |
| | | :dataStack="PollData.stackChannelCount" |
| | | ></info-card> |
| | |
| | | </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> |
| | | |
| | |
| | | v-show="activeName === 'uploaded' " |
| | | :data="fileList" |
| | | tooltip-effect="dark" |
| | | |
| | | border |
| | | :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}"> |
| | | <div :class="snapshotClass"> |
| | |
| | | </el-image> |
| | | <el-image |
| | | v-if="row.type==2" |
| | | style="width: 30x; height: 30px" |
| | | 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)}`]" |
| | |
| | | >{{row.name}}</a> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="fileSize" label="大小" width="120"> |
| | | <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> |
| | |
| | | :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> |
| | | |
| | |
| | | <!-- 分页 --> |
| | | <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" |
| | | :total="total" |
| | |
| | | ></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> |
| | |
| | | filters: { |
| | | statusFormat(value) { |
| | | let statusCode = { |
| | | "-2": "处理异常", |
| | | "-1": "已删除", |
| | | "0": "暂停处理", |
| | | "1": "等待处理", |
| | |
| | | multipleSelection: [], |
| | | searchInput: "", |
| | | form: { |
| | | id: "" |
| | | id: "", |
| | | resolution: "" |
| | | }, |
| | | fileList: [], |
| | | // 记录添加状态 |
| | |
| | | editRowId: "", |
| | | timer: 0, |
| | | targetDir: "", |
| | | targetFile: "" |
| | | targetFile: "", |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.initFormData(); |
| | | console.log(this.PollData.barCharts) |
| | | |
| | | }, |
| | | beforeDestroy() { |
| | | 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; |
| | | 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) |
| | | } |
| | | }, |
| | | // 清空输入框 |
| | |
| | | this.DataStackPool.clean(); |
| | | this.fileList = []; |
| | | }, |
| | | // 数据栈文件夹选中时,由父组件触发 |
| | | selectDir(node) { |
| | | |
| | | if (node.id === "") { |
| | | return |
| | | } |
| | |
| | | // this.initFormData(); |
| | | // this.$refs.addForm.clearValidate(); |
| | | this.form = { ...node }; |
| | | this.form.resolution = `${node.resolution_width}*${node.resolution_height}`; |
| | | delete this.form.createTime; |
| | | delete this.form.updateTime; |
| | | delete this.form.status; |
| | |
| | | if (uid !== this.taskUid || this.form.id === "") { |
| | | return; |
| | | } |
| | | |
| | | this.fetchFileList(); |
| | | |
| | | let _this = this; |
| | | this.timer = setTimeout(() => { |
| | | _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) { |
| | | 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 => { |
| | |
| | | }, |
| | | 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; |
| | |
| | | }) |
| | | if (res && res.success) { |
| | | 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: "文件排序成功!" |
| | |
| | | cmd.cb(cmd.data); |
| | | }, |
| | | handleFileDelete(rows, multi = false) { |
| | | let _this = this; |
| | | let ids = this.multipleSelection; |
| | | if (!multi) { |
| | | ids = [rows.id]; |
| | |
| | | type: "error", |
| | | message: "文件已删除" |
| | | }) |
| | | }) |
| | | }); |
| | | |
| | | }).catch(() => { }) |
| | | }, |
| | | handleFileMove(row) { |
| | |
| | | .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; |