一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天,点击查看活动详情。
发现音乐
项目已经创建完毕
布局 已经写好,路由 和 Element-ui 已经整合完毕
项目跑起来 npm run serve
基础模板可点击此处下载(播放器布局)
发现音乐 | 轮播图
- 安装并导入
axios - 在
created生命周期函数中调用轮播图接口 - 获取到数据并渲染到页面上
所有接口的请求方式都是get
说明 : 调用此接口 , 可获取 banner( 轮播图 ) 数据
接口地址:autumnfish.cn/banner
import axios from 'axios'
export default {
name: 'discovery',
data(){
return {
bannerList:[], //轮播图
recomList:[], //推荐歌单
newList:[], //最新音乐
mvList:[], //推荐mv
}
},
created() {
//调用轮播图接口
axios({
url:'https://autumnfish.cn/banner',
method:'get',
}).then(res => {
// console.log(res);
this.bannerList = res.data.banners
})
}
};
发现音乐 | 推荐歌单
说明 : 调用此接口 , 可获取推荐歌单
可选参数 : limit: 获取数量 , 默认为 30 (不支持 offset)
接口地址 : autumnfish.cn/personalize…
- 在
created生命周期函数中调用推荐歌单接口 - 获取到数据并渲染到页面上
//调用推荐歌单接口
axios({
url:'https://autumnfish.cn/personalized',
params:{
limit:15
},
method:'get',
}).then(res => {
// console.log(res);
this.recomList = res.data.result
})
发现音乐 | 最新音乐
说明 : 调用此接口 , 可获取最新音乐
接口地址 : autumnfish.cn/personalize…
//最新音乐接口
axios({
url:'https://autumnfish.cn/personalized/newsong',
method:'get'
}).then(res => {
// console.log(res);
this.newList = res.data.result
})
发现音乐 | 点击播放
播放歌曲
说明 : 调用此接口 , 传入音乐
id, 可获得歌曲播放地址
参数 : id: 音乐 id, 如 id=347230
接口地址 : autumnfish.cn/song/url
-
为
播放按钮绑定点击事件<span class="iconfont icon-play" @click="playMusic(item.id)"></span> -
调用 获取
播放音乐接口 -
把获取到的播放地址,通过
$parent传递给父组件(index.vue)
methods:{
playMusic(id){
// console.log(id)
axios({
url:'https://autumnfish.cn/song/url',
method:'get',
params:{
id // k-v一致可简写
}
}).then(res => {
// console.log(res)
let url = res.data.data[0].url
//设置父组件的播放地址
this.$parent.musicUrl = url
})
}
}
发现音乐 | 推荐MV
说明 : 调用此接口 , 可获取推荐 mv
接口地址 : autumnfish.cn/personalize…
//调用最新mv接口
axios({
url:'https://autumnfish.cn/personalized/mv',
method:'get'
}).then(res => {
//console.log(res);
this.mvList = res.data.result
})
推荐歌单 | 分类切换
-
点击分类时,当前分类
高亮<!-- tab栏 顶部 --> <div class="tab-bar"> <span class="item" :class="{active:tag=='全部'}" @click="tag='全部'">全部</span> <span class="item" :class="{active:tag=='欧美'}" @click="tag='欧美'">欧美</span> <span class="item" :class="{active:tag=='华语'}" @click="tag='华语'">华语</span> <span class="item" :class="{active:tag=='流行'}" @click="tag='流行'">流行</span> <span class="item" :class="{active:tag=='说唱'}" @click="tag='说唱'">说唱</span> <span class="item" :class="{active:tag=='摇滚'}" @click="tag='摇滚'">摇滚</span> <span class="item" :class="{active:tag=='民谣'}" @click="tag='民谣'">民谣</span> <span class="item" :class="{active:tag=='电子'}" @click="tag='电子'">电子</span> <span class="item" :class="{active:tag=='轻音乐'}" @click="tag='轻音乐'">轻音乐</span> <span class="item" :class="{active:tag=='影视原声'}" @click="tag='影视原声'">影视原声</span> <span class="item" :class="{active:tag=='ACG'}" @click="tag='ACG'">ACG</span> <span class="item" :class="{active:tag=='怀旧'}" @click="tag='怀旧'">怀旧</span> <span class="item" :class="{active:tag=='治愈'}" @click="tag='治愈'">治愈</span> <span class="item" :class="{active:tag=='旅行'}" @click="tag='旅行'">旅行</span> </div> -
顶部数据切换、底部数据切换
歌单列表 - 精品歌单
说明 : 调用此接口 , 可获取精品歌单
可选参数 :
limit: 取出歌单数量 , 默认为 20cat: 歌单的标签,可选值如下
全部 欧美 华语 流行 说唱 摇滚 民谣 电子 轻音乐 影视原声 ACG 怀旧 治愈 旅行接口地址 : autumnfish.cn/top/playlis…
歌单列表 - 歌单列表
说明 : 调用此接口 , 可获取网友精选碟歌单
可选参数 :
limit:获取的个数offset: 偏移数量 , 用于分页 , 如 :( 页数 -1)*20, 其中 20 为 limit 的值cat: 歌单的标签, 可选值如下
全部 欧美 华语 流行 说唱 摇滚 民谣 电子 轻音乐 影视原声 ACG 怀旧 治愈 旅行接口地址 : autumnfish.cn/top/playlis…
-
在数据改变的时候需要执行逻辑,可以使用侦听器
watch来实现
watch:{
tag(){
// console.log(this.tag)
//顶部的 精品歌单
axios({
url:'https://autumnfish.cn/top/playlist/highquality',
methods:'get',
params:{
limit:1,
cat:this.tag
}
}).then(res => {
// console.log(res);
this.topList = res.data.playlists[0]
})
//歌单列表
axios({
url:'https://autumnfish.cn/top/playlist/',
method:'get',
params:{
limit:10,
offset:0,
cat:this.tag
}
}).then(res => {
console.log(res);
this.playList = res.data.playlists
})
}
}
这里反复用到数据接口代码,可以抽取出重复使用的代码,封装为一个方法,需要的时候调用即可
methods: {
handleCurrentChange(val) {
// console.log(`当前页: ${val}`);
//保存页码
this.page = val
//重新获取数据
this.listData()
},
//抽取的方法1 顶部的数据
topData() {
axios({
url: "https://autumnfish.cn/top/playlist/highquality",
methods: "get",
params: {
limit: 1,
//分类数据
cat: this.tag,
},
}).then((res) => {
// console.log(res);
this.topList = res.data.playlists[0];
});
},
//抽取的方法2 列表数据
listData() {
axios({
url: "https://autumnfish.cn/top/playlist/",
method: "get",
params: {
limit: 10,
//起始的值 (页码-1)*每一页多少条数据
offset: (this.page-1)*10,
cat: this.tag,
},
}).then((res) => {
// console.log(res);
//保存总条数
this.total = res.data.total
this.playList = res.data.playlists;
});
},
},
created(){
//顶部的 精品歌单
this.topData();
//歌单列表
this.listData();
},
watch: {
tag() {
// console.log(this.tag)
//顶部的 精品歌单
this.topData();
//歌单列表
this.listData();
//切换标签时 修改页码为1
this.page = 1
},
},
最新音乐 | 歌曲列表
- 在
created调用最新音乐接口 - 获取到数据之后 渲染到页面上
说明 : 调用此接口 , 可获取最新音乐
必选参数 :
type: 地区类型 id,对应以下:
全部:0
华语:7
欧美:96
日本:8
韩国:16
接口地址 : autumnfish.cn/top/song
import axios from 'axios'
export default {
name: 'songs',
data() {
return {
songList:[], //歌曲列表
};
},
created() {
axios({
url:'https://autumnfish.cn/top/song',
method:'get',
params:{
type:0
}
}).then(res => {
// console.log(res);
this.songList = res.data.data
// 处理时长 毫秒转为分秒
for(let i=0; i<this.songList.length; i++){
//获取到总毫秒数
let duration = this.songList[i].duration
let min = parseInt(duration/1000/60)
min = (min<10 ? '0'+min: min)
let sec = parseInt(duration/1000%60)
sec = (sec<10 ? '0'+sec: sec)
// console.log(min+'|'+sec);
this.songList[i].duration = `${min}:${sec}`
}
})
}
};
最新音乐 | 分类切换
-
点击分类时,当前分类高亮
<span class="item" @click="tag = 0" :class="{ active: tag == 0 }">全部</span> <span class="item" @click="tag = 7" :class="{ active: tag == 7 }">华语</span> <span class="item" @click="tag = 96" :class="{ active: tag == 96 }">欧美</span> <span class="item" @click="tag = 8" :class="{ active: tag == 8 }">日本</span> <span class="item" @click="tag = 16" :class="{ active: tag == 16 }">韩国</span> -
顶部和底部数据切换
-
数据改变时需要执行逻辑,使用侦听器
watch来实现 (同样把重复的代码抽取出来)
import axios from "axios";
export default {
name: "songs",
data() {
return {
songList: [], //歌曲列表
tag: "0", // 分类
};
},
methods: {
//获取列表数据
getSongList() {
axios({
url: "https://autumnfish.cn/top/song",
method: "get",
params: {
//传递设置的数据
type: this.tag,
},
}).then((res) => {
// console.log(res);
this.songList = res.data.data;
// 处理时长 毫秒转为分秒
for (let i = 0; i < this.songList.length; i++){
//获取到总毫秒数
let duration = this.songList[i].duration;
//
let min = parseInt(duration / 1000 / 60);
min = min < 10 ? "0" + min : min;
let sec = parseInt((duration / 1000) % 60);
sec = sec < 10 ? "0" + sec : sec;
// console.log(min+'|'+sec);
this.songList[i].duration = `${min}:${sec}`;
}
});
},
},
created() {
this.getSongList();
},
watch: {
tag() {
this.getSongList();
},
},
};
播放歌曲
说明 : 调用此接口 , 传入音乐
id, 可获得歌曲播放地址
参数 : id: 音乐 id, 如 id=347230
接口地址 : autumnfish.cn/song/url
给播放图标绑定点击事件
<span class="iconfont icon-play" @click="playMusic(item.id)"></span>
编写播放歌曲的方法(调用播放歌曲接口,获取到歌曲url地址,通过this.$parent传递数据到index.vue页面,从而达到修改musicUrl的值)
//播放歌曲
playMusic(id){
axios({
url:'https://autumnfish.cn/song/url',
method:'get',
params:{
id
}
}).then(res => {
// console.log(res);
let url = res.data.data[0].url
this.$parent.musicUrl = url;
})
}
最新MV|MV列表
- 在 created 调用 全部MV 接口
- 获取到数据之后 渲染到页面上,先不考虑分类,和分页
- 播放量的信息,需要处理一下,如果 超过了 10万 就显示 xx万
<script>
//导入axios
import axios from 'axios'
export default {
name: 'mvs',
data() {
return {
// 总条数
total: 20,
// 页码
page: 1,
// 页容量
limit: 8,
//地区
area:"全部",
//排序
order:"上升最快",
//类型
type:"全部",
//查询的结果
list:[],
};
},
created(){
axios({
url:'https://autumnfish.cn/mv/all',
method:'get',
params:{
area:this.area,
type:this.type,
order:this.order,
//数量
limit:this.limit,
//偏移值 分页 (页码-1)*数量
offset:(this.page-1)*this.limit,
}
}).then(res => {
// console.log(res);
this.list = res.data.data
//处理次数
for(let i=0; i<this.list.length; i++){
if(this.list[i].playCount > 100000)
this.list[i].playCount = parseInt(this.list[i].playCount/10000)+'万'
}
})
},
methods: {
toMv(id) {
this.$router.push(`/mv?id=${id}`);
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
}
}
};
</script>
渲染数据到页面:
<div class="items">
<div class="item" v-for="(item,index) in list" :key="item.id">
<div class="img-wrap">
<img :src="item.cover" alt="" />
<div class="num-wrap">
<div class="iconfont icon-play"></div>
<div class="num">{{item.playCount}}</div>
</div>
</div>
<div class="info-wrap">
<div class="name">{{item.name}}</div>
<div class="singer">{{item.artistName}}</div>
</div>
</div>
</div>
最新MV页面 接口文档:
所有接口的请求方式都是
get
全部MV
说明 : 调用此接口 , 可获取全部 mv
可选参数 :
area: 地区,可选值为:全部、内地、港台、欧美、日本、韩国、不填则为全部type: 类型,可选值为:全部、官方版、原生、现场版、网易出品,不填则为全部order: 排序,可选值为:上升最快、最热、最新、不填则为上升最快limit: 取出数量 , 默认为 30offset: 偏移数量 , 用于分页 , 如 :( 页数 -1)*50, 其中 50 为 limit 的值 , 默认 为 0
接口地址 : autumnfish.cn/mv/all
最新MV|分类切换
-
点击分类时,高亮 当前分类
-
顶部数据切换,底部数据切换
-
在数据改变的时候要执行逻辑,可以使用侦听器 watch 来实现,多写几个分类即可
此处列出一个排序(其余分类是类似的)
<div class="order-wrap">
<span class="order-type">排序:</span>
<ul class="tabs-wrap">
<li class="tab">
<span
class="title"
:class="{ active: order == '上升最快' }"
@click="order = '上升最快'"
>上升最快</span
>
</li>
<li class="tab">
<span
class="title"
:class="{ active: order == '最热' }"
@click="order = '最热'"
>最热</span
>
</li>
<li class="tab">
<span
class="title"
:class="{ active: order == '最新' }"
@click="order = '最新'"
>最新</span
>
</li>
</ul>
</div>
//侦听器
watch: {
area(){
//获取数据
this.getList()
},
type(){
//获取数据
this.getList()
},
order(){
//获取数据
this.getList()
}
},
// methods里对获取数据 封装为一个方法 需要时调用即可
最新MV|数据分页
- MV数据 获取到之后,设置 总条数 给 分页组件
- 为分页组件绑定 页码 和 页容量 ,以便进行联动,在调用接口时,一起传递
- 切换分类时,获取 第一页 的数据
- 分页组件 页码切换 时,获取对应页的数据
// 在methods定义分页处理方法
handleCurrentChange(val) {
// console.log(`当前页: ${val}`);
// 保存页码 重新获取数据
this.page = val
this.getList()
},
在侦听器里加上一些处理逻辑:(切换分类时,获取 第一页 的数据)
watch: {
area(){
//返回第一页
this.page = 1
//获取数据
this.getList()
},
type(){
//返回第一页
this.page = 1
//获取数据
this.getList()
},
order(){
//返回第一页
this.page = 1
//获取数据
this.getList()
}
},
搜索
- 组件名叫 result.vue
- 路由地址是:/result
- 页面跳转
- 歌曲搜索
- 歌单搜索
- MV搜索
搜索 | 页面跳转
- 从顶部的 搜索栏 搜索跳转
- 携带数据去往 搜索结果(/result) 页
- 把搜索的关键字渲染到顶部
<!-- 搜索框 -->
<input
type="text"
autocomplete="off"
placeholder="搜索"
class="el-input__inner"
v-model="inputValue"
@keyup.enter="toSearch"
/>
export default {
name: "top",
data() {
return {
query: "",
inputValue: "", // 输入的内容
};
},
methods: {
toSearch() {
//如果为空,提示
if (this.inputValue == "") {
alert("请输入内容!");
} else {
//否则跳转
// this.$router.push('/result')
//携带数据
// this.$router.push("/result?q="+this.inputValue)
this.$router.push(`/result?q=${this.inputValue}`)
}
},
},
};
// 在`result.vue`文件对应位置把携带过去的数据,渲染到页面即可:
// 注意这里参数名 可自行定义(保持一致即可)
<h2 class="title">{{$route.query.q}}</h2>
搜索|歌曲搜索
- 导入 axios
- 在 created 生命周期函数中调用 搜索 接口
- 默认先查询 歌曲 类型
- 把获取到的数据渲染到页面上,顶部的数量 别忘了
- mv图标 和 歌曲时长 需要处理一下
- 这里没有单独的播放按钮,我们双击播放
<el-tab-pane label="歌曲" name="songs">
<table class="el-table">
<thead>
<th></th>
<th>音乐标题</th>
<th>歌手</th>
<th>专辑</th>
<th>时长</th>
</thead>
<tbody>
<tr
class="el-table__row"
v-for="(item, index) in songList"
:key="index"
@dblclick="playMusic(item.id)"
>
<td>{{ index + 1 }}</td>
<td>
<div class="song-wrap">
<div class="name-wrap">
<span>{{ item.name }}</span>
<!-- mv 图标 -->
<span v-if="item.mvid != 0" class="iconfont icon-mv"></span>
</div>
<span></span>
<!-- 二级标题 alias -->
<span v-if="item.alias.length != 0">{{ item.alias[0]}}</span>
</div>
</td>
<td>{{ item.artists[0].name }}</td>
<td>{{ item.album.name }}</td>
<td>{{ item.duration }}</td>
</tr>
</tbody>
</table>
</el-tab-pane>
<script>
//导入axios
import axios from "axios";
export default {
name: "result",
data() {
return {
activeIndex: "songs",
// 保存 查询到的歌曲
songList: [],
//搜索结果的总数
count: 0,
};
},
created() {
// console.log(this.$route.query.q);
axios({
url: "https://autumnfish.cn/search",
method: "get",
params: {
keywords: this.$route.query.q,
type: 1,
limit: 10, // 获取的数据量
},
}).then((res) => {
// console.log(res);
this.songList = res.data.result.songs;
//计算歌曲时间 转换为时分秒
for (let i = 0; i < this.songList.length; i++) {
let min = parseInt(this.songList[i].duration / 1000 / 60);
let sec = parseInt((this.songList[i].duration / 1000) % 60);
if (min < 10) {
min = "0" + min;
}
if (sec < 10) {
sec = "0" + sec;
}
// console.log(min+':'+sec);
//设置给duration即可
this.songList[i].duration = min + ":" + sec;
}
//保存总数
this.count = res.data.result.songCount;
});
},
methods: {
playMusic(id) {
// console.log(id);
axios({
url: "https://autumnfish.cn/song/url",
method: "get",
params: {
id, // k-v一致可简写
},
}).then((res) => {
// console.log(res)
let url = res.data.data[0].url;
//设置父组件的播放地址
this.$parent.musicUrl = url;
});
},
},
};
</script>
搜索 | 歌单搜索
- 在切换到歌单分类的时候,搜索对应的数据,这里使用 watch 实现
- 获取到数据并渲染到页面上,播放次数超过10W 特殊处理一下
<el-tab-pane label="歌单" name="lists">
<div class="items">
<div v-for="(item, index) in playlists" :key="index" class="item">
<div class="img-wrap">
<div class="num-wrap">
播放量:
<span class="num">{{item.playCount}}</span>
</div>
<img :src="item.coverImgUrl" alt="" />
<span class="iconfont icon-play"></span>
</div>
<p class="name">{{item.name}}</p>
</div>
</div>
</el-tab-pane>
<script>
//导入axios
import axios from "axios";
export default {
name: "result",
data() {
return {
//tab切换时 会改变的数据
activeIndex: "songs",
// 保存 查询到的歌曲
songList: [],
//搜索结果的总数
count: 0,
//保存歌单的字段
playlists:[],
};
},
//侦听器
watch: {
activeIndex() {
//songs 歌曲
//lists 歌单
//mv mv
let type = 1;
switch (this.activeIndex) {
case 'songs':
type = 1;
break;
case 'lists':
type = 1000;
break;
case 'mv':
type = 1004;
break;
default:
break;
}
axios({
url: "https://autumnfish.cn/search",
method: "get",
params: {
keywords: this.$route.query.q,
type: type, //简写为: type
limit: 10, // 获取的数据量
},
}).then((res) => {
console.log(res);
if(type==1){
this.songList = res.data.result.songs;
//计算歌曲时间 转换为时分秒
for (let i = 0; i < this.songList.length; i++) {
let min = parseInt(this.songList[i].duration / 1000 / 60);
let sec = parseInt((this.songList[i].duration / 1000) % 60);
if (min < 10) {
min = "0" + min;
}
if (sec < 10) {
sec = "0" + sec;
}
// console.log(min+':'+sec);
//设置给duration即可
this.songList[i].duration = min + ":" + sec;
}
//保存总数
this.count = res.data.result.songCount;
}else if(type==1000){
//歌单的逻辑
this.playlists = res.data.result.playlists
//总数
this.count = res.data.result.playlistCount
//播放次数 处理
for (let i = 0; i < this.playlists.length; i++) {
if(this.playlists[i].playCount>100000){
this.playlists[i].playCount = parseInt(this.playlists[i].playCount/10000) + '万'
}
}
}
});
},
},
};
</script>
搜索 | MV搜索
- 在切换到MV分类的时候,搜索对应的数据,这里使用 watch 实现
- 为了页面布局美观,在获取MV时,个数可以稍微调整一下
<el-tab-pane label="MV" name="mv">
<div class="items mv">
<div v-for="(item, index) in mv" :key="index" class="item">
<div class="img-wrap">
<!-- 封面 -->
<img :src="item.cover" alt="" />
<span class="iconfont icon-play"></span>
<div class="num-wrap">
<div class="iconfont icon-play"></div>
<!-- 播放次数 -->
<div class="num">{{ item.playCount }}</div>
</div>
<!-- 持续时间 -->
<span class="time">{{ item.duration }}</span>
</div>
<div class="info-wrap">
<!-- mv名 -->
<div class="name">{{ item.name }}</div>
<!-- 歌手名 -->
<div class="singer">{{ item.artistName }}</div>
</div>
</div>
</div>
</el-tab-pane>
//导入axios
import axios from "axios";
export default {
name: "result",
data() {
return {
//tab切换时 会改变的数据
activeIndex: "songs",
// 保存 查询到的歌曲
songList: [],
//搜索结果的总数
count: 0,
//保存歌单的字段
playlists: [],
//保存mv的字段
mv: [],
};
},
//回调函数
created() {
// console.log(this.$route.query.q);
axios({
url: "https://autumnfish.cn/search",
method: "get",
params: {
keywords: this.$route.query.q,
type: 1,
limit: 10, // 获取的数据量
},
}).then((res) => {
// console.log(res);
this.songList = res.data.result.songs;
//计算歌曲时间 转换为时分秒
for (let i = 0; i < this.songList.length; i++) {
let min = parseInt(this.songList[i].duration / 1000 / 60);
let sec = parseInt((this.songList[i].duration / 1000) % 60);
if (min < 10) {
min = "0" + min;
}
if (sec < 10) {
sec = "0" + sec;
}
// console.log(min+':'+sec);
//设置给duration即可
this.songList[i].duration = min + ":" + sec;
}
//保存总数
this.count = res.data.result.songCount;
});
},
//侦听器
watch: {
activeIndex() {
//songs 歌曲
//lists 歌单
//mv mv
let type = 1;
//获取个数
let limit = 10;
switch (this.activeIndex) {
case "songs":
type = 1;
limit = 10;
break;
case "lists":
type = 1000;
limit = 10;
break;
case "mv":
type = 1004;
limit = 8;
break;
default:
break;
}
axios({
url: "https://autumnfish.cn/search",
method: "get",
params: {
keywords: this.$route.query.q,
type: type, //简写为: type
//limit: 10, // 获取的数据量
limit,
},
}).then((res) => {
console.log(res);
// 获取歌曲
if (type == 1) {
this.songList = res.data.result.songs;
//计算歌曲时间 转换为时分秒
for (let i = 0; i < this.songList.length; i++) {
let min = parseInt(this.songList[i].duration / 1000 / 60);
let sec = parseInt((this.songList[i].duration / 1000) % 60);
if (min < 10) {
min = "0" + min;
}
if (sec < 10) {
sec = "0" + sec;
}
// console.log(min+':'+sec);
//设置给duration即可
this.songList[i].duration = min + ":" + sec;
}
//保存总数
this.count = res.data.result.songCount;
}
// 获取歌单
else if (type == 1000) {
//歌单的逻辑
this.playlists = res.data.result.playlists;
//总数
this.count = res.data.result.playlistCount;
//播放次数 处理
for (let i = 0; i < this.playlists.length; i++) {
if (this.playlists[i].playCount > 100000) {
this.playlists[i].playCount =
parseInt(this.playlists[i].playCount / 10000) + "万";
}
}
}
else {
//保存mv数据
this.mv = res.data.result.mvs;
//总数
this.count = res.data.result.mvCount;
//处理数据 播放次数 时间
for (let i = 0; i < this.mv.length; i++) {
//时间
let min = parseInt(this.mv[i].duration/1000/60);
let sec = parseInt(this.mv[i].duration/1000%60);
if(min < 10){
min = '0'+min
}
if(sec < 10){
sec = '0'+sec
}
this.mv[i].duration = min + ":" + sec;
//播放次数
if (this.mv[i].playCount > 100000) {
this.mv[i].playCount = parseInt(this.mv[i].playCount/10000) + '万';
}
}
}
});
},
},
};
</script>