From f4b922165ce2ed5843a3d37fce0e9ca4c5cf45bc Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 15 May 2024 17:21:09 +0800
Subject: [PATCH] 场所导入导出新增完善
---
src/views/place/index.vue | 134 ++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 128 insertions(+), 6 deletions(-)
diff --git a/src/views/place/index.vue b/src/views/place/index.vue
index 57cbf2f..772668f 100644
--- a/src/views/place/index.vue
+++ b/src/views/place/index.vue
@@ -5,6 +5,18 @@
:before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
+
+ <template slot="menuLeft">
+ <el-button type="danger" size="small" plain icon="el-icon-delete" v-if="permission.place_delete"
+ @click="handleDelete">删 除
+ </el-button>
+ <el-button type="success" size="small" plain v-if="permission.place_import" icon="el-icon-upload2"
+ @click="handleImport">导入
+ </el-button>
+ <el-button type="warning" size="small" plain v-if="permission.place_export" icon="el-icon-download"
+ @click="handleExport">导出
+ </el-button>
+ </template>
<template slot-scope="{row}" slot="location">
<span v-text="showLocation(row.location)"></span>
</template>
@@ -26,12 +38,6 @@
<template slot-scope="{row, size}" slot="source">
<el-tag :size="size" :type="showSource(row.source).type">{{ showSource(row.source).text
}}</el-tag>
- </template>
-
- <template slot="menuLeft">
- <el-button size="small" icon="el-icon-delete" plain v-if="permission.place_delete"
- @click="handleDelete">删 除
- </el-button>
</template>
<template slot-scope="{row, size}" slot="menu">
@@ -62,6 +68,15 @@
width="30%">
<auditBase></auditBase>
</el-dialog>
+ <el-dialog title="场所数据导入" append-to-body :visible.sync="excelBox" width="555px">
+ <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
+ <template slot="excelTemplate">
+ <el-button size="small" type="primary" @click="handleTemplate">
+ 点击下载<i class="el-icon-download el-icon--right"></i>
+ </el-button>
+ </template>
+ </avue-form>
+ </el-dialog>
</basic-container>
</template>
@@ -77,7 +92,22 @@
import {
mapGetters
} from "vuex"
+import {
+ exportBlob
+} from "@/api/common"
+import {
+ getToken
+} from '@/util/auth'
+import {
+ downloadXls,
+} from "@/util/util"
+import {
+ dateNow
+} from "@/util/date"
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
+import Qs from "qs"
import website from '@/config/website'
import auditBase from './components/auditBase'
@@ -99,6 +129,55 @@
}
return {
+ excelOption: {
+ submitBtn: false,
+ emptyBtn: false,
+ column: [{
+ label: '模板上传',
+ prop: 'excelFile',
+ type: 'upload',
+ drag: true,
+ loadText: '模板上传中,请稍等',
+ span: 24,
+ propsHttp: {
+ res: 'data'
+ },
+ tip: '请上传 .xls,.xlsx 标准格式文件',
+ action: "/api/blade-household/household/import-household"
+ },
+ {
+ label: "数据覆盖",
+ prop: "isCovered",
+ type: "switch",
+ align: "center",
+ width: 80,
+ dicData: [{
+ label: "否",
+ value: 0
+ },
+ {
+ label: "是",
+ value: 1
+ }
+ ],
+ value: 0,
+ slot: true,
+ rules: [{
+ required: true,
+ message: "请选择是否覆盖",
+ trigger: "blur"
+ }]
+ },
+ {
+ label: '模板下载',
+ prop: 'excelTemplate',
+ formslot: true,
+ span: 24,
+ }
+ ]
+ },
+ excelForm: {},
+ excelBox: false,
form: {},
query: {},
loading: true,
@@ -590,6 +669,12 @@
}
},
},
+ 'excelForm.isCovered'() {
+ if (this.excelForm.isCovered !== '') {
+ const column = this.findObject(this.excelOption.column, "excelFile")
+ column.action = `/api/blade-place/place/import-place?isCovered=${this.excelForm.isCovered}`
+ }
+ }
},
computed: {
@@ -841,6 +926,43 @@
this.$refs.crud && this.$refs.crud.toggleSelection()
})
},
+ handleImport() {
+ this.excelBox = true
+ },
+ uploadAfter(res, done, loading, column) {
+ this.excelBox = false
+ this.onLoad(this.page)
+ this.$message({
+ type: "success",
+ message: res
+ })
+ this.$refs.crud.toggleSelection()
+ done()
+ },
+ handleExport() {
+ this.$confirm("是否导出场所数据?", "提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ }).then(() => {
+ NProgress.start()
+ var data = {
+ ...this.query
+ }
+ data = Qs.stringify(data)
+ exportBlob(
+ `/api/blade-place/place/export-place?${this.website.tokenHeader}=${getToken()}&` + data
+ ).then(res => {
+ downloadXls(res.data, `场所数据表${dateNow()}.xlsx`)
+ NProgress.done()
+ })
+ })
+ },
+ handleTemplate() {
+ exportBlob(`/api/blade-place/place/export-template?${this.website.tokenHeader}=${getToken()}`).then(res => {
+ downloadXls(res.data, "场所数据模板.xlsx")
+ })
+ },
handleDelete() {
if (this.selectionList.length === 0) {
this.$message.warning("请选择至少一条数据")
--
Gitblit v1.9.3