import Vue from 'vue'
|
import App from './App'
|
import store from './store'
|
import Cache from './utils/cache'
|
import util from 'utils/util'
|
import gdp from 'utils/gio-uniapp.js';
|
import configs from './config/app.js'
|
import * as Order from './libs/order';
|
|
Vue.prototype.$util = util;
|
Vue.prototype.$config = configs;
|
Vue.prototype.$Cache = Cache;
|
Vue.prototype.$eventHub = new Vue();
|
Vue.config.productionTip = false
|
Vue.prototype.$Order = Order;
|
|
// #ifdef H5
|
import {
|
parseQuery
|
} from "./utils";
|
import Auth from './libs/wechat';
|
import {
|
SPREAD
|
} from './config/cache';
|
Vue.prototype.$wechat = Auth;
|
let cookieName = "VCONSOLE",
|
query = parseQuery(),
|
urlSpread = query["spread"],
|
vconsole = query[cookieName.toLowerCase()],
|
md5Crmeb = "b14d1e9baeced9bb7525ab19ee35f2d2", //CRMEB MD5 加密开启vconsole模式
|
md5UnCrmeb = "3dca2162c4e101b7656793a1af20295c"; //UN_CREMB MD5 加密关闭vconsole模式
|
|
if (urlSpread !== undefined) {
|
var spread = Cache.get(SPREAD);
|
urlSpread = parseInt(urlSpread);
|
if (!Number.isNaN(urlSpread) && spread !== urlSpread) {
|
Cache.set("spread", urlSpread || 0);
|
} else if (spread === 0 || typeof spread !== "number") {
|
Cache.set("spread", urlSpread || 0);
|
}
|
}
|
|
if (vconsole !== undefined) {
|
if (vconsole === md5UnCrmeb && Cache.has(cookieName))
|
Cache.clear(cookieName);
|
} else vconsole = Cache.get(cookieName);
|
|
import VConsole from './components/vconsole.min.js'
|
|
if (vconsole !== undefined && vconsole === md5Crmeb) {
|
Cache.set(cookieName, md5Crmeb, 3600);
|
let vConsole = new VConsole();
|
}
|
|
// Auth.isWeixin() && Auth.oAuth();
|
|
// #endif
|
App.mpType = 'app'
|
|
gdp('init', configs.GDP_ACCOUNT_ID, configs.GDP_DATASOURCE_ID, configs.APPID, {
|
serverUrl: configs.GDP_SERVER_URL,
|
uniVue: Vue,
|
debug: configs.GDP_DEBUG,
|
idMapping: true,
|
forceLogin: true,
|
});
|
Vue.prototype.$gdp = gdp;
|
//Vue.use(gdp);
|
|
import {
|
addTrack,
|
addLog,
|
urlRecord
|
} from '@/api/api';
|
Vue.prototype.addTrack = function(eventName, data) {
|
let app = getApp();
|
let belong = this.$store.getters.belong;
|
let userInfo = this.$store.getters.userInfo;
|
let logData = {};
|
let pages = getCurrentPages(),
|
currPage = pages[pages.length - 1];
|
|
data['union_id'] = this.$store.getters.unionId;
|
data['mobile_phone_var'] = (belong && belong.mobile) ? belong.mobile : (userInfo.phone ? userInfo.phone : '-');
|
|
data['channelcode_var'] = (belong && belong['channel']) ? belong['channel'] : '-';
|
data['customer_id'] = (belong && belong['customerId']) ? belong['customerId'] : '-';
|
data['operator'] = (belong && belong['unionCode']) ? belong['unionCode'] : '-';
|
|
data['entranceName_var'] = app.globalData.entranceNameVar ? app.globalData.entranceNameVar : (app.globalData
|
.source ? app.globalData.source : 'MALL');
|
if (app.globalData.entranceNameVar && app.globalData.buttonName) {
|
data['activitySource_var'] = app.globalData.entranceNameVar + '_' + app.globalData.buttonName;
|
}
|
data['eventSource_var'] = 'MALL';
|
data['name_var'] = (belong && belong['name']) ? belong['name'] : '-';
|
data['nickname_var'] = (userInfo && userInfo['nickname']) ? userInfo['nickname'] : '-';
|
|
let recordParam={
|
url:currPage.$page.fullPath,
|
entranceNameVar:data['entranceName_var'],
|
unionId:data['union_id'],
|
}
|
for (var i in data) {
|
if (!data[i] || data[i] == 'null' || data[i] == 'undefined') {
|
data[i] = '-';
|
}
|
}
|
if (belong) {
|
let param = {
|
"source": "M",
|
"eventKey": eventName,
|
"agentNo": belong.agentNo,
|
"branchCode": belong.branchCode,
|
"channel": belong.channel,
|
"companyCode": belong.companyCode,
|
"subCode": belong.subCode,
|
"union_id": belong.unionId,
|
"addEventVariables": data,
|
"mobile_phone_var": data['mobile_phone_var'] ? data['mobile_phone_var'] : (belong.mobile ? belong
|
.mobile : '-'),
|
"name_var": belong.name,
|
"nickname_var": (userInfo && userInfo['nickname']) ? userInfo['nickname'] : '-'
|
};
|
recordParam=Object.assign(recordParam,{
|
"source": "M",
|
"subCode": belong.subCode,
|
"companyCode": belong.companyCode,
|
"channel": belong.channel,
|
"branchCode": belong.branchCode,
|
"agentNo": belong.agentNo,
|
"eventKey":eventName
|
})
|
let isFrontAdd = false;
|
for (var i in param) {
|
if (!param[i] || param[i] == '-' || param[i] == 'null' || param[i] == 'undefined') {
|
if (i == 'subCode') {
|
param[i] = '';
|
} else if (i == 'name_var') {
|
param[i] = '-';
|
} else if (i == 'nickname_var') {
|
if (!param[i]) {
|
param[i] = '-';
|
}
|
} else {
|
console.log(i + '为空,不满足后端上报条件')
|
isFrontAdd = true;
|
}
|
|
}
|
}
|
if (belong['customerId'] && belong['customerId'] !== '-' && belong['multi']) {
|
console.log('属于多渠道,需要前端上报')
|
isFrontAdd = true;
|
}
|
|
console.log('后端上报所需参数', param);
|
|
if (isFrontAdd) {
|
gdp('track', eventName, data);
|
} else {
|
addTrack(param);
|
}
|
console.log('是否是前端上报 ' + isFrontAdd);
|
for (var i in param) {
|
if (i !== 'addEventVariables') {
|
logData[i] = param[i];
|
}
|
}
|
} else {
|
console.log('还没有归属,需要前端上报');
|
console.log('是否是前端上报 true');
|
gdp('track', eventName, data);
|
}
|
for (var i in data) {
|
logData[i] = data[i];
|
}
|
if (logData['eventKey']) {
|
addLog(logData)
|
}
|
if(['yy_pageView','yy_productDetailPageView'].includes(eventName)){
|
urlRecord(recordParam)
|
}
|
}
|
Vue.prototype.isTabLink = function(link) {
|
let tabLinkArr = [
|
'pages/index/index',
|
'pages/goods_cate/goods_cate',
|
'pages/user/index'
|
];
|
let isTab = false;
|
if (link) {
|
tabLinkArr.forEach((item) => {
|
if (link.indexOf(item) >= 0) {
|
isTab = true;
|
}
|
})
|
}
|
return isTab;
|
}
|
import tabBar from '@/components/tabBar/tabBar.vue';
|
Vue.component('tabBar', tabBar);
|
|
import showTips from "@/components/showTips/showTips.vue";
|
Vue.component('showTips', showTips);
|
|
import showConfirm from "@/components/showConfirm/showConfirm.vue";
|
Vue.component('showConfirm', showConfirm);
|
|
import protocol from '@/components/login/protocol.vue';
|
Vue.component('protocol', protocol);
|
|
|
import loginPhone from "@/components/login/phone.vue";
|
Vue.component('loginPhone', loginPhone);
|
|
import loginInfo from "@/components/login/info.vue";
|
Vue.component('loginInfo', loginInfo);
|
|
import loginFl from "@/components/login/fuli.vue";
|
Vue.component('loginFl', loginFl);
|
|
import miniCollect from './libs/miniCollect';
|
Vue.mixin(miniCollect);
|
import BigNumber from 'bignumber.js';
|
Vue.prototype.toNumber = function(number) {
|
if (isNaN(number)) {
|
return number;
|
} else {
|
return BigNumber(number).toNumber();
|
}
|
}
|
|
Vue.prototype.toThousands = function(num) {
|
if (num < 1000) return num;
|
if (Number.isInteger(num)) {
|
return String(num).replace(/(?!^)(?=(\d{3})+$)/g, ',')
|
} else {
|
return String(num).replace(/(?!^)(?=(\d{3})+\.)/g, ',')
|
}
|
}
|
|
import {
|
Debounce
|
} from '@/utils/validate.js'
|
Vue.prototype.$Debounce = Debounce;
|
const app = new Vue({
|
...App,
|
store,
|
Cache
|
})
|
app.$mount();
|