|
|
@@ -1,21 +1,8 @@
|
|
|
<template>
|
|
|
<div class="upload-file">
|
|
|
- <el-upload
|
|
|
- multiple
|
|
|
- :action="uploadFileUrl"
|
|
|
- :before-upload="handleBeforeUpload"
|
|
|
- :file-list="fileList"
|
|
|
- :data="data"
|
|
|
- :limit="limit"
|
|
|
- :on-error="handleUploadError"
|
|
|
- :on-exceed="handleExceed"
|
|
|
- :on-success="handleUploadSuccess"
|
|
|
- :show-file-list="false"
|
|
|
- :headers="headers"
|
|
|
- class="upload-file-uploader"
|
|
|
- ref="fileUpload"
|
|
|
- v-if="!disabled"
|
|
|
- >
|
|
|
+ <el-upload multiple :action="uploadFileUrl" :before-upload="handleBeforeUpload" :file-list="fileList" :data="data"
|
|
|
+ :limit="limit" :on-error="handleUploadError" :on-exceed="handleExceed" :on-success="handleUploadSuccess"
|
|
|
+ :show-file-list="false" :headers="headers" class="upload-file-uploader" ref="fileUpload" v-if="!disabled">
|
|
|
<!-- 上传按钮 -->
|
|
|
<el-button type="primary">选取文件</el-button>
|
|
|
</el-upload>
|
|
|
@@ -27,7 +14,8 @@
|
|
|
的文件
|
|
|
</div>
|
|
|
<!-- 文件列表 -->
|
|
|
- <transition-group ref="uploadFileList" class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
|
|
|
+ <transition-group ref="uploadFileList" class="upload-file-list el-upload-list el-upload-list--text"
|
|
|
+ name="el-fade-in-linear" tag="ul">
|
|
|
<li :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
|
|
|
<el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
|
|
|
<span class="el-icon-document"> {{ getFileName(file.name) }} </span>
|
|
|
@@ -49,7 +37,7 @@ const props = defineProps({
|
|
|
// 上传接口地址
|
|
|
action: {
|
|
|
type: String,
|
|
|
- default: "/common/upload"
|
|
|
+ default: "/file/upload"
|
|
|
},
|
|
|
// 上传携带的参数
|
|
|
data: {
|
|
|
@@ -106,8 +94,8 @@ watch(() => props.modelValue, val => {
|
|
|
const list = Array.isArray(val) ? val : props.modelValue.split(',')
|
|
|
// 然后将数组转为对象数组
|
|
|
fileList.value = list.map(item => {
|
|
|
- if (typeof item === "string") {
|
|
|
- item = { name: item, url: item }
|
|
|
+ if (typeof item.url === "string") {
|
|
|
+ item = { name: item.name, url: item.url }
|
|
|
}
|
|
|
item.uid = item.uid || new Date().getTime() + temp++
|
|
|
return item
|
|
|
@@ -116,7 +104,7 @@ watch(() => props.modelValue, val => {
|
|
|
fileList.value = []
|
|
|
return []
|
|
|
}
|
|
|
-},{ deep: true, immediate: true })
|
|
|
+}, { deep: true, immediate: true })
|
|
|
|
|
|
// 上传前校检格式和大小
|
|
|
function handleBeforeUpload(file) {
|
|
|
@@ -162,7 +150,7 @@ function handleUploadError(err) {
|
|
|
// 上传成功回调
|
|
|
function handleUploadSuccess(res, file) {
|
|
|
if (res.code === 200) {
|
|
|
- uploadList.value.push({ name: res.fileName, url: res.fileName })
|
|
|
+ uploadList.value.push({ name: res.data.name, url: '/file/' + res.data.id })
|
|
|
uploadedSuccessfully()
|
|
|
} else {
|
|
|
number.value--
|
|
|
@@ -234,9 +222,11 @@ onMounted(() => {
|
|
|
opacity: 0.5;
|
|
|
background: #c8ebfb;
|
|
|
}
|
|
|
+
|
|
|
.upload-file-uploader {
|
|
|
margin-bottom: 5px;
|
|
|
}
|
|
|
+
|
|
|
.upload-file-list .el-upload-list__item {
|
|
|
border: 1px solid #e4e7ed;
|
|
|
line-height: 2;
|
|
|
@@ -244,12 +234,14 @@ onMounted(() => {
|
|
|
position: relative;
|
|
|
transition: none !important;
|
|
|
}
|
|
|
+
|
|
|
.upload-file-list .ele-upload-list__item-content {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
color: inherit;
|
|
|
}
|
|
|
+
|
|
|
.ele-upload-list__item-content-action .el-link {
|
|
|
margin-right: 10px;
|
|
|
}
|