Merge branch 'dev' 4.8

This commit is contained in:
zoujiandong
2026-04-08 09:04:32 +08:00
29 changed files with 608 additions and 464 deletions
+187 -92
View File
@@ -38,6 +38,9 @@
id="myVideo"
object-fit="contain"
:autoplay="false"
@play="onVideoPlay"
@pause="onVideoPause"
@ended="onVideoEnded"
@error="onVideoError"
></video>
<!-- <sunny-video
@@ -252,7 +255,7 @@
<script setup>
import { ref, nextTick } from "vue";
//import uniVideo from "@/components/uniVideo/uniVideo.vue";
import { onLoad, onShow,onReady,onUnload } from "@dcloudio/uni-app";
import { onLoad, onShow,onReady,onUnload,onHide } from "@dcloudio/uni-app";
import unidialog from "@/components/dialog/dialog.vue";
import collectImg from "@/static/icon_book_collect_sel.png";
import discollectImg from "@/static/icon_book_collect_nor.png";
@@ -282,6 +285,9 @@ const notEnoughVisible = ref(false);
const notEnoughContent = ref("");
const welfareNum = ref(0);
const isPlaying = ref(false);
const playTime = ref(0);
const timer = ref(null);
const hasPlay = ref(false);
// 删除弹窗相关
const showDeleteModal = ref(false);
const currentDeleteItem = ref(null);
@@ -314,7 +320,29 @@ const onFullscreenChange = (e) => {
};
const onVideoPlay = () => {
isPlaying.value = true;
hasPlay.value = true;
timer.value = setInterval(() => {
playTime.value++;
}, 1000);
};
const onVideoPause = () => {
isPlaying.value = false;
if(timer.value) {
clearInterval(timer.value);
timer.value = null;
}
};
const onVideoEnded = () => {
isPlaying.value = false;
if(timer.value) {
clearInterval(timer.value);
timer.value = null;
}
};
onHide(() => {
});
// const playVideo = () => {
// videoContext.value.play();
// };
@@ -473,20 +501,20 @@ const useWelfareNum = async () => {
if (res.code == 1) {
uni.showToast({ title: "使用次数成功", icon: "none" });
welfareNum.value--;
// uni.sendNativeEvent("portraitReport",{
// msg:{
// event_nickname: "viorder_deo_download",
// page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
// resource_name:videoInfo.value.name,
// resource_option:tags.value?tags.value:'',
// event_unit:'分',
// number:1,
// event_val:0,
// },
// },
// (ret) => {
// console.log(ret);
// });
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "viorder_deo_download",
page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
resource_name:videoInfo.value.name,
resource_option:tags.value?tags.value:'',
event_unit:'分',
number:1,
event_val:0,
},
},
(ret) => {
console.log(ret);
});
addDownloadTask({
url: videoSrc.value,
id: video_uuid.value,
@@ -506,22 +534,10 @@ const onVideoError = (e) => {
const videoDetail = async (flag = false) => {
const res = await api.videoDetail({ video_uuid: video_uuid.value });
if (res.code == 200) {
// if(flag) {
// uni.sendNativeEvent("portraitReport",{
// msg:{
// event_nickname: "detail_page",
// page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
// resource_name:videoInfo.value.name,
// resource_option:tags.value?tags.value:''
// },
// },
// (ret) => {
// console.log(ret);
// });
// }
const userInfo = uni.getStorageSync("userInfo");
videoInfo.value = res.video;
tags.value = res.video.tags;
//hasDownload.value = downLoadList.value.includes(video_uuid.value);
let vid =res.video.polyv_uuid || extractPolyvVid(res.video.content);
console.log(222222);
@@ -539,6 +555,24 @@ const videoDetail = async (flag = false) => {
"/video/hcp_detial?share=1&uuid=" +
video_uuid.value +
"&expertshare=videoshare&fromtype=doctor";
console.log(videoInfo.value.name)
if(flag) {
try {
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "detail_page",
page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
resource_name:videoInfo.value.name,
resource_option:tags.value?tags.value:''
},
},
(ret) => {
console.log(ret);
});
} catch (error) {
}
}
}
};
const collection = async () => {
@@ -548,17 +582,17 @@ const collection = async () => {
});
if (res.code == 200) {
uni.showToast({ title: "收藏成功", icon: "none" });
// uni.sendNativeEvent("portraitReport",{
// msg:{
// event_nickname: "collect",
// page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
// resource_name:videoInfo.value.name,
// resource_option:tags.value?tags.value:'',
// },
// },
// (ret) => {
// console.log(ret);
// });
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "collect",
page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
resource_name:videoInfo.value.name,
resource_option:tags.value?tags.value:'',
},
},
(ret) => {
console.log(ret);
});
videoDetail();
}
};
@@ -646,8 +680,65 @@ const resumeDownloadingTasks = () => {
});
};
onUnload(() => {
console.log('onUnload');
uni.$off('selectedChatPatientsSingle');
uni.$off('replySuccess', handleReplySuccess);
if(timer.value) {
clearInterval(timer.value);
timer.value = null;
};
if(hasPlay.value) {
let id=videoInfo.value.polyv_uuid || extractPolyvVid(videoInfo.value.content);
console.log(id);
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "watch_video",
page_type:'',
resource_name:id,
resource_option:tags.value?tags.value:'',
event_val:playTime.value,
event_unit:'秒',
},
});
}
});
const replySuccessLocked = ref(false);
const lastReplySuccessAt = ref(0);
const runReplySuccessOnce = (action) => {
const now = Date.now();
if (replySuccessLocked.value) return false;
if (now - Number(lastReplySuccessAt.value || 0) < 1000) return false;
replySuccessLocked.value = true;
lastReplySuccessAt.value = now;
try {
action && action();
return true;
} finally {
setTimeout(() => {
replySuccessLocked.value = false;
}, 300);
}
};
const handleReplySuccess = () => {
runReplySuccessOnce(() => {
console.log('reply-success');
try {
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "comment",
page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
resource_name:videoInfo.value.name,
resource_option:tags.value?tags.value:'',
},
},
(ret) => {
console.log(ret);
});
} catch (error) {
}
});
};
onShow(() => {
uni.$on('selectedChatPatientsSingle',(data)=>{
console.log(data)
@@ -656,6 +747,8 @@ onShow(() => {
addGroupSendMsg4YunXin()
}
});
uni.$off('replySuccess', handleReplySuccess);
uni.$on('replySuccess', handleReplySuccess);
hasDownload.value = false;
downLoadStatus.value = 'start';
console.log('onShow');
@@ -774,17 +867,17 @@ const shareToWechat = () => {
addpoint();
}
// uni.sendNativeEvent("portraitReport",{
// msg:{
// event_nickname: "share",
// page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
// resource_name:videoInfo.value.name,
// resource_option:tags.value?tags.value:'',
// },
// },
// (ret) => {
// console.log(ret);
// });
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "share",
page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
resource_name:videoInfo.value.name,
resource_option:tags.value?tags.value:'',
},
},
(ret) => {
console.log(ret);
});
// #ifdef APP-PLUS
// 使用系统分享
uni.downloadFile({
@@ -885,17 +978,17 @@ const shareToMoments = () => {
if(type.value == 'patientVideo') {
addpoint();
}
// uni.sendNativeEvent("portraitReport",{
// msg:{
// event_nickname: "share",
// page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
// resource_name:videoInfo.value.name,
// resource_option:tags.value?tags.value:'',
// },
// },
// (ret) => {
// console.log(ret);
// });
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "share",
page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
resource_name:videoInfo.value.name,
resource_option:tags.value?tags.value:'',
},
},
(ret) => {
console.log(ret);
});
// #ifdef APP-PLUS
uni.downloadFile({
url: isAndroid?docUrl + videoInfo.value.imgpath:'https://doc.igandan.com/app/html/img/2016/20160714132557.png',
@@ -1003,6 +1096,7 @@ const from = ref('');
const type = ref('');
// 使用uni-app的onLoad生命周期
onLoad((options) => {
console.log(options);
if(options.type) {
type.value = options.type;
}
@@ -1015,11 +1109,12 @@ onLoad((options) => {
},
});
console.log('enrtyVideoDetail');
uni.sendNativeEvent('enrtyVideoDetail', {
msg: 'enrtyVideoDetail'
}, ret => {
console.log(ret);
})
//这个是处理关于滋滋声的问题,不能删掉
uni.sendNativeEvent('enrtyVideoDetail', {
msg: 'enrtyVideoDetail'
}, ret => {
console.log(ret);
})
video_uuid.value = options.id;
from.value = options.from;
if(from.value != 'download') {
@@ -1073,20 +1168,20 @@ const payVideoDownload = async () => {
const res = await api.payVideoDownload({ video_uuid: video_uuid.value });
console.log(res);
if (res.code == 200) {
// uni.sendNativeEvent("portraitReport",{
// msg:{
// event_nickname: "viorder_deo_download",
// page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
// resource_name:videoInfo.value.name,
// resource_option:tags.value?tags.value:'',
// event_unit:'积分',
// number:1,
// event_val:videoInfo.value.point,
// },
// },
// (ret) => {
// console.log(ret);
// });
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "viorder_deo_download",
page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
resource_name:videoInfo.value.name,
resource_option:tags.value?tags.value:'',
event_unit:'积分',
number:1,
event_val:videoInfo.value.point,
},
},
(ret) => {
console.log(ret);
});
addDownloadTask({
url: videoSrc.value,
id: video_uuid.value,
@@ -1168,17 +1263,17 @@ const addCommentV2 = async () => {
if (res.code == 200) {
uni.showToast({ title: "评论成功", icon: "none" });
commentText.value = "";
// uni.sendNativeEvent("portraitReport",{
// msg:{
// event_nickname: "comment",
// page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
// resource_name:videoInfo.value.name,
// resource_option:tags.value?tags.value:'',
// },
// },
// (ret) => {
// console.log(ret);
// });
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "comment",
page_type: type.value == 'patientVideo' ? '患教视频' : "肝胆视频",
resource_name:videoInfo.value.name,
resource_option:tags.value?tags.value:'',
},
},
(ret) => {
console.log(ret);
});
videoCommentListV2();
}
};