在图片地址这新增下载按钮点击可以直接下载,在删除链接这新增删除按钮点击可以直接删除这一行的数据,最后 将表格宽度调整为屏幕的80%并居中
时间: 2024-11-22 16:35:04 浏览: 16
为了实现您要求的功能,需要在现有的代码基础上做以下改动:
### 增加下载按钮和删除按钮
1. **下载按钮**:在图片地址列增加一个按钮,点击可以触发浏览器下载文件的操作。
2. **删除按钮**:在删除链接列增加一个按钮,点击后可以从 `imageList` 中移除对应的记录,并更新表格数据。
### 调整表格宽度
将表格的宽度设置为屏幕的80%,并使其水平居中显示。
### 修改后的代码示例
#### 模板部分
```html
<template>
<div>
<a-upload drag multiple :customRequest="handleUpload" :fileList="fileList" :showUploadList="false" @change="handleChange">
<div>
<a-icon type="inbox" style="font-size: 64px; color: #999;" />
<p class="ant-upload-hint">点击或拖拽文件到这里进行上传</p>
</div>
</a-upload>
<!-- 图片列表表格 -->
<a-table :columns="columns" :dataSource="imageList" rowKey="id" :style="{ width: '80%', margin: '0 auto' }">
<template slot="customThumb" slot-scope="text, record">
<img style="width: 80px; height: 80px; border-radius: 5px" :src="record.thumb" @click="showImage(record.url)" />
</template>
<template slot="url" slot-scope="text, record">
<a :href="record.url" download>{{ text }}</a>
<a-button type="primary" size="small" @click="downloadImage(record.url)">下载</a-button>
</template>
<template slot="del" slot-scope="text, record">
<a-popconfirm title="确定要删除吗?" ok-text="是" cancel-text="否" @confirm="deleteImage(record)">
<a-button type="danger" size="small">删除</a-button>
</a-popconfirm>
</template>
</a-table>
<a-modal :bodyStyle="{ width: '520px', height: '450px', display: 'flex', justifyContent: 'center', alignItems: 'center' }" v-model="visible" :footer="null" :centered="true">
<img alt="example" :src="selectedImageUrl" style="max-width: 100%; max-height: 100%; border-radius: 5px; object-fit: contain;" />
</a-modal>
</div>
</template>
```
#### 脚本部分
```javascript
<script>
export default {
data() {
return {
loading: false,
fileList: [],
imageList: [],
columns: [
{ title: '图片id', dataIndex: 'id', key: 'id' },
{
title: '图片地址',
dataIndex: 'url',
key: 'url',
scopedSlots: { customRender: 'url' }
},
{
title: '缩略图',
dataIndex: 'thumb',
key: 'thumb',
scopedSlots: { customRender: 'customThumb' }
},
{ title: '源文件名', dataIndex: 'srcName', key: 'srcName' },
{
title: '删除链接',
dataIndex: 'del',
key: 'del',
scopedSlots: { customRender: 'del' }
},
],
visible: false,
selectedImageUrl: '',
name: ''
};
},
methods: {
async handleUpload({ file }) {
this.loading = true;
const formData = new FormData();
formData.append('image', file);
formData.append('token', '0ace6f265f2dd2cb1f97ac412c4ddc3e');
try {
const response = await fetch(`${process.env.VUE_APP_API_URL}/api/index.php`, {
method: 'POST',
body: formData,
});
const result = await response.json();
if (result.code === 200) {
this.imageList.push({
id: result.id,
srcName: result.srcName,
url: result.url,
thumb: result.thumb,
del: result.del,
});
} else {
console.error('上传失败', result.message);
}
} catch (error) {
console.error('请求错误', error);
} finally {
this.loading = false; // 结束加载
}
},
handleChange(info) {
this.fileList = info.fileList;
},
showImage(url) {
this.selectedImageUrl = url;
this.visible = true;
},
downloadImage(url) {
window.open(url, '_blank');
},
deleteImage(record) {
this.imageList = this.imageList.filter(item => item.id !== record.id);
}
},
};
</script>
```
### 样式部分
已将表格宽度设置为屏幕的80%,并在父容器内水平居中。
```css
<style scoped>
.ant-upload-hint {
margin-top: 8px;
}
</style>
```
通过以上修改,您可以实现在图片地址处添加下载按钮、在删除链接处添加删除按钮,并且表格将会居中显示,宽度为屏幕的80%。
阅读全文