Commit a61e5770 authored by wangwei's avatar wangwei

磨耳朵

parent 319b2428
...@@ -4,4 +4,4 @@ ...@@ -4,4 +4,4 @@
hm.src = "https://hm.baidu.com/hm.js?3d48322170d471164729cba5dfa4195f"; hm.src = "https://hm.baidu.com/hm.js?3d48322170d471164729cba5dfa4195f";
var s = document.getElementsByTagName("script")[0]; var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s); s.parentNode.insertBefore(hm, s);
})();</script><style></style><link href=static/css/app.9f631d4069047acf4ee994f5d9f958c3.css rel=stylesheet></head><body><div id=app></div><script src=https://res.wx.qq.com/open/js/jweixin-1.3.2.js></script><script type=text/javascript src=static/js/manifest.72a8eeba4c837569e2d8.js></script><script type=text/javascript src=static/js/vendor.4cd27f7178c561192f9c.js></script><script type=text/javascript src=static/js/app.d5461d6fe89708bb4059.js></script></body></html> })();</script><style></style><link href=static/css/app.9f631d4069047acf4ee994f5d9f958c3.css rel=stylesheet></head><body><div id=app></div><script src=https://res.wx.qq.com/open/js/jweixin-1.3.2.js></script><script type=text/javascript src=static/js/manifest.ec666e09e47b4cfebced.js></script><script type=text/javascript src=static/js/vendor.11662b0d6b6c262afef4.js></script><script type=text/javascript src=static/js/app.5830153defe41ae6afac.js></script></body></html>
\ No newline at end of file \ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,o){for(var f,d,i,u=0,b=[];u<r.length;u++)d=r[u],t[d]&&b.push(t[d][0]),t[d]=0;for(f in c)Object.prototype.hasOwnProperty.call(c,f)&&(e[f]=c[f]);for(n&&n(r,c,o);b.length;)b.shift()();if(o)for(u=0;u<o.length;u++)i=a(a.s=o[u]);return i};var r={},t={22:0};function a(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,a){n=t[e]=[r,a]});n[2]=r;var c=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,a.nc&&o.setAttribute("nonce",a.nc),o.src=a.p+"static/js/"+e+"."+{0:"70a7e7dda89d34d1485f",1:"a00eeec97eca55eb2661",2:"2aff34d1c988155088e0",3:"280edd1955649f0ed2b2",4:"403c7c374ba40f0b079e",5:"20759f75ea39d01afe98",6:"42dc7cd7f3c0a7513063",7:"ab3305eb425a0075e299",8:"5b7f72034dfa7a4bba36",9:"36abe5869f956c6e960c",10:"8d0e37c9f9a3f2593959",11:"bc77666fec064591b087",12:"223ef55d3b18924abc66",13:"e071662ce4bb6348695c",14:"da3a460997d731c65432",15:"efc5b92baeac5a717659",16:"8af7eb6f97e0759ee078",17:"f5938e4969a0c61b5f31",18:"6cd5dca1601592bd95fd",19:"2ec1f3dfd3391f01a7e4"}[e]+".js";var f=setTimeout(d,12e4);function d(){o.onerror=o.onload=null,clearTimeout(f);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=d,c.appendChild(o),r},a.m=e,a.c=r,a.d=function(e,n,r){a.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="",a.oe=function(e){throw console.error(e),e}}([]);
//# sourceMappingURL=manifest.ec666e09e47b4cfebced.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/bootstrap 50921f53e925fc19dedf"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","22","exports","module","l","e","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","script","createElement","type","charset","async","timeout","nc","setAttribute","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","setTimeout","onScriptComplete","onerror","onload","clearTimeout","chunk","Error","undefined","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"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","file":"static/js/manifest.ec666e09e47b4cfebced.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t22: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"70a7e7dda89d34d1485f\",\"1\":\"a00eeec97eca55eb2661\",\"2\":\"2aff34d1c988155088e0\",\"3\":\"280edd1955649f0ed2b2\",\"4\":\"403c7c374ba40f0b079e\",\"5\":\"20759f75ea39d01afe98\",\"6\":\"42dc7cd7f3c0a7513063\",\"7\":\"ab3305eb425a0075e299\",\"8\":\"5b7f72034dfa7a4bba36\",\"9\":\"36abe5869f956c6e960c\",\"10\":\"8d0e37c9f9a3f2593959\",\"11\":\"bc77666fec064591b087\",\"12\":\"223ef55d3b18924abc66\",\"13\":\"e071662ce4bb6348695c\",\"14\":\"da3a460997d731c65432\",\"15\":\"efc5b92baeac5a717659\",\"16\":\"8af7eb6f97e0759ee078\",\"17\":\"f5938e4969a0c61b5f31\",\"18\":\"6cd5dca1601592bd95fd\",\"19\":\"2ec1f3dfd3391f01a7e4\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 50921f53e925fc19dedf"],"sourceRoot":""}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
src/assets/changeOld.png

