Commit e6b5aaad by yuzhenWang

cffp分享数据统计,返回小程序多次统计发布生产

parent 54bb458d
<template>
<view class="container">
<!-- 禁用弹窗 -->
<restrictedTip ref="restrictedTip"/>
<restrictedTip ref="restrictedTip" />
<view v-if="!mpCffp">
<view class="shareheader" style="" v-if="coursesharing != 1 || deviceType==3">
<!-- #ifdef APP -->
<view class="iconfont icon-youjiantou" style="margin-left: 30rpx;" @click="goBack()"></view>
<!-- #endif -->
<view class="share-entrance" >
<view class="share-entrance">
<view style="z-index: 99999;">
<uni-popup ref="share" type="top" safeArea backgroundColor="#F4F2F3" :maskClick='true'
@change="maskClick">
<uni-popup-share @select="sharechange"></uni-popup-share>
</uni-popup>
</view>
<!-- v-if="isWxH5" -->
<view v-if="isWxH5" style="width: 40rpx;height: 40rpx;padding-right: 20rpx;">
<image class="image" @click="reinvite" src="../../static/fastentry/Slice122.png" mode=""></image>
</view>
<view class="" style="width: 40rpx;height: 40rpx; ">
<image class="image" @click="shareToggle" src="../../static/fastentry/Slice12.png" mode=""></image>
</view>
<!-- v-if="isWxH5" -->
<view v-if="isWxH5" style="width: 40rpx;height: 40rpx;padding-right: 20rpx;">
<image class="image" @click="reinvite" src="../../static/fastentry/Slice122.png" mode="">
</image>
</view>
<view class="" style="width: 40rpx;height: 40rpx; ">
<image class="image" @click="shareToggle" src="../../static/fastentry/Slice12.png" mode="">
</image>
</view>
</view>
</view>
</view>
<!-- 课程banner图 -->
<!-- v-show="!sliceshare" -->
<view class="courseBannerBox" v-if="!sliceshare && bannerViewType == '1'">
<video v-if="isRenderVideo" id="myVideo" :src="courseInfo.filePathOss" :initial-time="viewTime"
object-fit="contain" class="videoBox" :poster="courseInfo.fileFirstImage" :title="courseInfo.fileTitle"
@play="playVideo" @pause="pause" @timeupdate="timeupdate" style="width: 100vw;height: 312.5rpx;"
></video>
@play="playVideo" @pause="pause" @timeupdate="timeupdate"
style="width: 100vw;height: 312.5rpx;"></video>
</view>
<view class="swiperBox" v-if="bannerViewType == '2'">
<uni-swiper-dot
:dots-styles="{
<uni-swiper-dot :dots-styles="{
backgroundColor: 'rgba(145, 151, 201, .5)',
selectedBackgroundColor: 'rgba(255, 255, 255, 1)',
bottom:100,
selectedBorder: '10rpx rgba(255, 255, 255, 1) solid',
width:8
}" :info="swiperList" :current="current" mode="default">
<swiper autoplay :indicator-dots="true" :interval="3000" circular class="swiper-box" @change="changeSwiper">
}" :info="swiperList" :current="current" mode="default">
<swiper autoplay :indicator-dots="true" :interval="3000" circular class="swiper-box"
@change="changeSwiper">
<swiper-item v-for="(item,index) in swiperList" :key="index" class="swiper-item-no-gap">
<view class="swiper-item">
<image style="height: 100%;width: 100%;display: block;" :src="item['filePath']" mode="aspectFill"></image>
<image style="height: 100%;width: 100%;display: block;" :src="item['filePath']"
mode="aspectFill"></image>
</view>
</swiper-item>
</swiper>
</uni-swiper-dot>
</uni-swiper-dot>
</view>
<!-- 课程详情图 -->
......@@ -66,11 +69,12 @@
<h4>{{courseInfo.fileTitle}}</h4>
<view>{{courseInfo.fileSynopsis}}</view>
</view>
</view>
<view class="dataBox">
<strong v-if="(courseInfo.status==1 || courseInfo.status==2 )&& courseInfo.coursePrice !== 0">{{Number(courseInfo.coursePrice).toFixed(2)}}</strong>
<strong
v-if="(courseInfo.status==1 || courseInfo.status==2 )&& courseInfo.coursePrice !== 0">{{Number(courseInfo.coursePrice).toFixed(2)}}</strong>
<text v-if="courseInfo.coursePrice != 0">{{courseInfo.salesNumber}}{{showName}}</text>
</view>
......@@ -125,7 +129,8 @@
<view>
<p><text class="lecturerName">{{lecturerInfo.lecturerName}}</text></p>
<template v-if="lecturerInfo?.lecturerRankNames">
<p v-for="(item,index) in lecturerInfo.lecturerRankNames.split(',')" :key="index" class="lecturerTitle">
<p v-for="(item,index) in lecturerInfo.lecturerRankNames.split(',')" :key="index"
class="lecturerTitle">
<text>{{item}}</text>
</p>
</template>
......@@ -137,38 +142,27 @@
<view v-html="lecturerInfo?.lecturerIntroduce" class="lecturerText richTextContent"></view>
</view>
<view v-if="!mpCffp">
<view class="buyBox" @click="saveOrder()" v-if="(courseInfo.status == 1 || courseInfo.status == 2) && courseInfo.coursePrice != 0">
<view class="buyBox" @click="saveOrder()"
v-if="(courseInfo.status == 1 || courseInfo.status == 2) && courseInfo.coursePrice != 0">
<text>{{showName}}</text>
</view>
</view>
<view v-if="mpCffp" class="shareBuyBox">
<view v-if="mpCffp" class="shareBuyBox">
<view class="rightShare" @click="reinvite">
<loadingIcon
:loading="isLoading"
v-if="isLoading"
loadColor="#20269B"
/>
<loadingIcon :loading="isLoading" v-if="isLoading" loadColor="#20269B" />
<text style="margin-left: 5rpx;">分享</text>
</view>
<view class="leftBuy" @click="saveOrder()" v-if="(courseInfo.status == 1 || courseInfo.status == 2) && courseInfo.coursePrice != 0">
<loadingIcon
:loading="isOrderLoading"
v-if="isOrderLoading"
/>
<view class="leftBuy" @click="saveOrder()"
v-if="(courseInfo.status == 1 || courseInfo.status == 2) && courseInfo.coursePrice != 0">
<loadingIcon :loading="isOrderLoading" v-if="isOrderLoading" />
<text style="margin-left: 5rpx;">{{showName}}</text>
</view>
</view>
</view>
</view>
<boot-page
loginSource="产品详情"
v-if="sharelogin"
:wayType="wayType"
ref="sharelogin"
@close="close"
></boot-page>
<boot-page loginSource="产品详情" v-if="sharelogin" :wayType="wayType" ref="sharelogin" @close="close"></boot-page>
<uni-share-wx ref="sharewx"></uni-share-wx>
<!-- <view class="markBox" @click="shareTipsFlag=false" v-if="shareTipsFlag">
<view class="guideImgBox">
......@@ -181,13 +175,16 @@
</view> -->
<!-- 分享得向导图 -->
<ShareGuide :show.sync="shareTipsFlag" @close="shareTipsFlag=false"></ShareGuide>
<login-popup ref="loginPopupCom" @confirm="c_confirmLoginPopup" @canle="canleLogin" ></login-popup>
<verify-popup ref="verifyPopupCom" title="温馨提示" content="请问您确认预约本课程吗?" @confirm="c_confirmVerifyPopup" @canle="canleVerify" >
<login-popup ref="loginPopupCom" @confirm="c_confirmLoginPopup" @canle="canleLogin"></login-popup>
<verify-popup ref="verifyPopupCom" title="温馨提示" content="请问您确认预约本课程吗?" @confirm="c_confirmVerifyPopup"
@canle="canleVerify">
</verify-popup>
<uni-popup ref="subscribeSuccessPopup" :mask-click="false">
<view class="loginPopupBox" style="text-align: center;width: 630rpx;padding-top: 35rpx;letter-spacing: 1rpx;">
<view style="display: flex;align-items: center;;justify-content: center;font-size: 32rpx;font-weight: bold;color: #20269B;margin:40rpx 0 60rpx 0;">
<view class="loginPopupBox"
style="text-align: center;width: 630rpx;padding-top: 35rpx;letter-spacing: 1rpx;">
<view
style="display: flex;align-items: center;;justify-content: center;font-size: 32rpx;font-weight: bold;color: #20269B;margin:40rpx 0 60rpx 0;">
<view style="width: 6%;margin-right: 10rpx;margin-bottom: -10rpx;">
<image src="../../static/images/correct.png" mode="widthFix"></image>
</view>
......@@ -199,37 +196,22 @@
{{successMessage}}
</view>
<view style="margin-top: 10rpx;">
<view @click="c_closeSubscribeSuccessPopup"><button class="popup_replenish_button2" size="mini">关闭</button>
<view @click="c_closeSubscribeSuccessPopup"><button class="popup_replenish_button2"
size="mini">关闭</button>
</view>
</view>
</view>
</uni-popup>
<partner-tip-popup
ref="partnerTipPopup"
@join="gotoJoinPartner"
@continue="continueShare"
/>
<partner-tip-popup ref="partnerTipPopup" @join="gotoJoinPartner" @continue="continueShare" />
<!-- 海报弹窗 -->
<sharePosterPop
ref="sharePosterPop"
:generatedImage="generatedImage"
@closePoster="closePoster"
:shareTxt="posterShareTxt"
:imgType="posterImgType"
></sharePosterPop>
<sharePosterPop ref="sharePosterPop" :generatedImage="generatedImage" @closePoster="closePoster"
:shareTxt="posterShareTxt" :imgType="posterImgType"></sharePosterPop>
<!-- #ifdef H5 -->
<view class="generateImageBox" ref="captureElement" v-if="!generatedImage">
<view class="imgBox">
<img
v-if="showImg"
class="posterImg"
@load="handleBgImageLoad"
@error="handleBgImageError"
style="display: block;"
:src="shareItem.fileFirstImage+'?t='+Math.random()"
crossorigin="anonymous"
alt="防缓存图片"
/>
<img v-if="showImg" class="posterImg" @load="handleBgImageLoad" @error="handleBgImageError"
style="display: block;" :src="shareItem.fileFirstImage+'?t='+Math.random()" crossorigin="anonymous"
alt="防缓存图片" />
</view>
<view class="txtBox">
<view class="descriptionTxt">
......@@ -242,12 +224,9 @@
<view class="left">
<view class="top">
<view style="width: 100rpx;">
<image
:src="companyLogo"
mode="widthFix"
></image>
<image :src="companyLogo" mode="widthFix"></image>
</view>
<view class="companyName">银盾家办</view>
</view>
<view class="bottom">
......@@ -256,15 +235,12 @@
</view>
<!-- 二维码容器 -->
<view class="qrcode-container">
<canvas
canvas-id="qrcode"
class="qrcode-canvas"
:style="{width: qrCodeSize + 'px', height: qrCodeSize + 'px'}"
></canvas>
<canvas canvas-id="qrcode" class="qrcode-canvas"
:style="{width: qrCodeSize + 'px', height: qrCodeSize + 'px'}"></canvas>
</view>
</view>
</view>
</view>
<!-- #endif -->
</view>
......@@ -279,13 +255,13 @@
import VerifyPopup from "@/components/unipopup/verifyPopup.vue";
import UniShareWx from "@/uni_modules/uni-share-wx/index.vue";
import dataHandling from "@/util/dataHandling";
import {hshare,setWechatShare,initJssdkShare} from '@/util/fiveshare';
import {nanoid} from 'nanoid';
import { hshare, setWechatShare, initJssdkShare } from '@/util/fiveshare';
import { nanoid } from 'nanoid';
import common from '../../common/common';
import {baseURL,apiURL,cffpURL,companyInfo,shareURL} from "@/environments/environment";
import sharePosterPop from '@/components/commonPopup/sharePosterPop.vue';
import UQRCode from 'uqrcodejs';
import { elementToImage } from '@/util/htmlToImage';
import { baseURL, apiURL, cffpURL, companyInfo, shareURL } from "@/environments/environment";
import sharePosterPop from '@/components/commonPopup/sharePosterPop.vue';
import UQRCode from 'uqrcodejs';
import { elementToImage } from '@/util/htmlToImage';
import loadingIcon from '@/components/loading/loading.vue';
import ShareGuide from '@/components/ShareGuide/ShareGuide.vue';
import wx from 'weixin-js-sdk'
......@@ -303,21 +279,21 @@
},
data() {
return {
pollingTimer :null ,// 轮询定时器
miniShareInfo :{},//通过小程序分享出去的信息
sharePosterObj:{},
pollingTimer: null, // 轮询定时器
miniShareInfo: {}, //通过小程序分享出去的信息
sharePosterObj: {},
userInfo: {},
wayType:'1', //登陆的类型
partnerType:'',//是否是合伙人
addSystemType:'', //因为会从其他公众号跳转过来所以接受一下公众号的类型
systemType:companyInfo.systemType,
showName:'购买',
successMessage:'',
show:false,
isWxH5:false,
wayType: '1', //登陆的类型
partnerType: '', //是否是合伙人
addSystemType: '', //因为会从其他公众号跳转过来所以接受一下公众号的类型
systemType: companyInfo.systemType,
showName: '购买',
successMessage: '',
show: false,
isWxH5: false,
bannerViewType: '1',
swiperList: [],
current : 0,
current: 0,
isWeixin: false,
isRenderVideo: false,
fileId: null,
......@@ -354,9 +330,9 @@
ios: 'https://apps.apple.com/cn/app/%E6%98%AF%E5%A5%BD/id1457958161',
scheme: 'com.qdxxzy.user://'
},
deviceType:null,
shareTipsFlag:false,
src: '',
deviceType: null,
shareTipsFlag: false,
src: '',
danmuList: [{
text: '第 1s 出现的弹幕',
color: '#ff0000',
......@@ -369,77 +345,77 @@
}
],
danmuValue: '',
qrCodeUrl: 'https://example.com',//二维码的链接地址
qrCodeSize: 100,//二维码的尺寸
companyLogo : '../../static/suplogo.png',
generatedImage:'',//生成的海报图片,
shareItem:{fileFirstImage:''},
showImg:false,
mpCffp:'',
qrCodeUrl: 'https://example.com', //二维码的链接地址
qrCodeSize: 100, //二维码的尺寸
companyLogo: '../../static/suplogo.png',
generatedImage: '', //生成的海报图片,
shareItem: { fileFirstImage: '' },
showImg: false,
mpCffp: '',
isLoading: false,
posterDesTxt:'',
isOrderLoading:false,
posterShareTxt:'长按图片分享给朋友',
orderCodeUrl:'',
posterImgType:'sharePoster'
posterDesTxt: '',
isOrderLoading: false,
posterShareTxt: '长按图片分享给朋友',
orderCodeUrl: '',
posterImgType: 'sharePoster'
};
},
methods: {
gotoJoinPartner(){
gotoJoinPartner() {
dataHandling.pocessTracking(
'加盟',
`用户在产品详情未加盟时点击了加盟按钮`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
'加盟',
`用户在产品详情未加盟时点击了加盟按钮`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
)
uni.navigateTo({
url: '/myPackageA/applyFranchise/applyFranchise'
})
this.$refs.partnerTipPopup.close()
url: '/myPackageA/applyFranchise/applyFranchise'
})
this.$refs.partnerTipPopup.close()
},
// 打开微信分享啊
reinvite() {
//小程序没登录进入到系统,要回到小程序去登录
if(uni.getStorageSync('mpCffp')&&!uni.getStorageSync('dataToken')){
if (uni.getStorageSync('mpCffp') && !uni.getStorageSync('dataToken')) {
this.jumpMplogin()
return
}
// 未登录去登录
if(!uni.getStorageSync('loginType') ||uni.getStorageSync('loginType') == 'visitor'){
if (!uni.getStorageSync('loginType') || uni.getStorageSync('loginType') == 'visitor') {
dataHandling.pocessTracking(
'分享',
`用户在产品详情未登录时点击产品分享按钮`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
'分享',
`用户在产品详情未登录时点击产品分享按钮`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
)
this.sharelogin = true,
this.wayType = '2'
this.wayType = '2'
return
}
// 已登录,未成为合伙人
if(this.userInfo&&!this.userInfo['partnerType']) {
if (this.userInfo && !this.userInfo['partnerType']) {
dataHandling.pocessTracking(
'分享',
`用户在产品详情未加盟时点击产品分享按钮`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
'分享',
`用户在产品详情未加盟时点击产品分享按钮`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
)
this.$refs.partnerTipPopup.open()
return
}
this.continueShare()
},
continueShare(){
continueShare() {
this.userId = uni.getStorageSync('cffp_userId')
const shareCode = nanoid() + this.userId
const jumptime = Date.parse(new Date()) / 1000
// if(this.mpCffp){
// if(uni.getStorageSync('posterItem')){
// this.shareItem = JSON.parse(JSON.stringify(uni.getStorageSync('posterItem')))
......@@ -449,7 +425,7 @@
// let newLink = shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId +
// '&coursesharing=1' + '&serialsNo=' + nanoid() + '&shareCode=' + shareCode + '&shareUserId=' +
// this.userId + '&jumpUrl=' + jumptime + "&"
// this.qrCodeUrl = newLink
// this.showImg = true
// this.isLoading = true
......@@ -472,55 +448,55 @@
}
this.$refs.sharewx.open(dataWXform)
dataHandling.pocessTracking(
'分享',
`用户在产品详情点击分享按钮,分享${this.courseInfo.fileTitle}`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
'分享',
`用户在产品详情点击分享按钮,分享${this.courseInfo.fileTitle}`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
)
// #endif
//#ifdef H5
this.shareTipsFlag = true;
if(dataHandling.h5RuntimeEnv() == 'wechat-miniprogram'){
if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
let shareInfo = {
title: this.courseInfo.fileTitle,
// desc: '加入我们开启学习之旅',
desc:this.courseInfo.fileSynopsis,
desc: this.courseInfo.fileSynopsis,
link: `${shareURL}/pages/lanch/index?fileId=${this.fileId}&coursesharing=1&serialsNo=${nanoid()}&shareCode=${shareCode}&shareUserId=${this.userId}&jumpUrl=${jumptime}&landingPage=courseDetail&miniShare=1`,
imgUrl: this.courseInfo.displayImage, //图片
sharePage:'courseDetail',//分享的哪个页面
sharePage: 'courseDetail', //分享的哪个页面
commonId: shareCode,
userId:this.userId,
fileId:this.fileId,
shareCode:shareCode,
isSaveShare:'1',//是否存贮分享便于统计分享数据
userId: this.userId,
fileId: this.fileId,
shareCode: shareCode,
isSaveShare: '1', //是否存贮分享便于统计分享数据
}
wx.miniProgram.postMessage({
data:{
type:'share',
shareData:JSON.stringify(shareInfo)
}
})
return
wx.miniProgram.postMessage({
data: {
type: 'share',
shareData: JSON.stringify(shareInfo)
}
})
return
}
this.getshareData2(shareCode,jumptime)
this.getshareData2(shareCode, jumptime)
// #endif
this.$refs.partnerTipPopup.close()
this.wayType = '1'
},
canleLogin(){
this.show=false;
canleLogin() {
this.show = false;
},
canleVerify(){
this.show=false;
canleVerify() {
this.show = false;
},
//关闭预约成功弹窗
c_closeSubscribeSuccessPopup() {
this.show=false;
this.show = false;
this.$refs.subscribeSuccessPopup.close();
},
//预约成功组件点击确认后的回调函数
......@@ -531,10 +507,10 @@
}).then((res) => {
if (res['success']) {
this.$refs.verifyPopupCom.canle();
this.show=true;
this.successMessage=res['message'];
this.show = true;
this.successMessage = res['message'];
this.$refs.subscribeSuccessPopup.open();
} else {
uni.showToast({
title: res['message'],
......@@ -550,9 +526,9 @@
this.$refs.verifyPopupCom.open();
},
//关闭登录
close(val,loginTypeSync,type) {
close(val, loginTypeSync, type) {
// 直接点击了关闭登录的叉号
if(type){
if (type) {
this.sharelogin = false
return
}
......@@ -562,25 +538,25 @@
this.loginType = loginTypeSync;
uni.setStorageSync('cffp_userId', this.userId);
this.courseDetail();
if(JSON.parse(uni.getStorageSync('cffp_userInfo'))){
if (JSON.parse(uni.getStorageSync('cffp_userInfo'))) {
this.userInfo = JSON.parse(uni.getStorageSync('cffp_userInfo'))
}
if(this.wayType == '2' && !this.userInfo['partnerType']){
if (this.wayType == '2' && !this.userInfo['partnerType']) {
this.$refs.partnerTipPopup.open()
return
}
if(this.wayType == '2' && this.userInfo['partnerType']){
if (this.wayType == '2' && this.userInfo['partnerType']) {
this.continueShare()
return
}
if(loginTypeSync == 'codelogin'&&this.wayType=='1'){
if (loginTypeSync == 'codelogin' && this.wayType == '1') {
setTimeout(() => {
if(this.courseInfo.status == 1){
if (this.courseInfo.status == 1) {
this.jumppurchase();
}
}, 500)
}else{
} else {
this.startTime = Date.parse(new Date()) / 1000;
uni.setStorageSync('h5_startTime', this.startTime)
setTimeout(() => {
......@@ -591,30 +567,31 @@
this.sharelogin = false
this.wayType = '1'
}
},
isWx_Miniprogram(){
// 判断是否在微信内
// #ifdef APP-PLUS
this.isWxH5 = true;
// #endif
// #ifndef APP-PLUS
if(this.isWeiXin()){
this.isWxH5 = true;
}else{
this.isWxH5 = false;
}
// #endif
isWx_Miniprogram() {
// 判断是否在微信内
// #ifdef APP-PLUS
this.isWxH5 = true;
// #endif
// #ifndef APP-PLUS
if (this.isWeiXin()) {
this.isWxH5 = true;
} else {
this.isWxH5 = false;
}
// #endif
},
/**
* 判断是否为微信浏览器
* 兼容ios
* */
isWeiXin() {
return /micromessenger/i.test(navigator.userAgent.toLowerCase()) || typeof navigator.wxuserAgent !== 'undefined'
},
isWeiXin() {
return /micromessenger/i.test(navigator.userAgent.toLowerCase()) || typeof navigator.wxuserAgent !==
'undefined'
},
goBack() {
uni.navigateBack({
delta: 1
......@@ -624,18 +601,18 @@
maskClick(val) {
this.sliceshare = val.show
},
shareToggle() {
this.sliceshare = true
this.$refs.share.open()
},
sharechange(val) {
if(val.tabbar){
if (val.tabbar) {
uni.switchTab({
url: val.link
})
return
}else{
} else {
uni.navigateTo({
url: val.link
})
......@@ -644,27 +621,27 @@
// 订单保存
saveOrder() {
//小程序没登录进入到系统,要回到小程序去登录
if(uni.getStorageSync('mpCffp')&&!uni.getStorageSync('dataToken')){
if (uni.getStorageSync('mpCffp') && !uni.getStorageSync('dataToken')) {
this.jumpMplogin()
return
}
this.loginType = uni.getStorageSync('loginType');
if (this.loginType === 'visitor') {
this.wayType = '1'
if(this.systemType == 'IOS'){
if (this.systemType == 'IOS') {
this.$refs.loginPopupCom.open();
this.show=true;
}else{
this.sharelogin = true;
this.show = true;
} else {
this.sharelogin = true;
}
} else {
if (this.coursesharing == '1') {
this.h5jump()
} else {
if(this.systemType == 'IOS'){
if (this.systemType == 'IOS') {
this.$refs.verifyPopupCom.open();
this.show=true;
}else{
this.show = true;
} else {
this.jumppurchase();
}
}
......@@ -673,54 +650,54 @@
h5jump() {
let h5userId = uni.getStorageSync('cffp_userId');
if (h5userId) {
if(this.systemType == 'IOS'){
this.show=true;
this.$refs.verifyPopupCom.open();
}else{
if (this.systemType == 'IOS') {
this.show = true;
this.$refs.verifyPopupCom.open();
} else {
this.jumppurchase();
}
} else {
if(this.systemType == 'IOS'){
this.show=true;
if (this.systemType == 'IOS') {
this.show = true;
this.$refs.loginPopupCom.open();
}else{
} else {
this.sharelogin = true;
}
}
},
jumppurchase() {
if(uni.getStorageSync('cffp_userInfo')){
if (uni.getStorageSync('cffp_userInfo')) {
this.userInfo = JSON.parse(uni.getStorageSync('cffp_userInfo'))
}
// 登录并且是禁用状态
if(this.userInfo.userIsActive==2){
if (this.userInfo.userIsActive == 2) {
this.$refs.restrictedTip.open()
return
}
let orderPlatform = ''
// 不同得公司主题不同得购买平台
// #ifdef APP
if(companyInfo.companyType=='1'){
if (companyInfo.companyType == '1') {
orderPlatform = 'JS-FX-APP'
}
if(companyInfo.companyType=='2'){
if (companyInfo.companyType == '2') {
orderPlatform = 'YDFO-FX-APP'
}
// #endif
// #ifdef H5
if(companyInfo.companyType=='1'){
if (companyInfo.companyType == '1') {
orderPlatform = 'JS-FX-H5'
}
if(companyInfo.companyType=='2'){
if (companyInfo.companyType == '2') {
orderPlatform = 'YDFO-FX-H5'
}
// #endif
// #ifdef MP-WEIXIN
if(companyInfo.companyType=='1'){
if (companyInfo.companyType == '1') {
orderPlatform = 'JS-FX-MP'
}
if(companyInfo.companyType=='2'){
if (companyInfo.companyType == '2') {
orderPlatform = 'YDFO-FX-MP'
}
// #endif
......@@ -729,7 +706,7 @@
productType: '1',
productId: this.courseInfo.fileId,
userId: uni.getStorageSync('cffp_userId'),
shareUserId: this.shareUserId ,
shareUserId: this.shareUserId,
shareReadId: this.shareReadId,
shareCode: this.shareCode,
dataSource: this.coursesharing == 1 ? '2' : this.dataSource
......@@ -741,21 +718,21 @@
this.userId = uni.getStorageSync('cffp_userId')
}
dataHandling.pocessTracking(
'购买',
`用户在产品中心点击购买按钮,购买${this.courseInfo.fileTitle}`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
'购买',
`用户在产品中心点击购买按钮,购买${this.courseInfo.fileTitle}`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
)
// 如果是商城跳转到cffp得购买直接弹出海报框
// if(this.mpCffp){
// // if(uni.getStorageSync('posterItem')){
// // this.shareItem = JSON.parse(JSON.stringify(uni.getStorageSync('posterItem')))
// // }
// // 因为是从家办商城小程序跳转到cffp的,所以这里购买要带家办商城的token,
// let dataToken = uni.getStorageSync('dataToken')
// console.log('家办商城dataToken',dataToken);
......@@ -817,7 +794,7 @@
}).then(res => {
if (res['success']) {
this.courseInfo = this.shareItem = res['data']['data'];
if(this.courseInfo.filePathOss != null && Number(this.courseInfo.filePathOss)){
if (this.courseInfo.filePathOss != null && Number(this.courseInfo.filePathOss)) {
this.bannerViewType = "2";
this.getBanner(Number(this.courseInfo.filePathOss));
}
......@@ -837,36 +814,38 @@
// #ifdef H5
const shareCode = nanoid() + this.userId
const jumptime = Date.parse(new Date()) / 1000
if(dataHandling.h5RuntimeEnv() == 'wechat-miniprogram'){
if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
let newLink = ''
let shareInfo = {
title: this.courseInfo.fileTitle,
// desc: '加入我们开启学习之旅',
desc:this.courseInfo.fileSynopsis,
desc: this.courseInfo.fileSynopsis,
imgUrl: this.courseInfo.displayImage, //图片
sharePage:'courseDetail',//分享的哪个页面
sharePage: 'courseDetail', //分享的哪个页面
commonId: shareCode,
shareCode:shareCode,
isSaveShare:'1',//是否存贮分享便于统计分享数据
fileId:this.fileId,
shareCode: shareCode,
isSaveShare: '1', //是否存贮分享便于统计分享数据
fileId: this.fileId,
}
if(uni.getStorageSync('loginType')=='codelogin'){
if (uni.getStorageSync('loginType') == 'codelogin') {
shareInfo.userId = this.userId
newLink = `${shareURL}/pages/lanch/index?fileId=${this.fileId}&coursesharing=1&serialsNo=${nanoid()}&shareCode=${shareCode}&shareUserId=${this.userId}&jumpUrl=${jumptime}&landingPage=courseDetail&miniShare=1`
}else {
newLink = `${shareURL}/pages/lanch/index?fileId=${this.fileId}&landingPage=courseDetail&miniShare=1`
newLink =
`${shareURL}/pages/lanch/index?fileId=${this.fileId}&coursesharing=1&serialsNo=${nanoid()}&shareCode=${shareCode}&shareUserId=${this.userId}&jumpUrl=${jumptime}&landingPage=courseDetail&miniShare=1`
} else {
newLink =
`${shareURL}/pages/lanch/index?fileId=${this.fileId}&landingPage=courseDetail&miniShare=1`
}
shareInfo.link = newLink
wx.miniProgram.postMessage({
data:{
type:'share',
shareData:JSON.stringify(shareInfo)
}
})
return
wx.miniProgram.postMessage({
data: {
type: 'share',
shareData: JSON.stringify(shareInfo)
}
})
return
}
this.getshareData2(shareCode, jumptime,0)
this.getshareData2(shareCode, jumptime, 0)
// #endif
}
})
......@@ -880,7 +859,7 @@
packFileId: this.courseInfo.packFileId
}).then(res => {
if (res['success']) {
if(res['data'] && res['data']['data']){
if (res['data'] && res['data']['data']) {
this.relatedCoursesLists = res['data']['data']['relatedCourseList'];
this.nonRequiredCount = res['data']['data']['nonRequiredCount'];
this.requiredCount = res['data']['data']['requiredCount'];
......@@ -977,27 +956,27 @@
})
},
sendDanmu: function() {
this.videoContext.sendDanmu({
text: this.danmuValue,
color: this.getRandomColor()
});
this.danmuValue = '';
},
videoErrorCallback: function(e) {
uni.showModal({
content: e.target.errMsg,
showCancel: false
})
},
getRandomColor: function() {
const rgb = []
for (let i = 0; i < 3; ++i) {
let color = Math.floor(Math.random() * 256).toString(16)
color = color.length == 1 ? '0' + color : color
rgb.push(color)
}
return '#' + rgb.join('')
},
this.videoContext.sendDanmu({
text: this.danmuValue,
color: this.getRandomColor()
});
this.danmuValue = '';
},
videoErrorCallback: function(e) {
uni.showModal({
content: e.target.errMsg,
showCancel: false
})
},
getRandomColor: function() {
const rgb = []
for (let i = 0; i < 3; ++i) {
let color = Math.floor(Math.random() * 256).toString(16)
color = color.length == 1 ? '0' + color : color
rgb.push(color)
}
return '#' + rgb.join('')
},
// 点击播放
playVideo(e) {
this.isPauseFlag = false;
......@@ -1031,7 +1010,7 @@
}
}
},
timeupdate(e) {
timeupdate(e) {
this.totalTime = e.detail.duration;
// 播放进度变化
this.viewTime = e.detail.currentTime > this.totalTime ? this.totalTime : e.detail.currentTime;
......@@ -1044,9 +1023,7 @@
content: '购买之后才可继续播放哦~',
showCancel: false,
success: function(res) {
if (res.confirm) {
} else if (res.cancel) {
}
if (res.confirm) {} else if (res.cancel) {}
}
});
this.videoContext.seek(0);
......@@ -1070,65 +1047,66 @@
}
})
},
getshareData2(shareCode,jumptime,type=1) {
let newLink = type==1?shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId +
'&coursesharing=1' + '&serialsNo=' + nanoid() + '&shareCode=' + shareCode + '&shareUserId=' +
this.userId + '&jumpUrl=' + jumptime + "&"
: shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId
getshareData2(shareCode, jumptime, type = 1) {
let newLink = type == 1 ? shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId +
'&coursesharing=1' + '&serialsNo=' + nanoid() + '&shareCode=' + shareCode + '&shareUserId=' +
this.userId + '&jumpUrl=' + jumptime + "&" :
shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId
let data = {
title: this.courseInfo.fileTitle,
// desc: '加入我们开启学习之旅',
desc:this.courseInfo.fileSynopsis,
desc: this.courseInfo.fileSynopsis,
link: newLink, //分享链接
imgUrl: this.courseInfo.displayImage, //图片
}
console.log('data',data);
console.log('data', data);
//安卓机型获取当前页面路径
let url = window.location.href.split('#')[0];
//ios机型获取当前页面路径
let ua = navigator.userAgent.toLowerCase();
let isWeixin = ua.indexOf('micromessenger') !== -1;
if (isWeixin) {
let isiOS = /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent); //ios终端
if (isiOS && window.sessionStorage.getItem('firstEntryUrl')) {
url = window.sessionStorage.getItem('firstEntryUrl').split('#')[0];
}
if (isiOS && window.sessionStorage.getItem('firstEntryUrl')) {
url = window.sessionStorage.getItem('firstEntryUrl').split('#')[0];
}
}
hshare(data, url)
if(type==1){
this.submitsuessc(shareCode,jumptime)
if (type == 1) {
this.submitsuessc(shareCode, jumptime)
}
if(type == 1){
if (type == 1) {
dataHandling.pocessTracking(
'点击',
`用户在产品中心点击分享按钮,分享${this.courseInfo.fileTitle}`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
'点击',
`用户在产品中心点击分享按钮,分享${this.courseInfo.fileTitle}`,
'点击',
2,
'产品详情',
'pages/courseDetail/courseDetail'
)
}
},
// H5 自定义分享
getshareData() {
let data = {
title: this.courseInfo.fileTitle,
// desc: '加入我们开启学习之旅',
desc:this.courseInfo.fileSynopsis,
link: window.location.href, //分享链接
imgUrl: this.courseInfo.displayImage, //图片
}
var url = window.location.href.split('#')[0]
hshare(data, url)
},
let data = {
title: this.courseInfo.fileTitle,
// desc: '加入我们开启学习之旅',
desc: this.courseInfo.fileSynopsis,
link: window.location.href, //分享链接
imgUrl: this.courseInfo.displayImage, //图片
}
var url = window.location.href.split('#')[0]
hshare(data, url)
},
// 唤醒app 测试
JsApiTicketApi() {
let WxConfigRequestVO = {
url: window.location.href.split('#')[0],
systemType:this.addSystemType? this.addSystemType:'1'
systemType: this.addSystemType ? this.addSystemType : '1'
}
api.Wxshare(WxConfigRequestVO).then(res => {
jWeixin.config({
......@@ -1141,23 +1119,23 @@
openTagList: ['wx-open-launch-app', 'wx-open-launch-weapp']
});
jWeixin.ready(function(res1) {
});
jWeixin.error(function(res2) {
});
})
},
submitsuessc(shareCode,jumptime){
submitsuessc(shareCode, jumptime) {
let platform = uni.getSystemInfoSync().platform
let UserShareRequestVO = {
systemType: platform == 'ios'? '1': '0',
systemType: platform == 'ios' ? '1' : '0',
userId: uni.getStorageSync('cffp_userId'),
businessType: '1', // 分享类型
businessId: this.fileId, // 课程Id
shareUrl: shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId +
'&coursesharing=1' + '&serialsNo=' + nanoid() + '&shareCode=' + shareCode + '&shareUserId=' +
this.userId + '&jumpUrl=' + jumptime + "&", // 分享链接
this.userId + '&jumpUrl=' + jumptime + "&", // 分享链接
shareType: '2', // 分享类型(1:图片分享; 2:链接分享)
shareToWhere: 3, //分享到哪儿(1好友 2朋友圈)
shareCode: shareCode
......@@ -1173,35 +1151,35 @@
},
getBanner(itemType) {
//加载轮播图
api.getBanner({ fileCategory: 7, itemType: itemType}).then(res => {
if (res['success']) {
this.swiperList = res['data']['homeItemList']
}
})
api.getBanner({ fileCategory: 7, itemType: itemType }).then(res => {
if (res['success']) {
this.swiperList = res['data']['homeItemList']
}
})
},
changeSwiper(e) {
if (e.detail.source == 'touch') {
this.current = e.detail.current
}
if (e.detail.source == 'touch') {
this.current = e.detail.current
}
},
queryInfo(){
api.queryInfo({userId:uni.getStorageSync('cffp_userId')}).then(res=>{
if(res['success']){
queryInfo() {
api.queryInfo({ userId: uni.getStorageSync('cffp_userId') }).then(res => {
if (res['success']) {
delete res.data.commonResult
const cffp_userInfo = {
...res.data
}
uni.setStorageSync('cffp_userInfo', JSON.stringify(cffp_userInfo))
this.realName = res.data.realName;
}
})
},
init() {
if (!uni.getStorageSync('loginType')&& uni.getStorageSync('loginType')=='visitor') {
if (!uni.getStorageSync('loginType') && uni.getStorageSync('loginType') == 'visitor') {
api.loginVerification({
"loginType": 1,
}).then((res) => {
if (res['success']) {
this.userId = String(res['data']['userId']);
......@@ -1209,257 +1187,259 @@
uni.setStorageSync('cffp_userId', this.userId);
uni.setStorageSync('loginType', 'visitor');
uni.setStorageSync('uni-token', res.data['token']);
}
})
}
},
// 海报分享方法
// 背景图片加载成功
handleBgImageLoad() {
this.generateQrcodeAndCapture();
this.generateQrcodeAndCapture();
},
// 背景图片加载失败
handleBgImageError() {
console.log('产品图片加载完成');
// uni.showToast({
// title:'海报生成失败,图片'
// })
console.log('产品图片加载完成');
// uni.showToast({
// title:'海报生成失败,图片'
// })
},
// 顺序执行:生成二维码 -> 截图
async generateQrcodeAndCapture() {
try {
// uni.showLoading({
// title: '准备生成分享图...'
// });
// 1. 先生成二维码
console.log('开始生成二维码...');
await this.makeQrcode();
console.log('二维码生成完成');
// 2. 等待500ms确保渲染完成
await new Promise(resolve => setTimeout(resolve, 1500));
// 3. 执行截图
console.log('开始截图...');
await this.captureImage();
console.log('截图完成');
// uni.hideLoading();
} catch (error) {
console.error('生成分享图失败:', error);
// uni.hideLoading();
// this.retryGenerate();
}
try {
// uni.showLoading({
// title: '准备生成分享图...'
// });
// 1. 先生成二维码
console.log('开始生成二维码...');
await this.makeQrcode();
console.log('二维码生成完成');
// 2. 等待500ms确保渲染完成
await new Promise(resolve => setTimeout(resolve, 1500));
// 3. 执行截图
console.log('开始截图...');
await this.captureImage();
console.log('截图完成');
// uni.hideLoading();
} catch (error) {
console.error('生成分享图失败:', error);
// uni.hideLoading();
// this.retryGenerate();
}
},
// 生成二维码
makeQrcode() {
return new Promise((resolve, reject) => {
// 创建实例
const qr = new UQRCode();
// 设置二维码内容
qr.data = this.qrCodeUrl;
// 设置二维码大小
qr.size = this.qrCodeSize;
// 设置前景色(二维码颜色)
qr.foregroundColor = '#000000';
// 设置背景色
qr.backgroundColor = '#FFFFFF';
// 设置边距
qr.margin = 10;
// 设置纠错等级
qr.errorCorrectLevel = UQRCode.errorCorrectLevel.H;
try {
// 调用制作二维码方法
qr.make();
// 获取canvas上下文
const ctx = uni.createCanvasContext('qrcode', this);
// 清空画布
ctx.clearRect(0, 0, this.qrCodeSize, this.qrCodeSize);
// 将二维码绘制到canvas上
qr.canvasContext = ctx;
qr.drawCanvas();
// 绘制完成
ctx.draw(true, () => {
console.log('二维码绘制完成');
resolve();
});
} catch (err) {
reject(err);
}
});
return new Promise((resolve, reject) => {
// 创建实例
const qr = new UQRCode();
// 设置二维码内容
qr.data = this.qrCodeUrl;
// 设置二维码大小
qr.size = this.qrCodeSize;
// 设置前景色(二维码颜色)
qr.foregroundColor = '#000000';
// 设置背景色
qr.backgroundColor = '#FFFFFF';
// 设置边距
qr.margin = 10;
// 设置纠错等级
qr.errorCorrectLevel = UQRCode.errorCorrectLevel.H;
try {
// 调用制作二维码方法
qr.make();
// 获取canvas上下文
const ctx = uni.createCanvasContext('qrcode', this);
// 清空画布
ctx.clearRect(0, 0, this.qrCodeSize, this.qrCodeSize);
// 将二维码绘制到canvas上
qr.canvasContext = ctx;
qr.drawCanvas();
// 绘制完成
ctx.draw(true, () => {
console.log('二维码绘制完成');
resolve();
});
} catch (err) {
reject(err);
}
});
},
// 截图方法
async captureImage() {
try {
// uni.showLoading({
// title: '正在生成图片...'
// });
// 获取DOM元素(在H5环境下)
const element = this.$refs.captureElement.$el;
// 调用工具函数生成图片
const imageData = await elementToImage(element);
this.generatedImage=imageData
this.isLoading = false
this.isOrderLoading = false
this.$refs.sharePosterPop.toggleDropdown()
// 压缩图片
// const compressedImage = await this.compressImage(imageData);
// this.generatedImage = compressedImage;
} catch (error) {
console.error('截图失败:', error);
throw error; // 抛出错误以便外部捕获
} finally {
// uni.hideLoading();
}
try {
// uni.showLoading({
// title: '正在生成图片...'
// });
// 获取DOM元素(在H5环境下)
const element = this.$refs.captureElement.$el;
// 调用工具函数生成图片
const imageData = await elementToImage(element);
this.generatedImage = imageData
this.isLoading = false
this.isOrderLoading = false
this.$refs.sharePosterPop.toggleDropdown()
// 压缩图片
// const compressedImage = await this.compressImage(imageData);
// this.generatedImage = compressedImage;
} catch (error) {
console.error('截图失败:', error);
throw error; // 抛出错误以便外部捕获
} finally {
// uni.hideLoading();
}
},
compressImage(base64) {
return new Promise((resolve) => {
const img = new Image();
img.src = base64;
img.onload = () => {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
// 设置压缩后的宽高
const maxWidth = 800;
const maxHeight = 1200;
let width = img.width;
let height = img.height;
if (width > maxWidth) {
height *= maxWidth / width;
width = maxWidth;
}
if (height > maxHeight) {
width *= maxHeight / height;
height = maxHeight;
}
canvas.width = width;
canvas.height = height;
ctx.drawImage(img, 0, 0, width, height);
// 降低质量
resolve(canvas.toDataURL('image/jpeg', 0.7));
};
});
compressImage(base64) {
return new Promise((resolve) => {
const img = new Image();
img.src = base64;
img.onload = () => {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
// 设置压缩后的宽高
const maxWidth = 800;
const maxHeight = 1200;
let width = img.width;
let height = img.height;
if (width > maxWidth) {
height *= maxWidth / width;
width = maxWidth;
}
if (height > maxHeight) {
width *= maxHeight / height;
height = maxHeight;
}
canvas.width = width;
canvas.height = height;
ctx.drawImage(img, 0, 0, width, height);
// 降低质量
resolve(canvas.toDataURL('image/jpeg', 0.7));
};
});
},
// 关闭海报弹窗
closePoster(){
closePoster() {
this.showImg = false
this.generatedImage = ''
// this.shareItem = {
// fileFirstImage:''
// }
},
startPolling() {
startPolling() {
// 先清除可能存在的旧定时器
if (this.pollingTimer) {
clearInterval(this.pollingTimer)
this.pollingTimer = null
}
// 每3秒轮询一次,最多轮询100次(5分钟)
let count = 0
const maxCount = 100
this.pollingTimer = setInterval(() => {
count++
uni.showModal({
content:count
})
}, 1000) // 3秒轮询一次
this.pollingTimer = setInterval(() => {
count++
uni.showModal({
content: count
})
}, 1000) // 3秒轮询一次
},
// 新增:停止轮询
stopPolling () {
stopPolling() {
if (this.pollingTimer) {
clearInterval(this.pollingTimer)
this.pollingTimer = null
}
},
// 跳转到小程序登录
jumpMplogin(){
let currentUrl = ``;
if(this.miniShareInfo.miniShare){
if(uni.getStorageSync('loginType')=='codelogin'){
currentUrl = `${shareURL}/pages/lanch/index?fileId=${this.miniShareInfo.fileId}&coursesharing=1&serialsNo=${this.miniShareInfo.serialsNo}&shareCode=${this.miniShareInfo.shareCode}&shareUserId=${this.miniShareInfo.shareUserId}&jumpUrl=${this.miniShareInfo.jumpUrl}&landingPage=courseDetail&miniShare=1`
}else {
currentUrl = `${shareURL}/pages/lanch/index?fileId=${this.miniShareInfo.fileId}&landingPage=courseDetail&miniShare=1`
jumpMplogin() {
let currentUrl = ``;
if (this.miniShareInfo.miniShare) {
if (uni.getStorageSync('loginType') == 'codelogin') {
currentUrl =
`${shareURL}/pages/lanch/index?fileId=${this.miniShareInfo.fileId}&coursesharing=1&serialsNo=${this.miniShareInfo.serialsNo}&shareCode=${this.miniShareInfo.shareCode}&shareUserId=${this.miniShareInfo.shareUserId}&jumpUrl=${this.miniShareInfo.jumpUrl}&landingPage=courseDetail&miniShare=1`
} else {
currentUrl =
`${shareURL}/pages/lanch/index?fileId=${this.miniShareInfo.fileId}&landingPage=courseDetail&miniShare=1`
}
}else {
} else {
currentUrl = `${shareURL}/pages/lanch/index?fileId=${this.fileId}&landingPage=courseDetail&noShare=1`
}
let data = {
type:'login',
h5SystemType:'cffp',
type: 'login',
h5SystemType: 'cffp',
link: encodeURIComponent(currentUrl),
miniShare:this.miniShareInfo.miniShare?this.miniShareInfo.miniShare:''//是否从小程序的分享卡片进入的
miniShare: this.miniShareInfo.miniShare ? this.miniShareInfo.miniShare : '' //是否从小程序的分享卡片进入的
}
wx.miniProgram.postMessage({
data:{
type:'login',
shareData:JSON.stringify(data)
data: {
type: 'login',
shareData: JSON.stringify(data)
}
})
wx.miniProgram.navigateBack({
delta:1
delta: 1
})
}
},
onLoad(option) {
// 通过小程序的分享卡片进来的,保存分享参数
if(option.miniShare){
if (option.miniShare) {
this.miniShareInfo = option
}
this.sharePosterObj = uni.getStorageSync('sharePosterObj') || {};
// console.log('sharePosterObj======',this.sharePosterObj);
// 如果通过海报分享进入系统,海报分享人为合伙人且普通客户完成购买了,那么海报分享人可以获得销售佣金
this.shareUserId = this.sharePosterObj.inviteUserId || '';
if(companyInfo.companyType == '1'){
this.companyLogo='../../static/myteam/Group1633.png';
}else if(this.companyType == '2'){
this.companyLogo='../../static/suplogo.png';
if (companyInfo.companyType == '1') {
this.companyLogo = '../../static/myteam/Group1633.png';
} else if (this.companyType == '2') {
this.companyLogo = '../../static/suplogo.png';
}
if(option.addSystemType){
if (option.addSystemType) {
this.addSystemType = option.addSystemType
}
if(this.systemType == 'IOS'){
if (this.systemType == 'IOS') {
this.showName = '预约';
this.show = false;
}
this.fileId = option.fileId;
this.courseInfo.packFileId = option.packFileId;
this.deviceType = common.checkDeviceType();
if (option.coursesharing) {
......@@ -1473,44 +1453,44 @@
this.getuserRead()
let endTime = Date.parse(new Date()) / 1000;
let startTime = uni.getStorageSync('h5_startTime')
uni.setStorageSync('h5_coursesharing', this.coursesharing);
this.getshareData()
}
let dataForm = JSON.parse(JSON.stringify(uni.getStorageSync('cffp_userInfo')))
this.realName = dataForm.realName;
if(!this.realName){
if (!this.realName) {
this.queryInfo();
}
// this.switchTab(1);
},
onShow() {
this.isLoading = false
if(uni.getStorageSync('mpCffp')){
if (uni.getStorageSync('mpCffp')) {
this.mpCffp = uni.getStorageSync('mpCffp')
}
this.showImg = false
this.generatedImage = ''
this.shareItem={fileFirstImage:''},
this.loginType = uni.getStorageSync('loginType')
this.shareItem = { fileFirstImage: '' },
this.loginType = uni.getStorageSync('loginType')
this.init();
this.isWx_Miniprogram();
this.tabType = 1;
this.wayType = '1'
this.courseDetail();
uni.setStorageSync('entryUrl',window.location.href.split('#')[0])
if(uni.getStorageSync('cffp_userInfo')){
this.userInfo = JSON.parse(uni.getStorageSync('cffp_userInfo'))
uni.setStorageSync('entryUrl', window.location.href.split('#')[0])
if (uni.getStorageSync('cffp_userInfo')) {
this.userInfo = JSON.parse(uni.getStorageSync('cffp_userInfo'))
}
this.userId = uni.getStorageSync('cffp_userId')
// #ifdef H5
initJssdkShare(() => {
setWechatShare();
setWechatShare();
}, window.location.href);
// #endif
},
onReady() {
this.videoContext = uni.createVideoContext('myVideo');
......@@ -1524,13 +1504,13 @@
}
}
// #ifdef H5
initJssdkShare(() => {
setWechatShare();
}, window.location.href);
initJssdkShare(() => {
setWechatShare();
}, window.location.href);
// #endif
},
onHide() {
this.$nextTick(()=>{
this.$nextTick(() => {
this.$refs.sharePosterPop.closeDropdown()
})
}
......@@ -1538,96 +1518,111 @@
</script>
<style lang="scss" scoped>
.container{
.container {
width: 100%;
height: auto;
box-sizing: border-box;
position: relative;
.generateImageBox{
.generateImageBox {
position: absolute;
top:-100%;
top: -100%;
z-index: -1;
border-radius: 20rpx;
width: 100%;
box-sizing: border-box;
background-color: #fff;
.imgBox{
.imgBox {
box-sizing: border-box;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
padding: 20rpx;
.posterImg{
.posterImg {
width: 900rpx;
height: 900rpx;
}
}
.txtBox{
.txtBox {
padding: 20rpx;
.descriptionTxt{
.descriptionTxt {
font-size: 45rpx;
}
.productNum{
.productNum {
font-size: 45rpx;
font-weight: 500;
margin: 10rpx 0;
color: rgba(255, 74, 50, 1);
}
.generateImageBottom{
.generateImageBottom {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.left{
.left {
min-width: 500rpx;
.top{
.top {
width: 100%;
display: flex;
align-items: center;
image{
image {
width: 100%;
}
.companyName{
.companyName {
min-width: 300rpx;
color: #333;
font-size: 35rpx;
}
}
.bottom{
.bottom {
font-size: 30rpx;
color: #999;
margin-top: 10rpx;
font-weight: 500;
}
}
.qrcode-container {
background: #fff;
padding: 10rpx;
border-radius: 10rpx;
box-shadow: 0 0 10rpx rgba(0,0,0,0.1);
.qrcode-canvas {
display: block;
}
background: #fff;
padding: 10rpx;
border-radius: 10rpx;
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.1);
.qrcode-canvas {
display: block;
}
}
}
}
}
}
page {
padding: 0;
}
.loginPopupBox {
margin-top: 8vh;
padding: 20rpx 30rpx;
border-radius: 20rpx;
font-size: 30rpx;
background: #fff;
.popup_replenish_button2 {
color: rgba(9, 44, 171, 1);
background-color: #fff;
......@@ -1637,12 +1632,15 @@
font-size: 30rpx;
}
}
.swiperBox {
height: 930rpx;
}
.swiper-box {
height: 930rpx;
}
.swiper-item {
/* #ifndef APP-NVUE */
display: flex;
......@@ -1653,7 +1651,7 @@
height: 930rpx;
color: #fff;
}
.courseBannerBox {
// background-color: #ebebeb;
// display: flex;
......@@ -1675,6 +1673,7 @@
justify-content: space-between;
margin-bottom: 16rpx;
box-sizing: border-box;
h4 {
font-size: 40rpx;
}
......@@ -1752,7 +1751,8 @@
padding: 40rpx 150rpx 0;
background-color: #fff;
color: #666;
font-size: 32rpx;
font-size: 32rpx;
text.actived {
border-bottom: 2px solid #20269B;
color: #333;
......@@ -1847,6 +1847,7 @@
font-size: 16rpx;
margin-left: 10rpx;
}
.totalCourseCount {
color: #20269B;
font-size: 24rpx;
......@@ -1897,7 +1898,8 @@
align-items: center;
justify-content: center;
}
.shareBuyBox{
.shareBuyBox {
position: fixed;
bottom: 0;
left: 0;
......@@ -1912,7 +1914,8 @@
justify-content: space-between;
background-color: #fff;
box-sizing: border-box;
.leftBuy{
.leftBuy {
color: #fff;
background-color: #20269B;
padding: 20rpx 100rpx;
......@@ -1923,7 +1926,8 @@
align-items: center;
justify-content: center;
}
.rightShare{
.rightShare {
margin-right: 30rpx;
width: 30%;
color: #20269B;
......@@ -1938,6 +1942,7 @@
}
}
}
.markBox {
position: fixed;
left: 0;
......@@ -1951,8 +1956,10 @@
justify-content: flex-end;
z-index: 100000;
background: rgba(0, 0, 0, 0.8);
.guideImgBox {
margin: 20px auto;
uni-image {
width: 25% !important;
position: absolute;
......@@ -1960,68 +1967,78 @@
top: 0;
}
}
.tips {
margin-top: 30%;
padding: 0 30px;
}
/* iPad横屏特定适配 */
@media only screen
and (min-device-width: 768px)
and (max-device-width: 1024px)
and (orientation: landscape) {
.container {
.generateImageBox{
max-width: 950rpx !important;
.descriptionTxt{
font-size: 33rpx !important;
}
.txtBox{
.generateImageBottom{
.left{
width: 60% !important;
.top{
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: landscape) {
.container {
.generateImageBox {
max-width: 950rpx !important;
.descriptionTxt {
font-size: 33rpx !important;
}
.txtBox {
.generateImageBottom {
.left {
width: 60% !important;
.top {
width: 100%;
.companyName{
.companyName {
min-width: 200rpx !important;
font-size: 30rpx !important;
font-size: 30rpx !important;
}
}
.bottom {
font-size: 28rpx !important;
}
}
.bottom{
font-size: 28rpx !important;
}
}
}
}
}
}
}
/* 所有iPad竖屏 */
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: portrait) {
/* 竖屏样式 */
.generateImageBox{
max-width: 950rpx !important;
.descriptionTxt{
font-size: 33rpx !important;
}
.txtBox{
.generateImageBottom{
.left{
width: 60% !important;
.top{
/* 竖屏样式 */
.generateImageBox {
max-width: 950rpx !important;
.descriptionTxt {
font-size: 33rpx !important;
}
.txtBox {
.generateImageBottom {
.left {
width: 60% !important;
.top {
width: 100%;
.companyName{
.companyName {
min-width: 200rpx !important;
font-size: 30rpx !important;
font-size: 30rpx !important;
}
}
.bottom {
font-size: 28rpx !important;
}
}
.bottom{
font-size: 28rpx !important;
}
}
}
}
}
}
}
</style>
</style>
\ No newline at end of file
......@@ -231,6 +231,7 @@
}
},
onShow() {
this.isLoading = false
this.generatedImage = ''
......@@ -308,8 +309,6 @@
'产品中心',
'pages/courselist/courselist'
)
console.log('env', dataHandling.h5RuntimeEnv() == 'wechat-miniprogram');
if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
this.jumpMplogin()
return
......@@ -403,10 +402,12 @@
wx.miniProgram.postMessage({
data: {
type: 'share',
shareData: JSON.stringify(shareInfo)
shareData: JSON.stringify(shareInfo),
messageId: nanoid() // 唯一消息ID
}
})
return
}
this.getshareData2(shareCode, jumptime, this.shareItem)
......
......@@ -341,6 +341,7 @@
this.dataToken = ''
// 清除事件监听
uni.$off('loginUpdate', this.queryAreaCenterInfo);
},
methods: {
// 初始化首页分享 注意sdk时序问题。传递的url一定要是当前页面的url window.location.href.split('#')[0]
......
......@@ -123,7 +123,7 @@
})
}else if(landingPage == 'orderStatus'){
uni.reLaunch({
url:`/pages/orderStatus/orderStatus?orderId=${jumpInfo.value.orderId}&fileId=${jumpInfo.value.fileId}&orderStatus=2&userId=${res.data.userId}`
url:`/pages/orderStatus/orderStatus?orderId=${jumpInfo.value.orderId}&fileId=${jumpInfo.value.fileId}&orderStatus=2&userId=${res.data.userId}&backMySelf=1`
})
}
} else {
......
......@@ -57,6 +57,8 @@
import courseItem from "@/components/courseItem/courseItem.vue";
import tabBar from '../../components/tabBar/tabBar.vue';
import { initJssdkShare, setWechatShare } from '@/util/fiveshare';
import dataHandling from "@/util/dataHandling";
import wx from 'weixin-js-sdk'
export default {
components:{tabBar,courseItem},
data() {
......@@ -155,6 +157,7 @@
this.orderId = options.orderId;
this.orderStatus = options.orderStatus;
this.fileId = options.fileId;
// 没有oldToken代表支付订单人和提供订单人不是同一个人
if(options.userId && options.userId != "undefined"&&!uni.getStorageSync('oldToken')){
this.userId = options.userId;
......
import api from "@/api/api";
import dataHandling from './dataHandling'
import { initJssdkShare, setWechatShare } from '@/util/fiveshare';
......@@ -30,52 +25,53 @@ let shareCustomPageList = [
'/pages/courselist/courselist',
'/myPackageA/businessCard/businessCard',
]
export default function initApp(){
export default function initApp() {
let date = Date.now()
uni.addInterceptor('navigateTo', {
// 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
invoke (e) {
// 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
invoke(e) {
let userInfo = {}
if(uni.getStorageSync('cffp_userInfo')){
if (uni.getStorageSync('cffp_userInfo')) {
userInfo = JSON.parse(uni.getStorageSync('cffp_userInfo'))
}
let pages = getCurrentPages()
let pagesLength = pages.length
if(shareCustomPageList.indexOf(e.url)==-1){
if (shareCustomPageList.indexOf(e.url) == -1) {
if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
let shareInfo = {
title: '成为银盾合伙人,分享商品赚不停',
desc: `资源+伙伴,共赢未来!`,
desc: `资源+伙伴,共赢未来!`,
link: `${shareURL}/pages/index/index?miniShare=1`, //分享链接
imgUrl: `${shareURL}/myPackageA/static/images/logo3.png`, //图片
commonId:uni.getStorageSync('cffp_userId'),
sharePage:'index'//分享出去得页面
commonId: uni.getStorageSync('cffp_userId'),
sharePage: 'index' //分享出去得页面
}
wx.miniProgram.postMessage({
data: {
type: 'share',
shareData: JSON.stringify(shareInfo)
}
})
return
}
}
if(whiteList.indexOf(e.url)==-1&&!uni.getStorageSync('loginType')){
uni.setStorageSync('loginType','visitor')
uni.navigateTo({
url: '/myPackageA/login/login'
})
if (whiteList.indexOf(e.url) == -1 && !uni.getStorageSync('loginType')) {
uni.setStorageSync('loginType', 'visitor')
uni.navigateTo({
url: '/myPackageA/login/login'
})
}
if(uni.getStorageSync('cffp_userId')){
api.queryInfo({userId:uni.getStorageSync('cffp_userId')}).then(res=>{
if(!res['success']){
uni.setStorageSync('loginType','visitor')
if (uni.getStorageSync('cffp_userId')) {
api.queryInfo({ userId: uni.getStorageSync('cffp_userId') }).then(res => {
if (!res['success']) {
uni.setStorageSync('loginType', 'visitor')
uni.navigateTo({
url: '/myPackageA/login/login'
url: '/myPackageA/login/login'
})
return true
}
......@@ -87,166 +83,168 @@ export default function initApp(){
}
uni.setStorageSync('cffp_userInfo', JSON.stringify(cffp_userInfo))
}
})
}
if (userInfo.userIsActive == 2 &&uni.getStorageSync('loginType')=='codelogin') {
// 显示禁用用户弹窗
const currentPage = getCurrentPages()[getCurrentPages().length - 1];
currentPage.$refs.restrictedTip.open()
return false; // 返回对象而不是布尔值
if (userInfo.userIsActive == 2 && uni.getStorageSync('loginType') == 'codelogin') {
// 显示禁用用户弹窗
const currentPage = getCurrentPages()[getCurrentPages().length - 1];
currentPage.$refs.restrictedTip.open()
return false; // 返回对象而不是布尔值
}
let whiteArr = ['index','personalCenter','courselist','product']
let whiteArr = ['index', 'personalCenter', 'courselist', 'product']
// 1. 解析 URL 中的 from 参数
const getQueryParam = (url, key) => {
const queryString = url.split('?')[1];
if (!queryString) return null;
const params = new URLSearchParams(queryString);
return params.get(key);
};
const fromParam = getQueryParam(e.url, 'from');
if(!hasPermission(e.url)){
const getQueryParam = (url, key) => {
const queryString = url.split('?')[1];
if (!queryString) return null;
const params = new URLSearchParams(queryString);
return params.get(key);
};
const fromParam = getQueryParam(e.url, 'from');
if (!hasPermission(e.url)) {
// 如果 from 参数在 whiteArr 中,说明是tabbar页带着tabbar的标志参数跳转到登录页,以便未登录状态下回到对应的tabbar页
if (fromParam && whiteArr.includes(fromParam)) {
uni.redirectTo({
url: `/myPackageA/login/login?from=${fromParam}`
})
}else {
uni.redirectTo({
url: '/myPackageA/login/login'
})
}
return false
}
if (fromParam && whiteArr.includes(fromParam)) {
uni.redirectTo({
url: `/myPackageA/login/login?from=${fromParam}`
})
} else {
uni.redirectTo({
url: '/myPackageA/login/login'
})
}
return false
}
//当页面栈的个数大于10个时,不入页面栈
if (pagesLength >= 10) {
//临时处理,跟换调整方式
uni.redirectTo({
url: e.url
})
//临时处理,跟换调整方式
uni.redirectTo({
url: e.url
})
} else {
if (date) {
//如果时间戳存在 那么记录此页面的停留时间
dataHandling.pocessTracking(
'停留',
`用户在此页面停留${(Date.now() - date) / 1000}秒`,
'进入页面后离开页面',
2
)
}
date = Date.now()
if (date) {
//如果时间戳存在 那么记录此页面的停留时间
dataHandling.pocessTracking(
'停留',
`用户在此页面停留${(Date.now() - date) / 1000}秒`,
'进入页面后离开页面',
2
)
}
date = Date.now()
}
return true
},
success (e) {}
return true
},
success(e) {}
})
uni.addInterceptor('switchTab', {
// tabbar页面跳转前进行拦截
invoke(e) {
if(shareCustomPageList.indexOf(e.url)==-1){
if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
let shareInfo = {
title: '成为银盾合伙人,分享商品赚不停',
desc: `资源+伙伴,共赢未来!`,
link: `${shareURL}/pages/index/index?miniShare=1`, //分享链接
imgUrl: `${shareURL}/myPackageA/static/images/logo3.png`, //图片
commonId:uni.getStorageSync('cffp_userId'),
sharePage:'index'//分享出去得页面
}
wx.miniProgram.postMessage({
data: {
type: 'share',
shareData: JSON.stringify(shareInfo)
}
})
return
}
}
if(uni.getStorageSync('cffp_userId')){
api.queryInfo({userId:uni.getStorageSync('cffp_userId')}).then(res=>{
// if(!res['success']){
// uni.setStorageSync('loginType','visitor')
// uni.navigateTo({
// url: '/myPackageA/login/login'
// })
// return true
// }
// 保存用户得个人信息
if (res['success']) {
delete res.data.commonResult
const cffp_userInfo = {
...res.data
}
uni.setStorageSync('cffp_userInfo', JSON.stringify(cffp_userInfo))
}
})
}
if (date) {
//如果时间戳存在 那么记录此页面的停留时间
dataHandling.pocessTracking(
'停留',
`用户在此页面停留${(Date.now() - date) / 1000}秒`,
'进入页面后离开页面',
2
)
}
date = Date.now()
return true
},
success(e) {}
})
uni.addInterceptor('reLaunch', {
//页面跳转前拦截
invoke(e) {
if(shareCustomPageList.indexOf(e.url)==-1){
if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
let shareInfo = {
title: '成为银盾合伙人,分享商品赚不停',
desc: `资源+伙伴,共赢未来!`,
link: `${shareURL}/pages/index/index?miniShare=1`, //分享链接
imgUrl: `${shareURL}/myPackageA/static/images/logo3.png`, //图片
commonId:uni.getStorageSync('cffp_userId'),
sharePage:'index'//分享出去得页面
}
wx.miniProgram.postMessage({
data: {
type: 'share',
shareData: JSON.stringify(shareInfo)
// tabbar页面跳转前进行拦截
invoke(e) {
if (shareCustomPageList.indexOf(e.url) == -1) {
if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
let shareInfo = {
title: '成为银盾合伙人,分享商品赚不停',
desc: `资源+伙伴,共赢未来!`,
link: `${shareURL}/pages/index/index?miniShare=1`, //分享链接
imgUrl: `${shareURL}/myPackageA/static/images/logo3.png`, //图片
commonId: uni.getStorageSync('cffp_userId'),
sharePage: 'index' //分享出去得页面
}
wx.miniProgram.postMessage({
data: {
type: 'share',
shareData: JSON.stringify(shareInfo)
}
})
return
}
}
if (uni.getStorageSync('cffp_userId')) {
api.queryInfo({ userId: uni.getStorageSync('cffp_userId') }).then(res => {
// if(!res['success']){
// uni.setStorageSync('loginType','visitor')
// uni.navigateTo({
// url: '/myPackageA/login/login'
// })
// return true
// }
// 保存用户得个人信息
if (res['success']) {
delete res.data.commonResult
const cffp_userInfo = {
...res.data
}
uni.setStorageSync('cffp_userInfo', JSON.stringify(cffp_userInfo))
}
})
return
}
}
if (date) {
//如果时间戳存在 那么记录此页面的停留时间
dataHandling.pocessTracking(
'停留',
`用户在此页面停留${(Date.now() - date) / 1000}秒`,
'进入页面后离开页面',
2
)
}
date = Date.now()
return true
},
//页面跳转后缓存当前页路由
success(e) {}
if (date) {
//如果时间戳存在 那么记录此页面的停留时间
dataHandling.pocessTracking(
'停留',
`用户在此页面停留${(Date.now() - date) / 1000}秒`,
'进入页面后离开页面',
2
)
}
date = Date.now()
return true
},
success(e) {}
})
uni.addInterceptor('reLaunch', {
//页面跳转前拦截
invoke(e) {
if (shareCustomPageList.indexOf(e.url) == -1) {
if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
let shareInfo = {
title: '成为银盾合伙人,分享商品赚不停',
desc: `资源+伙伴,共赢未来!`,
link: `${shareURL}/pages/index/index?miniShare=1`, //分享链接
imgUrl: `${shareURL}/myPackageA/static/images/logo3.png`, //图片
commonId: uni.getStorageSync('cffp_userId'),
sharePage: 'index' //分享出去得页面
}
wx.miniProgram.postMessage({
data: {
type: 'share',
shareData: JSON.stringify(shareInfo)
}
})
return
}
}
if (date) {
//如果时间戳存在 那么记录此页面的停留时间
dataHandling.pocessTracking(
'停留',
`用户在此页面停留${(Date.now() - date) / 1000}秒`,
'进入页面后离开页面',
2
)
}
date = Date.now()
return true
},
//页面跳转后缓存当前页路由
success(e) {}
})
}
function hasPermission (url) {
let islogin = uni.getStorageSync("isLogin");//在这可以使用token、vuex
function hasPermission(url) {
let islogin = uni.getStorageSync("isLogin"); //在这可以使用token、vuex
// islogin = Boolean(Number(islogin));//返回布尔值
// 在白名单中或有登录判断条件可以直接跳转
if(whiteList.indexOf(url.slice(0,url.indexOf('?'))) !== -1 || islogin) {
return true
}
return false
}
// 在白名单中或有登录判断条件可以直接跳转
if (whiteList.indexOf(url.slice(0, url.indexOf('?'))) !== -1 || islogin) {
return true
}
return false
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment