功能变化(CRUD组件): 添加导入功能

pull/31/head
李强 2021-05-17 00:16:27 +08:00
parent 5da2cfefae
commit 3ac19773c6
1 changed files with 88 additions and 2 deletions

View File

@ -302,12 +302,43 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport"/>
是否更新已经存在的数据
<el-link type="info" style="font-size:12px" @click="importTemplate"></el-link>
</div>
<div class="el-upload__tip" style="color:red" slot="tip">提示仅允许导入xlsxlsx格式文件</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import moment from 'moment';
import * as Utils from '@/utils';
import {getToken} from '@/utils/auth'
export default {
name: 'ModelDisplay',
@ -441,6 +472,8 @@
submitFormApi: '',
// api
selectApi: '',
// api
importApi: '',
DictsOptions: {},
getRowKeys: row => {
if (this.rowKey) {
@ -449,6 +482,21 @@
return row.id || row.uuid;
},
title: '',
//
upload: {
//
open: false,
//
title: '',
//
isUploading: false,
//
updateSupport: 0,
//
headers: {Authorization: 'Bearer ' + getToken()},
//
url: process.env.VUE_APP_BASE_API + '/admin/system/savefile/'
},
};
},
computed: {
@ -799,7 +847,7 @@
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = '用户导入'
this.upload.title = '导入'
this.upload.open = true
}, /** 获取表单校验 */
getFormRules() {
@ -849,6 +897,44 @@
}
})
return Permis
},
/** 下载模板操作 */
importTemplate() {
this.funcs.map(value => {
if (value.type === 'import') {
this.importApi = value
}
})
this.importApi.template_api().then(response => {
this.download(response.data.file_url, response.data.name)
})
},
//
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true
},
//
handleFileSuccess(response, file, fileList) {
this.funcs.map(value => {
if (value.type === 'import') {
this.importApi = value
}
})
this.upload.open = false
this.upload.isUploading = false
this.$refs.upload.clearFiles()
//
this.importApi.api({
file_url: response.data.file_url,
updateSupport: this.upload.updateSupport
}).then(response => {
this.$alert('导入成功!', '导入结果', {dangerouslyUseHTMLString: true})
this.getTableData()
})
},
//
submitFileForm() {
this.$refs.upload.submit()
}
}
};