|
@@ -1,112 +1,116 @@
|
|
|
import behavior from '~/mixins/video'
|
|
|
import {
|
|
|
- submitPlayLog
|
|
|
+ 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) {
|
|
|
- preId = res.dataset.id
|
|
|
- submitPlayLog({
|
|
|
- userReadId: res.dataset.id,
|
|
|
- playStopTime: 1000
|
|
|
+ behaviors: [behavior],
|
|
|
+ properties: {
|
|
|
+ worksList: {
|
|
|
+ type: Array,
|
|
|
+ value: [],
|
|
|
+ observer(newVal) {
|
|
|
+ this.setData({
|
|
|
+ worksListCopy: newVal
|
|
|
})
|
|
|
- // 0视频1音频
|
|
|
- if (res.dataset.type == 0) {
|
|
|
- this.resetAudio();
|
|
|
- this.setData({
|
|
|
- currentId: res.dataset.id,
|
|
|
- })
|
|
|
- } else {
|
|
|
- this.playAudio({
|
|
|
- currentTarget: {
|
|
|
- dataset: res.dataset
|
|
|
- }
|
|
|
- })
|
|
|
+ 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,
|
|
|
}
|
|
|
- }
|
|
|
- },
|
|
|
- // 是否自动播放
|
|
|
- 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()
|
|
|
+ data: {
|
|
|
+ worksListCopy: {}
|
|
|
},
|
|
|
- },
|
|
|
- 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
|
|
|
- })
|
|
|
+ lifetimes: {
|
|
|
+ detached: function () {
|
|
|
+ // 在组件实例被从页面节点树移除时执行
|
|
|
+ this.resetAudio()
|
|
|
+ },
|
|
|
},
|
|
|
- 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
|
|
|
- })
|
|
|
- }
|
|
|
+ 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
|
|
|
+ })
|
|
|
+ },
|
|
|
},
|
|
|
- deleteVideo({
|
|
|
- detail
|
|
|
- }) {
|
|
|
- let worksListCopy = this.properties.worksListCopy.filter(item => {
|
|
|
- return item.userRead.id != detail
|
|
|
- })
|
|
|
- this.setData({
|
|
|
- worksListCopy
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
})
|