455 lines
12 KiB
JavaScript
455 lines
12 KiB
JavaScript
// pages/messages/messages.js
|
||
import {req} from "../../utils/service";
|
||
import {URL} from '../../utils/config';
|
||
import { imageUrl } from '../../utils/image';
|
||
import{timeFromNow,clipImage} from '../../utils/util';
|
||
var QRCode = require('../../utils/qrcode.js');
|
||
let qrcode = null;
|
||
const {globalData} = getApp();
|
||
let leftHeight = 0, rightHeight = 0; //分别定义左右两边的高度
|
||
let query,timers={};
|
||
Page({
|
||
|
||
/**
|
||
* 页面的初始数据
|
||
*/
|
||
data: {
|
||
lang:globalData.lang,
|
||
loadingState: 1,
|
||
currentPage:1,
|
||
systemInfo:globalData.systemInfo,
|
||
imageUrl,
|
||
leftList:[],
|
||
rightList:[],
|
||
keyword:'',
|
||
filterItems: [], //资讯\短视频三级分类
|
||
threeIndexs: {
|
||
one: '',
|
||
two: '',
|
||
three: ''
|
||
},
|
||
threeIds: {
|
||
one: '',
|
||
two: '',
|
||
three: ''
|
||
},
|
||
infoTypeID:'',
|
||
sortShow:false,
|
||
sharePanel: [
|
||
{ name: '微信', icon: imageUrl.shareWechat, openType: 'share' },
|
||
{ name: '朋友圈', icon: imageUrl.shareWechatMoments },
|
||
{ name: '复制链接', icon: imageUrl.shareConnection },
|
||
{ name: '二维码', icon: imageUrl.shareQRcode }
|
||
],
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面加载
|
||
*/
|
||
onLoad: function (options) {
|
||
if(options.url){
|
||
wx.redirectTo({
|
||
url:`/pages/link/link?url=${options.url}&needToken=1`
|
||
})
|
||
return
|
||
}
|
||
let { systemInfo} = this.data,scrollHeight;
|
||
scrollHeight = systemInfo.windowHeight - systemInfo.statusBarHeight - 44
|
||
// console.log(scrollHeight)
|
||
// console.log(wx.getStorageSync('options').role)
|
||
this.setData({
|
||
scrollHeight,
|
||
informationView:wx.getStorageSync('options').role['explorer.informationView'],
|
||
informationShare:wx.getStorageSync('options').role['explorer.share'],
|
||
})
|
||
this.getInfoTypeList()
|
||
this.getNewsList()
|
||
},
|
||
async isLeft(goods,dataType) {
|
||
let list = goods,
|
||
leftList = this.data.leftList,
|
||
rightList = this.data.rightList;
|
||
query = wx.createSelectorQuery().in(this)
|
||
// 倒计时更新数据列表状态
|
||
if (dataType == 'djs') {
|
||
await this.getBoxHeight(leftList, rightList);
|
||
}
|
||
else{
|
||
for (const item of list) {
|
||
leftHeight <= rightHeight ? leftList.push(item) : rightList.push(item); //判断两边高度,来觉得添加到那边
|
||
await this.getBoxHeight(leftList, rightList);
|
||
}
|
||
}
|
||
},
|
||
getBoxHeight(leftList, rightList) { //获取左右两边高度
|
||
return new Promise((resolve, reject) => {
|
||
this.setData({
|
||
leftList,
|
||
rightList
|
||
}, () => {
|
||
query.select('#left').boundingClientRect();
|
||
query.select('#right').boundingClientRect();
|
||
query.exec((res) => {
|
||
if (res[0] ){
|
||
leftHeight = res[0].height; //获取左边列表的高度
|
||
rightHeight = res[1].height; //获取右边列表的高度
|
||
}
|
||
resolve();
|
||
});
|
||
});
|
||
})
|
||
},
|
||
getNewsList(reachBottom = false){
|
||
let DOMAIN = wx.getStorageSync('DOMAIN'),{keyword} = this.data
|
||
let param = {
|
||
keyword: keyword,
|
||
currentPage: this.data.currentPage,
|
||
pageSize:10,
|
||
sourceID: 0,
|
||
isinfo: 1,
|
||
status: 1,
|
||
}
|
||
if(this.data.infoTypeID)param.infoTypeID = this.data.infoTypeID
|
||
req("GET",URL.getInfoList, param, {}).then(data => {
|
||
// console.log(data.list)
|
||
data.list.map(c=>{
|
||
c.thumb = c.thumb?(/http|https/.test(c.thumb) ? c.thumb : DOMAIN + c.thumb):'';
|
||
c.gmtTime = timeFromNow(c.modifyTime*1000)
|
||
})
|
||
if(!this.data.isTile){
|
||
let resArr = [];
|
||
for(let i in data.list){
|
||
resArr.push(data.list[i])
|
||
}
|
||
this.isLeft(resArr, '')
|
||
}
|
||
this.setData({
|
||
loadingState: 0,
|
||
newsList:reachBottom?[...this.data.newsList,...data.list]:data.list
|
||
})
|
||
}, err => {
|
||
console.log(err);
|
||
});
|
||
},
|
||
getInfoTypeList(reachBottom = false){
|
||
let param = {
|
||
currentPage: 1,
|
||
pageSize: 500,
|
||
fileType:"folder"
|
||
}
|
||
req("GET",URL.getInfoTypeList, param, {}).then(data => {
|
||
// console.log(data)
|
||
let obj = {
|
||
infoTypeID:'',
|
||
typeName:'全部',
|
||
children:[]
|
||
}
|
||
data.unshift(obj)
|
||
this.setData({
|
||
filterItems:data
|
||
})
|
||
}, err => {
|
||
showErrMsg(err);
|
||
});
|
||
},
|
||
showFilter(){
|
||
this.setData({
|
||
sortShow:!this.data.sortShow
|
||
})
|
||
},
|
||
choseCate: function (e) {
|
||
// console.log(e)
|
||
let {
|
||
type,
|
||
index,
|
||
id
|
||
} = e.currentTarget.dataset, {
|
||
threeIndexs,
|
||
threeIds
|
||
} = this.data;
|
||
threeIndexs[type] = index;
|
||
threeIds[type] = id;
|
||
if (type == 'one') {
|
||
threeIndexs.two = '';
|
||
threeIndexs.three = '';
|
||
threeIds.two = '';
|
||
threeIds.three = '';
|
||
}
|
||
if (type == 'two') {
|
||
threeIndexs.three = '';
|
||
threeIds.three = '';
|
||
}
|
||
this.setData({
|
||
threeIndexs,
|
||
threeIds,
|
||
infoTypeID:id,
|
||
currentPage:1,
|
||
leftList:[],
|
||
rightList:[]
|
||
})
|
||
this.getNewsList()
|
||
},
|
||
choseType(e){
|
||
let {type} = e.currentTarget.dataset
|
||
this.setData({
|
||
isTile:type==1?1:0,
|
||
})
|
||
},
|
||
searchFiles(e){
|
||
let keyword = e.detail.value
|
||
this.setData({
|
||
currentPage:1,
|
||
keyword,
|
||
leftList:[],
|
||
rightList:[]
|
||
})
|
||
this.getNewsList()
|
||
},
|
||
goToInfoDetail(e){
|
||
let {infoID,infoUrl} = e.currentTarget.dataset.item,DOMAIN = wx.getStorageSync('DOMAIN'),{informationView} = this.data,
|
||
url = DOMAIN +'/pubinfo/'+infoID+'.shtml'
|
||
if(!informationView){
|
||
wx.showToast({
|
||
title: '暂无权限',
|
||
icon:'none'
|
||
})
|
||
return
|
||
}
|
||
if(infoUrl){
|
||
wx.showModal({
|
||
title: '小程序暂不支持打开外链资讯,请复制链接在浏览器打开',
|
||
confirmText:'复制',
|
||
complete: (res) => {
|
||
if (res.confirm) {
|
||
console.log(infoUrl)
|
||
wx.setClipboardData({
|
||
data: infoUrl,
|
||
success:res => {
|
||
wx.showToast({
|
||
title:'复制成功'
|
||
});
|
||
}
|
||
})
|
||
}
|
||
}
|
||
})
|
||
return
|
||
}
|
||
wx.setStorageSync('needRefresh', 1)
|
||
wx.navigateTo({
|
||
url: '/pages/newsLink/newsLink?url='+url+'&needToken=1'
|
||
})
|
||
wx.setStorageSync('news',e.currentTarget.dataset.item)
|
||
},
|
||
getQrcode(){
|
||
let {shareLink} = this.data,token = encodeURIComponent(wx.getStorageSync('token')),
|
||
str = shareLink
|
||
qrcode = new QRCode('myQrcode', {
|
||
usingIn: this,
|
||
text: str,
|
||
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);
|
||
},
|
||
showShare(e){
|
||
let {infoID,title,thumb} = e.currentTarget.dataset.item,DOMAIN = wx.getStorageSync('DOMAIN'),
|
||
url = DOMAIN +'/pubinfo/'+infoID+'.shtml',that = this
|
||
wx.getImageInfo({
|
||
src: thumb?thumb:this.data.imageUrl.newsEmpty, // 这里填写网络图片路径
|
||
success: (res) => {
|
||
// 这个是我封装的裁剪图片方法(下面将会说到)
|
||
that.clipImage(res.path, res.width, res.height, (img) => {
|
||
that.setData({
|
||
shareImage:img
|
||
})
|
||
// console.log(img); // img为最终裁剪后生成的图片路径,我们可以用来做为转发封面图
|
||
});
|
||
}
|
||
});
|
||
|
||
this.setData({
|
||
shareShow:true,
|
||
shareLink:url,
|
||
shareTitle:title,
|
||
shareCover:thumb?thumb:this.data.imageUrl.newsEmpty
|
||
})
|
||
this.getQrcode()
|
||
},
|
||
closeShare(){
|
||
this.setData({
|
||
shareShow: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({
|
||
shareShow:false,
|
||
showQrcode:true
|
||
})
|
||
}
|
||
},
|
||
showTips(){
|
||
this.setData({
|
||
showTips:false
|
||
})
|
||
},
|
||
closeShareQrcode(){
|
||
this.setData({
|
||
showQrcode:false,
|
||
shareShow:false
|
||
})
|
||
},
|
||
saveShareQrcode:function(e){
|
||
wx.saveImageToPhotosAlbum({
|
||
filePath: this.data.shareQrcode,
|
||
success: () => {
|
||
wx.showToast({
|
||
title: '保存成功!',
|
||
})
|
||
this.closeShareQrcode();
|
||
},
|
||
fail:res=>{
|
||
openSaveImageSetting();
|
||
}
|
||
});
|
||
},
|
||
copyLink(){
|
||
let {shareLink} = this.data,token = encodeURIComponent(wx.getStorageSync('token')),
|
||
str = shareLink
|
||
wx.setClipboardData({
|
||
data: str,
|
||
success:res => {
|
||
wx.showToast({
|
||
title:'复制成功'
|
||
});
|
||
this.setData({
|
||
shareShow:false
|
||
})
|
||
}
|
||
})
|
||
},
|
||
/**
|
||
* 生命周期函数--监听页面初次渲染完成
|
||
*/
|
||
onReady: function () {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面显示
|
||
*/
|
||
onShow: function () {
|
||
this.setData({
|
||
currentPage:1,
|
||
leftList:[],
|
||
rightList:[]
|
||
})
|
||
// this.getNewsList()
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面隐藏
|
||
*/
|
||
onHide: function () {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面卸载
|
||
*/
|
||
onUnload: function () {
|
||
|
||
},
|
||
|
||
/**
|
||
* 页面相关事件处理函数--监听用户下拉动作
|
||
*/
|
||
onPullDownRefresh: function () {
|
||
this.setData({
|
||
currentPage:1,
|
||
})
|
||
if(!this.data.isTile){
|
||
this.setData({
|
||
leftList:[],
|
||
rightList:[]
|
||
})
|
||
}
|
||
this.getNewsList()
|
||
this.setData({isPullDownRefresh:true})
|
||
setTimeout(() => {
|
||
this.setData({isPullDownRefresh:false})
|
||
}, 1000);
|
||
},
|
||
|
||
/**
|
||
* 页面上拉触底事件的处理函数
|
||
*/
|
||
onReachBottom: function () {
|
||
this.setData({currentPage:this.data.currentPage+1})
|
||
this.getNewsList(true)
|
||
},
|
||
|
||
/**
|
||
* 用户点击右上角分享
|
||
*/
|
||
onShareAppMessage: function (e) {
|
||
console.log(e)
|
||
if(e.from=='menu'){
|
||
return{
|
||
path:`/pages/news/news`,
|
||
title:'资讯列表',
|
||
imageUrl:this.data.imageUrl.newsEmpty
|
||
}
|
||
}
|
||
let {shareTitle,shareImage} = this.data
|
||
this.setData({
|
||
shareShow:false
|
||
})
|
||
let path = `/pages/link/link?url=${this.data.shareLink}&needToken=1`;
|
||
return{
|
||
path,
|
||
title:shareTitle,
|
||
imageUrl:shareImage
|
||
}
|
||
},
|
||
onShareTimeline:function (e) {
|
||
let path = `url=${this.data.shareLink}`;
|
||
let {shareTitle,shareCover} = this.data
|
||
if(e.from=='menu'&&!shareTitle){
|
||
return{
|
||
path:`/pages/news/news`,
|
||
title:'资讯列表',
|
||
imageUrl:this.data.imageUrl.newsEmpty
|
||
}
|
||
}
|
||
return{
|
||
query:path,
|
||
title:shareTitle,
|
||
imageUrl:shareCover
|
||
}
|
||
},clipImage
|
||
}) |