/** * 新增修改完成调用 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' import {mapGetters} from 'vuex'; 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: ['10', '20', '30'], 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: { ...mapGetters(['nickname', 'avatar', 'userInfo']), // 二级树 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.cancel() 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&¶ms.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.videoStatus == 0){ params.syncKuaishou = null params.syncBytedance = null }else if(params.videoStatus == 1){ params.syncKuaishou = 1 params.syncBytedance = 1 }else if(params.videoStatus == '2'){ params.syncKuaishou = 1 params.syncBytedance = null }else if(params.videoStatus == 3){ params.syncKuaishou = null params.syncBytedance = 1 }else if(params.videoStatus == 4){ params.syncKuaishou = 2 params.syncBytedance = null }else if(params.videoStatus == 5){ params.syncKuaishou = null params.syncBytedance = 2 }else if(params.videoStatus == 6){ params.syncKuaishou = 2 params.syncBytedance = 2 }else{ params.syncKuaishou = null params.syncBytedance = null } // if(params.endDate){ // params.endDate = moment(params.endDate).format('YYYY-MM-DD') // } params.userId = this.userInfo().id 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); }, } }