/** * Make sure the charset of the page using this script is * set to utf-8 or you will not get the correct results. */ var utf8 = (function () { var highSurrogateMin = 0xd800, highSurrogateMax = 0xdbff, lowSurrogateMin = 0xdc00, lowSurrogateMax = 0xdfff, surrogateBase = 0x10000; function isHighSurrogate(charCode) { return highSurrogateMin <= charCode && charCode <= highSurrogateMax; } function isLowSurrogate(charCode) { return lowSurrogateMin <= charCode && charCode <= lowSurrogateMax; } function combineSurrogate(high, low) { return ((high - highSurrogateMin) << 10) + (low - lowSurrogateMin) + surrogateBase; } /** * Convert charCode to JavaScript String * handling UTF16 surrogate pair */ function chr(charCode) { var high, low; if (charCode < surrogateBase) { return String.fromCharCode(charCode); } // convert to UTF16 surrogate pair high = ((charCode - surrogateBase) >> 10) + highSurrogateMin, low = (charCode & 0x3ff) + lowSurrogateMin; return String.fromCharCode(high, low); } /** * Convert JavaScript String to an Array of * UTF8 bytes * @export */ function stringToBytes(str) { var bytes = [], strLength = str.length, strIndex = 0, charCode, charCode2; while (strIndex < strLength) { charCode = str.charCodeAt(strIndex++); // handle surrogate pair if (isHighSurrogate(charCode)) { if (strIndex === strLength) { throw new Error('Invalid format'); } charCode2 = str.charCodeAt(strIndex++); if (!isLowSurrogate(charCode2)) { throw new Error('Invalid format'); } charCode = combineSurrogate(charCode, charCode2); } // convert charCode to UTF8 bytes if (charCode < 0x80) { // one byte bytes.push(charCode); } else if (charCode < 0x800) { // two bytes bytes.push(0xc0 | (charCode >> 6)); bytes.push(0x80 | (charCode & 0x3f)); } else if (charCode < 0x10000) { // three bytes bytes.push(0xe0 | (charCode >> 12)); bytes.push(0x80 | ((charCode >> 6) & 0x3f)); bytes.push(0x80 | (charCode & 0x3f)); } else { // four bytes bytes.push(0xf0 | (charCode >> 18)); bytes.push(0x80 | ((charCode >> 12) & 0x3f)); bytes.push(0x80 | ((charCode >> 6) & 0x3f)); bytes.push(0x80 | (charCode & 0x3f)); } } return bytes; } /** * Convert an Array of UTF8 bytes to * a JavaScript String * @export */ function bytesToString(bytes) { var str = '', length = bytes.length, index = 0, byte, charCode; while (index < length) { // first byte byte = bytes[index++]; if (byte < 0x80) { // one byte charCode = byte; } else if ((byte >> 5) === 0x06) { // two bytes charCode = ((byte & 0x1f) << 6) | (bytes[index++] & 0x3f); } else if ((byte >> 4) === 0x0e) { // three bytes charCode = ((byte & 0x0f) << 12) | ((bytes[index++] & 0x3f) << 6) | (bytes[index++] & 0x3f); } else { // four bytes charCode = ((byte & 0x07) << 18) | ((bytes[index++] & 0x3f) << 12) | ((bytes[index++] & 0x3f) << 6) | (bytes[index++] & 0x3f); } str += chr(charCode); } return str; } return { stringToBytes: stringToBytes, bytesToString: bytesToString }; }()); 'use strict'; var app = angular.module('app', [ 'ui.router', 'templatescache', 'ui.bootstrap', 'ngAnimate' ]); angular.module('app').run(['$rootScope', '$state', '$stateParams', function($rootScope, $state, $stateParams) { $rootScope.$state = $state; $rootScope.$stateParams = $stateParams; } ]).config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/home'); // $stateProvider.state('home', { url: '/home', templateUrl: 'templates/home.html', controller: 'HomeController' }) .state('webChat', { url: '/webChat', templateUrl: 'templates/webChat.html', controller: 'WebController' }) .state('webChat.conComplain', { url: '/conComplain', templateUrl: 'templates/webChat-1.html', controller: 'WebController' }) .state('webChat.queryEv', { url: '/queryEv', templateUrl: 'templates/webChat-2.html', controller: 'WebController' }) .state('webChat.dyInfo', { url: '/dyInfo', templateUrl: 'templates/webChat-3.html', controller: 'WebController' }) .state('webChat.phoneLogin', { url: '/phoneLogin', templateUrl: 'templates/webChat-4.html', controller: 'WebController' }).state('webChat.online', { url: '/online', templateUrl: 'templates/webChat-5.html', controller: 'WebController' }); } ]); angular.module('templatescache', []).run(['$templateCache', function($templateCache) {$templateCache.put('templates/home.html','
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n \r\n
'); $templateCache.put('templates/webChat-1.html','
\r\n
\r\n \u54A8\u8BE2\u6295\u8BC9\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n

\u54A8\u8BE2\u6295\u8BC9

\r\n
\r\n\r\n \r\n
\r\n
'); $templateCache.put('templates/webChat-2.html','
\r\n
\r\n \u67E5\u8BE2\u8BC4\u4EF7\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n

\u67E5\u8BE2\u8BC4\u4EF7

\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
'); $templateCache.put('templates/webChat-3.html','
\r\n
\r\n \u52A8\u6001\u4FE1\u606F\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n

\u52A8\u6001\u4FE1\u606F

\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
'); $templateCache.put('templates/webChat-4.html',''); $templateCache.put('templates/webChat-5.html','
\r\n \u7F51\u4E0A\u4FE1\u7BB1\r\n
\r\n
\r\n \r\n\r\n
\r\n
\u59D3      \u540D\uFF1A*
\r\n
\u624B\u673A\u53F7\u7801\uFF1A*
\r\n
\u6295\u8BC9\u5185\u5BB9\uFF1A\r\n
*\r\n
\r\n
\u56FE      \u7247\uFF1A\r\n
\r\n
\r\n \r\n \r\n
\r\n
\u6240\u5728\u4F4D\u7F6E\uFF1A\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
'); $templateCache.put('templates/webChat.html','
\r\n
\r\n\r\n\r\n');}]); (function() { 'use strict'; angular .module('app') .directive('gaodeMap', Directive); Directive.$inject = []; function Directive() { var directive = { link: link, restrict: 'E', template: '
', replace: true, scope: { options: '=' } }; return directive; function link($scope, element, attrs) { var map, geolocation, marker, geocoder; //加载地图,调用浏览器定位服务 map = new AMap.Map('container', { resizeEnable: true, zoom: 17 }); map.plugin('AMap.Geolocation', function() { geolocation = new AMap.Geolocation({ enableHighAccuracy: true, //是否使用高精度定位,默认:true timeout: 10000, //超过10秒后停止定位,默认:无穷大 maximumAge: 0, //定位结果缓存0毫秒,默认:0 convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true showButton: true, //显示定位按钮,默认:true buttonPosition: 'RB', //定位按钮停靠位置,默认:'LB',左下角 buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20) showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false useNative: true }); map.addControl(geolocation); geolocation.getCurrentPosition(); // AMap.event.addListener(geolocation, 'complete', function(ret) { // console.log(ret.message); // }); //返回定位信息 // AMap.event.addListener(geolocation, 'error', function(ret) { // console.log(ret.message); // }); //返回定位出错信息 // marker = new AMap.Marker({ // map: map, // bubble: true, // content: '
' //自定义点标记覆盖物内容, // }); // marker.setLabel({ // offset: new AMap.Pixel(20, 0), // content: "我在这里" // }); // //geocoder = new AMap.Geocoder({}); // map.on('click', function(e) { // marker.setPosition(e.lnglat); // geocoder.getAddress(e.lnglat, function(status, result) { // if (status == 'complete') { // document.getElementById('input').value = result.regeocode.formattedAddress // } // }); // }); }); // $scope.$watch("options", function(newValue, oldValue) { // if ($scope.options) { // map.setCenter([$scope.options.lng, $scope.options.lat]); // marker.setPosition([$scope.options.lng, $scope.options.lat]); // } // }, true); } } })(); 'use strict'; angular.module('app').controller('HomeController', ['$scope', '$state', '$timeout', function($scope, $state, $timeout) { $scope.getAddSuccess = true; $scope.$on('$viewContentLoaded', function() { //加载轮播 var swiper = new Swiper('.swiper-container', { pagination: '.swiper-pagination', paginationClickable: true, loop: true, autoplayDisableOnInteraction: false, autoplay: 5000, effect: 'coverflow', slidesPerView: 'auto', centeredSlides: true, spaceBetween: -55, coverflow: { rotate: 30, stretch: 0, depth: 60, modifier: 1, slideShadows: false } }); //加载字体适应 var clientWidth = document.documentElement.clientWidth || window.innerWidth; var innerWidth = Math.max(Math.min(clientWidth, 480), 320); console.log(innerWidth); if (innerWidth < 350) { angular.element(".explain").removeClass("font-15"); angular.element(".explain").addClass("font-12"); } else if (innerWidth > 400) { angular.element(".explain").removeClass("font-12"); angular.element(".explain").addClass("font-15"); } //加载地图,调用浏览器定位服务 var map, geolocation, marker, geocoder, regeocoder; map = new AMap.Map('', { resizeEnable: true, zoom: 17 }); map.plugin('AMap.Geolocation', function() { geolocation = new AMap.Geolocation({ enableHighAccuracy: true, //是否使用高精度定位,默认:true timeout: 10000, //超过10秒后停止定位,默认:无穷大 maximumAge: 0, //定位结果缓存0毫秒,默认:0 convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true showButton: true, //显示定位按钮,默认:true buttonPosition: 'RB', //定位按钮停靠位置,默认:'LB',左下角 buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20) showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false useNative: true }); map.addControl(geolocation); geolocation.getCurrentPosition(); AMap.event.addListener(geolocation, 'complete', onComplete); //返回定位信息 AMap.event.addListener(geolocation, 'error', onError); //返回定位出错信息 function onComplete(data) { $scope.getAddSuccess = true; var geocoder = new AMap.Geocoder({ radius: 1000, extensions: "all" }); console.log("获取地址"); geocoder.getAddress(data.position, function(status, result) { if (status === 'complete' && result.info === 'OK') { $scope.addr = result; $timeout(); } }); }; function onError(data) { $scope.getAddSuccess = false; }; }); }); $scope.onOnlineClick = function(e) { $scope.mobile = ""; var activeClick = $(e.target); console.log(activeClick); if (!$scope.getAddSuccess) { alert("获取地址失败,请开启手机GPS定位功能,并允许获取地理位置授权"); window.location.reload(); } else if (!$scope.addr && $scope.getAddSuccess) { alert("地理位置获取中,请稍后"); } else if ($scope.addr.regeocode.addressComponent.district === '莲都区') { //activeClick[0].parentElement.parentElement.dataset.target = "#phoneLoginModal"; activeClick[0].parentElement.dataset.target = "#phoneLoginModal"; } else { //activeClick[0].parentElement.parentElement.dataset.target = "#errorLoginModal"; activeClick[0].parentElement.dataset.target = "#errorLoginModal"; } }; $scope.onlineService = function() { console.log($scope.mobile.length); if ($scope.mobile.length == 11) { ysf.config({ mobile: $scope.mobile, success: function() { // 成功回调 ysf.open(); }, error: function() { // 错误回调 // handle error ysf.open(); } }); } else { alert("请正确输入手机号码"); } }; }]); 'use strict'; angular.module('app').controller('WebController', ['$scope', '$timeout', function($scope, $timeout) { //lxtalkClient.Invoke('{FB60F992-A0FD-47B3-AAA7-E80DF209C5A4}', '_Register', '', $scope); $scope.$on('$viewContentLoaded', function() { var clientWidth = document.documentElement.clientWidth || window.innerWidth; var innerWidth = Math.max(Math.min(clientWidth, 480), 320); console.log(innerWidth); if (innerWidth > 350) { angular.element(".userInfo>div>span").addClass("font-14"); angular.element(".certificate").addClass("font-14"); angular.element(".userInfo .input-sm ").addClass("font-13"); angular.element(".userInfo .text-message").addClass("font-13"); } else { angular.element(".font-13").removeClass("font-13"); angular.element(".font-14").removeClass("font-14"); } }); $scope.imgView = function(event) { angular.element(".onView").removeClass("onView"); var img = $(event.target); img[0].className = "onView"; if (img[0].naturalWidth > img[0].naturalHeight) { angular.element(".image-view").addClass("width-Img"); } else { angular.element(".image-view").removeClass("width-Img"); } $scope.imgUrl = img[0].src; $(".image-big").remove(); $(".image-view").append(''); }; $scope.delSure = function() { $scope.sure = false; // var activeClick = $($event.target); // console.log(activeClick); // var imgUrl = activeClick[0].parentElement.previousElementSibling.firstElementChild.src; var imgs = $(".images"); $(".image-big").remove(); for (var i = 0, len = imgs.length; i < len; i++) { if ($(".images")[i].firstElementChild.className == "onView") { $(".images")[i].remove(); var imgNum = $("#imgpreview").find('img').length; if (imgNum == 2) { angular.element(".images").removeClass("three"); angular.element(".images").addClass("two"); } else if (imgNum = 1) { angular.element(".images").removeClass("two"); angular.element(".images").addClass("one"); } return; } }; }; $scope.delImg = function() { $scope.sure = true; }; $scope.actived = function($event) { var activeClick = $($event.target); if (activeClick[0].nodeName == "A") { angular.element(".Aa").removeClass("activeColor"); angular.element(".glyphicon").removeClass("activeColor"); activeClick.addClass("activeColor"); } else if (activeClick[0].nodeName == "SPAN") { angular.element(".Aa").removeClass("activeColor"); angular.element(".glyphicon").removeClass("activeColor"); activeClick.addClass("activeColor"); $(activeClick[0].parentElement).addClass("activeColor"); } }; $scope.footHide = function() { angular.element(".foot").addClass("hide"); }; $scope.footShow = function($event) { var activeClick = $($event.target); if (activeClick[0].className == "form-control input-sm" || activeClick[0].className == "text-message") { angular.element(".foot").addClass("hide"); } else { $timeout(function() { angular.element(".foot").removeClass("hide"); }, 400); } }; $scope.imgPreview = function(fileDom) { //判断是否支持FileReader if (window.FileReader) { var reader = new FileReader(); } else { alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!"); }; //获取文件 var file = fileDom.files[0]; var imageType = /^image\//; //是否是图片 if (!imageType.test(file.type)) { alert("请选择图片!"); return; }; $("#file")[0].value = ""; //读取完成 reader.onload = function(e) { // //获取图片dom // var img = document.getElementById("preview"); // //图片路径设置为读取的图片 // img.src = e.target.result; var img = new Image, width = 1080, //image resize quality = 0.9, //image quality canvas = document.createElement("canvas"), drawer = canvas.getContext("2d"); img.src = this.result; if (img.src) { var imgNum = $("#imgpreview").find('img').length; canvas.width = width; canvas.height = width * (img.height / img.width); drawer.drawImage(img, 0, 0, canvas.width, canvas.height); img.src = canvas.toDataURL("image/jpeg", quality); if (imgNum == 0) { $("#imgpreview").append(''); angular.element(".images").addClass("one"); } else if (imgNum == 1) { $("#imgpreview").append(''); angular.element(".images").removeClass("one"); angular.element(".images").addClass("two"); } else if (imgNum >= 2) { $("#imgpreview").append(''); angular.element(".images").removeClass("two"); angular.element(".images").addClass("three"); } }; }; reader.readAsDataURL(file); }; }]);