You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

203 lines
4.6 KiB

// pages/classdetail/classdetail.js
const AV = require("../../lib/av-live-query-weapp-min")
const File = require("../../model/file")
const Class = require("../../model/class")
const { jsonify } = require('../../utils/leancloudutils');
Page({
/**
* 页面的初始数据
*/
class: null,
pic_urls: [],
data: {
files:[]
},
preview_pic:function(event){
wx.showLoading({
title: '加载中',
})
fileid = event.currentTarget.dataset.fileid;
wx.previewImage({
urls: this.pic_urls,
current: fileid,
complete:wx.hideLoading
})
},
del_file: function(event){
},
download: function(event){
console.log(event);
fileid = event.currentTarget.dataset.fileid;
wx.showLoading({
title: '下载中',
})
wx.cloud.downloadFile({
fileID: fileid,
success: res => {
// 返回临时文件路径
console.log(res.tempFilePath);
wx.openDocument({
filePath: res.tempFilePath,
success: function (res) {
console.log('打开文档成功')
},
fail:console.error,
complete:wx.hideLoading
})
// wx.saveFile({
// tempFilePath: res.tempFilePath,
// success(res) {
// const savedFilePath = res.savedFilePath;
// console.log(savedFilePath);
// }
// })
},
fail: console.error
})
},
upload: function(event){
console.log(event)
pull_files = this.pull_files.bind(this);
class_ = this.class;
wx.showToast({
title: '请选择聊天文件',
icon:"none"
})
wx.chooseMessageFile({
count: 1,
success(res){
const tempFile = res.tempFiles[0];
const filename = tempFile.name;
const filepath = tempFile.path;
const cloudpath = tempFile.time+"/" + filename;
console.log(res);
wx.showLoading({
title: '上传中',
})
wx.cloud.uploadFile({
cloudPath: cloudpath,
filePath: filepath,
success: res => {
// 返回文件 ID
fileid = res.fileID;
file = new File({
filename: filename,
class: class_,
uploader: AV.User.current(),
fileid: fileid
}).save().then(()=>{
wx.hideLoading();
pull_files();
wx.showToast({
title: '上传成功',
})
},
()=>{
wx.hideLoading();
wx.showToast({
title: "上传失败",
icon: "none"
})
}).catch(console.error);
console.log(res.fileID);
},
fail: error=>{
console.error(error);
wx.hideLoading();
wx.showToast({
title: '上传失败',
icon:"none"
})
}
})
}
})
},
pull_files:function(){
query = new AV.Query("File_");
query.equalTo("class", this.class);
query.include("uploader");
query.find().then(this.set_files);
},
set_files: function(files){
files = files.map(file=>{
uploader = file.get("uploader");
file.set("uploader_name", uploader.get("name"));
file.set("uploader_username", uploader.get("username"));
filename = file.get("filename");
if(filename.endsWith(".png") || filename.endsWith(".jpg")){
file.set("ispic", true);
this.pic_urls.push(file.get("fileid"));
console.log(this.pic_urls);
}else{
file.set("ispic", false);
}
return file;
})
this.setData(jsonify({files}));
console.log(this.data);
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
class_id = options.class_id;
this.class = AV.Object.createWithoutData("Class_", class_id);
this.pull_files();
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.pull_files();
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})