|
|
@ -2,28 +2,49 @@ |
|
|
<div class="mod-oss"> |
|
|
<div class="mod-oss"> |
|
|
<el-form :inline="true" :model="dataForm"> |
|
|
<el-form :inline="true" :model="dataForm"> |
|
|
<el-form-item> |
|
|
<el-form-item> |
|
|
<el-button type="primary" @click="configHandle()">云存储配置</el-button> |
|
|
|
|
|
<el-button type="primary" @click="uploadHandle()">上传文件</el-button> |
|
|
|
|
|
|
|
|
<el-input v-model="dataForm.fileName"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item> |
|
|
|
|
|
<el-button @click="getDataList()">查询</el-button> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item> |
|
|
|
|
|
<Upload @refreshDataList="getDataList"></Upload> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
<el-form-item> |
|
|
<el-button type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> |
|
|
<el-button type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-form> |
|
|
</el-form> |
|
|
<el-table |
|
|
<el-table |
|
|
:data="dataList" |
|
|
:data="dataList" |
|
|
border |
|
|
border |
|
|
|
|
|
:height="tableHeight" |
|
|
v-loading="dataListLoading" |
|
|
v-loading="dataListLoading" |
|
|
@selection-change="selectionChangeHandle" |
|
|
@selection-change="selectionChangeHandle" |
|
|
style="width: 100%;"> |
|
|
style="width: 100%;"> |
|
|
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> |
|
|
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> |
|
|
|
|
|
<el-table-column |
|
|
|
|
|
prop="fileName" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="left" |
|
|
|
|
|
label="文件名"> |
|
|
|
|
|
</el-table-column> |
|
|
<el-table-column |
|
|
<el-table-column |
|
|
prop="url" |
|
|
prop="url" |
|
|
header-align="center" |
|
|
header-align="center" |
|
|
align="center" |
|
|
|
|
|
|
|
|
align="left" |
|
|
label="URL地址"> |
|
|
label="URL地址"> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column |
|
|
|
|
|
prop="createdBy" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="left" |
|
|
|
|
|
width="180" |
|
|
|
|
|
label="创建人"> |
|
|
|
|
|
</el-table-column> |
|
|
<el-table-column |
|
|
<el-table-column |
|
|
prop="createDate" |
|
|
prop="createDate" |
|
|
header-align="center" |
|
|
header-align="center" |
|
|
align="center" |
|
|
|
|
|
|
|
|
align="left" |
|
|
width="180" |
|
|
width="180" |
|
|
label="创建时间"> |
|
|
label="创建时间"> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
@ -34,8 +55,8 @@ |
|
|
width="150" |
|
|
width="150" |
|
|
label="操作"> |
|
|
label="操作"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<a type="text" size="small" @click="deleteHandle(scope.row.id)">删除</a> |
|
|
|
|
|
<a @click="downloadFile(scope.row.fileName, scope.row.url)" >下载</a> |
|
|
|
|
|
|
|
|
<a type="text" size="small" @click="deleteHandle(scope.row.id)">删除</a> |
|
|
|
|
|
<a @click="fileDownload(scope.row)">下载</a> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
</el-table> |
|
|
</el-table> |
|
|
@ -48,130 +69,156 @@ |
|
|
:total="totalPage" |
|
|
:total="totalPage" |
|
|
layout="total, sizes, prev, pager, next, jumper"> |
|
|
layout="total, sizes, prev, pager, next, jumper"> |
|
|
</el-pagination> |
|
|
</el-pagination> |
|
|
<!-- 弹窗, 云存储配置 --> |
|
|
|
|
|
<config v-if="configVisible" ref="config"></config> |
|
|
|
|
|
<!-- 弹窗, 上传文件 --> |
|
|
|
|
|
<upload v-if="uploadVisible" ref="upload" @refreshDataList="getDataList"></upload> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</template> |
|
|
</template> |
|
|
|
|
|
|
|
|
<script> |
|
|
<script> |
|
|
import Config from './oss-config' |
|
|
|
|
|
import Upload from './oss-upload' |
|
|
|
|
|
export default { |
|
|
|
|
|
data () { |
|
|
|
|
|
return { |
|
|
|
|
|
dataForm: {}, |
|
|
|
|
|
dataList: [], |
|
|
|
|
|
pageIndex: 1, |
|
|
|
|
|
pageSize: 20, |
|
|
|
|
|
totalPage: 0, |
|
|
|
|
|
dataListLoading: false, |
|
|
|
|
|
dataListSelections: [], |
|
|
|
|
|
configVisible: false, |
|
|
|
|
|
uploadVisible: false |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import Upload from '../common/upload' |
|
|
|
|
|
import axios from "axios"; |
|
|
|
|
|
import Vue from "vue"; |
|
|
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
|
|
data() { |
|
|
|
|
|
return { |
|
|
|
|
|
tableHeight: 0, |
|
|
|
|
|
dataForm: { |
|
|
|
|
|
fileName: '' |
|
|
|
|
|
}, |
|
|
|
|
|
dataList: [], |
|
|
|
|
|
pageIndex: 1, |
|
|
|
|
|
pageSize: 20, |
|
|
|
|
|
totalPage: 0, |
|
|
|
|
|
dataListLoading: false, |
|
|
|
|
|
dataListSelections: [], |
|
|
|
|
|
configVisible: false, |
|
|
|
|
|
uploadVisible: false |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
components: { |
|
|
|
|
|
Upload |
|
|
|
|
|
}, |
|
|
|
|
|
activated() { |
|
|
|
|
|
this.getDataList() |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
|
mounted() { |
|
|
|
|
|
this.$nextTick(() => { |
|
|
|
|
|
this.tableHeight = window.innerHeight - 166; |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
methods: { |
|
|
|
|
|
// 文件下载 |
|
|
|
|
|
fileDownload(row) { |
|
|
|
|
|
axios.get('/proxyApi/ftp/file/downFtpFile/' + row.id, { |
|
|
|
|
|
responseType: 'blob', |
|
|
|
|
|
headers: { |
|
|
|
|
|
'Content-Type': 'application/json', |
|
|
|
|
|
'token':Vue.cookie.get('token') |
|
|
|
|
|
} |
|
|
|
|
|
}).then(({data}) => { |
|
|
|
|
|
// 不限制文件下载类型 |
|
|
|
|
|
const blob = new Blob([data], {type: "application/octet-stream"}) |
|
|
|
|
|
// 下载文件名称 |
|
|
|
|
|
const fileName = row.fileName |
|
|
|
|
|
// a标签下载 |
|
|
|
|
|
const linkNode = document.createElement('a') |
|
|
|
|
|
linkNode.download = fileName // a标签的download属性规定下载文件的名称 |
|
|
|
|
|
linkNode.style.display = 'none' |
|
|
|
|
|
linkNode.href = URL.createObjectURL(blob) // 生成一个Blob URL |
|
|
|
|
|
// if(val == 'Y'){ |
|
|
|
|
|
// this.pdfVisible = true |
|
|
|
|
|
// this.pdfUrl = linkNode.href |
|
|
|
|
|
// }else { |
|
|
|
|
|
document.body.appendChild(linkNode) |
|
|
|
|
|
linkNode.click() // 模拟在按钮上的一次鼠标单击 |
|
|
|
|
|
URL.revokeObjectURL(linkNode.href) // 释放URL 对象 |
|
|
|
|
|
document.body.removeChild(linkNode) |
|
|
|
|
|
// } |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
downloadFile(fileName, data) { |
|
|
|
|
|
if (!data) { |
|
|
|
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
let url = window.URL.createObjectURL(new Blob([data])); |
|
|
|
|
|
let link = document.createElement('a'); |
|
|
|
|
|
link.style.display = 'none'; |
|
|
|
|
|
link.href = url; |
|
|
|
|
|
link.setAttribute('download', fileName); |
|
|
|
|
|
document.body.appendChild(link); |
|
|
|
|
|
link.click(); |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 获取数据列表 |
|
|
|
|
|
getDataList() { |
|
|
|
|
|
this.dataListLoading = true |
|
|
|
|
|
this.$http({ |
|
|
|
|
|
url: this.$http.adornUrl('/sys/oss/list'), |
|
|
|
|
|
method: 'get', |
|
|
|
|
|
params: this.$http.adornParams({ |
|
|
|
|
|
'page': this.pageIndex, |
|
|
|
|
|
'limit': this.pageSize, |
|
|
|
|
|
'fileName': this.dataForm.fileName |
|
|
|
|
|
}) |
|
|
|
|
|
}).then(({data}) => { |
|
|
|
|
|
if (data && data.code === 0) { |
|
|
|
|
|
this.dataList = data.page.list |
|
|
|
|
|
this.totalPage = data.page.totalCount |
|
|
|
|
|
} else { |
|
|
|
|
|
this.dataList = [] |
|
|
|
|
|
this.totalPage = 0 |
|
|
|
|
|
} |
|
|
|
|
|
this.dataListLoading = false |
|
|
|
|
|
}) |
|
|
}, |
|
|
}, |
|
|
components: { |
|
|
|
|
|
Config, |
|
|
|
|
|
Upload |
|
|
|
|
|
|
|
|
// 每页数 |
|
|
|
|
|
sizeChangeHandle(val) { |
|
|
|
|
|
this.pageSize = val |
|
|
|
|
|
this.pageIndex = 1 |
|
|
|
|
|
this.getDataList() |
|
|
}, |
|
|
}, |
|
|
activated () { |
|
|
|
|
|
|
|
|
// 当前页 |
|
|
|
|
|
currentChangeHandle(val) { |
|
|
|
|
|
this.pageIndex = val |
|
|
this.getDataList() |
|
|
this.getDataList() |
|
|
}, |
|
|
}, |
|
|
methods: { |
|
|
|
|
|
downloadFile(fileName, data) { |
|
|
|
|
|
if (!data) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
let url = window.URL.createObjectURL(new Blob([data])); |
|
|
|
|
|
let link = document.createElement('a'); |
|
|
|
|
|
link.style.display = 'none'; |
|
|
|
|
|
link.href = url; |
|
|
|
|
|
link.setAttribute('download', fileName); |
|
|
|
|
|
document.body.appendChild(link); |
|
|
|
|
|
link.click(); |
|
|
|
|
|
}, |
|
|
|
|
|
// 获取数据列表 |
|
|
|
|
|
getDataList () { |
|
|
|
|
|
this.dataListLoading = true |
|
|
|
|
|
|
|
|
// 多选 |
|
|
|
|
|
selectionChangeHandle(val) { |
|
|
|
|
|
this.dataListSelections = val |
|
|
|
|
|
}, |
|
|
|
|
|
// 删除 |
|
|
|
|
|
deleteHandle(id) { |
|
|
|
|
|
var ids = id ? [id] : this.dataListSelections.map(item => { |
|
|
|
|
|
return item.id |
|
|
|
|
|
}) |
|
|
|
|
|
this.$confirm(`确定进行删除操作?`, '提示', { |
|
|
|
|
|
confirmButtonText: '确定', |
|
|
|
|
|
cancelButtonText: '取消', |
|
|
|
|
|
type: 'warning' |
|
|
|
|
|
}).then(() => { |
|
|
this.$http({ |
|
|
this.$http({ |
|
|
url: this.$http.adornUrl('/sys/oss/list'), |
|
|
|
|
|
method: 'get', |
|
|
|
|
|
params: this.$http.adornParams({ |
|
|
|
|
|
'page': this.pageIndex, |
|
|
|
|
|
'limit': this.pageSize |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
url: this.$http.adornUrl('/sys/oss/delete'), |
|
|
|
|
|
method: 'post', |
|
|
|
|
|
data: this.$http.adornData(ids, false) |
|
|
}).then(({data}) => { |
|
|
}).then(({data}) => { |
|
|
if (data && data.code === 0) { |
|
|
if (data && data.code === 0) { |
|
|
this.dataList = data.page.list |
|
|
|
|
|
this.totalPage = data.page.totalCount |
|
|
|
|
|
|
|
|
this.$message({ |
|
|
|
|
|
message: '操作成功', |
|
|
|
|
|
type: 'success', |
|
|
|
|
|
duration: 1500, |
|
|
|
|
|
onClose: () => { |
|
|
|
|
|
this.getDataList() |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
} else { |
|
|
} else { |
|
|
this.dataList = [] |
|
|
|
|
|
this.totalPage = 0 |
|
|
|
|
|
|
|
|
this.$message.error(data.msg) |
|
|
} |
|
|
} |
|
|
this.dataListLoading = false |
|
|
|
|
|
}) |
|
|
}) |
|
|
}, |
|
|
|
|
|
// 每页数 |
|
|
|
|
|
sizeChangeHandle (val) { |
|
|
|
|
|
this.pageSize = val |
|
|
|
|
|
this.pageIndex = 1 |
|
|
|
|
|
this.getDataList() |
|
|
|
|
|
}, |
|
|
|
|
|
// 当前页 |
|
|
|
|
|
currentChangeHandle (val) { |
|
|
|
|
|
this.pageIndex = val |
|
|
|
|
|
this.getDataList() |
|
|
|
|
|
}, |
|
|
|
|
|
// 多选 |
|
|
|
|
|
selectionChangeHandle (val) { |
|
|
|
|
|
this.dataListSelections = val |
|
|
|
|
|
}, |
|
|
|
|
|
// 云存储配置 |
|
|
|
|
|
configHandle () { |
|
|
|
|
|
this.configVisible = true |
|
|
|
|
|
this.$nextTick(() => { |
|
|
|
|
|
this.$refs.config.init() |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
// 上传文件 |
|
|
|
|
|
uploadHandle () { |
|
|
|
|
|
this.uploadVisible = true |
|
|
|
|
|
this.$nextTick(() => { |
|
|
|
|
|
this.$refs.upload.init() |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
// 删除 |
|
|
|
|
|
deleteHandle (id) { |
|
|
|
|
|
var ids = id ? [id] : this.dataListSelections.map(item => { |
|
|
|
|
|
return item.id |
|
|
|
|
|
}) |
|
|
|
|
|
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', { |
|
|
|
|
|
confirmButtonText: '确定', |
|
|
|
|
|
cancelButtonText: '取消', |
|
|
|
|
|
type: 'warning' |
|
|
|
|
|
}).then(() => { |
|
|
|
|
|
this.$http({ |
|
|
|
|
|
url: this.$http.adornUrl('/sys/oss/delete'), |
|
|
|
|
|
method: 'post', |
|
|
|
|
|
data: this.$http.adornData(ids, false) |
|
|
|
|
|
}).then(({data}) => { |
|
|
|
|
|
if (data && data.code === 0) { |
|
|
|
|
|
this.$message({ |
|
|
|
|
|
message: '操作成功', |
|
|
|
|
|
type: 'success', |
|
|
|
|
|
duration: 1500, |
|
|
|
|
|
onClose: () => { |
|
|
|
|
|
this.getDataList() |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
} else { |
|
|
|
|
|
this.$message.error(data.msg) |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
}).catch(() => {}) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
}).catch(() => { |
|
|
|
|
|
}) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
</script> |
|
|
</script> |