/*! * 应用通用功能 * 米拓企业建站系统 copyright (c) 长沙米拓信息技术有限公司 (https://www.metinfo.cn). all rights reserved. */ // 判断地址栏是否有lang参数,没有则跳转到带lang参数的地址 if(typeof met !='undefined' && met['url']['basepath'] !='undefined'){ try { if(window.parent){ var str=window.parent.document.url, s=str.indexof("lang="+m['lang']), z=str.indexof("lang"); if (s=='-1' && z!='-1') { var s1=str.indexof('#'); if (s1=='-1') { str=str.replace(/(lang=[^#]*)/g, "lang="+m['lang']+"#"); } str=str.replace(/(lang=[^#]*#)/g, "lang="+lang+"#"); parent.location.href=str; } } } catch (err) {} } // 获取地址栏参数 function getquerystring(name) { var reg=new regexp("(^|&)"+name+"=([^&]*)(&|$)", "i"); var r=window.location.search.substr(1).match(reg); if (r!=null) return unescape(decodeuricomponent(r[2])); return null; } // 修改、添加、删除地址栏参数 function replaceparamval(param,value) { var url=location.href, match_url=window.location.search.substr(1) || window.location.hash.split('?')[1]||'', param=$.isarray(param)?param:[param], value=$.isarray(value)?value:[value]; $.each(param, function(index, val) { var param1='&' + val + '=', param2='?' + val + '=', re = match_url.match(new regexp("(^|&)"+val+"=([^&]*)(&|$)", "i")); if(!re && (url.indexof(param1)>0 || url.indexof(param2)>0)) re=[val + '=']; re && (re[0]=re[0].replace(/&/g,'')); value[index]=string(value[index]); if(value[index]){ if(re){ if(url.indexof(param1)>0){ url = url.replace('&'+re[0], param1 + value[index]); }else if(url.indexof(param2)>0){ url = url.replace('?'+re[0], param2 + value[index]); } }else{ if(url.indexof('?')>0){ var laststr=url.substr(-1), urls=url.split('?'); if(urls[urls.length-1].indexof('#')>0 && laststr!='/'){ url+='/?'; laststr=url.substr(-1); } url = url+((laststr=='?'||laststr=='&')?(val + '='):param1) + value[index]; }else{ if((url+'/')==m.weburl) url+='/'; var laststr=url.substr(url.lastindexof('/')+1); if(laststr.length?laststr.indexof('.')>0:1){ url=url+param2 + value[index]; }else{ url=url+'/'+param2 + value[index]; } } } }else if(re){ url = url.replace('&'+re[0], '').replace(re[0], ''); } }) history.pushstate('','',url); } try { if(window.parent){ // 可视化弹框中页面隐藏头部 if (parent.window.location.search.indexof('pageset=1') >= 0) $('.metadmin-head').hide(); // 操作成功、失败提示信息 if(top.location!=location) $("html",parent.document).find('.turnovertext').remove(); } } catch (err) {} // 弹出提示信息 function metalert(text,delay,bg_ok,type){ delay=typeof delay != 'undefined'?delay:2000; bg_ok=bg_ok?'bgshow':''; if(bg_ok){ $('.metalert-text').remove(); }else{ $('.metalert-wrapper').remove(); } if(text!=' '){ text=text||metlang.jsok; text='
'+text+'
'; if(parseint(type)==0) text+=''; if(!$('.metalert-text').length){ var html='
'+text+'
'; if(bg_ok) html='
'+html+'
'; $('body').append(html); } var $met_alert=$('.metalert-text'), $obj=bg_ok?$('.metalert-wrapper'):$met_alert; $met_alert.html(text); $obj.show(); if($met_alert.outerheight()%2) $met_alert.height($met_alert.height()+1); } if(delay){ settimeout(function(){ var $obj=bg_ok?$('.metalert-wrapper'):$('.metalert-text'); $obj.fadeout(); },delay); } } // 弹出页面返回的提示信息 var turnover=[]; turnover['text']=getquerystring('turnovertext'); turnover['type']=parseint(getquerystring('turnovertype')); turnover['delay']=turnover['type']?undefined:0; if(turnover['text']) metalert(turnover['text'],turnover['delay'],!turnover['type'],turnover['type']); // 系统参数 var lang=m['lang'], siteurl=m['weburl'], basepath=(typeof met!='undefined' && met['url']['basepath'])?met['url']['basepath']:''; if(typeof met != 'undefined'){ for(var name in met){ if(!m[name]) m[name]=met[name]; } } m['n']=getquerystring('n'); m['c']=getquerystring('c'); m['a']=getquerystring('a'); if(!m['url']) m['url']=[]; if(m['url']['basepath']){ var pathname=location.pathname, pathname_array=pathname.split('/'); siteurl=m['weburl']=location.origin+(pathname.substring(0,pathname.lastindexof('/'+pathname_array[pathname_array.length-2]+'/')+1)); basepath=m['url']['basepath']=m['url']['basepath'].replace('../',m['weburl']); m.lazyloadbg=m.lazyloadbg.replace('../',m['weburl']); } m['url']['admin']=m['url']['basepath']; m['url']['system']=m['weburl']+'app/system/'; m['url']['app']=m['weburl']+'app/app/'; m['url']['public']=m['weburl']+'public/'; m['url']['public_plugins']=m['url']['public']+'plugins/'; m['url']['public_fonts']=m['url']['public']+'fonts/'; m['url']['public_images']=m['url']['public']+'images/'; m['url']['public_web']=m['url']['public']+'web/'; m['url']['public_web_plugins']=m['url']['public_web']+'plugins/'; m['url']['public_web_register']=m['url']['public_web_plugins']+'register/'; m['url']['public_web_css']=m['url']['public_web']+'css/'; m['url']['public_web_js']=m['url']['public_web']+'js/'; m['url']['static_modules']=m['url']['public_plugins']; m['url']['static_vendor']=m['url']['public_plugins']; m['url']['static2']=m['url']['public']; m['url']['static2_vendor']=m['url']['public_plugins']; m['url']['static2_plugin']=m['url']['public_web_register']; m['url']['uiv2']=m['url']['public_web']; m['url']['uiv2_css']=m['url']['public_web_css']; m['url']['uiv2_js']=m['url']['public_web_js']; m['url']['uiv2_plugin']=m['url']['public_plugins']; // 插件路径 m['plugin']=[]; m['plugin']['formvalidation']=[ m['url']['public_plugins']+'formvalidation/formvalidation.min.css', m['url']['public_plugins']+'formvalidation/formvalidation.min.js', m['url']['public_web_js']+'form.js' ]; m['plugin']['datatables']=[ m['url']['public_web_plugins']+'datatables/datatables.bootstrap.min.css', m['url']['public_web_plugins']+'datatables/jquery.datatables.min.js', m['url']['public_web_js']+'datatable.js' ]; m['plugin']['ueditor']=m['url']['public_plugins']+'ueditor/ueditor.all.min.js'; m['plugin']['minicolors']=[ m['url']['public_plugins']+'minicolors/jquery.minicolors.css', m['url']['public_plugins']+'minicolors/jquery.minicolors.min.js' ]; m['plugin']['tokenfield']=[ m['url']['public_plugins']+'bootstrap-tokenfield/bootstrap-tokenfield.min.css', m['url']['public_plugins']+'bootstrap-tokenfield/bootstrap-tokenfield.min.js', m['url']['public_web_register']+'bootstrap-tokenfield.min.js' ]; m['plugin']['ionrangeslider']=[ m['url']['public_plugins']+'ionrangeslider/ion.rangeslider.min.css', m['url']['public_plugins']+'ionrangeslider/ion.rangeslider.min.js' ]; m['plugin']['datetimepicker']=[ m['url']['public_plugins']+'time/jquery.datetimepicker.css', m['url']['public_plugins']+'time/jquery.datetimepicker.js' ]; m['plugin']['select-linkage']=m['url']['public_plugins']+'select-linkage/jquery.cityselect.js'; m['plugin']['alertify']=[ m['url']['public_web_plugins']+'alertify/alertify.min.css', m['url']['public_web_plugins']+'alertify/alertify.js', m['url']['public_web_register']+'alertify.min.js' ]; m['plugin']['selectable']=[ m['url']['public_web_register']+'asselectable.min.js', m['url']['public_web_register']+'selectable.min.js' ]; m['plugin']['fileinput']=[ m['url']['public_fonts']+'glyphicons/glyphicons.min.css', m['url']['public']+'admin_old/plugins/fileinput/css/fileinput.min.css', m['url']['public_web_plugins']+'fileinput/fileinput.min.js' ]; m['plugin']['lazyload']=m['url']['public_plugins']+'jquery-lazyload/jquery.lazyload.min.js'; m['plugin']['hover-dropdown']=m['url']['public_plugins']+'bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js'; m['plugin']['asscrollable']=[ m['url']['public_plugins']+'asscrollable/asscrollable.min.css', m['url']['public_plugins']+'asscrollbar/jquery-asscrollbar.min.js', m['url']['public_plugins']+'asscrollable/jquery-asscrollable.min.js', m['url']['public_web_register']+'asscrollable.min.js' ] m['plugin']['touchspin']=[ m['url']['public_plugins']+'bootstrap-touchspin/bootstrap-touchspin.min.css', m['url']['public_plugins']+'bootstrap-touchspin/bootstrap-touchspin.min.js' ] m['plugin']['masonry']=m['url']['public_plugins']+'masonry/masonry.pkgd.min.js'; m['plugin']['appear']=m['url']['public_plugins']+'jquery-appear/jquery.appear.min.js'; m['plugin']['ladda']=[ m['url']['public_plugins']+'ladda/ladda.min.css', m['url']['public_plugins']+'ladda/spin.min.js', m['url']['public_plugins']+'ladda/ladda.min.js', m['url']['public_web_register']+'ladda.min.js' ]; m['plugin']['webui-popover']=[ m['url']['public_plugins']+'webui-popover/webui-popover.min.css', m['url']['public_plugins']+'webui-popover/jquery.webui-popover.min.js' ]; // 系统功能 $.fn.extend({ // 编辑器 meteditor:function(){ if(!$(this).length) return; var $self=$(this); if(typeof ue_val =='undefined' || typeof textarea_editor_val =='undefined') window.ue_val=window.textarea_editor_val=[]; $.include(m['plugin'][m.met_editor],function(){ $self.each(function(index, val) { var editor_y=parseint($(this).data('editor-y'))||400; index1=$(this).index('textarea[data-plugin="editor"]'); $(this).attr({id:'met-editor'+index1}); if(m.met_editor=='ueditor'){// 百度编辑器 if(ue_val[index1]) ue_val[index1].destroy(); ue_val[index1]=ue.geteditor(val.id,{ scaleenabled:true, // 是否可以拉伸长高,默认false(当开启时,自动长高失效) autofloatenabled:false, // 是否保持toolbar的位置不动,默认true initialframewidth : parseint($(this).data('editor-x'))||'100%', initialframeheight : editor_y, }); }else if(m.met_editor=='editormd'){// markdown编辑器 $(this).text(tomarkdown($(this).text(), {gfm: true})); var id='editormd-'+new date().gettime(); if($('#'+id).length) id+=index; $(this).wrap('
'); ue_val[index1] = editormd(id, { name:$(this).attr('name'), height: editor_y, htmldecode: true, savehtmltotextarea: true, path: m.url.app+'editorswith/editormd/lib/', // emoji:1, imageupload: true, // imageformats: ["jpg", "jpeg", "gif", "png", "bmp", "webp"] }); ue_val[index1].setcontent=function(value){ ue_val[index1].setvalue(tomarkdown(value, {gfm: true})); }; } }); }); }, // 日期时间选择器 metdatetimepicker:function(){ if(!$(this).length) return; $(this).each(function(index, el) { var $self=$(this); $(this).datetimepicker({ lang:m.synchronous=='cn'?'ch':'en', timepicker:$self.attr("data-day-type")==2?true:false, format:$self.attr("data-day-type")==2?'y-m-d h:i:s':'y-m-d', onselectdate:function(ct,$i){ $self.trigger('change'); }, onselecttime:function(ct,$i){ $self.trigger('change'); } }); }); }, // 联动菜单 metcityselect:function(){ if(!$(this).length) return; if(typeof cityselect =='undefined') window.cityselect=[]; $(this).each(function(index){ var option = { url: $(this).attr('data-select-url')?$(this).attr('data-select-url'):m['url']['public_plugins']+'select-linkage/citydata.min.json', prov: $(this).find(".prov").attr("data-checked"), city: $(this).find(".city").attr("data-checked"), dist: $(this).find(".dist").attr("data-checked"), value_key: 'id', nodata: 'none', required:false }; if($(this).hasclass('shop-address-select')){ $.extend(option,{ country:$(this).find(".country").attr("data-checked"), country_name_key:'name', p_name_key:'name', n_name_key:'name', s_name_key:'name', p_children_key:'children', n_children_key:'children', getcityjson:function(json,key){ key=key||0; return json[key]['children']; } }); } cityselect[index]=$(this).cityselect(option); }); }, // 上传文件 metfileinput:function(){ if(!$(this).length) return; var errorfun=function(obj,data){ obj.parents('.file-input').find('.file-preview-thumbnails .file-preview-frame.disabled').remove(); // 显示报错文字 // obj.removeclass('has-success').addclass('has-danger'); // if(!obj.find('small.form-control-label').length) obj.append(''); // obj.find('small.form-control-label').text(data.response.error); }, successfun=function(obj1,data,multiple){ var $obj1=obj1.parents('.input-group').find('input[type="hidden"][name="'+obj1.attr('name')+'"]'), $obj2=obj1.parents('.file-input'), path=''; if(multiple){ path=$obj1.val()?$obj1.val()+','+data.response.path:data.response.path; }else{ path=data.response.path; $obj2.find('.file-preview-thumbnails .file-preview-frame:last-child').prev().remove(); } $obj1.val(path).trigger('change'); // input值更新 // 显示上传成功文字 $obj2.find('.input-group .file-caption-name').html(''+path).attr({title:path}); $obj2.parents('.form-group').removeclass('has-danger').addclass('has-success'); if(!$obj2.parents('.form-group').find('small.form-control-label').length) $obj2.parents('.form-group').append(''); var tips=m['langtxt'].jsx17||m['langtxt'].fileok; $obj2.parents('.form-group').find('small.form-control-label').text(tips); $('.img-library-modal').attr({'data-update':1}); }; $(this).each(function(index, el) { if(!(typeof met['url']['basepath']!='undefined' || $(this).data('url'))) return; var name=$(this).attr('name'), url=$(this).data('url')||m['url']['system']+'entrance.php?lang='+m['lang']+'&c=uploadify&m=include&a=doupfile&type=1', multiple=typeof $(this).attr('multiple') !='undefined'?true:false, minfilecount=$(this).data('fileinput-minfilecount')||1, maxfilecount=$(this).data('fileinput-maxfilecount')||20, maxfilesize=$(this).data('fileinput-maxfilesize')||0, accept=$(this).attr('accept')||'', format='', initialpreview=[], dropzoneenabled=$(this).data('drop-zone-enabled')=='false'?false:true, value=$(this).attr('value'); if(typeof value !='undefined' && value!='' && (value.indexof('.png')>=0||value.indexof('.jpeg')>=0||value.indexof('.jpg')>=0||value.indexof('.bmp')>=0||value.indexof('.gif')>=0||value.indexof('.ico')>=0)){ if(value.indexof(',')>=0){ value=value.split(','); }else{ value=[value]; } $.each(value, function(index, val) { var html='' +''; initialpreview.push(html); }); } if(accept){ if(accept.indexof(',')>=0){ accept=accept.split(','); }else{ accept=[accept]; } $.each(accept, function(index, val) { val=val.indexof('/')>=0?val.split('/')[1]:''; if(val.indexof('x-')>=0) val=val.replace('x-',''); switch(val){ case 'icon': val='ico'; break; case 'jpeg': val='jpg'; break; case '*': val=''; break; } if(val){ if(format) format+='|'; format+=val; } }); if(accept=='image/*') format='jpg|jpeg|png|bmp|gif|webp|ico'; } if(format) url+='&format='+format; var allowedfileextensions=format?(format.indexof('|')?format.split('|'):[format]):''; $(this).removeattr('hidden').fileinput({// fileinput插件 uploadurl: url, // 处理上传 uploadasync:multiple, // 异步批量上传 allowedfileextensions:allowedfileextensions,// 接收的文件后缀 minfilecount:minfilecount, maxfilecount:maxfilecount, maxfilesize:maxfilesize, language:typeof m.synchronous!='undefined'?(m.synchronous=='cn'?'zh':'en'):'zh',// 语言文字 initialpreview:initialpreview, initialcaption:value, // 初始化输入框值 showcaption:false, // 输入框 // showremove:false, // 删除按钮 // browselabel:'', // 按钮文字 showupload:false, // 上传按钮 dropzoneenabled:dropzoneenabled,// 是否显示拖拽区域 // browseclass:"btn btn-primary", //按钮样式 }).on("filebatchselected", function(event, files) { $(this).fileinput("upload"); }).on('filebatchuploadsuccess', function(event, data, previewid, index) {// 同步上传成功结果处理 successfun($(this),data,multiple); }).on('fileuploaded', function(event, data, previewid, index) {// 异步上传成功结果处理 successfun($(this),data,multiple); }).on('filebatchuploaderror', function(event, data, previewid, index) {// 同步上传错误结果处理 errorfun($(this),data); }).on('fileuploaderror', function(event, data, previewid, index) {// 异步上传错误结果处理 errorfun($(this),data); }); if(!$(this).parents('form').find('input[type="hidden"][name="'+name+'"]').length) $(this).after(''); // $(this).siblings('i').attr({class:'icon wb-upload'}).parents('.btn-file').insertafter($(this).parents('.file-input')); }); // 删除图片后图片路径数据更新 if(typeof fileinput_remove=='undefined'){ window.fileinput_remove=1; // 删除图片后图片路径数据更新 $(document).on('click', '.file-input .file-preview-thumbnails .file-preview-frame .kv-file-remove,.fileinput-remove', function(event) { event.preventdefault(); var $file_input=$(this).parents('.file-input'), $file=$file_input.find('input[type="file"]'), name=$file.attr('name'), multiple=typeof $file.attr('multiple') !='undefined'?true:false, $input_name=$file_input.find('input[type="hidden"][name="'+name+'"]'), input_value=$input_name.val(), $caption_name=$file_input.find('.input-group .file-caption-name'); if(input_value){ if($(this).hasclass('kv-file-remove')){ var $parents=$(this).parents('.file-preview-frame'), active=$parents.index(), path=''; settimeout(function(){ var input_value=$input_name.val(); if($parents.length) $parents.remove(); if(multiple){ if(input_value){ if(input_value.indexof(',')>=0){ input_value=input_value.split(','); }else{ input_value=[input_value]; } $.each(input_value, function(index, val) { if(index!=active) path=path?path+','+val:val; }); } }else{ var $file_preview_frame=$file_input.find('.file-preview-thumbnails .file-preview-frame'); path=$file_preview_frame.length?$file_preview_frame.find('img').attr('src'):''; } if(path){ if($input_name.val()) $input_name.val(path).trigger('change'); // input值更新 }else if(multiple && !$file_input.find('.file-drop-zone-title').length){ $file_input.find('.fileinput-remove').click(); } $caption_name.html(''+path).attr({title:path}); },1000) if(!multiple) $file_input.find('.fileinput-remove').click(); }else{ $input_name.val('').trigger('change'); // input值更新 $caption_name.html('').removeattr('title'); } $(this).parents('form-group').removeclass('has-success').find('small.form-control-label').remove(); } }); // 图片库-点击按钮 $(document).on('click', '.file-input .fileinput-file-choose', function(event) { if(!$('.img-library-modal').length){ var html=''; $('body').append(html); $('.img-library-modal').modal(); } $('.img-library-modal button[type="submit"]').attr({'data-id':$(this).parents('.file-input').find('input[type="file"]').attr('id')}); }); // 图片库-弹框 $(document).on('show.bs.modal', '.img-library-modal', function(event) { if($(this).attr('data-update')){ var $loader=$('.img-library-loader',this), $list=$('.img-library-list',this); $loader.show(); $list.html(''); $.ajax({ url: '/api/upload/getfilelist', type: 'post', datatype: 'json', success:function(result){ if(parseint(result.status)){ var html=''; $.each(result.data, function(index, val) { val.fsize=parseint(val.fsize/1024)+'kb'; html+='
  • ' +'' +'5?'data-original':'src')+'="'+val.fpath+'" class="vertical-align-middle"/>' +'' +'' +'
  • '; }); if(!html) html='
    暂无可选择图片,请上传图片
    '; $loader.hide(); $list.html(html).find('[data-original]').metlazyload({container:'.img-library-body'}); $('.img-library-modal').removeattr('data-update'); } } }); }else{ $('.img-library-modal .img-library-list li a').removeclass('active'); } }); // 图片库-选择图片 $(document).on('click', '.img-library-modal .img-library-list li a', function(event) { var multiple=$('.file-input #'+$('.img-library-modal button[type="submit"]').attr('data-id')).attr('multiple')?true:false; $(this).toggleclass('active'); if(!multiple) $(this).parents('li').siblings('li').find('a').removeclass('active'); }) // 图片库-提交 $(document).on('click', '.img-library-modal button[type="submit"]', function(event) { var $self=$(this), $img_library_modal=$('.img-library-modal'), img_url=''; $img_library_modal.find('.img-library-list li a.active img').each(function(index, el) { img_url+=(index?',':'')+$(this).attr('src'); }); metalertifyloadfun(function(){ if(img_url){ $('.file-input #'+$self.attr('data-id')).metfileinputchange(img_url); $img_library_modal.modal('hide'); alertify.success('图片选择成功'); }else{ alertify.error('请选择图片'); } }); }); // 外部图片-弹框 $(document).on('click', '.file-input .fileinput-file-other', function(event) { if(!$('.img-other-modal').length){ var html=''; $('body').append(html); $('.img-other-modal').modal(); } $('.img-other-modal [name="img_url"]').val(''); $('.img-other-modal button[type="submit"]').attr({'data-id':$(this).parents('.file-input').find('input[type="file"]').attr('id')}); }); // 外部图片-提交 $(document).on('click', '.img-other-modal button[type="submit"]', function(event) { var $self=$(this), $img_other_modal=$('.img-other-modal'), img_url=$img_other_modal.find('[name="img_url"]').val(); metalertifyloadfun(function(){ if(img_url){ $('.file-input #'+$self.attr('data-id')).metfileinputchange(img_url); $img_other_modal.modal('hide'); alertify.success('图片添加成功'); }else{ alertify.error('请输入外部图片链接'); $img_other_modal.find('[name="img_url"]').focus(); } }); }); } }, // 上传图片组件改变值 metfileinputchange:function(img_url){ var $file_input=$(this).parents('.file-input'), name=$(this).attr('name'), html='', img_urls=img_url.indexof(',')>=0?img_url.split(','):[img_url]; if($(this).attr('multiple')){ var old_val=$file_input.find('input[type="hidden"][name="'+name+'"]').val(); if(old_val){ old_val=old_val.indexof(',')>=0?old_val.split(','):[old_val]; img_url=old_val+','+img_url; }else{ old_val=[]; } if(old_val!=img_urls) img_urls=old_val.concat(img_urls); } $.each(img_urls, function(index, val) { html+='
    ' +'' +'' +'
    '; }); if(html && $file_input.hasclass('file-input-new')) $file_input.removeclass('file-input-new'); $file_input.find('.file-drop-zone .file-drop-zone-title').remove(); $file_input.find('.file-preview-thumbnails').html(html); $file_input.find('.input-group .file-caption-name').html(''+img_url).attr({title:img_url}); $file_input.find('input[type="hidden"][name="'+name+'"]').val(img_url).trigger('change'); }, // 单选、多选默认选中 metradiocheckboxchecked:function(){ if(!$(this).length) return; $(this).each(function(index, el) { var checked=string($(this).attr('data-checked')), delimiter=$(this).data('delimiter')||'#@met@#'; if(checked !='undefined'){ checked=checked.indexof(delimiter)>=0?checked.split(delimiter):[checked]; var name=$(this).attr('name'); $(this).parents('form').find('input[name="'+name+'"]').removeattr('checked'); for (var i=0; i < checked.length; i++) { $(this).parents('form').find('input[name="'+name+'"][value="'+checked[i]+'"]').attr('checked', true).prop({checked:true}); } } }); }, // 下拉菜单默认选中 metselectchecked:function(){ if(!$(this).length) return; $(this).each(function(index, el) { $('option[value="'+$(this).attr('data-checked')+'"]',this).attr({selected:true}); }); }, // 图片延迟加载 metlazyload:function(options){ if(!$(this).length) return; var $self=$(this); metfileloadfun(m['plugin']['lazyload'],function(){ return typeof $.fn.lazyload=='function'; },function(){ $self.lazyload(options); }); }, // 表单删除按钮ajax提交 metformajaxdel:function(url){ var $form=$(this).parents('form'), del_id=$form.find('[name="all_id"]')?$form.find('[name="all_id"]').val():''; if(del_id!=''){ $.ajax({ url: $(this).data('url')||$form.attr('action'), type: "post", datatype:'json', data:{del_id:del_id}, success: function(result){ metajaxfun({result:result}); } }); }else{ metalert(metlang.jslang3,'','bgshow',0); } }, // 表单两种类型提交前的处理(保存、删除) metsubmit:function(type){ // 插入submit_type字段 var type=typeof type!='undefined'?type:1, type_str=type?'save':'delet'; if($(this).find('[name="submit_type"]').length){ $(this).find('[name="submit_type"]').val(type_str); }else $(this).append(''); // 插入表格的all_id字段 if($(this).find('table').length){ var $table=$(this).find('table'), checked_str=type?'':':checked', $checkbox=$table.find('tbody input[type="checkbox"][name="id"]'+checked_str), all_id=''; $checkbox.each(function(index, el) { all_id+=all_id?','+$(this).val():$(this).val(); }) if(!$(this).find('[name="all_id"]').length) $(this).append(''); $(this).find('[name="all_id"]').val(all_id); } }, // 表单更新验证 metformaddfield:function(name){ var $form=$(this)[0].tagname=='form'?$(this):$(this).parents('form'); if($form.length){ if(name){ if(!$.isarray(name)){ if(name.indexof(',')>=0){ name=name.split(','); }else name=[name]; } $.each(name, function(index, val) { $form.data('formvalidation').addfield(val); }) }else{ var name_array=[]; $('[name]',this).each(function(index, el) { var name=$(this).attr('name'); if($.inarray(name, name_array)<=0){ name_array.push(name); if(typeof $(this).attr('required') !='undefined'){ $form.data('formvalidation').addfield(name); }else{ $.each($(this).data(), function(index, val) { var third_str=index.substr(2,1); if(index.substr(0,2)=='fv' && index.length>2 && third_str >= 'a' && third_str <= 'z'){ $form.data('formvalidation').addfield(name); return false; } }); } } }); } } }, // 点击ajax请求弹出确认框后以及返回结果通用处理 metclickconfirmajax:function(default_options){ var default_options = $.extend({ ajax_data:'', true_text:metlang.confirm, false_text:metlang.cancel, confirm_text:metlang.delete_information, true_fun:function(){ var url=typeof this.url=='function'?this.url():this.url, ajax_data=typeof this.ajax_data=='function'?this.ajax_data():this.ajax_data, options_this=this; $.ajax({ url: url, type: ajax_data?'post':'get', datatype: 'json', data:ajax_data, success:function(result){ options_this.ajax_fun(result); } }); }, false_fun:'', ajax_fun:function(result){ metajaxfun({result:result}); } },default_options); $(document).on('click', this.selector, function(event) { var options = $.extend({ el:$(this), url:$(this).data('url') },default_options); metalertifyloadfun(function(){ var confirm_text=typeof options.confirm_text=='function'?options.confirm_text():options.confirm_text; alertify.okbtn(options.true_text).cancelbtn(options.false_text).confirm(confirm_text, function (ev) { options.true_fun(); },function(){ if(typeof options.false_fun=='function') options.false_fun(); }); }) }); }, // 通用功能开启 metcommon:function(){ var dom=this; // 表单验证 if($('form',dom).length){ if(typeof validate =='undefined'){ $.include(m['plugin']['formvalidation']); }else{ $(dom).metvalidate(); } } // ajax表格 if($('.datatable',dom).length){ if(typeof datatable =='undefined'){ $.include(m['plugin']['datatables']); }else{ $(dom).metdatatable(); } } // 编辑器 if($('textarea[data-plugin="editor"]',dom).length && typeof met['url']['basepath']!='undefined') $('textarea[data-plugin="editor"]',dom).meteditor(); // 颜色选择器 if($('input[data-plugin="minicolors"]',dom).length) $.include(m['plugin']['minicolors'],function(){ $('input[data-plugin="minicolors"]',dom).minicolors(); }); // 标签 if($('input[data-plugin="tokenfield"]',dom).length) $.include(m['plugin']['tokenfield'],'','siterun'); // 滑块 if($('input[type="text"][data-plugin="ionrangeslider"]',dom).length) $.include(m['plugin']['ionrangeslider'],'','siterun'); // 日期选择器 if($('input[data-plugin="datetimepicker"]',dom).length) $.include(m['plugin']['datetimepicker'],function(){ $('input[data-plugin="datetimepicker"]',dom).metdatetimepicker(); }); // 联动菜单 if($('[data-plugin="select-linkage"]',dom).length) $.include(m['plugin']['select-linkage'],function(){ $('[data-plugin="select-linkage"]',dom).metcityselect(); }); // 模态对话框 if($('[data-plugin="alertify"]',dom).length) $.include(m['plugin']['alertify'],'','siterun'); // 全选、全不选 if($('[data-plugin="selectable"]',dom).length) $.include(m['plugin']['selectable'],'','siterun'); // 上传文件 if($('input[type="file"][data-plugin="fileinput"]',dom).length) $.include(m['plugin']['fileinput'],function(){ $('input[type="file"][data-plugin="fileinput"]',dom).metfileinput(); }) // 滚动条 if($('[data-plugin="scrollable"]',dom).length) $.include(m['plugin']['asscrollable'],'','siterun'); // 单选、多选默认选中 if($('input[data-checked]',dom).length) $('input[data-checked]',dom).metradiocheckboxchecked(); // 下拉菜单默认选中 if($('select[data-checked]',dom).length) $('select[data-checked]',dom).metselectchecked(); // 数量改变 if($('[data-plugin="touchspin"]',dom).length && typeof $.fn.touchspin =='undefined') $.include(m['plugin']['touchspin'],function(){ $('[data-plugin="touchspin"]',dom).touchspin(); }); // 图片延迟加载 if($('[data-original]',dom).length && dom!=document) $('[data-original]',dom).metlazyload(); } }); // 通用功能开启 $(document).metcommon(); // 勾选开关 $(document).on('change', 'input[type="checkbox"][data-plugin="switchery"]', function(event) { var val=$(this).is(':checked')?1:0; $(this).val(val); }); // tokenfield插件输入框值更新后 $(document).on('change', '.tokenfield .token-input', function(event) { $(this).parents('.tokenfield').find('[name][data-fv-field]').trigger('change'); }); $(function(){ // 非前台模板页面-兼容老模板 if(m['url']['basepath'] || $('script[src*="js/basic_web.js"]').length){ // 返回顶部 $(".met-scroll-top").click(function(){ $('html,body').animate({scrolltop:0},300); }); // 返回顶部按钮显示/隐藏 var wh=$(window).height(); $(window).scroll(function(){ if($(this).scrolltop()>wh){ $(".met-scroll-top").removeattr('hidden').addclass("animation-slide-bottom"); }else{ $(".met-scroll-top").attr({hidden:''}).removeclass('animation-slide-bottom'); } }); } // 会员侧栏手机端当前页面标题显示在导航徒步 breakpoints.on('xs sm',{ enter:function(){ if($('.met-sidebar-nav-active-name').length) $('.met-sidebar-nav-active-name').html($('.met-sidebar-nav-mobile .dropdown-menu .dropdown-item.active').text()); } }) // 在&pageset=1弹窗中时,页面的表单提交地址添加参数pageset=1 if(getquerystring('pageset')) $('form').each(function(index, el) { if($(this).attr('action')) $(this).attr({action:$(this).attr('action')+'&pageset=1'}); }); // 下拉展开时下拉图标旋转 $(document).on('click', '[data-toggle="collapse"]', function(event) { var $icon=$('.icon[class*="fa-angle-"]',this); if($icon.length){ if(!$icon.hasclass('transition500')) $icon.addclass('transition500'); if($($(this).data('target')).height()){ $icon.removeclass('fa-rotate-90'); }else{ $icon.addclass('fa-rotate-90'); } } }); // 表单功能 // 添加项 $(document).on('click', '[table-addlist]', function(event) { var $self=$(this), $table=$(this).parents('table').length?$(this).parents('table'):$($(this).data('table-id')), addlist=function(data){ $table.find('tbody').append(data); var $new_tr=$table.find('tbody tr:last-child'); if(!$new_tr.find('[table-cancel]').length && typeof $self.data('nocancel')=='undefined') $new_tr.find('td:last-child').append(''); // 添加表单验证 $new_tr.metformaddfield(); }; if($table.find('[table-addlist-data]').length){ var html=$table.find('[table-addlist-data]').val(); addlist(html); }else{ if(typeof datatable_option=='undefined') window.datatable_option=[]; var datatable_index=$table.index('.datatable'); if(typeof datatable_option[datatable_index]=='undefined') datatable_option[datatable_index]=[]; if(typeof datatable_option[datatable_index]['new_id']=='undefined'){ datatable_option[datatable_index]['new_id']=0; }else{ datatable_option[datatable_index]['new_id']++; } $.ajax({ url: $(this).data('url'), type: 'post', data:{new_id:datatable_option[datatable_index]['new_id']}, success:function(result){ addlist(result); } }); } }); // 撤销项 $(document).on('click', '[table-cancel]', function(event) { $(this).parents('tr').remove(); }) // 删除项-不提交 $(document).on('click', '[table-del]', function(event) { var $self=$(this), remove=function(){ alertify.theme('bootstrap').okbtn(metlang.confirm).cancelbtn(metlang.cancel).confirm(metlang.delete_information, function (ev) { $self.parents('tr').remove(); }) }; metalertifyloadfun(function(){ remove(); }); }) // 点击保存按钮 $(document).on('click', 'form .btn[type="submit"]', function(event) { if($(this).data('plugin')=='alertify' && $(this).data('type')=='confirm') event.preventdefault(); $(this).parents('form').metsubmit(); }) // 删除多项提交 $(document).on('click', '[table-delet]', function(event) { event.preventdefault(); var $form=$(this).parents('form'); $form.metsubmit(0); if($(this).data('plugin')!='alertify'){ if($(this).data('url')){ $(this).metformajaxdel(); }else $form.submit(); } }) // 表单输入框回车时,触发提交按钮 $(document).on('keydown', 'form input[type="text"]', function(event) { if(event.keycode==13){ event.preventdefault(); $(this).parents('form').find('[type="submit"]:not(.fv-hidden-submit)').click(); } }); // 表单提交 $(document).on('submit', 'form', function(event) { // 提交删除时没有勾选时提示 if($(this).find('[name="submit_type"]').length && $(this).find('[name="submit_type"]').val()=='delet' && $(this).find('[name="all_id"]').val()==''){ event.preventdefault(); metalert(metlang.jslang3,'','bgshow',0); } }); }); // 判断是否加载了formvalidation后回调 function metformvalidationloadfun(fun){ metfileloadfun(m['plugin']['formvalidation'],function(){ return typeof $.fn.metvalidate=='function'; },function(){ if(typeof fun=='function') fun(); }); } // 判断是否加载了alertify后回调 function metalertifyloadfun(fun){ metfileloadfun(m['plugin']['alertify'],function(){ return typeof alertify!='undefined'; },function(){ if(typeof fun=='function') fun(); }); } // ajax请求返回后通用处理 function metajaxfun(options){ options = $.extend({ result:'', false_fun:'', true_fun:'', status_key:'status', msg_key:'msg', true_val:function(){ return parseint(options.result[options.status_key]); } },options); metalertifyloadfun(function(){ if(options.true_val()){ if(typeof options.result[options.msg_key]!='undefined' && options.result[options.msg_key]!='') alertify.success(options.result[options.msg_key]); if(typeof options.true_fun=='function'){ options.true_fun(); }else{ settimeout(function(){ location.reload(); },1000); } }else{ if(typeof options.result[options.msg_key]!='undefined' && options.result[options.msg_key]!='') alertify.error(options.result[options.msg_key]); if(typeof options.false_fun=='function') options.false_fun(); } }); } // 设置cookie function setcookie(name,value,path,term){ var exp = new date(), terms =term||30, paths =path||'/'; exp.settime(exp.gettime() + terms*24*60*60*1000); document.cookie = name + "="+ value + ";path="+paths+";expires=" + exp.togmtstring(); } // 获取指定名称的cookie的值 function getcookie(name) { var cookie_str = document.cookie.split(";"); for (var i = 0; i < cookie_str.length; i++) { cookie_str[i]=$.trim(cookie_str[i]); var index = cookie_str[i].indexof("="), cookie_name = cookie_str[i].substring(0, index); if (cookie_name == name) { var temp = cookie_str[i].substring(index + 1); return decodeuricomponent(temp); } } }