236 lines
11 KiB
HTML
236 lines
11 KiB
HTML
<include file="Update:top"/>
|
||
<div class="Refresh Refreshing" id="app">
|
||
<div class="Refresh_top clearer">
|
||
<div class="Refresh_left fl clearer">
|
||
<div class="Refresh_left_icon fl">
|
||
<div class="fensug">
|
||
<div class="wavenum">
|
||
<b id="denfenjs">{{percent}}%</b>
|
||
</div>
|
||
<div class="waven">
|
||
<div class="wave" :style="'height:'+percent+'%'"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="Refresh_left_txt fl">
|
||
<dd>{{bigTitle}}</dd>
|
||
<dt>{{bigTitleDetail}}</dt>
|
||
</div>
|
||
</div>
|
||
<div class="Refreshing_right fr">已用时:{{timeStr}}</div>
|
||
<div class="Refreshing_schedule" :style="'width:'+percent+'%;'"></div>
|
||
</div>
|
||
<div class="Refresh_bottom">
|
||
<div class="Refresh_bottom_list">
|
||
<div class="bottom_list_title clearer">
|
||
<div class="list_title_icon fl">
|
||
<span class="iconfont"></span>缓存刷新
|
||
</div>
|
||
</div>
|
||
<div class="bottom_list_content clearer">
|
||
<template v-for="(item,index) in taskInc">
|
||
<label :class="'list_content_li fl '+item.className " v-if="item.group==1">
|
||
<div class="content_li_txt">
|
||
<dd class="iconfont" v-html="item.icon"></dd>
|
||
<dt>{{item.name}}</dt>
|
||
<div class="li_txt_bottom li_txt_bottom1"><span :style="'width:'+item.selfPerent+'%'">{{item.selfPerent}}%</span></div>
|
||
<div class="li_txt_bottom li_txt_bottom2">{{item.num}}条</div>
|
||
</div>
|
||
</label>
|
||
</template>
|
||
</div>
|
||
</div>
|
||
<div class="Refresh_bottom_list">
|
||
<div class="bottom_list_title clearer">
|
||
<div class="list_title_icon fl">
|
||
<span class="iconfont"></span>首页/栏目/单页刷新
|
||
</div>
|
||
</div>
|
||
<div class="bottom_list_content clearer">
|
||
<template v-for="(item,index) in taskInc">
|
||
<label :class="'list_content_li fl '+item.className " v-if="item.group==2">
|
||
<div class="content_li_txt">
|
||
<dd class="iconfont" v-html="item.icon"></dd>
|
||
<dt>{{item.name}}</dt>
|
||
<div class="li_txt_bottom li_txt_bottom1"><span :style="'width:'+item.selfPerent+'%'">{{item.selfPerent}}%</span></div>
|
||
<div class="li_txt_bottom li_txt_bottom2">{{item.num}}条</div>
|
||
</div>
|
||
</label>
|
||
</template>
|
||
</div>
|
||
</div>
|
||
<div class="Refresh_bottom_list">
|
||
<div class="bottom_list_title clearer">
|
||
<div class="list_title_icon fl">
|
||
<span class="iconfont"></span>内容页刷新
|
||
</div>
|
||
</div>
|
||
<div class="bottom_list_content clearer">
|
||
<template v-for="(item,index) in taskInc">
|
||
<label :class="'list_content_li fl '+item.className " v-if="item.group==3">
|
||
<div class="content_li_txt">
|
||
<dd class="iconfont" v-html="item.icon"></dd>
|
||
<dt>{{item.name}}</dt>
|
||
<div class="li_txt_bottom li_txt_bottom1"><span :style="'width:'+item.selfPerent+'%'">{{item.selfPerent}}%</span></div>
|
||
<div class="li_txt_bottom li_txt_bottom2">{{item.num}}条</div>
|
||
</div>
|
||
</label>
|
||
</template>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<include file="Inc:foot" noiframeauto="true"/>
|
||
<script src="/Public/Admin/js/vue.js"></script>
|
||
<script>
|
||
var app = new Vue({
|
||
el: '#app',
|
||
data: {
|
||
allNum:0,
|
||
bigTitle:"数据正在更新中",
|
||
bigTitleDetail:"受页面数量大小等因素需要一定的时间才能操作完成,请耐心等候...",
|
||
timeFun:null,
|
||
timeStr:"00:00:00",
|
||
percent:1,//任务进度,一开始给个1好看一些
|
||
task_index:1,//对应后台的task_index,
|
||
taskInc:{$data},
|
||
},
|
||
methods:{
|
||
foundTask:function(){
|
||
var isFound=false;
|
||
for(var k in this.taskInc){
|
||
if(this.taskInc[k]["task_index"]==this.task_index){
|
||
isFound=true;
|
||
this.sendTask(k,1,0);
|
||
}
|
||
}
|
||
//防止有未勾选的任务组
|
||
if(!isFound){
|
||
this.task_index++;
|
||
this.foundTask();
|
||
}
|
||
},
|
||
sendTask:function(k,i,ids_key){
|
||
var taskUrl="index.php?m=Admin&c=Update&a="+this.taskInc[k]["taskName"]+"&i="+i;
|
||
//如果刷新首页,列表页,内容页,自定义列表页,自定义内容页,需要访问Home下的控制器。
|
||
if(this.taskInc[k]["taskName"]=="updateHome"||this.taskInc[k]["taskName"]=="updatePage"||this.taskInc[k]["taskName"]=="updatePages"||this.taskInc[k]["taskName"]=="updateCat"||this.taskInc[k]["taskName"]=="updateDetai"){
|
||
var taskUrl="index.php?m=Home&c=Update&a="+this.taskInc[k]["taskName"]+"&i="+i;
|
||
}
|
||
var ids=this.taskInc[k]["ids"];
|
||
if(ids){
|
||
taskUrl=taskUrl+"&id="+ids[ids_key];
|
||
}
|
||
//如果当前
|
||
this.taskInc[k]["className"]="Finishing";
|
||
//如果是刷新内容页需要传递num和table字段
|
||
if(this.taskInc[k]["taskName"]=="updateDetai"){
|
||
taskUrl=taskUrl+"&table_name="+this.taskInc[k]["table"]+"&count="+this.taskInc[k]["num"];
|
||
}
|
||
var obj=this;
|
||
$.ajax({
|
||
url:taskUrl,
|
||
type:"get",
|
||
async:true,
|
||
dataType:'json',
|
||
success:function(result){
|
||
var status=result.status;
|
||
var data=result.info;
|
||
if(status){
|
||
//更新进度
|
||
obj.taskInc[k]["alreadyNum"]=obj.taskInc[k]["alreadyNum"]+data.num;
|
||
obj.updatePercent();
|
||
//这个任务执行完成了
|
||
if(data.complete==1){
|
||
//判断是不是栏目和自定义列表,需要刷新多个栏目的
|
||
if(obj.taskInc[k]["ids"]){
|
||
ids_key++;
|
||
if(obj.taskInc[k]["ids"][ids_key]){
|
||
//当前栏目刷新完成了,刷新下一个栏目
|
||
obj.sendTask(k,1,ids_key);
|
||
}else{
|
||
//这条任务刷新完成了,刷新下一个任务
|
||
obj.task_index++;//下一条任务
|
||
//obj.sendTask(k+1,1,0);
|
||
obj.foundTask();
|
||
}
|
||
}else{
|
||
//这条任务刷新完成了,刷新下一个任务
|
||
obj.task_index++;//下一条任务
|
||
//obj.sendTask(k+1,1,0);
|
||
obj.foundTask();
|
||
}
|
||
}else{
|
||
//未完成继续
|
||
i++;
|
||
obj.sendTask(k,i,ids_key);
|
||
}
|
||
}else{
|
||
layer.alert(data);
|
||
}
|
||
},
|
||
error:function(xhr,textStatus){
|
||
alert("程序出错"+xhr);
|
||
}
|
||
})
|
||
},
|
||
//更新进度条的
|
||
updatePercent:function(){
|
||
var allNum=0;
|
||
var alreadyNum=0;
|
||
for(var k in this.taskInc){
|
||
//当前进度
|
||
this.taskInc[k]["selfPerent"]=Math.ceil(this.taskInc[k]["alreadyNum"]/this.taskInc[k]["num"]*100);
|
||
//当前显示样式
|
||
if(this.taskInc[k]["selfPerent"]==100){
|
||
this.taskInc[k]["className"]="Finished";
|
||
//当这个任务完成后,将下个任务设置为开始状态。因为有的任务执行ajax请求时间长,ICON一直是灰色的状态
|
||
var nextK=parseInt(k)+1;
|
||
if(this.percent<100){
|
||
//this.taskInc[nextK]["className"]="Finishing";
|
||
}
|
||
}else if(this.taskInc[k]["selfPerent"]==0){
|
||
this.taskInc[k]["className"]="ReadFinishing";
|
||
}else{
|
||
this.taskInc[k]["className"]="Finishing";
|
||
}
|
||
//总体进度
|
||
allNum=allNum+Math.ceil(this.taskInc[k]["num"]);
|
||
this.allNum=allNum;
|
||
alreadyNum=alreadyNum+Math.ceil(this.taskInc[k]["alreadyNum"]);
|
||
|
||
}
|
||
var percent=alreadyNum/allNum*100;
|
||
this.percent=Math.ceil(percent);
|
||
//刷新完成
|
||
if(percent==100){
|
||
this.bigTitle="所有数据已更新完成!";
|
||
this.bigTitleDetail="总计用时:"+this.timeStr+",更新了"+this.allNum+"个页面。";
|
||
clearInterval(this.timeFun);
|
||
}
|
||
|
||
}
|
||
},
|
||
mounted:function(){
|
||
//开始执行任务
|
||
//this.sendTask(0,1,0);
|
||
this.task_index=this.taskInc[0].task_index;
|
||
this.foundTask();
|
||
//计时器
|
||
var count=0;
|
||
var obj=this;
|
||
this.timeFun=setInterval(function() {
|
||
var h = parseInt(count / 1000 / 60 / 60);
|
||
var m = parseInt(count / 1000 / 60) % 60;
|
||
var s = parseInt(count / 1000) % 60;
|
||
var ms = parseInt(count / 10) % 100;
|
||
h = h < 10 ? '0' + h : h;
|
||
m = m < 10 ? '0' + m : m;
|
||
s = s < 10 ? '0' + s : s;
|
||
ms = ms < 10 ? '0' + ms : ms;
|
||
obj.timeStr = h + ':' + m + ':' + s ;
|
||
count += 10;
|
||
}, 10)
|
||
},
|
||
});
|
||
</script> |