miue-ui
Version:
ali miniProgram UI components for vehicle.
301 lines (269 loc) • 6.8 kB
JavaScript
/**
* author:dansion@163.com
* data:2022-04-25
* version:V1.0.0
*/
import request from 'miue-ui/modules/request';
const SERVER={};
// 主机域名
const _HOST='yourdomin.com';
// 频首菜单请求地址 - :分类
SERVER.CHANNELS=`${_HOST}/api/channels`;
// 直播频道请求地址:
// /api/radios?offset=0&limit=10&area= &app_id=xxx&time_sta mp=1605756441&sign=06fbe97b5edd17e39985254613bf20637180c98f
SERVER.LIVES=`${_HOST}/api/lives`;
// 推荐内容加载请求地址
SERVER.RECOMMEND=`${_HOST}/api/album/recommend`;
// 专栏列表,入参为频道ID,获取当前频道的专栏内容。 {{host}}/api/albums?classify_id=3500364198855682&app_id=xxxx&sign= 110484cjfklf&time_stamp=3333
SERVER.COLUMNS=`${_HOST}/api/columns`;
// 专辑列表,入参为专辑ID,获取肖前专辑的列表内容。
SERVER.ALBUM=`${_HOST}/api/albums`;
// 定义 http headers 信息
let headers={
"Content-Type": "application/json"
};
SERVER.GET=(url,data={},method="GET",enableCache=false)=>{
// 频道菜列表- 数据
let {page,pagesize,id}=data;
let _resFormart; // 定义返回数据格式化函数
let _header=headers; // 定入请求的http头
let _data={}; // 定义发起请求的入参数据
data.max=99; // 设置列表最大长度数据
// 额外处理直播列表的数据
if(url==SERVER.LIVES){
//_header= live_headers; // 直播电台的的Header有别于
_resFormart=SERVER.formatLiveList;
enableCache=true; // 是否开启缓存
}
// 频道
if(url==SERVER.CHANNELS){
_resFormart=SERVER.formatChannelList;
enableCache=false; // 是否开启缓存
}
// 专栏列表 - 数据
if(url==SERVER.COLUMNS){
enableCache=false; // 是否开启缓存
_data.id=id;
_data.page=page;
_data.pagesize=pagesize;
_resFormart=SERVER.formatColunmList;
}
// 专辑详情 - 数据数据
if(url==SERVER.ALBUM){
enableCache=false; // 是否开启缓存
_data.id=id;
_data.page=page;
_data.pagesize=pagesize;
_resFormart=SERVER.formatAlbumList;
}
// 推荐数据列表
if(url==SERVER.RECOMMEND){
enableCache=false; // 是否开启缓存
_data.id=id;
_data.page=page;
_data.pagesize=pagesize;
_resFormart=SERVER.formatAlbumList;
}
let timestamp = Math.ceil(new Date().getTime()/1000); // 时间戳
//_data["app_id"] = _CONFIG.appId;
_data["time_stamp"] = timestamp;
// 对入参进行重排;
let querydata = _data;
// 开始请求数据
return new Promise((resolve, reject) => {
if(my.isIDE){
if(_HOST=='yourdomin.com'){
console.warn(`请配置你的服务器相关信息,可复制sandwich/server.api.js 至小程序项目根目录并修订代码,同时调整 sandwicth.js 的 import源为 '/server.api' `);
}
}
request.request({method:method,url:url,data:querydata,headers:_header,enableCache:enableCache}).then(
(res)=>{
// 新加的数据列表达到一页长度时候
//console.log(res);
let returnList=_resFormart(res.data);
resolve(returnList);
},
(err)=>{
reject(err);
}
);
});
};
// 对电台数据接口返回的结果进行格式化
SERVER.formatLiveList=(res)=>{
let arr=res.con;
//console.log(arr);
let listData=[];
listData.push({
id:'XXXXXXXXXX',
album:'album',
picture:'logo url',
src:'audiod url',
singer:'singer',
artist:'artist',
title:'title',
});
/*
arr.forEach((ele,idx) => {
listData.push({
id:ele.broadCastId,
album:ele.broadCastName,
picture:ele.logoUrl,
src:ele.playUrl,
singer:ele.con.anchorperson,
artist:ele.con.anchorperson,
title:ele.con.name,
})
});
*/
return {list:listData,total:res.count,style:'tile'};
}
// 对频道数据接口返回的结果行进格式化
/*
返回数据
{
total:0,
list:[
{
id:'唯一标识',
type:‘频道菜单标识位’,
text:‘频道名称’,
disabled:'图片',
}
]
}
*/
SERVER.formatChannelList=(res)=>{
let arr= res.data;
let listData=[];
listData.push({
id:'',
type:'all',
text:'全部',
disabled:false,
})
listData.push({
id:'',
type:'all',
text:'全部',
disabled:false,
})
/*
arr.forEach((ele,idx) => {
//if(ele.length>4){
listData.push({
id:ele.id,
type:ele.id,
text:ele.name,
disabled:false,
})
//}
});
*/
return {list:listData};
}
// 对专栏数据接口返回的结果进行格式化----------------------
/*
返回数据
{
total:0,
list:[
{
id:'唯一标识',
title:‘标题’,
picture:'图片',
artist:'艺术家',
singer:'演唱者',
}
]
}
*/
SERVER.formatColunmList=(res)=>{
console.log(res);
let arr=res.data.items;
let total=res.data.total;
let listData=[];
listData.push({
id:'XXXXXXXXXX',
title:'title',
picture:'logo url',
singer:'singer',
artist:'artist',
});
/*
arr.forEach((ele,idx) => {
listData.push({
id:ele.id,
title:ele.name,
picture:ele.image_url,
artist:ele.brief,
singer:'',
})
});
*/
return {list:listData,total:total,style:'tile'};
};
// 对专辑详情的接口返回的数据进行格式化----------------------
/*
返回数据
{
total:0,
list:[
{
id:'唯一标识',
src:'',
title:‘标题’,
singer:'演唱者',
album:'专辑',
comment:'评论',
genre:'类型',
track:'轨道',
picture:'图片',
update:'更新时间',
}
]
}
*/
SERVER.formatAlbumList=(res,album='')=>{
//console.log(res);
let arr=res.data.items;
let total=res.data.total;
let listData=[];
// listData.total=res.count;
arr.forEach((ele,idx) => {
if(ele.DURATION=="00:00:00"){
ele.DURATION='';
}
listData.push({
id:ele.id,
src:ele.play_url,
title:ele.name,
singer:ele.announcer.name,
album:'',
comment:'',
genre:'',
track:`${idx}`,
picture:ele.image_url,
update:ele.issue_date,
})
});
return {list:listData,total:total};
};
// 对推荐列表的数据进行格式化
SERVER.formatRecommendList=(res)=>{
//console.log(res);
let arr=res.data;
let listData=[];
arr.forEach((ele,idx) => {
listData.push({
id:ele.ID,
title:ele.S_COLUMN_NAME,
picture:ele.S_COLUMN_ICON,
artist:'',
singer:'',
})
});
return {list:listData,total:9,style:'tile'};
}
my.MIUE_SERVER=SERVER;
export default SERVER;