Data tracking point added / Resentation template updated

This commit is contained in:
Vion 2022-02-08 17:09:24 +08:00
parent d251f881ef
commit d9b3ddb7fd
16 changed files with 526 additions and 64 deletions

View File

@ -52,6 +52,9 @@
display: none; display: none;
} }
} }
input {
padding-left: 16px;
}
} }

View File

@ -104,7 +104,7 @@ margin:0 auto;
} }
} }
img{ img{
width: 43px; width: 28px;
} }
.rc-foot{ .rc-foot{
display: flex; display: flex;
@ -195,7 +195,7 @@ display: none;
} }
} }
img{ img{
width: 43px; width: 28px;
} }
.rc-foot{ .rc-foot{
display: flex; display: flex;

View File

@ -0,0 +1,69 @@
.ts-resentation {
.ts-banner-swiper-container {
img {
width: 100%;
height: auto;
object-fit: contain;
}
}
.ts-product-list{
position:relative;
li{
border:none;
}
h2{
word-break: break-all;
}
.rc-column {
box-sizing: border-box;
span {
height:auto;
&:first-child{
height:5.625rem;
}
}
}
.desc {
width:13rem;
height:auto;
margin-left:auto;
margin-right:auto;
word-break: keep-all;
}
.swiper-slide {
padding-left:1rem;
padding-right:1rem;
}
}
/deep/.swiper-button-prev, /deep/.swiper-button-next {
color:#000;
&:after{
font-size:1rem;
}
}
.ts-carousel-indicator{
bottom:0;
/deep/.swiper-pagination-bullet{
margin-left:.5rem;
}
/deep/.swiper-pagination-bullet-active{
background:#E2001A;
}
&.center{
width:100%;
text-align: center;
}
}
}
@media screen and (max-width:768px) {
.ts-resentation {
.ts-product-list{
.desc {
}
h2{
font-size:1.375rem;
}
}
}
}

View File

@ -109,11 +109,25 @@ let devData={
], ],
}, },
], ],
amature:[ doggie:
{ {
title: "中型幼犬离乳期全价奶糕", 'dog':[
productimage: "/images/dogfoot.png", {
detail: "中心犬离乳期专属 高易再水合颗粒 帮助增强保护健康成长", title: "皇家小型幼犬离乳期全价奶糕",
productimage: "/images/doggie/dog-1.png",
detail: "小型幼犬离乳期专属 有助激发自身免疫力 顺利度过离乳期",
ecPrice: "¥80",
productCode:'16220100',
productList: [
{
productCode: "16220100,16220300,16221000,1622010002,1622030002,16220100F03,16220300F03",
},
],
},
{
title: "皇家中型幼犬离乳期全价奶糕",
productimage: "/images/doggie/dog-2.png",
detail: "中型犬离乳期专属 高易再水合颗粒 帮助增强保护健康成长",
productCode:'17220400', productCode:'17220400',
price: "¥263", price: "¥263",
productList: [ productList: [
@ -122,9 +136,23 @@ let devData={
}, },
], ],
}, },
{
title: "皇家大型幼犬离乳期全价奶糕",
productimage: "/images/doggie/dog-3.png",
detail: "大型犬离乳期专属 有助激发自身免疫力 顺利度过离乳期",
productCode:'18220400',
price: "¥254",
productList: [
{
productCode: "18220400,18221500,1822040002,18220400F03",
},
],
},
],
'cat':[
{ {
title: "皇家离乳期幼猫全价奶糕", title: "皇家离乳期幼猫全价奶糕",
productimage: "/images/catfoot.png", productimage: "/images/doggie/cat-1.png",
detail: "幼猫成长专属 支持幼猫自身保护力 为快速生长提供足够能量", detail: "幼猫成长专属 支持幼猫自身保护力 为快速生长提供足够能量",
price: "¥189", price: "¥189",
productCode:'20010200', productCode:'20010200',
@ -134,7 +162,33 @@ let devData={
}, },
], ],
}, },
{
title: "皇家幼猫全价粮",
productimage: "/images/doggie/cat-2.png",
detail: "帮助支持自身保护力 高易消化呵护娇嫩肠胃 定制配比助力健康发育",
ecPrice: "¥146",
productCode:'2003004003',
productList: [
{
productCode: "2003004003",
},
],
},
{
title: "皇家绝育呵护幼猫全价粮",
productimage: "/images/doggie/cat-3.png",
detail: "有助维护泌尿系统健康 量身打造精准营养 量身定制专属颗粒",
ecPrice: "¥114",
productCode:'2036004003',
productList: [
{
productCode: "2036004003,20360200",
},
],
}
] ]
}
}; };
//Production data //Production data
@ -249,11 +303,25 @@ let prdData={
], ],
}, },
], ],
amature:[ doggie:
{ {
title: "中型幼犬离乳期全价奶糕", 'dog':[
productimage: "/images/dogfoot.png", {
detail: "中心犬离乳期专属 高易再水合颗粒 帮助增强保护健康成长", title: "皇家小型幼犬离乳期全价奶糕",
productimage: "/images/doggie/dog-1.png",
detail: "小型幼犬离乳期专属 有助激发自身免疫力 顺利度过离乳期",
ecPrice: "¥80",
productCode:'16220100',
productList: [
{
productCode: "16220100,16220300,16221000,1622010002,1622030002,16220100F03,16220300F03",
},
],
},
{
title: "皇家中型幼犬离乳期全价奶糕",
productimage: "/images/doggie/dog-2.png",
detail: "中型幼犬离乳期专属 高易再水合颗粒 帮助增强保护健康成长",
ecPrice: "¥263", ecPrice: "¥263",
productCode:'17220400', productCode:'17220400',
productList: [ productList: [
@ -262,9 +330,23 @@ let prdData={
}, },
], ],
}, },
{
title: "皇家大型幼犬离乳期全价奶糕",
productimage: "/images/doggie/dog-3.png",
detail: "大型犬离乳期专属 有助激发自身免疫力 顺利度过离乳期",
productCode:'18220400',
price: "¥254",
productList: [
{
productCode: "18220400,18221500,1822040002,18220400F03",
},
],
}
],
'cat':[
{ {
title: "皇家离乳期幼猫全价奶糕", title: "皇家离乳期幼猫全价奶糕",
productimage: "/images/catfoot.png", productimage: "/images/doggie/cat-1.png",
detail: "幼猫成长专属 支持幼猫自身保护力 为快速生长提供足够能量", detail: "幼猫成长专属 支持幼猫自身保护力 为快速生长提供足够能量",
ecPrice: "¥189", ecPrice: "¥189",
productCode:'20010200', productCode:'20010200',
@ -274,7 +356,32 @@ let prdData={
}, },
], ],
}, },
{
title: "皇家幼猫全价粮",
productimage: "/images/doggie/cat-2.png",
detail: "帮助支持自身保护力 高易消化呵护娇嫩肠胃 定制配比助力健康发育",
ecPrice: "¥146",
productCode:'2003004003',
productList: [
{
productCode: "2003004003",
},
],
},
{
title: "皇家绝育呵护幼猫全价粮",
productimage: "/images/doggie/cat-3.png",
detail: "有助维护泌尿系统健康 量身打造精准营养 量身定制专属颗粒",
ecPrice: "¥114",
productCode:'2036004003',
productList: [
{
productCode: "2036004003,20360200",
},
],
},
] ]
}
}; };
//Production data end //Production data end
let data = { let data = {

View File

@ -2,8 +2,8 @@ const trackingScript = 'var dataLayer = window.dataLayer = window.dataLayer || [
const assetsUrl = 'var assetsUrl="/royalcanin-cdn-assets-new/css_js/";var isInitialized=false;'; const assetsUrl = 'var assetsUrl="/royalcanin-cdn-assets-new/css_js/";var isInitialized=false;';
export default { export default {
env: { env: {
//NODE_ENV: 'development' NODE_ENV: 'development'
NODE_ENV: 'production' //NODE_ENV: 'production'
}, },
// Global page headers: https://go.nuxtjs.dev/config-head // Global page headers: https://go.nuxtjs.dev/config-head
head: { head: {

View File

@ -31,7 +31,6 @@
"vuex-persistedstate": "^4.1.0" "vuex-persistedstate": "^4.1.0"
}, },
"devDependencies": { "devDependencies": {
"@vant/area-data": "^1.1.5",
"qrcodejs2": "^0.0.2", "qrcodejs2": "^0.0.2",
"webpack": "^4.46.0" "webpack": "^4.46.0"
} }

View File

@ -283,6 +283,13 @@ export default {
if (this.payorsucess == "立即支付") { if (this.payorsucess == "立即支付") {
this.getwei(item); this.getwei(item);
} else { } else {
_hmt.push([
"_trackCustomEvent",
"order_repay",
{
"status":"fail",
}
])
this.$router.push({ this.$router.push({
path: "/productdetails/producted", path: "/productdetails/producted",
query: { query: {
@ -333,7 +340,13 @@ export default {
userinformation: this.addressUserName + " " + this.addressPhoneNumber, userinformation: this.addressUserName + " " + this.addressPhoneNumber,
wxPay:data.msg wxPay:data.msg
}; };
_hmt.push([
"_trackCustomEvent",
"order_repay",
{
"status":"success",
}
])
this.$router.push({ this.$router.push({
path: "/personal/userpay", path: "/personal/userpay",
query: { query: {
@ -343,6 +356,13 @@ export default {
}, },
}); });
} else { } else {
_hmt.push([
"_trackCustomEvent",
"order_repay",
{
"status":"fail - " + this.orderNumber,
}
])
this.$message({ this.$message({
type: "error", type: "error",
message: "订单数据错误,请联系客服进行处理", message: "订单数据错误,请联系客服进行处理",

View File

@ -480,6 +480,13 @@ export default {
this.showPaytypeWarning = !this.paytypeWarning.result; this.showPaytypeWarning = !this.paytypeWarning.result;
if(this.paytypeWarning.result) { if(this.paytypeWarning.result) {
if(item.status==0){ if(item.status==0){
_hmt.push([
"_trackCustomEvent",
"order_repay",
{
"status":"success",
}
])
this.getwei(item); this.getwei(item);
}else{ }else{
this.$router.push({ this.$router.push({
@ -490,6 +497,14 @@ export default {
}, },
}); });
} }
} else {
_hmt.push([
"_trackCustomEvent",
"order_repay",
{
"status":"fail",
}
])
} }
}, },
usertwo() { usertwo() {

View File

@ -108,8 +108,8 @@
<span>{{ curItem.categoryName }}</span> <span>{{ curItem.categoryName }}</span>
</div> </div>
<div class="rc-button" v-if="!userbuy && curItem.goodUrl && curItem.goodUrl.length>5"> <div class="rc-button" v-if="!userbuy && curItem.curGoodUrl && curItem.curGoodUrl.length>5">
<a :href="curItem.goodUrl" target='_blank' class="ts-standard-btn">立即购买</a> <a :href="curItem.curGoodUrl" target='_blank' class="ts-standard-btn">立即购买</a>
</div> </div>
@ -293,6 +293,7 @@ import FixRight from "~/components/fixed-right.vue";
import unlogin from "~/components/unlogin.vue"; import unlogin from "~/components/unlogin.vue";
import Myfooter from "~/components/rc-footer.vue"; import Myfooter from "~/components/rc-footer.vue";
import { mapMutations } from "vuex"; import { mapMutations } from "vuex";
import util from "@/ajax/util";
const settings = require("@/config"); const settings = require("@/config");
import { import {
goodsmessage, goodsmessage,
@ -378,6 +379,7 @@ export default {
}, },
data() { data() {
return { return {
util,
tableLabelTest: [], tableLabelTest: [],
userimage: require("../../assets/image/unused.png"), userimage: require("../../assets/image/unused.png"),
gotop: false, gotop: false,
@ -454,8 +456,16 @@ export default {
mounted() { mounted() {
this.checkIsLogin(); this.checkIsLogin();
// console.log(this.curItem); // console.log(this.curItem);
if (this.usermessage !== "" || this.usermessage.data !== undefined) { if(this.isRxGoods) {
let isMobile = this.util.isMobile();
this.curItem.goodUrl = JSON.parse(this.curItem.goodUrl);
if(isMobile)
this.curItem.curGoodUrl = this.curItem.goodUrl.mobile;
else
this.curItem.curGoodUrl = this.curItem.goodUrl.pc;
}
this.usermessage = this.$store.state.userInfo; this.usermessage = this.$store.state.userInfo;
if (this.usermessage !== "" || this.usermessage.data !== undefined) {
this.productCode = this.$route.query.productCode; this.productCode = this.$route.query.productCode;
_hmt.push([ _hmt.push([
"_trackCustomEvent", "_trackCustomEvent",
@ -703,8 +713,8 @@ export default {
} }
}, },
userget() { userget() {
let user = localStorage.getItem("userInfo"); let user = this.$store.state.userInfo;
if (user == undefined || user == null || user == "") { if (!user) {
this.dialogInfo2 = true; this.dialogInfo2 = true;
return; return;
} else { } else {

View File

@ -0,0 +1,239 @@
<template>
<div class="ts-resentation rc-padding-y--lg">
<Myheader></Myheader>
<div class="rc-top"></div>
<div class="ts-banner-swiper-container">
<picture>
<source
media="(max-width: 768px)"
srcset="/images/rc-phone.png"
/>
<source
media="(min-width: 769px)"
srcset="/images/userbanner.png"
/>
<img src="/images/banner/pc-weixin.png" />
</picture>
</div>
<div>
<h2 class="rc-alpha rc-margin-y--md rc-text--center rc-margin-y--lg--mobile">明星犬粮</h2>
<ul class="ts-product-list rc-margin-bottom--lg rc-md-up">
<li
v-for="(item, index) in dataList.doggie.dog"
:key="index"
class="rc-margin-top--md"
>
<div class="rc-click rc-margin-bottom--md" @click="selectproduce(item, index)">
<div class="rc-rccontair">
<img :src="item.productimage" alt="" />
</div>
</div>
<div class="rc-column">
<div class="rc-click" @click="selectproduce(item, index)">
<span>{{ item.title }}</span>
<div class="desc">{{ item.detail }}</div>
</div>
<strong
class="
ts-standard-btn ts-standard-btn--two
rc-margin-y--md
center
"
@click="selectproduce(item, index)"
>立即购买</strong
>
</div>
</li>
</ul>
<div class="rc-md-down ts-product-list">
<swiper :options="swiperAOption">
<swiper-slide
v-for="(item, index) in dataList.doggie.dog"
:key="index"
>
<div class="rc-click rc-margin-bottom--md" @click="selectproduce(item, index)">
<div class="rc-rccontair">
<img :src="item.productimage" alt="" />
</div>
</div>
<div class="rc-column">
<div class="rc-click" @click="selectproduce(item, index)">
<h2 class="rc-beta">{{ item.title }}</h2>
<div class="desc">{{ item.detail }}</div>
</div>
<strong
class="
ts-standard-btn ts-standard-btn--two
rc-margin-y--md
center
"
@click="selectproduce(item, index)"
>立即购买</strong
>
</div>
</swiper-slide>
</swiper>
<div id="swiperAPagnation" class="swiper-pagination ts-carousel-indicator center"></div>
<div id="swiperAprev" class="swiper-button-prev ts-swiper-arrow"></div>
<div id="swiperAnext" class="swiper-button-next ts-swiper-arrow"></div>
</div>
</div>
<div class="contair rc-margin-y--lg--mobile">
<nuxt-link :to="`/productdetails/productlist/?stype=1`">
<span class="ts-standard-btn center">查看更多</span>
</nuxt-link>
</div>
<!-- Dog end -->
<div class="online bold rc-margin-y--lg"></div>
<!-- Cat start -->
<div>
<h2 class="rc-alpha rc-margin-y--md rc-text--center rc-margin-y--lg--mobile">明星猫粮</h2>
<ul class="ts-product-list rc-margin-bottom--lg rc-md-up">
<li
v-for="(item, index) in dataList.doggie.cat"
:key="index"
class="rc-margin-top--md"
>
<div class="rc-click rc-margin-bottom--md" @click="selectproduce(item, index)">
<div class="rc-rccontair">
<img :src="item.productimage" alt="" />
</div>
</div>
<div class="rc-column">
<div class="rc-click" @click="selectproduce(item, index)">
<span>{{ item.title }}</span>
<div class="desc">{{ item.detail }}</div>
</div>
<strong
class="
ts-standard-btn ts-standard-btn--two
rc-margin-y--md
center
"
@click="selectproduce(item, index)"
>立即购买</strong
>
</div>
</li>
</ul>
<div class="rc-md-down ts-product-list">
<swiper :options="swiperBOption">
<swiper-slide
v-for="(item, index) in dataList.doggie.cat"
:key="index"
>
<div class="rc-click rc-margin-bottom--md" @click="selectproduce(item, index)">
<div class="rc-rccontair">
<img :src="item.productimage" alt="" />
</div>
</div>
<div class="rc-column">
<div class="rc-click" @click="selectproduce(item, index)">
<h2 class="rc-beta">{{ item.title }}</h2>
<div class="desc">{{ item.detail }}</div>
</div>
<strong
class="
ts-standard-btn ts-standard-btn--two
rc-margin-y--md
center
"
@click="selectproduce(item, index)"
>立即购买</strong
>
</div>
</swiper-slide>
</swiper>
<div id="swiperBPagnation" class="swiper-pagination ts-carousel-indicator center"></div>
<div id="swiperBprev" class="swiper-button-prev ts-swiper-arrow"></div>
<div id="swiperBnext" class="swiper-button-next ts-swiper-arrow"></div>
</div>
</div>
<div class="contair rc-margin-y--lg--mobile">
<nuxt-link :to="`/productdetails/productlist/?stype=0`">
<span class="ts-standard-btn center">查看更多</span>
</nuxt-link>
</div>
<!-- Cat end-->
</div>
</template>
<script>
import Myheader from "~/components/header.vue";
import envData from "~/config/env-data.js";
export default {
data() {
return {
envData,
dataList:{doggie:{dog:[],cat:[]}},
swiperAOption: {
loop: false,
slidesPerView: "auto",
centeredSlides: true,
speed: 1000,
spaceBetween: 0,
pagination: {
el: "#swiperAPagnation",
clickable: true,
},
loopAdditionalSlides: 100,
navigation: {
nextEl: "#swiperAprev",
prevEl: "#swiperAnext",
}
},
swiperBOption: {
loop: false,
slidesPerView: "auto",
centeredSlides: true,
speed: 1000,
spaceBetween: 0,
pagination: {
el: "#swiperBPagnation",
clickable: true,
},
loopAdditionalSlides: 100,
navigation: {
nextEl: "#swiperBprev",
prevEl: "#swiperBnext",
}
},
}
},
components: {
Myheader,
},
mounted(){
let env=process.env.NODE_ENV;
this.dataList=this.envData[env];
},
methods:{
selectproduce(item) {
let isRxGoods = false;
let productCode = [];
let mainProductCode = item.productCode;
if (!item.ecPrice && !item.price) {
isRxGoods = 1;
productCode = [item.productCode];
} else {
for (let i of item.productList) {
productCode.push(i.productCode);
}
}
this.$router.push({
path: "/productdetails/producted",
query: {
stype: 1,
isRxGoods: isRxGoods,
mainProductCode: mainProductCode,
productCode: productCode.join(","),
},
});
},
}
};
</script>
<style lang="less" scoped >
@import url("../../assets/css/resentation.less");
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB