From 45e4fc8718d2a29cafe6df970379084e7cc841aa Mon Sep 17 00:00:00 2001 From: wxz Date: Fri, 21 Jul 2023 16:33:52 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=85=9A=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E3=80=91=E5=AE=8C=E6=88=90=E4=B8=8A=E4=BC=A0+=E5=AF=BC?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../communityParty/members/memberList.vue | 189 +++++++++++++++++- .../communityParty/partyOrg/orgTree.vue | 4 +- 2 files changed, 182 insertions(+), 11 deletions(-) diff --git a/src/views/modules/communityParty/members/memberList.vue b/src/views/modules/communityParty/members/memberList.vue index b1ac98c4d..ac418a9dd 100644 --- a/src/views/modules/communityParty/members/memberList.vue +++ b/src/views/modules/communityParty/members/memberList.vue @@ -87,14 +87,29 @@ 新增 + + 导入 + 导入 + :loading="exportBtnLoading" + @click="handleExportBtnClick">导出 导出 - - 下载模板 + @click="handleDownloadTemplateBtnClick">下载模板 批量删除 @@ -236,11 +251,14 @@ export default { data () { return { + exportBtnLoading: false, + importLoading: false, loading: false, epmetResultResolver: null, createDlgShow: false, detailDlgShow: false, updateDlgShow: false, + uploadDlgShow: false, total: 0, // 总数 multiSelectedRows: [], //多选选项 pageSizes: [20, 50, 100], // 页码可选 @@ -289,6 +307,86 @@ export default { handleMultiSelect(selectedRows) { this.multiSelectedRows = selectedRows; }, + + // 导出 + async handleExportBtnClick() { + this.exportBtnLoading = true; + + let url = "/actual/base/party/member/export"; + await this.$http({ + method: "POST", + url, + responseType: "blob", + data: this.searchForm, + }) + .then((res) => { + // this.download(res.data, title + '.xls') + if (res.headers["content-disposition"]) { + let fileName = window.decodeURI( + res.headers["content-disposition"].split(";")[1].split("=")[1] + ); + console.log("filename", fileName); + let blob = new Blob([res.data], { + type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + }); + var url = window.URL.createObjectURL(blob); + var aLink = document.createElement("a"); + aLink.style.display = "none"; + aLink.href = url; + aLink.setAttribute("download", fileName); + document.body.appendChild(aLink); + aLink.click(); + document.body.removeChild(aLink); //下载完成移除元素 + window.URL.revokeObjectURL(url); //释放掉blob对象 + } else this.$message.error("下载失败"); + }) + .catch((err) => { + console.log("err", err); + return this.$message.error("网络错误"); + }); + + this.exportBtnLoading = false; + }, + + /** + * 导出按钮点击 + */ + async handleDownloadTemplateBtnClick() { + let url = "/actual/base/party/member/downloadTemplate"; + + let params = {}; + await this.$http({ + method: "GET", + url, + responseType: "blob", + data: params, + }) + .then((res) => { + // this.download(res.data, title + '.xls') + if (res.headers["content-disposition"]) { + let fileName = window.decodeURI( + res.headers["content-disposition"].split(";")[1].split("=")[1] + ); + console.log("filename", fileName); + let blob = new Blob([res.data], { + type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + }); + var url = window.URL.createObjectURL(blob); + var aLink = document.createElement("a"); + aLink.style.display = "none"; + aLink.href = url; + aLink.setAttribute("download", fileName); + document.body.appendChild(aLink); + aLink.click(); + document.body.removeChild(aLink); //下载完成移除元素 + window.URL.revokeObjectURL(url); //释放掉blob对象 + } else this.$message.error("下载失败"); + }) + .catch((err) => { + console.log("err", err); + return this.$message.error("网络错误"); + }); + }, /** * 新增按钮点击 @@ -298,6 +396,20 @@ export default { this.$refs['create'].init() }, + /** + * 导入按钮点击 + */ + handleImportBtnClick() { + this.uploadDlgShow = true; + }, + + /** + * 上传对话框关闭 + */ + handleUploadDlgClose() { + this.uploadDlgShow = false; + }, + /** * 查看详情 */ @@ -310,9 +422,70 @@ export default { * 更新按钮点击 * @param row */ - handleUpdateBtnClick(row) { - this.detailDlgShow = true; - this.$refs['update'].init(row.id); + handleExcelSuccess(res) { + this.epmetResultResolver.success((data) => { + this.$message.success('上传完成,正在导入,请到导入记录中查看导入情况。'); + }).fail(() => { + this.$message.error('导入失败'); + }).parse(res); + }, + + /** + * 文件上传前的处理 + * @param file + * @returns {boolean} + */ + beforeExcelUpload(file) { + // console.log('file', file); + const isXlsx = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; + const isLt1M = file.size / 1024 / 1024 < 10; + if (!isXlsx) { + this.$message.error('上传文件只能是xlsx格式!'); + } + + if (!isLt1M) { + this.$message.error('上传文件大小不能超过 10MB!'); + } + return isXlsx && isLt1M; + }, + + /** + * 执行上传 + * @param file + * @returns {Promise} + */ + async uploadHttpRequest(file) { + this.importLoading = true; + this.importBtnTitle = '正在上传中...'; + // this.$message({ + // showClose: true, + // dangerouslyUseHTMLString: true, + // message: "导入中,请到系统管理-导入记录中查看进度", + // duration: 3000 + // }); + // let than = this; + // document.getElementById('clickA').addEventListener('click', function() { + // than.$router.replace('/main/importRecord-index'); + // }); + const formData = new FormData(); //FormData对象,添加参数只能通过append('key', value)的形式添加 + formData.append('file', file.file); //添加文件对象 + // formData.append('code', ''); //添加文件对象 + await this.$http + .post('/actual/base/party/member/import', formData) + .then(res => { + debugger + this.epmetResultResolver.success((data) => { + this.$message.success('上传成功,正在导入,请到"系统管理-导入记录"中查看导入情况。'); + }).parse(res.data); + }) + .catch(err => { + console.log('失败', err); + file.onError(); //上传失败的文件会从文件列表中删除 + // this.$message.error('导入失败') + }); + this.importLoading = false; + this.importBtnTitle = '导入'; + this.$refs.upload.clearFiles(); }, /** diff --git a/src/views/modules/communityParty/partyOrg/orgTree.vue b/src/views/modules/communityParty/partyOrg/orgTree.vue index f6f1e2539..f73188fb0 100644 --- a/src/views/modules/communityParty/partyOrg/orgTree.vue +++ b/src/views/modules/communityParty/partyOrg/orgTree.vue @@ -31,7 +31,6 @@ :data="partyOrgTree" style="width: 100%" row-key="id" - fit border lazy :load="handleTreeNodeExpand" @@ -62,8 +61,7 @@ + label="操作">