24.5 KB | W: | H:

src/assets/changeOld.png

21.9 KB | W: | H:

src/assets/changeOld.png
src/assets/changeOld.png
src/assets/changeOld.png
src/assets/changeOld.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/guide/next.png

347 Bytes | W: | H:

src/assets/guide/next.png

624 Bytes | W: | H:

src/assets/guide/next.png
src/assets/guide/next.png
src/assets/guide/next.png
src/assets/guide/next.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/listen.png

21.7 KB | W: | H:

src/assets/listen.png

24 KB | W: | H:

src/assets/listen.png
src/assets/listen.png
src/assets/listen.png
src/assets/listen.png
  • 2-up
  • Swipe
  • Onion skin
<template> <template>
<div class="collection-page"> <div class="collection-page">
<div class="collection-content"> <div class="collection-content" v-if="!noOne">
<div class="top-play"> <div class="top-play">
<img :src="playAllUrl" class="play-all-img"> <img :src="playAllUrl" class="play-all-img">
<div> <div>
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
class="collection-list" class="collection-list"
v-infinite-scroll="loadMore" v-infinite-scroll="loadMore"
infinite-scroll-disabled="loading"> infinite-scroll-disabled="loading">
<li v-for="(data,index) in showObj.audio" @click="showAudio(index)"> <li
v-for="(data,index) in showObj.audio" @click="showAudio(index)">
<div class="index">{{index+1}}</div> <div class="index">{{index+1}}</div>
<div class="text"> <div class="text">
<div class="title"> <div class="title">
...@@ -26,27 +27,45 @@ ...@@ -26,27 +27,45 @@
</li> </li>
</ul> </ul>
</div> </div>
<div v-if="noOne" class="noOne">
<img :src="errorUrl">
<div class="text">
还没有收藏哦
<br>
快去课程里添加吧
</div>
<div class="btn">
去添加
</div>
</div>
<foot-page/> <foot-page/>
<audio-page ref="audioPage" v-if="showObj.audio.length>0" v-show="showObj.show" :showObj="showObj"/> <audio-page ref="audioPage" v-if="showObj.audio.length>0" v-show="showObj.show" :showObj="showObj"/>
<guide-block v-if="noOne"></guide-block>
</div> </div>
</template> </template>
<script> <script>
import guideBlock from '../guide/collection'
import {getUserCollectApi} from "../../service/api"; import {getUserCollectApi} from "../../service/api";
import errorUrl from '../../assets/error.png'
import playAllUrl from '../../assets/newLesson/audio-play-all.png' import playAllUrl from '../../assets/newLesson/audio-play-all.png'
import playDefaultUrl from '../../assets/newLesson/zDefaultIcon.png' import playDefaultUrl from '../../assets/newLesson/zDefaultIcon.png'
import playActiveUrl from '../../assets/newLesson/zIcon.png' import playActiveUrl from '../../assets/newLesson/zIcon.png'
import footPage from '../public/bottomTab' import footPage from '../public/bottomTab'
import audioPage from './audio' import audioPage from './audio'
export default { export default {
name: "index", name: "index",
components:{ components:{
footPage, footPage,
audioPage audioPage,
guideBlock
}, },
data(){ data(){
return { return {
errorUrl:errorUrl,
playAllUrl:playAllUrl, playAllUrl:playAllUrl,
noOne:false,
playDefaultUrl:playDefaultUrl, playDefaultUrl:playDefaultUrl,
playActiveUrl:playActiveUrl, playActiveUrl:playActiveUrl,
showObj:{ showObj:{
...@@ -72,9 +91,12 @@ ...@@ -72,9 +91,12 @@
}, },
initPage(){ initPage(){
getUserCollectApi({limit:100000}).then(res=>{ getUserCollectApi({limit:100000}).then(res=>{
this.showObj.audio =this.showObj.audio.concat(res.list); if(res.list.length < 1){
this.noOne =true
}else{
this.showObj.audio =res.list;
this.total = res.total; this.total = res.total;
this.page++ }
}) })
} }
} }
...@@ -86,6 +108,32 @@ ...@@ -86,6 +108,32 @@
._27377740323539322{height:14*@toVw;width:16*@toVw;background-position:0 0;} ._27377740323539322{height:14*@toVw;width:16*@toVw;background-position:0 0;}
.zIcon{height:18*@toVw;width:18*@toVw;background-position:0 -14*@toVw;} .zIcon{height:18*@toVw;width:18*@toVw;background-position:0 -14*@toVw;}
.zDefaultIcon{height:18*@toVw;width:18*@toVw;background-position:0 -32*@toVw;} .zDefaultIcon{height:18*@toVw;width:18*@toVw;background-position:0 -32*@toVw;}
.noOne{
padding-top: 86*@toVw;
text-align: center;
img{
width: 164*@toVw;
}
.text{
margin-top: 20*@toVw;
font-size:16px;
font-family:PingFang-SC-Medium;
font-weight:500;
color:rgba(153,153,153,1);
}
.btn{
margin-top: 26*@toVw;
width:91*@toVw;
height:32*@toVw;
border-radius:18*@toVw;
border:1*@toVw solid rgba(255,120,117,1);
line-height: 32*@toVw;
font-size:14px;
font-family:PingFang-SC-Medium;
font-weight:500;
color:rgba(255,120,117,1);
}
}
.collection-page{ .collection-page{
background: #eeeeee; background: #eeeeee;
.collection-content{ .collection-content{
......
...@@ -5,14 +5,16 @@ ...@@ -5,14 +5,16 @@
点击放大图片 点击放大图片
</div> </div>
<div class="btn-block"> <div class="btn-block">
<img :src="toBigUrl"/>
<img :src="listUrl"/> <img :src="listUrl"/>
<img :src="backUrl"/> <img :src="nextUrl" class="backImg"/>
<img class="play-btn" :src="playUrl"/> <img class="play-btn" :src="playUrl"/>
<img :src="nextUrl"/> <img :src="nextUrl"/>
<img :src="refUrl"/> <img :src="refUrl"/>
<img :src="loveUrl"/>
</div> </div>
<img :src="goDownUrl" class="toLesson"/> <img :src="goUrl" class="toLesson"/>
<div class="lesson-text">音频功能栏</div> <div class="lesson-text">点击<span class="color-red">收藏</span></div>
<img class="i-know" :src="iKnowUrl"/> <img class="i-know" :src="iKnowUrl"/>
</div> </div>
</div> </div>
...@@ -20,10 +22,11 @@ ...@@ -20,10 +22,11 @@
<script> <script>
import {getGuideApi,setGuideApi} from "../../service/api"; import {getGuideApi,setGuideApi} from "../../service/api";
import toBigUrl from '../../assets/guide/toBig.png'
import loveUrl from '../../assets/guide/love.png'
import iKnowUrl from '../../assets/guide/lesson.png' import iKnowUrl from '../../assets/guide/lesson.png'
import playUrl from '../../assets/guide/play.png' import playUrl from '../../assets/guide/play.png'
import nextUrl from '../../assets/guide/next.png' import nextUrl from '../../assets/guide/next.png'
import backUrl from '../../assets/guide/back.png'
import listUrl from '../../assets/guide/list.png' import listUrl from '../../assets/guide/list.png'
import refUrl from '../../assets/guide/ref.png' import refUrl from '../../assets/guide/ref.png'
import goUrl from '../../assets/guide/go.png' import goUrl from '../../assets/guide/go.png'
...@@ -36,8 +39,9 @@ ...@@ -36,8 +39,9 @@
iKnowUrl:iKnowUrl, iKnowUrl:iKnowUrl,
goDownUrl:goDownUrl, goDownUrl:goDownUrl,
playUrl:playUrl, playUrl:playUrl,
toBigUrl:toBigUrl,
loveUrl:loveUrl,
nextUrl:nextUrl, nextUrl:nextUrl,
backUrl:backUrl,
listUrl:listUrl, listUrl:listUrl,
refUrl:refUrl, refUrl:refUrl,
goUrl:goUrl, goUrl:goUrl,
...@@ -46,7 +50,7 @@ ...@@ -46,7 +50,7 @@
}, },
mounted(){ mounted(){
let json = { let json = {
page_name:'audio' page_name:'newAudio'
}; };
getGuideApi(json).then(res=>{ getGuideApi(json).then(res=>{
if(res == 0){ if(res == 0){
...@@ -62,6 +66,9 @@ ...@@ -62,6 +66,9 @@
.star{ .star{
width: 23*@toVw; width: 23*@toVw;
} }
.color-red{
color: #FF5050;
}
.title{ .title{
width:190*@toVw; width:190*@toVw;
height:187*@toVw; height:187*@toVw;
...@@ -73,19 +80,22 @@ ...@@ -73,19 +80,22 @@
top: 107*@toVw; top: 107*@toVw;
left: 93*@toVw; left: 93*@toVw;
} }
.btn-block{ .btn-block{
width:251*@toVw; width:280*@toVw;
height:57*@toVw; height:57*@toVw;
border-radius:29*@toVw;
border:1*@toVw solid rgba(255,255,255,1);
display: flex; display: flex;
position: absolute; position: absolute;
top: 430*@toVw; top: 435*@toVw;
left: 60*@toVw; left: 50%;
margin-left: -140*@toVw;
img{ img{
width: 16*@toVw; width: 16*@toVw;
vertical-align: middle; vertical-align: middle;
} }
.backImg{
transform: rotate(180deg);
}
.play-btn{ .play-btn{
width: 40*@toVw; width: 40*@toVw;
} }
...@@ -114,9 +124,9 @@ ...@@ -114,9 +124,9 @@
.toLesson{ .toLesson{
width: 45*@toVw; width: 45*@toVw;
position: absolute; position: absolute;
top: 500*@toVw; top: 485*@toVw;
left: 100*@toVw; right: 55*@toVw;
transform: rotate(30deg); transform: rotate(150deg);
} }
.color-red{ .color-red{
color: #FF6477; color: #FF6477;
...@@ -131,7 +141,7 @@ ...@@ -131,7 +141,7 @@
border-radius:8*@toVw; border-radius:8*@toVw;
position: absolute; position: absolute;
top: 520*@toVw; top: 520*@toVw;
left: 150*@toVw; left: 160*@toVw;
text-align: center; text-align: center;
border:1*@toVw solid rgba(255,255,255,1) border:1*@toVw solid rgba(255,255,255,1)
} }
......
<template>
<div>
<div class="guide" v-if="show" @click="show=false">
<img :src="bgUrl" class="bg"/>
<div class="tips">
需要先在课程中将歌曲<span class="color-red">加入收藏</span>
才可以使用哦
</div>
</div>
</div>
</template>
<script>
import {getGuideApi,setGuideApi} from "../../service/api";
import bgUrl from '../../assets/guide/collect.png'
export default {
name: "guide",
data(){
return{
bgUrl:bgUrl,
show:false
}
},
mounted(){
let json = {
page_name:'collection'
};
this.show=true;
}
}
</script>
<style scoped lang="less">
@import "../../util/public";
.color-red{
color:#FF5050 ;
}
.guide{
position: fixed;
top: 0;
left: 0;
bottom: 0;
overflow: hidden;
right: 0;
background-size: 100% 100%;
color: white;
z-index: 9999;
background:rgba(0,0,0,0.8);
.bg{
margin-top: -60*@toVw;
width: 100%;
}
.tips{
width: 196*@toVw;
position: absolute;
top: 440*@toVw;
left: 20*@toVw;
font-size:14*@toVw;
font-family:PingFang-SC-Medium;
font-weight:500;
color:rgba(255,255,255,1);
text-align: center;
padding: 10*@toVw;
border: 1*@toVw solid #fff;
border-radius: 8*@toVw;
}
}
</style>
...@@ -6,12 +6,23 @@ import router from './router' ...@@ -6,12 +6,23 @@ import router from './router'
import store from './store' import store from './store'
import MintUI from 'mint-ui' import MintUI from 'mint-ui'
import VueClipboard from 'vue-clipboard2' import VueClipboard from 'vue-clipboard2'
import sa from'sa-sdk-javascript';
import 'mint-ui/lib/style.css' import 'mint-ui/lib/style.css'
import Log from './util/log'
Vue.config.productionTip = false; Vue.config.productionTip = false;
sa.init({
Vue.use(MintUI) server_url: 'http://47.107.250.38:8106/sa?project=default', // 替换成自己的神策地址
Vue.use(VueClipboard) heatmap: {
//是否开启点击图,默认 default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭
clickmap:'not_collect',
show_log: true, // 打印console,自己配置,可以看到自己是否踩点成功,以及
//是否开启触达注意力图,默认 default 表示开启,自动采集 $WebStay 事件,可以设置 'not_collect' 表示关闭
scroll_notice_map:'not_collect'
}
});
Log.init();
Vue.use(MintUI);
Vue.use(VueClipboard);
/* eslint-disable no-new */ /* eslint-disable no-new */
new Vue({ new Vue({
el: '#app', el: '#app',
......
...@@ -2,6 +2,7 @@ import Vue from 'vue' ...@@ -2,6 +2,7 @@ import Vue from 'vue'
import store from "@/store" import store from "@/store"
import common from '../util/common' import common from '../util/common'
import Router from 'vue-router' import Router from 'vue-router'
import sa from'sa-sdk-javascript';
Vue.use(Router); Vue.use(Router);
const router =new Router({ const router =new Router({
...@@ -153,6 +154,9 @@ const router =new Router({ ...@@ -153,6 +154,9 @@ const router =new Router({
}); });
router.beforeEach((to,from,next)=> { router.beforeEach((to,from,next)=> {
Vue.nextTick(() => {
sa.quick("autoTrackSinglePage");
});
let browser = { let browser = {
versions: function () { versions: function () {
let u = navigator.userAgent, app = navigator.appVersion; let u = navigator.userAgent, app = navigator.appVersion;
...@@ -205,7 +209,6 @@ router.beforeEach((to,from,next)=> { ...@@ -205,7 +209,6 @@ router.beforeEach((to,from,next)=> {
}else if(to.meta.skip_login){ }else if(to.meta.skip_login){
goOn() goOn()
}else{ }else{
alert(to.fullPath)
let query = {retUrl:to.fullPath}; let query = {retUrl:to.fullPath};
if(to.meta.noNew){ if(to.meta.noNew){
query.is_new_user_url = 1 query.is_new_user_url = 1
...@@ -214,6 +217,7 @@ router.beforeEach((to,from,next)=> { ...@@ -214,6 +217,7 @@ router.beforeEach((to,from,next)=> {
} }
// if(to.meta.skip_login){ // if(to.meta.skip_login){
// next(); // next();
// } // }
}); });
......
import sa from 'sa-sdk-javascript'
const Log = function () {}
// 模块发送统计
Log._getEventName = function (target, attr) {
var eventName = target.getAttribute('vkshop-event-name').replace(/(^\s*)|(\s*$)/g,'');
if (eventName) {
// 获取页面层级属性
var arr = [eventName],
list1 = [];
getParents(target, 'vkshop-event-scope', list1)
for (var i = 0, len = list1.length; i < len; i++) {
var scope = list1[i].getAttribute('vkshop-event-scope').replace(/(^\s*)|(\s*$)/g,'');
if (scope) {
arr.push(scope);
}
}
arr.reverse();
return arr.join('-');
} else {
return '';
}
};
// 事件统计发送到神策
Log.push = function (args) {
if (args[1] == '') {
sa.track(args[0])
} else {
try{
let paramObj = compileParam(args[1])
sa.track(args[0], paramObj)
}catch(e) {
}
}
};
let compileParam = function (param) {
if (param == '' || param == null || param == undefined) return param;
let arr = param.split("&");
let obj = {}
arr.forEach( function (v, i) {
let arr1 = v.split("=");
obj[arr1[0]] = arr1[1];
})
return obj;
}
/**
* 生成1个统计事件监听函数,要么是focus、要么是click,更多的事件需要的时候再支持
*
* @param {String} _eventType 需要处理哪种类型的事件
* @param {Boolean} isGaEnabled 透传的参数
* @return Function
*/
var getEventHandler = function (_eventType) {
return function (e) {
// 拿到事件发生的节点
var eventTarget = e.target,
eventType = eventTarget.getAttribute('vkshop-event-type') || 'click',
eventParam = eventTarget.getAttribute('vkshop-event-param')|| '',
eventName = eventTarget.getAttribute('vkshop-event-name').replace(/(^\s*)|(\s*$)/g,''),
eventExpand = {};
if (eventName && eventType === _eventType) { // 判断vkshop-event-name 是否为空,并且类型匹配
// 获取页面层级属性
var scopes = [eventName],
list2 = []
getParents(eventTarget, 'vkshop-event-scope', list2)
for (var i = 0, len = list2.length; i < len; i++) {
var scope = list2[i].getAttribute('vkshop-event-scope').replace(/(^\s*)|(\s*$)/g,'')
if (scope) { // 判断vkshop-event-scope 是否为空
scopes.push(scope);
}
}
scopes.reverse();
// 最前面说明来源是h5
Log.push(['_h5-' + scopes.join('-'), eventParam]);
}
};
};
/**
* 原生获取父元素
* @param {*} el
* @param {*} attr 属性,符合条件的属性
* @param {*} list 返回的父元素集合
*/
function getParents(el, attr, list) {
var parent = el.parentNode
if (parent.nodeName == 'BODY') {
if (parent.hasAttribute(attr)) {
return list.push(parent)
} else {
return list
}
} else {
if (parent.hasAttribute(attr)) {
list.push(parent)
}
getParents(parent, attr, list)
}
}
/**
* 利用事件委托对所有需要自动发送统计事件的节点进行监听,只能初始化一次
*/
var isInitialized = false;
Log.init = function () {
// if (isBrowser === false) { return; }
// if (isInitialized) { return; }
// isInitialized = true;
// window.onload = function () {
var ndBody = document.querySelector('body');
var ndNoBubble = document.querySelectorAll('[vkshop-event-no-bubble]');
// 处理可以冒泡的节点
ndBody.addEventListener('click', function (e) {
// 处理选择符
if (e.target.hasAttribute('vkshop-event-name')) {
getEventHandler('click')(e)
}
});
// 处理无法冒泡到顶层的结点点击
if (ndNoBubble && ndNoBubble.length > 0) {
ndNoBubble.addEventListener('click', getEventHandler('click'));
}
};
export default Log
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