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