From afab3a98a65f7fb4f342251238ab3c329e4242dd Mon Sep 17 00:00:00 2001
From: inleft <inleft@qq.com>
Date: Tue, 30 Aug 2022 18:44:23 +0800
Subject: [PATCH] 调整统计脚本渲染逻辑 新增自定义表情组件

---
 src/components/mini/box16-videoDetail.vue |  198 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 148 insertions(+), 50 deletions(-)

diff --git a/src/components/mini/box16-videoDetail.vue b/src/components/mini/box16-videoDetail.vue
index 8874d56..feb99a5 100644
--- a/src/components/mini/box16-videoDetail.vue
+++ b/src/components/mini/box16-videoDetail.vue
@@ -1,13 +1,24 @@
 <template>
 	<div>
+		<div v-if="showBackButton">
+			<a-button @click="()=>this.$router.back(-1)" style="position: sticky;">
+				<a-icon type="left" />
+			</a-button>
+		</div>
 		<div class="boxMain">
-			<videoPlayBox ref="videoPlayBox"></videoPlayBox>
-		</div>
-		<div style="padding: 20px 20px 5px;" class="myShadow">
-			<pre>{{introduce}}</pre>
-		</div>
-		<div class="articleComment">
-			<comment ref="myComment" :articleId="articleId" :isAllowedComment="isAllowedComment" :foldReply="true" />
+			<div class="playBox" v-bind:class="{ fadeInLeft: this.$attrs.showFade,fade: !this.$attrs.showFade }">
+				<videoPlayBox ref="videoPlayBox" @swichPlay="swichPlay"></videoPlayBox>
+			</div>
+			<div
+				v-bind:class="{ showButtonMargin:( showBackButton ) ,fadeInRight: this.$attrs.showFade,fade: !this.$attrs.showFade }">
+				<div class="introduce myShadow" v-if="introduce!=''">
+					<pre style="white-space: pre-line;">{{introduce}}</pre>
+				</div>
+				<div class="articleComment ">
+					<comment ref="myComment" :articleId="articleId" :isAllowedComment="isAllowedComment"
+						:foldReply="true" />
+				</div>
+			</div>
 		</div>
 	</div>
 
@@ -29,47 +40,98 @@
 			videoPlayBox,
 			comment,
 		},
