File: /www/wwwroot/hz.xxlht.com1/application/admin/template/weapp/index.htm
{include file="public/layout" /}
<body class="bodystyle" style="cursor: default; -moz-user-select: inherit;">
<div id="append_parent"></div>
<div id="ajaxwaitid"></div>
<div class="page">
<div class="fixed-bar">
<div class="item-title">
<div class="subject">
<h3>插件应用</h3>
<h5></h5>
</div>
<ul class="tab-base nc-row">
{eq name="$Think.const.CONTROLLER_NAME.'@index'|is_check_access" value="1"}
<li><a href="{:url("Weapp/index")}" class="tab {eq name="$Request.action" value="index"}current{/eq}"><span>插件列表</span></a></li>
{/eq}
</ul>
</div>
</div>
<div class="flexigrid">
<div class="mDiv">
<div class="ftitle">
<h3>插件列表</h3>
<h5>(共{$pager->totalRows}条数据)</h5>
</div>
<div title="刷新数据" class="pReload"><i class="fa fa-refresh"></i></div>
<form class="navbar-form form-inline" action="{:url('Weapp/index')}" method="get" onsubmit="layer_loading('正在处理');">
{$searchform.hidden|default=''}
<div class="sDiv">
<div class="sDiv2 fl" style="margin-right: 6px;">
<input type="text" size="30" name="keywords" class="qsbox" placeholder="搜索相关数据...">
<input type="submit" class="btn" value="搜索">
</div>
<!-- <div class="sDiv2">
<input type="button" class="btn" value="重置" onClick="window.location.href='{:url('Weapp/index')}';">
</div> -->
<div class="sDiv2 addartbtn fl" style="margin-right: 6px;">
<input type="button" class="btn current" value="插件开发者" onclick="window.location.href='{:url("Weapp/create")}';">
</div>
</div>
</form>
</div>
<div class="hDiv">
<div class="hDivBox">
<table cellspacing="0" cellpadding="0" style="width: 100%">
<thead>
<tr>
<th abbr="article_title" axis="col3" class="w150">
<div class="tc" style="text-align: left; padding-left: 10px;">名称</div>
</th>
<th abbr="ac_id" axis="col4">
<div class="" style="padding-left: 10px;">描述</div>
</th>
<th abbr="article_title" axis="col3" class="w150">
<div class="tc">标识</div>
</th>
<th abbr="article_show" axis="col5" class="w120">
<div class="tc">作者</div>
</th>
<th abbr="article_show" axis="col5" class="w60">
<div class="tc">版本</div>
</th>
<th abbr="article_time" axis="col6" class="w50">
<div class="tc">启用</div>
</th>
<th axis="col1" class="w130">
<div class="tc">操作</div>
</th>
<th abbr="article_time" axis="col6" class="w60">
<div class="tc">排序</div>
</th>
</tr>
</thead>
</table>
</div>
</div>
<div class="bDiv" style="height: auto;">
<div id="flexigrid" cellpadding="0" cellspacing="0" border="0">
<table style="width: 100%">
<tbody>
{empty name="list"}
<tr>
<td class="no-data" align="center" axis="col0" colspan="50">
<i class="fa fa-exclamation-circle"></i>没有符合条件的记录
</td>
</tr>
{else/}
{foreach name="list" item="vo" key="k" }
<tr>
<td class="">
<div class="w150 tl" style="padding-left: 10px;">
{$vo.name}
{assign name="weapp_upgrade_info" value="$weapp_upgrade[$vo['code']]" /}
{eq name="$weapp_upgrade_info['code']" value='2'}
<p class="testing_upgrade">
<textarea id="{$vo.code}_upgrade" class="none">{$weapp_upgrade_info['msg']['upgrade']|default=''}</textarea>
<textarea id="{$vo.code}_intro" class="none">{$weapp_upgrade_info['msg']['intro']|default=''}</textarea>
<textarea id="{$vo.code}_notice" class="none">{$weapp_upgrade_info['msg']['notice']|default=''}</textarea>
<a href="javascript:void(0);" class="a_upgrade" data-version="{$vo.version}" data-code="{$vo.code}" data-status="{$vo.status|default='0'}" data-name="{$vo.name}" onclick="weapp_upgrade(this);" style="color:#F00;">{$weapp_upgrade_info['msg']['tips']|default='[新版本更新]'}</a>
</p>
{/eq}
</div>
</td>
<td style="width: 100%">
<div style="">
{$vo.config.description}
</div>
</td>
<td class="">
<div class="w150 tc">
{$vo.code}
</div>
</td>
<td class="">
<div class="w120 tc">
{$vo.config.author|default='匿名'}
</div>
</td>
<td class="">
<div class="w60 tc">
{$vo.config.version}
</div>
</td>
<td>
<div class="tc w50">
{if condition="$vo['status'] eq 1"}
<span class="yes" {eq name="'Weapp@disable'|is_check_access" value="1"}onClick="changeTableVal('weapp','id','{$vo.id}','status',this);"{/eq} data-value="-1"><i class="fa fa-check-circle"></i>是</span>
{else /}
<span class="no" {eq name="'Weapp@disable'|is_check_access" value="1"}onClick="changeTableVal('weapp','id','{$vo.id}','status',this);"{/eq} data-value="1"><i class="fa fa-ban"></i>否</span>
{/if}
</div>
</td>
<td>
<div class="w130 tc">
{empty name="$vo.status"}
{eq name="'Weapp@install'|is_check_access" value="1"}
<a href="javascript:void(0);" onclick="install(this);" data-id="{$vo['id']}" class="btn blue"><i class="fa fa-check"></i>一键安装</a>
{/eq}
{eq name="'Weapp@del'|is_check_access" value="1"}
<a class="btn red" href="javascript:void(0);" data-url="{:url('Weapp/del')}" data-id="{$vo.id}" data-name="{$vo.name}" onClick="delfun(this);"><i class="fa fa-trash-o"></i>删除</a>
{/eq}
{else /}
{eq name="'Weapp@execute'|is_check_access" value="1"}
{if condition="!isset($vo['config']['management_index']) || empty($vo['config']['management_index'])"}
<a href="{:url('Weapp/execute',array('sm'=>$vo['code'],'sc'=>$vo['code'],'sa'=>'index'))}" class="btn blue"><i class="fa fa-pencil-square-o"></i>管理</a>
{/if}
{/eq}
{eq name="'Weapp@uninstall'|is_check_access" value="1"}
{eq name='$isFounder' value='1'}
<a href="javascript:void(0);" onclick="uninstall(this);" data-id="{$vo['id']}" data-name="{$vo.name}" class="btn red"><i class="fa fa-trash-o"></i>卸载</a>
{else /}
<a href="javascript:void(0);" onclick="layer.alert('请登录创始人账号进行操作!', {icon:4, title: false});" class="btn red"><i class="fa fa-trash-o"></i>卸载</a>
{/eq}
{/eq}
{/empty}
</div>
</td>
<td class="sort">
<div class="w60 tc">
{eq name="'Weapp@edit'|is_check_access" value="1"}
<input type="text" onchange="changeTableVal('weapp','id','{$vo.id}','sort_order',this);" size="4" value="{$vo.sort_order}" />
{else /}
{$vo.sort_order}
{/eq}
</div>
</td>
</tr>
{/foreach}
{/empty}
</tbody>
</table>
</div>
<div class="iDiv" style="display: none;"></div>
</div>
<div class="tDiv">
<div class="tDiv2">
{eq name="'Weapp@upload'|is_check_access" value="1"}
<div class="fbutton">
{eq name='$isFounder' value='1'}
<form class="navbar-form form-inline" action="{:url('Weapp/upload')}" name="change_System" id="change_System" method="post" enctype="multipart/form-data">
<a id="a_weappfile" href="javascript:void(0);" class="a-upload"><input type="file" name="weappfile" id="weappfile" title="请选择…" accept="application/x-zip-compressed"><i class="fa fa-upload"></i>上传安装插件</a>
</form>
<input type="hidden" id="is_weapp_installanswer" value="{$is_weapp_installanswer|default='0'}" />
{else /}
<a onclick="layer.alert('请登录创始人账号进行操作!', {icon:4, title: false});" href="javascript:void(0);" class="a-upload"><i class="fa fa-upload"></i>上传安装插件</a>
{/eq}
</div>
{/eq}
</div>
<div style="clear:both"></div>
</div>
<!--分页位置-->
{$page}
</div>
</div>
<form name="form2" id="form2" method="post" action="">
<input type="hidden" name="id" value="" />
<input type="hidden" name="thorough" value="1" />
</form>
<script>
$(document).ready(function(){
// 表格行点击选中切换
$('#flexigrid > table>tbody >tr').click(function(){
$(this).toggleClass('trSelected');
});
// 点击刷新数据
$('.fa-refresh').click(function(){
location.href = location.href;
});
{empty name="$is_set_weapp_answer"}
get_setting();
{/empty}
$('#weappfile').change(function(){
{empty name="$weapp_install_answer"}
get_setting();
return false;
{/empty}
var weappfile = $("#weappfile")[0].files[0]; //获取文件路径名
var is_weapp_installanswer = $('#is_weapp_installanswer').val();
if (0 == is_weapp_installanswer) {
layer.prompt({
title: false,
closeBtn: 0,
id: 'input_installanswer',
success: function(layero, index){
$("#input_installanswer").prepend('<div style="margin-bottom: 15px;font-size: 14px;color: red;font-weight: bold;">{$weapp_install_asktitle}</div>');
$("#input_installanswer").find('input').attr('placeholder', '请录入问题的答案内容!');
$("#input_installanswer").find('input').bind('keydown', function(event){
if(event.keyCode ==13){
upload($(this).val(), weappfile);
}
});
},
btn2: function(index, layero){
layer.close(index);
window.location.reload();
return false;
}
},
function(answer, index){
upload(answer, weappfile);
}
);
} else {
upload(false, weappfile);
}
});
function get_setting()
{
//iframe窗
var iframes = layer.open({
type: 2,
title: '设置问题答案',
fixed: true, //不固定
shadeClose: false,
shade: 0.3,
area: ['500px', '350px'],
content: "{:url('Weapp/setting')}",
end: function(){
$.ajax({
type : 'get',
url : "{:url('Weapp/setting_close')}",
data : {_ajax:1},
dataType : 'json',
success : function(res){
}
})
}
});
}
function upload(answer, weappfile)
{
// var weappfile = document.getElementById('weappfile').files[0]; //获取文件路径名
// var weappfile = $("#weappfile")[0].files[0]; //获取文件路径名
var weappfileName = weappfile.name;
var ext = weappfileName.substr(weappfileName.lastIndexOf('.')).toLowerCase();
if ($.trim(weappfileName) == '' || ext != '.zip') {
$('#weappfile').val('');
showErrorMsg('请上传zip压缩包!');
return false;
}
var formData = new FormData();
formData.append('_ajax', 1);
formData.append('weappfile', weappfile);
if (false !== answer) {
formData.append('answer', answer);
}
var loading = layer.msg('正在处理... 请勿刷新页面',
{
icon: 1,
time: 3600000, //1小时后后自动关闭
shade: [0.2] //0.1透明度的白色背景
});
//loading层
var loading_1 = layer.load(3, {
shade: [0.1,'#fff'] //0.1透明度的白色背景
});
$.ajax({
url: "{:url('Weapp/upload')}", //同目录下的php文件
type: "POST",
data: formData,
dataType: "json", //声明成功使用json数据类型回调
//如果传递的是FormData数据类型,那么下来的三个参数是必须的,否则会报错
cache: false, //默认是true,但是一般不做缓存
processData: false, //用于对data参数进行序列化处理,这里必须false;如果是true,就会将FormData转换为String类型
contentType: false, //一些文件上传http协议的关系,自行百度,如果上传的有文件,那么只能设置为false
success: function(res){ //请求成功后的回调函数
if (1 == res.code) {
layer.closeAll();
layer.msg(res.msg, {icon:1, time:1000}, function(){
window.location.reload();
});
} else {
$('#weappfile').val('');
layer.close(loading);
layer.close(loading_1);
layer.msg(res.msg, {icon:2, time:1500});
}
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
layer.close(loading);
layer.close(loading_1);
layer.msg('安装失败', {icon:2, time:1500});
}
});
}
});
function weapp_upgrade(obj)
{
var name = $(obj).attr('data-name');
var status = $(obj).attr('data-status');
if (0 == status) {
layer.alert('请先安装该插件!', {
title:false,//name,
icon: 0
});
return false;
}
var code = $(obj).attr('data-code');
var v = $("#"+code+"_upgrade").val();
var intro = $("#"+code+"_intro").val();
intro += '<style type="text/css">.layui-layer-content{height:270px!important}</style>';
var notice = $("#"+code+"_notice").val();
// v = v.replace(/\n/g,"<br/>");
v = notice + intro + '<br/>' + v;
//询问框
layer.confirm(v, {
title: false,//'检测插件更新',
area: ['580px','400px'],
btn: ['升级','取消'] //按钮
}, function(){
layer.closeAll();
setTimeout(function(){
upgrade(code); // 请求后台
},200);
}, function(){
layer.msg('不升级可能有安全隐患', {
btnAlign: 'c',
time: 20000, //20s后自动关闭
btn: ['明白了']
});
return false;
});
}
function upgrade(code){
layer_loading('升级中');
$.ajax({
type : "GET",
url : "{:url('Weapp/OneKeyUpgrade')}",
timeout : 360000, //超时时间设置,单位毫秒 设置了 1小时
data : {code:code, _ajax:1},
error: function(request) {
layer.closeAll();
layer.alert("升级失败,请第一时间联系技术协助!", {icon: 2, closeBtn: false, title:false}, function(){
window.location.reload();
});
},
success: function(res) {
layer.closeAll();
if(1 == res.code){
layer.alert('已升级最新版本!', {icon: 1, closeBtn: false, title:false}, function(){
window.location.reload();
});
}
else{
layer.alert(res.msg, {icon: 2, closeBtn: false, title:false}, function(){
window.location.reload();
});
}
}
});
}
function install(obj)
{
var id = $(obj).attr('data-id');
var form2 = $('#form2');
form2.find('input[name=id]').val(id);
var url = "{:url('Weapp/install')}";
form2.attr('action', url);
layer_loading('正在处理');
form2.submit();
}
function uninstall(obj)
{
var id = $(obj).attr('data-id');
var url = "{:url('Weapp/uninstall', ['_ajax'=>1])}";
//询问框
var confirm = layer.confirm('<font color="red">此操作数据不可恢复</font>,是否卸载移除?', {
title: false,
btn: ['确定', '取消'] //按钮
}, function(){
layer.close(confirm);
var is_weapp_installanswer = $('#is_weapp_installanswer').val();
if (false && 0 == is_weapp_installanswer) {
layer.prompt({
title: false,
closeBtn: 0,
id: 'input_installanswer',
success: function(layero, index){
$("#input_installanswer").prepend('<div style="margin-bottom: 15px;font-size: 14px;color: red;font-weight: bold;">{$weapp_install_asktitle}</div>');
$("#input_installanswer").find('input').attr('placeholder', '请录入问题的答案内容!');
$("#input_installanswer").find('input').bind('keydown', function(event){
if(event.keyCode ==13){
uninstall_true($(this).val(), obj);
}
});
},
btn2: function(index, layero){
layer.close(index);
window.location.reload();
return false;
}
},
function(answer, index){
uninstall_true(answer, obj);
}
);
} else {
uninstall_true('', obj);
}
}, function(){
layer.close(confirm);
}
);
return false;
}
function uninstall_true(answer, obj)
{
var id = $(obj).attr('data-id');
layer_loading('正在处理');
// 确定
$.ajax({
type : 'post',
url : "{:url('Weapp/uninstall', ['_ajax'=>1])}",
data : {id:id, thorough:0, answer:answer},
dataType : 'json',
success : function(res){
layer.closeAll();
if(res.code == 1){
layer.msg(res.msg, {icon: 1, time: 1500}, function(){
window.location.reload();
});
}else{
layer.alert(res.msg, {icon: 2, title:false});
}
},
error: function(e) {
layer.closeAll();
// 处理插件行为app_end影响到的卸载问题
if (e.responseText.indexOf("\\behavior\\admin\\") >= 0 && e.responseText.indexOf("not found") >= 0) {
layer.msg('卸载成功', {icon: 1, time: 1500}, function(){
window.location.reload();
});
} else {
layer.alert(e.responseText, {icon: 2, title:false});
}
}
});
}
function delfun(obj){
var name = $(obj).attr('data-name');
layer.confirm('<font color="#ff0000">将移除该插件相关文件</font>,确认移除?', {
title: false,//name,
btn: ['确定','取消'] //按钮
}, function(){
layer_loading('正在处理');
// 确定
$.ajax({
type : 'post',
url : $(obj).attr('data-url'),
data : {del_id:$(obj).attr('data-id'), _ajax:1},
dataType : 'json',
success : function(data){
layer.closeAll();
if(data.code == 1){
layer.msg(data.msg, {icon: 1});
window.location.reload();
}else{
layer.alert(data.msg, {icon: 2, title:false}); //alert(data);
}
}
})
}, function(index){
layer.close(index);
});
return false;
}
</script>
{include file="public/footer" /}