var BASE_URL = WWW, CP = BASE_URL + 'cp/', SOURCE_URL = BASE_URL + 'source/', SOURCE_ORIGIN = BASE_URL + 'source/', UPLOAD_URL = BASE_URL + 'source/', UPLOAD_IMG = UPLOAD_URL + 'upload', UPLOAD_FILE = UPLOAD_URL + 'upload', WU_SWF = BASE_URL + 'msic/webuploader/Uploader.swf', BRAND_ID = 0; var YZ = {version: '1.0', author: 'lynn@elicht.cn', created: '20161118', elements: {}}, SOSO = {}; YZ.U = function (uri) { uri = uri.replace(/\\/g, '/'); if (new RegExp("^[a-z]+:\/\/", 'gi').test(uri.toLowerCase()) || uri.substr(0, 1) == '/') { return uri; } return BASE_URL + uri; }; YZ.Mask = { text: '正在处理,请稍候', html: '
loading
', show: function (text) { if (!this.el) { this.el = $(this.html).appendTo(document.body); this.masker = $('').appendTo(this.el); } this.masker.height(Math.max(this.el.height(), $(document.body).height(), $(document).height())); this.setText(text || this.text) }, hide: function () { if (this.el) { this.el.remove() } this.el = null }, setText: function (text) { if (this.el) { this.el.find('span').text(text) } } }; var Mask = YZ.Mask; YZ.Top = function () { var el = $('.modal'); el.is(':visible') ? el.scrollTop(0) : $(window).scrollTop(0); }; T = YZ.Top; YZ.Toast = function toast(msg, timeout) { $('#toast').remove(); var el = $('
' + msg + '
'); $(top.document.body).append(el); window.setTimeout(function () { el.remove() }, timeout || 3000); return el; }; var toast = YZ.Toast; YZ.Dialog = { wins: {}, url: {}, show: function (option) { if (typeof option == 'string') option = {url: option}; var url = option.url || this.url[option.name]; this.loaded = false; this.callback = option.callback || null; this.option = option; if (option.name && this.wins[option.name]) { this.wins[option.name].modal('show'); var onshow = this.wins[option.name].data('onDialogShow'); if ($.isFunction(onshow)) { onshow.call(null, option); } return; } var self = this; $('
').appendTo('body').load(url); }, create: function (option) { option = option || {}; if (typeof option == "string") option = {html: option}; var dialog = $('').appendTo(document.body); if (option.fade !== false) dialog.addClass('fade'); if (option.cls) dialog.addClass(option.cls); if (option.dialogCls) dialog.find('.modal-dialog').addClass(option.dialogCls); var ct = dialog.find('.modal-content'); if (option.title) { var html = ''; $(html).appendTo(ct); } $('').html(option.html || '').appendTo(ct); return dialog; } }; YZ.ajax = function (uri, callback, options) { NProgress.start(); options = $.extend({}, options); $.ajax({ url: YZ.U(uri), type: options.type ? 'post' : 'get', data: options.data, dataType: options.dataType || 'json', success: function (rs) { NProgress.done(); if ($.isFunction(callback)) callback(rs); }, error: function (rs) { NProgress.done(), toast('提交失败,错误信息:' + rs.message); console.log(rs.responseText); } }); }; YZ.Specification = { generate: function (id) { var dialog = YZ.Dialog.create({ html: '
', cls: 'spec-editor', dialogCls: 'modal-full' }).on('hidden.bs.modal', function (e) { dialog.remove(); }).modal(); var that = this; dialog.find('.modal-body').load(YZ.U('light/spec/' + id), function () { var selector = '#spec-editor-sidebar', el = $(selector), p = el.parent(), h = el.outerHeight(), h1 = p.outerHeight(); dialog.on('scroll', function () { var t = p.offset().top, t1 = t - dialog.offset().top, t2 = t1 < 0 ? -t1 : 0; el.css('margin-top', t2 == 0 || (h1 + t1) > h ? t2 : (t2 + h1 + t1 - h)); }).scrollspy({target: selector, offset: dialog.offset().top - p.offset().top + 30}); that.render(dialog); }); }, render: function (container) { var light = {}, form = container.find('form'), F = form.get(0), imgList = form.find('.img-list'), columns = { project: ['name', 'number', 'product', 'quantity', 'position', 'linkman'], company: ['name', 'logo', 'address', 'linkman', 'phone', 'email'] }; if (F.p_name && window.localStorage.project) { var project = JSON.parse(window.localStorage.project); columns.project.map(function (v, k) { F['p_' + v].value = project[v] || ''; }); } if (F.c_name && window.localStorage.company) { var company = JSON.parse(window.localStorage.company); columns.company.map(function (v, k) { F['c_' + v].value = company[v] || ''; }); } container.find('.btn-img-uploader').each(function () { ImageButtonInit(this, null, true); // var btn = $(this), options = btn.data('options'); // try { // options = $.parseJSON('{' + options + '}'); // console.log(options); // options.callback = function (rs, file, uploader) { // $(options.input).val(rs.path); // }; // ImageUploader(btn, options); // } catch (e) { // console.log("解析JSON出错(img-upload):" + options); // console.log(this); // } }); var i = 0, len = imgList.length, item; for (; i < len; i++) { item = $(imgList[i]).find('li:first-child'); item.addClass('active').append(''); if (i >= 3) break; } var specPicture = $('#specPicture'); container.on('click', '.event-el', function (e) { var el = $(this), func = el.data('func'); if (!func) return; e.preventDefault(); switch (func) { case 'param': var text = el.find('span').text(), id = el.parent().parent().attr('id'), cls = 'active', clear = el.parent().data('clear'), multi = el.parent().data('multi'), name = el.data('name'), path = el.data('path'); if (!el.hasClass(cls) && specPicture.find('li.active').length > 4) { toast('最多选择5张图'); return; } if (!multi) el.siblings().removeClass(cls); // multi为假是不可多选 if (clear) { // clear为真可以取消选择 el.toggleClass(cls); if (el.hasClass(cls)) { el.append(''); } else { el.find('input').remove(); } } else { el.addClass(cls); } break; case 'preview': case 'print': case 'download': container.find('.param-selector-ct li.active').each(function () { var li = $(this); li.closest('.form-group').find('input').val(li.text()); }); if (F.p_name) { var project = {}; columns.project.map(function (v, k) { project[v] = F['p_' + v].value; }); window.localStorage.project = JSON.stringify(project); } if (F.c_name) { var company = {}; columns.company.map(function (v, k) { company[v] = F['c_' + v].value; }); window.localStorage.company = JSON.stringify(company); } form.attr('action', YZ.U('light/spec/' + func + '/' + F.id.value)).submit(); break; } }); } }; YZ.Valid = function (el, message, focus) { el = $(el); var p = el.parent(), cls = ['has-error', 'help-block'], pp, block; if (p.is('.input-group')) p = p.parent(); pp = p.is('.form-group') ? p : p.parents('.form-group'); if (!pp.length) pp = p.parents('.dl-group'); if (!pp.length) pp = p.parent(); pp.removeClass(cls[0]).find(JQS(cls[1])).remove(); if (message) { p.append('
' + message + '
'); pp.addClass(cls[0]); if (focus) el.focus(); } }; /*与上方法类似,多点击按钮*/ YZ.ValidWithBtn = function (el, message, url) { el = $(el); var p = el.parent(), cls = ['has-error', 'help-block'], pp, block; if (p.is('.input-group')) p = p.parent(); pp = p.is('.form-group') ? p : p.parents('.form-group'); if (!pp.length) pp = p.parents('.dl-group'); if (!pp.length) pp = p.parent(); pp.removeClass(cls[0]).find(JQS(cls[1])).remove(); if (message) { p.append('
' + message + '    点击激活
'); pp.addClass(cls[0]); //if (focus) el.focus(); } }; YZ.So = function () { var form = $('.so-form-modal'), body = $(document.body), cls = 'hide', open = 'modal-open'; form.toggleClass(cls); if (!form.hasClass(cls)) { body.addClass(open); form.find('.input-word').focus(); } else { body.removeClass(open); } }; YZ.appendStyle = function (style) { var styleElems = document.getElementsByTagName("style"); if (styleElems.length == 0) { var tempStyle = document.createElement("style"); tempStyle.setAttribute("type", "text/css"); document.getElementsByTagName("head")[0].appendChild(tempStyle); } var styleElem = styleElems[0], style = style || ''; if (styleElem.styleSheet) { styleElem.styleSheet.cssText += style; } else { styleElem.appendChild(document.createTextNode(style)); } }; YZ.colortORgba = function (str, alpha) { var sColor = str.toLowerCase(), reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; if (sColor && reg.test(sColor)) { if (sColor.length === 4) { var sColorNew = "#"; for (var i = 1; i < 4; i += 1) { sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); } sColor = sColorNew; } //处理六位的颜色值 var sColorChange = []; for (var i = 1; i < 7; i += 2) { sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2))); } return "rgb" + (alpha ? "a" : "") + "(" + sColorChange.join(",") + (alpha ? "," + alpha : "") + ")"; } else { return sColor; } }; YZ.Share = function () { var html = '
' + '' + '' + '' + '' + '' + '' + '
'; $('.sns-share').html(html); }; //立即执行 YZ.Share(); function setImgSize(img, size) { img = img.replace(/\\/g, '/').split('/'); var n = img[img.length - 1].split('.'); n[0] = n[0].split('--')[0] + size; img[img.length - 1] = n.join('.'); img = img.join('/'); return img } SOSO.getImageUrl = function (img, size) { var flag = false; if (typeof img == 'string') { if (img.indexOf('http') == 0) return img; var filename = img.split('/').pop(); if (filename.split('.')[0].length == 40) { flag = true; if (size === false) { size = '.0'; } else { size = (size + '').match(/\d+/g); size = size ? ('.' + size[0]) : ''; } } } if (!flag) size = size === false ? '' : (size || ''); if (typeof img == 'object' && img) { if (img.path) { return setImgSize(SOSO.getPathImage(img.path), size) } if (img.origin) { return img.origin + img.filename + size + '.' + img.extension; } return (img.baseurl || SOURCE_URL) + img.dirname + img.name + size + '.' + img.ext } else if (img) { return setImgSize(img, size) } }; SOSO.getPathImage = function (path, size) { if (typeof path == 'string') { if (path.indexOf('http') == 0) return path; var filename = path.split('/').pop(); if (filename.split('.')[0].length == 40) { return SOSO.getImageUrl(SOURCE_ORIGIN + path, size); } else if (typeof size != 'undefined') { return SOSO.getImageUrl(SOURCE_URL + path, size); } console.log(11111111, SOURCE_URL) return SOURCE_URL + path; } else { return SOSO.getImageUrl(path, size); } }; String.prototype.trim = function () { return $.trim(this) } function isUsername(v) { if (/^[0-9]+$/.test(v)) return !1; return /^[0-9a-zA-Z_\-]{4,20}$/.test(v.replace(/[\x80-\xff\u4e00-\u9fa5]/g, '00')) } function isEmail(n) { return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(n) } function isMobile(n) { return /^1[34578][0-9]{9}$/.test(n) } function affixCategory(element, options) { if (element.length) { var p = element.parent().parent(), h = p.height(), _h = element.height(); _h += element.offset().top - p.offset().top; if (_h >= h) return; p.css('min-height', _h); if (element.data('isBindAffix')) return; var hd = $('.header-affix'), top = hd.length && hd.data('spy') == 'affix' ? hd.outerHeight() : 0; options = $.extend({ offset: { top: element.offset().top - top, bottom: function () { var b = $(document.body).height() - p.height() - p.offset().top + 30; return (this.bottom = b); } } }, options); element.css('top', top + 20).data('isBindAffix', true).affix(options).on('affix.bs.affix', function () { element.css('position', 'fixed') }).on('affix-top.bs.affix', function () { element.css('position', 'static') }); } } function carousel(obj, showPhotoNum) { showPhotoNum = typeof showPhotoNum != 'undefined' ? parseInt(showPhotoNum) : 6; var obj = $(obj), divlen = Math.ceil(obj.find('.preview-list').width() / 60); // 每页显示的图片个数 var num = 1; // 当前所在页 var len = obj.find('.preview-list ul li').length; // 一共多少张 var pageCount = Math.ceil(len / divlen); // 一共多少页 var _last = Math.floor(len % divlen) // 最后一页的图片个数 var left = 0; var preview = obj.find('.preview-img img'); obj.find('.preview-list').on('mouseover', 'li', function () { var p = $(this), me = p.find('img'), cls = 'active', url = me.data('url'); if (!p.hasClass(cls) && url) { p.parent().find('li.' + cls).removeClass(cls) p.addClass(cls); preview.attr('src', url); } }); if (len <= showPhotoNum) { obj.find('.preview-ctrl-forward').addClass('disabled'); obj.find('.preview-ctrl-backward').addClass('disabled'); obj.find('.preview-ctrl-forward').css('cursor', 'default'); obj.find('.preview-ctrl-backward').css('cursor', 'default'); return; } obj.find('.preview-ctrl-forward').on('click', function (e) { if (num <= 1) { obj.find('.preview-ctrl-forward').addClass('disabled'); obj.find('.preview-ctrl-backward').removeClass('disabled'); e.stopPropagation(); } num--; left = parseInt(obj.find('.preview-list ul').css('left')); left += divlen * 60; left = left > 0 ? 0 : left; obj.find('.preview-list ul').stop().animate({'left': left}, 400); e.stopPropagation(); }); obj.find('.preview-ctrl-backward').on('click', function (e) { if (num >= pageCount) { obj.find('.preview-ctrl-backward').addClass('disabled'); obj.find('.preview-ctrl-forward').removeClass('disabled'); num = pageCount; e.stopPropagation(); } left = -(divlen * 60 * num); if (num + 1 == pageCount && _last < divlen) { var tmp = divlen - _last; left += tmp * 60; } obj.find('.preview-list ul').stop().animate({'left': left}, 400); num++; e.stopPropagation(); }); } function JQS(a) { return '.' + a } +function (e) { "use strict"; var t = function (t, n) { this.options = n, this.$element = e(t), this.$backdrop = null, this.isShown = null, this.options.remote && this.$element.load(this.options.remote) }; t.prototype = e.extend({}, e.fn.modal ? e.fn.modal.Constructor.prototype : {}), t.prototype.constructor = t, t.DEFAULTS = { backdrop: !0, keyboard: !0, show: !0 }, t.prototype.show = function (t) { var n = this, r = e.Event("show.bs.lightbox", {relatedTarget: t}); this.$element.trigger(r); if (this.isShown || r.isDefaultPrevented()) return; this.isShown = !0, this.escape(), this.$element.on("click.dismiss.lightbox", '[data-dismiss="lightbox"]', e.proxy(this.hide, this)), this.preloadSize(function () { n.backdrop(function () { var r = e.support.transition && n.$element.hasClass("fade"); n.$element.parent().length || n.$element.appendTo(document.body), n.$element.show(), r && n.$element[0].offsetWidth, n.$element.addClass("in").attr("aria-hidden", !1), n.enforceFocus(); var i = e.Event("shown.bs.lightbox", {relatedTarget: t}); r ? n.$element.find(".lightbox-dialog").one(e.support.transition.end, function () { n.$element.focus().trigger(i) }).emulateTransitionEnd(300) : n.$element.focus().trigger(i) }) }) }, t.prototype.hide = function (t, n) { t && t.preventDefault(), t = e.Event("hide.bs.lightbox"), this.$element.trigger(t); if (!this.isShown || t.isDefaultPrevented()) return; this.isShown = !1, this.escape(), e(document).off("focusin.bs.lightbox"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.lightbox"), e.support.transition && this.$element.hasClass("fade") ? this.$element.one(e.support.transition.end, e.proxy(this.hideModal(n), this)).emulateTransitionEnd(300) : this.hideModal(n), this.options.remove && this.$element.remove(); }, t.prototype.enforceFocus = function () { e(document).off("focusin.bs.lightbox").on("focusin.bs.lightbox", e.proxy(function (e) { this.$element[0] !== e.target && !this.$element.has(e.target).length && this.$element.focus() }, this)) }, t.prototype.escape = function () { this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.bs.lightbox", e.proxy(function (e) { e.which == 27 && this.hide() }, this)) : this.isShown || this.$element.off("keyup.dismiss.bs.lightbox") }, t.prototype.hideModal = function (e) { var t = this; this.$element.hide(), this.backdrop(function () { t.removeBackdrop(), e || t.$element.trigger("hidden.bs.lightbox") }) }, t.prototype.backdrop = function (t) { var n = this, r = this.$element.hasClass("fade") ? "fade" : ""; if (this.isShown && this.options.backdrop) { var i = e.support.transition && r; this.$backdrop = e('