index.html 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. {{include "head.html"}}
  2. <!-- 模态框(Modal) -->
  3. <div class="modal fade" id="modal-assign" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  4. <div class="modal-dialog">
  5. <div class="modal-content">
  6. <div class="modal-header">
  7. <div class="modal-header">
  8. <button type="button" id="assign-close" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  9. <!--<div class="edit-form">-->
  10. <div class="edit-info">
  11. <span class="glyphicon glyphicon-share-alt" id="code-assign" aria-hidden="true"></span>
  12. <span class="info">爬虫分配<span>
  13. </div>
  14. <form class="form-horizontal" role="form">
  15. <div class="form-group">
  16. <label for="modify" class="col-sm-2 control-label">邮箱地址:</label>
  17. <div class="col-sm-10">
  18. <select class="form-control" id="assign-modify"></select>
  19. </div>
  20. <span class="modifyCheck hide">请选择维护人员</span>
  21. </div>
  22. <div class="form-group">
  23. <label for="modify" class="col-sm-2 control-label">转移内容:</label>
  24. </div>
  25. <div class="form-group">
  26. <ul class="list-group">
  27. </ul>
  28. </div>
  29. <div class="form-group" id="assign-style">
  30. <div class="col-sm-offset-2 col-sm-10">
  31. <input type="button" onclick="assign_save()" class="btn btn-primary" value="分配">
  32. <input type="button" onclick="assign_cancel()" class="btn btn-default" value="取消">
  33. </div>
  34. </div>
  35. </form>
  36. <!--</div> -->
  37. </div>
  38. </div>
  39. </div><!-- /.modal-content -->
  40. </div><!-- /.modal -->
  41. </div>
  42. <!-- 模态框(Modal) -->
  43. <div class="modal fade" id="modal-disables" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  44. <div class="modal-dialog">
  45. <div class="modal-content">
  46. <div class="modal-header">
  47. <div class="modal-header">
  48. <button type="button" id="assign-close" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  49. <!--<div class="edit-form">-->
  50. <div class="edit-info">
  51. <span class="glyphicon glyphicon-remove" id="code-assign" aria-hidden="true"></span>
  52. <span class="info">爬虫作废<span>
  53. </div>
  54. <form class="form-horizontal" role="form">
  55. <div class="form-group">
  56. <label for="modify" class="col-sm-2 control-label">作废原因:</label>
  57. <div class="col-sm-10">
  58. <textarea class="form-control" id="disablereason"></textarea>
  59. </div>
  60. </div>
  61. <div class="form-group" id="assign-style">
  62. <div class="col-sm-offset-2 col-sm-10">
  63. <input type="button" onclick="comfirm_disables()" class="btn btn-primary" value="确定">
  64. <input type="button" onclick="disables_cancel()" class="btn btn-default" value="取消">
  65. </div>
  66. </div>
  67. </form>
  68. <!--</div> -->
  69. </div>
  70. </div>
  71. </div><!-- /.modal-content -->
  72. </div><!-- /.modal -->
  73. </div>
  74. <!-- 模态框(Modal) -->
  75. <div class="modal fade" id="modal-spidercopy" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  76. <div class="modal-dialog">
  77. <div class="modal-content">
  78. <div class="modal-header">
  79. <div class="modal-header">
  80. <button type="button" id="assign-close" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  81. <!--<div class="edit-form">-->
  82. <div class="edit-info">
  83. <span class="fa fa-copy" id="code-assign" aria-hidden="true"></span>
  84. <span class="info">复制爬虫<span>
  85. </div>
  86. <form class="form-horizontal" role="form">
  87. <div class="form-group">
  88. <label for="modify" class="col-sm-2 control-label">爬虫:</label>
  89. <div class="col-sm-10">
  90. <input class="form-control" id="spidercopy"></input>
  91. </div>
  92. </div>
  93. <div class="form-group" id="assign-style">
  94. <div class="col-sm-offset-2 col-sm-10">
  95. <input type="button" onclick="comfirm_spidercopy()" class="btn btn-primary" value="确定">
  96. <input type="button" onclick="spidercopy_cancel()" class="btn btn-default" value="取消">
  97. </div>
  98. </div>
  99. </form>
  100. <!--</div> -->
  101. </div>
  102. </div>
  103. </div><!-- /.modal-content -->
  104. </div><!-- /.modal -->
  105. </div>
  106. <div class="content-wrapper">
  107. <section class="content-header">
  108. <h1>
  109. 脚本列表
  110. <small>
  111. <a class="btn btn-default btn-sm" onclick="spidercopy()">复制爬虫</a>
  112. {{if gt (session "auth") 2}}
  113. <!--<a class="btn btn-default btn-sm" href="/center/spider">新建爬虫</a>-->
  114. <a class="btn btn-default btn-sm" id="assign" onclick="assign()">分配</a>
  115. <a class="btn btn-default btn-sm" id="disables" onclick="disables()">作废</a>
  116. {{end}}
  117. </small>
  118. </h1>
  119. <ol class="breadcrumb">
  120. <li><a href="#"><i class="fa fa-dashboard"></i> 首页</a></li>
  121. <li class="active">列表</li>
  122. </ol>
  123. </section>
  124. <section class="content">
  125. <div class="box">
  126. <!-- /.box-header -->
  127. <div class="box-body">
  128. <table id="spider" class="table table-bordered table-striped">
  129. <thead>
  130. <tr>
  131. <th><input type="checkbox" id="selrow" onclick="selectrow(this)"/></th>
  132. <th>编号{{.T.ischeck}}</th>
  133. <th>网站名称</th>
  134. <th>栏目名称</th>
  135. <th>爬虫代码</th>
  136. <th>紧急度</th>
  137. <th>节点</th>
  138. <th>作者</th>
  139. <th>最后修改时间</th>
  140. <th>状态</th>
  141. <th>平台</th>
  142. <th class="hidden-xs">操作</th>
  143. </tr>
  144. </thead>
  145. </table>
  146. </div>
  147. <!-- /.box-body -->
  148. </div>
  149. </section>
  150. <script>
  151. var first=1;
  152. $(function(){
  153. ttable=$('#spider').DataTable({
  154. "language": {
  155. "url": "/js/dataTables.chinese.lang"
  156. },
  157. "columnDefs": [
  158. { "orderable": false, "targets": [0,10,11] },
  159. //更新节点
  160. {"targets":[6], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
  161. {{if gt (session "auth") 2}}
  162. var aInput;
  163. $(cell).click(function () {
  164. $(this).html(createComboxEvent(rowData._id,rowData.state,rowData.code));
  165. var aInput = $(this).find(":input");
  166. aInput.focus().val(cellData);
  167. });
  168. $(cell).on("click", ":input", function (e) {
  169. e.stopPropagation();
  170. });
  171. $(cell).on("change", ":input", function () {
  172. $(this).blur();
  173. });
  174. $(cell).on("blur", ":input", function () {
  175. var text = $(this).find("option:selected").text();
  176. ttable.cell(cell).data(text);
  177. cellData = text;
  178. });
  179. {{end}}
  180. }},
  181. //更新状态
  182. {"targets":[9], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
  183. {{if gt (session "auth") 2}}
  184. var aInput;
  185. $(cell).click(function () {
  186. if(cellData!=4&&cellData!=7&&cellData!=8&&cellData!=9&&cellData!=10){
  187. return
  188. }
  189. $(this).html(createComboxState(rowData._id));
  190. var aInput = $(this).find(":input");
  191. aInput.focus().val(cellData);
  192. });
  193. $(cell).on("click", ":input", function (e) {
  194. e.stopPropagation();
  195. });
  196. $(cell).on("change", ":input", function () {
  197. $(this).blur();
  198. });
  199. $(cell).on("blur", ":input", function () {
  200. var text = $(this).find("option:selected").text();
  201. if(text=="待完成"){
  202. text = 0
  203. }else if (text=="已作废"){
  204. text = 4
  205. }else if (text=="无发布"){
  206. text = 7
  207. }else if (text=="需登录"){
  208. text = 8
  209. }else if (text=="无法处理"){
  210. text = 9
  211. }else if (text=="已删除"){
  212. text = 10
  213. }else if (text=="已上线"){
  214. text = 11
  215. }
  216. ttable.cell(cell).data(text);
  217. cellData = text;
  218. });
  219. {{end}}
  220. }},
  221. //更新平台
  222. {"targets":[10], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
  223. {{if gt (session "auth") 2}}
  224. var aInput;
  225. $(cell).click(function () {
  226. $(this).html(createComboxPlatform(rowData.code,rowData._id));
  227. var aInput = $(this).find(":input");
  228. aInput.focus().val(cellData);
  229. });
  230. $(cell).on("click", ":input", function (e) {
  231. e.stopPropagation();
  232. });
  233. $(cell).on("change", ":input", function () {
  234. $(this).blur();
  235. });
  236. $(cell).on("blur", ":input", function () {
  237. var text = $(this).find("option:selected").text();
  238. if(text=="待完成"){
  239. text = 0
  240. }else if (text=="已作废"){
  241. text = 4
  242. }else if (text=="无发布"){
  243. text = 7
  244. }else if (text=="需登录"){
  245. text = 8
  246. }else if (text=="无法处理"){
  247. text = 9
  248. }else if (text=="已删除"){
  249. text = 10
  250. }else if (text=="已上线"){
  251. text = 11
  252. }
  253. ttable.cell(cell).data(text);
  254. cellData = text;
  255. });
  256. {{end}}
  257. }}
  258. ],
  259. "order": [[1,"desc"]],
  260. "processing":true,
  261. "serverSide": true,
  262. "searching": true,
  263. "ordering": true,
  264. "info": true,
  265. "autoWidth": true,
  266. "ajax": {
  267. "url": "/center",
  268. "type": "POST"
  269. },
  270. "columns": [
  271. { "data": "_id",render:function(val,a,row){
  272. return "<input type='checkbox' value='"+val+"' name='"+row.param_common[1]+"_"+row.param_common[2]+"' code='"+row.param_common[0]+"'/>"
  273. }},
  274. { "data": "_id",render:function(val,a,row){
  275. return row.num
  276. }},
  277. { "data": "param_common","width":"200px",render:function(val,a,row){
  278. vals=val[1];
  279. if(vals.length>15){
  280. vals=vals.substr(0,15)+"...";
  281. }
  282. return vals
  283. }},
  284. { "data": "param_common","width":"200px",render:function(val){
  285. if(val.length<3){
  286. val="暂无";
  287. }else{
  288. var href="#"
  289. if(val[11]){
  290. href=val[11]
  291. }
  292. val="<a href='"+href+"' title='"+val[2]+"' target='_blank'>"+val[2]+"</a>"
  293. }
  294. return val
  295. }},
  296. { "data": "code"},
  297. { "data": "urgency",render:function(val){
  298. if(val==1){
  299. return "紧急"
  300. }else{
  301. return "普通"
  302. }
  303. }},
  304. { "data": "event","width":"50px"},
  305. { "data": "createuser"},
  306. { "data": "modifytime"},
  307. { "data": "state","width":"70px",render:function(val,a,row){
  308. var state=row.state;
  309. if(state==0){
  310. val="<span class='text-info text-bold'>待完成</span>"
  311. }else if(state==1){
  312. val="<span class='text-primary text-bold'>待审核</span>"
  313. }else if(state==2){
  314. val="<span class='text-danger text-bold'>未通过</span>"
  315. }else if(state==3){
  316. val="<span class='text-success text-bold'>已通过</span>"
  317. }else if(state==4){
  318. val="<span class='text-danger text-bold'>已作废</span>"
  319. }else if(state==5){
  320. val="<span class='text-success text-bold'>已上架</span>"
  321. }else if(state==6){
  322. val="<span class='text-danger text-bold'>已下架</span>"
  323. }else if(state==7){
  324. val="<span class='text-danger text-bold'>无发布</span>"
  325. }else if(state==8){
  326. val="<span class='text-danger text-bold'>需登录</span>"
  327. }else if(state==9){
  328. val="<span class='text-danger text-bold'>无法处理</span>"
  329. }else if(state==10){
  330. val="<span class='text-danger text-bold'>已删除</span>"
  331. }else if(state==11){
  332. val="<span class='text-danger text-bold'>已上线</span>"
  333. }
  334. return val
  335. }},
  336. { "data": "platform"},
  337. { "data": "param_common","width":"95px",render:function(val,a,row){
  338. var div=$("<div><div class=\"btn-group\"></div></div>")
  339. var currentuser="{{session "username"}}";
  340. var auth="{{session "auth"}}";
  341. var state=row.state;
  342. {{if eq (session "auth") 1}}
  343. var title="查看"
  344. var href="/center/spider/view/"+row["encode"]
  345. if(state==0||state==2){
  346. title="编辑"
  347. href="/center/spider/edit/"+row["encode"]+"__"
  348. }
  349. var button=$('<a type="button" target="_blank" class="btn btn-sm btn-default">'+title+'</a>');
  350. button.attr("href",href);
  351. div.find(".btn-group").append(button);
  352. {{else if eq (session "auth") 2}}
  353. var title="查看"
  354. var href="/center/spider/view/"+row["encode"]
  355. if(state==1){
  356. title="审核"
  357. href="/center/spider/edit/"+row["encode"]+"__"
  358. }
  359. var button=$('<a type="button" target="_blank" class="btn btn-sm btn-default">'+title+'</a>');
  360. button.attr("href",href);
  361. div.find(".btn-group").append(button);
  362. if(state==1){
  363. var dbutton=$('<a type="button" href="#" class="btn btn-sm btn-default" onclick="refuse(this);">打回</a>');
  364. dbutton.attr("hrefs","/center/spider/upstate?code="+row["code"]+"&state=2");
  365. div.find(".btn-group").append(dbutton);
  366. }
  367. {{else}}
  368. var button=$('<a type="button" target="_blank" class="btn btn-sm btn-default">编辑</a>');
  369. button.attr("href","/center/spider/edit/"+row["encode"]+"__");
  370. div.find(".btn-group").append(button);
  371. if(state>2){
  372. var button=$('<a type="button" class="btn btn-sm btn-default">下载</a>');
  373. button.attr("href","/center/spider/download/"+row["code"]);
  374. div.find(".btn-group").append(button);
  375. }else if(state==1) {
  376. var dbutton=$('<a type="button" href="#" class="btn btn-sm btn-default" onclick="refuse(this);">打回</a>');
  377. dbutton.attr("hrefs","/center/spider/upstate?code="+row["code"]+"&state=2");
  378. div.find(".btn-group").append(dbutton);
  379. }
  380. {{end}}
  381. return div.html()
  382. }}
  383. ],
  384. "fnDrawCallback": function(table) {
  385. $("ul.pagination").prepend("&nbsp;&nbsp;&nbsp;转到第 <input type='text' id='changePage' style='width:20px;'> 页 <a type='text' href='javascript:void(0);' id='dataTable-btn' style='text-align:center'>GO</a>");
  386. $('#dataTable-btn').click(function(e) {
  387. var redirectpage=0
  388. if($("#changePage").val() && $("#changePage").val() > 0) {
  389. var redirectpage = $("#changePage").val() - 1;
  390. }
  391. ttable.page(redirectpage).draw(false);
  392. });
  393. },
  394. "fnServerParams": function (e) {
  395. var state=$("#type_state").val()
  396. var taskEvent = $("#task_event").val();
  397. var urgency = $("#luaurgency").val();
  398. var platform = $("#platform").val();
  399. //紧急度
  400. if(urgency){
  401. e.urgency=urgency
  402. }else{
  403. e.urgency="-1"
  404. }
  405. //状态
  406. if(state){
  407. e.state=state
  408. }else{
  409. e.state="-1"
  410. }
  411. //节点
  412. if(taskEvent){
  413. e.taskEvent = taskEvent;
  414. }else{
  415. e.taskEvent="-1";
  416. }
  417. //平台
  418. if(platform){
  419. e.platform=platform
  420. }else{
  421. e.platform="-1"
  422. }
  423. }
  424. });
  425. common.setActive("index");
  426. ttable.on('init.dt', function () {
  427. var search=getCookie("input");
  428. if(search){
  429. $("[type=search]").val(search);
  430. }
  431. // 紧急度
  432. var urgency="<div class='form-group'><label for='name'>紧急程度:</label>"+
  433. "<select id='luaurgency' onchange='checkclick(this.value)' class='form-control input-sm'>"+
  434. "<option value='-1'>全部</option>"+
  435. "<option value='0'>普通</option>"+
  436. "<option value='1'>紧急</option>"+
  437. "</select></div>"
  438. $("#spider_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
  439. $("#spider_filter").prepend(urgency);
  440. //爬虫状态
  441. var opt="<option value='-1'>全部</option>";
  442. var opt1="<option value='0'>待完成</option>";
  443. var opt2="<option value='1'>待审核</option>"+
  444. "<option value='2'>未通过</option>"+
  445. "<option value='3'>已通过</option>";
  446. var opt3="<option value='4'>已作废</option>"+
  447. "<option value='5'>已上架</option>"+
  448. "<option value='6'>已下架</option>";
  449. var opt4="<option value='7'>无发布</option>"+
  450. "<option value='8'>需登录</option>"+
  451. "<option value='9'>无法处理</option>"+
  452. "<option value='10'>已删除</option>"+
  453. "<option value='11'>已上线</option>";
  454. {{if eq (session "auth") 3}}
  455. opt=opt+opt1+opt2+opt3+opt4
  456. {{else if eq (session "auth") 2}}
  457. opt=opt2+opt4
  458. {{else}}
  459. opt=opt+opt1+opt2+opt3+opt4
  460. {{end}}
  461. var select="<div class='form-group'><label for='name'>选择分类:</label>"+
  462. "<select id='type_state' onchange='checkclick(this.value)' class='form-control input-sm'>"+
  463. opt+
  464. "</select></div>"
  465. $("#spider_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
  466. $("#spider_filter").prepend(select);
  467. //节点
  468. var spiderEvent="<option value='-1'>全部</option>"
  469. var events={{.T.events}}
  470. for(k in events){
  471. spiderEvent+="<option value='"+events[k]+"'>"+events[k]+"</option>"
  472. }
  473. var selectEvent="<div class='form-group'><label for='name'>节点:</label>"+
  474. "<select id='task_event' onchange='checkclick(this.value)' class='form-control input-sm'>"+
  475. spiderEvent+
  476. "</select></div>"
  477. $("#spider_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
  478. $("#spider_filter").prepend(selectEvent);
  479. //平台
  480. var platform="<div class='form-group'><label for='name'>平台:</label>"+
  481. "<select id='platform' onchange='checkclick(this.value)' class='form-control input-sm'>"+
  482. "<option value='-1'>全部</option>"+
  483. "<option value='golua平台'>golua平台</option>"+
  484. "<option value='python'>python</option>"+
  485. "<option value='通用爬虫'>通用爬虫</option>"+
  486. "<option value='chrome插件'>chrome插件</option>"+
  487. "</select></div>"
  488. $("#spider_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
  489. $("#spider_filter").prepend(platform);
  490. $("#spider_wrapper .col-sm-6").css({width:"100%"})//样式
  491. });
  492. })
  493. function checkclick(me){
  494. ttable.ajax.reload();
  495. }
  496. function selectrow(me){
  497. var sel=$(me);
  498. var isSelected=sel.prop('checked');
  499. if(isSelected){
  500. $("#spider td input[type=checkbox]").prop("checked",true);
  501. }else{
  502. $("#spider td input[type=checkbox]").prop("checked",false);
  503. }
  504. }
  505. function spidercopy(){
  506. $("#modal-spidercopy").modal("show");
  507. }
  508. //复制爬虫
  509. function comfirm_spidercopy(){
  510. var code = $("#spidercopy").val();
  511. if(code != ""){
  512. $.ajax({
  513. url:"/center/spider/copy",
  514. type:"post",
  515. data:{"code": code},
  516. success: function(r){
  517. if(r&&r.success){
  518. $("#modal-spidercopy").modal("hide");
  519. window.open("/center/spider/edit/"+r.encode+"__")
  520. }else{
  521. alert(r.text)
  522. }
  523. }
  524. })
  525. }else{
  526. alert("爬虫不能为空!")
  527. }
  528. }
  529. {{if gt (session "auth") 1}}
  530. function refuse(me){
  531. var $r=window.prompt("确定打回?请输入打回原因")
  532. if($r){
  533. $.ajax({
  534. url:$(me).attr("hrefs"),
  535. type:"post",
  536. data:{"reason":$r},
  537. success:function(r){
  538. if(r["err"] == ""){
  539. showTip("打回成功", 500, function() {});
  540. ttable.ajax.reload(null,false);
  541. }else{
  542. showMsg("打回失败", function() {});
  543. }
  544. }
  545. })
  546. }
  547. }
  548. //function disable(me){
  549. // showConfirm("确定作废?", function() {
  550. // $.ajax({
  551. // url:$(me).attr("hrefs"),
  552. // type:"post",
  553. // success:function(r){
  554. // if(r){
  555. // //showTip("作废成功", 1000, function() {});
  556. // ttable.ajax.reload(null,false);
  557. // }else{
  558. /// showTip("作废失败", 1000, function() {});
  559. // }
  560. // }
  561. // })
  562. // });
  563. //}
  564. function assign(){
  565. var names=[];
  566. $("#spider td input[type=checkbox]").each(function(){
  567. if($(this).prop("checked")){
  568. names.push($(this).attr("name"));
  569. }
  570. });
  571. if(names.length>0){
  572. $("#modal-assign .list-group").empty();
  573. for(var i in names){
  574. $("#modal-assign .list-group").append('<li class="list-group-item">'+names[i]+'</li>');
  575. }
  576. searchAssignModify();
  577. $("#modal-assign").modal("show");
  578. /**var email=window.prompt("您要转移:\n"+names.join("\n")+"\n==============请输入转移后的邮箱==============\n","");
  579. if(email && email!=""){
  580. $.ajax({
  581. url:"/center/user/assign",
  582. type:"post",
  583. data:{
  584. "ids":ids.join(","),
  585. "codes":codes.join(","),
  586. "email":email
  587. },
  588. success:function(r){
  589. if(r=="y"){
  590. showTip("分配成功", 500, function() {});
  591. $("#selrow").prop('checked',false);
  592. ttable.ajax.reload(null,false);
  593. }else if(r=="n"){
  594. showTip("分配失败", 1000, function() {});
  595. }else if(r=="null"){
  596. showTip("没有该用户,请重新输入", 1000, function() {});
  597. assign();
  598. }
  599. }
  600. })
  601. }*/
  602. }else{
  603. showTip("没有选择项", 1000, function() {});
  604. }
  605. }
  606. //作废
  607. function disables(){
  608. $("#modal-disables").modal("show");
  609. }
  610. //确认作废
  611. function comfirm_disables(){
  612. $("#modal-disables").modal("hide");
  613. var names=[];
  614. var ids=[];
  615. var codes=[];
  616. var disablereason = $("#disablereason").val();
  617. $("#spider td input[type=checkbox]").each(function(){
  618. if($(this).prop("checked")){
  619. names.push($(this).attr("name"));
  620. ids.push($(this).val());
  621. codes.push($(this).attr("code"));
  622. }
  623. });
  624. if(ids.length>0){
  625. showConfirm("确定作废?", function() {
  626. common.maskShow("正在处理...");
  627. $.ajax({
  628. url:"/center/spider/disable",
  629. type:"post",
  630. data:{"ids":ids.join(","),"names":names.join(","),"codes":codes.join(","),"disablereason":disablereason},
  631. success:function(r){
  632. common.maskHide();
  633. $("#selrow").prop('checked',false);
  634. showMsg(r, function() {});
  635. ttable.ajax.reload(null,false);
  636. }
  637. })
  638. });
  639. }else{
  640. showTip("没有选择项", 1000, function() {});
  641. }
  642. }
  643. function searchAssignModify(){
  644. $.post("/center/searchMintainer",function(r){
  645. var data = r.mintainer;
  646. console.log(data)
  647. $("#assign-modify").empty();
  648. $("#assign-modify").append("<option value=''>--请选择--</option>");
  649. for(var i in data){
  650. $("#assign-modify").append("<option value='"+data[i]["_id"]+"'>"+data[i]["s_email"]+"</option>");
  651. }
  652. })
  653. }
  654. function assign_cancel(){
  655. $("#modal-assign").modal("hide");
  656. }
  657. function disables_cancel(){
  658. $("#modal-disables").modal("hide");
  659. }
  660. function spidercopy_cancel(){
  661. $("#modal-spidercopy").modal("hide");
  662. }
  663. //分配爬虫
  664. function assign_save(){
  665. $("#modal-assign").modal("hide");
  666. var userid = $("#assign-modify").val();
  667. if(userid != ""){
  668. var codes=[];
  669. $("#spider td input[type=checkbox]").each(function(){
  670. if($(this).prop("checked")){
  671. codes.push($(this).attr("code"));
  672. //ids.push($(this).val());
  673. }
  674. });
  675. $.ajax({
  676. url:"/center/user/assign",
  677. type:"post",
  678. data:{
  679. "codes":codes.join(","),
  680. "userid":userid
  681. },
  682. success:function(r){
  683. if(r=="y"){
  684. showTip("分配成功", 500, function() {});
  685. $("#selrow").prop('checked',false);
  686. $('#com-alert').on('hidden.bs.modal', function () {
  687. ttable.ajax.reload();
  688. })
  689. }else if(r=="n"){
  690. showTip("分配失败", 1000, function() {});
  691. }else if(r=="null"){
  692. showTip("没有该用户,请重新输入", 1000, function() {});
  693. assign();
  694. }
  695. }
  696. })
  697. }else{
  698. return;
  699. }
  700. };
  701. //修改节点
  702. function createComboxEvent(id,state,code){
  703. var events={{.T.events}};
  704. var spiderEvent="";
  705. for(k in events){
  706. spiderEvent+="<option value='"+events[k]+"'>"+events[k]+"</option>"
  707. }
  708. return "<select onchange='changeEventOrStateOrPlatform(this.value,\"event\",\""+state+"\",\""+code+"\",\""+id+"\")' class='form-control input-sm'>"+spiderEvent+"</select>"
  709. };
  710. function createComboxState(id){
  711. return "<select id='task_state' onchange='changeEventOrStateOrPlatform(this.value,\"state\",\"\",\"\",\""+id+"\")' class='form-control input-sm'>"+
  712. "<option value='0' class='text-info text-bold'>待完成</option>"+
  713. "<option disabled value='1'>待审核</option>"+
  714. "<option disabled value='2'>未通过</option>"+
  715. "<option disabled value='3'>已通过</option>"+
  716. "<option disabled value='4'>已作废</option>"+
  717. "<option disabled value='5'>已上架</option>"+
  718. "<option disabled value='6'>已下架</option>"+
  719. "<option disabled value='7'>无发布</option>"+
  720. "<option disabled value='8'>需登录</option>"+
  721. "<option disabled value='9'>无法处理</option>"+
  722. "<option disabled value='10'>已删除</option>"+
  723. "<option disabled value='10'>已上线</option>"+
  724. +"</select>"
  725. };
  726. function createComboxPlatform(code,id){
  727. return "<select onchange='changeEventOrStateOrPlatform(this.value,\"platform\",\"\",\""+code+"\",\""+id+"\")' class='form-control input-sm'>"+
  728. "<option value='golua平台'>golua平台</option>"+
  729. "<option value='python'>python</option>"+
  730. "<option value='通用爬虫'>通用爬虫</option>"+
  731. "<option value='chrome插件'>chrome插件</option>"+
  732. "</select>"
  733. };
  734. function changeEventOrStateOrPlatform(val,w,s,c,id){
  735. $.ajax({
  736. url:"/center/spider/updateesp",
  737. type:"post",
  738. data:{
  739. "val":val,
  740. "w":w,
  741. "id":id,
  742. "s":s,
  743. "c":c
  744. },
  745. success:function(r){
  746. if(r=="n"){
  747. showTip("修改失败", 1000, function() {});
  748. }
  749. ttable.ajax.reload();
  750. }
  751. })
  752. }
  753. {{end}}
  754. </script>
  755. </div>
  756. {{include "bottom.html"}}