<extend name="Public/base" /> <block name="body"> <link rel="stylesheet" type="text/css" href="__CSS__/admin_table.css" media="all"> <script src="__STATIC__/layer/layer.js" type="text/javascript"></script> <script src="__STATIC__/layer/extend/layer.ext.js" type="text/javascript"></script> <script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script> <link rel="stylesheet" type="text/css" href="__STATIC__/webuploader/webuploader.css" media="all"> <script src="__STATIC__/md5.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="__STATIC__/webuploader/webuploader.js"></script> <div class="cf main-place top_nav_list navtab_list"> <ul class="tabnav1711 fr jstabnav"> <li data-tab="tab1" class="current"><a href="javascript:void(0);">基础信息</a></li> <li data-tab="tab2" ><a href="javascript:void(0);">下载设置</a></li> <li data-tab="tab3" ><a href="javascript:void(0);">参数配置</a></li> </ul> <h3 class="page_title">{$meta_title}</h3> <p class="description_text"></p> </div> <!-- 标签页导航 --> <div class="tab-wrap"> <div class="tab-content tabcon1711 tabcon17112"> <!-- 表单 --> <form id="form" action="{:U('relation')}" method="post" class="form-horizontal"> <!-- 基础 --> <div id="tab1" class="tab-pane in tab1"> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="l">游戏名称:</td> <td class="r" > <input type="text" class="txt" name="game_name" value="{$data['relation_game_name']}" readonly = 'true' style="background:#e7e7e7"> <input type="hidden" name="game_appid" value="{:generate_game_appid()}"> </td> </tr> <tr> <td class="l">游戏类型:</td> <td class="r"> <select id="game_type_id" name="game_type_id" disabled="true" style="background:#e7e7e7"> <volist name=":get_game_type_all()" id="vo"> <if condition="$vo[id] eq $data[game_type_id]"> <option value="{$vo.id}" selected>{$vo.type_name}</option> <else /> <option value="{$vo.id}">{$vo.type_name}</option> </if> </volist> </select> <input type="hidden" id="game_type_name" name="game_type_name" value="{$data['game_type_name']}"> </td> </tr> <tr> <td class="l noticeinfo">运营平台</td> <td class="r table_radio"> <if condition="$data['sdk_version'] eq 2"> <label><input type="radio" class="inp_radio js-device" value="1" name="sdk_version" checked="checked">安卓版</label> <elseif condition="$data['sdk_version'] eq 1"/> <label><input type="radio" class="inp_radio js-device" value="2" name="sdk_version" checked="checked">苹果版</label> </if> <span class="notice-text">显示该游戏所适用的平台,一般为安卓平台和苹果平台</span> </td> </tr> <tr> <td class="l noticeinfo">混服设置</td> <td class="r table_radio"> <span class="form_radio table_btn"> <label> <eq name="data.server_type" value="1"> <input type="radio" class="inp_radio" value="1" name="server_type" checked> 专服 <else/> <input type="radio" class="inp_radio" value="2" name="server_type" checked> 混服 </eq> </label> </span> <span class="notice-text"></span> </td> </tr> <tr> <td class="l noticeinfo">开放类型</td> <td class="r table_radio"> <volist name=":get_opentype_all()" id="vo" > <label> <input type="radio" class="inp_radio" value="{$vo.id}" name="category" <eq name="data.category" value="vo['id']"> checked </eq> readonly = "readonly" style="background:#e7e7e7" > {$vo.open_name} </label> </volist> <span class="notice-text">显示当前游戏的开放状态,一般为公测,删档内测,不删档内测等。主要APP上显示</span> </td> </tr> <tr> <td class="l noticeinfo">显示状态</td> <td class="r table_radio"> <label> <input type="radio" class="inp_radio" value="0" name="game_status" readonly = "readonly" style="background:#e7e7e7" <eq name="data['game_status']" value="0">checked="checked"</eq>> 关闭 </label> <label> <input type="radio" class="inp_radio" value="1" name="game_status" readonly = "readonly" style="background:#e7e7e7" <eq name="data['game_status']" value="1">checked="checked"</eq>> 开启 </label> <span class="notice-text">设置该游戏是否在各个站点显示</span> </td> </tr> <tr> <td class="l noticeinfo">显示站点</td> <td class="r table_radio"> <span class="form_radio table_btn"> <label> <input type="checkbox" class="inp_radio" value="1" name="display_site[]" > PC官网(宽/窄屏) </label> <label> <input type="checkbox" class="inp_radio" value="2" name="display_site[]" > WAP站 </label> <label> <input type="checkbox" class="inp_radio" value="3" name="display_site[]" > 游戏盒子APP </label></span> <span class="notice-text">控制游戏在不同平台上是否进行展示,可多选,默认为全部站点显示。取消选择后,对应站点上不显示该游戏的所有数据(含礼包与开服信息)</span> </td> </tr> <tr> <td class="l noticeinfo">推荐状态</td> <td class="r table_radio"> <label> <input type="radio" class="inp_radio" value="0" name="recommend_status" readonly = "readonly" style="background:#e7e7e7" <eq name="data['recommend_status']" value="0">checked="checked"</eq>> 不推荐 </label> <label> <input type="radio" class="inp_radio" value="1" name="recommend_status" readonly = "readonly" style="background:#e7e7e7" <eq name="data['recommend_status']" value="1">checked="checked"</eq>> 推荐 </label> <label> <input type="radio" class="inp_radio" value="2" name="recommend_status" readonly = "readonly" style="background:#e7e7e7" <eq name="data['recommend_status']" value="2">checked="checked"</eq>> 热门 </label> <label> <input type="radio" class="inp_radio" value="3" name="recommend_status" readonly = "readonly" style="background:#e7e7e7" <eq name="data['recommend_status']" value="3">checked="checked"</eq>> 最新 </label> <span class="notice-text">设置游戏的推荐类型,更改此游戏在PC官网所属的推荐板块</span> </td> </tr> <tr> <td class="l">游戏排序:</td> <td class="r"> <input type="text" class="txt" name="sort" value="{$data['sort']}" readonly = "readonly" style="background:#e7e7e7"> </td> </tr> <tr> <td class="l">游戏下载:</td> <td class="r"> <input type="text" class="txt" name="dow_num" value="{$data['dow_num']}" readonly = "readonly" style="background:#e7e7e7"> </td> </tr> <tr> <td class="l">游戏评分:</td> <td class="r"> <input type="text" class="txt" name="game_score" value="{$data['game_score']}" placeholder="请输入小于10的一位小数" readonly = "readonly" style="background:#e7e7e7"> </td> </tr> <tr> <td class="l">游戏首字母:</td> <td class="r"> <input type="text" class="txt" name="short" value="{$data['short']}" readonly = "readonly" style="background:#e7e7e7"> </td> </tr> <empty name='show_status'> <tr> <td class="l" >游戏简介:</td> <td class="r" colspan="3"> <input type="text" class="txt " name="features" value="{$data['features']}" readonly = "readonly" style="background:#e7e7e7"> </td> </tr> <else/> <tr> <td class="l" >游戏简介:</td> <td class="r" > <input type="text" class="txt " name="features" value="{$data['features']}" readonly = "readonly" style="background:#e7e7e7"> </td> </tr> <tr> <td class="l" >游戏开发商:</td> <td class="r" > <input type="text" class="txt " name="dev_name" value="{$data['dev_name']}" readonly = "readonly" style="background:#e7e7e7"> </td> </tr> </empty> <tr> <td class="l">详细介绍:</td> <td class="r"> <textarea name="introduction" class="txt_area" readonly = "readonly" style="background:#e7e7e7"></textarea> </td> </tr> <tr class="picbox"> <td class="l noticeinfo" >游戏图标</td> <td class="r"> <input type="file" id="upload_picture_icon"> <input type="hidden" name="icon" id="cover_id_icon" value="{$data.icon}" /> <div class="upload-img-box"> <notempty name="data['icon']"> <div class="upload-pre-item"><img src="{$data['icon']|get_cover='path'}"/></div> </notempty> </div> <span class="notice-text">(尺寸:115*115px)上传该游戏的图标</span> </td> </tr> <tr class="picbox"> <td class="l noticeinfo">游戏素材</td> <td class="r"> <div id="uploader" class="wu-example"> <div class="btns"> <div id="picker" style="width: auto;float: left;margin-right: 20px;">上传素材包</div> </div> <!--用来存放文件信息--> <div id="thelist" class="uploader-list" style="float: left;"> <span id="up_status"> <notempty name="data.material_url">已上传</notempty> </span> </div> </div> <span class="notice-text">此处可上传该游戏的素材包,必须为压缩包形式,用于渠道后台下载推广</span> <input type="hidden" id="file_url" name="material_url" value="{$data['material_url']}"/> </td> </tr> <tr class="picbox"> <td class="l noticeinfo">游戏封面</td> <td class="r"> <input type="file" id="upload_picture_cover"> <input type="hidden" name="cover" id="cover_id_cover" value="{$data.cover}" /> <div class="upload-img-box"> <notempty name="data['cover']"> <div class="upload-pre-item"><img src="{$data['cover']|get_cover='path'}"/></div> </notempty> </div> <span class="notice-text">(尺寸:277*176px)当该游戏设置到推荐位时,需要此处上传相关尺寸的游戏封面图</span> </td> </tr> <!--<tr class="picbox"> <td class="l noticeinfo" >游戏详情背景</td> <td class="r"> <input type="file" id="upload_picture_detail"> <input type="hidden" name="game_detail_cover" id="detail_id_icon" value="{$data.game_detail_cover}" /> <div class="upload-img-box"> <notempty name="data['game_detail_cover']"> <div class="upload-pre-item"><img src="{$data['game_detail_cover']|get_cover='path'}"/></div> </notempty> </div> <span class="notice-text">(尺寸:1920*950px)设置该游戏详情页头部大的背景图</span> </td> </tr>--> <tr class="picbox"> <td class="l noticeinfo">游戏截图</td> <td class="r"> {:hook('UploadImages', array('name'=>'screenshot','value'=>$data['screenshot']))} <span class="notice-text">(尺寸:210*350px)上传游戏的截图信息,此处截图在游戏详情页显示</span> </td> </tr> </tbody> </table> </div> <!-- 下载 --> <div id="tab2" class="tab-pane tab2 "> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="l">游戏名称:</td> <td class="r" > <input type="text" class="txt " name="game_name_copy" value="{$data['game_name']}" readonly = "readonly" style="background:#e7e7e7"> </td> </tr> <tr> <td class="l">运营平台:</td> <td class="r" > <if condition="$data['sdk_version'] eq 2"> <label><input type="radio" class="inp_radio js-device" value="1" name="sdk_version_copy" checked="checked" > 安卓版</label> <elseif condition="$data['sdk_version'] eq 1"/> <label><input type="radio" class="inp_radio js-device" value="2" name="sdk_version_copy" checked="checked"> 苹果版</label> </if> </td> </tr> <tr> <td class="l">下载状态:</td> <td class="r" > <label> <input type="radio" class="inp_radio" value="0" name="dow_status"> 关闭 </label> <label> <input type="radio" class="inp_radio" value="1" name="dow_status" checked="checked"> 开启 </label> </td> </tr> <tr> <td class="l">下载端口:</td> <td class="r" > <label> <input type="radio" class="inp_radio" value="0" name="dow_prot" checked="checked"> 官方原包 </label> <label> <input type="radio" class="inp_radio" value="1" name="dow_prot"> 第三方链接 </label> </td> </tr> <tr> <td class="l noticeinfo" > 第三方下载地址(<span id='span_type'>安卓</span>) </td> <td class="r"> <input type="text" class="txt " id="game_address" name="add_game_address" value="" readonly="readonly" style="background:#e7e7e7"> </td> </tr> </tbody> </table> </div> <!-- 设置 --> <div id="tab3" class="tab-pane tab3 "> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="l noticeinfo">CPS分成比例</td> <td class="r"> <input type="text" class="txt" name="ratio" value="{$data['ratio']}" placeholder="分成比例为1~100%(不要输入%)"> <span class="notice-text">此处比例为渠道结算时CPS模式的分成比例</span> </td> </tr> <tr> <td class="l noticeinfo">CPA注册单价</td> <td class="r"> <input type="text" class="txt" name="money" value="{$data['money']}" placeholder="注册单价(元) 大于0的整数"> <span class="notice-text">此处数值为渠道结算时CPA模式的注册单价</span> </td> </tr> <tr> <td class="l noticeinfo">开发者分成比例</td> <td class="r"> <input type="text" class="txt" name="dratio" value="{$data['dratio']}" placeholder="分成比例为1~100%(不要输入%)"> <span class="notice-text">此处比例为开发者结算时的分成比例</span> </td> </tr> <tr> <td class="l noticeinfo">代充折扣</td> <td class="r"> <input type="text" class="txt" name="discount" value="{$data['discount']}" placeholder="代充折扣为1-10"> <span class="notice-text">设置改游戏的统一折扣,渠道后台会长代充时使用</span> </td> </tr> <tr> <td class="l noticeinfo">绑币充值折扣</td> <td class="r"> <input type="text" class="txt" name="bind_recharge_discount" value="{$data['bind_recharge_discount']}" placeholder="绑币充值折扣为1-10"> <span class="notice-text">设置APP游戏的绑币统一折扣,APP充时绑币时使用</span> </td> </tr> <tr> <td class="l noticeinfo">扶持额度</td> <td class="r"> <input type="text" class="txt" name="support_quota" value="0" placeholder="请输入数字"><span class="form_unit"></span> <span class="notice-text">   设置游戏扶持额度</span> </td> </tr> <tr> <td class="l noticeinfo">扶持比例</td> <td class="r"> <input type="text" class="txt" name="support_ratio" value="0" placeholder="请输入0-100之间的数字"><span class="form_unit">%</span> <span class="notice-text">设置游戏扶持比例</span> </td> </tr> <tr> <td class="l noticeinfo">ios版支付方式</td> <td class="r table_radio table_radio2"> <span class="table_btn"> <label> <input type="radio" class="inp_radio" value="1" name="appstatus" checked="checked" readonly = "readonly"> 第三方支付 </label> <label> <input type="radio" class="inp_radio" value="0" name="appstatus" readonly = "readonly"> 苹果内购 </label></span> <span class="notice-text" style="line-height:1.4;width:68%;">ios版游戏内的支付方式,二选一,默认是第三方支付。上架版:选择第三方支付则为wap支付,选择苹果内购则为苹果内购;非上架版:选择第三方支付则为wap支付,选择苹果内购则为app支付。金猪支付下支付宝始终是app支付(订单充值方式记录为支付宝),其它皆为wap支付(订单充值方式记录为金猪支付)</span> </td> </tr> <tr> <td class="l noticeinfo">游戏标示</td> <td class="r"> <input type="text" class="txt disabled" name="marking" value="{:generate_game_appid()}" readonly="readonly" placeholder="游戏唯一标示"> <span class="notice-text">苹果游戏分包时需填写的游戏标示,格式无特别要求</span> </td> </tr> <tr> <td class="l noticeinfo">游戏key</td> <td class="r"> <input type="text" class="txt disabled" name="game_key" value="{$data['game_key']}" placeholder="游戏支付通知时的加密key"> <span class="notice-text">游戏支付通知时的加密key,可自由设置,长度不得超过32位字符串,设置完必须提供给CP方进行同步</span> </td> </tr> <tr> <td class="l noticeinfo">游戏支付通知地址</td> <td class="r" > <input type="text" class="txt disabled" name="pay_notify_url" value="{$data['pay_notify_url']}"> <span class="notice-text">此处功能为平台用户游戏充值时,通知CP方所用该地址由CP方提供</span> </td> </tr> <tr> <td class="l noticeinfo">访问秘钥</td> <td class="r"> <input type="text" class="txt disabled" name="access_key" value="{$data['access_key']}" placeholder="SDK访问服务器时的加密key"> <span class="notice-text">SDK访问服务器是的加密key,可自由设置,长度不得超过32位字符串</span> </td> </tr> <tr> <td class="l noticeinfo">威富通商户号</td> <td class="r"> <input type="text" class="txt disabled" name="partner" value="{$data['partner']}" placeholder="输入威富通商户号"> <span class="notice-text">威富通申请成功以后,威富通方提供的商户号,在此处添加(需要删除,在支付配置里设置即可)</span> </td> </tr> <tr> <td class="l noticeinfo">威富通秘钥</td> <td class="r"> <input type="text" class="txt disabled" name="key" value="{$data['key']}" placeholder="输入威富通秘钥"> <span class="notice-text">威富通申请成功以后,威富通方提供的秘钥,在此处添加(需要删除,在支付配置里设置即可)</span> </td> </tr> <tr> <td class="l noticeinfo">游戏支付appid</td> <td class="r"> <input type="text" class="txt disabled" name="game_pay_appid" value="{$data['game_pay_appid']}" placeholder="微信支付时用的的APPID"> <span class="notice-text">使用微信支付时需要的appid,需要到微信开放平台申请创建,包括官方微信支付和威富通里的微信支付(需要删除,在支付配置里设置即可)</span> </td> </tr> <tr> <td class="l noticeinfo">游戏合作id</td> <td class="r"> <input type="text" class="txt" name="agent_id" value="{$data['agent_id']}"> <span class="notice-text">游戏对接时需要的合作id,此id由CP方提供(此功能根据不同游戏CP确定是否需要使用)</span> </td> </tr> <tr> <td class="l noticeinfo">游戏包名</td> <td class="r"> <input type="text" class="txt disabled" name="apk_pck_name" value="{$data['apk_pck_name']}" placeholder="安卓生成APK时的包名"> <span class="notice-text">在微信开放平台申请创建的应用包名(app.webchat.payment.agree),若无此项可不填写(待定)</span> </td> </tr> <tr> <td class="l noticeinfo">游戏签名</td> <td class="r"> <input type="text" class="txt disabled" name="apk_pck_sign" value="{$data['apk_pck_sign']}" placeholder="安卓生成APK时的签名"> <span class="notice-text">在微信开放平台申请创建的应用签名(fd0e6a444fd988bf23ce8a1818623b58),若无此项可不填写(待定)</span> </td> </tr> </tbody> </table> </div> <div class="form-item cf"> <input type="hidden" name='relation_game_id' value="{$data['relation_game_id']}"></input> <button class="submit_btn ajax-post" id="submit" type="submit" target-form="form-horizontal">确 定</button> <a class="submit_btn " alt="返回上一页" title="返回上一页" href="javascript:window.history.back();" > 返回 </a> </div> </form> </div> </div> </block> <block name="script"> <script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script> <script type="text/javascript"> //导航高亮 highlight_subnav('{:U('Game/lists')}'); Think.setValue("game_type_id", {$data.game_type_id|default = 0}); Think.setValue("category", {$data.category|default = 0}); Think.setValue("display_site[]", [{$data.display_site}]); $('#submit').click(function(){ $('#form').submit(function(){ $("#game_type_id").attr("disabled", false); }); }); $(function(){ $("#game_type_name").val($("#game_type_id option:selected").text()); $('.time').datetimepicker({ format: 'yyyy-mm-dd hh:ii', language:"zh-CN", minView:2, autoclose:true }); $('.date').datetimepicker({ format: 'yyyy-mm-dd', language:"zh-CN", minView:2, autoclose:true }); showTab(); chekcSystemStatus(); }); $("#add_another").click(function() { layer.open({ type: 2, title: '游戏登录记录', shadeClose: true, shade: 0.8, area: ['70%', '80%'], content: url+'admin.php?s=/Game/add_another/id/1111'//iframe的url }); }); /*获取游戏类型名称*/ $("#game_type_id").change(function() { $("#game_type_name").val($("#game_type_id option:selected").text()); }); //上传游戏图标 /* 初始化上传插件 */ $("#upload_picture_icon").uploadify({ "height" : 30, "swf" : "__STATIC__/uploadify/uploadify.swf", "fileObjName" : "download", "buttonText" : "上传图标", "uploader" : "{:U('File/uploadPicture',array('session_id'=>session_id()))}", "width" : 120, 'removeTimeout' : 1, 'fileTypeExts' : '*.jpg; *.jpeg; *.png; *.gif;', "onUploadSuccess" : upload_picture_icon{$field.name}, 'onFallback' : function() { alert('未检测到兼容版本的Flash.'); } }); function upload_picture_icon{$field.name}(file, data){ var data = $.parseJSON(data); var src = ''; if(data.status){ $("#cover_id_icon").val(data.id); src = data.url || '__ROOT__' + data.path; $("#cover_id_icon").parent().find('.upload-img-box').html( '<div class="upload-pre-item"><img src="' + src + '"/></div>' ); } else { updateAlert(data.info); setTimeout(function(){ $('#top-alert').find('button').click(); $(that).removeClass('disabled').prop('disabled',false); },1500); } } //上传游戏封面 /* 初始化上传插件 */ $("#upload_picture_cover").uploadify({ "height" : 30, "swf" : "__STATIC__/uploadify/uploadify.swf", "fileObjName" : "download", "buttonText" : "上传封面", "uploader" : "{:U('File/uploadPicture',array('session_id'=>session_id()))}", "width" : 120, 'removeTimeout' : 1, 'fileTypeExts' : '*.jpg; *.jpeg; *.png; *.gif;', "onUploadSuccess" : upload_picture_cover{$field.name}, 'onFallback' : function() { alert('未检测到兼容版本的Flash.'); } }); function upload_picture_cover{$field.name}(file, data){ var data = $.parseJSON(data); var src = ''; if(data.status){ $("#cover_id_cover").val(data.id); src = data.url || '__ROOT__' + data.path; $("#cover_id_cover").parent().find('.upload-img-box').html( '<div class="upload-pre-item"><img src="' + src + '"/></div>' ); } else { updateAlert(data.info); setTimeout(function(){ $('#top-alert').find('button').click(); $(that).removeClass('disabled').prop('disabled',false); },1500); } } //上传游戏详情背景 /* 初始化上传插件 */ $("#upload_picture_detail").uploadify({ "height" : 30, "swf" : "__STATIC__/uploadify/uploadify.swf", "fileObjName" : "download", "buttonText" : "上传封面", "uploader" : "{:U('File/uploadPicture',array('session_id'=>session_id()))}", "width" : 120, 'removeTimeout' : 1, 'fileTypeExts' : '*.jpg; *.jpeg; *.png; *.gif;', "onUploadSuccess" : upload_picture_detail{$field.name}, 'onFallback' : function() { alert('未检测到兼容版本的Flash.'); } }); function upload_picture_detail{$field.name}(file, data){ var data = $.parseJSON(data); var src = ''; if(data.status){ $("#detail_id_icon").val(data.id); src = data.url || '__ROOT__' + data.path; $("#detail_id_icon").parent().find('.upload-img-box').html( '<div class="upload-pre-item"><img src="' + src + '"/></div>' ); } else { updateAlert(data.info); setTimeout(function(){ $('#top-alert').find('button').click(); $(that).removeClass('disabled').prop('disabled',false); },1500); } } var userInfo = {userId:"kazaff", md5:""}; //用户会话信息 var chunkSize = 5000 * 1024; //分块大小 var uniqueFileName = null; //文件唯一标识符 var md5Mark = null; var backEndUrl = "{:U('File/shard_upload',array('type'=>1,'session_id'=>session_id()))}"; WebUploader.Uploader.register({ "before-send-file" : "beforeSendFile", "before-send" : "beforeSend", "after-send-file" : "afterSendFile" }, { beforeSendFile: function(file){ //秒传验证 var task = new $.Deferred(); var start = new Date().getTime(); (new WebUploader.Uploader()).md5File(file, 0, 10*1024*1024).progress(function(percentage){ //console.log(percentage); }).then(function(val){ //console.log("总耗时: "+((new Date().getTime()) - start)/1000); md5Mark = val; userInfo.md5 = val; $.ajax({ type: "POST" , url: backEndUrl , data: {status: "md5Check", md5: val} , cache: false , timeout: 1000 //todo 超时的话,只能认为该文件不曾上传过 , dataType: "json" }).then(function(data, textStatus, jqXHR){ alert(data.chunk); //console.log(data); if(data.ifExist){ //若存在,这返回失败给WebUploader,表明该文件不需要上传 task.reject(); uploader.skipFile(file); file.path = data.path; }else{ task.resolve(); //拿到上传文件的唯一名称,用于断点续传 uniqueFileName = md5(''+userInfo.userId+file.name+file.type+file.lastModifiedDate+file.size); } }, function(jqXHR, textStatus, errorThrown){ //任何形式的验证失败,都触发重新上传 task.resolve(); //拿到上传文件的唯一名称,用于断点续传 uniqueFileName = md5(''+userInfo.userId+file.name+file.type+file.lastModifiedDate+file.size); }); }); return $.when(task); } , beforeSend: function(block){ //分片验证是否已传过,用于断点续传 var task = new $.Deferred(); $.ajax({ type: "POST" , url: backEndUrl , data: { status: "chunkCheck" , name: uniqueFileName , chunkIndex: block.chunk , size: block.end - block.start } , cache: false , timeout: 1000 //todo 超时的话,只能认为该分片未上传过 , dataType: "json" }).then(function(data, textStatus, jqXHR){ if(data.ifExist){ //若存在,返回失败给WebUploader,表明该分块不需要上传 task.reject(); }else{ task.resolve(); } }, function(jqXHR, textStatus, errorThrown){ //任何形式的验证失败,都触发重新上传 task.resolve(); }); return $.when(task); } , afterSendFile: function(file){ var chunksTotal = 0; if((chunksTotal = Math.ceil(file.size/chunkSize)) > 1){ //合并请求 var task = new $.Deferred(); $.ajax({ type: "POST" , url: backEndUrl , data: { status: "chunksMerge" , name: uniqueFileName , chunks: chunksTotal , ext: file.ext , md5: md5Mark } , cache: false , dataType: "json" }).then(function(data, textStatus, jqXHR){ //todo 检查响应是否正常 task.resolve(); file.path = data.path; $("#file_name").val(data.name); $("#file_url").val(data.path); $("#file_size").val(file.size); }, function(jqXHR, textStatus, errorThrown){ task.reject(); }); return $.when(task); }else{ //UploadComlate(file); } } }); var uploader = WebUploader.create({ // 选完文件后,是否自动上传。 auto: true, // swf文件路径 swf: '__STATIC__/webuploader/Uploader.swf', // 文件接收服务端。 server: backEndUrl, // 选择文件的按钮。可选。 // 内部根据当前运行是创建,可能是input元素,也可能是flash. pick: {id:'#picker'}, //dnd: "#theList", paste: document.body, accept: { title: '压缩包', extensions: 'rar,zip', mimeTypes: '.rar,.zip', }, // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传! resize: false, disableGlobalDnd: true, fileNumLimit:1, threads:3, compress: false, prepareNextFile: true, formData: function(){return $.extend(true, {}, userInfo);}, duplicate:true, chunked:true, chunkSize: 5*1000*1024, duplicate: true }); // 当有文件被添加进队列的时候 uploader.on( 'fileQueued', function( file ) { $("#up_status").remove(); $("#thelist").append( '<div id="' + file.id + '" class="item">' + '<h4 class="info">' + file.name + '</h4>' + '<p class="state">等待上传...</p>' + '</div>' ); }); // 文件上传过程中创建进度条实时显示。 uploader.on( 'uploadProgress', function( file, percentage ) { var $li = $( '#'+file.id ), $percent = $li.find('.progress .progress-bar'); // 避免重复创建 if ( !$percent.length ) { $percent = $('<div class="progress progress-striped active">' + '<div class="progress-bar" role="progressbar" style="width: 0%">' + '</div>' + '</div>').appendTo( $li ).find('.progress-bar'); } $li.find('p.state').text('上传中'); $percent.css( 'width', percentage * 100 + '%' ); $percent.text( (percentage * 100).toFixed(0) + '%' ); }); uploader.on( 'uploadSuccess', function( file , response) { $( '#'+file.id ).find('p.state').text('已上传'); //alert(JSON.stringify(response)); if(!response.chunk){ var url = response.path + "/" +response.name; // $("#file_name").val(response.name); $("#file_url").val(url); // $("#file_size").val(response.size); } //alert($("#file_name").val()+";"+$("#file_url").val()+";"+$("#file_size").val()) }); uploader.on( 'uploadError', function( file ) { $( '#'+file.id ).find('p.state').text('上传出错'); }); uploader.on( 'uploadComplete', function(file) { $( '#'+file.id ).find('.progress').fadeOut(); }); $('input:radio[name="dow_prot"]').change( function() { var radio = document.getElementsByName("dow_prot"); var radioLength = radio.length; for(var i = 0;i < radioLength;i++) { if(radio[i].checked) { var radioValue = radio[i].value; } } if(radioValue == 0){ $('#game_address').attr("readonly",true); $('#game_address').attr('style',"background:#e7e7e7"); }else{ $('#game_address').removeAttr("readonly"); $('#game_address').attr('style'," "); } }) //根据关联游戏的系统版本设置相关控件的属性 function chekcSystemStatus(){ var status ={$data['sdk_version']}; switch(status){ case 1://安卓 $("#game_address").attr("name","ios_game_address"); $("input[name='appstatus'][value=1]").removeAttr("disabled"); $("input[name='appstatus'][value=0]").removeAttr("disabled"); break; case 2://苹果 $("#game_address").attr("name",'add_game_address'); $("input[name='appstatus'][value=1]").prop("disabled",true); $("input[name='appstatus'][value=0]").prop("disabled",true); $("input[name='appstatus'][value=0]").prop("checked",true); break; } } </script> </block>