miue-ui
Version:
ali miniProgram UI components for vehicle.
209 lines (200 loc) • 5.02 kB
JavaScript
import INFO from '../../modules/systeminfo';
if(my.MIUE_SERVER){
var _SERVER=my.MIUE_SERVER;
}
let LISTER,PLAYER,PAGESIZE=20;
let {beian='',buttons='mode|prev|PLAY+|next|forw'}=my.MIUE_CONFIG;
Page({
data:{
dataIsLoaded:'none',//加载数据是否正常;
list:[],
page:1,
LISTER:{},
PLAYER:{},
beian:beian,
buttons:buttons,
},
onLoad(query) {
// 页面加载
//console.info(`Page onLoad with query: ${JSON.stringify(query)}`);
INFO.read().then((res)=>{
this.setData({prefers:res.prefersClass});
});
},
// 页面加载完成
onReady() {
LISTER=this.MIUE.get('indexLister');
PLAYER=this.MIUE.get('indexPlayer');
LISTER.show(true);
//开始加载
LISTER._noticeText('loading');
// 发请数请求
_SERVER.GET(PAGESIZE,this.data.page).then(
(res)=>{
//console.log(res);
this.setData({dataIsLoaded:'success'})
LISTER.setDatas(res);
if(res.list.length>0){
//LISTER.setListData(res.list);
//LISTER.data.total=res.total;
PLAYER.setListData(res.list);
PLAYER.play(0);
}
},
(error)=>{
// console.log(error);
this.setData({dataIsLoaded:'fail'})
LISTER.setMessage(error.msg);
//LISTER._noticeText('error');
}
);
},
onShow(){
//界面重新显示,获取当前网状态,重新注册侦听事件
let THAT=this;
if(my.canIUse('onNetworkStatusChange')){
my.onNetworkStatusChange(function(res){
if(res.isConnected){
// 当前网络已连接。");
THAT.reLoading();
}else{
// 当前网络已经断开;
}
//console.log(JSON.stringify(res))
})
}
},
reLoading(){
let dataIsLoaded=this.data.dataIsLoaded;
if(dataIsLoaded=='fail'){
let _url='/node_modules/miue-ui/pages/bannock/bannock';
my.reLaunch({url:_url});
}
},
//列表滚动
onListScroll(e){
let _lister=e.target;
//let _player=this.player.get('indexPlayer');
// 是否滚动最下方
if(e.type=='lower'){
if(e.target.data.total>e.target.data.list.length){
LISTER._noticeText('loading');
this.data.page++;
// 加载数据 - 下一页
_SERVER.GET(PAGESIZE,this.data.page).then(
(res)=>{
let _list=LISTER.data.list.concat(res.list);
LISTER.setListData(_list);
PLAYER.setListData(_list);
},
(error)=>{
// 加载出错
}
);
//////////////
}else{
//_lister._noticeText('end');
}
}
},
// 播放到第几个。
indexPlaying(e){
//let _list= this.lister.get('indexLister');
LISTER.setPresent(e.present,true);
//console.log(e);
//LISTER.setPlayState(true);
},
onPlayerStage(e){
//console.log(e);
let {state}=e;
if(state=='play'){
LISTER.setPlayState(true);
}else{
LISTER.setPlayState(false);
}
},
// 列表被点击
onListPress(e){
PLAYER.play(e);
// console.lis
},
// 按扭点击
onPlayerPress(e){
//console.log(e);
},
// 列表播放最后
onListPlayEnd(e){
//console.log(e);
this.notice({referer:e.referer,text:'播放列表内容已经全部播放完成。'});
LISTER.setPlayState(false);
//console.log(e);
},
onPlayerError(e){
LISTER.setPlayState(false);
if(e.code==20006){
my.confirm({
title: '提示',
content: '内容资源已过期,是否重新获取加载?',
confirmButtonText: '是',
cancelButtonText: '否',
success: function(res) {
//console.log(res);
if(res.confirm){
my.reLaunch({url:'/node_modules/miue-ui/pages/bannock/bannock'});
}
},
fail: function(err) {
//console.log(err);
}
});
}else{
this.notice({text:e.message});
}
},
// 页面显示
onShow() {
this.setData({ishide:false});
},
// 页面隐藏
onHide() {
this.setData({ishide:true})
},
saveRef(ref){
},
// 提示
notice(obj){
let {referer={},text}=obj;
//仅为小程序自身按扭状态下显示toast,共它方式调用
/*
referer = 0 ,一般提示
referer = 1 , 语音来源。
*/
if(referer.value==0){
my.showToast({type: 'none',content: text});
}else if( referer.value==1 ){
if(my.canIUse('aliauto.say') && this.data.ishide){
my.aliauto.say({spokenText: text,writtenText:text,tips:text});
}else{
my.showToast({type: 'none',content: text});
}
}else{
my.showToast({type: 'none',content: text});
}
},
//end notice
onUnload() {
// 页面被关闭
},
onTitleClick() {
// 标题被点击
},
onPullDownRefresh() {
// 页面被下拉
},
onReachBottom() {
// 页面被拉到底部
},
onShareAppMessage() {
// 返回自定义分享信息
},
});