+		created() {
+			if (this.$route.query.id != undefined && this.$route.query.id != null && this.$route.query.id != "") {
+				let item = {
+					id: this.$route.query.id,
+					isAllowedComment: this.isAllowedComment,
+					introduce: this.introduce,
+				}
+				this.showVideo(item);
+				this.showBackButton = true;
+			}
+		},
+		deactivated() {
+			if (this.showBackButton) {
+				this.$emit('detailBackAction', {
+					id: this.articleId,
+					isAllowedComment: this.isAllowedComment,
+					introduce: this.introduce,
+				})
+			}
+		},
 		watch: {
-			// '$route'(to, from) {
-			// 	if ("mdDetail" === to.name) {
-			// 		this.articleId = this.$route.query.id;
-			// 		this.articleFileType = this.$route.query.articleFileType;
-			// 	}
-			// },
+			'$route'(to, from) {
+				if ("videoDetail" === to.name) {
+					let item = {
+						id: this.$route.query.id,
+						isAllowedComment: this.isAllowedComment,
+						introduce: this.introduce,
+					}
+					this.showVideo(item);
+					this.showBackButton = true;
+				}
+			},
 			articleId: function(newValue, oldValue) {
 				if (newValue == undefined || newValue == null || newValue == "") {
 					this.errorMsg = "日志id参数缺失";
 				} else {
-					this.$nextTick(function() {
-						this.$refs.myComment.updateCommentList(this.articleId);
-					})
+					if (this.newValue != this.oldValue) {
+						this.$nextTick(function() {
+							this.$refs.myComment.updateCommentList(this.articleId);
+						})
+					}
 				}
 			},
 		},
 		data() {
 			return {
+				loadFinish: false,
+				showBackButton: false,
 				articleId: "",
 				lastArticleId: "",
 				isAllowedComment: false,
 				introduce: "",
 				secret: "",
 				myLock: false,
+				showFade: true,
 				videoData: {
-					img: "http://t.inleft.com/share/media_photo/idea_beijing.jpg",
+					pic: "",
 					url: "",
-					type: "normal"
+					type: "normal",
+					title: "",
+					introduce: "",
+					id: ""
 				}
 			}
 		},
 		methods: {
+			swichPlay(videoData) {
+				this.introduce = videoData.introduce;
+				this.articleId = videoData.id
+				this.$refs.myComment.updateCommentList(videoData.id);
+			},
 			showVideo(item) {
+				this.showBackButton = false;
+
+				//防止重复加载
 				this.lastArticleId = this.articleId;
 				this.articleId = item.id
-				this.isAllowedComment = item.isAllowedComment
-				this.introduce = item.introduce
-				this.loadData()
+
+				if (this.articleId == this.lastArticleId) {
+					return
+				}
+
+				this.isAllowedComment = item.isAllowedComment;
+				this.introduce = item.introduce;
+				this.loadData();
+
 			},
 			loadData() {
+
+				if (this.$refs.videoPlayBox != undefined && this.$refs.videoPlayBox.isPlaying) {
+					this.$message.info("视频源已切换..", 6)
+				}
 
 				if (this.myLock) {
 					this.$message.info("正在努力加载中..", 3)
@@ -78,10 +140,10 @@
 
 				let _this = this;
 				queryBlogArticleDetail({
-					id: this.articleId,
-					authWord: this.secret == "" ? null : md5(this.secret)
+					id: _this.articleId,
+					authWord: _this.secret == "" ? null : md5(_this.secret)
 				}).then((res) => {
-					this.myLock = true;
+					this.myLock = !this.myLock;
 
 					if (res.code != 200) {
 
@@ -98,23 +160,33 @@
 								placement: 'bottomRight'
 							});
 						}
+						this.myLock = !this.myLock;
 						return
 					}
 
-					this.isAllowedComment = res.data.isAllowedComment;
-					this.videoData.url = res.data.articleFileURL;
-					this.videoData.img = res.data.coverFileURL;
-					if (res.data.articleFileURL != null &&
-						res.data.articleFileURL != "" &&
-						res.data.articleFileURL.endsWith("m3u8")) {
-						this.videoData.type = "customHls";
+					if (res.data.videoUrlList == null || res.data.videoUrlList.length < 1) {
+						this.$notification.error({
+							message: '此视频还没有上传资源..',
+							placement: 'bottomRight'
+						});
+						this.videoData.url = "";
 					} else {
-						this.videoData.type = "normal";
+						this.videoData.url = res.data.videoUrlList[0];
 					}
 
-					this.myLock = false;
+					this.isAllowedComment = res.data.isAllowedComment;
+					this.introduce = res.data.introduce;
+
+
+					this.videoData.pic = res.data.coverFileURL;
+					this.videoData.title = res.data.title;
+					this.videoData.introduce = res.data.introduce;
+					this.videoData.id = res.data.id;
+
+					this.myLock = !this.myLock;
 					if (this.lastArticleId != this.articleId) {
-						_this.$refs.videoPlayBox.changePlay(this.videoData)
+						let tempParam = JSON.parse(JSON.stringify(this.videoData))
+						_this.$refs.videoPlayBox.startPlay(tempParam)
 					}
 				})
 
@@ -122,25 +194,51 @@
 		},
 	}
 </script>
-<style scoped>
-	a {
-		color: black;
-	}
-
-	pre {
-		font-family: 'HYTangMeiRen';
-		src: url("http://t.inleft.com/share/z%E5%AD%97%E4%BD%93%E5%BA%93/hytmr55%E6%B1%89%E4%BB%AA%E5%94%90%E7%BE%8E%E4%BA%BA%E5%AD%97%E4%BD%93.woff") format("truetype");
-	}
-
+<style lang="less">
 	.boxMain {
-		display: flex;
-		justify-content: center;
-		padding: 5px 20px;
+		user-select: none;
+		grid-template-columns: repeat(2, 1fr);
+		display: grid;
+		clear: both;
+		grid-row-gap: 2rem;
+		max-height: 100%;
+
+		a {
+			color: black;
+		}
+
+		.playBox {
+			display: flex;
+			justify-content: center;
+			padding: 35px 0px;
+		}
+
+		.showButtonMargin {
+			margin: 75px 0px 0px 0px;
+		}
+
+		.myShadow {
+
+			box-shadow: 8px 8px 18px rgba(0, 0, 0, 0.1),
+				-8px -8px 18px #ffffff;
+		}
+
+		.introduce {
+			padding: 20px 20px 5px;
+			margin-bottom: 20px;
+		}
 	}
 
-	.myShadow {
 
-		box-shadow: 8px 8px 18px rgba(0, 0, 0, 0.1),
-			-8px -8px 18px #ffffff;
+
+	@media screen and (max-width: 1023px) {
+		.boxMain {
+			grid-template-columns: repeat(1, 1fr);
+			gap: 0rem;
+		}
+
+		.showButtonMargin {
+			margin: 0px;
+		}
 	}
 </style>

--
Gitblit v1.9.1