From 13adc3f91541bdc52ea0c8759a5ba1f7b4f6b46d Mon Sep 17 00:00:00 2001 From: 叶松 <2217086471@qq.com> Date: 星期五, 08 十二月 2023 08:56:21 +0800 Subject: [PATCH] 广播文件上传调试 --- web/src/api/modules/safety.js | 17 ++ web/src/views/SecureManage/BroadcastSystem.vue | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 368 insertions(+), 0 deletions(-) diff --git a/web/src/api/modules/safety.js b/web/src/api/modules/safety.js index 2fa8af7..28e61c6 100644 --- a/web/src/api/modules/safety.js +++ b/web/src/api/modules/safety.js @@ -362,4 +362,21 @@ responseType: 'blob', data: params }), + + /** + * 广播文件上传模块 + */ + //查询广播文件列表 + searchBoardLists: (params) => + axios.post('/secure/integralAccount/selectSafeIntegralPageList', params), + //查询所有区域 + getAreaLists: (params) => + axios.post('/screen/audio/groups', params), + //上传文件添加/修改 + addAreaInfos: (params) => + axios.post('/screen/audio/addFile', params), + //上传文件详情 + detailsAreaInfos: (params) => + axios.post('/screen/audio/groupInfo', params), + } \ No newline at end of file diff --git a/web/src/views/SecureManage/BroadcastSystem.vue b/web/src/views/SecureManage/BroadcastSystem.vue new file mode 100644 index 0000000..4f44b86 --- /dev/null +++ b/web/src/views/SecureManage/BroadcastSystem.vue @@ -0,0 +1,351 @@ +<template> + <div class="main"> + <div class="main_header"> + <div class="header_item"> + <span class="header_label">区域名称:</span> + <el-select v-model="search.groupId" placeholder="请选择区域名称" clearable> + <el-option + v-for="item in optionAreaList" + :key="item.id" + :label="item.groupName" + :value="item.id"> + </el-option> + </el-select> + </div> + <div class="header_item"> + <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button> + <!-- <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('insert')" @click="insertProp">新增</el-button> --> + </div> + </div> + <div class="main_content"> + <el-table + v-loading="loading" + :data="dataList" + height="100%"> + <el-table-column align="center" label="序号" width="60"> + <template #default="scope"> + <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span> + </template> + </el-table-column> + <el-table-column prop="groupName" label="区域名称" align="center"></el-table-column> + <!-- <el-table-column prop="dictName" label="上传文件" align="center"></el-table-column> --> + <el-table-column label="操作" align="center" width="200"> + <template #default="{ row }"> + <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="updateProp(row)">修改</el-button> + <!-- <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteInfo(row)">删除</el-button> --> + </template> + </el-table-column> + </el-table> + </div> + <!-- <div class="main_footer"> + <el-pagination + background + @current-change="changePageNum" + @size-change="changePageSize" + :current-page="pageNum" + :page-sizes="[10, 20, 50, 100]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> --> + <el-dialog + class="prop_dialog" + :title="asyncTitle ? '新增' : '修改'" + :close-on-click-modal="false" + :visible.sync="asyncVisible" + width="55%"> + <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="rule_form"> + <el-form-item label="区域名称:" prop="groupId"> + <el-select v-model="ruleForm.groupId" placeholder="请选择区域名称"> + <el-option + v-for="item in optionAreaList" + :key="item.id" + :label="item.groupName" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="上传文件:" > + <div class="upload_index"> + <div class="upload_text"> + <el-upload + class="upload-demo" + action="" + :multiple="false" + :http-request="httpRequest" + :show-file-list="false" + :file-list="fileList"> + <el-button type="text" :size="size">上传文件</el-button> + </el-upload> + </div> + <div class="upload_tables"> + <el-table + v-loading="loadingUpload" + :data="fileList" + height="100%"> + <el-table-column prop="name" label="文件" align="center"></el-table-column> + <el-table-column label="操作" align="center"> + <template #default="{ row }"> + <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteFiles(row)">删除</el-button> + </template> + </el-table-column> + <el-table-column label="是否默认播放" align="center"> + <template #default="{ row }"> + <el-radio v-model="row.defaults" :label="1">是</el-radio> + <el-radio v-model="row.defaults" :label="2">否</el-radio> + </template> + </el-table-column> + </el-table> + </div> + </div> + </el-form-item> + </el-form> + <div slot="footer"> + <el-button @click="asyncVisible = false">取 消</el-button> + <el-button class="submit_btn" @click="asyncTitle ? submitInsert() : submitUpdate()">提 交</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { buttonPinia } from '../../pinia/index'; +import { throttle, changeSize } from '../../plugins/public'; // 导入节流、动态切换组件尺寸方法 + export default { + data() { + return { + size: changeSize(), // 组件尺寸 + pageNum: 1, + pageSize: 10, + search:{},//查询条件 + total: 0, + loading: false, + loadingUpload:false, + dataList: [], //广播文件上传信息列表 + asyncTitle: true, // 对话框title 新增:true 修改:false + asyncVisible: false, // 添加 修改对话框 + ruleForm: { + }, // 按钮表单 + rules: { + groupId: [{ + required: true, + message: '请选择区域', + trigger: 'blur' + }], + }, + optionAreaList:[],//所有区域 + fileList:[ + ],//上传文件 + } + }, + watch: { + asyncVisible(bol) { + if(!bol) { + this.ruleForm = {}; + this.$refs.ruleForm.resetFields(); + } + } + }, + mounted() { + const that = this; + // 根据窗口大小动态修改组件尺寸 + window.onresize = () => { + that.size = changeSize(); + } + that.searchButtonInfo(true); + that.getAllTypes() + }, + methods: { + //获取所有区域 + getAllTypes(){ + let params = { + } + this.$api.Safety.getAreaLists(params).then(res=>{ + if(res.statusMsg === 'ok'){ + this.optionAreaList = res.data + }else{ + this.$message.warning(res.statusMsg) + } + }) + }, + //删除上传的文件 + deleteFiles(row){ + this.fileList.splice(this.fileList.findIndex(item => item.ids == row.ids),1); + this.$message.success("删除成功!") + }, + // 自定义上传事件 + httpRequest({file}) { + this.functionLoading(); + this.loadingUpload = true + if(file.type !=="video/mp4"){ + this.$message.warning("请上传MP4格式的文件!!!") + this.loadingView.close(); + return false + } + const formData = new FormData(); + formData.set('file', file); + this.$api.System.uploadFileRequest(formData).then((res) => { + if(res.success) { + this.$message.success('上传成功!'); + this.$nextTick(() => { + this.fileList.push({ + ids: this.fileList.length + 1, + name:file.name, + defaults:2, + audioFile:res.data + }) + }) + } else { + this.$message.warning(res.statusMsg); + } + this.loadingUpload = false + this.loadingView.close(); + }).catch(() => { + this.loadingUpload = false + this.loadingView.close(); + this.$message.error('请检查网络连接后重新上传!'); + }) + }, + // 等待方法 + functionLoading() { + this.loadingView = this.$loading({ + lock: true, + text: '请稍后...', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }); + }, + // 查询按钮列表信息 + searchButtonInfo(bol) { + if(bol) { + this.pageNum = 1; + } + let params = Object.assign({},this.search,{ + // pageNum: this.pageNum, + // pageSize: this.pageSize + }) + this.loading = true; + this.$api.Safety.getAreaLists(params).then((res) => { + if(res.statusMsg === 'ok') { + // this.total = res.data.total; + this.dataList = res.data; + } + this.loading = false; + }) + }, + // 新增按钮信息 + insertProp() { + this.asyncTitle = true; + this.asyncVisible = true; + }, + // 修改按钮信息 + updateProp(row) { + this.asyncTitle = false; + this.asyncVisible = true; + this.$api.Safety.detailsAreaInfos({groupId: row.id}).then(res=>{ + if(res.statusMsg === 'ok'){ + this.$set(this.ruleForm,'groupId',res.data.id) + this.fileList = res.data.fileList + let projectArr = [] + res.data.supplierPros.forEach(item=>{ + projectArr.push(item.proId) + }) + this.$set(this.ruleForm,'proIds',projectArr) + }else{ + this.$message.warning(res.statusMsg) + } + }) + }, + // 删除按钮信息 + deleteInfo(row) { + this.$confirm("该操作将删除该信息,是否继续删除?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + this.$api.Safety.deleteSupplier({supplierId: row.id}) + .then(res => { + if(res.statusMsg === 'ok') { + this.searchButtonInfo(true); + this.$message.success("删除成功!"); + } else { + this.$message.warning(res.statusMsg); + } + }) + }) + .catch(() => { + this.$message.warning("您已取消"); + }) + }, + // 提交添加按钮信息 + submitInsert: throttle(function() { + this.$refs.ruleForm.validate((valid) => { + if(valid) { + const params = Object.assign({}, this.ruleForm); + params.fileList = this.fileList + this.$api.Safety.addAreaInfos(params).then((res) => { + if(res.statusMsg === 'ok') { + this.asyncVisible = false; + this.searchButtonInfo(true); + this.$message.success('添加成功!'); + } else { + this.$message.warning(res.statusMsg); + } + }) + } + }) + }, 3000), + // 提交修改按钮信息 + submitUpdate: throttle(function() { + this.$refs.ruleForm.validate((valid) => { + if(valid) { + const params = Object.assign({}, this.ruleForm); + params.fileList = this.fileList + this.$api.Safety.addAreaInfos(params).then((res) => { + if(res.statusMsg === 'ok') { + this.asyncVisible = false; + this.searchButtonInfo(true); + this.$message.success('修改成功!'); + } else { + this.$message.warning(res.statusMsg); + } + }) + } + }) + }, 3000), + // 判断按钮权限信息 + showButton(str) { + const pinia = buttonPinia(); + return pinia.$state.buttonInfo.includes(str); + }, + // 切换页数 + changePageNum(page) { + this.pageNum = page; + this.searchButtonInfo(); + }, + // 切换每页条数 + changePageSize(size) { + this.pageSize = size; + this.searchButtonInfo(); + } + } + } +</script> + +<style lang="scss" scoped> +@import '../../style/layout-main.scss'; +.upload_index{ + width: 100%; + display: flex; + flex-direction: column; + .upload_text{ + display: flex; + justify-content: flex-end; + } + .upload_tables{ + height: 200px; + } +} +</style> \ No newline at end of file -- Gitblit v1.9.3