Commit 810821db authored by beisir's avatar beisir

feat:合并分享

parents b656f1da 8ab8ad42
import config from '@/config';
import http from '@/service/httpDecorator';
import qs from 'qs';
const { talosHost } = config;
export default {
......@@ -54,7 +55,8 @@ export default {
},
// 获取小程序码
getQrcodeUrl(params) {
return http.get(`${talosHost}/api/kdsp/playBill/getMakePicData`, params);
const qsString = qs.stringify(params);
return http.get(`${talosHost}/api/kdsp/playBill/getMakePicData?${qsString}`);
},
getGroupShareInfo(orderNo) {
return http.get(`${talosHost}/api/kdsp/groupShareInfo?orderNo=${orderNo}`);
......
import config from '@/config';
import http from '@/service/httpDecorator';
import { uiTrack } from '@/service/sa.service';
import { saDeviceId } from '@/service/sa.service';
const { talosHost } = config;
const PAGE = 'home';
export const getBanner = () => {
......@@ -13,7 +13,7 @@ export const getContent = () => {
};
export const getGoodsList = async data => {
const scDeviceId = await uiTrack.run('saDeviceId');
const scDeviceId = await saDeviceId();
return http.get(`${talosHost}/api/kdsp/recommend/goods-list`, {
params: data,
customHeader: {
......@@ -23,7 +23,7 @@ export const getGoodsList = async data => {
};
export const homeSearch = async data => {
const scDeviceId = await uiTrack.run('saDeviceId');
const scDeviceId = await saDeviceId();
return http.post(`${talosHost}/api/kdsp/search/result`, data, {
customHeader: {
scDeviceId
......
import request from '@/service/httpDecorator';
import config from '@/config';
import { uiTrack } from '@/service/sa.service';
import { saDeviceId } from '@/service/sa.service';
const { talosHost } = config;
const queryPayInfo = function(data) {
return request.post(`${talosHost}/open/checkout`, data);
};
const prepay = async function(data) {
const scDeviceId = await uiTrack.run('saDeviceId');
const scDeviceId = await saDeviceId();
return request.post(`${talosHost}/open/checkout/prepay`, data, {
customHeader: {
scDeviceId
......@@ -17,7 +17,7 @@ const prepay = async function(data) {
};
const pay = async function(data) {
const scDeviceId = await uiTrack.run('saDeviceId');
const scDeviceId = await saDeviceId();
return request.post(`${talosHost}/open/checkout/pay`, data, {
customHeader: {
scDeviceId
......@@ -43,7 +43,7 @@ const h5AppyUrl = function() {
};
const getCoupon = async function(params) {
const scDeviceId = await uiTrack.run('saDeviceId');
const scDeviceId = await saDeviceId();
return request.post(`${talosHost}/open/checkout/pay_coupon_list`, params, {
customHeader: {
scDeviceId
......@@ -56,7 +56,7 @@ const ocrFaceId = function(params) {
};
const getGoodsList = async function(data) {
const scDeviceId = await uiTrack.run('saDeviceId');
const scDeviceId = await saDeviceId();
return request.get(`${talosHost}/vcc/xyqb/recommend/goods-list`, {
params: data,
hideLoading: true,
......
src/assets/images/defeat.png

11.7 KB | W: | H:

src/assets/images/defeat.png

12.7 KB | W: | H:

src/assets/images/defeat.png
src/assets/images/defeat.png
src/assets/images/defeat.png
src/assets/images/defeat.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -59,6 +59,10 @@ export default {
},
mounted() {
EventBus.$on('goods_share_info', ({ shareInfo, type }) => {
if (!isApp && !isWxMp) {
this.tipDialogMessage();
return;
}
this.type = type;
if (typeof shareInfo === 'object') {
this.sharePicData = shareInfo;
......@@ -211,6 +215,14 @@ export default {
}
};
this.nativeBridge.showShareView(data);
},
tipDialogMessage() {
this.$dialog({
message: '请在App或小程序中进行分享~',
title: '',
showCancelButton: false,
confirmButtonText: '我知道了'
});
}
}
};
......
......@@ -129,8 +129,8 @@ export default {
console.log(err);
},
complete({ hash }) {
console.log('success', config.qiniuHost, hash);
const fileLink = config.qiniuHost + hash;
console.log('pic create success', fileLink);
_this.$emit('outputPicUrl', fileLink);
}
};
......
......@@ -17,6 +17,7 @@ const localHost = 'https://group-buy-test1.liangkebang.net'; // 测试环境页
// const talosHost = 'http://192.168.25.122:8098'; // 王永杰
// const talosHost = protocol + '//192.168.28.41'; // 超人
const opapiHost = 'https://opapi-test1.liangkebang.net';
const shenceUrl = protocol + '//bn.xyqb.com/sa?project=default';
const VCC_CHANNEL = '';
const TERMINAL = 'H5';
const VERSION = '7.9.00';
......@@ -32,5 +33,6 @@ export default {
TERMINAL,
VERSION,
kdspHost,
opapiHost
opapiHost,
shenceUrl
};
......@@ -10,6 +10,7 @@ const kdspHost = 'https://kdsp-api.q-gp.com';
const opapiHost = `${protocol}//opapi.xyqb.com`;
// const localHost = 'https://mall.q-gp.com/group-buying'; // 正式环境页面地址
const localHost = 'https://group-buy-test1.liangkebang.net'; // 正式环境页面地址
const shenceUrl = protocol + '//bn.xyqb.com/sa?project=production';
export default {
localHost,
// apiHost,
......@@ -22,5 +23,6 @@ export default {
VERSION,
qiniuHost,
kdspHost,
opapiHost
opapiHost,
shenceUrl
};
......@@ -21,7 +21,7 @@ if (process.env.SENTRY_ENV !== 'test' && process.env.NODE_ENV === 'production')
.install();
}
Vue.prototype.util = new Bridge();
Vue.prototype.$track = saService;
saService.init(router);
Vue.use(lazyload);
Vue.config.productionTip = false;
......
import Vue from 'vue';
import sa from 'sa-sdk-javascript';
import config from '@/config';
// +==========================
import UiTrack from '@qg/ui-track-web/src/index.js';
import router from '@/router';
import { getVccChannel } from '@/service/userInfo.service';
export const uiTrack = new UiTrack({
globalVars: {
platformType: 'H5',
parent_channel_id: getVccChannel('vccChannel') || '',
son_channel_id: getVccChannel('sonVccChannel') || ''
},
useUweb: false,
shenceHost: config.shenceHost,
showLog: config.test,
router: router // router实例
});
// +============+============
export default {
init: function(router) {
sa.init({
server_url: config.shenceHost,
server_url: config.shenceUrl,
heatmap: {
//是否开启点击图,默认 default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭
// 是否开启点击图,默认 default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭
clickmap: 'default',
//是否开启触达注意力图,默认 default 表示开启,自动采集 $WebStay 事件,可以设置 'not_collect' 表示关闭
scroll_notice_map: 'default'
// 关闭触达注意力
scroll_notice_map: 'not_collect'
},
//判断外层是否有 App 的 SDK ,如果有的话,会往 App 的 SDK 发数据。如果没有,就正常发送数据。
use_app_track: true,
show_log: config.test,
app_js_bridge: true
// TODO: app是如何判断的
// 判断外层是否有 App 的 SDK ,如果有的话,会往 App 的 SDK 发数据。如果没有,就正常发送数据。
use_app_track: false,
show_log: config.env === 'test'
});
// 添加公共属性
sa.registerPage({
platformType: 'H5',
uuid: '',
qg_device_id: '',
channel_code: '',
splitStream: ''
});
sa.registerPage({ platformType: 'H5' });
router.afterEach(() => {
Vue.nextTick(() => {
sa.quick('autoTrackSinglePage');
......@@ -48,16 +27,9 @@ export default {
});
}
};
export function registeredEvents(eventName, eventData, callback = () => {}) {
sa.track(eventName, eventData, callback);
}
// 用户登录神策埋点
export function loginSa(uuid = localStorage.get('uuid')) {
if (!uuid) return;
localStorage.set('uuid', uuid);
sa.login(uuid);
export function saTrackEvent(name, data) {
sa.track(name, data);
}
export function saDeviceId() {
return new Promise(resolve => {
sa.quick('isReady', function() {
......@@ -65,3 +37,7 @@ export function saDeviceId() {
});
});
}
// 设置公共属性
export function setRegisterPage(registerPageObj) {
sa.registerPage(registerPageObj);
}
......@@ -43,6 +43,18 @@
.goods {
&-share-button{
width: 40px;
height: 40px;
position: fixed;
right: 0;
bottom: 120px;
z-index: 3;
/deep/ img {
width: 40px;
height: 40px;
}
}
&-container {
padding-bottom: 60px;
box-sizing: border-box;
......
<template>
<div v-if="showPage" class="goods" style="height: 100%">
<div class="goods-share-button">
<cr-image
src="@/assets/images/share-icon.png"
width=""
height=""
class="goods-share-button-img"
/>
</div>
<!-- 主体 -->
<div class="goods-container">
<!-- 轮播图 -->
......
......@@ -167,8 +167,8 @@
width: 80px;
height: 80px;
position: absolute;
right: -3px;
top: -20px;
right: -13px;
top: -18px;
z-index: 2;
}
}
......
......@@ -88,7 +88,7 @@
/>
</div>
</div>
<bottom-nav v-if="showButtonNav" :status="2" :disabled="false" @share="shareTo" />
<bottom-nav v-if="showButtonNav" :status="2" :disabled="false" @share="setShareData" />
<sharePic ref="sharePic" :share-pic-data="sharePicData" @outputPicUrl="outputPicUrl" />
</div>
</template>
......@@ -200,7 +200,7 @@ export default {
this.shareInfo = {
title: this.detailInfo.goodsName,
desc: '',
link: link || '', // 页面地址
link: config.localHost + link || '', // 页面地址
imgUrl: this.detailInfo.thumbImageUrl, // 图片地
posterUrl: res || ''
};
......
......@@ -37,7 +37,7 @@
</dl>
</template>
<script>
import { registeredEvents } from '@/service/sa.service';
import { saTrackEvent } from '@/service/sa.service';
export default {
name: 'GoodsCard',
props: {
......@@ -105,7 +105,7 @@ export default {
} = this.goodsItem;
const { s } = this.btnByStatus;
if (s === 2) {
registeredEvents('H5_GroupZeroYuanPurchaseActivityPageOpenGroupImmediatelyBtnClick', {
saTrackEvent('H5_GroupZeroYuanPurchaseActivityPageOpenGroupImmediatelyBtnClick', {
skuNo
});
this.$router.push({
......
......@@ -115,9 +115,7 @@ export default {
isShowShare() {
return this.$store.state.pay.isPrimordialBrowser;
},
goodsShareInfo() {
return this.$store.state.pay.goodsShareInfo;
},
isShowSwiper() {
const { hasStart, hasStop } = this.goodsTemp;
return (!hasStart && !hasStop) || (hasStart && hasStop);
......@@ -131,14 +129,6 @@ export default {
return +new Date(endTime || 0);
}
},
watch: {
goodsShareInfo: {
immediate: false,
handler(val) {
this.$route.name === 'groupBuyList' && this.onShareEventChange(val);
}
}
},
created() {
this.reload = true;
},
......@@ -203,27 +193,6 @@ export default {
// activity_id
// });
},
async onShareEventChange({ ev, nativeBridge }) {
const vm = this;
let shareDic = await vm.getShareData();
if (ev === 'pic') {
nativeBridge.openNewUrl({
newUrl: `/pages/goodshare/index?url=${encodeURIComponent(
JSON.stringify(shareDic.posterUrl)
)}`
});
}
if (ev === 'weixin') {
// 分享朋友派发微信postMessage事件
nativeBridge.run({
event: 'showShareView',
data: {
shareDic
}
});
}
},
async getShareData() {
const {
sharePosterTemplateUrl,
......
......@@ -116,7 +116,6 @@ export default {
if (addressList) {
this.handleAddressChange(addressList);
}
// this.$track.registeredEvents('H5_2B_OrderConfirmPageExposure');
},
handleToAddress() {
if (this.orderInfo.addrReceiverInfo) {
......
......@@ -101,7 +101,7 @@ import countDown from '@/components/countDown';
import { isWxMp, isApp } from '@/service/validation.service';
import Bridge from '@qg/js-bridge';
import MpBridge from '@/service/mp';
import { registeredEvents } from '@/service/sa.service';
import { saTrackEvent } from '@/service/sa.service';
import groupBuyApi from '@/api/groupBuy';
export default {
name: 'OrderSkuList',
......@@ -191,7 +191,7 @@ export default {
// this.shareInfo = skuInfo;
// this.$store.dispatch('goods_share_open');
registeredEvents('H5_MyPuzzlePageGroupOrderBtnClick', {
saTrackEvent('H5_MyPuzzlePageGroupOrderBtnClick', {
sku_no: '',
leader_user_id: ''
});
......
import cookies from '@/service/cookieStorage.service';
export const goUrlExtends = {
methods: {
goHome(payStatus) {
goHome() {
// 商城地址
if (payStatus) {
this.$track?.registeredEvents('h5_RechargeResultPageClick', {
pay_status: payStatus,
buttons_name: '返回首页'
});
}
setTimeout(() => {
this.$router.replace({ name: 'home' });
}, 500);
},
goOrderList(payStatus) {
if (payStatus) {
this.$track?.registeredEvents('h5_RechargeResultPageClick', {
pay_status: payStatus,
buttons_name: '查看订单'
});
}
goOrderList() {
setTimeout(() => {
this.$router.replace({ name: 'orderList', params: { status: 0 } });
}, 500);
......
......@@ -124,7 +124,7 @@ import {
import {
pay,
prepay,
// getCoupon,
getCoupon,
ocrFaceId,
queryPayInfo,
kaGetNextUrl,
......@@ -227,12 +227,10 @@ export default {
// 先支付再查询信息
this.pay(this.payInfo?.paramsData, 'ocr', cookies.get('ocrflag'));
}
// !this.$route?.query?.ocrflag && this.$track?.registeredEvents('h5_CheckOutCouterExposure');
const vccToken = localStorage.get('vccToken');
Current_Url = `${window.location.origin}/payWaiting?vccToken=${vccToken}&orderNo=${this.orderNo}`;
this.queryPayInfo();
// this.getCouponList(this.orderNo);
// this.$track.registeredEvents('H5_2B_CashierPageExposure');
this.getCouponList(this.orderNo);
},
methods: {
/* 查询支付信息 */
......@@ -380,22 +378,22 @@ export default {
}
},
/* 获取优惠券信息 */
// async getCouponList(orderNo) {
// const [data] = await getCoupon({ orderNo: orderNo });
// this.payCouponList = [];
// if (data && data.coupons) {
// data.coupons.forEach(item => {
// // 享花券
// if (item.couponCategory === 21) {
// this.payCouponList.push({
// ...item,
// id: item.pickupId,
// pickupAble: 1
// });
// }
// });
// }
// },
async getCouponList(orderNo) {
const [data] = await getCoupon({ orderNo: orderNo });
this.payCouponList = [];
if (data && data.coupons) {
data.coupons.forEach(item => {
// 享花券
if (item.couponCategory === 21) {
this.payCouponList.push({
...item,
id: item.pickupId,
pickupAble: 1
});
}
});
}
},
nextAction: throttle(function() {
const trackParams = {
order_id: this.orderNo,
......@@ -404,8 +402,6 @@ export default {
buttons_name: this.accountS.text
};
cookies.set('payTrackInfo', trackParams);
// this.$track?.registeredEvents('h5_CheckOutCounterConfirmPayClick', trackParams);
// this.$track?.registeredEvents('H5_2BCashierPageConfirmPaymentBtnClick', trackParams);
if (this.isShowProtocol) {
if (!this.isCheckAgreement) {
this.$toast('请仔细阅读并同意相关协议');
......@@ -562,15 +558,9 @@ export default {
openCouponModal() {
this.random = Math.random();
this.couponPopup = true;
// this.$track?.registeredEvents('h5_CheckOutCouterCouponBannerClick');
},
/* 选取优惠券 */
handleSelectCoupon(id, selectedCoupon) {
// this.$track?.registeredEvents('h5_CheckOutCounterCouponPopupWindowClick', {
// coupon_type: '享花券',
// check_or_not: id ? '勾选' : '取消',
// coupon_id: id
// });
this.selectedCoupon = selectedCoupon || {};
this.getBtnStatus(this.isRiskLimit());
this.couponPopup = false;
......
......@@ -172,7 +172,9 @@ export default {
return this.$toast('获取分享数据失败');
}
this.sharePicData = res;
this.$refs.sharePic.createAndUploadPic();
this.$nextTick(() => {
this.$refs.sharePic.createAndUploadPic();
});
},
goPage(type) {
if (type == 1) {
......
......@@ -60,28 +60,12 @@ export default {
}
},
mounted() {
this.$track?.registeredEvents('h5_RechargeResultPageExposure', {
pay_status: '正在支付'
});
const amount = cookies.get('amount') || {};
const payTrackInfo = cookies.get('payTrackInfo') || {};
this.$track?.registeredEvents('H5_2BPaymentPageExposure', {
order_no: this.orderNo,
pay_result: '正在支付',
vcc_state: payTrackInfo.vcc_state,
pay_method: payTrackInfo.pay_method,
pay_amount: amount.finalAmt
});
this.$dialog({
message: '请确认订单已完成支付',
confirmButtonText: '已完成支付',
cancelButtonText: '重新支付',
confirmButtonColor: '#EC1500',
onCancel: () => {
this.$track?.registeredEvents('h5_RechargeResultPageClick', {
pay_status: '正在支付',
buttons_name: '重新支付'
});
this.goPay();
},
onConfirm: () => {
......
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