4.2提交

This commit is contained in:
zoujiandong 2026-04-02 11:30:39 +08:00
parent 5f9a346960
commit 5d31c3658b
11 changed files with 208 additions and 74 deletions

View File

@ -2,8 +2,8 @@
"name" : "肝胆相照专家版", "name" : "肝胆相照专家版",
"appid" : "__UNI__89F511F", "appid" : "__UNI__89F511F",
"description" : "", "description" : "",
"versionName" : "4.2.5", "versionName" : "4.2.6",
"versionCode" : 425, "versionCode" : 426,
"transformPx" : false, "transformPx" : false,
"app-plus" : { "app-plus" : {
/* 5+App */ /* 5+App */

View File

@ -949,12 +949,12 @@ const selectProvince = (province) => {
// //
const playVideo = (item) => { const playVideo = (item) => {
uni.sendNativeEvent('noticeBack', { // uni.sendNativeEvent('noticeBack', {
msg: 'go' // msg: 'go'
}, ret => { // }, ret => {
console.log('ret数据'); // console.log('ret');
console.log(ret); // console.log(ret);
}) // })
if(item.status_code==1 || item.status_code==2 || item.status_code==4){ if(item.status_code==1 || item.status_code==2 || item.status_code==4){
let zhiboUrl=OTHER_HOST+'/hcp/setInfo'; let zhiboUrl=OTHER_HOST+'/hcp/setInfo';
let userInfo=uni.getStorageSync('userInfo'); let userInfo=uni.getStorageSync('userInfo');

View File

@ -374,6 +374,11 @@ try {
// //
getMyBonusPoints(); getMyBonusPoints();
getBonusPointsList(); getBonusPointsList();
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "signin"
},
});
// uni.showToast({ // uni.showToast({
// title: ''+res.bonuspoints+'', // title: ''+res.bonuspoints+'',
// icon: 'none' // icon: 'none'

View File

@ -142,7 +142,7 @@
uni.sendNativeEvent("portraitReport",{ uni.sendNativeEvent("portraitReport",{
msg:{ msg:{
event_nickname: "list_page", event_nickname: "list_page",
page_type: "利卡兑换", page_type: "利卡兑换",
}, },
}); });
}) })

View File

@ -924,8 +924,6 @@ function createNativePopup() {
nativeMaskView.value.addEventListener('touchstart', handleMaskClick, false); nativeMaskView.value.addEventListener('touchstart', handleMaskClick, false);
nativePopupView.value.addEventListener('click', handlePanelClick, false); nativePopupView.value.addEventListener('click', handlePanelClick, false);
nativePopupView.value.addEventListener('touchstart', handlePanelClick, false);
nativePopupView.value.addEventListener('touchend', handlePanelClick, false);
// #endif // #endif
} }

View File

@ -76,15 +76,18 @@ const addCommentV2=async()=>{
comment:replyText.value+'||'+name.value+''+comment_partent.value comment:replyText.value+'||'+name.value+''+comment_partent.value
}) })
if(res.code==200){ if(res.code==200){
uni.$emit('replySuccess',true);
console.log('replySuccess')
uni.showToast({ title: '回复成功', icon: 'none' }) uni.showToast({ title: '回复成功', icon: 'none' })
replyText.value = ''; replyText.value = '';
uni.navigateBack(); uni.navigateBack();
} }
} }
onUnmounted(() => { onUnmounted(() => {
// //
console.log('回复页面已卸载') //console.log('')
}) })
// //

View File

