252 lines
6.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="filePage">
<view class="searchBox">
<u-icon name="search" color="#999"></u-icon>
<input class="uni-input" name="searchName" v-model="searchName"
placeholder="请搜索文件名称"/>
</view>
<view style="border-top: 1rpx solid #ddd" v-if="filterList.length>0">
<view class="fileItem" v-for="(item,index) in filterList" :key="index">
<view class="left">
<image class="fileIcon" mode="heightFix" src="@/static/images.png"></image>
<view class="cont">
<view class="name">
{{ item.fileUrl }}
</view>
<view class="date">
{{ item.createTime }}
</view>
</view>
</view>
<image @click="downloadFn(item)" class="ellipsis" mode="widthFix" src="@/static/ellipsis.png"></image>
</view>
</view>
<view class="placeholderBox" v-else>
<image src="@/static/noData.png" class="noDataImg"></image>
<view class="text">
暂无数据
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
searchName: '',
fileList: [],
timer: null,
};
},
computed: {
filterList() {
return this.fileList.filter(item => {
return item.fileUrl.indexOf(this.searchName) >= 0;
})
}
},
mounted() {
this.loadData()
},
methods: {
formSubmit(e) {
// console.log(e)
this.loadData()
},
searchFile(e) {
this.searchName = e.detail.value
},
loadData() {
var _this = this
this.sendRequest({
url: "xmgl/xzSupplierQualification/page",
isalert: true,
data: {
userId: uni.getStorageSync("userInfoObj").userId,
pageNo: 1,
pageSize: 100
},
method: "POST",
success(res) {
console.log('文件数据', res);
_this.fileList = res.result.records;
}
})
},
downloadFn(item) {
var that = this
let fileType = "mp3"
console.log(item);
uni.showModal({
title: '提示',
content: item.fileUrl,
confirmText: '下载',
success: function (res) {
if (res.confirm) {
//#ifdef APP-PLUS
plus.runtime.openURL(that.url_config + 'image/' + item.fileUrl);
//#endif
return;
uni.downloadFile({
url: that.url_config + 'image/' + item.fileUrl, //仅为示例,并非真实的资源
success: (res) => {
console.log(res)
if (res.statusCode === 200) {
// uni.showToast({
// title:'下载成功'
// })
var filePath = res.tempFilePath;
uni.openDocument({
filePath: filePath,
fileType: "mp3",
success: function (res) {
console.log(res);
console.log('打开文档成功');
uni.showToast({
title: '打开文档成功'
})
}
});
console.log(filePath);
if (!filePath) return
uni.saveFile({ //使用该功能,以将临时文件保存在手机中可长久存储的区域
tempFilePath: filePath,
success: (saveResult) => {
// 在保存文件成功后,使用 uni.openDocument 方法打开文件
console.log("文件保存成功:", saveResult)
uni.openDocument({
filePath: saveResult
.savedFilePath,
// fileType: fileType, //这里把预先限定好的文件类型传来
success: function () {
console.log(
"文件打开成功!");
//至此手机会从app中跳转到文件预览界面
//之后可从预览界面返回app中
},
fail: function (err) {
console.log('打开失败',
err);
},
});
},
fail: function (err) {
console.log('保存文件失败', err);
},
});
// uni.openDocument({
// filePath: filePath,
// success: function(res) {
// console.log(res);
// console.log('打开文档成功');
// uni.showToast({
// title: '打开文档成功'
// })
// }
// });
} else {
uni.showToast({
title: '下载失败',
icon: "none"
})
}
}
});
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
}
</script>
<style lang="scss" scoped>
.filePage {
background-color: white;
}
.searchBox {
padding: 15rpx 20rpx;
display: flex;
background-color: #f2f2f2;
border-radius: 15rpx;
margin: 20rpx;
}
.uni-input {
border-radius: 30rpx;
padding: 10rpx 20rpx;
font-size: 28rpx;
line-height: 1;
width: 65%;
}
.fileItem {
font-size: 30rpx;
display: flex;
align-items: center;
justify-content: space-between;
padding: 20rpx;
color: $uni-text-color;
border-bottom: 1px solid #ddd;
.left {
display: flex;
align-items: center;
overflow: hidden;
flex: 1;
}
.fileIcon {
width: auto;
height: 70rpx;
margin-right: 20rpx;
}
.cont {
display: flex;
flex: 1;
flex-direction: column;
justify-content: space-between;
overflow: hidden;
margin-right: 15rpx;
.name {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.ellipsis {
width: 40rpx;
height: auto;
}
}
.uni-form-item {
position: relative;
.search-icon {
position: absolute;
top: 50%;
right: 50rpx;
transform: translateY(-50%);
}
}
.mini-btn {
position: absolute;
right: 6px;
top: 0px;
border-radius: 30rpx;
height: 60rpx;
line-height: 60rpx;
}
</style>