better-staridc-MNBT
1<?php mnbt_admin_include('head'); ?>
2
3<script type="text/javascript" src="<?=mnbt_asset_url('js/jquery-confirm/jquery-confirm.min.js')?>"></script>
4<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/bootstrap-table.min.js')?>"></script>
5<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/locale/bootstrap-table-zh-CN.min.js')?>"></script>
6
7<script type="text/javascript" src="<?=mnbt_asset_url('js/md5.js')?>"></script>
8
9<?php
10$set=isset($_GET['gn'])?$_GET["gn"]:NULL;
11if($set=='bt'){
12?>
13<!--对话框-->
14<script type="text/javascript" src="<?=mnbt_asset_url('js/jquery-confirm/jquery-confirm.min.js')?>"></script>
15<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/bootstrap-table.min.js')?>"></script>
16<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/locale/bootstrap-table-zh-CN.min.js')?>"></script>
17
18<div class="container-fluid p-t-15">
19
20<div class="modal fade" id="tanchuang" tabindex="-1" role="dialog" aria-labelledby="tanchuang" aria-hidden="true">
21 <div class="modal-dialog" role="document">
22 <div class="modal-content">
23 <div class="modal-header">
24 <h6 class="modal-title" id="exampleModalChangeTitle">编辑宝塔</h6>
25 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
26 <span aria-hidden="true">×</span>
27 </button>
28 </div>
29 <div class="modal-body">
30 <form>
31 <input type="hidden" name="idr" id="idr">
32 <div class="form-group">
33 <label for="recipient-name" class="control-label">宝塔IP:</label>
34 <input type="text" class="form-control" name="recipientname" id="recipientname"/>
35 <small>宝塔IP修改后记得把下方的<b>[FTP地址]</b>和<b>[域名解析说明]</b>修改一下</small></div>
36 <div class="form-group">
37 <label for="recipient-name" class="control-label">宝塔端口:</label>
38 <input type="text" class="form-control" name="messagetext" id="messagetext"/>
39 </div>
40 <div class="form-group">
41 <label for="message-text" class="control-label">宝塔密钥:</label>
42 <textarea type="text" class="form-control" name="messagekey" id="messagekey"></textarea>
43 </div>
44 <div class="form-group">
45 <label for="message-text" class="control-label">FTP地址:</label>
46 <input type="text" class="form-control" name="ftpdz" id="ftpdz" placeholder="请在这填写该宝塔的FTP地址"/>
47 <small>显示在控制面板,通常情况下和宝塔IP一样,如果没特殊需求则不用改!</small></div>
48 <div class="form-group">
49 <label for="message-text" class="control-label">域名解析说明:</label>
50 <textarea type="text" class="form-control" name="urljx" id="urljx" placeholder="请在这填写该宝塔的域名解析地址"></textarea>
51 <small>显示在控制面板,在用户绑定域名时查看的,如果不懂则请不要乱改!</small></div>
52 <div class="form-group">
53 <label for="web_site_icp">操作系统</label>
54 <select class="form-control" id="btos" name="btos" size="1">
55 <option value="1">Linux</option>
56 <option value="2">Windows</option>
57 </select>
58 </div>
59 </br>
60 <div class="form-group">
61 <label class="btn-block" for="web_site_status">安全访问(HTTPS)</label>
62 <div class="col-xs-6">
63
64 <div class="custom-control custom-switch custom-info">
65 <input type="checkbox" class="custom-control-input" name="xieyi" id="xieyi">
66 <label class="custom-control-label" for="xieyi"></label>
67 </div>
68 </div>
69 </div>
70 <div class="form-group">
71 <label class="btn-block" for="web_site_status">宝塔接口开关</label>
72 <div class="col-xs-6">
73
74 <div class="custom-control custom-switch custom-info">
75 <input type="checkbox" class="custom-control-input" name="btkg" id="btkg" checked="true" checked>
76 <label class="custom-control-label" for="btkg"></label>
77 </div>
78
79 </div>
80 </div>
81 </form>
82 </div>
83 <div class="modal-footer">
84 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
85 <button type="button" class="btn btn-primary" onclick="bj_bc()">确认保存</button>
86 </div>
87 </div>
88 </div>
89 </div>
90
91 <div class="row">
92
93 <div class="col-lg-12">
94 <div class="card">
95 <header class="card-header"><div class="card-title">宝塔列表</div></header>
96 <div class="card-body">
97
98 <div class="callout callout-info">
99 <p class="small">
100 <strong>操作图标详解</strong><br/>
101 <a href="#!" class="btn btn-xs btn-default" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>:编辑纪录
102 <a href="#!" class="btn btn-xs btn-default" title="删除" data-toggle="tooltip"><i class="mdi mdi-window-close"></i></a>:删除纪录
103 <a href="#!" class="btn btn-xs btn-default" title="魔方对接文档" data-toggle="tooltip"><i class="mdi mdi-cube-outline"></i></a>:魔方对接文档<br/>
104 <a href="#!" class="btn btn-xs btn-info" title="获取PHP版本" data-toggle="tooltip"><i class="mdi mdi-cloud-download"></i></a>:获取PHP版本
105 <a href="#!" class="btn btn-xs btn-success" title="自动设置最新PHP" data-toggle="tooltip"><i class="mdi mdi-update"></i></a>:自动设置最新PHP
106 </p></div>
107 <div id="toolbar" class="toolbar-btn-action">
108 <button id="btn_add" type="button" class="btn btn-primary m-r-5 js-create-tab" aria-hidden="true" data-title="添加宝塔" data-url="add.php?gn=bt">
109 <span class="mdi mdi-plus"></span>新增宝塔
110 </button>
111 <button id="btn_delete" type="button" class="btn btn-danger" onclick="xzdelbt()">
112 <span class="mdi mdi-window-close" aria-hidden="true"></span>删除选中
113 </button>
114 </div>
115 <table id="tb_departments"></table>
116
117 </div>
118 </div>
119 </div>
120
121 </div>
122
123</div>
124
125<!-- PHP 版本选择弹窗 -->
126<div class="modal fade" id="versionModal" tabindex="-1">
127 <div class="modal-dialog">
128 <div class="modal-content">
129 <div class="modal-header">
130 <h5 class="modal-title">选择 PHP 版本 - <span id="vNodeLabel"></span></h5>
131 <button type="button" class="close" data-dismiss="modal"><span>×</span></button>
132 </div>
133 <div class="modal-body" id="versionList" style="max-height:400px;overflow-y:auto;">
134 <div class="text-center text-muted p-4">加载中...</div>
135 </div>
136 <div class="modal-footer">
137 <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
138 </div>
139 </div>
140 </div>
141</div>
142
143<script type="text/javascript">
144
145function fetchVersions(btdh) {
146 $('#vNodeLabel').text(btdh);
147 $('#versionList').html('<div class="text-center text-muted p-4">加载中...</div>');
148 $('#versionModal').modal('show');
149 $.post('./ajax.php', {gn: 'list_node_php', btdh: btdh}, function(res) {
150 try { res = typeof res === 'string' ? JSON.parse(res) : res; } catch(e) {}
151 if (!res.versions || res.versions.length === 0) {
152 $('#versionList').html('<div class="alert alert-warning">' + (res.msg || '该节点未安装任何 PHP 版本或无法获取') + '</div>');
153 return;
154 }
155 var current = res.current_default || '';
156 var html = '<div class="list-group list-group-flush">';
157 res.versions.forEach(function(v) {
158 var active = v.version === current ? ' active' : '';
159 var badge = v.version === current ? ' <span class="badge badge-success float-right">当前默认</span>' : '';
160 html += '<a href="javascript:;" class="list-group-item list-group-item-action' + active + '" onclick="setVersion(\'' + btdh + '\', \'' + v.version + '\')">' +
161 '<strong>' + v.version + '</strong> - ' + v.name + badge + '</a>';
162 });
163 html += '</div>';
164 $('#versionList').html(html);
165 });
166}
167
168function autoDetect(btdh) {
169 $.post('./ajax.php', {gn: 'auto_detect_node_php', btdh: btdh}, function(res) {
170 try { res = typeof res === 'string' ? JSON.parse(res) : res; } catch(e) {}
171 if (res.qk === 1) {
172 $('#php_label_' + btdh).html('<span class="badge badge-success">' + (res.version || '') + '</span>');
173 msalert(1, '设置成功:默认 PHP 版本已设为 ' + (res.version || ''), 2000);
174 } else {
175 msalert(4, res.msg || res.code || '操作失败', 2000);
176 }
177 });
178}
179
180function setVersion(btdh, version) {
181 $.post('./ajax.php', {gn: 'set_node_php', btdh: btdh, version: version}, function(res) {
182 try { res = typeof res === 'string' ? JSON.parse(res) : res; } catch(e) {}
183 if (res.qk === 1) {
184 $('#php_label_' + btdh).html('<span class="badge badge-success">' + version + '</span>');
185 $('#versionModal').modal('hide');
186 msalert(1, '已设置节点 ' + btdh + ' 的默认 PHP 版本为 ' + version, 2000);
187 } else {
188 msalert(4, res.msg || res.code || '操作失败', 2000);
189 }
190 });
191}
192
193function hqxzh() { //获取选中行
194 var selRows = $("#tb_departments").bootstrapTable("getSelections");
195 if(selRows.length == 0){
196 msalert(3,"请至少选择一行",4000);
197 return false;
198 }
199
200 var arr = new Array();
201 $.each(selRows,function(i) {
202 arr.push(this.id);
203 });
204 return arr;
205}
206
207function xzdelbt() {
208if(!confirm('删除后不可恢复\n是否确认删除这些宝塔?\n删除的同时也会删除这些宝塔在本站开通的主机记录!并不会删除这些主机在您宝塔的数据,如需删除数据请前去主机列表进行删除!!!')){return;}
209msloading('正在删除中,请稍后...') // 加载显示
210var arr=hqxzh();
211if(arr==false){msloadingde();return;}
212let data = {};
213data["gn"]="btscxz";
214data["idsz"]=arr;
215$.post('./ajax.php', data, function (date) {
216var jsoe= JSON.parse(date);
217var qk= jsoe.codr;
218var qke= jsoe.code;
219
220if(qk=='0'){
221msloadingde();
222msalert(1,'删除成功'+qke+'句',5000);
223$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
224}else{
225msloadingde();
226msalert(1,'删除成功'+qke+'句',5000);
227msalert(4,'删除失败'+qk+'句',5000);
228$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
229}
230})
231}
232
233function bj_bc() {
234var ipe=recipientname.value;
235var dke=messagetext.value;
236var keye=messagekey.value;
237var bs=btos.value;
238var id=idr.value;
239var urldz=urljx.value;
240var ftploc=ftpdz.value;
241var xy=xieyi.checked;
242var kge=btkg.checked;
243if(ipe=="" || dke=="" || keye==""){
244msalert(3,'表单不能为空!',3000,'#tanchuang');
245}else{
246msloading('正在修改中...');
247let data = {};
248data["gn"]="xgjl";
249data["id"]=id;
250data["ip"]=ipe;
251data["dk"]=dke;
252data["key"]=keye;
253data["btos"]=bs;
254data["urlla"]=urldz;
255data["ftpdz"]=ftploc;
256data["xieyi"]=xy;
257data["kg"]=kge;
258$.post('./ajax.php', data, function (date) {
259var jsoe= JSON.parse(date);
260var qk= jsoe.code
261
262if(qk=='修改成功'){
263$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
264$('#tanchuang').modal('hide'); //关闭弹窗
265msalert(1,'修改成功!',3000);
266msloadingde(); //关闭加载条
267}else{
268msalert(4,qk,3000,'#tanchuang');
269msloadingde(); //关闭加载条
270}
271})
272}}
273
274$('#tb_departments').bootstrapTable({
275 classes: 'table table-bordered table-hover table-striped',
276 url: './ajax.php',
277 method: 'post',
278 contentType : "application/x-www-form-urlencoded", //请求格式
279 dataType : 'json', // 因为本示例中是跨域的调用,所以涉及到ajax都采用jsonp,
280 uniqueId: 'id',
281 idField: 'id', // 每行的唯一标识字段
282 toolbar: '#toolbar', // 工具按钮容器
283 //clickToSelect: true, // 是否启用点击选中行
284 showColumns: true, // 是否显示所有的列
285 showRefresh: true, // 是否显示刷新按钮
286
287 showToggle: true, // 是否显示详细视图和列表视图的切换按钮(clickToSelect同时设置为true时点击会报错)
288
289 pagination: true, // 是否显示分页
290 sortOrder: "asc", // 排序方式
291 sortName: "id", //默认排序字段
292 queryParams: function(params) {
293 var temp = {
294 gn: 'listbt', // 请求功能
295 limit: params.limit, // 每页数据量
296 offset: params.offset, // sql语句起始索引
297 page: (params.offset / params.limit) + 1,
298 sort: params.sort, // 排序的列名
299 sortOrder: params.order // 排序方式'asc' 'desc'
300 };
301 return temp;
302 }, // 传递参数
303 sidePagination: "server", // 分页方式:client客户端分页,server服务端分页
304 pageNumber: 1, // 初始化加载第一页,默认第一页
305 pageSize: 10, // 每页的记录行数
306 pageList: [10, 25, 50, 100], // 可供选择的每页的行数
307 //search: true, // 是否显示表格搜索,此搜索是客户端搜索
308
309 showExport: true, // 是否显示导出按钮, 导出功能需要导出插件支持(tableexport.min.js)
310 exportDataType: "basic", // 导出数据类型, 'basic':当前页, 'all':所有数据, 'selected':选中的数据
311
312 columns: [{
313 field: 'example',
314 checkbox: true // 是否显示复选框
315 }, {
316 field: 'id',
317 title: 'ID',
318 sortable: true // 是否排序
319 }, {
320 field: 'btls',
321 title: '宝塔状态',
322 formatter:function(value,row){
323 return '<a href="#!" class="text-info" title="检测宝塔通信状态" data-toggle="tooltip" onclick="ljztjc(this,'+row.id+');"><i class="mdi mdi-help-circle-outline"></i>点我检测</a>';
324 }
325 }, {
326 field: 'btdh',
327 title: '宝塔编号'
328 }, {
329 field: 'btip',
330 title: '宝塔IP',
331 }, {
332 field: 'ktmy',
333 title: '调用密钥',
334 formatter:function(value,row){
335 let dymy=md5(value+row.qmk);
336 return '<div style="display: inline-block;"><span>**********</span><a href="#!" onclick="xymy(this,`'+dymy+'`)"><i class="mdi mdi-eye h6"></i></a></div>';
337 }
338 }, {
339 field: 'date',
340 title: '添加时间'
341 }, {
342 field: 'btdk',
343 title: '宝塔端口'
344 }, {
345 field: 'btmy',
346 title: '宝塔密钥',
347 formatter:function(value){
348 return '<div style="display: inline-block;"><span>**********</span><a href="#!" onclick="xymy(this,`'+value+'`)"><i class="mdi mdi-eye h6"></i></a></div>';
349 }
350 }, {
351 field: 'qk',
352 title: '宝塔情况',
353 formatter:function(value){
354 if (value == 'false') {
355 value = '<span class="badge badge-danger"><b>关闭</b></span>';
356 } else if(value == 'true') {
357 value = '<span class="badge badge-success"><b>开启</b</span>';
358 }else {
359 value = row.pType ;
360 }
361 return value;
362 }
363 }, {
364 field: 'operate',
365 title: '宝塔操作',
366 formatter: btnGroup, // 自定义方法
367 events: {
368 'click .edit-btn': function (event, value, row, index) {
369 editUser(row);
370 },
371 'click .del-btn': function (event, value, row, index) {
372 delUser(row);
373 },
374 'click .dj-mf': function (event, value, row, index) {
375 window.location.href='tutorial.php?gn=mr&sz='+row.id;
376 },
377 'click .php-fetch-btn': function (event, value, row, index) {
378 fetchVersions(row.btdh);
379 },
380 'click .php-detect-btn': function (event, value, row, index) {
381 autoDetect(row.btdh);
382 }
383 }
384 }],
385 onLoadSuccess: function(data){
386 $("[data-toggle='tooltip']").tooltip();
387 }
388});
389function xymy(data,value){
390var valdat=data.parentNode.childNodes[0];
391if(valdat.innerHTML=='**********'){
392$(valdat).html(value);
393$(data.childNodes[0]).removeClass('mdi-eye');
394$(data.childNodes[0]).addClass('mdi-eye-off');
395}else{
396$(valdat).html('**********');
397$(data.childNodes[0]).removeClass('mdi-eye-off');
398$(data.childNodes[0]).addClass('mdi-eye');
399}
400}
401// 操作按钮
402function btnGroup ()
403{
404 let html =
405 '<a href="#!" class="btn btn-xs btn-default edit-btn" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>' +
406 '<a href="#!" class="btn btn-xs btn-default dj-mf" title="魔方对接文档" data-toggle="tooltip"><i class="mdi mdi-cube-outline"></i></a>'+
407 '<a href="#!" class="btn btn-xs btn-default del-btn" title="删除" data-toggle="tooltip"><i class="mdi mdi-window-close"></i></a>' +
408 '<a href="#!" class="btn btn-xs btn-info php-fetch-btn" title="获取PHP版本" data-toggle="tooltip"><i class="mdi mdi-cloud-download"></i></a>' +
409 '<a href="#!" class="btn btn-xs btn-success php-detect-btn" title="自动设置最新PHP" data-toggle="tooltip"><i class="mdi mdi-update"></i></a>';
410 return html;
411}
412
413function ljztjc(lis,btid){ //宝塔连接状态检测
414msloading('正在检测中...');
415let data = {};
416data["gn"]="btztjc";
417data["btid"]=btid; //宝塔ID
418$.post('./ajax.php', data, function (date) {
419var json= JSON.parse(date);
420if(json.qk!=1){
421$.alert({
422 title: '提示',
423 content: json.code,
424 icon: 'mdi mdi-alert-decagram',
425 animation: 'scale',
426 closeAnimation: 'scale',
427 type:json.titco,
428 buttons: {
429 okay: {
430 text: '我知道了',
431 btnClass: 'btn-blue'
432 }
433 }
434 });
435$(lis).html('<span class="mdi mdi-close-circle text-danger">通信失败</span>');
436}else{
437$(lis).html('<span class="mdi mdi-check-circle text-success">通信正常</span>');
438}
439msloadingde();
440})
441}
442
443// 操作方法 - 编辑
444function editUser(row)
445{
446document.getElementById("recipientname").value = row.btip;
447document.getElementById("messagetext").value = row.btdk;
448document.getElementById("idr").value = row.id;
449$("#btos").val(row.btos);
450document.getElementById("messagekey").innerHTML = row.btmy;
451if(row.als=='false'){$("#urljx").val('请将域名A记录到 '+row.btip);}else{$("#urljx").val(row.als);}
452if(row.ftpdz=='false'){$("#ftpdz").val(row.btip);}else{$("#ftpdz").val(row.ftpdz);}
453if(row.ptl=='false'){$("#xieyi").attr("checked",false);}else{$("#xieyi").attr("checked",true);}
454if(row.qk=='false'){
455document.getElementById("btkg").checked = "";
456}else{
457document.getElementById("btkg").checked = "false";
458}
459$('#tanchuang').modal(); //弹出弹窗
460}
461// 操作方法 - 删除
462function delUser(row,s=true)
463{
464if(!confirm('删除后不可恢复\n是否确认删除该宝塔?\n删除的同时也会删除该宝塔在本站开通的主机记录!并不会删除这些主机在您宝塔的数据,如需删除数据请前去主机列表进行删除!!!')){return;}
465let data = {};
466data["gn"]="btsc";
467data["id"]=row.id;
468$.post('./ajax.php', data, function (date) {
469var jsoe= JSON.parse(date);
470var qk= jsoe.code
471
472if(qk=='删除成功'){
473$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
474msalert(1,'删除成功!',2000);
475msloadingde();
476}else{
477msalert(4,qk,2000);
478msloadingde();
479}
480})
481}
482
483</script>
484</body>
485</html>
486
487<?php }elseif($set=='zj'){?>
488<link href="<?=mnbt_asset_url('js/bootstrap-datepicker/bootstrap-datepicker3.min.css')?>" rel="stylesheet">
489<link href="<?=mnbt_asset_url('js/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css')?>" rel="stylesheet">
490<link href="<?=mnbt_asset_url('js/bootstrap-clockpicker/bootstrap-clockpicker.min.css')?>" rel="stylesheet">
491<div class="container-fluid p-t-15">
492
493<div class="modal fade" id="tanchuang" tabindex="-1" role="dialog" aria-labelledby="tanchuang" aria-hidden="true">
494 <div class="modal-dialog" role="document">
495 <div class="modal-content">
496 <div class="modal-header">
497 <h6 class="modal-title" id="exampleModalChangeTitle">编辑主机</h6>
498 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
499 <span aria-hidden="true">×</span>
500 </button>
501 </div>
502 <div class="modal-body">
503 <form>
504 <input type="hidden" name="idr" id="idr">
505
506 <div class="form-group">
507 <label for="recipient-name" class="control-label">登陆账号(目前版本暂时无法修改):</label>
508 <input type="text" class="form-control" name="zjuser" id="zjuser" readonly="true">
509 </div>
510 <div class="form-group">
511 <label for="recipient-name" class="control-label">SQL账号(目前版本暂时无法修改):</label>
512 <input type="text" class="form-control" name="sqluser" id="sqluser" readonly="true">
513 </div>
514
515 <div class="form-group">
516 <label for="recipient-name" class="control-label">登陆密码(也是FTP密码):</label>
517 <input type="text" class="form-control" name="zjpass" id="zjpass">
518 </div>
519 <div class="form-group">
520 <label for="recipient-name" class="control-label">SQL密码:</label>
521 <input type="text" class="form-control" name="sqlpass" id="sqlpass">
522 </div>
523 <div id="irth">
524 <div class="form-group">
525 <label for="recipient-name" class="control-label">网页空间(单位MB):</label>
526 <input type="number" class="form-control" name="webkjt" id="webkjt">
527 </div>
528 <div class="form-group">
529 <label for="recipient-name" class="control-label">数据库空间(单位MB):</label>
530 <input type="number" class="form-control" name="sqlkjt" id="sqlkjt">
531 </div>
532 </div>
533 <div class="form-group">
534 <label for="recipient-name" class="control-label">最大流量(G/月):</label>
535 <input type="number" class="form-control" name="llmax" id="llmax">
536 </div>
537 <div class="form-group">
538 <label for="recipient-name" class="control-label">域名最大绑定数:</label>
539 <input type="text" class="form-control" name="urlbd" id="urlbd" placeholder="最多能够绑定的域名数不限制请填0">
540 </div>
541 <div class="form-group">
542 <label for="recipient-name" class="control-label">到期时间(点击即可编辑):</label>
543 <input class="form-control js-datepicker m-b-10" type="text" name="datar" id="datar" placeholder="yyyy-mm-dd" value="" data-provide="datepicker" readonly="true" data-date-format="yyyy-mm-dd" style="background-color:#FFFFFF;"/>
544 </div>
545 <div class="form-group">
546 <label class="btn-block" for="web_site_status">主机开关</label>
547 <div class="col-xs-6">
548 <div class="custom-control custom-switch custom-info">
549 <input type="checkbox" class="custom-control-input" name="zjkg" id="zjkg" checked="true" checked>
550 <label class="custom-control-label" for="zjkg"></label>
551 </div>
552
553 </div>
554 </div>
555 </form>
556 </div>
557 <div class="modal-footer">
558 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
559 <button type="button" class="btn btn-primary" onclick="bj_bc()">确认保存</button>
560 </div>
561 </div>
562 </div>
563 </div>
564
565 <div class="row">
566
567 <div class="col-lg-12">
568 <div class="card">
569 <header class="card-header"><div class="card-title">主机列表</div></header>
570 <div class="card-body">
571
572 <div class="callout callout-info">
573 <p class="small">
574 <strong>操作图标详解</strong><br/>
575 <a href="#!" class="btn btn-xs btn-default" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>:编辑纪录
576 <a href="#!" class="btn btn-xs btn-default" title="删除" data-toggle="tooltip"><i class="mdi mdi-window-close"></i></a>:删除主机<br/>
577 <a href="#!" class="btn btn-xs btn-default" title="登陆控制面板" data-toggle="tooltip"><i class="mdi mdi-security-network"></i></a>:登陆控制面板
578 </p></div>
579 <div id="toolbar" class="toolbar-btn-action input-group">
580
581 <div class="input-group-prepend">
582 <button class="btn btn-outline-secondary dropdown-toggle" type="button" id="where_name" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" val="">选择搜索字段</button>
583 <div class="dropdown-menu">
584 <a class="dropdown-item" val="ssbt" href="#!">所属宝塔</a>
585 <a class="dropdown-item" val="sqldz" href="#!">网站名</a>
586 <a class="dropdown-item" val="user" href="#!">账号</a>
587 </div>
588
589 <div class="input-group-prepend">
590 <button class="btn btn-outline-secondary dropdown-toggle rounded-0" type="button" id="where_type" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" val="2">模糊搜索</button>
591 <div class="dropdown-menu">
592 <a class="dropdown-item" val="2" href="#!">模糊搜索</a>
593 <a class="dropdown-item" val="1" href="#!">精确搜索</a>
594 </div>
595 </div>
596
597 </div>
598
599 <input type="text" class="form-control" placeholder="请在此输入搜索内容" autocomplete="off" id="where_value">
600 <div class="input-group-append">
601 <button class="btn btn-outline-secondary rounded-right qrssat" type="button"><i class="mdi mdi-cloud-search-outline"></i>搜索</button>
602 <button class="btn btn-outline-secondary rounded-right qrss" type="button"><i class="mdi mdi-backup-restore"></i>重置</button>
603 </div>
604
605 <button id="btn_add" type="button" class="ml-2 btn btn-primary m-r-5 js-create-tab" aria-hidden="true" data-title="添加主机" data-url="add.php?gn=zj">
606 <span class="mdi mdi-plus"></span>新增主机
607 </button>
608 <button id="btn_delete" type="button" class="btn btn-danger" onclick="xzdelbt()">
609 <span class="mdi mdi-window-close" aria-hidden="true"></span>删除选中
610 </button>
611 </div>
612 <table id="tb_departments"></table>
613
614 </div>
615 </div>
616 </div>
617
618 </div>
619
620</div>
621<script src="<?=mnbt_asset_url('js/bootstrap-datepicker/bootstrap-datepicker.min.js')?>"></script>
622<script src="<?=mnbt_asset_url('js/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js')?>"></script>
623<script type="text/javascript" src="<?=mnbt_asset_url('js/main.min.js')?>"></script>
624<script type="text/javascript">
625 var where={"name":null,"type":null,"value":null};
626
627
628 $(".dropdown-item").on("click",function(k,v){
629 const $dr=$($(this).parent().parent()).children(":first")
630 $dr.html($(this).html())
631 $dr.attr('val',$(this).attr('val'));
632 })
633
634 $(".qrssat").on("click",function(){
635 where.name=$("#where_name").attr('val');
636 where.type=$("#where_type").attr('val');
637 where.value=$("#where_value").val().trim();
638 $("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
639 })
640
641function hqxzh() { //获取选中行
642 var selRows = $("#tb_departments").bootstrapTable("getSelections");
643 if(selRows.length == 0){
644 return 'NOT_NONE';
645 }
646
647 var arr = new Array();
648 $.each(selRows,function(i) {
649 arr.push(this.id);
650 });
651 return arr;
652}
653
654function xzdelbt() {
655if(!confirm('删除后不可恢复\n是否确认删除这些主机?\n如果这些主机所属宝塔无法正常访问将会删除失败!\n如果需要删除宝塔下的所有主机请前去宝塔列表删除宝塔即可!')){return;}
656msloading('正在删除中,请稍后...') // 加载显示
657var arr=hqxzh();
658if(arr=='NOT_NONE'){msalert(3,'请至少选择一行',3000);msloadingde();return;}
659let data = {};
660data["gn"]="zjscxz";
661data["idsz"]=arr;
662$.post('./ajax.php', data, function (date) {
663var jsoe= JSON.parse(date);
664var qk= jsoe.codr;
665var qke= jsoe.code;
666
667if(qk=='0'){
668msloadingde();
669msalert(1,'删除成功'+qke+'句',5000);
670$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
671}else{
672msloadingde();
673msalert(1,'删除成功'+qke+'句',5000);
674msalert(4,'删除失败'+qk+'句',5000);
675$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
676}
677})
678}
679
680function bj_bc() {
681var user=zjuser.value;
682var pass=zjpass.value;
683var sqlusere=sqluser.value;
684var sqlpasse=sqlpass.value;
685var datare=datar.value;
686var id=idr.value;
687var urlz=urlbd.value;
688var webkjr=webkjt.value;
689var sqlkjr=sqlkjt.value;
690var lldr=llmax.value;
691var kg=zjkg.checked;
692if(user=="" || pass=="" || sqluser=="" || sqlpass=="" || datar==""){
693msalert(3,'表单不能为空!',3000,'#tanchuang');
694}else{
695msloading('正在修改中...');
696let data = {};
697data["gn"]="zjxgjl";
698data["id"]=id;
699data["user"]=user;
700data["pass"]=pass;
701data["sqluser"]=sqlusere;
702data["sqlpass"]=sqlpasse;
703data["datar"]=datare;
704data["ymbds"]=urlz;
705data["webkj"]=webkjr;
706data["sqlkj"]=sqlkjr;
707data["llmax"]=lldr;
708data["kg"]=kg;
709$.post('./ajax.php', data, function (date) {
710var jsoe= JSON.parse(date);
711var qk= jsoe.code
712
713if(qk=='修改成功'){
714$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
715$('#tanchuang').modal('hide'); //关闭弹窗
716msalert(1,'修改成功!',3000);
717msloadingde(); //关闭加载条
718}else{
719msalert(4,qk,3000,'#tanchuang');
720msloadingde(); //关闭加载条
721
722}
723})
724}}
725
726$('#tb_departments').bootstrapTable({
727 classes: 'table table-bordered table-hover table-striped',
728 url: './ajax.php',
729 method: 'post',
730 contentType : "application/x-www-form-urlencoded", //请求格式
731 dataType : 'json', // 因为本示例中是跨域的调用,所以涉及到ajax都采用jsonp,
732 uniqueId: 'id',
733 idField: 'id', // 每行的唯一标识字段
734 toolbar: '#toolbar', // 工具按钮容器
735 //clickToSelect: true, // 是否启用点击选中行
736 showColumns: true, // 是否显示所有的列
737 showRefresh: true, // 是否显示刷新按钮
738
739 showToggle: true, // 是否显示详细视图和列表视图的切换按钮(clickToSelect同时设置为true时点击会报错)
740
741 pagination: true, // 是否显示分页
742 sortOrder: "desc", // 排序方式
743 sortName: "id", //默认排序字段
744 queryParams: function(params) {
745 var temp = {
746 gn: 'listzj', // 请求功能
747 where: JSON.stringify(where),
748 limit: params.limit, // 每页数据量
749 offset: params.offset, // sql语句起始索引
750 page: (params.offset / params.limit) + 1,
751 sort: params.sort, // 排序的列名
752 sortOrder: params.order // 排序方式'asc' 'desc'
753 };
754 return temp;
755 }, // 传递参数
756 sidePagination: "server", // 分页方式:client客户端分页,server服务端分页
757 pageNumber: 1, // 初始化加载第一页,默认第一页
758 pageSize: 10, // 每页的记录行数
759 pageList: [10, 25, 50, 100], // 可供选择的每页的行数
760 //search: true, // 是否显示表格搜索,此搜索是客户端搜索
761
762 showExport: true, // 是否显示导出按钮, 导出功能需要导出插件支持(tableexport.min.js)
763 exportDataType: "basic", // 导出数据类型, 'basic':当前页, 'all':所有数据, 'selected':选中的数据
764
765 columns: [{
766 field: 'example',
767 checkbox: true // 是否显示复选框
768 }, {
769 field: 'id',
770 title: 'ID',
771 sortable: true // 是否排序
772 }, {
773 field: 'ssbt',
774 title: '所属宝塔',
775 sortable: true // 是否排序
776 }, {
777 field: 'sqldz',
778 title: '网站名'
779 }, {
780 field: 'userpass',
781 title: '账号/密码',
782 formatter:function(value,row){
783 return row.user+'<br/>'+row.pass;
784 }
785 }, {
786 field: 'sqluserpass',
787 title: 'SQL账号/密码',
788 formatter:function(value,row){
789 return row.sqluser+'<br/>'+row.sqlpass;
790 }
791 }, {
792 field: 'webkj',
793 title: '网页空间',
794 formatter:function(value,row){
795 fanhuiqk='';
796 var jsoe= JSON.parse(row.hxa);
797 var dq=Number(jsoe.dq).toFixed(2); //当前用量四舍五入保留两位小数
798 if(dq>Number(jsoe.max)){
799 var textcolor='text-danger';
800 fanhuiqk+='<span class="badge badge-danger"><b>网页超出</b></span><div class="w-100" style="height:1px;"></div>';
801 }else{
802 var textcolor='text-success';
803 }
804 return '<span class="'+textcolor+'">'+dq+'/'+jsoe.max+'MB'+'</span>';
805 }
806 }, {
807 field: 'sqlkj',
808 title: '数据库空间',
809 formatter:function(value,row){
810 var jsoe= JSON.parse(row.hxb);
811 var dq=Number(jsoe.dq).toFixed(2); //当前用量四舍五入保留两位小数
812 if(dq>Number(jsoe.max)){
813 var textcolor='text-danger';
814 fanhuiqk+='<span class="badge badge-danger"><b>数据库超出</b></span><div class="w-100" style="height:1px;"></div>';
815 }else{
816 var textcolor='text-success';
817 }
818 return '<span class="'+textcolor+'">'+dq+'/'+jsoe.max+'MB'+'</span>';;
819 }
820 }, {
821 field: 'lls',
822 title: '已使用/总流量',
823 formatter:function(value,row){
824 var jsoe= JSON.parse(row.llmax);
825 var wdq=Number(jsoe.dq); //当前用量
826 var rdq=wdq / (1024*1024*1024); //单位转换:B转GB
827 var dq=rdq.toFixed(2); //四舍五入保留两位小数
828 if(dq>Number(jsoe.max)){
829 var textcolor='text-danger';
830 fanhuiqk+='<span class="badge badge-danger"><b>流量超出</b></span><div class="w-100" style="height:1px;"></div>';
831 }else{
832 var textcolor='text-success';
833 }
834 return '<span class="'+textcolor+'">'+dq+'/'+jsoe.max+'G'+'</span>';;
835 }
836 }, {
837 field: 'data',
838 title: '创建时间'
839 }, {
840 field: 'datae',
841 title: '到期时间',
842 formatter:function(value,row){
843 var date=row.data;
844 var dqdate=row.datae;
845 if(dqdate!='0000-00-00'){
846
847 var customTimesr = dqdate.replace("-", "/");
848 var customTimed = new Date(Date.parse(customTimesr));
849 var currentTime = new Date();
850
851 if(currentTime>customTimed){
852 textcolor='text-danger';
853 fanhuiqk+='<span class="badge badge-danger"><b>主机到期</b></span><div class="w-100" style="height:1px;"></div>';
854 }else{
855 textcolor='text-success';
856 }
857 }else{
858 textcolor='text-success';
859 }
860 return '<span class="'+textcolor+'">'+row.datae+'</span>';
861 }
862 }, {
863 field: 'qk',
864 title: '状态',
865 formatter:function(value,row){
866 if(value=='false'){
867 fanhuiqk+='<span class="badge badge-danger"><b>被关闭</b></span>';
868 }
869
870 if(fanhuiqk==''){
871 var sc='<span class="badge badge-success"><b>正常</b></span>';
872 }else{
873 var sc=fanhuiqk;
874 }
875 fanhuiqk='';
876 return sc;
877 }
878
879 }, {
880 field: 'operate',
881 title: '主机操作',
882 formatter: btnGroup, // 自定义方法
883 events: {
884 'click .edit-btn': function (event, value, row, index) {
885 editUser(row);
886 },
887 'click .del-btn': function (event, value, row, index) {
888 delUser(row);
889 },
890 'click .login-kzmb': function (event, value, row, index) {
891 msloading('正在登陆中...'); // 加载显示
892 let data = {};
893 data["username"]=row.user;
894 data["password"]=row.pass;
895 //alert(codeq);
896 $.post('../user/idcdl.php?gn=logine', data, function (date) {
897
898 msalert(1,'登陆成功!页面即将自动跳转~',2000);
899 setTimeout(function(){
900 window.open("../user/");
901 },1000)
902 msloadingde(); // 隐藏
903 })
904 }
905 }
906 }],
907 onLoadSuccess: function(data){
908 $("[data-toggle='tooltip']").tooltip();
909 try {
910 if (Number(data.code) === 4) {
911 msalert(4, data.msg);
912 $('#tb_departments').bootstrapTable("removeAll");
913 return;
914 }
915 if (Number(data.total) === 0) {
916 $('#tb_departments').bootstrapTable("removeAll");
917 }
918 } catch (e) {
919 }
920 }
921});
922
923// 操作按钮
924function btnGroup ()
925{
926 let html =
927 '<a href="#!" class="btn btn-xs btn-default edit-btn" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>' +
928 '<a href="#!" class="btn btn-xs btn-default login-kzmb" title="登陆控制面板" data-toggle="tooltip"><i class="mdi mdi-security-network"></i></a>' +
929 '<a href="#!" class="btn btn-xs btn-default del-btn" title="删除" data-toggle="tooltip"><i class="mdi mdi-window-close"></i></a>';
930 return html;
931}
932
933// 操作方法 - 编辑
934function editUser(row)
935{
936
937document.getElementById("zjuser").value = row.user;
938document.getElementById("zjpass").value = row.pass;
939document.getElementById("sqluser").value = row.sqluser;
940document.getElementById("sqlpass").value = row.sqlpass;
941document.getElementById("webkjt").value = JSON.parse(row.hxa).max;
942document.getElementById("sqlkjt").value = JSON.parse(row.hxb).max;
943document.getElementById("llmax").value = JSON.parse(row.llmax).max;
944if(row.ymbds=='0' || row.ymbds==''){ var urlbde='无限制'; }else{ var urlbde=row.ymbds; }
945document.getElementById("urlbd").value = urlbde;
946document.getElementById("datar").value = row.datae;
947document.getElementById("idr").value = row.id;
948if(row.qk!='true'){
949document.getElementById("zjkg").checked = "";
950}else{
951document.getElementById("zjkg").checked = "true";
952}
953document.getElementById("urlbd").readOnly="";
954document.getElementById("irth").style.display="block";
955
956$('#tanchuang').modal(); //弹出弹窗
957}
958// 操作方法 - 删除
959function delUser(row)
960{
961if(!confirm('删除后不可恢复\n是否确认删除该主机?\n如果该主机所属宝塔无法正常访问将会删除失败!\n如果需要删除该宝塔的所有主机请前去宝塔列表删除宝塔即可!')){return;}
962msloading('正在删除中,请稍后...');
963let data = {};
964data["gn"]="zjsc";
965data["id"]=row.id;
966$.post('./ajax.php', data, function (date) {
967var jsoe= JSON.parse(date);
968var qk= jsoe.code
969
970if(qk=='删除成功'){
971$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
972msalert(1,'删除成功!',2000);
973msloadingde();
974}else{
975msalert(4,qk,2000);
976msloadingde();
977}
978})
979}
980
981</script>
982</body>
983</html>
984
985
986<?php }elseif($set=='cx'){?>
987<script type="text/javascript" src="<?=mnbt_asset_url('js/addbs.js')?>?<?=$date?>"></script>
988<div class="container-fluid p-t-15">
989
990<div class="modal fade" id="tanchuang" tabindex="-1" role="dialog" aria-labelledby="tanchuang" aria-hidden="true">
991 <div class="modal-dialog" role="document">
992 <div class="modal-content">
993 <div class="modal-header">
994 <h6 class="modal-title" id="exampleModalChangeTitle">编辑纪录</h6>
995 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
996 <span aria-hidden="true">×</span>
997 </button>
998 </div>
999 <div class="modal-body">
1000 <li>网页空间和数据库空间的单位都是MB,程序价格的单位是元</li>
1001 <form action="ajax.php" method="post" role="form">
1002 <input type="hidden" name="id" id="idr"/>
1003 <input type="hidden" name="gn" value="cxxgjl"/>
1004 <div class="form-group">
1005 <label for="recipient-name" class="control-label">程序名称:</label>
1006 <input type="text" class="form-control" name="cxname" id="cxname">
1007 </div>
1008 <div class="form-group">
1009 <label for="recipient-name" class="control-label">程序介绍:</label>
1010 <textarea rows="5" name="cxjc" id="cxjc" class="form-control" placeholder="此程序的介绍"></textarea>
1011 </div>
1012 <div class="form-group">
1013 <label for="recipient-name" class="control-label">最低所需网页空间:</label>
1014 <input type="number" class="form-control" name="webkj" id="webkj">
1015 </div>
1016 <div class="form-group">
1017 <label for="recipient-name" class="control-label">最低所需数据库空间:</label>
1018 <input type="number" class="form-control" name="sqlkj" id="sqlkj">
1019 </div>
1020 <div class="form-group">
1021 <label for="recipient-name" class="control-label">部署完成后的提示:</label>
1022 <textarea type="text" class="form-control" name="alerts" id="alerts" rows="6" placeholder="部署此程序成功后的弹窗提示(支持使用替代)"></textarea>
1023 </div>
1024 <div class="form-group">
1025 <label for="recipient-name" class="control-label">程序价格:</label>
1026 <input type="number" name="cxrmb" id="cxrmb" class="form-control" min="0.00" step="0.01" max="1000" placeholder="此程序的价格 免费请填0" required/>
1027 </div>
1028 </form>
1029
1030
1031 <div class="tjnr1">
1032 <div class="a2">
1033 <h6 class="a1"> <b>需用户填写的表单</b></h6>
1034 </div>
1035
1036 <div class="btn-group a3 btn-round">
1037
1038 <button type="button" class="btn btn-primary btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
1039 添加一个表单 <span class="caret"></span>
1040 </button>
1041
1042 <ul class="dropdown-menu">
1043 <li><a class="dropdown-item" href="#!" onclick="add_pt('input')">表单</a></li>
1044 <li><a class="dropdown-item" href="#!" onclick="add_pt('dxk')">单选框</a></li>
1045 <li><a class="dropdown-item" href="#!" onclick="add_pt('dxks')">多选框</a></li>
1046 <li><a class="dropdown-item" href="#!" onclick="add_pt('urlxz')">域名选择</a></li>
1047 </ul>
1048
1049 </div>
1050 <hr color="#8f8c8c"/>
1051 <form action="#!" method="post" id="siteinput">
1052 <div id="inputs"><!--添加内容存放div-->
1053
1054 </div>
1055 </form>
1056 </div>
1057 <br/>
1058 <br/>
1059
1060
1061 <div class="tjnr1">
1062 <div class="a2">
1063 <h4 class="a1"> <b>安装时的操作</b></h4>
1064 </div>
1065
1066 <div class="btn-group a3 btn-round">
1067
1068 <button type="button" class="btn btn-primary btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
1069 添加一个操作 <span class="caret"></span>
1070 </button>
1071
1072 <ul class="dropdown-menu">
1073 <li><a class="dropdown-item" href="#!" onclick="add_cz('xjwj')">新建文件</a></li>
1074 <li><a class="dropdown-item" href="#!" onclick="add_cz('xjwjj')">新建文件夹</a></li>
1075 <li><a class="dropdown-item" href="#!" onclick="add_cz('delwj')">删除文件</a></li>
1076 <li><a class="dropdown-item" href="#!" onclick="add_cz('delwjj')">删除文件夹</a></li>
1077 <li><a class="dropdown-item" href="#!" onclick="add_cz('setwj')">修改文件内容</a></li>
1078 <li><a class="dropdown-item" href="#!" onclick="add_cz('drsql')">导入数据库文件</a></li>
1079 <li><a class="dropdown-item" href="#!" onclick="add_cz('cxname')">重命名文件或文件夹</a></li>
1080 <li><a class="dropdown-item" href="#!" onclick="add_cz('gettj')">GET提交</a></li>
1081 <li><a class="dropdown-item" href="#!" onclick="add_cz('setyxml')">设置运行目录</a></li>
1082 <li><a class="dropdown-item" href="#!" onclick="add_cz('setwjt')">配置伪静态</a></li>
1083 </ul>
1084
1085 </div>
1086 <hr color="#8f8c8c"/>
1087 <form action="#!" method="post" id="siteform">
1088 <div id="tjdcznr"><!--添加内容存放div-->
1089
1090 </div>
1091 </form>
1092 </div>
1093
1094 <div class="form-group">
1095 <label class="btn-block" for="web_site_status">上/下架</label>
1096 <div class="col-xs-6">
1097 <div class="custom-control custom-switch custom-info">
1098 <input type="checkbox" class="custom-control-input" name="cxkg" id="cxkg" checked="true" checked>
1099 <label class="custom-control-label" for="cxkg"></label>
1100 </div>
1101 </div>
1102 </div>
1103 </div>
1104 <div class="modal-footer">
1105 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
1106 <button type="button" class="btn btn-primary" onclick="bj_bc()">确认保存</button>
1107 </div>
1108 </div>
1109 </div>
1110 </div>
1111
1112 <div class="row">
1113
1114 <div class="col-lg-12">
1115 <div class="card">
1116 <header class="card-header"><div class="card-title">宝塔列表</div></header>
1117 <div class="card-body">
1118
1119 <div class="callout callout-info">
1120 <p class="small">
1121 <strong>操作图标详解</strong><br/>
1122 <a href="#!" class="btn btn-xs btn-default" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>:编辑纪录
1123 <a href="#!" class="btn btn-xs btn-default" title="导出" data-toggle="tooltip"><i class="mdi mdi-package-variant-closed"></i></a>:程序导出<br/>
1124 <a href="#!" class="btn btn-xs btn-default" title="删除" data-toggle="tooltip"><i class="mdi mdi-window-close"></i></a>:删除纪录
1125 <a href="#!" class="btn btn-xs btn-default" title="下载程序源码" data-toggle="tooltip"><i class="mdi mdi-arrow-down"></i></a>:下载程序源码
1126 </p></div>
1127 <div id="toolbar" class="toolbar-btn-action">
1128 <button id="btn_add" type="button" class="btn btn-primary m-r-5 js-create-tab" aria-hidden="true" data-title="添加程序" data-url="add.php?gn=cx">
1129 <span class="mdi mdi-plus"></span>新增程序
1130 </button>
1131 <button id="btn_add" type="button" class="btn btn-primary m-r-5" onclick="daochu('xzcx')">
1132 <span class="mdi mdi-package-variant-closed"></span>导出选中
1133 </button>
1134 <button id="btn_delete" type="button" class="btn btn-danger" onclick="xzdelbt()">
1135 <span class="mdi mdi-window-close" aria-hidden="true"></span>删除选中
1136 </button>
1137 </div>
1138 <table id="tb_departments"></table>
1139
1140 </div>
1141 </div>
1142 </div>
1143
1144 </div>
1145
1146</div>
1147<script type="text/javascript">
1148
1149function hqxzh() { //获取选中行
1150 var selRows = $("#tb_departments").bootstrapTable("getSelections");
1151 if(selRows.length == 0){
1152 msalert(3,"请至少选择一行",4000);
1153 return false;
1154 }
1155
1156 var arr = new Array();
1157 $.each(selRows,function(i) {
1158 arr.push(this.id);
1159 });
1160 return arr;
1161}
1162
1163function xzdelbt() {
1164if(!confirm('删除后不可恢复\n是否确认删除这些程序?')){return;}
1165msloading('正在删除中,请稍后...') // 加载显示
1166var arr=hqxzh();
1167if(arr==false){msloadingde();return;}
1168let data = {};
1169data["gn"]="cxscxz";
1170data["idsz"]=arr;
1171$.post('./ajax.php', data, function (date) {
1172var jsoe= JSON.parse(date);
1173var qk= jsoe.codr;
1174var qke= jsoe.code;
1175
1176if(qk=='0'){
1177msloadingde();
1178msalert(1,'删除成功'+qke+'句',5000);
1179$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
1180}else{
1181msloadingde();
1182msalert(1,'删除成功'+qke+'句',5000);
1183msalert(4,'删除失败'+qk+'句',5000);
1184$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
1185}
1186})
1187}
1188
1189function bj_bc() {
1190var t = $('#siteform').serializeArray();
1191var b = $('#siteinput').serializeArray();
1192
1193var id=idr.value;
1194var cxnames=cxname.value;
1195var cxjcs=cxjc.value;
1196var webkjs=webkj.value;
1197var sqlkjs=sqlkj.value;
1198var cxrmbs=cxrmb.value;
1199var kge=cxkg.checked;
1200if(cxnames=="" || cxjcs=="" || webkjs=="" || sqlkjs=="" || cxrmbs==""){
1201msalert(3,'表单不能为空!',3000,'#tanchuang');
1202}else{
1203msloading('正在修改中...');
1204let data = {};
1205data["gn"]="cxxgjl";
1206data["id"]=id;
1207data["cxname"]=cxnames;
1208data["cxjc"]=cxjcs;
1209data["webkj"]=webkjs;
1210data["sqlkj"]=sqlkjs;
1211data["cxrmb"]=cxrmbs;
1212data["alerts"]=$("#alerts").val();
1213data["cxkg"]=kge;
1214$.each(t, function() { //操作
1215data[this.name]=this.value;
1216});
1217$.each(b, function() { //操作
1218data[this.name]=this.value;
1219});
1220$.post('./ajax.php', data, function (date) {
1221var jsoe= JSON.parse(date);
1222var qk= jsoe.code
1223
1224if(qk=='修改成功'){
1225$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
1226$('#tanchuang').modal('hide'); //关闭弹窗
1227msalert(1,'修改成功!',3000);
1228msloadingde(); //关闭加载条
1229}else{
1230msalert(4,qk,3000,'#tanchuang');
1231msloadingde(); //关闭加载条
1232}
1233})
1234}}
1235
1236$('#tb_departments').bootstrapTable({
1237 classes: 'table table-bordered table-hover table-striped',
1238 url: './ajax.php',
1239 method: 'post',
1240 contentType : "application/x-www-form-urlencoded", //请求格式
1241 dataType : 'json', // 因为本示例中是跨域的调用,所以涉及到ajax都采用jsonp,
1242 uniqueId: 'id',
1243 idField: 'id', // 每行的唯一标识字段
1244 toolbar: '#toolbar', // 工具按钮容器
1245 //clickToSelect: true, // 是否启用点击选中行
1246 showColumns: true, // 是否显示所有的列
1247 showRefresh: true, // 是否显示刷新按钮
1248
1249 showToggle: true, // 是否显示详细视图和列表视图的切换按钮(clickToSelect同时设置为true时点击会报错)
1250
1251 pagination: true, // 是否显示分页
1252 sortOrder: "asc", // 排序方式
1253 sortName: "id", //默认排序字段
1254 queryParams: function(params) {
1255 var temp = {
1256 gn: 'listbs', // 请求功能
1257 limit: params.limit, // 每页数据量
1258 offset: params.offset, // sql语句起始索引
1259 page: (params.offset / params.limit) + 1,
1260 sort: params.sort, // 排序的列名
1261 sortOrder: params.order // 排序方式'asc' 'desc'
1262 };
1263 return temp;
1264 }, // 传递参数
1265 sidePagination: "server", // 分页方式:client客户端分页,server服务端分页
1266 pageNumber: 1, // 初始化加载第一页,默认第一页
1267 pageSize: 10, // 每页的记录行数
1268 pageList: [5, 10, 25, 50, 100], // 可供选择的每页的行数
1269 //search: true, // 是否显示表格搜索,此搜索是客户端搜索
1270
1271 showExport: false, // 是否显示导出按钮, 导出功能需要导出插件支持(tableexport.min.js)
1272 exportDataType: "basic", // 导出数据类型, 'basic':当前页, 'all':所有数据, 'selected':选中的数据
1273
1274 columns: [{
1275 field: 'example',
1276 checkbox: true // 是否显示复选框
1277 }, {
1278 field: 'id',
1279 title: 'ID',
1280 sortable: true // 是否排序
1281 }, {
1282 field: 'name',
1283 title: '程序名称'
1284 }, {
1285 field: 'jc',
1286 title: '程序介绍',
1287 formatter:function(value,row){
1288 return '<div style="width:150px;">'+value+'</div>';
1289 }
1290 }, {
1291 field: 'date',
1292 title: '添加时间',
1293 sortable: true // 是否排序
1294 }, {
1295 field: 'cxdx',
1296 title: '程序大小',
1297 sortable: true, // 是否排序
1298 formatter:function(value,row){
1299 return value+'MB';
1300 }
1301 }, {
1302 field: 'web',
1303 title: '最低网页空间',
1304 formatter:function(value,row){
1305 return JSON.parse(row.sxpz)[0]+'MB';
1306 }
1307 }, {
1308 field: 'sql',
1309 title: '最低数据库空间',
1310 formatter:function(value,row){
1311 return JSON.parse(row.sxpz)[1]+'MB';
1312 }
1313 }, {
1314 field: 'cs',
1315 title: '被部署次数',
1316 sortable: true, // 是否排序
1317 formatter:function(value,row){
1318 var obj=JSON.parse(row.tj);
1319 var size = 0, key;
1320 for (key in obj) {
1321 if (obj.hasOwnProperty(key)) size++;
1322 }
1323 return size+'次';
1324 }
1325 }, {
1326 field: 'jg',
1327 title: '程序价格',
1328 sortable: true, // 是否排序
1329 formatter:function(value,row){
1330 return value+'元';
1331 }
1332 },{
1333 field: 'src',
1334 title: '展示的图片',
1335 formatter:function(value,row){
1336 var jsoe=JSON.parse(value);
1337 trvimg='';
1338 jsoe.forEach(function(item){
1339 trvimg+='<img src="'+item+'" />';
1340 })
1341 return '<div class="listscr">'+trvimg+'</div>';
1342 }
1343
1344 }, {
1345 field: 'qk',
1346 title: '情况',
1347 sortable: true, // 是否排序
1348 formatter:function(value){
1349 if (value == 'false') {
1350 value = '<span class="badge badge-danger"><b>下架</b></span>';
1351 } else if(value == 'true') {
1352 value = '<span class="badge badge-success"><b>上架</b></span>';
1353 }else {
1354 value = row.pType ;
1355 }
1356 return value;
1357 }
1358 }, {
1359 field: 'operate',
1360 title: '数据操作',
1361 formatter: btnGroup, // 自定义方法
1362 events: {
1363 'click .edit-btn': function (event, value, row, index) {
1364 editUser(row);
1365 },
1366 'click .daochu-btn': function (event, value, row, index) {
1367 daochu(row); //程序导出
1368 },
1369 'click .del-btn': function (event, value, row, index) {
1370 delUser(row);
1371 },
1372 'click .ym-down': function (event, value, row, index) {
1373 window.location.href="./wjxz.php?idh="+row.id;
1374 }
1375 }
1376 }],
1377 onLoadSuccess: function(data){
1378 $("[data-toggle='tooltip']").tooltip();
1379 }
1380});
1381
1382// 操作按钮
1383function btnGroup ()
1384{
1385 let html =
1386 '<a href="#!" class="btn btn-xs btn-default edit-btn" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>' +
1387 '<a href="#!" class="btn btn-xs btn-default daochu-btn" title="导出" data-toggle="tooltip"><i class="mdi mdi-package-variant-closed"></i></a>' +
1388 '<a href="#!" class="btn btn-xs btn-default ym-down" title="下载源码" data-toggle="tooltip"><i class="mdi mdi-arrow-down"></i></a>'+
1389 '<a href="#!" class="btn btn-xs btn-default del-btn" title="删除" data-toggle="tooltip"><i class="mdi mdi-window-close"></i></a>';
1390 return html;
1391}
1392
1393function daochu(row){ //程序导出
1394var cxid=row.id;
1395if(row=='xzcx'){
1396var arr=hqxzh();
1397if(arr==false){msloadingde();return;}
1398}else{
1399var arr=[row.id];
1400}
1401msloading('正在导出中,请稍后...');
1402let data = {};
1403data["gn"]="cxdc";
1404data["id"]=arr;
1405$.post('./ajax.php', data, function (date) {
1406var json= JSON.parse(date);
1407msalert(json.code,json.msg,5000);
1408if(json.code=1){
1409window.location.href="./wjxz.php?gn=cxfile";
1410}
1411msloadingde();
1412})
1413}
1414
1415
1416// 操作方法 - 编辑
1417function editUser(row)
1418{
1419document.getElementById("tjdcznr").innerHTML="";
1420document.getElementById("inputs").innerHTML="";
1421document.getElementById("cxname").value = row.name;
1422document.getElementById("cxjc").value = row.jc;
1423document.getElementById("webkj").value = JSON.parse(row.sxpz)[0];
1424document.getElementById("sqlkj").value = JSON.parse(row.sxpz)[1];
1425document.getElementById("cxrmb").value = row.jg;
1426document.getElementById("idr").value = row.id;
1427document.getElementById("alerts").value = row.alet;
1428if(row.qk=='false'){
1429document.getElementById("cxkg").checked = "";
1430}else{
1431document.getElementById("cxkg").checked = "false";
1432}
1433
1434$('#tanchuang').modal(); //弹出弹窗
1435//程序添加并且内容修改
1436var rows=JSON.parse(row.pz);
1437if(rows!=null){
1438czdhx=1;
1439var xhcs=1;
1440$.each(rows,function(){
1441// 安全:直接调用 add_cz 函数,移除 eval 拼接字符串
1442add_cz(this.cz);
1443
1444let arr = this;
1445for(var key in arr){
1446 document.getElementsByName("czf["+xhcs+"]["+key+"]")[0].value=arr[key];
1447}
1448xhcs++;
1449})
1450}
1451//表单添加并且内容修改
1452var rows=JSON.parse(row.inp);
1453if(rows!=null){
1454updhx=1;
1455bl_arr=[]; //初始化全局变量
1456var xhcs=1;
1457$.each(rows,function(){
1458// 安全:直接调用 add_pt 函数,移除 eval 拼接字符串
1459add_pt(this.cz);
1460
1461let arr = this;
1462for(var key in arr){
1463 if($("select[name='bdf["+xhcs+"]["+key+"]']").length==0){
1464 //input标签和单/多选框
1465 if(key!='xknr'){ //input标签
1466 document.getElementsByName("bdf["+xhcs+"]["+key+"]")[0].value=arr[key];
1467 }else{ //单/多选框
1468 document.getElementsByName("bdf["+xhcs+"]["+key+"]")[0].value=arr[key]; //给隐藏输入框写入内容
1469 //给选框添加内容
1470 $($("textarea[name='bdf["+xhcs+"]["+key+"]']").parent().children()[1]).append(arr[key]);
1471 }
1472 }else{
1473 //select选项标签
1474 if(key=='blx'){
1475 //变量操作
1476 bl_arr.push(arr[key]); //添加一个全局变量
1477 $("select[name='bdf["+xhcs+"]["+key+"]']").append('<option>'+arr[key]+'</option>');
1478 $("select[name='bdf["+xhcs+"]["+key+"]']").val(arr[key]);
1479 }else{ //非变量选框只用选择,不用添加
1480 $("select[name='bdf["+xhcs+"]["+key+"]']").val(arr[key]);
1481 }
1482 }
1483}
1484xhcs++;
1485})
1486qblup(); //更新全局变量
1487}
1488}
1489// 操作方法 - 删除
1490function delUser(row)
1491{
1492if(!confirm('删除后不可恢复\n是否确认删除该程序?')){return;}
1493msloading('正在删除中,请稍后...');
1494let data = {};
1495data["gn"]="cxsc";
1496data["id"]=row.id;
1497$.post('./ajax.php', data, function (date) {
1498var jsoe= JSON.parse(date);
1499var qk= jsoe.code
1500
1501if(qk=='删除成功'){
1502$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
1503msalert(1,'删除成功!',2000);
1504msloadingde();
1505}else{
1506msalert(4,qk,2000);
1507msloadingde();
1508}
1509})
1510}
1511</script>
1512</body>
1513</html>
1514
1515<?php
1516}elseif($set=='dd'){
1517?>
1518
1519 <div class="row">
1520
1521 <div class="col-lg-12">
1522 <div class="card">
1523 <header class="card-header"><div class="card-title">订单列表</div></header>
1524 <div class="card-body">
1525
1526 <div class="callout callout-info">
1527 <p class="small">
1528 <strong>操作图标详解</strong><br/>
1529 <a href="#!" class="btn btn-xs btn-default" title="删除" data-toggle="tooltip"><i class="mdi mdi-window-close"></i></a>:删除纪录
1530 </p></div>
1531 <div id="toolbar" class="toolbar-btn-action">
1532 <button id="btn_delete" type="button" class="btn btn-danger" onclick="xzdelbt()">
1533 <span class="mdi mdi-window-close" aria-hidden="true"></span>删除选中
1534 </button>
1535 </div>
1536 <table id="tb_departments"></table>
1537
1538 </div>
1539 </div>
1540 </div>
1541
1542 </div>
1543
1544</div>
1545<script type="text/javascript">
1546
1547function hqxzh() { //获取选中行
1548 var selRows = $("#tb_departments").bootstrapTable("getSelections");
1549 if(selRows.length == 0){
1550 msalert(3,"请至少选择一行",4000);
1551 return false;
1552 }
1553
1554 var arr = new Array();
1555 $.each(selRows,function(i) {
1556 arr.push(this.id);
1557 });
1558 return arr;
1559}
1560
1561function xzdelbt() {
1562if(!confirm('删除后不可恢复\n是否确认删除这些订单记录?')){return;}
1563msloading('正在删除中,请稍后...') // 加载显示
1564var arr=hqxzh();
1565if(arr==false){msloadingde();return;}
1566let data = {};
1567data["gn"]="ddscxz";
1568data["idsz"]=arr;
1569$.post('./ajax.php', data, function (date) {
1570var jsoe= JSON.parse(date);
1571var qk= jsoe.codr;
1572var qke= jsoe.code;
1573
1574if(qk=='0'){
1575msloadingde();
1576msalert(1,'删除成功'+qke+'句',5000);
1577$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
1578}else{
1579msloadingde();
1580msalert(1,'删除成功'+qke+'句',5000);
1581msalert(4,'删除失败'+qk+'句',5000);
1582$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
1583}
1584})
1585}
1586
1587$('#tb_departments').bootstrapTable({
1588 classes: 'table table-bordered table-hover table-striped',
1589 url: './ajax.php',
1590 method: 'post',
1591 contentType : "application/x-www-form-urlencoded", //请求格式
1592 dataType : 'json', // 因为本示例中是跨域的调用,所以涉及到ajax都采用jsonp,
1593 uniqueId: 'id',
1594 idField: 'id', // 每行的唯一标识字段
1595 toolbar: '#toolbar', // 工具按钮容器
1596 //clickToSelect: true, // 是否启用点击选中行
1597 showColumns: true, // 是否显示所有的列
1598 showRefresh: true, // 是否显示刷新按钮
1599
1600 showToggle: true, // 是否显示详细视图和列表视图的切换按钮(clickToSelect同时设置为true时点击会报错)
1601
1602 pagination: true, // 是否显示分页
1603 sortOrder: "desc", // 排序方式
1604 sortName: "id", //默认排序字段
1605 queryParams: function(params) {
1606 var temp = {
1607 gn: 'listdd', // 请求功能
1608 limit: params.limit, // 每页数据量
1609 offset: params.offset, // sql语句起始索引
1610 page: (params.offset / params.limit) + 1,
1611 sort: params.sort, // 排序的列名
1612 sortOrder: params.order // 排序方式'asc' 'desc'
1613 };
1614 return temp;
1615 }, // 传递参数
1616 sidePagination: "server", // 分页方式:client客户端分页,server服务端分页
1617 pageNumber: 1, // 初始化加载第一页,默认第一页
1618 pageSize: 10, // 每页的记录行数
1619 pageList: [10, 25, 50, 100], // 可供选择的每页的行数
1620 //search: true, // 是否显示表格搜索,此搜索是客户端搜索
1621
1622 showExport: true, // 是否显示导出按钮, 导出功能需要导出插件支持(tableexport.min.js)
1623 exportDataType: "basic", // 导出数据类型, 'basic':当前页, 'all':所有数据, 'selected':选中的数据
1624
1625 columns: [{
1626 field: 'example',
1627 checkbox: true // 是否显示复选框
1628 }, {
1629 field: 'id',
1630 title: 'ID',
1631 sortable: true // 是否排序
1632 }, {
1633 field: 'url',
1634 title: '发起者账号',
1635 formatter:function(value,row){
1636 var obj=JSON.parse(row.cs);
1637 return obj.user;
1638 },
1639 sortable: true // 是否排序
1640 }, {
1641 field: 'spname',
1642 title: '支付商品',
1643 sortable: true // 是否排序
1644 }, {
1645 field: 'ddh',
1646 title: '订单号',
1647 sortable: true // 是否排序
1648 }, {
1649 field: 'je',
1650 title: '支付金额',
1651 sortable: true // 是否排序
1652 }, {
1653 field: 'zffs',
1654 title: '支付方式',
1655 sortable: true // 是否排序
1656 }, {
1657 field: 'date',
1658 title: '发起时间',
1659 sortable: true // 是否排序
1660 }, {
1661 field: 'ip',
1662 title: '发起者IP'
1663 }, {
1664 field: 'qk',
1665 title: '支付情况',
1666 formatter:function(value){
1667 if (value == 'false') {
1668 value = '<span class="badge badge-danger"><b>未支付</b></span>';
1669 } else if(value == 'true') {
1670 value = '<span class="badge badge-success"><b>支付成功</b></span>';
1671 }else {
1672 value = '<span class="badge badge-danger"><b>出现了意料之外错误,请刷新页面,如果还是提示本句就请联系开发者解决</b></span>' ;
1673 }
1674 return value;
1675 }
1676 }, {
1677 field: 'operate',
1678 title: '操作',
1679 formatter: btnGroup, // 自定义方法
1680 events: {
1681 'click .del-btn': function (event, value, row, index) {
1682 delUser(row);
1683 }
1684 }
1685 }],
1686 onLoadSuccess: function(data){
1687 $("[data-toggle='tooltip']").tooltip();
1688 }
1689});
1690
1691// 操作按钮
1692function btnGroup ()
1693{
1694 let html =
1695 '<a href="#!" class="btn btn-xs btn-default del-btn" title="删除" data-toggle="tooltip"><i class="mdi mdi-window-close"></i></a>';
1696 return html;
1697}
1698// 操作方法 - 删除
1699function delUser(row)
1700{
1701if(!confirm('删除后不可恢复\n是否确认删除此条订单记录?')){return;}
1702msloading('正在删除中,请稍后...');
1703let data = {};
1704data["gn"]="ddsc";
1705data["id"]=row.id;
1706$.post('./ajax.php', data, function (date) {
1707var jsoe= JSON.parse(date);
1708var qk= jsoe.code
1709
1710if(qk=='删除成功'){
1711$("#tb_departments").bootstrapTable('refreshOptions',{pageNumber:1}); //刷新表格
1712msalert(1,'删除成功!',2000);
1713msloadingde();
1714}else{
1715msalert(4,qk,2000);
1716msloadingde();
1717}
1718})
1719}
1720
1721</script>
1722</body>
1723</html>
1724
1725<?php
1726}elseif($set=='log'){?>
1727<!-- 域名管理已迁移至 domain_shop 插件,由 mnbt_plugin_render_menu_admin_html() 渲染 -->
1728<div class="container-fluid p-t-15">
1729 <div class="row">
1730 <div class="col-lg-12">
1731 <div class="card">
1732 <header class="card-header"><div class="card-title">操作日志</div></header>
1733 <div class="card-body">
1734 <div id="toolbar" class="toolbar-btn-action input-group">
1735 <div class="input-group-prepend">
1736 <button class="btn btn-outline-secondary dropdown-toggle" type="button" id="where_name" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" val="">选择搜索字段</button>
1737 <div class="dropdown-menu">
1738 <a class="dropdown-item" val="czuser" href="#!">操作用户</a>
1739 <a class="dropdown-item" val="lx" href="#!">操作类型</a>
1740 <a class="dropdown-item" val="lr" href="#!">操作内容</a>
1741 <a class="dropdown-item" val="qk" href="#!">操作情况</a>
1742 </div>
1743 <div class="input-group-prepend">
1744 <button class="btn btn-outline-secondary dropdown-toggle rounded-0" type="button" id="where_type" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" val="2">模糊搜索</button>
1745 <div class="dropdown-menu">
1746 <a class="dropdown-item" val="2" href="#!">模糊搜索</a>
1747 <a class="dropdown-item" val="1" href="#!">精确搜索</a>
1748 </div>
1749 </div>
1750 </div>
1751 <input type="text" class="form-control" placeholder="请输入搜索内容" autocomplete="off" id="where_value">
1752 <div class="input-group-append">
1753 <button class="btn btn-outline-secondary rounded-right qrssat" type="button"><i class="mdi mdi-cloud-search-outline"></i>搜索</button>
1754 <button class="btn btn-outline-secondary rounded-right qrss" type="button"><i class="mdi mdi-backup-restore"></i>重置</button>
1755 </div>
1756 <button id="btn_clear" type="button" class="ml-2 btn btn-danger" onclick="clearLog()">
1757 <span class="mdi mdi-delete"></span>清空日志
1758 </button>
1759 </div>
1760 <table id="tb_log"></table>
1761 </div>
1762 </div>
1763 </div>
1764 </div>
1765</div>
1766<script type="text/javascript">
1767var where={"name":null,"type":null,"value":null};
1768
1769$(".dropdown-item").on("click",function(k,v){
1770 const $dr=$($(this).parent().parent()).children(":first")
1771 $dr.html($(this).html())
1772 $dr.attr('val',$(this).attr('val'));
1773})
1774
1775$(".qrssat").on("click",function(){
1776 where.name=$("#where_name").attr('val');
1777 where.type=$("#where_type").attr('val');
1778 where.value=$("#where_value").val().trim();
1779 $("#tb_log").bootstrapTable('refreshOptions',{pageNumber:1});
1780})
1781
1782function clearLog() {
1783 if(!confirm('确定要清空所有操作日志吗?\n此操作不可恢复!')){return;}
1784 msloading('正在清空日志...');
1785 let data = {};
1786 data["gn"]="logclear";
1787 $.post('./ajax.php', data, function (date) {
1788 var jsoe= JSON.parse(date);
1789 if(jsoe.code=='清空成功'){
1790 msalert(1,'日志已清空!',2000);
1791 $("#tb_log").bootstrapTable('refreshOptions',{pageNumber:1});
1792 } else {
1793 msalert(4,'清空失败!',2000);
1794 }
1795 msloadingde();
1796 })
1797}
1798
1799$('#tb_log').bootstrapTable({
1800 classes: 'table table-bordered table-hover table-striped',
1801 url: './ajax.php',
1802 method: 'post',
1803 contentType : "application/x-www-form-urlencoded",
1804 dataType : 'json',
1805 uniqueId: 'id',
1806 idField: 'id',
1807 toolbar: '#toolbar',
1808 showColumns: true,
1809 showRefresh: true,
1810 showToggle: true,
1811 pagination: true,
1812 sortOrder: "desc",
1813 sortName: "id",
1814 queryParams: function(params) {
1815 var temp = {
1816 gn: 'listlog',
1817 where: JSON.stringify(where),
1818 limit: params.limit,
1819 offset: params.offset,
1820 page: (params.offset / params.limit) + 1,
1821 sort: params.sort,
1822 sortOrder: params.order
1823 };
1824 return temp;
1825 },
1826 sidePagination: "server",
1827 pageNumber: 1,
1828 pageSize: 15,
1829 pageList: [10, 15, 25, 50, 100],
1830 columns: [{
1831 field: 'id',
1832 title: 'ID',
1833 sortable: true
1834 }, {
1835 field: 'czuser',
1836 title: '操作用户',
1837 sortable: true
1838 }, {
1839 field: 'lx',
1840 title: '操作类型',
1841 sortable: true
1842 }, {
1843 field: 'lr',
1844 title: '操作内容',
1845 formatter:function(value){
1846 return '<div style="max-width:400px;word-break:break-all;">'+value+'</div>';
1847 }
1848 }, {
1849 field: 'qk',
1850 title: '操作情况',
1851 sortable: true
1852 }, {
1853 field: 'ip',
1854 title: 'IP地址'
1855 }, {
1856 field: 'date',
1857 title: '操作时间',
1858 sortable: true,
1859 sortName: 'id'
1860 }],
1861 onLoadSuccess: function(data){
1862 try {
1863 if (Number(data.code) === 4) {
1864 msalert(4, data.msg);
1865 $('#tb_log').bootstrapTable("removeAll");
1866 return;
1867 }
1868 if (Number(data.total) === 0) {
1869 $('#tb_log').bootstrapTable("removeAll");
1870 }
1871 } catch (e) {}
1872 }
1873});
1874</script>
1875<?php }?>