| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891 | import requestConfig from '../lib/requestConfig.js';import CryptoJS from '@/common/static/crypto-js.min.js';const config = require('../config.js');let setIntervalKey;const keys = "ELAB_ADLWROEMSAQ";const iv = "ELAB_LIDERT_WEDH";function formatNumber(n) {    n = n.toString()    return n[1] ? n : '0' + n}var util = {    formatTime: function(date) {        var year = date.getFullYear()        var month = date.getMonth() + 1        var day = date.getDate()        var hour = date.getHours()        var minute = date.getMinutes()        var second = date.getSeconds()        return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(            ':')    },    formatCNTime: function(val) {        const year = val.getFullYear();        const month = val.getMonth() + 1;        const day = val.getDate();        const hour = val.getHours();        const minute = val.getMinutes();        const second = val.getSeconds();        return year + '年' + (month > 9 ? month : '0' + month) + '月' + day + '日' + hour + '时' + (minute > 9 ?            minute : '0' +            minute) + '分' + second + '秒';    },    formatCNTime1: function(val) {        const year = val.getFullYear();        const month = val.getMonth() + 1;        const day = val.getDate();        const hour = val.getHours();        const minute = val.getMinutes();        const second = val.getSeconds();        return year + '年' + (month > 9 ? month : '0' + month) + '月' + (day > 9 ? day : '0' + day) + '日';    },    buttonClicked(self, time) {        self.setData({            buttonClicked: false        })        setTimeout(function() {            self.setData({                buttonClicked: true            })        }, time)    },    formatTodayTime: function(val) {        if (typeof val !== 'object') {            console.log('时间格式不对,不予转换')            return val        }        const year = val.getFullYear();        const month = val.getMonth() + 1;        const day = val.getDate();        const hour = val.getHours();        const minute = val.getMinutes();        const second = val.getSeconds();        if (month == new Date().getMonth() + 1 && day + 1 == new Date().getDate()) {            return '昨天' + hour + ':' + (minute > 9 ? minute : '0' + minute);        } else if (month == new Date().getMonth() + 1 && day == new Date().getDate()) {            return hour + ':' + (minute > 9 ? minute : '0' + minute) + ':' + (second > 9 ? second : '0' +                second);        } else {            return year + '-' + (month > 9 ? month : '0' + month) + '-' + (day > 9 ? day : '0' + day) + ' ' +                hour + ':' + (                    minute > 9 ? minute : '0' + minute) + ':' + (second > 9 ? second : '0' + second);        }    },    formatMinuteTime: function(val) {        const year = val.getFullYear();        const month = val.getMonth() + 1;        const day = val.getDate();        const hour = val.getHours();        const minute = val.getMinutes();        const second = val.getSeconds();        return year + '.' + (month > 9 ? month : '0' + month) + '.' + (day > 9 ? day : '0' + day) + ' ' + hour +            ':' + (                minute > 9 ? minute : '0' + minute)    },    formatSucTime: function(val) {        const year = val.getFullYear();        const month = val.getMonth() + 1;        const day = val.getDate();        const hour = val.getHours();        const minute = val.getMinutes();        if (month == new Date().getMonth() + 1 && day + 1 == new Date().getDate()) {            return '昨天' + hour + ':' + (minute > 9 ? minute : '0' + minute);        } else if (month == new Date().getMonth() + 1 && day == new Date().getDate()) {            return hour + ':' + (minute > 9 ? minute : '0' + minute);        } else {            return year + '-' + (month > 9 ? month : '0' + month) + '-' + day + ' ' + hour + ':' + (minute > 9 ?                minute : '0' +                minute);        }    },    async sendScoreShare() {        const app = getApp();        const res = await requestConfig('intergralShare', {            customerId: app.globalData.single.id,            brandId: config.brandId,            houseId: config.houseId || '',        });    },    trackRequest(para, app = getApp()) {        if ((para.type && para.type.includes('Error'))) {            //所有报错埋点以及曝光埋点不再发送至服务器            return        }        if (JSON.stringify(para.clkParams) === '"{}"' || JSON.stringify(para.clkParams) === "{}") {            para.clkParams = '';        }        if (JSON.stringify(para.expand) === '"{}"' || JSON.stringify(para.expand) === "{}") {            para.expand = '';        }        let _scene = (app.globalData.launchInfo && app.globalData.launchInfo.scene) ? app.globalData.launchInfo.scene :            '';        console.log("app.globalData.launchInfo:" + JSON.stringify(app.globalData.launchInfo));        let _fromParam = app.globalData.exchangedFromChannel ? JSON.parse(app.globalData.exchangedFromChannel) : {};		//上一个页面		let lastPage = getCurrentPages()[getCurrentPages().length-2] ? getCurrentPages()[getCurrentPages().length-2].$vm : null;        let _pvLastPageName = lastPage ? lastPage.pvCurPageName : '';//上一页面名称        let _pvLastPageParams =  (lastPage && lastPage.pvCurPageParams) ? lastPage.pvCurPageParams : '';//上一页面参数		let _pvLastPagePath = lastPage ? (lastPage.route || lastPage.__route__) : '';//上一页面路径        let currPage = getCurrentPages()[getCurrentPages().length-1] ? getCurrentPages()[getCurrentPages().length-1].$vm : null;		let _route = currPage ? (currPage.route || currPage.__route__) : "";		let _pvCurPageName = currPage ? currPage.pvCurPageName : '';//当前页面名称        let pvCurPageParams = "";//字符串string对象        if(para.pvCurPageParams){//调用的时候传递进来的-先转为对象            pvCurPageParams = typeof para.pvCurPageParams === 'object' ? para.pvCurPageParams : JSON.parse(para.pvCurPageParams)        }else{            let _tmp = (currPage && currPage.pvCurPageParams) ? currPage.pvCurPageParams : '{}';//获取当前页面的参数            pvCurPageParams = typeof _tmp === 'string' ? JSON.parse(_tmp) : JSON.parse(JSON.stringify(_tmp))        }        //在页面参数里面手动添加path参数        pvCurPageParams.brandId = config.brandId || "";        pvCurPageParams.path = _route;        pvCurPageParams.pageId = currPage.pageId || "";        pvCurPageParams.mobile = app.globalData.phone || "";        pvCurPageParams.entryPageId = (lastPage && lastPage.pageId) ? lastPage.pageId : "";        pvCurPageParams.entryPagePath = _pvLastPagePath;                pvCurPageParams = JSON.stringify(pvCurPageParams);        if(para.clkId==='clk_2cmina_18'){            this.sendScoreShare()        }        if (JSON.stringify(pvCurPageParams) === '"{}"' || JSON.stringify(pvCurPageParams) === "{}") {            pvCurPageParams = '';        }        _fromParam["scene"] = _scene;        _fromParam["appName"] = app.globalData.systemInfo ? app.globalData.systemInfo.appName : (app.$vm.$options.globalData.systemInfo.appName ||            "");		_fromParam['eventtime'] = Date.now();        let houseID = "";        if (currPage && currPage.houseId) {            houseID = currPage.houseId;        }        if (currPage && (currPage.route == 'pages/shareCard/shareCard' || currPage.__route__ ==                'pages/shareCard/shareCard')) {            let enterPage = getCurrentPages()[getCurrentPages().length - 2] ? getCurrentPages()[getCurrentPages().length -                    2].$vm :                null;            if (enterPage && enterPage.houseId) {                houseID = enterPage.houseId;            }        }        console.log("houseID:" + houseID);        let data = {            userAgent: '',            browserName: '',            browserVersion: app.globalData.systemInfo ? app.globalData.systemInfo.SDKVersion : app.$vm.$options.globalData.systemInfo.SDKVersion,            platform: 'miniapp', //是否来自小程序的标志            fromPlatform: '', //来源平台,需要汤勇提供接口解析fromChannel存放            reserve1: app.globalData.terminal, //来源平台,抖音百度微信            reserve2: app.globalData.selectCityName || app.globalData.defaultProductCityName, //当前所在城市            fromParam: JSON.stringify(_fromParam), //转发者秘钥            deviceType: app.globalData.systemInfo ? app.globalData.systemInfo.model : (app.$vm.$options.globalData.systemInfo.SDKVersion || ""), //设备系统信息            ip: app.globalData.ip || '', //ip地址            cookieId: '',            openId: app.globalData.openid || '', //openid            customerId: (app.globalData.single && app.globalData.single.id) ? app.globalData.single.id : '', //用户id            brandUserId: (app.globalData.single && app.globalData.single.id) ? app.globalData.single.id : '', //用户id            createTime: this.formatTime(new Date()), //发送埋点时间            uploadTime: this.formatTime(new Date()), //发送埋点时间            product: app.globalData.projectName, //当前所在项目中文名称            project: houseID, //当前项目id            eventId: para.eventId || '', //埋点ID            eventName: para.eventName || '', //埋点ID            expand: typeof para.expand === 'object' ? JSON.stringify(para.expand) : para.expand, //扩展字段            imTalkId: para.imTalkId || '', //IM对话编号            imTalkType: para.imTalkType || '', //IM对话类型            eventModuleDes: para.eventModuleDes || '', //模块描述信息            eventInnerModuleId: para.eventInnerModuleId || '', //事件内部模块信息            adviserId: para.adviserId || '', //顾问id            clkDesPage: para.clkDesPage || _pvCurPageName || '', //点击前往的页面名称            clkId: para.clkId || '', //点击ID            clkName: para.clkName || '',            pvId: para.pvId || '', //PV埋点ID            clkParams: typeof para.clkParams === 'object' ? JSON.stringify(para.clkParams) : para.clkParams, //点击参数            pvPageStayTime: para.pvPageStayTime || '',            pvCurPageName: para.pvCurPageName || _pvCurPageName || '', //当前页面名称            pvCurPageParams: pvCurPageParams, //当前页面参数            pvLastPageName: para.pvLastPageName || _pvLastPageName || '', //上一页页面名称            pvLastPageParams: para.pvLastPageParams || _pvLastPageParams || '', //上一页页面参数            pvPageLoadTime: para.pvPageLoadTime || '', //加载时间            type: para.type || '', //埋点类型            longitude: app.globalData.longitude || '', //经度            latitude: app.globalData.latitude || '', //纬度            brandId: config.brandId //集团id        };        let timeNow = new Date().getTime();        let session = uni.getStorageSync('sessionNumber') || timeNow;        let sessionTime = uni.getStorageSync('sessionTime') || timeNow;        if (timeNow - sessionTime > 180000) {            session = timeNow;            // wx.setStorageSync('sessionNumber', session)            uni.setStorage({                key: "sessionNumber",                data: session            })        } else {            // wx.setStorageSync('sessionNumber', session)            uni.setStorage({                key: "sessionNumber",                data: session            })        }        // wx.setStorageSync('sessionTime', timeNow)        uni.setStorage({            key: "sessionTime",            data: timeNow        })        data.session = data.brandUserId + '_' + session;        app.globalData.session_id = data.session        app.globalData.sessionTime = timeNow;        // requestConfig('upload', data, true);		let param = ["SEND" +			"\nproject:" + "elab-marketing-system" + 			"\nmethod:" + 'POST' +			"\npath:" + '/behavior/brandMiniWeb/upload' +			"\ndestination:" + '/ws/remote/invoke' +			"\n\n" + JSON.stringify(data) +			"\u0000"		];		app.wsSendOrder(param);//socket 消息发送    },    async shareToken(app) {        const res = await requestConfig('sign', {            customerId: app.globalData.single.id,            houseId: config.houseId,            userRole: 0        });        if (res && res.success && res.single) {            app.globalData.shareToken = res.single || "";        }    },    //此时此刻日期转化    timesData: function(timestamp) {        var date = new Date(timestamp);        var Y = date.getFullYear() + '/';        var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '/';        var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';        // var h = (date.getHours() < 10 ? '0'+(date.getHours()) : date.getHours()) + ':';        // var m = (date.getMinutes() < 10 ? '0'+(date.getMinutes()) : date.getMinutes());        return Y + M + D;    },    //此时此刻日期转化格式    dateFormat: function (timestamp) {        var date = new Date(timestamp);        var Y = date.getFullYear() + '年';        var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '月';        var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + '日 ';        var h = (date.getHours() < 10 ? '0'+(date.getHours()) : date.getHours()) + ':';        var m = (date.getMinutes() < 10 ? '0'+(date.getMinutes()) : date.getMinutes()) + ':';        var s = (date.getSeconds() < 10 ? '0'+(date.getSeconds()) : date.getSeconds());        return Y + M + D + h + m + s;    },	//此时此刻日期转化格式	dateFormats: function (timestamp) {	    var date = new Date(timestamp);	    var Y = date.getFullYear() + '年';	    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '月';	    var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + '日 ';	    return Y + M + D;	},    //此时此刻时间转化    timestampToTime: function(timestamp) {        var date = new Date(timestamp);        var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';        var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes());        return h + m;    },    formatDate:function (date, fmt) {      if (/(y+)/.test(fmt)) {        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))      }      let o = {        'M+': date.getMonth() + 1,        'd+': date.getDate(),        'h+': date.getHours(),        'm+': date.getMinutes(),        's+': date.getSeconds()      }      for (let k in o) {        if (new RegExp(`(${k})`).test(fmt)) {          let str = o[k] + ''          fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : this.padLeftZero(str))        }      }      return fmt    },    padLeftZero :function (str) {      return ('00' + str).substr(str.length)    },    /**     * 先从微信小程序获取当前位置的经纬度;     * 再从腾讯地图依据经纬度获取当前的地理位置信息.     *  successBack:成功回调,包含地理位置信息     *  failBack:失败回调,包含失败的信息     */    getLocalPositionInformationFromTencent(successBack, failBack, isFirstIn, force) {        const app = getApp(); //获取应用实例        uni.getLocation({            type: 'wgs84',            success(res) {                const latitude = res.latitude; //纬度,范围为 -90~90,负数表示南纬                const longitude = res.longitude; //经度,范围为 -180~180,负数表示西经                app.globalData.longitude = longitude;                app.globalData.latitude = latitude;                let getAddressUrl = "https://apis.map.qq.com/ws/geocoder/v1/?location=" + latitude + "," +                    longitude +                    "&key=AKWBZ-SVPC5-Z4WIT-Q2UOM-55O7O-76FV5&get_poi=1";                wx.request({                    url: getAddressUrl,                    headers: {                        'Content-Type': 'application/json'                    },                    success: async function(result) {                        let resultData = result.data.result;                        if (successBack) {                            successBack(resultData);                        }                    },                    fail: function(result) {                        if (failBack) {                            failBack(result);                        }                    }                });            },            fail(res) {                if (isFirstIn) {                    let para = {                        clkDesPage: '', //点击前往的页面名称                        type: 'CLK', //埋点类型                        clkId: 'clk_2cmina_137', //点击ID,固定                        clkName: "wechatauthorize-location", //点击名称                        clkParams: {                            "wx.authorize.scope": "wx.getLocation",                            "type": 'fail',                        },                    };                    util.trackRequest(para);                    console.log(res, 'ssssssssssssss')                    wx.showToast({                        title: '授权失败',                        duration: 3000,                        icon: 'none'                    });                } else if (force) {                    wx.showToast({                        title: '授权失败',                        duration: 1500,                        icon: 'none'                    });                }                if (failBack) {                    failBack(res);                }            }        });    },    /**     * 获取微信地理位置信息     * @param force 是否强授权     *      force=true: 只要调用就弹起授权弹窗     *      force=false: 若拒绝过授权,则不再弹起授权弹窗     */    getPosition(successBack, failBack, force = false) {        wx.getSetting({            success: (results) => {                if (results.authSetting['scope.userLocation'] == undefined) { //该用户还没有弹起地理位置授权,可视为第一次进入小程序                    var para = {                        type: 'EXP', //埋点类型                        eventId: 'exp_2cmina_22', //点击ID,固定                        eventName: "diliweizhishouquan", //点击名称                        event_param: {                            "wx.authorize.scope": "wx.getLocation",                        },                    }                    // util.trackRequest(para);                    if (successBack) {                        successBack({                            firstIn: true                        });                    }                } else {                    if (!results.authSetting['scope.userLocation']) {                        if (force) {                            wx.showModal({                                title: '请求授权当前位置',                                content: '是否开启地理位置授权,定位当前所在城市',                                cancelText: "下次再说",                                confirmText: "去开启",                                success: function(res) {                                    if (res.cancel) {                                        wx.showToast({                                            title: '授权失败',                                            icon: 'none',                                            duration: 1000                                        });                                        if (failBack) {                                            failBack();                                        }                                    } else if (res.confirm) {                                        wx.openSetting({                                            success: function(dataAu) {                                                if (dataAu.authSetting[                                                        "scope.userLocation"] ==                                                    true) {                                                    //再次授权,调用wx.getLocation的API                                                    if (successBack) {                                                        successBack({                                                            firstIn: false                                                        });                                                    }                                                } else {                                                    if (failBack) {                                                        failBack();                                                    }                                                }                                            },                                            fail: function() {                                                wx.showToast({                                                    title: '授权失败',                                                    icon: 'none',                                                    duration: 1000                                                });                                            }                                        })                                    }                                }                            })                        } else {                            console.log('上次登录的时候拒绝了授权')                            if (failBack) {                                failBack();                            }                        }                    } else {                        console.log('上次登录的时候允许了授权')                        if (successBack) {                            successBack({                                firstIn: false                            });                        }                    }                }            }        })    },    /**     * 检查目标城市是否有效;     * 将目标城市和上次选择的城市进行比较;     *  currentCityName:当前定位的城市名称     *  currentCityCode:当前定位的城市code     */    async compareCurrentCityWithHistoryCity(currentCityName, currentCityCode, successBack, failBack, firstInAPP) {        const that = this;        const app = getApp();        let param = {            cityName: currentCityName,            brandId: config.brandId,            customerId: app.globalData.single.id || '',            simplify: true        };        const res = await requestConfig('queryCityData', param);        if (res.success && res.single) {            if (res.single.inCityData) {                if (!res.single.currentCity) {                    that.addCustomerCity(1, currentCityName, currentCityCode, successBack, failBack);                } else if (res.single.currentCity.cityName == currentCityName) { //定位的城市和上次选择的城市一样                    app.globalData.selectCityCode = res.single.currentCity.cityCode;                    app.globalData.selectCityName = res.single.currentCity.cityName;                    if (successBack) {                        successBack();                    }                } else {                    let currPage = getCurrentPages()[getCurrentPages().length - 1] ? getCurrentPages()[                            getCurrentPages().length - 1]                        .$vm : null;                    let currentRoute = currPage['route'];                    if (!app.globalData.cityChangeTips && currentRoute !=                        '/subPackage/pages/addressModule/addressModule') {                        app.globalData.cityChangeTips = true;                        /*wx.showModal({                            title: '是否切换城市',                            content: '您当前定位城市与产品系列城市不一致,是否切换至定位城市',                            cancelText:"取消",                            confirmText:"切换",                            success: function (modelRes) {                                if (modelRes.cancel) {//点击取消                                    if(failBack){                                        failBack();                                    }                                } else if (modelRes.confirm) {//点击切换                                    that.addCustomerCity(1,currentCityName,currentCityCode,successBack,failBack);                                }                            },                        })*/                        if (successBack) {                            successBack(true);                        }                    } else {                        if (failBack) {                            failBack();                        }                    }                }            } else {                /* let re =  await requestConfig('addCustomerCity',{                     city:currentCityName,                     brandId:config.brandId,                     customerId:app.globalData.single.id,                     cityCode:currentCityCode,                     citySource:1                 });*/                /* app.globalData.selectCityCode = currentCityCode;                 app.globalData.selectCityName = currentCityName;*/                if (firstInAPP) {                    wx.showToast({                        title: '定位城市暂未开放,先看看其他城市吧',                        duration: 2500,                        icon: 'none'                    });                }                if (failBack) {                    failBack();                }            }        } else {            wx.showToast({                title: '网络连接出现问题',                duration: 1500,                icon: 'none'            });            if (failBack) {                failBack();            }        }    },    /**     *    添加客户城市位置     *        type:     *            1:用户授权城市;     *            2:选择定位城市.     *        currentCityName:当前城市名     *        currentCityCode:当前城市code     */    async addCustomerCity(type, currentCityName, currentCityCode, successBack, failBack) {        const app = getApp(); //获取应用实例        let re = await requestConfig('addCustomerCity', {            city: currentCityName,            brandId: config.brandId,            customerId: app.globalData.single.id,            cityCode: currentCityCode,            citySource: type        });        if (re.success) {            if (type == 1) {                /*wx.showToast({                    title:`已为您切换至${currentCityName}!`,                    icon:'none',                    duration:1500                });*/            }            app.globalData.selectCityCode = currentCityCode;            app.globalData.selectCityName = currentCityName;            if (successBack) {                successBack();            }        } else {            if (failBack) {                failBack();            }        }    },    /**     * 精确处理小数点 为了解决Elab房贷计算器跨平台浮点运算差值,写了此套算法     * @param value 要处理的布尔数值     * @param length 精确的小数点的位数     * @param accurate 是否四舍五入     * @returns {string}     */    handlePoint(value, length, accurate = false) {        if (value.toString().split('.')[1] && (value.toString().split('.')[1]).length > length) {            let startValue = value.toString().split('.')[0];            let endValue = value.toString().split('.')[1];            if (accurate) {                let markValue = parseInt(endValue.toString().slice(length, length + 1));                if (markValue >= 5) {                    endValue = endValue.toString().slice(0, length);                    endValue = parseInt(endValue) + 1;                    if (endValue.toString().length > length) {                        startValue = parseInt(startValue) + 1;                        endValue = endValue.toString().slice(1, length + 1);                    } else if (endValue.toString().length < length) {                        let markLength = length - endValue.toString().length;                        let str = '';                        for (let i = 0, len = markLength; i < len; i++) {                            str += '0';                        }                        endValue = str + endValue;                    }                } else {                    endValue = endValue.toString().slice(0, length);                }            } else {                endValue = endValue.toString().slice(0, length);            }            /*if (parseInt(endValue) == 0) {                value = startValue;            } else {                value = startValue + '.' + endValue;            }*/            value = startValue + '.' + endValue;        }        return value;    },    getPageTheme(val){        if (val ==-1){            //浅色模式,白底黑字            return {                textColor1:'rgba(18,18,18,1)',  //主文字颜色                textColor2:'rgba(18,18,18,0.5)', //副文字颜色                textColor3:'rgba(18,18,18,0.2)', //副文字颜色                bgColor:'rgba(255,255,255,1)', //主背景颜色                bgColor2:'rgba(255,255,255,1)', //副背景颜色                bgColor3:'rgba(255,255,255,1)', //副背景颜色            }        }else if (val ==1){            //深色模式,黑底白字            return {                textColor1:'rgba(255,255,255,1)',                textColor2:'rgba(255,255,255,0.5)',                textColor3:'rgba(255,255,255,0.2)',                bgColor:'rgba(18,18,18,1)',                bgColor2:'rgba(255,255,255,0.1)',                bgColor3:'rgba(255,255,255,0.3)',            }        }else{            //浅色模式,白底黑字,默认浅色模式            return {                textColor1:'rgba(18,18,18,1)',  //主文字颜色                textColor2:'rgba(18,18,18,0.5)', //副文字颜色                textColor3:'rgba(18,18,18,0.2)', //副文字颜色                bgColor:'rgba(255,255,255,1)', //主背景颜色                bgColor2:'rgba(255,255,255,1)', //副背景颜色                bgColor3:'rgba(255,255,255,1)', //副背景颜色            }        }    },    /**     * 加密参数     * @param content     * @returns {string}     * @constructor     */    AES_encrypt(content) {        content = JSON.stringify(content);        let param = CryptoJS.enc.Utf8.parse(content);        let _key = CryptoJS.enc.Utf8.parse(keys);        let _iv = CryptoJS.enc.Utf8.parse(iv);        let encrypted = CryptoJS.AES.encrypt(param, _key, {            mode: CryptoJS.mode.CBC,            padding: CryptoJS.pad.Pkcs7,            iv: _iv,        });        return encrypted.ciphertext.toString();    },    /**     * 解密参数     * @param content     * @returns {string}     * @constructor     */    AES_decrypt(content) {        let receive = CryptoJS.enc.Hex.parse(content);        receive = CryptoJS.enc.Base64.stringify(receive);        let _key = CryptoJS.enc.Utf8.parse(keys);        let _iv = CryptoJS.enc.Utf8.parse(iv);        var decrypt = CryptoJS.AES.decrypt(receive, _key, {            mode: CryptoJS.mode.CBC,            padding: CryptoJS.pad.Pkcs7,            iv:_iv        });        console.log("555555555555555",decrypt);        return decrypt.toString(CryptoJS.enc.Utf8);    },    hexToRgba(hex, opacity) {        if (!hex||!opacity){            return hex        }        let RGBA;        if (hex.includes('#')&&hex.length==7){            RGBA = "rgba(" + parseInt("0x" + hex.slice(1, 3)) + "," + parseInt("0x" + hex.slice(3, 5)) + "," +                parseInt("0x" + hex.slice(5, 7)) + "," + opacity + ")";        }else if (hex.includes('rgb(')){			var values = hex			  .replace(/rgb?\(/, '')			  .replace(/\)/, '')			  .replace(/[\s+]/g, '')			  .split(',')			  return `rgba(${values[0]},${values[1]},${values[2]},${opacity})`        }else if(hex.includes('rgba(')){			var values = hex			  .replace(/rgba?\(/, '')			  .replace(/\)/, '')			  .replace(/[\s+]/g, '')			  .split(',')			  return `rgba(${values[0]},${values[1]},${values[2]},${opacity})`		}else{            return hex        }        return RGBA    },		getHexColor(color) {	  var values = color	    .replace(/rgba?\(/, '')	    .replace(/\)/, '')	    .replace(/[\s+]/g, '')	    .split(',')	  var a = parseFloat(values[3] || 1),	    r = Math.floor(a * parseInt(values[0]) + (1 - a) * 255),	    g = Math.floor(a * parseInt(values[1]) + (1 - a) * 255),	    b = Math.floor(a * parseInt(values[2]) + (1 - a) * 255)	  return '#' +	    ('0' + r.toString(16)).slice(-2) +	    ('0' + g.toString(16)).slice(-2) +	    ('0' + b.toString(16)).slice(-2)	},    /**     * 查询当前的城市     * @returns {Promise<void>}     */    async querySelectCity() {        var app = getApp(); //获取应用实例;        if (app.globalData.selectCityName) {            this.currentSelectCity = app.globalData.selectCityName;            this.navbar.currentSelectCity = app.globalData.selectCityName;            if(this.hasOwnProperty('cityName')){                this.cityName = app.globalData.selectCityName;            }        }        else{            let cityRequestData = {                brandId: config.brandId,                customerId: (app.globalData.single && app.globalData.single.id) ? app.globalData.single.id : '',                simplify: false,            };            const res = await requestConfig('queryCityData', cityRequestData, true);            if (res.success && res.single && res.single.currentCity) {                let mrak = false;                for (let item of res.single.belongCityList) {                    if (item.cityName == res.single.currentCity.cityName || res.single.currentCity.cityCode ==                        item.cityCode) {                        mrak = true;                        break;                    }                }                console.log("mrakindex:" + mrak + app.globalData.defaultProductCityName);                if (!mrak) { //当前所处城市不是集团所属城市时,取默认城市(初始化时获取默认城市的值)                    this.currentSelectCity = app.globalData.defaultProductCityName;                    this.navbar.currentSelectCity = app.globalData.defaultProductCityName;                    app.globalData.selectCityName = app.globalData.defaultProductCityName;                }                else{                    this.currentSelectCity = res.single.currentCity.cityName;                    this.navbar.currentSelectCity = res.single.currentCity.cityName;                    app.globalData.selectCityCode = res.single.currentCity.cityCode;                    app.globalData.selectCityName = res.single.currentCity.cityName;                }            } else { //不存在当前所属城市时,则取默认城市                // #ifdef H5                //如果不存在默认城市数据,有可能是接口还没返回,所以需要再次请求下数据                if(!app.globalData.defaultProductCityName){                    await app.queryCityInfo()                }                // #endif                this.currentSelectCity = app.globalData.defaultProductCityName;                this.navbar.currentSelectCity = app.globalData.defaultProductCityName;                app.globalData.selectCityName = app.globalData.defaultProductCityName;            }        }        if(this.hasOwnProperty('cityName')){            this.cityName = app.globalData.selectCityName;        }        if(this.hasOwnProperty('selectCityCode')){            this.selectCityCode = app.globalData.selectCityCode;        }    },    // 置地老业主认证    async newAuthentication4Zd(pageId,fn,city='重庆') {        var app = getApp(); //获取应用实例;        if(pageId && pageId == '4213'){//需要修改为商城页面的实际页面id才能上线 4213            app.checkAuthTotal(2, async(checkRes) => {                this.showPhoneModel = checkRes.showPhoneModel;                if (!checkRes.showPhoneModel) {                    var {single: { id = ''} = {}} = app.globalData;                    let data = {                        brandId: config.brandId,                        id: id,//用户id                        mobile: app.globalData.phone || "",                        city: city,                    };                    const res = await requestConfig('newAuthentication4Zd', data, true);                    if (res && res.success && res.list && res.list.length>0) {//是对应城市下的老业主                        console.log('***是对应城市下的老业主***', res.list);                        fn && typeof fn == 'function' && fn();                    }                    else{                        uni.showToast({                            title: '不是'+city+'区域老业主,不能参加活动',                            icon: 'none',                            duration: 1500,                        });                        return false;                    }                }            }, true);        }        else{            fn && typeof fn == 'function' && fn();        }    },	// websocket 返回的数据转义成object类型	parseWSData(data) {		if (data.startsWith("a[")) {			let endLength = data.length - 6;			let textData = data.substr(3, endLength);			let request = textData.split("\\n\\n");			let headerBody = request[0];			let body = request[1];			let headerArray = headerBody.split("\\n");			let header = {};			for (let i = 1; i < headerArray.length; i++) {				let body = headerArray[i];				let resultBody = body.split(":");				header[resultBody[0]] = resultBody[1];			}			let result = {};			result["command"] = headerArray[0];			result["header"] = header;			if (body) {				try {					result["body"] = JSON.parse(body.replaceAll("\\", ""));				} catch (e) {					result["body"] = body;				}			}			return result;		}		return data;	} };module.exports = util;
 |