Browse Source

提交代码

朱鑫波 3 năm trước cách đây
mục cha
commit
9367919083
2 tập tin đã thay đổi với 446 bổ sung2 xóa
  1. 405 0
      src/mixins/videoMaterialMixin.js
  2. 41 2
      src/views/modules/material/videoMaterial.vue

+ 405 - 0
src/mixins/videoMaterialMixin.js

@@ -0,0 +1,405 @@
+/**
+ * 新增修改完成调用 modalFormOk方法 编辑弹框组件ref定义为modalForm
+ * 高级查询按钮调用 superQuery方法  高级查询组件ref定义为superQueryModal
+ * data中url定义 list为查询列表  delete为删除单条记录  deleteBatch为批量删除
+ */
+ import {filterObj} from '@/utils/util';
+ import moment from 'moment'
+ import {deleteAction, getAction, downFile} from '@/api/manage'
+ import Vue from 'vue'
+ import {ACCESS_TOKEN} from "@/store/mutation-types"
+ import { transformTozTreeFormat } from '@/utils/util.js'
+ export const JeecgListMixin = {
+   data() {
+     return {
+       spinning:true,
+       //token header
+       tokenHeader: {'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)},
+       /* 查询条件-请不要在queryParam中声明非字符串值的属性 */
+       queryParam: {},
+       /* 数据源 */
+       dataSource: [],
+       innerData:[],
+       /* 分页参数 */
+       ipagination: {
+         current: 1,
+         pageSize: 10,
+         pageSizeOptions: ['8', '16', '32'],
+         showTotal: (total, range) => {
+           return range[0] + "-" + range[1] + " 共" + total + "条"
+         },
+         showQuickJumper: true,
+         // showSizeChanger: true,
+         total: 0
+       },
+       /* 排序参数 */
+       isorter: {
+         column: 'createTime',
+         order: 'desc',
+       },
+       /* 筛选参数 */
+       filters: {},
+       /* table加载状态 */
+       loading: false,
+       /* table选中keys*/
+       selectedRowKeys: [],
+       /* table选中records*/
+       selectionRows: [],
+       /* 查询折叠 */
+       toggleSearchStatus: false,
+       /* 高级查询条件生效状态 */
+       superQueryFlag: false,
+       /* 高级查询条件 */
+       superQueryParams: ""
+     }
+   },
+   mounted() {
+     if(this.startList){
+ 
+     }else{
+        this.loadData();
+     }
+     //初始化字典配置 在自己页面定义
+     this.initDictConfig();
+   },
+   methods: {
+     // 二级树
+     expand(expanded,record){
+         if(this.url.listTwo){
+             var param = {}
+             param.field = this.getQueryField();
+             param.pageNo = this.ipagination.current;
+             param.pageSize = this.ipagination.pageSize;
+             param.parentId = record.id
+             if(expanded){
+                 getAction(this.url.listTwo, filterObj(param)).then((res) => {
+                     if (res.success) {
+                         record.innerData=res.result.records.map((item,index)=>{
+                             return {
+                                 ...item,
+                                 key:index
+                             }
+                         })
+                         // console.log(record.innerData)
+                         record.innerData = transformTozTreeFormat( record.innerData)
+                     }
+                     if (res.code === 510) {
+                       this.$message.warning(res.message)
+                     }
+                     this.loading = false;
+                 })
+             }else{
+                 record.innerData = []
+             }
+         }
+     },
+     async loadData(arg) {
+       this.spinning= true
+       this.dataSource = []
+       if (!this.url.list) {
+         this.$message.error("请设置url.list属性!")
+         return
+       }
+       //加载数据 若传入参数1则加载第一页的内容
+       if (arg === 1) {
+         this.ipagination.current = 1;
+       }
+       var params = this.getQueryParams();//查询条件
+       if(params.createTime&&params.createTime.length>0){
+         // params.createTime = moment(params.createTime).format('YYYY-MM-DD')
+         params.startDate = moment(params.createTime[0]).format('YYYY-MM-DD')
+         params.endDate = moment(params.createTime[1]).format('YYYY-MM-DD')
+         params.createTime = null
+       }
+       if(params.stateDate){
+         params.stateDate = moment(params.stateDate).format('YYYY-MM-DD')
+       }
+       // if(params.endDate){
+       //   params.endDate = moment(params.endDate).format('YYYY-MM-DD')
+       // }
+ 
+       this.loading = true;
+       await getAction(this.url.list, params).then((res) => {
+         if (res.success) {
+           this.loading = false;
+           if(res.result){
+             if(res.result.records){
+               this.dataSource = res.result.records.map(item=>{
+                 return {
+                     ...item,
+                     innerData:[],
+                     showVideo:false
+                 }
+               })
+               this.ipagination.total = res.result.total;
+             }else if(res.result.list){
+               this.dataSource = res.result.list.map(item=>{
+                 return {
+                     ...item,
+                     innerData:[],
+                     showVideo:false
+                 }
+               })
+               this.ipagination.total = res.result.total;
+             }else{
+               this.dataSource = res.result.map(item=>{
+                 return {
+                     ...item,
+                     innerData:[],
+                     showVideo:false
+                 }
+               })
+               // this.ipagination = null;
+               this.ipagination.pageSize=res.result.length
+             }
+           }else if(res.data){
+             if(res.data.list){
+               this.dataSource = res.data.list.map(item=>{
+                 return {
+                     ...item,
+                     innerData:[],
+                     showVideo:false
+                 }
+               })
+               this.ipagination.total = res.data.total;
+             }
+           }
+           
+           this.spinning= false
+         }
+         if (res.code === 510) {
+           this.$message.warning(res.message)
+         }
+         this.loading = false;
+         this.spinning= false
+       })
+     },
+     initDictConfig() {
+     //   console.log("--这是一个假的方法!")
+     },
+     handleSuperQuery(arg) {
+       //高级查询方法
+       if (!arg) {
+         this.superQueryParams = ''
+         this.superQueryFlag = false
+       } else {
+         this.superQueryFlag = true
+         this.superQueryParams = JSON.stringify(arg)
+       }
+       this.loadData()
+     },
+     editDate(value) {
+       let date = new Date(value)
+       let y = date.getFullYear()
+       let MM = date.getMonth() + 1
+       MM = MM < 10 ? '0' + MM : MM
+       let d = date.getDate()
+       d = d < 10 ? '0' + d : d
+       return y + '-' + MM + '-' + d
+     },
+     getQueryParams() {
+       //获取查询条件
+       let sqp = {}
+       if (this.superQueryParams) {
+         sqp['superQueryParams'] = encodeURI(this.superQueryParams)
+       }
+       // console.log(this.queryParam)
+       var param = {...this.queryParam,...this.isorter, ...this.filters}
+       param.pageNo = this.ipagination.current;
+       param.pageSize = this.ipagination.pageSize;
+       return param
+     },
+     getQueryField() {
+       //TODO 字段权限控制
+       var str = "id,";
+       this.columns.forEach(function (value) {
+         str += "," + value.dataIndex;
+       });
+       return str;
+     },
+ 
+     onSelectChange(selectedRowKeys, selectionRows) {
+       this.selectedRowKeys = selectedRowKeys;
+       this.selectionRows = selectionRows;
+     },
+     onClearSelected() {
+       this.selectedRowKeys = [];
+       this.selectionRows = [];
+     },
+     searchQuery() {
+       this.loadData(1);
+     },
+     superQuery() {
+       this.$refs.superQueryModal.show();
+     },
+     searchReset() {
+       this.queryParam = {}
+       this.loadData(1);
+     },
+     batchDel: function () {
+       if (!this.url.deleteBatch) {
+         this.$message.error("请设置url.deleteBatch属性!")
+         return
+       }
+       if (this.selectedRowKeys.length <= 0) {
+         this.$message.warning('请选择一条记录!');
+         return;
+       } else {
+         var ids = "";
+         for (var a = 0; a < this.selectedRowKeys.length; a++) {
+           ids += this.selectedRowKeys[a] + ",";
+         }
+         var that = this;
+         this.$confirm({
+           title: "确认删除",
+           content: "是否删除选中数据?",
+           onOk: function () {
+             deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => {
+               if (res.success) {
+                 that.$message.success(res.message);
+                 that.loadData();
+                 that.onClearSelected();
+               } else {
+                 that.$message.warning(res.message);
+               }
+             });
+           }
+         });
+       }
+     },
+     handleDelete: function (id) {
+       if (!this.url.delete) {
+         this.$message.error("请设置url.delete属性!")
+         return
+       }
+       var that = this;
+       deleteAction(that.url.delete, {id: id}).then((res) => {
+         if (res.success) {
+           that.$message.success(res.message);
+           that.loadData();
+         } else {
+           that.$message.warning(res.message);
+         }
+       });
+     },
+     handleEdit: function (record,sign) {
+         // console.log(record,sign)
+       this.$refs.modalForm.edit(record,sign);
+       this.$refs.modalForm.title = "编辑";
+       this.$refs.modalForm.disableSubmit = false;
+       if(sign == 'preview'){
+         this.$refs.modalForm.title = "预览";
+       }
+     },
+     handleImagePreview: function (record) {
+         this.$refs.modalForm.imagePreview(record);
+         this.$refs.modalForm.title = "预览";
+         this.$refs.modalForm.disableSubmit = false;
+     },
+     handleAdd: function (sign) {
+       this.$refs.modalForm.add(sign);
+       this.$refs.modalForm.title = "新增";
+       this.$refs.modalForm.disableSubmit = false;
+     },
+     handleOpen: function () {
+       this.$refs.userForm.open();
+       this.$refs.userForm.title = "选择";
+       this.$refs.userForm.disableSubmit = false;
+     },
+     handleTableChange(pagination, filters, sorter) {
+       //分页、排序、筛选变化时触发
+       //TODO 筛选
+       if (Object.keys(sorter).length > 0) {
+         this.isorter.column = sorter.field;
+         this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
+       }
+       this.ipagination = pagination;
+       this.loadData();
+     },
+     handleToggleSearch() {
+       this.toggleSearchStatus = !this.toggleSearchStatus;
+     },
+     modalFormOk() {
+       // 新增/修改 成功时,重载列表
+       this.loadData(this.ipagination.current);
+     },
+     handleDetail: function (record) {
+       this.$nextTick(()=>{
+         this.$refs.modalForm.edit(record);
+         this.$refs.modalForm.title = "详情";
+         this.$refs.modalForm.disableSubmit = true;
+       })
+       
+     },
+     /* 导出 */
+     handleExportXls2() {
+       let paramsStr = encodeURI(JSON.stringify(this.getQueryParams()));
+       let url = `${window._CONFIG['domianURL']}/${this.url.exportXlsUrl}?paramsStr=${paramsStr}`;
+       window.location.href = url;
+     },
+     handleExportXls(fileName) {
+       if (!fileName || typeof fileName != "string") {
+         fileName = "导出文件"
+       }
+       let param = {...this.queryParam};
+       if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
+         param['selections'] = this.selectedRowKeys.join(",")
+       }
+       // console.log("导出参数", param)
+       downFile(this.url.exportXlsUrl, param).then((data) => {
+         if (!data) {
+           this.$message.warning("文件下载失败")
+           return
+         }
+         if (typeof window.navigator.msSaveBlob !== 'undefined') {
+           window.navigator.msSaveBlob(new Blob([data]), fileName + '.xls')
+         } else {
+           let url = window.URL.createObjectURL(new Blob([data]))
+           let link = document.createElement('a')
+           link.style.display = 'none'
+           link.href = url
+           link.setAttribute('download', fileName + '.xls')
+           document.body.appendChild(link)
+           link.click()
+           document.body.removeChild(link); //下载完成移除元素
+           window.URL.revokeObjectURL(url); //释放掉blob对象
+         }
+       })
+     },
+     /* 导入 */
+     handleImportExcel(info) {
+       if (info.file.status !== 'uploading') {
+         // console.log(info.file, info.fileList);
+       }
+       if (info.file.status === 'done') {
+         if (info.file.response.success) {
+           this.$message.success(`${info.file.name} 文件上传成功`);
+           this.loadData();
+         } else {
+           this.$message.error(`${info.file.name} ${info.file.response.message}.`);
+         }
+       } else if (info.file.status === 'error') {
+         this.$message.error(`文件上传失败: ${info.file.msg} `);
+       }
+     },
+     /* 图片预览 */
+     getImgView(text) {
+       if (text && text.indexOf(",") > 0) {
+         text = text.substring(0, text.indexOf(","))
+       }
+       return window._CONFIG['imgDomainURL'] + "/" + text
+     },
+     /* 文件下载 */
+     uploadFile(text) {
+       if (!text) {
+         this.$message.warning("未知的文件")
+         return;
+       }
+       if (text.indexOf(",") > 0) {
+         text = text.substring(0, text.indexOf(","))
+       }
+       window.open(window._CONFIG['domianURL'] + "/sys/common/download/" + text);
+     },
+   }
+ 
+ }

