项目场景:
table按照要求特定的数据变成按钮可以点击
解决方案:
<el-table-column prop="mlname" label="名称" align="center" width="180"> <template slot-scope="scope"> <el-button v-if="scope.row.filecode === '1'" type="text" @click="handleClick(scope.row)"> {{ scope.row.mlname }} </el-button> <span v-else>{{ scope.row.mlname }}</span> </template> </el-table-column>
.el-button--text { color: #409EFF; /* 链接色 */ padding: 0; font-size: inherit; } css样式给按钮添加蓝色链接色
使用
template标签获取每一行数据将按钮放入标签内通过if判断数据是否变为按钮展示,当满足条件时获取点击行的数据scope.row传到方法中
javascript
async selectFilepatch(id) {
const fileResponse = await url.getFilePatch(id);
try {
// console.log('Selected file ID:', id);
const { filepath, filename } = fileResponse.data[0];
let filepathPDF = '';
let filenamePDF = '';
if(filename.substr(filename.lastIndexOf('.')+1) == 'pdf' || filename.substr(filename.lastIndexOf('.') + 1) == 'PDF'){
filepathPDF = filepath.substr(0,filepath.lastIndexOf('.')) + '.pdf';
filenamePDF = filename.substr(0,filename.lastIndexOf('.')) + '.pdf';
}else {
filepathPDF = filepath.substr(0,filepath.lastIndexOf('.')) + '-pdf' + '.pdf';
filenamePDF = filename.substr(0,filename.lastIndexOf('.')) + '-pdf' + '.pdf';
}
let url = null;
crudScInstitution.downloadAnnex(filepathPDF,filenamePDF).then(res => {
url = window.URL.createObjectURL(new Blob([res],{type: 'application/pdf'}));
this.pdfUrl = encodeURI(url)+"#toolbar=0";
this.urlVisible = true;
})
} catch (error) {
this.$message.error(`文件处理失败: 该路径下未查询到文档!`);
// 可选:重试逻辑或错误上报
}
},
将所选行的id传到后端,后端从数据库查询到文档所在路径返回到前端,前端调用这些工具实现查看文档,我这个只支持查看pdf文档