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();