+ 41 - 2
src/views/modules/material/videoMaterial.vue

@@ -828,10 +828,13 @@ a {
               style="float: right"
               v-if="dataSource.length > 0"
               showQuickJumper
+              showSizeChanger
               :pageSize.sync="ipagination.pageSize"
               :total="ipagination.total"
               v-model="ipagination.current"
+              :pageSizeOptions="ipagination.pageSizeOptions"
               @change="getDataSource"
+              @showSizeChange="getDataSourceSize"
             />
           </div>
           <div v-else style="width: 100%; height: 400px; display: flex; justify-content: center; align-items: center">
@@ -2073,7 +2076,7 @@ a {
 <script>
 import changeFace from '@/views/modules/Statistics/change-face/change-face';
 import PermissionModal from './modules/DepartModal'
-import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+import { JeecgListMixin } from '@/mixins/videoMaterialMixin'
 import JEllipsis from '@/components/jeecg/JEllipsis'
 import UploadToAli from '@femessage/upload-to-ali'
 import { fileCheck, fileCheckImage, fileEdit, fileEditAll, fileInsertV2 } from '@/api/actor'
@@ -2089,6 +2092,7 @@ import uploadFile from '@/components/uploadFile.vue'
 import { closeAllVideoFun, stopOtherVideo } from '@/utils/videoControl'
 import accountCheck from './accountCheck'
 import accountCheckBytedance from './accountCheckBytedance'
+let md5Arr = []
 export default {
   name: 'video-material',
   mixins: [JeecgListMixin],
@@ -2457,6 +2461,16 @@ export default {
         // this.loadData()
       },
     },
+    batchUploadVisible:function(n,o){
+      if(!n){
+        md5Arr = []
+        this. ruleForm={
+          projectId:'',
+          urlList:[],
+          urlListData:[]
+        }
+      }
+    }
   },
   methods: {
             //     :checkFile="ruleFormFile"
@@ -2469,6 +2483,14 @@ export default {
       return new Promise(function (resolve, reject) {
         bmf.md5(file, (err, md5) => {
           let videoInfo = {name:file.name,md5:md5}
+          if(md5Arr.findIndex(item=>item==md5)>-1){
+            reject()
+            that.$message.error('素材'+file.name+'已经上传')
+            return
+          }else{
+            md5Arr.push(md5)
+          }
+          
           // that.ruleForm.urlList = []
           fileCheck({
             code: md5,
@@ -2500,8 +2522,15 @@ export default {
         }
       })
     },
-    ruleFormRemoveUpload(){
+    ruleFormRemoveUpload(file){
+      console.log(file)
+      //media-1301855440.cos.ap-chongqing.myqcloud.com/video/2021-08-16/03-1629102879421.mp4
+      let index = this.ruleForm.urlListData.findIndex(item=>item.url==file.url)
+      console.log(index)
+      if(index>-1){
 
+        this.ruleForm.urlListData.splice(index,1)
+      }
     },
     handleOkBatch(){
       this.$refs.ruleForm.validate(valid => {
@@ -2526,8 +2555,10 @@ export default {
           postAction('/insertV3',params).then(res=>{
             this.loadingBatch = false
             if(res.success){
+              md5Arr = []
               this.$message.success('上传成功')
               this.batchUploadVisible = false
+              this.loadData(1)
             }else{
                this.$message.error(res.message)
             }
@@ -3842,6 +3873,14 @@ export default {
     },
     getDataSource(page, pageSize) {
       this.ipagination.current = page
+      this.ipagination.pageSize = pageSize
+      this.checkArr = []
+      this.checkAll = false
+      this.loadData()
+    },
+    getDataSourceSize(page, pageSize) {
+      this.ipagination.current = 1
+      this.ipagination.pageSize = pageSize
       this.checkArr = []
       this.checkAll = false
       this.loadData()