import behavior from '~/mixins/video' import { submitPlayLog } from '~/api/video' let _observer let timer; let preId = '' Component({ behaviors: [behavior], properties: { worksList: { type: Array, value: [], observer(newVal) { this.setData({ worksListCopy: newVal }) if (this.properties.autoPlay) { // 自动播放 this._observer = this.createIntersectionObserver({ observeAll: true }) this._observer.relativeTo('.playLine') .observe('.videoPreview', (res) => { let intersectionRatio = res.intersectionRatio if (intersectionRatio > 0 && preId != res.dataset.id) { clearTimeout(timer); timer = setTimeout(() => { preId = res.dataset.id submitPlayLog({ userReadId: res.dataset.id, playStopTime: 1000 }) // 0视频1音频 if (res.dataset.type == 0) { this.resetAudio(); this.setData({ currentId: res.dataset.id, }) } else { this.playAudio({ currentTarget: { dataset: res.dataset } }) } }, 600); } }) } } }, // 是否自动播放 autoPlay: { type: Boolean, value: true }, videoType: { type: String, // value 为public时是默认公共样式,为my时为“我的”样式,展示下载删除是否公开,pk为pk的样式文案,collection为收藏时的样式, value: 'public', }, // 是否在tabbar页面使用 tabBarPadding: { type: Boolean, value: false, } }, data: { worksListCopy: {} }, lifetimes: { detached: function () { // 在组件实例被从页面节点树移除时执行 this.resetAudio() }, }, methods: { setListFans({ detail }) { let worksListCopy = JSON.parse(JSON.stringify(this.data.worksListCopy)) worksListCopy.forEach(item => { if (item.user.uid == detail) { item.isFans = true } }) this.setData({ worksListCopy }) }, addCommentNum({ detail }) { let worksListCopy = this.data.worksListCopy let index = worksListCopy.findIndex(item => { return item.userRead.id == detail }) if (index != -1) { this.setData({ [`worksListCopy[${index}].userRead.commentAmount`]: ++worksListCopy[index].userRead.commentAmount }) } }, deleteVideo({ detail }) { let worksListCopy = this.properties.worksListCopy.filter(item => { return item.userRead.id != detail }) this.setData({ worksListCopy }) this.resetAudio() }, }, })