filesbox/miniprogram/FilesBox/components/file/files-component/files-component.js
2023-09-21 10:23:31 +08:00

2407 lines
83 KiB
JavaScript

// packageB/pages/files/files-component/files-component.js
import {
imageUrl
} from '../../../utils/image';
import {
req,
} from '../../../utils/service';
import {
URL
} from '../../../utils/config';
import {
timeFormat,twoWayBinding,genUuid,renderSize,
} from '../../../utils/util';
import {
choseFiles,
choseImageConfirm,
choseVideoConfirm,
uploadLargeFile,
choseFilesConfirm
} from '../../../utils/uploadFile';
import {
fileTypeActions,
filterTypeActions,
showFileTypeSheet,
showFilterTypeSheet,
catalogue,
modalFuns,
panelBar,
sharePanel,
initIconPath,
addArr
} from './config';
import {sortFieldList,sortTypeList} from '../../tabNav/config';
const {globalData} = getApp();
const DOMAIN = wx.getStorageSync('DOMAIN')
Component({
/**
* 组件的属性列表
*/
properties: {
scrollViewTopHeight: {
type: Number,
value: 0
},
sourceID:{
type: Number,
value: 0
},
catalogue:{
type:Array,
value:[],
observer:function(n,o){
if(n!=o){
let PAGES = getCurrentPages(),currentPage;
currentPage = PAGES[PAGES.length - 1];
if(!currentPage||currentPage.route=='pages/accountLogin/accountLogin'){
// this.getDiskList();
}
}
}
},
rootCatalogue:{
type:Array,
value:[]
},
showCatalogue:{
type:Boolean,
value:true
},
showCate:{
type:Boolean,
value:true
},
showSwitch:{
type:Boolean,
value:false
},
showRecyle:{
type:Boolean,
value:false
},
uploadProgress:0,
},
/**
* 组件的初始数据
*/
data: {
statusBarHeight:globalData.systemInfo.statusBarHeight,
systemInfo:globalData.systemInfo,
lang:globalData.lang,
imageUrl,
fileTypeActions,
filterTypeActions,
sharePanel,
currentPage: 1,
fileTypeIndex: 0,
filterTypeIndex: 1,
// sourceID: 60182, //父文件夹id, 最外层传0
keyword: '', //搜索关键字
fileType:'',
timeFrom:'',
timeTo:'',
maxSize:'',
minSize:'',
userID:'',
loadingState: 1,
dataList: [],
catalogue,
showSearch: false, //是否显示筛选
uploadProgress: 0,
showModal: false,
directoryName: '',
isEdit: false,
modalFunIndex: 0,
modalFuns,
panelBar,
renameType: 0, //0文件夹 1 文件
renameData: '', //重命名的文件,或文件夹
showMoveFile: false, //是否显示移动文件
newFileName: '',
addArr,
isAddShow:true,
sortField:'name',
sortType:'asc',
sortFieldList,
sortTypeList,
sortFieldIndex:0,
sortTypeIndex:0,
},
lifetimes: {
attached() {
let { windowHeight, windowWidth, statusBarHeight, safeArea } = wx.getSystemInfoSync();
let height = windowHeight - statusBarHeight - 64 - (windowWidth/750*100) - (windowHeight-safeArea.bottom)
this.setData({
rate: windowWidth / 750,
top:statusBarHeight+54,
height,
width:windowWidth-20,
y:height-65,
x:windowWidth-20-50
})
let {showCatalogue,showCate,systemInfo} = this.data,scrollHeight
if(showCatalogue){
if(showCate){
scrollHeight = systemInfo.windowHeight - statusBarHeight - 204//自定义tabbar需要-50
}else{
scrollHeight = systemInfo.windowHeight - statusBarHeight - 84
}
}else{
scrollHeight = systemInfo.windowHeight - statusBarHeight - 44
}
let PAGES = getCurrentPages();
this.currentPage = PAGES[PAGES.length - 1];
this.setData({
DOMAIN:wx.getStorageSync('DOMAIN'),
role:wx.getStorageSync('options').role,
lang:globalData.lang,
scrollHeight
})
}
},
/**
* 组件的方法列表
*/
methods: {
initIconPath(suffix) {
let {
fileIcons
} = imageUrl;
const isVideo = /mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv/,
isAudio = /avi|wmv|mpg|mpeg|mov|rm|ram|swf|flv|mp4|mp3|wma|avi|rm|rmvb|flv|mpg|mkv/,
isImage = /jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg/,
isFile = /pptx|ppt|xlsx|xls|doc|docx|pdf|wps/,
isDocx = /doc|docx/,
isPptx = /ppt|pptx/,
isXlsx = /xlsx|xls/,
isPdf = /pdf/;
if (isDocx.test(suffix)) return `${fileIcons}doc.png`;
if (suffix == 'fbx') return `${fileIcons}fbx.png`;
if (suffix == 'folder') return `${fileIcons}folder.png`;
if (isAudio.test(suffix)) return `${fileIcons}music.png`;
if (isPptx.test(suffix)) return `${fileIcons}pptx.png`;
if (isXlsx.test(suffix)) return `${fileIcons}xlsx.png`;
if (isPdf.test(suffix)) return `${fileIcons}pdf.png`;
return imageUrl.fileDefault
},
switchList(){
this.setData({isList:!this.data.isList})
},
onSearch(param){
this.setData({
keyword:param,
currentPage:1
})
this.getDiskList()
},
onFilter(param){
this.setData({
searchFilter:param,
catalogue:param.catalogue,
})
this.getDiskList()
},
showSlide(e){
this.triggerEvent('onSlideShow',{slideShow:!this.data.slideShow})
},
setVersionReturn(){
this.getDiskList()
},
getDiskList(reachBottom = false){
// wx.showLoading({
// title: '加载中...',
// })
if (!reachBottom) this.setData({
currentPage: 1
})
let sourceID = this.properties.sourceID,{catalogue,dataList,searchFilter,DOMAIN}= this.data
let param = {
sourceID:searchFilter?searchFilter.sourceID:sourceID,
currentPage:this.data.currentPage,
pageSize:500,
keyword:this.data.keyword,
fileType:searchFilter?(searchFilter.filesType?searchFilter.filesType:''):'',
timeFrom:searchFilter?(searchFilter.timeFrom?searchFilter.timeFrom:''):'',
timeTo:searchFilter?(searchFilter.timeTo?searchFilter.timeTo:''):'',
maxSize:searchFilter?(searchFilter.maxSize?searchFilter.maxSize:''):'',
minSize:searchFilter?(searchFilter.minSize?searchFilter.minSize:''):'',
userID:searchFilter?(searchFilter.userID?searchFilter.userID:''):''
}
if(sourceID==0){
if(catalogue[0]){
if(catalogue[0].type=='fav'){
param.block = 'fav'
}else if(catalogue[0].type=='files'&&catalogue.length==1){
param.block = 'files'
reachBottom = false
}else if(catalogue[0].type=='recentDoc'){
param.block = 'userRencent'
}else if(catalogue[0].type=='photo'||catalogue[0].type=='image'){
param.fileType = 'jpg,jpeg,png,gif,bmp,ico,svg,webp,tif,tiff,cdr,svgz,xbm,eps,pjepg,heic,raw,psd,ai'
}else if(catalogue[0].type=='doc'||catalogue[0].type=='music'||catalogue[0].type=='movie'||catalogue[0].type=='zip'||catalogue[0].type=='other'){
param.fileType = catalogue[0].fileType
}else if(catalogue[0].type=='recycle'){
param.block = 'recycle'
}else if(catalogue[0].type=='shareLink'){
param.isShare = 1
}else if(catalogue[0].type=='fileTag'){
if(catalogue.length>1){
param.tagID = catalogue[1].labelId
}else{
if(catalogue[0].labelId){
param.tagID = catalogue[0].labelId
}else{
param.block = 'fileTag'
}
}
}
}
}
if(this.data.sortField){
param.sortField = this.data.sortField
}
if(this.data.sortType){
param.sortType = this.data.sortType
}
let url = URL.getDiskList
if(catalogue[0].type=='shareLink'&&catalogue.length==1){
url = URL.getShareList
this.setData({
isLinkShare:true
})
}else if(catalogue[0].type=='shareToMe'){
url = URL.getShareList
param.isShareTo = 1
}else if(catalogue[0].type=='shareTo'){
url = URL.shareToMeList
param.isSharetoMe = 1
}else if(catalogue[0].type=='files'){
if(catalogue.length==2&&catalogue[1].label=='我的分享'){
url = URL.getShareList
param.block = ''
param.isShare = 1
}
}
if(this.data.repeatSourceID){
param.sourceID = 0
param.fileType = 'all'
param.repeatSourceID = this.data.repeatSourceID
}
if(this.data.repeatName){
param.repeatName = this.data.repeatName
}
req("GET",url, param, {}).then(data => {
// wx.hideLoading()
if(param.block=='fav'){
data.folderList.map(c => {
if(c.createTime )c.createTime = timeFormat('yyyy/MM/dd hh:mm:ss',c.createTime*1000);
if(c.modifyTime)c.modifyTime = timeFormat('yyyy/MM/dd hh:mm:ss',c.modifyTime*1000);
c.gmtCreate = c.createTime?c.createTime:c.modifyTime
c.fileSize = renderSize(c.size);
c.checked = false;
if(c.createUserJson)c.createUserJson = JSON.parse(c.createUserJson)
if(c.modifyUserJson)c.modifyUserJson = JSON.parse(c.modifyUserJson)
if (/jpeg|jpg|gif|png|webp|jfif|bmp|dpg/.test(c.fileType)) c.thumb = c.path
if (c.thumb) {
c.thumb = /http|https/.test(c.thumb) ? c.thumb : DOMAIN + c.thumb;
let index = c.thumb.lastIndexOf('.');
if (/jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg/.test(c.fileType)) c.thumb = `${c.thumb.substring(0,index)}${c.thumb.substring(index,c.thumb.length)}&nameSuffix=small`
} else {
if(c.icon=='folder'){
c.thumb = '/images/rootIcon/folder.png'
}else{
c.thumb = initIconPath(c.fileType);
}
}
})
data.fileList = data.folderList
data.folderList = []
this.setData({
favList:true
})
}else{
if(param.block=='files'&&catalogue.length==1){
let arr = [
{
name:'我的分享',
icon: "shareLink",
}
]
data.folderList.map(c=>{
if(c.icon=='box'){
arr.push(c)
}
})
data.folderList = arr
// data.folderList.splice(0,1)
}
data.fileList.map((c,i) => {
if(c.oexeContent)c.oexeContent = JSON.parse(c.oexeContent)
if(c.fileType=='oexe'&&c.oexeContent&&c.oexeContent.type=='lnk'){
if(c.oexeContent.icon&&c.oexeContent.icon=='colorPicker'){
c.fileType = c.oexeContent.icon
c.oexeContent.name = '桌面取色'
}else if(c.oexeContent.icon&&c.oexeContent.icon=='videoRecording'){
c.fileType = c.oexeContent.icon
c.oexeContent.name = '视频录制'
}else{
c.fileType = c.oexeContent.fileType
}
c.name = c.oexeContent.name
if(c.oexeIsFolder==1){
// data.fileList.splice(i,1)
data.folderList.push(c)
return
}
}
if(c.fileType=='oexe'&&c.oexeContent&&c.oexeContent.type=='url'){
c.fileType = c.oexeContent.type
c.name = c.name.split('.')[0]
}
if(c.createTime )c.createTime = timeFormat('yyyy/MM/dd hh:mm:ss',c.createTime*1000);
if(c.modifyTime)c.modifyTime = timeFormat('yyyy/MM/dd hh:mm:ss',c.modifyTime*1000);
c.gmtCreate = c.createTime?c.createTime:c.modifyTime
c.fileSize = renderSize(c.size);
c.checked = false;
if(this.data.newFileCheckedId&&c.sourceID==this.data.newFileCheckedId){
c.checked = true
}
if(c.createUserJson)c.createUserJson = JSON.parse(c.createUserJson)
if(c.modifyUserJson)c.modifyUserJson = JSON.parse(c.modifyUserJson)
let isVideo = /mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|vob/,
isImage = /jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg|cr2|dng|erf|raf|kdc|mrw|nrw|nef|orf|rw2|pef|srf|dcr|arw/
if (/jpeg|jpg|gif|png|webp|jfif|bmp|dpg/.test(c.fileType)) c.thumb = c.path
if (c.thumb&&(isImage.test(c.fileType)||isVideo.test(c.fileType))) {
c.thumb = /http|https/.test(c.thumb) ? c.thumb : DOMAIN + c.thumb;
let index = c.thumb.lastIndexOf('.');
if (isImage.test(c.fileType)) c.thumb = `${c.thumb.substring(0,index)}${c.thumb.substring(index,c.thumb.length)}&nameSuffix=small`;
} else {
c.thumb = initIconPath(c.fileType);
}
})
data.folderList.map((c,index) => {
if(c.icon=='info'){
data.folderList.splice(index,1)
}
if(c.createTime )c.createTime = timeFormat('yyyy/MM/dd hh:mm:ss',c.createTime*1000);
if(c.modifyTime)c.modifyTime = timeFormat('yyyy/MM/dd hh:mm:ss',c.modifyTime*1000);
c.gmtCreate = c.createTime?c.createTime:c.modifyTime
if(!data.current)c.thumb = '/images/rootIcon/folder.png'
if(data.current&&param.block=='files') c.thumb = '/images/rootIcon/folder.png'
c.fileSize = renderSize(c.size);
if(c.createUserJson)c.createUserJson = JSON.parse(c.createUserJson)
if(c.modifyUserJson)c.modifyUserJson = JSON.parse(c.modifyUserJson)
c.checked = false;
})
}
if (reachBottom) {
let {
folderList,
fileList
} = dataList;
folderList = [...folderList, ...data.folderList];
fileList = [...fileList, ...data.fileList];
dataList = {
folderList,
fileList
}
} else {
dataList = data;
}
// console.log(dataList)
this.setData({
dataList:dataList,
loadingState: 0,
filesSum:data.total,
repeatSourceID:0,
repeatName:''
})
if(this.data.loadingState==0){
wx.hideLoading()
}
}, err => {
console.log(err);
});
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
if (this.data.timer) clearInterval(this.data.timer)
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.setData({
currentPage:1,
})
this.cancelEdit()
this.getDiskList()
},
//回收站显示更多
showMoreRecyle(){
this.triggerEvent('showMoreRecyle')
},
// 子页面组件事件
onCatalogueChange: function (e) {
let {
catalogue,
sourceID,
labelId,
type,
targetType,
auth
} = e.detail
let {isEdit,role} = this.data,addAuth = role['explorer.add'];
if(targetType==2){
if(auth.indexOf("9") == -1){
addAuth = false
}else{
addAuth = true
}
}
this.setData({
catalogue,
sourceID,
currentPage: 1,
block:type,
labelId,
searchFilter:'',
isEdit:false,
keyword:'',
noSelectAll:false,
moreFav:false,
DOMAIN:wx.getStorageSync('DOMAIN'),
addAuth,
loadingState:1
})
this.triggerEvent('onSetSearchFilter',{sourceID,catalogue})
this.getDiskList()
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
this.setData({
currentPage: this.data.currentPage + 1
})
this.getDiskList(true)
},
//选择排序方式
choseSortField(e){
let {index,item} = e.currentTarget.dataset
this.setData({
sortFieldIndex:index,
sortField:item.field
})
this.showSortList()
this.getDiskList()
},
// choseSortField(param){
// this.setData({
// sortField:param
// })
// this.getDiskList()
// },
//选择排序顺序
choseSortType(e){
let {index,item} = e.currentTarget.dataset
this.setData({
sortTypeIndex:index,
sortType:item.type
})
this.showSortList()
this.getDiskList()
},
// choseSortType(param){
// this.setData({
// sortType:param
// })
// this.getDiskList()
// },
// 关闭筛选模态框
onClickHide() {
this.setData({
showFilterTypeModal: false,
showFileTypeModal: false
})
},
//选择筛选类型
choseType(e) {
let {type} = e.currentTarget.dataset
this.setData({
isTile: type==0?false:true
})
},
//筛选框显示
showSortList(){
this.setData({sortListShow:!this.data.sortListShow})
},
// 选择根目录
choseCatelogue(e) {
let {
index
} = e.currentTarget.dataset, {
catalogue
} = this.data;
if (index == catalogue.length - 1) return;
catalogue = catalogue.splice(0, index + 1);
this.setData({
sourceID: catalogue[index].sourceID,
catalogue,
currentPage: 1,
searchFilter:'',
isEdit:false,
noSelectAll:false,
})
this.triggerEvent('onSetSearchFilter',{sourceID:catalogue[index].sourceID,catalogue})
this.getDiskList();
},
// 折叠搜索
foldSearch() {
let {
showSearch
} = this.data;
this.setData({
showSearch: !showSearch
})
if (showSearch) {
this.setData({
currentPage: 1
})
this.getDiskList();
}
},
// 输入内容
inputSearchWord(e) {
this.setData({
keyword: e.detail
})
},
// 搜索
onSearchBegin(e) {
this.setData({
currentPage: 1
})
this.getDiskList();
},
// 点击按钮
showActionSheet() {
this.setData({
addShow:true
})
},
closeAddBox(){
this.setData({
addShow:false
})
},
closeClipboard(){
this.setData({
clipboardShow: false
})
},
clipboardTextInput(e){
let reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g,{value} = e.detail,{isWeburl} = this.data;
if(reg.test(value)){
isWeburl = true
}else{
isWeburl = false
}
this.setData({
clipboardText:value,
isWeburl
})
},
addFiles(e){
let {index} = e.currentTarget.dataset
let {
sourceID
} = this.data;
this.closeAddBox()
switch (index) {
case 0:
this.choseFiles('video', sourceID,'cloud');
break;
case 1:
this.choseFiles('image', sourceID,'cloud');
break;
case 2:
this.choseFiles('fiels', sourceID,'cloud');
break;
case 3:
let clipboardText,that = this,reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g;
this.setData({
clipboardShow: true,
})
wx.getClipboardData({
success(res) {
clipboardText = res.data
that.setData({
clipboardText,
clipboardShow: true,
isWeburl:reg.test(clipboardText)?true:false
})
},fail(err){
console.log(err)
}
})
break;
case 4:
this.setData({
modalFunIndex: 0
})
this.foldModal();
break;
default:
break;
}
},
saveClipboard(e){
let {type} = e.currentTarget.dataset,{clipboardText} = this.data,content,param,regu =/^[ ]+$/
console.log(clipboardText,regu)
if(!clipboardText||regu.test(clipboardText)){
wx.showToast({
title: '内容不能为空',
icon:'none'
})
return
}
if(type==1){
content = {
type:'url',
value:clipboardText,
width:'80%',
height:'70%',
}
param = {
sourceID:this.data.sourceID,
operation:'mkfile',
content: JSON.stringify(content),
name:'新建网址.oexe'
}
}else{
param = {
sourceID:this.data.sourceID,
operation:'mkfile',
content: clipboardText,
name:'新建文件.txt'
}
}
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.hideLoading()
this.setData({
currentPage:1,
clipboardShow:false,
newFileCheckedId:data.source.sourceID
})
wx.showToast({
title: '保存成功',
})
let that = this
setTimeout(function(){
that.getDiskList()
},500)
}).catch(err => {
console.log(err)
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
createNewFolder: function () {
this.setData({
modalFunIndex: 0
})
this.foldModal();
},
foldModal() {
let {
showModal
} = this.data;
this.setData({
showModal: !showModal
})
if (showModal) this.cancelEdit();
},
// 显示重命名
showRename() {
let {
dataList,
renameType,
modalFuns,
modalFunIndex
} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
renameType = 0
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
renameType = 1
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '重命名不支持多个文件修改',
icon: "none"
})
return;
}
modalFunIndex = 1;
modalFuns[modalFunIndex].value = one.name;
this.setData({
modalFunIndex,
renameData: one,
renameType,
modalFuns,
newFileName:one.name
})
this.foldModal();
},
// 取消管理
cancelEdit(e) {
let {
dataList
} = this.data;
dataList.folderList.map(c => c.checked = false);
dataList.fileList.map(c => c.checked = false);
this.setData({
isEdit: false,
showMoveFile: false,
dataList,
noSelectAll:false,
moreFav:false,
})
let prop = {
detail:{
prop:dataList
}
}
this.setCheckedFile(prop)
if(wx.getStorageSync('needReget')){
wx.removeStorageSync('needReget')
this.getDiskList()
}
},
createNewFolderConfirm() {
let {
sourceID,
directoryName
} = this.data;
if (!directoryName || !directoryName.trim()) {
wx.showToast({
title: '文件夹名不能为空!',
icon: 'none'
})
return;
}
req('POST', URL.addDirectory, {}, {
name:directoryName,
parentID:sourceID,
}, false).then(data => {
this.foldModal();
this.setData({
currentPage: 1
})
this.getDiskList();
if (this.data.showMoveFile) this.selectComponent('#moveFiles').getDiskList();
}).catch(err => {
console.log(err)
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
// 重命名
renameFile() {
let {
newFileName,
renameData,
renameType
} = this.data;
console.log(newFileName)
if (typeof (newFileName) == 'object') {
wx.showToast({
title: '请输入文件名!',
icon: 'none'
})
return;
}
if (newFileName.trim() == '') {
wx.showToast({
title: '请输入文件名!',
icon: 'none'
})
return;
}
let param = {
dataArr:[{
name:newFileName,
oldName:renameData.name,
parentID:renameData.parentID,
parentLevel:renameData.parentLevel,
sourceID:renameData.sourceID,
type:renameData.fileType?'file':'folder'
}],
operation:'rename'
}
wx.showLoading({
title: '加载中…',
mask: true
})
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.hideLoading();
wx.showToast({
title: '修改成功!',
icon: 'none'
})
this.foldModal();
this.setData({
currentPage: 1
})
let that = this
setTimeout(function(){
that.getDiskList();
},500)
}).catch(err => {
console.log(err)
wx.hideLoading();
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
showAttribute(e){
let {dataList,catalogue} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时查看多个文件属性',
icon: "none"
})
return;
}
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
this.selectComponent("#attribute").getAttribute(one)
if(one.icon!='folder')this.selectComponent("#attribute").getHistory(one)
this.selectComponent("#attribute").getTrends()
this.selectComponent("#attribute").getComments()
},
showFormat(e){
let {dataList,catalogue} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时查看多个文件属性',
icon: "none"
})
return;
}
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
this.selectComponent("#formatConvert").getFormat(one)
},
//格式转换
convertFile(e){
let {suffix,sourceID} = e.detail,
param = {
suffix: suffix,
sourceID:sourceID,
sourceIDTo:this.data.sourceID,
taskID:genUuid()
}
// console.log(param)
req('POST', URL.convert, {}, param, false).then(data => {
this.checkConvert(param.taskID)
}).catch(err => {
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
//查看转换是否完成
checkConvert(taskID){
let param = {
taskID:taskID
}
wx.showLoading({
title: '格式转换中...',
})
req('GET', URL.checkZip, param, {}, false).then(data => {
this.cancelEdit();
let that = this
setTimeout(function(){
wx.showToast({
title: '转换成功',
icon: 'none'
})
that.setData({
currentPage: 1,
})
that.getDiskList();
},1000)
}).catch(err => {
wx.hideLoading({})
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
repeatFile(e){
let {dataList} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时操作多个文件',
icon: "none"
})
return;
}
if(one.fileType==''){
wx.showToast({
title: '暂不支持文件夹查重',
icon: "none"
})
return;
}
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
this.setData({
currentPage: 1,
repeatSourceID:one.sourceID
})
this.getDiskList()
},
repeatFileName(e){
let {dataList} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时操作多个文件',
icon: "none"
})
return;
}
if(one.fileType==''){
wx.showToast({
title: '暂不支持文件夹查重',
icon: "none"
})
return;
}
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
this.setData({
currentPage: 1,
repeatSourceID:one.sourceID,
repeatName:one.name
})
this.getDiskList()
},
//发送桌面快捷方式
sendDesktop(e){
let {dataList} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时操作多个文件',
icon: "none"
})
return;
}
console.log(one)
let content = {
type:'lnk',
sourceID:one.sourceID,
isFolder:one.isFolder,
fileType:one.fileType?one.fileType:'',
name:one.name,
fileID:one.fileID,
icon:one.isFolder?'folder':'file'
},param = {
sourceID:wx.getStorageSync('options').desktop.sourceID,
operation:'mkfile',
content: JSON.stringify(content),
fileType: one.fileType?one.fileType:'',
isFolder: one.isFolder,
name: one.name+'.oexe'
}
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.showToast({
title: '操作成功',
icon: 'none'
})
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
this.setData({
currentPage: 1
})
let that = this
setTimeout(function(){
that.getDiskList();
},500)
}).catch(err => {
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
//创建快捷方式
creatShortcut(e){
let {dataList} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时操作多个文件',
icon: "none"
})
return;
}
console.log(one)
let content = {
type:'lnk',
sourceID:one.sourceID,
isFolder:one.isFolder,
fileType:one.fileType?one.fileType:'',
name:one.name,
fileID:one.fileID,
icon:one.isFolder?'folder':'file'
},param = {
sourceID:one.parentID,
operation:'mkfile',
content: JSON.stringify(content),
fileType: one.fileType?one.fileType:'',
isFolder: one.isFolder,
name: one.name+'.oexe'
}
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.showToast({
title: '操作成功',
icon: 'none'
})
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
this.setData({
currentPage: 1
})
let that = this
setTimeout(function(){
that.getDiskList();
},500)
}).catch(err => {
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
showZipPreview(e){
let {item} = e.detail
this.selectComponent("#zipPreview").getZipList(item)
},
//添加描述
addDesc(e){
let param = {
desc: e.detail.desc,
operation: "desc",
sourceID: e.detail.sourceID
}
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.showToast({
title: '添加成功!',
icon: 'none'
})
this.setData({
currentPage: 1
})
this.getDiskList();
}).catch(err => {
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
//打开文件
openFile(e){
let {dataList,catalogue} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时打开多个文件',
icon: "none"
})
return;
}
if(one.fileType){
this.selectComponent("#filesList").openFile(one)
}else{
catalogue.push({
label: one.name,
sourceID:one.sourceID,
})
let a = {
detail:{
sourceID:one.sourceID,
catalogue,
}
}
this.onCatalogueChange(a)
}
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
},
//置顶文件
topFile(e){
let {
dataList,
} = this.data, total = 0, one = '',param;
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时操作多个文件',
icon: "none"
})
return;
}
if(one.sort==0){
param = {
parentID:one.parentID,
operation:'top',
sourceID:one.sourceID,
}
}else{
param = {
sourceID:one.sourceID,
operation:'cancelTop',
}
}
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.showToast({
title: one.sort>0?'取消置顶':'置顶成功!',
icon: 'none'
})
this.setData({
currentPage: 1
})
this.getDiskList();
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
}).catch(err => {
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
//创建压缩包
zipFile(e){
let {suffix,index} = e.detail,{dataList} = this.data, total = 0,dataArr = [],param={};
dataList.folderList.map(c => {
if (c.checked) {
total++;
dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'folder'})
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'file'})
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
param = {
dataArr,
name:dataArr.length>1?this.data.catalogue[this.data.catalogue.length-1].label:dataArr[0].name.split('.')[0]+'.'+suffix,
sourceLevel:dataArr[0].parentLevel,
suffix: suffix,
sourceID:dataArr[0].parentID,
taskID:genUuid()
}
if(index==1)param.level = 0
req('POST', URL.zipFile, {}, param, false).then(data => {
this.checkZip(param.taskID)
}).catch(err => {
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
// 检查文件是否需要解密
checkIsEncrypted(param){
req('GET',URL.checkIsEncrypted,{sourceID:param.sourceID},{},false).then(data => {
if(data){
this.setData({
isEncrypted:true,
checkedParam:param
})
this.showEncrypt()
}else{
this.setData({
isEncrypted:false
})
this.unzip(param,false)
}
})
},
showEncrypt(){
this.setData({
encryptShow:!this.data.encryptShow
})
},
showPassword(){
this.setData({
showPassword:!this.data.showPassword
})
},
textInput(e){
this.setData({
password:e.detail
})
},
confirmUnzip(){
let {password,checkedParam} = this.data
if(password==null){
wx.showToast({
title: '请输入压缩包密码',
icon:'none'
})
return
}
this.unzip(checkedParam,false)
},
//解压文件
unzipFile(e){
let {index} = e.detail,{dataList,sourceID} = this.data, total = 0, one = '',param;
if(e.detail.sourceID){
if(index==0){
param = {
sourceID:e.detail.sourceID,
sourceIDTo:sourceID,
index:e.detail.choseIndex,
fullName:e.detail.fullName,
directory:e.detail.directory
}
this.unzip(param)
}else{
this.setData({
showMoveFile:true,
moveType:'',
unzipID:e.detail.sourceID,
isZip:true,
fullName:e.detail.fullName,
choseIndex:e.detail.choseIndex,
zipDirectory:e.detail.directory
})
}
return
}
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时操作多个文件',
icon: "none"
})
return;
}
if(index==0){
param = {
sourceID:one.sourceID,
sourceIDTo:sourceID
}
this.unzip(param)
}else if(index==1){
param = {
pathTo:one.name.split('.')[0],
sourceID:one.sourceID,
sourceIDTo:sourceID
}
this.unzip(param)
}else{
this.setData({
showMoveFile:true,
moveType:'',
unzipID:one.sourceID
})
}
},
unzipFileTo(e){
let {sourceID} = e.detail,{unzipID,choseIndex,fullName,zipDirectory} = this.data,
param = {
sourceID:unzipID,
sourceIDTo:sourceID
}
if(fullName){
param.index = choseIndex
param.fullName = fullName
param.directory = zipDirectory
}
this.unzip(param)
},
unzip(param,checkFlag = true){
if(checkFlag){
this.checkIsEncrypted(param)
return
}
if(this.data.password)param.password = this.data.password
wx.showLoading({
title:'解压中...'
})
req('POST', URL.unzipFile, {}, param, false).then(data => {
wx.showToast({
title: '解压成功',
icon: 'none'
})
this.setData({
currentPage: 1
})
this.getDiskList();
this.cancelEdit();
}).catch(err => {
wx.hideLoading({})
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
this.showEncrypt()
wx.showToast({
title: err.message,
icon: 'none'
})
this.setData({
password:''
})
})
},
//查看压缩是否完成
checkZip(taskID){
let param = {
taskID:taskID
}
wx.showLoading({
title: '压缩中...',
})
req('GET', URL.checkZip, param, {}, false).then(data => {
wx.showToast({
title: '压缩成功',
icon: 'none'
})
this.setData({
currentPage: 1,
})
this.getDiskList();
this.cancelEdit();
// this.selectComponent("#operateBar").onCloseMore()
}).catch(err => {
wx.hideLoading({})
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
// 取消外链分享
cancelShare(){
let {dataList} = this.data,shareIDStr = []
dataList.folderList.map(c => {
if (c.checked) {
shareIDStr.push(c.shareID)
}
})
dataList.fileList.map(c => {
if (c.checked) {
shareIDStr.push(c.shareID)
}
})
wx.showModal({
title: '提示',
content: '确认取消该链接分享?',
success: res => {
if (res.confirm) {
req('POST',URL.cancelShare, {}, {shareIDStr:shareIDStr.toString()}, false).then(data => {
console.log(data)
wx.showToast({
title: '取消成功!',
icon: 'none'
})
this.setData({
currentPage: 1
})
this.getDiskList();
this.cancelEdit();
}).catch(err => {
this.cancelEdit();
wx.showToast({
title: err.message,
icon: 'none'
})
})
}
}
})
},
//外链分享
shareLink(){
let {dataList} = this.data,total = 0, one = ''
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = {
sourceID:c.sourceID,
thumb:c.thumb,
name:c.name
};
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = {
sourceID:c.sourceID,
thumb:c.thumb,
name:c.name
};
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时操作多个文件',
icon: "none"
})
return;
}
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
// console.log(one)
wx.setStorageSync('shareFile', one)
wx.navigateTo({
url: '/pages/sharePage/sharePage?item='+JSON.stringify(one),
})
},
//上传新版本
uploadNewFile(e){
let {dataList} = this.data,that = this,
one = dataList.fileList.filter(c => c.checked),itemList = ['视频','图片','文件'],type
const isVideo = /mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|vob/,
isImage = /jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg/,
isFile = /pptx|ppt|xlsx|xls|doc|docx|pdf|wps/;
if(one.length>1){
wx.showToast({
title:'暂不支持修改多个文件!',
icon:'none'
})
return
}
if(isVideo.test(one[0].fileType)){
itemList = ['视频']
type = 1
}else if(isImage.test(one[0].fileType)){
itemList = ['图片']
type = 0
}else if(isFile.test(one[0].fileType)){
itemList = ['文件']
type = 2
}else{
itemList = ['文件']
type = 2
}
wx.showActionSheet({
itemList:itemList,
success(res){
console.log(res)
if (res.tapIndex === 0){
that.selectComponent("#attribute").addFiles(type,one[0].sourceID,one[0].parentID,one[0].name)
}else if (res.tapIndex === 1){
that.selectComponent("#attribute").addFiles(type,one[0].sourceID,one[0].parentID,one[0].name)
}else if (res.tapIndex === 2){
that.selectComponent("#attribute").addFiles(type,one[0].sourceID,one[0].parentID,one[0].name)
}
that.cancelEdit();
that.selectComponent("#operateBar").onCloseMore()
}
})
},
//收藏文件
collectFile(e){
let {isDisFav} = e.detail,{dataList} = this.data,one='', total = 0, dataArr = [],param={};
dataList.folderList.map(c => {
if (c.checked) {
total++;
dataArr.push({name:c.name,favID:c.favID,id:c.sourceID,path:c.path})
one = c
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
dataArr.push({name:c.name,favID:c.favID,id:c.sourceID,path:c.path})
one = c
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1&&!isDisFav) {
wx.showToast({
title: '暂不支持同时收藏多个文件',
icon: "none"
})
return;
}
if(!isDisFav){
param = {
name:one.name,
operation:'fav',
sourceID:one.sourceID,
type:one.fileType?'file':'folder'
}
}else{
param = {
dataArr,
operation:'delFav',
}
}
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.showToast({
title: isDisFav?'取消收藏':'收藏成功!',
icon: 'none'
})
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
this.setData({
currentPage: 1
})
let that = this
setTimeout(function(){
that.getDiskList();
},500)
}).catch(err => {
this.cancelEdit();
this.selectComponent("#operateBar").onCloseMore()
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
//添加标签
chooseTag(e){
let {labelId,block} = e.detail,{dataList} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时操作多个文件',
icon: "none"
})
return;
}
let param = {
block:block,
files:one.sourceID,
labelId:labelId
}
req('POST',URL.chooseTag, {}, param, false).then(data => {
// this.getDiskList()
})
},
setCheckedFile(e){
let {prop} = e.detail,{checkedSum,catalogue} = this.data
checkedSum = prop.fileList.filter(c => c.checked).length + prop.folderList.filter(c => c.checked).length
let folderSum = prop.folderList.filter(c => c.checked)
this.selectComponent('#operateBar').setOperate({catalogue,checkedSum,folderSum})
this.setData({
dataList:prop,
checkedSum,
// noSelectAll:checkedSum==0?1:0,
isEdit:checkedSum==0?false:true
})
},
//全选全不选
selectAllFile(e){
let{isSelectAll} = e.detail,{dataList,checkedSum} = this.data
if(isSelectAll){
dataList.fileList.map(c=>{c.checked=true})
dataList.folderList.map(c=>{c.checked=true})
}else{
dataList.fileList.map(c=>{c.checked=false})
dataList.folderList.map(c=>{c.checked=false})
}
checkedSum = dataList.fileList.filter(c => c.checked).length + dataList.folderList.filter(c => c.checked).length
this.setData({
dataList,
checkedSum,
// noSelectAll:checkedSum==0?1:0,
})
if(!isSelectAll){
this.cancelEdit()
}
},
//下载文件
downloadFile(e){
let {
dataList,
} = this.data, total = 0, one = '';
dataList.folderList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
dataList.fileList.map(c => {
if (c.checked) {
total++;
one = c;
}
})
if (total == 0) {
wx.showToast({
title: '未选择文件',
icon: 'none'
})
return;
}
if (total > 1) {
wx.showToast({
title: '暂不支持同时下载多个文件',
icon: "none"
})
return;
}
if(/jpeg|jpg|gif|png|webp|jfif|bmp|dpg/.test(one.fileType)){
this.downloadImage(one.thumb)
}else if(/mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv/.test(one.fileType)){
req('GET',URL.getPreviewInfo, {
busType: 'cloud',
sourceID: one.sourceID
}, {}, false).then(data => {
if (data.downloadUrl) data.downloadUrl = /http|https/.test(data.downloadUrl) ? data.downloadUrl :DOMAIN + data.downloadUrl;
this.downloadVideo(data.downloadUrl,data.name)
})
}else if(/pptx|ppt|xlsx|xls|doc|docx|pdf|wps/.test(one.fileType)){
req('GET',URL.getPreviewInfo, {
busType: 'cloud',
sourceID: one.sourceID
}, {}, false).then(data => {
if (data.downloadUrl) data.downloadUrl = /http|https/.test(data.downloadUrl) ? data.downloadUrl :DOMAIN + data.downloadUrl;
this.downloadFileOpen(data.downloadUrl)
})
}else{
wx.showToast({
title: '暂不支持下载',
icon:'none'
})
}
},
//下载图片
downloadImage(imageUrl){
let that = this
var fileN=new Date().valueOf();
var fileP = wx.env.USER_DATA_PATH+'/'+fileN+'.jpg'
wx.downloadFile({
url:imageUrl,
filePath:fileP,//这里要加这个filePath属性
success:(res)=>{
var filePath = res.filePath;
wx.saveImageToPhotosAlbum({
filePath,
success:(res)=>{
wx.showToast({title: '保存到相册成功'});
that.cancelEdit();
that.selectComponent("#operateBar").onCloseMore()
}
})
}
})
},
//下载视频
downloadVideo(videoUrl,fileName){
let that = this
wx.showLoading({
title: '下载中...',
})
wx.downloadFile({
url: videoUrl, // 视频资源地址
filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4',
header: {
"Content-Type":"video/mp4"
},
success: res => {
wx.hideLoading()
let FilePath= res.filePath; // 下载到本地获取临时路径
let fileManager = wx.getFileSystemManager();
// 保存到相册
wx.saveVideoToPhotosAlbum({ // 保存到相册
filePath: FilePath,
success: file => {
// console.log('saveVideoToPhotosAlbum成功回调file:', file)
wx.showToast({
title: '视频保存成功',
icon:'none'
})
fileManager.unlink({ // 删除临时文件
filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4',
})
that.cancelEdit();
that.selectComponent("#operateBar").onCloseMore()
},
fail: err => {
// console.log('saveVideoToPhotosAlbum失败回调err:', err)
fileManager.unlink({ // 删除临时文件
filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4'
})
wx.showToast({
title: '视频保存失败',
icon:'none'
})
},
complete() {
wx.hideLoading()
}
})
//
},
fail(e) {
console.log('失败e', e)
wx.showToast({
title: '视频保存失败1',
})
},
complete() {
// wx.hideLoading();
}
})
},
//下载文档
downloadFileOpen(fileUrl){
let that = this
wx.downloadFile({
url: fileUrl,
success (res) {
if (res.statusCode === 200) {
console.log(res)
const filePath = res.tempFilePath
wx.openDocument({
filePath: filePath,
showMenu:true, //关键点
success: function (res) {
wx.showToast({
title: '打开文档成功',
})
that.cancelEdit();
that.selectComponent("#operateBar").onCloseMore()
}
})
}
}
})
},
// 删除文件
deleteFile(e) {
let {
dataList
} = this.data, param = {
dataArr:[],
operation:'recycle'
}, toastText = '确定要删除所选文件吗?',directoryIds= [] ,fileIds = [];
dataList.folderList.map(c => c.checked ? directoryIds.push(c.sourceID) : '');
dataList.fileList.map(c => c.checked ? fileIds.push(c.sourceID) : '');
dataList.folderList.map(c => c.checked ? param.dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'folder'}) : '');
dataList.fileList.map(c => c.checked ? param.dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'file'}) : '');
if (param.dataArr.length == 0) {
wx.showToast({
title: '请选择要删除的文件!',
icon: 'none'
})
return;
}
if (directoryIds.length && !fileIds.length) {
toastText = '确定要删除已选文件夹吗?文件夹内文件也会一并删除!';
}
if (directoryIds.length && fileIds.length) {
toastText = '确定要删除已选文件和文件夹吗?文件夹内文件也会一并删除!'
}
wx.showModal({
title: '提示',
content: toastText,
success: res => {
if (res.confirm) {
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.showToast({
title: '删除成功!',
icon: 'none'
})
this.setData({
currentPage: 1
})
this.getDiskList();
this.triggerEvent('getRecycleNum')
this.cancelEdit();
}).catch(err => {
this.cancelEdit();
wx.showToast({
title: err.message,
icon: 'none'
})
})
}
}
})
},
//回收站彻底删除
removeFile(e){
let {
dataList
} = this.data, param = {
dataArr:[],
operation:'remove'
},directoryIds= [] ,fileIds = [],toastText = '';
if(e.isAll){
param = {
operation:'removeAll'
}
toastText = '确定要清空回收站吗?'
}else{
toastText = '确定要彻底删除吗?'
dataList.folderList.map(c => c.checked ? directoryIds.push(c.sourceID) : '');
dataList.fileList.map(c => c.checked ? fileIds.push(c.sourceID) : '');
dataList.folderList.map(c => c.checked ? param.dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'folder'}) : '');
dataList.fileList.map(c => c.checked ? param.dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'file'}) : '');
if (param.dataArr.length == 0) {
wx.showToast({
title: '请选择要删除的文件!',
icon: 'none'
})
return;
}
}
wx.showModal({
title: '提示',
content:toastText,
success: res => {
if (res.confirm) {
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.showToast({
title: '删除成功!',
icon: 'none'
})
this.setData({
currentPage: 1
})
this.getDiskList();
this.cancelEdit();
wx.setStorageSync('needRefresh', 1)
}).catch(err => {
this.cancelEdit();
wx.showToast({
title: err.message,
icon: 'none'
})
})
}
}
})
},
//回收站还原文件
reductionFile(e){
let {
dataList
} = this.data, param = {
dataArr:[],
operation:'restore'
},directoryIds= [] ,fileIds = [],toastText = '';
if(e.isAll){
param = {
operation:'restoreAll'
}
toastText = '确定要还原回收站所有文件?'
}else {
dataList.folderList.map(c => c.checked ? directoryIds.push(c.sourceID) : '');
dataList.fileList.map(c => c.checked ? fileIds.push(c.sourceID) : '');
dataList.folderList.map(c => c.checked ? param.dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'folder'}) : '');
dataList.fileList.map(c => c.checked ? param.dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'file'}) : '');
if (param.dataArr.length == 0) {
wx.showToast({
title: '请选择要还原的文件!',
icon: 'none'
})
return;
}
}
wx.showModal({
title: '提示',
content:'确定要还原吗?',
success: res => {
if (res.confirm) {
req('POST', URL.diskOperation, {}, param, false).then(data => {
wx.showToast({
title: '还原成功!',
icon: 'none'
})
this.setData({
currentPage: 1
})
this.getDiskList();
this.cancelEdit();
wx.setStorageSync('needRefresh', 1)
}).catch(err => {
this.cancelEdit();
wx.showToast({
title: err.message,
icon: 'none'
})
})
}
}
})
},
//上传回调
returnUploadPath(data) {
let that = this
this.setData({
currentPage: 1
})
this.getDiskList();
setTimeout(function(){
wx.showToast({
title: '上传成功!',
icon:'none'
})
},500)
},
// 点击移动文件
moveFile(e){
let {
dataList
} = this.data,{type} = e.detail,moveNumber = 0,param = {
dataArr:[],
operation:type
},directoryIds = [],fileIds = []
dataList.folderList.map(c => c.checked ? directoryIds.push(c.directoryId) : '');
dataList.fileList.map(c => c.checked ? fileIds.push(c.fileId) : '');
dataList.folderList.map(c => c.checked ? param.dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'folder'}) : '');
dataList.fileList.map(c => c.checked ? param.dataArr.push({name:c.name,parentID:c.parentID,parentLevel:c.parentLevel,sourceID:c.sourceID,type:'file'}) : '');
moveNumber = directoryIds.length + fileIds.length;
if (moveNumber < 1) {
wx.showToast({
title: '请选择文件',
icon: 'none'
})
return;
}
this.setData({
showMoveFile: true,
moveNumber,
moveFileParam: param,
moveType:type
})
},
//讨论选择图片
choosePicture(e){
let {type} = e.detail
this.setData({
showMoveFile: true,
moveType:type
})
},
//微信聊天文件上传
uploadWechatFile(e){
let {file,sourceID} = e.detail
this.setData({
showMoveFile: false,
})
this.uploadLargeFile('',file.path, file.size, 'cloud', URL.uploadFile,URL.uploadCheck, sourceID,file.name).then(data => {
console.log(data)
}).catch(err => {
wx.hideLoading();
console.log(err)
})
},
//讨论发送图片
sendPicture(e){
let {path} = e.detail.one[0]
this.selectComponent("#attribute").confirmPicture(path)
this.setData({
showMoveFile: false
})
},
// 移动文件到文件夹
moveFileToFolder(e) {
let {
moveFileParam
} = this.data, {
sourceID
} = e.detail;
moveFileParam.sourceID = sourceID;
moveFileParam.sourceLevel = moveFileParam.dataArr[0].parentLevel;
req('POST', URL.diskOperation, {}, moveFileParam, false).then(data => {
wx.showToast({
title:moveFileParam.operation=='copy'?'复制成功!':'剪切成功!',
icon: 'none'
})
this.setData({
showMoveFile: false,
isEdit: false
})
this.setData({
currentPage: 1
})
let that = this
setTimeout(function(){
that.getDiskList();
},500)
}).catch(err => {
wx.showToast({
title: err.message,
icon: 'none'
})
})
},
getWechat(e){
if(!this.data.wechatNew){
this.setData({
moveType:'upload',
showMoveFile:true,
wechatNew:true
})
}
},
closeWechat(e){
this.setData({
showMoveFile:false,
})
},
// 长按显示操作框
showEditActionSheet(e) {
if(this.data.catalogue.length==1&&this.data.catalogue[0].type=='files'){
return
}
let {
cate,
isEdit,
dataList,
isFav,
isTop,
isUpload,
isZip,
fileAuth,
targetType,
tagList,
formatConvert,
checkedFile
} = e.detail, isOnlyShare = false,checkedSum;
checkedSum = dataList.fileList.filter(c => c.checked).length + dataList.folderList.filter(c => c.checked).length
let folderSum = dataList.folderList.filter(c => c.checked)
this.selectComponent('#operateBar').setOperate({catalogue:this.data.catalogue,checkedSum,folderSum,formatConvert})
this.setData({
isEdit,
dataList,
operateShow:true,
isFav,
isTop,
isUpload,
fileAuth,
isZip,
targetType,
checkedSum,
formatConvert,
checkedFile
})
},
// 显示分享框
showSharePanel: async function (e) {
this.setData({
'sharePanel.isShow': true
})
let {
dataList
} = this.data,
one = dataList.fileList.filter(c => c.checked),
sre_param = {
busId: one[0].fileId,
busType: 25,
sreId: '',
url: ''
},
route_param = {
busId: one[0].fileId,
busType: 25,
routeId: '',
uvcid: genUuid()
};
let sre_promise = req('post', URL.requestSreId, {}, sre_param, false),
route_promise = req('GET', URL.getLogRouteId, route_param, {}, false);
wx.showLoading({
title: '加载中…',
mask: true
})
Promise.all([sre_promise, route_promise]).then(data => {
wx.hideLoading();
this.currentPage.newSreId = data[0];
this.currentPage.newRouteId = data[1].routeId;
this.currentPage.setData({
showFilesShare: true,
shareType: 'files',
fileShareParams: this.getShareFileParam()
})
}).catch(err => {
wx.hideLoading();
this.currentPage.setData({
showFilesShare: true,
shareType: 'files',
fileShareParams: this.getShareFileParam()
})
})
},
// 关闭分享框
onClose(e) {
this.setData({
'sharePanel.isShow': false
})
this.currentPage.setData({
showFilesShare: false
})
this.cancelEdit();
},
showFileTypeSheet,
showFilterTypeSheet,
initIconPath,twoWayBinding, choseFiles,
choseImageConfirm,
choseVideoConfirm,
uploadLargeFile,
choseFilesConfirm
}
})