@ -699,6 +699,8 @@ const switchTab = (tabIndex) => {
// //
const playVideo = (video) => { const playVideo = (video) => {
const videoId = video.id || video.uuid; const videoId = video.id || video.uuid;
console.log(222);
console.log(video.tags);
navTo({ navTo({
url: `/pages_app/videoDetail/videoDetail?id=${videoId}&tags=${video.tags}`, url: `/pages_app/videoDetail/videoDetail?id=${videoId}&tags=${video.tags}`,

View File

@ -38,6 +38,9 @@
id="myVideo" id="myVideo"
object-fit="contain" object-fit="contain"
:autoplay="false" :autoplay="false"
@play="onVideoPlay"
@pause="onVideoPause"
@ended="onVideoEnded"
@error="onVideoError" @error="onVideoError"
></video> ></video>
<!-- <sunny-video <!-- <sunny-video
@ -252,7 +255,7 @@
<script setup> <script setup>
import { ref, nextTick } from "vue"; import { ref, nextTick } from "vue";
//import uniVideo from "@/components/uniVideo/uniVideo.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 unidialog from "@/components/dialog/dialog.vue";
import collectImg from "@/static/icon_book_collect_sel.png"; import collectImg from "@/static/icon_book_collect_sel.png";
import discollectImg from "@/static/icon_book_collect_nor.png"; import discollectImg from "@/static/icon_book_collect_nor.png";
@ -282,6 +285,9 @@ const notEnoughVisible = ref(false);
const notEnoughContent = ref(""); const notEnoughContent = ref("");
const welfareNum = ref(0); const welfareNum = ref(0);
const isPlaying = ref(false); const isPlaying = ref(false);
const playTime = ref(0);
const timer = ref(null);
const hasPlay = ref(false);
// //
const showDeleteModal = ref(false); const showDeleteModal = ref(false);
const currentDeleteItem = ref(null); const currentDeleteItem = ref(null);
@ -314,7 +320,29 @@ const onFullscreenChange = (e) => {
}; };
const onVideoPlay = () => { const onVideoPlay = () => {
isPlaying.value = true; 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 = () => { // const playVideo = () => {
// videoContext.value.play(); // videoContext.value.play();
// }; // };
@ -506,22 +534,10 @@ const onVideoError = (e) => {
const videoDetail = async (flag = false) => { const videoDetail = async (flag = false) => {
const res = await api.videoDetail({ video_uuid: video_uuid.value }); const res = await api.videoDetail({ video_uuid: video_uuid.value });
if (res.code == 200) { 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"); const userInfo = uni.getStorageSync("userInfo");
videoInfo.value = res.video; videoInfo.value = res.video;
tags.value = res.video.tags;
//hasDownload.value = downLoadList.value.includes(video_uuid.value); //hasDownload.value = downLoadList.value.includes(video_uuid.value);
let vid =res.video.polyv_uuid || extractPolyvVid(res.video.content); let vid =res.video.polyv_uuid || extractPolyvVid(res.video.content);
console.log(222222); console.log(222222);
@ -539,6 +555,24 @@ const videoDetail = async (flag = false) => {
"/video/hcp_detial?share=1&uuid=" + "/video/hcp_detial?share=1&uuid=" +
video_uuid.value + video_uuid.value +
"&expertshare=videoshare&fromtype=doctor"; "&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 () => { const collection = async () => {
@ -646,8 +680,65 @@ const resumeDownloadingTasks = () => {
}); });
}; };
onUnload(() => { onUnload(() => {
console.log('onUnload');
uni.$off('selectedChatPatientsSingle'); 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(() => { onShow(() => {
uni.$on('selectedChatPatientsSingle',(data)=>{ uni.$on('selectedChatPatientsSingle',(data)=>{
console.log(data) console.log(data)
@ -656,6 +747,8 @@ onShow(() => {
addGroupSendMsg4YunXin() addGroupSendMsg4YunXin()
} }
}); });
uni.$off('replySuccess', handleReplySuccess);
uni.$on('replySuccess', handleReplySuccess);
hasDownload.value = false; hasDownload.value = false;
downLoadStatus.value = 'start'; downLoadStatus.value = 'start';
console.log('onShow'); console.log('onShow');
@ -1003,6 +1096,7 @@ const from = ref('');
const type = ref(''); const type = ref('');
// 使uni-apponLoad // 使uni-apponLoad
onLoad((options) => { onLoad((options) => {
console.log(options);
if(options.type) { if(options.type) {
type.value = options.type; type.value = options.type;
} }
@ -1015,11 +1109,13 @@ onLoad((options) => {
}, },
}); });
console.log('enrtyVideoDetail'); console.log('enrtyVideoDetail');
// uni.sendNativeEvent('enrtyVideoDetail', { console.log(tags.value);
// msg: 'enrtyVideoDetail' //
// }, ret => { uni.sendNativeEvent('enrtyVideoDetail', {
// console.log(ret); msg: 'enrtyVideoDetail'
// }) }, ret => {
console.log(ret);
})
video_uuid.value = options.id; video_uuid.value = options.id;
from.value = options.from; from.value = options.from;
if(from.value != 'download') { if(from.value != 'download') {

View File

@ -76,6 +76,7 @@ const shareImg = ref("");
const shareTitle = ref(""); const shareTitle = ref("");
const type = ref(""); const type = ref("");
const tags = ref(""); const tags = ref("");
const reportTitle = ref("");
const goBack = () => { const goBack = () => {
uni.navigateBack({ uni.navigateBack({
fail() { fail() {
@ -99,6 +100,7 @@ onHide(() => {
// plus.screen.lockOrientation('landscape-primary'); // plus.screen.lockOrientation('landscape-primary');
}); });
onLoad((query) => { onLoad((query) => {
console.log(query);
if (query.title) { if (query.title) {
title.value = query.title; title.value = query.title;
} }
@ -130,19 +132,33 @@ onLoad((query) => {
shareImg.value = query.imgPath?decodeURIComponent(query.imgPath):'https://doc.igandan.com/app/html/img/2016/20160714132557.png'; shareImg.value = query.imgPath?decodeURIComponent(query.imgPath):'https://doc.igandan.com/app/html/img/2016/20160714132557.png';
if (query.type == "live_yugao") { if (query.type == "live_yugao") {
shareTitle.value = query.sharetitle; shareTitle.value = query.sharetitle;
reportTitle.value = shareTitle.value;
summary.value = "分享一篇来自“肝胆相照”的会议预告:" + shareTitle.value; summary.value = "分享一篇来自“肝胆相照”的会议预告:" + shareTitle.value;
console.log(reportTitle.value);
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "detail_page",
page_type: "会议直播",
resource_name:reportTitle.value,
resource_option:tags.value,
},
},
(ret) => {
console.log(ret);
});
} else if (query.type == "live_old") { } else if (query.type == "live_old") {
shareTitle.value = query.sharetitle; shareTitle.value = query.sharetitle;
summary.value = "分享一篇来自“肝胆相照”的历史会议:" + shareTitle.value; summary.value = "分享一篇来自“肝胆相照”的历史会议:" + shareTitle.value;
} else if (query.type == "live") { } else if (query.type == "live") {
shareTitle.value = "肝胆相照直播:" + query.sharetitle; shareTitle.value = "肝胆相照直播:" + query.sharetitle;
reportTitle.value = query.sharetitle;
summary.value = shareTitle.value; summary.value = shareTitle.value;
console.log(reportTitle.value);
uni.sendNativeEvent("portraitReport",{ uni.sendNativeEvent("portraitReport",{
msg:{ msg:{
event_nickname: "detail_page", event_nickname: "detail_page",
page_type: "会议直播", page_type: "会议直播",
resource_name:shareTitle.value, resource_name:reportTitle.value,
resource_option:tags.value, resource_option:tags.value,
}, },
}, },
@ -251,6 +267,15 @@ const closeShare = () => {
const nativeMaskView = ref(null); const nativeMaskView = ref(null);
const nativePopupView = ref(null); const nativePopupView = ref(null);
const popupShowing = ref(false); const popupShowing = ref(false);
/** 原生分享面板:防止同一次手势内重复触发(兜底) */
let nativePanelLastActionAt = 0;
const NATIVE_PANEL_ACTION_GAP_MS = 400;
function tryCommitNativePanelAction(fn) {
const t = Date.now();
if (t - nativePanelLastActionAt < NATIVE_PANEL_ACTION_GAP_MS) return;
nativePanelLastActionAt = t;
fn();
}
// 使 // 使
const popupInfo = ref({ const popupInfo = ref({
screenW: 0, screenW: 0,
@ -597,7 +622,7 @@ function createNativePopup() {
); );
if (relativeY >= cancelTop) { if (relativeY >= cancelTop) {
console.log("点击了取消按钮"); console.log("点击了取消按钮");
closeNativePopup(); tryCommitNativePanelAction(() => closeNativePopup());
return; return;
} }
@ -631,12 +656,16 @@ function createNativePopup() {
if (idx === 0) { if (idx === 0) {
console.log("执行微信分享"); console.log("执行微信分享");
tryCommitNativePanelAction(() => {
shareToWechat(); shareToWechat();
closeNativePopup(); closeNativePopup();
});
} else if (idx === 1) { } else if (idx === 1) {
console.log("执行朋友圈分享"); console.log("执行朋友圈分享");
tryCommitNativePanelAction(() => {
shareToMoments(); shareToMoments();
closeNativePopup(); closeNativePopup();
});
} else if (idx === 2) { } else if (idx === 2) {
console.log("执行微博分享"); console.log("执行微博分享");
// shareToWeibo(); // shareToWeibo();
@ -654,19 +683,17 @@ function createNativePopup() {
} }
}; };
// click touchstart // click touchstart/touchend
nativeMaskView.value.addEventListener("click", handleMaskClick, false); nativeMaskView.value.addEventListener("click", handleMaskClick, false);
nativeMaskView.value.addEventListener("touchstart", handleMaskClick, false);
nativePopupView.value.addEventListener("click", handlePanelClick, false); nativePopupView.value.addEventListener("click", handlePanelClick, false);
nativePopupView.value.addEventListener("touchstart", handlePanelClick, false);
nativePopupView.value.addEventListener("touchend", handlePanelClick, false);
// #endif // #endif
} }
function showNativePopup() { function showNativePopup() {
// #ifdef APP-PLUS // #ifdef APP-PLUS
if (popupShowing.value) return; if (popupShowing.value) return;
nativePanelLastActionAt = 0;
if (!nativeMaskView.value || !nativePopupView.value) { if (!nativeMaskView.value || !nativePopupView.value) {
createNativePopup(); createNativePopup();
} }
@ -688,12 +715,12 @@ function closeNativePopup() {
// //
const shareToWechat = () => { const shareToWechat = () => {
// #ifdef APP-PLUS // #ifdef APP-PLUS
if(type.value == "live"){ if(type.value == "live" || type.value == "live_yugao"){
uni.sendNativeEvent("portraitReport",{ uni.sendNativeEvent("portraitReport",{
msg:{ msg:{
event_nickname: "share", event_nickname: "share",
page_type: "会议直播", page_type: "会议直播",
resource_name:shareTitle.value, resource_name:reportTitle.value,
resource_option:tags.value, resource_option:tags.value,
}, },
}); });
@ -800,12 +827,12 @@ onUnload(() => {
// //
const shareToMoments = () => { const shareToMoments = () => {
// #ifdef APP-PLUS // #ifdef APP-PLUS
if(type.value == "live"){ if(type.value == "live" || type.value == "live_yugao"){
uni.sendNativeEvent("portraitReport",{ uni.sendNativeEvent("portraitReport",{
msg:{ msg:{
event_nickname: "share", event_nickname: "share",
page_type: "会议直播", page_type: "会议直播",
resource_name:shareTitle.value, resource_name:reportTitle.value,
resource_option:tags.value, resource_option:tags.value,
}, },
}); });

View File

@ -512,11 +512,7 @@ onLoad((query) => {
backgroundColor.value = "linear-gradient(to bottom,'#fff' , '#398775')"; backgroundColor.value = "linear-gradient(to bottom,'#fff' , '#398775')";
} }
if (type.value == "huanjiao_news") {
getNewsDetail(true);
} else {
getKePuCollection(true);
}
getOutRead(); getOutRead();
const raw = const raw =
@ -556,6 +552,12 @@ onLoad((query) => {
shareTitle.value = query.sharetitle; shareTitle.value = query.sharetitle;
summary.value = query.summary; summary.value = query.summary;
} }
if (type.value == "huanjiao_news") {
getNewsDetail(true);
} else {
getKePuCollection(true);
}
// #ifdef APP-PLUS // #ifdef APP-PLUS
// let wv = plus.webview.create("", "custom-webview", { // let wv = plus.webview.create("", "custom-webview", {
// top: statusBarHeight + navHeight + "px", // top: statusBarHeight + navHeight + "px",

View File

@ -111,6 +111,7 @@ const freeVisible = ref(false)
const freeContent = ref('') const freeContent = ref('')
const goods_order_id = ref('') const goods_order_id = ref('')
const points = ref(0) const points = ref(0)
const goodsPoints=ref(0);
const freeClose = () => { const freeClose = () => {
freeVisible.value = false freeVisible.value = false
} }
@ -124,6 +125,28 @@ const freeConfirm = () => {
title: '兑换成功', title: '兑换成功',
icon: 'none', icon: 'none',
duration: 1000 duration: 1000
});
let belong = '';
if(goodsName.value.indexOf('U盘') > -1 || goodsName.value.indexOf('u盘') > -1){
belong = 'U盘';
}else if(goodsName.value.indexOf('京东E卡') > -1){
belong = '京东E卡';
}else{
belong = '书籍';
}
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "boint_jifengood",
page_type: "积分商城",
resource_name:goodsName.value,
event_val:goodsPoints.value,
event_unit:'积分',
number:goodsNum.value,
belong:belong,
},
},
(ret) => {
console.log(ret);
}); });
setTimeout(() => { setTimeout(() => {
navTo({ navTo({
@ -259,28 +282,6 @@ const submit = () => {
address: regionText.value+detail.value address: regionText.value+detail.value
}).then(res => { }).then(res => {
if(res.code == 1 || res.code == 200){ if(res.code == 1 || res.code == 200){
let belong = '';
if(type.value == 1){
belong = 'U盘';
}else if(goodsName.value.indexOf('京东E卡') > -1){
belong = '京东E卡';
}else{
belong = '书籍';
}
uni.sendNativeEvent("portraitReport",{
msg:{
event_nickname: "boint_jifengood",
page_type: "积分商城",
resource_name:goodsName.value,
event_val:goodsPoints.value,
event_unit:'积分',
number:goodsNum.value,
belong:belong,
},
},
(ret) => {
console.log(ret);
});
points.value = res.data.pionts; points.value = res.data.pionts;
freeVisible.value = true freeVisible.value = true
goods_order_id.value = res.data.goods_order_id goods_order_id.value = res.data.goods_order_id