You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

452 lines
16 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<extend name="Public/base" />
<block name="css">
<link rel="stylesheet" type="text/css" href="__STATIC__/bootstrap.min.css" media="all">
<link rel="stylesheet" type="text/css" href="__CSS__/admin_table.css" media="all">
<link rel="stylesheet" type="text/css" href="__STATIC__/webuploader/webuploader.css" media="all">
</block>
<block name="body">
<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">
<h3 class="page_title">更新原包</h3>
<p class="description_text"></p>
</div>
<!-- 标签页导航 -->
<div class="tab-wrap">
<div class="tab-content tabcon1711">
<!-- 表单 -->
<form id="form" action="{:U('edit')}" method="post" class="form-horizontal">
<!-- 基础文档模型 -->
<div id="tab1" class="tab-pane in tab1">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr class="picbox">
<td class="l">文件包:</td>
<td class="r">
<div id="uploader" class="wu-example">
<div class="btns">
<div id="picker" >选择文件</div>
</div>
<!--用来存放文件信息-->
<div id="thelist" class="uploader-list">
</div>
</div>
<input type="hidden" id="data" name="data" value="000"/>
<input type="hidden" id="file_id" name="file_id" value="{$data['file_id']}"/>
<input type="hidden" id="file_name" name="file_name" value="{$data['file_name']}"/>
<input type="hidden" id="file_exit" name="file_exit" value="0"/>
<input type="hidden" id="file_url" name="file_url" value="{:str_replace('/'.$data['file_name'],'',$data['file_url'])}"/>
<input type="hidden" id="file_size" name="file_size" value="{$data['file_size']*1024*1024}"/>
</td>
</tr>
<if condition="($data['id'] eq 4) OR ($data['id'] eq 6)">
<tr>
<td class="l"><i class="mustmark">*</i>包名:</td>
<td class="r">
<input type="text" class="txt" name="bao_name" value="">
<input type="hidden" name="old_bao_name" value="{$data['bao_name']}">
</td>
</tr>
</if>
<tr>
<td class="l">备注:</td>
<td class="r">
<textarea name="remark" class="txt_area">{$data.remark}</textarea>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-item cf">
<input type="hidden" name="id" value="{$data.id}">
<button class=" ajax-post submit_btn mlspacing " id="submit" type="submit" target-form="form-horizontal">确 定</button>
</div>
</form>
</div>
</div>
<div class="common_settings">
<span class="plus_icon"><span><img src="__IMG__/zwmimages/icon_jia.png"></span></span>
<form class="addShortcutIcon">
<input type="hidden" name="title" value="{$m_title}">
<input type="hidden" name="url" value="App/lists">
</form>
<a class="ajax-post add-butn <notempty name='commonset'>addSIsetted</notempty>" href="javascript:;" target-form="addShortcutIcon" url="{:U('Think/addShortcutIcon')}"><img src="__IMG__/zwmimages/icon_jia.png"><span><notempty name='commonset'>已添加<else />添加至常用设置</notempty></span></a>
</div>
</block>
<block name="script">
<script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" src="__STATIC__/layer/layer.js"></script>
<script type="text/javascript">
//导航高亮
highlight_subnav('{:U('App/lists')}');
/*$('#submit').click(function(){
$('#form').submit();
});*/
/*$('#submit').click(function(){
//$('#form').submit();
var that = $(this),form = $('.'+$.trim(that.attr('target-form')));
that.addClass('disabled').attr('autocomplete','off').prop('disabled',true);
$.ajax({
type:'post',
dataType:'json',
url:form.attr('action'),
data:form.serialize(),
success:function(data) {
if (data.status==1) {
updateAlert(data.info);
var url = data.url;
var tip = $('#tip');console.log('dddd');
setTimeout(function(){
tip.find('.tipinfo').text('正在打包...');
setTimeout(function(){
$.ajax({
type:'get',
dataType:'json',
url:'{:U("app_package",array("id"=>$data["id"]))}',
data:'',
success:function(result) {console.log(result);
if (data.status == 1) {
tip.removeClass('tip_error tip_right').addClass('tip_right').find('.tipinfo').text(result.info);
setTimeout(function(){
that.removeClass('disabled').prop('disabled',false);
if (url) {
location.href=url;
}else if( that.hasClass('no-refresh')){
tip.find('.tipclose').click();
}else{
location.reload();
}
},2000);
} else {
tip.removeClass('tip_error tip_right').addClass('tip_error').find('.tipinfo').text(result.info);
setTimeout(function(){
that.removeClass('disabled').prop('disabled',false);
if (url) {
location.href=url;
}else{
tip.find('.tipclose').click();
}
},1500);
}
},
error:function() {
tip.removeClass('tip_error tip_right').addClass('tip_error').find('.tipinfo').text('服务器故障,请稍候再试');
setTimeout(function(){
that.removeClass('disabled').prop('disabled',false);
$('#tip').find('.tipclose').click();
},1500);
}
});},1500);
},1500);
}else {
updateAlert(data.info,'tip_error');
setTimeout(function(){
that.removeClass('disabled').prop('disabled',false);
if (data.url) {
location.href=data.url;
}else{
$('#tip').find('.tipclose').click();
}
},1500);
}
},
error:function(){
updateAlert('服务器故障,请稍候再试','tip_error');
setTimeout(function(){
that.removeClass('disabled').prop('disabled',false);
$('#tip').find('.tipclose').click();
},1500);
},
});
return false;
});
*/
app_version="{:I('app_version')}";
if(app_version==1){
var apptype='apk';
}else{
var apptype='ipa';
}
$(function(){
$("#game_name").val($("#game_id option:selected").text());
$('.date').datetimepicker({
format: 'yyyy-mm-dd',
language:"zh-CN",
minView:2,
autoclose:true
});
$('.time').datetimepicker({
format: 'yyyy-mm-dd hh:ii',
language:"zh-CN",
minView:2,
autoclose:true
});
showTab();
});
var userInfo = {userId:"kazaff", md5:""}; //用户会话信息
var chunkSize = 5000 * 1024; //分块大小
var uniqueFileName = null; //文件唯一标识符
var md5Mark = null;
var backEndUrl = "{:U('Files/app_upload',array('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){
//layer.msg(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);
var pathurl = data.path+'/'+data.name;
var appv = "{:I('app_version')}";
//todo 检查响应是否正常
task.resolve();
file.path = data.path;
/*$.ajax({
url:'{:U("get_app_pack")}',
data:{source_url:pathurl,sdk_version:appv},
success:function(data){
if(data.status!=1){
updateAlert(data.info);
setTimeout(function(){
$('#tip').find('.tipclose').click();
},1500);
}else{
$('input[name="disversion"]').val(data.data);
$('input[name="version"]').val(data.data);
$("#file_name").val(data.newpath);
}
},errro:function(){
updateAlert('服务器错误,请稍后再试');
setTimeout(function(){
$('#tip').find('.tipclose').click();
},1500);
}
})*/
$("#file_name").val(data.name);
$("#file_url").val(data.path);
$("#file_size").val(file.size);
$("#file_exit").val(1);
}, 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: "{:U('Files/app_upload',array('session_id'=>session_id()))}",
// 选择文件的按钮。可选。
// 内部根据当前运行是创建可能是input元素也可能是flash.
pick: {id:'#picker'},
//dnd: "#theList",
paste: document.body,
// 不压缩image, 默认如果是jpeg文件上传前会压缩一把再上传
resize: false,
accept:{extensions: apptype,mimeTypes:'.'+apptype},
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 ) {
$("#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){
//$("#file_name").val(response.name);
//$("#file_url").val(response.path);
//$("#file_size").val(response.size);
var pathurl = response.path+'/'+response.name;
/*var appv = "{:I('app_version')}";
$.ajax({
url:'{:U("get_app_pack")}',
data:{source_url:pathurl,sdk_version:appv},
success:function(data){
if(data.status!=1){
updateAlert(data.info);
setTimeout(function(){
//location.href = location.href;
// $('#tip').find('.tipclose').click();
},1500);
}else{
$('input[name="disversion"]').val(data.data);
$('input[name="version"]').val(data.data);
$("#file_name").val(data.newpath);
}
},errro:function(){
updateAlert('服务器错误,请稍后再试');
setTimeout(function(){
location.href = location.href;
// $('#tip').find('.tipclose').click();
},1500);
}
})*/
$("#file_url").val(response.path);
$("#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();
});
//plist上传
// var Plist = uploader;
// Plist.create({pick:{'id':'#picker_plist'}})
</script>
</block>