495 lines
15 KiB
JavaScript
495 lines
15 KiB
JavaScript
|
// pages/sharePage/sharePage.js
|
|||
|
import {req} from '../../utils/service';
|
|||
|
import {URL} from '../../utils/config';
|
|||
|
import {encrypt,randomNumber,isEmptyObject,getTimetamp,timeFormat,openSaveImageSetting} from "../../utils/util";
|
|||
|
import {imageUrl} from '../../utils/image';
|
|||
|
var QRCode = require('../../utils/qrcode.js');
|
|||
|
let qrcode = null;
|
|||
|
var datePicker = require('../../utils/dateSetting.js')
|
|||
|
//设定当前的时间,将其设定为常量
|
|||
|
const date = new Date();
|
|||
|
const year = date.getFullYear();
|
|||
|
const month = date.getMonth() + 1;
|
|||
|
Page({
|
|||
|
|
|||
|
/**
|
|||
|
* 页面的初始数据
|
|||
|
*/
|
|||
|
data: {
|
|||
|
imageUrl,
|
|||
|
shareShow:false,
|
|||
|
timeShow:false,
|
|||
|
downShow:false,
|
|||
|
customTime: '',
|
|||
|
multiArray: [],
|
|||
|
multiIndex: [0, 0, 0, 0, 0],
|
|||
|
choose_year: "",
|
|||
|
sharePanel: [
|
|||
|
{ name: '微信', icon: imageUrl.shareWechat, openType: 'share' },
|
|||
|
{ name: '朋友圈', icon: imageUrl.shareWechatMoments },
|
|||
|
{ name: '复制链接', icon: imageUrl.shareConnection },
|
|||
|
{ name: '二维码', icon: imageUrl.shareQRcode }
|
|||
|
],
|
|||
|
timeArr:[
|
|||
|
{
|
|||
|
name:'7天',
|
|||
|
},
|
|||
|
{
|
|||
|
name:'14天',
|
|||
|
},
|
|||
|
{
|
|||
|
name:'永久有效',
|
|||
|
},
|
|||
|
{
|
|||
|
name:'设定到期时间',
|
|||
|
}
|
|||
|
],
|
|||
|
downArr:[
|
|||
|
{
|
|||
|
name:'不限制',
|
|||
|
},
|
|||
|
{
|
|||
|
name:'禁止下载',
|
|||
|
},
|
|||
|
{
|
|||
|
name:'自定义下载次数',
|
|||
|
},
|
|||
|
],
|
|||
|
selectTimeIndex:2,
|
|||
|
downIndex:0,
|
|||
|
downNum:0,
|
|||
|
moreShow:true,
|
|||
|
isShare:0
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 生命周期函数--监听页面加载
|
|||
|
*/
|
|||
|
onLoad: function (options) {
|
|||
|
if(options.shareHash){
|
|||
|
if(wx.getEnterOptionsSync().scene==1154){
|
|||
|
this.setData({
|
|||
|
isShare: 1,
|
|||
|
})
|
|||
|
}else if(wx.getEnterOptionsSync().scene==1155){
|
|||
|
this.setData({
|
|||
|
isShare: 2,
|
|||
|
})
|
|||
|
}
|
|||
|
console.log(options.shareHash)
|
|||
|
wx.redirectTo({
|
|||
|
url:`/pages/link/link?shareHash=${encodeURIComponent(options.shareHash)}&DOMAIN=${options.DOMAIN}`
|
|||
|
})
|
|||
|
return
|
|||
|
}
|
|||
|
// let dataList = JSON.parse(decodeURIComponent(options.item))
|
|||
|
let dataList = wx.getStorageSync('shareFile')
|
|||
|
let DOMAIN = wx.getStorageSync("DOMAIN"),userID = wx.getStorageSync('userID'),
|
|||
|
shareHash = encodeURIComponent(encrypt(dataList.sourceID+'&&'+userID)),
|
|||
|
shareLink = DOMAIN+'/#/sharePage/'+shareHash
|
|||
|
let years = [year]
|
|||
|
for(var i = 0;i<100;i++){
|
|||
|
years.push(year+i)
|
|||
|
}
|
|||
|
this.setData({
|
|||
|
dataList:dataList,
|
|||
|
shareHash,
|
|||
|
shareLink,
|
|||
|
title:dataList.name,
|
|||
|
timeToText:'永久有效',
|
|||
|
multiArray:
|
|||
|
[
|
|||
|
years,
|
|||
|
datePicker.determineMonth(),
|
|||
|
datePicker.determineDay(year, month),
|
|||
|
datePicker.determineHour(),
|
|||
|
datePicker.determineMinute()
|
|||
|
],
|
|||
|
customTime:this.timeFormat('yyyy-MM-dd hh:mm',Date.parse(new Date())),
|
|||
|
shareLinkAllowGuest:wx.getStorageSync('options').markConfig.shareLinkAllowGuest
|
|||
|
})
|
|||
|
this.getShareInfo(dataList.sourceID)
|
|||
|
},
|
|||
|
//最后呈现时间的函数。
|
|||
|
bindMultiPickerChange: function (e) {
|
|||
|
//年
|
|||
|
var dateStr = this.data.multiArray[0][this.data.multiIndex[0]] +"-";
|
|||
|
//月
|
|||
|
if(this.data.multiArray[1][this.data.multiIndex[1]]<10)
|
|||
|
{
|
|||
|
dateStr=dateStr+"0"+this.data.multiArray[1][this.data.multiIndex[1]] +"-";
|
|||
|
}
|
|||
|
else{
|
|||
|
dateStr=dateStr+this.data.multiArray[1][this.data.multiIndex[1]] +"-";
|
|||
|
}
|
|||
|
//日
|
|||
|
if(this.data.multiArray[2][this.data.multiIndex[2]]<10)
|
|||
|
{
|
|||
|
dateStr=dateStr+"0"+this.data.multiArray[2][this.data.multiIndex[2]]+" ";
|
|||
|
}
|
|||
|
else{
|
|||
|
dateStr=dateStr+this.data.multiArray[2][this.data.multiIndex[2]]+" ";
|
|||
|
}
|
|||
|
//时
|
|||
|
if(this.data.multiArray[3][this.data.multiIndex[3]]<10)
|
|||
|
{
|
|||
|
dateStr=dateStr+"0"+this.data.multiArray[3][this.data.multiIndex[3]]+":";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
dateStr=dateStr+this.data.multiArray[3][this.data.multiIndex[3]]+":";
|
|||
|
}
|
|||
|
if(this.data.multiArray[4][this.data.multiIndex[4]]<10)
|
|||
|
{
|
|||
|
dateStr=dateStr+"0"+this.data.multiArray[4][this.data.multiIndex[4]];
|
|||
|
}
|
|||
|
else{
|
|||
|
dateStr=dateStr+this.data.multiArray[4][this.data.multiIndex[4]];
|
|||
|
}
|
|||
|
this.setData({
|
|||
|
customTime: dateStr,
|
|||
|
})
|
|||
|
},
|
|||
|
//当时间选择器呈现并进行滚动选择时间时调用该函数。
|
|||
|
bindMultiPickerColumnChange: function (e) {
|
|||
|
//e.detail.column记录哪一行发生改变,e.detail.value记录改变的值(相当于multiIndex)
|
|||
|
switch (e.detail.column) {
|
|||
|
//这里case的值有0/1/2/3/4,但除了需要记录年和月来确定具体的天数外,其他的都可以暂不在switch中处理。
|
|||
|
case 0:
|
|||
|
//记录改变的年的值
|
|||
|
let year = this.data.multiArray[0][e.detail.value];
|
|||
|
this.setData({
|
|||
|
// choose_year: year.substring(0, year.length - 1),
|
|||
|
choose_year: year,
|
|||
|
})
|
|||
|
break;
|
|||
|
case 1:
|
|||
|
//根据选择的年与月,确定天数,并改变multiArray中天的具体值
|
|||
|
let month = this.data.multiArray[1][e.detail.value];
|
|||
|
let dayDates = datePicker.determineDay(this.data.choose_year, month.substring(0, month.length - 1));
|
|||
|
//这里需要额外注意,改变page中设定的data,且只要改变data中某一个值,可以采用下面这种方法
|
|||
|
this.setData({
|
|||
|
['multiArray[2]']: dayDates
|
|||
|
})
|
|||
|
break;
|
|||
|
}
|
|||
|
//同上,上面改变的是二维数组中的某一个一维数组,这个是改变一个一维数组中某一个值,可供参考。
|
|||
|
this.setData({
|
|||
|
["multiIndex[" + e.detail.column + "]"]: e.detail.value
|
|||
|
})
|
|||
|
},
|
|||
|
getRandomNum(){
|
|||
|
this.setData({
|
|||
|
password:randomNumber(6)
|
|||
|
})
|
|||
|
},
|
|||
|
getShareInfo(sourceID){
|
|||
|
let {dataList} = this.data
|
|||
|
req('GET',URL.getShareInfo, {sourceID:sourceID}, {}, false).then(data => {
|
|||
|
// console.log(data)
|
|||
|
if(!isEmptyObject(data)){
|
|||
|
if(data.options){
|
|||
|
data.options = JSON.parse(data.options)
|
|||
|
}
|
|||
|
dataList.timeTo = data.timeTo>0?timeFormat('yyyy/MM/dd hh:mm:ss',data.timeTo*1000):'永久有效';
|
|||
|
dataList.options = data.options
|
|||
|
// dataList.title = data.title
|
|||
|
this.setData({
|
|||
|
numDownload:data.numDownload,
|
|||
|
numView:data.numView,
|
|||
|
shareID:data.shareID,
|
|||
|
password:data.password?data.password:'',
|
|||
|
timeToText:dataList.timeTo
|
|||
|
// shareHash:data.shareHash
|
|||
|
})
|
|||
|
}else{
|
|||
|
dataList.options = {
|
|||
|
preview:1,
|
|||
|
down:1,
|
|||
|
login:0,
|
|||
|
downNum:0
|
|||
|
}
|
|||
|
}
|
|||
|
if(this.data.shareLinkAllowGuest==0){
|
|||
|
dataList.options.login = 1
|
|||
|
}
|
|||
|
this.setData({dataList})
|
|||
|
})
|
|||
|
},
|
|||
|
showMore(){
|
|||
|
this.setData({
|
|||
|
moreShow:!this.data.moreShow
|
|||
|
})
|
|||
|
},
|
|||
|
onSwitchChange(e ){
|
|||
|
let{label} = e.currentTarget.dataset,{dataList} = this.data
|
|||
|
if(label=='preview'||label=='down'){
|
|||
|
dataList.options[label] = e.detail?0:1
|
|||
|
}else{
|
|||
|
dataList.options[label] = e.detail?1:0
|
|||
|
}
|
|||
|
this.setData({
|
|||
|
dataList
|
|||
|
})
|
|||
|
},
|
|||
|
closeShare(){
|
|||
|
this.setData({
|
|||
|
shareShow:false
|
|||
|
})
|
|||
|
},
|
|||
|
showTime(){
|
|||
|
this.setData({
|
|||
|
timeShow:!this.data.timeShow
|
|||
|
})
|
|||
|
},
|
|||
|
selectTime(e){
|
|||
|
let {index} = e.currentTarget.dataset
|
|||
|
this.setData({
|
|||
|
selectTimeIndex:index,
|
|||
|
})
|
|||
|
},
|
|||
|
timeConfirm(){
|
|||
|
let {selectTimeIndex,customTime,timeArr} = this.data,timeTo
|
|||
|
if(selectTimeIndex==0){
|
|||
|
timeTo = this.getTimetamp(7)
|
|||
|
}else if(selectTimeIndex==1){
|
|||
|
timeTo = this.getTimetamp(14)
|
|||
|
}else if(selectTimeIndex==2){
|
|||
|
timeTo = 0
|
|||
|
}else{
|
|||
|
timeTo = Date.parse(customTime)/1000
|
|||
|
}
|
|||
|
this.setData({
|
|||
|
timeTo,
|
|||
|
timeToText:selectTimeIndex<3?timeArr[selectTimeIndex].name:customTime,
|
|||
|
timeShow:false
|
|||
|
})
|
|||
|
},
|
|||
|
showDown(){
|
|||
|
this.setData({
|
|||
|
downShow:!this.data.downShow
|
|||
|
})
|
|||
|
},
|
|||
|
selectDown(e){
|
|||
|
let {index} = e.currentTarget.dataset
|
|||
|
this.setData({
|
|||
|
downIndex:index,
|
|||
|
})
|
|||
|
},
|
|||
|
customDownNum(e){
|
|||
|
this.setData({
|
|||
|
downNum:parseInt(e.detail.value),
|
|||
|
downIndex:2
|
|||
|
})
|
|||
|
},
|
|||
|
downConfirm(){
|
|||
|
let {downIndex,dataList,downNum} = this.data
|
|||
|
if(downIndex==0){
|
|||
|
dataList.options.down = 1
|
|||
|
dataList.options.downNum = 0
|
|||
|
}else if(downIndex==1){
|
|||
|
dataList.options.down = 0
|
|||
|
dataList.options.downNum = 0
|
|||
|
}else if(downIndex==2){
|
|||
|
dataList.options.down = 1
|
|||
|
dataList.options.downNum = downNum
|
|||
|
}
|
|||
|
this.setData({
|
|||
|
dataList,
|
|||
|
downShow:false
|
|||
|
})
|
|||
|
},
|
|||
|
cancelShare(){
|
|||
|
let{shareID} = this.data
|
|||
|
if(shareID){
|
|||
|
req('POST',URL.cancelShare, {}, {shareID:shareID}, false).then(data => {
|
|||
|
wx.navigateBack({
|
|||
|
delta: 0,
|
|||
|
})
|
|||
|
})
|
|||
|
}else{
|
|||
|
wx.navigateBack({
|
|||
|
delta: 0,
|
|||
|
})
|
|||
|
}
|
|||
|
},
|
|||
|
showShare(e){
|
|||
|
let {dataList,password,shareHash,title,timeTo} = this.data,{type} = e.currentTarget.dataset,param = {
|
|||
|
options:dataList.options?JSON.stringify(dataList.options):'',
|
|||
|
password:password,
|
|||
|
shareHash: decodeURIComponent(shareHash),
|
|||
|
sourceID: dataList.sourceID,
|
|||
|
timeTo: timeTo,
|
|||
|
title: title
|
|||
|
}
|
|||
|
req('POST',URL.saveShare, {}, param, false).then(data => {
|
|||
|
qrcode = new QRCode('myQrcode', {
|
|||
|
usingIn: this,
|
|||
|
text: this.data.shareLink,
|
|||
|
width: 200,
|
|||
|
height: 200,
|
|||
|
padding: 20,
|
|||
|
colorDark: "#000000",
|
|||
|
colorLight: "#ffffff",
|
|||
|
correctLevel: QRCode.CorrectLevel.H,
|
|||
|
})
|
|||
|
setTimeout(() => {
|
|||
|
wx.canvasToTempFilePath({
|
|||
|
canvasId: 'myQrcode',
|
|||
|
success:res=>{
|
|||
|
this.setData({
|
|||
|
shareQrcode:res.tempFilePath
|
|||
|
})
|
|||
|
},fail(err){
|
|||
|
console.log(err)
|
|||
|
}
|
|||
|
})
|
|||
|
}, 1000);
|
|||
|
wx.setStorageSync('needRefresh', true)
|
|||
|
if(type==0){
|
|||
|
this.setData({
|
|||
|
shareShow:true
|
|||
|
})
|
|||
|
}else if(type==1){
|
|||
|
this.copyLink()
|
|||
|
}else{
|
|||
|
wx.showToast({
|
|||
|
title: '保存成功!',
|
|||
|
icon:'none'
|
|||
|
})
|
|||
|
this.getShareInfo(this.data.dataList.sourceID)
|
|||
|
}
|
|||
|
})
|
|||
|
},
|
|||
|
inputValue(e){
|
|||
|
let {value} = e.detail,{label} = e.currentTarget.dataset
|
|||
|
this.setData({
|
|||
|
[label]:value
|
|||
|
})
|
|||
|
},
|
|||
|
showTips(){
|
|||
|
this.setData({
|
|||
|
showTips:false
|
|||
|
})
|
|||
|
},
|
|||
|
onSelect(e){
|
|||
|
let {index} = e.currentTarget.dataset
|
|||
|
if(index == 1){
|
|||
|
this.setData({
|
|||
|
shareShow:false,
|
|||
|
showTips:true
|
|||
|
})
|
|||
|
}else if(index==2){
|
|||
|
this.copyLink()
|
|||
|
}else if(index==3){
|
|||
|
this.setData({
|
|||
|
showQrcode:true
|
|||
|
})
|
|||
|
}
|
|||
|
},
|
|||
|
closeShareQrcode(){
|
|||
|
this.setData({
|
|||
|
showQrcode:false
|
|||
|
})
|
|||
|
},
|
|||
|
saveShareQrcode:function(e){
|
|||
|
wx.saveImageToPhotosAlbum({
|
|||
|
filePath: this.data.shareQrcode,
|
|||
|
success: () => {
|
|||
|
wx.showToast({
|
|||
|
title: '保存成功!',
|
|||
|
})
|
|||
|
this.closeShareQrcode();
|
|||
|
},
|
|||
|
fail:res=>{
|
|||
|
openSaveImageSetting();
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
copyLink(){
|
|||
|
let {shareLink,password,title} = this.data,
|
|||
|
str = password?'分享名称:'+title+'\n分享链接:'+shareLink+'\n分享密码:'+password:'分享名称:'+title+'\n分享链接:'+shareLink
|
|||
|
wx.setClipboardData({
|
|||
|
data: str,
|
|||
|
success:res => {
|
|||
|
wx.showToast({
|
|||
|
title:'复制成功'
|
|||
|
});
|
|||
|
this.setData({
|
|||
|
shareShow:false
|
|||
|
})
|
|||
|
this.getShareInfo(this.data.dataList.sourceID)
|
|||
|
}
|
|||
|
})
|
|||
|
},
|
|||
|
/**
|
|||
|
* 生命周期函数--监听页面初次渲染完成
|
|||
|
*/
|
|||
|
onReady: function () {
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 生命周期函数--监听页面显示
|
|||
|
*/
|
|||
|
onShow: function () {
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 生命周期函数--监听页面隐藏
|
|||
|
*/
|
|||
|
onHide: function () {
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 生命周期函数--监听页面卸载
|
|||
|
*/
|
|||
|
onUnload: function () {
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 页面相关事件处理函数--监听用户下拉动作
|
|||
|
*/
|
|||
|
onPullDownRefresh: function () {
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 页面上拉触底事件的处理函数
|
|||
|
*/
|
|||
|
onReachBottom: function () {
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 用户点击右上角分享
|
|||
|
*/
|
|||
|
onShareAppMessage: function () {
|
|||
|
let {name,thumb} = this.data.dataList,DOMAIN = wx.getStorageSync('DOMAIN')
|
|||
|
this.setData({
|
|||
|
shareShow:false
|
|||
|
})
|
|||
|
let path = `/pages/link/link?shareHash=${encodeURIComponent(this.data.shareHash)}&DOMAIN=${wx.getStorageSync('DOMAIN')}`;
|
|||
|
this.getShareInfo(this.data.dataList.sourceID)
|
|||
|
console.log(path)
|
|||
|
return{
|
|||
|
path,
|
|||
|
title:'好友给你分享了'+name,
|
|||
|
imageUrl:thumb
|
|||
|
}
|
|||
|
},
|
|||
|
onShareTimeline:function (params) {
|
|||
|
let path = `shareHash=${this.data.shareHash}&DOMAIN=${wx.getStorageSync('DOMAIN')}`,{name,thumb} = this.data.dataList;
|
|||
|
this.getShareInfo(this.data.dataList.sourceID)
|
|||
|
console.log(path)
|
|||
|
return{
|
|||
|
query:path,
|
|||
|
title:'好友给你分享了'+name,
|
|||
|
imageUrl:thumb
|
|||
|
}
|
|||
|
},
|
|||
|
getTimetamp,timeFormat
|
|||
|
})
|