$.fn.extend({ animateCss: function (animationName, callback) { var animationEnd = (function (el) { var animations = { animation: 'animationend', OAnimation: 'oAnimationEnd', MozAnimation: 'mozAnimationEnd', WebkitAnimation: 'webkitAnimationEnd', }; for (var t in animations) { if (el.style[t] !== undefined) { return animations[t]; } } })(document.createElement('div')); this.addClass('animated ' + animationName).one(animationEnd, function () { //$(this).removeClass('animated ' + animationName); callback && callback.call(this, $(this), animationName); }); return this; }, }); var app = { /** * 请求id */ id: location.search.substring(1).replace(/ID=|\&pic=1/gi, ''), /** * 切换画风id */ switchId: 0, /** * 切换风景id */ bgId: 0, /** * 切换风格类型 */ type: 1, /** * 我的相片列表 */ imgList: [], /** * 广告切换 */ adsSwiper: function () { var html = []; var $elem = $('.ads-swiper') __config.adsPath && __config.adsPath.forEach(function (item) { html.push('
') }) if (!html.length) { html.push('
') } $elem.find('.swiper-wrapper').html(html.join('')) new Swiper($elem[0], { autoplay: { delay: 3000, stopOnLastSlide: false, disableOnInteraction: true, }, pagination: { el: $elem.find('.swiper-pagination')[0], bulletClass: 'my-bullet' } }); }, /** * 画风切换 */ stlSwiper: function () { var $elem = $('.stl-swiper') if (this.stlSwiper.swiper) { this.stlSwiper.swiper.destroy() } let html = '' if (this.type==2) { html = `
` } else{ html = `
` } $elem.html(html) this.stlSwiper.swiper = new Swiper($elem[0], { //speed: 300, freeMode: true, slidesPerView: 3.5, }); var time; $elem.find('.swiper-slide').on('click', function () { var $this = $(this); var msg = $this.data('msg') app.checkOperationTimeout() let tmp = '' if (app.type == 2) { if (app.bgId == msg) { // 已选择的不再执行 return; } tmp = 'bg ' app.bgId = msg }else{ if (app.switchId == msg) { // 已选择的不再执行 return; } tmp = 'switch ' app.switchId = msg } if (!app.sendCheck()) { return; } if (time && (Date.now() - time < __config.switchInterval * 1000)) { app.showLoadingSwitch(function () { $elem.find('.swiper-slide').removeClass('active'); $this.addClass('active'); }) } else { $elem.find('.swiper-slide').removeClass('active') $this.addClass('active') } time = Date.now(); app.send(tmp + msg) }); $elem.find('.swiper-slide').each(function () { var style = $(this).data('msg'); if (style) { var img = new Image() img.src = (__config.staticUrl || 'static') + `/images/styles${app.type==2?'1':''}/` + style + '-active.png'; } }) }, /** * 我的相片滚动 */ picSwiper: function () { if (this.picSwiper.swiper) { this.picSwiper.swiper.destroy() } this.picSwiper.swiper = new Swiper($('.pic-swiper')[0], { speed: 300, slidesPerView: 'auto', freeMode: true, direction: 'vertical', setWrapperSize: true, scrollbar: { el: '.swiper-scrollbar', }, }); }, events: function () { var self = this, $picList = $('.my-pic-list'); if (__config.link) { $('.logo').attr('href', __config.link) } $picList.find('header').on('touchstart', function (event) { event.preventDefault(); }); $picList.find('.btn-back').on('touchend', function (event) { event.preventDefault(); $picList.hide() }); $('.swt-style').on('click','a', function (event) { self.type = $(event.currentTarget).data('id') $(event.currentTarget).addClass("active").siblings().removeClass("active"); self.stlSwiper() if (self.type==2) { $('.stl-swiper').addClass('stl-swiper1') }else { $('.stl-swiper').removeClass('stl-swiper1') } $('.swiper-wrapper').find('.swiper-slide').removeClass('active'); $(`.swiper-slide[data-msg=${self.type==2?self.bgId:self.switchId}]`).addClass('active'); }); $('.btn-pic-list').on('click', function (event) { app.send('close') $picList.show() self.renderPictures() }); $('.btn-pic-take').on('click', function (event) { app.checkOperationTimeout() if (!app.sendCheck()) { return; } self.send('photo empty') }); $('.app-view .close').on('click', function (event) { self.hideView() }); $('.app-alert .btn-use').on('click', function () { var $alert = $('.app-alert') app.hideMask() $alert.removeClass($alert.data('class') + ' animated zoomIn') var text = $(this).text(); if (text == '尝试使用' || text == '再次使用') { app.send('request') } }) $('.app-alert .btn-link').on('click', function () { if ($(this).text() == '重新拍照') { var $alert = $('.app-alert') app.hideMask() $alert.removeClass($alert.data('class') + ' animated zoomIn') $('.btn-pic-take').click() } }) }, showMask: function (clazz) { var $elem = $('.app-mask'); if (clazz) { $elem.addClass(this.showMask._clazz = clazz) } $elem.css('display', 'block') }, hideMask: function () { var $elem = $('.app-mask'); if (this.showMask._clazz) { $elem.removeClass(this.showMask._clazz) this.showMask._clazz = null } $elem.css('display', 'none') }, showAlert: function (msg, icon) { this.showMask(); var $alert = $('.app-alert'); var $btns = $alert.find('.btns a'); $alert.data('class', icon).addClass(icon).animateCss('zoomIn') $alert.find('.tips').html(msg) if (/error|used/.test(icon)) { $btns.eq(0).text('尝试使用') } else if (/timeout|stop/.test(icon)) { $btns.eq(0).text('再次使用') } else if (/fail/.test(icon)) { $btns.eq(0).text('重选画风') } if (/used|timeout|stop|error/.test(icon)) { $btns.eq(1).text('刷新页面').attr('href', $btns.eq(1).data('href')) } else if (/fail/.test(icon)) { $btns.eq(1).text('重新拍照').attr('href', 'javascript:;') } }, showActionTips: function (delay, done) { var $elem = $('.app-action-tips'); var flag = flag || 1; delay = delay || 1000; app.showMask('white') $elem.find('.content').hide() $elem.find('.content.face-' + flag).show() $elem.animateCss('zoomIn', function () { var timer = setInterval(() => { if (++flag > 6) { $elem.removeClass('animated zoomIn'); clearInterval(timer) if (!app.is_action) { app.hideMask('white') done && done() } return; } $elem.find('.content').hide() $elem.find('.content.face-' + flag).show() }, delay); }) }, showLoading: function (msg) { msg = msg || '相片正在生成中,请耐心等候' this.showMask(); $('.app-action-tips .content').css('display', 'none'); $('.app-action-tips .content.loading').css('display', 'block').find('.tips').html(msg); $('.app-action-tips').addClass('animated zoomIn') //.animateCss('zoomIn') }, hideLoading: function () { this.hideMask(); $('.app-action-tips .content.loading').css('display', 'none'); $('.app-action-tips').removeClass('animated zoomIn') }, showLoadingSwitch: function (done) { this.showMask(); $('.app-action-tips .content').css('display', 'none'); $('.app-action-tips .content.loading-switch').css('display', 'block') $('.app-action-tips .content.loading-switch .tips').html('正在切换'+(app.type==2?'风景':'画风')) $('.app-action-tips').animateCss('zoomIn', function ($elem, aname) { setTimeout(function () { app.hideMask(); $elem.removeClass('animated ' + aname); done && done() }, 1000); }) }, renderPictures() { var html = []; console.log('===================================='); console.log(this.imgList); console.log('===================================='); this.imgList.forEach(function (item) { html.push('
'); html.push('
'); html.push(' '); html.push('
'); html.push('
'); html.push('
'); html.push(' ' + item.datetime); html.push('
'); html.push('
'); html.push('
'); html.push('
'); }) if (!html.length) { html.push('
暂无相片
'); } $('.pic-swiper .swiper-wrapper').html(html.join('')); $('.pic-swiper .swiper-wrapper img').click(function (e) { wx.previewImage({ current: e.currentTarget.src.split('?v=')[0], urls: app.imgList.map(function (item) { return item.url }) }); }); this.picSwiper(); }, showView: function (json) { this.hideLoading() setTimeout(function () { // app.showMask(); // $('.app-view').animateCss('zoomIn', function () { // app.send('close') // }).find('.img').html('') var img = new Image() img.src = json.url + '?v=' + Date.now() img.onload = img.onerror = function(){ app.showMask(); var $view = $('.app-view') if(img.width') } }, 300); }, hideView: function () { this.hideMask(); $('.app-view').removeClass('animated zoomIn') }, connection: function () { console.log('正在尝试连接') try { var timer this.websocket = new WebSocket(__config.ws); this.websocket.onclose = function (e) { app.is_connect = false app.checkTimeout(true) app.checkOperationTimeout(true) console.error('连接失败', e) setTimeout(function () { app.connection() }, 5000) }.bind(this); this.websocket.onopen = function (msg) { this.is_connect = true this.is_connect_ok = null this.send('request') }.bind(this); this.websocket.onmessage = function (msg) { console.log(msg.data) if (typeof msg.data == "string") { switch (msg.data) { case 'error 101': console.log('发送的消息有误'); break; case 'error 102': //pop_tip('连接打印机失败
请重新刷新页面'); break; case 'error 302': app.hideLoading() app.showAlert('网络异常,生成失败', 'fail') break; case 'error 404': app.switchId = 0; app.showAlert('切换图片失败', 'error'); break; case 'error 500': app.is_connect_ok = false if (app.is_send_msg) { app.hideLoading() app.showAlert('网络异常,请稍后再试', 'error'); } break; case 'error 600': //console.log('未定义的消息'); break; case 'error 707': app.showAlert('二维码不正确', 'error') break; case 'error 808': app.is_lose_used = true if (app.is_send_msg) { app.showAlert('当前画屏正在被使用,请稍后', 'used'); } break; case 'error 202': break; case 'error 909': app.is_other_used = true; if (app.is_send_msg) { app.showAlert('当前画屏正在被使用,请稍后', 'used'); } break; case 'ok 200': console.log('切换图片成功') break; case 'ok 201': console.log('操作成功') app.is_connect_ok = null app.checkTimeout(true) app.checkOperationTimeout(true) break; case 'ok 300': app.hideLoading(); app.is_lose_used = false; app.is_other_used = false; app.is_connect_ok = true; app.checkTimeout() app.checkOperationTimeout() break; case 'ok 301': console.log('拍照成功,开始等待照片') app.is_action = false; app.checkTimeout(true) app.checkOperationTimeout(true) app.showActionTips(1000, function () { app.showLoading() }); timer = setTimeout(function () { app.send('close') setTimeout(() => { app.hideLoading() app.showAlert('网络异常,生成失败', 'fail') }, 500); }, 20000); break; case 'ok 1000': app.is_lose_used = false; app.is_other_used = false; break; default: try { app.is_action = true; timer && clearTimeout(timer) var json = JSON.parse(msg.data) if (json.url) { app.showView(json) } } catch (error) { console.error(error) } break; } app.is_send_msg = false } else { console.log("error 600"); } }.bind(this); } catch (error) { console.error(error) setTimeout(function () { app.connection() }, 5000) } }, send: function (msg) { if (msg === 'request') { this.websocket.send(msg + ' ' + this.id) } else if (msg === 'close') { this.websocket.send(msg + ' 0') } else { if (app.is_connect_ok == null && !app.is_other_used) { app.websocket.send('request ' + this.id) } setTimeout(function () { app.websocket.send(msg) }, 300); } }, sendCheck() { if (!this.is_connect) { app.showAlert('网络异常,请稍后再试', 'error'); return false; } else if (this.is_other_used) { app.showAlert('当前画屏正在被使用,请稍后', 'used'); return false; } else if (this.is_lose_used) { app.showAlert('当前画屏正在被使用,请稍后', 'used'); return false; } else if (this.is_connect_ok === false) { app.showAlert('网络异常,请稍后再试', 'error'); return false; } this.is_send_msg = true; return true; }, checkOperationTimeout(stop) { this.operationTimer && clearTimeout(this.operationTimer) if (stop) { // 暂停检测 return } this.operationTimer = setTimeout(function () { if (app.is_connect_ok) { app.send('close') app.showAlert('因您长时间未使用
已无法操作艺术照一体机', 'timeout') } }, (__config.noOperationTimeout || 30) * 1000); }, checkTimeout(stop) { this.timeoutTimer && clearTimeout(this.timeoutTimer) if (stop) { // 暂停检测 return } // 强制超时结束控制 180s this.timeoutTimer = setTimeout(function () { if (app.is_connect_ok) { app.send('close') app.showAlert('抱歉,因您长时间使用
让下一位小伙伴体验吧', 'timeout') } }, (__config.timeout || 180) * 1000); }, render: function () { this.connection() this.events() this.adsSwiper() this.stlSwiper() this.picSwiper() // this.imgList.push({ // "id": 7, // "url": "http://ost.4dage.com/4dart/img/31913592.jpg", // "datetime": "2018年10月29日 16:27:26" // }) } } app.render() window.onbeforeunload = function () { try { app.websocket.close(); app.websocket = null; } catch (ex) {} }; //app.showAlert('抱歉,因您长时间使用
让下一位小伙伴体验吧', 'timeout') //app.showAlert('因您长时间未使用
已无法操作艺术照一体机', 'stop') //app.showAlert('当前画屏正在被使用,请稍后', 'used') //app.showAlert('网络异常,请稍后再试', 'error') //app.showAlert('网络异常,生成失败', 'fail') //app.showAlert('您已丢失使用权', 'used');