changePaper.js 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924
  1. test=function (element,id) {
  2. var data = $(event.target).val();
  3. $('#namelist'+id).html(getSpanHtml(getData(data)))
  4. // console.log(getData(data))
  5. }
  6. /*<![CDATA[*/
  7. getData = function (str) {
  8. var arr=str.split(";");
  9. var res = new Array();
  10. var tempArr;
  11. var tempStart
  12. var tempEnd
  13. for(var i =0;i<arr.length;i++){
  14. if(arr[i].indexOf("~")>=0){
  15. tempArr = arr[i].split("~");
  16. var tempStart = new Number(tempArr[0]);
  17. var tempEnd = new Number(tempArr[1]);
  18. for ( var ii =tempStart;ii<tempEnd;ii++){
  19. res.push(ii+"");
  20. }
  21. res.push(tempEnd+"");
  22. }else{
  23. res.push(arr[i]);
  24. }
  25. }
  26. return res;
  27. }
  28. getSpanHtml = function(data){
  29. var res = '';
  30. for(var i =0;i<data.length;i++){
  31. res+='<span class="badge bg-green">'+data[i]+'</span>'
  32. }
  33. return res;
  34. }
  35. getRealData = function(str){
  36. var arr = str.split("~");
  37. var start = new Number(arr[0]);
  38. var end = new Number(arr[1]);
  39. var res = new Array();
  40. for ( var i =start;i<end;i++){
  41. res.push(i+"");
  42. }
  43. res.push(end+"");
  44. return res;
  45. }
  46. addNewOption = function () {
  47. $('#maincontent').append('\n' +
  48. ' <div class="box box-info rule" id="rule' +ruleId+
  49. '">\n' +
  50. ' <div class="box-header with-border">\n' +
  51. ' <h3 class="box-title">定制审查选项</h3>\n' +
  52. ' <button type="submit" onclick="addCheck(' +ruleId+
  53. ')" class="btn btn-success pull-right">新建多选框</button>\n' +
  54. ' <button type="submit" onclick="addRatio(' +ruleId+
  55. ')" class="btn btn-success pull-right">新建单选框</button>\n' +
  56. ' <button type="submit" onclick="addSingleCheck(' +ruleId+
  57. ')" class="btn btn-success pull-right">新建单复选框</button>\n' +
  58. ' <button type="submit" onclick="addText(' +ruleId+
  59. ')" class="btn btn-success pull-right">新建文本框</button>\n' +
  60. ' <button type="submit" onclick="addUpload(' +ruleId+
  61. ')" class="btn btn-success pull-right">新建文件上传</button>\n' +
  62. ' </div>\n' +
  63. ' <!-- /.box-header -->\n' +
  64. ' <!-- form start -->\n' +
  65. ' <div class="form-horizontal">\n' +
  66. ' <div class="box-body">\n' +
  67. ' <div class="form-group">\n' +
  68. ' <label class="col-sm-2 control-label">适用报告列表</label>\n' +
  69. ' <div class="col-sm-10">\n' +
  70. ' <input onchange="test(this,' + ruleId + ')" class="form-control" id="fitlist' + ruleId+
  71. '" placeholder="请输入编号并用;分割,可用~输入连续的试题名称"/>\n' +
  72. ' </div>\n' +
  73. ' <label class="col-sm-2 control-label">已选报告列表</label>\n' +
  74. ' <div class="col-sm-10" id="namelist' +ruleId+
  75. '" >\n' +
  76. ' </div>\n' +
  77. ' </div>\n' +
  78. '\n' +
  79. ' <div class="form-group">\n' +
  80. ' <label class="col-sm-2 control-label">审查项</label>\n' +
  81. ' <div class="col-sm-10 ">\n' +
  82. ' <table class="table" id="table' + ruleId+
  83. '">\n' +
  84. '<tr>\n' +
  85. ' <td>\n' +
  86. ' 示例\n' +
  87. ' </td>\n' +
  88. ' <td>\n' +
  89. ' 标签\n' +
  90. ' </td>\n' +
  91. ' <td>\n' +
  92. ' 数据说明\n' +
  93. ' </td>\n' +
  94. ' <td>\n' +
  95. ' 操作\n' +
  96. ' </td>\n' +
  97. ' </tr>'+
  98. '\n' +
  99. ' </table>\n' +
  100. ' </div>\n' +
  101. ' </div>\n' +
  102. ' </div>\n' +
  103. ' <div class="box-footer">\n' +
  104. ' <button type="button" onclick="deleteRule(' +ruleId+
  105. ')" class="btn btn-default">删除</button>\n' +
  106. ' <button type="button" class="btn btn-default" onclick="showModal(' +ruleId+
  107. ')">\n' +
  108. ' 本地预览\n' +
  109. ' </button>\n' +
  110. ' <button type="button" onclick="addNewOption()" class="btn btn-info pull-right">继续添加</button>\n' +
  111. ' </div>\n' +
  112. ' </div>\n' +
  113. ' </div>');
  114. ruleId++;
  115. }
  116. addRatio = function (id) { // 添加单选框
  117. var table = $('#table'+id);
  118. var index = getNewRatioIndex();
  119. table.append('<tr type="ratio">\n' +
  120. ' <td>\n' +
  121. ' <div class="form-group">\n' +
  122. ' <div class="radio">\n' +
  123. ' <label>\n' +
  124. ' <input type="radio" name="optionsRadios' + index+
  125. '" value="option1" checked="checked"/>\n' +
  126. ' Option one\n' +
  127. ' </label>\n' +
  128. ' </div>\n' +
  129. ' <div class="radio">\n' +
  130. ' <label>\n' +
  131. ' <input type="radio" name="optionsRadios' +index+
  132. '" value="option2"/>\n' +
  133. ' Option two\n' +
  134. ' </label>\n' +
  135. ' </div>\n' +
  136. ' <div class="radio">\n' +
  137. ' <label>\n' +
  138. ' <input type="radio" name="optionsRadios' +index+
  139. '" value="option3" />\n' +
  140. ' Option three\n' +
  141. ' </label>\n' +
  142. ' </div>\n' +
  143. ' </div>\n' +
  144. ' </td>\n' +
  145. ' <td>\n' +
  146. ' <input onchange="showExampleRatioByLabel(this)" type="text" class="form-control" placeholder="选项说明"/>\n' +
  147. ' </td>\n' +
  148. ' <td>\n' +
  149. ' <input onchange="showExampleRatio(this)" type="text" class="form-control" placeholder="选项数据 请用;将选项分隔"/>\n' +
  150. ' </td>\n' +
  151. ' <td>\n' +
  152. ' <button onclick="upTr(this)" class="btn btn-default">上移</button>\n' +
  153. ' <button onclick="downTr(this,' +id+
  154. ')" class="btn btn-default">下移</button>\n' +
  155. ' <button onclick="deleteTr(this)" class="btn btn-warning">删除</button>\n' +
  156. ' </td>\n' +
  157. ' </tr>')
  158. }
  159. addText = function (id) { // 添加文字
  160. var table = $('#table'+id);
  161. table.append('<tr type="text">\n' +
  162. ' <td>\n' +
  163. ' <input type="text" class="form-control" placeholder="选项说明"/>\n' +
  164. ' </td>\n' +
  165. ' <td>\n' +
  166. ' <input onchange="showExampleText(this)" type="text" class="form-control" placeholder="选项数据"/>\n' +
  167. ' </td>\n' +
  168. ' <td>\n' +
  169. ' </td>\n' +
  170. ' <td>\n' +
  171. ' <button onclick="upTr(this)" class="btn btn-default">上移</button>\n' +
  172. ' <button onclick="downTr(this,' +id+
  173. ')" class="btn btn-default">下移</button>\n' +
  174. ' <button onclick="deleteTr(this)" class="btn btn-warning">删除</button>\n' +
  175. ' </td>\n' +
  176. ' </tr>')
  177. }
  178. addUpload = function(id){// add upload input
  179. var table = $('#table'+id); //
  180. table.append('<tr type="file">\n' +
  181. ' <td>\n' +
  182. '<div class="form-group">\n' +
  183. ' <label for="exampleFile' +id+
  184. '">File input</label>\n' +
  185. ' <input type="file" id="exampleFile' +id+
  186. '">\n' +
  187. ' </div>'+
  188. ' </td>\n' +
  189. ' <td>\n' +
  190. ' <input onchange="showExampleFile(this)" type="text" class="form-control" placeholder="请输入说明文字"/>\n' +
  191. ' </td>\n' +
  192. ' <td>\n' +
  193. ' </td>\n' +
  194. ' <td>\n' +
  195. ' <button onclick="upTr(this)" class="btn btn-default">上移</button>\n' +
  196. ' <button onclick="downTr(this,' +id+
  197. ')" class="btn btn-default">下移</button>\n' +
  198. ' <button onclick="deleteTr(this)" class="btn btn-warning">删除</button>\n' +
  199. ' </td>\n' +
  200. ' </tr>')
  201. }
  202. addSingleCheck = function (id) { // 添加多选框
  203. var table = $('#table'+id);
  204. table.append('<tr type="singleCheck">\n' +
  205. ' <td>\n' +
  206. ' <div class="form-group">\n' +
  207. ' <div class="checkbox">\n' +
  208. ' <label>\n' +
  209. ' <input type="checkbox"/>\n' +
  210. ' Checkbox 1\n' +
  211. ' </label>\n' +
  212. ' </div>\n' +
  213. ' </div>\n' +
  214. ' </td>\n' +
  215. ' <td>\n' +
  216. ' <input onchange="showExampleSingleByLabel(this)" type="text" class="form-control" placeholder="选项说明"/>\n' +
  217. ' </td>\n' +
  218. ' <td>\n' +
  219. ' <input onchange="showExampleSingle(this)" type="text" class="form-control" placeholder="选项数据"/>\n' +
  220. ' </td>\n' +
  221. ' <td>\n' +
  222. ' <button onclick="upTr(this)" class="btn btn-default">上移</button>\n' +
  223. ' <button onclick="downTr(this,' +id+
  224. ')" class="btn btn-default">下移</button>\n' +
  225. ' <button onclick="deleteTr(this)" class="btn btn-warning">删除</button>\n' +
  226. ' </td>\n' +
  227. ' </tr>')
  228. }
  229. addCheck = function (id) {
  230. var table = $('#table'+id);
  231. table.append('<tr type="check">\n' +
  232. ' <td>\n' +
  233. ' <div class="form-group">\n' +
  234. ' <div class="checkbox">\n' +
  235. ' <label>\n' +
  236. ' <input type="checkbox"/>\n' +
  237. ' Checkbox 1\n' +
  238. ' </label>\n' +
  239. ' </div>\n' +
  240. '\n' +
  241. ' <div class="checkbox">\n' +
  242. ' <label>\n' +
  243. ' <input type="checkbox"/>\n' +
  244. ' Checkbox 2\n' +
  245. ' </label>\n' +
  246. ' </div>\n' +
  247. '\n' +
  248. ' <div class="checkbox">\n' +
  249. ' <label>\n' +
  250. ' <input type="checkbox" />\n' +
  251. ' Checkbox disabled\n' +
  252. ' </label>\n' +
  253. ' </div>\n' +
  254. ' </div>\n' +
  255. ' </td>\n' +
  256. ' <td>\n' +
  257. ' <input onchange="showExampleCheckByLabel(this)" type="text" class="form-control" placeholder="选项说明"/>\n' +
  258. ' </td>\n' +
  259. ' <td>\n' +
  260. ' <input onchange="showExampleCheck(this)" type="text" class="form-control" placeholder="选项数据 请用;将选项分隔"/>\n' +
  261. ' </td>\n' +
  262. ' <td>\n' +
  263. ' <button onclick="upTr(this)" class="btn btn-default">上移</button>\n' +
  264. ' <button onclick="downTr(this,' +id +
  265. ')" class="btn btn-default">下移</button>\n' +
  266. ' <button onclick="deleteTr(this)" class="btn btn-warning">删除</button>\n' +
  267. ' </td>\n' +
  268. ' </tr>')
  269. };
  270. deleteTr = function(element){
  271. element.parentNode.parentNode.remove();
  272. }
  273. upTr = function(element){
  274. var $tr = $(element).parents("tr");
  275. if ($tr.index() != 1) {
  276. $tr.prev().before($tr);
  277. }
  278. }
  279. downTr = function (element,id) {
  280. var length = $('#table'+id +' tr').length;
  281. var $tr = $(element).parents("tr");
  282. if ($tr.index() != length - 1) {
  283. $tr.next().after($tr);
  284. }
  285. }
  286. deleteRule = function (id) {
  287. $('#rule'+id).remove()
  288. }
  289. showModal = function (id) {
  290. var body = $('#formBody');
  291. var myTable = document.getElementById("table"+id);
  292. body.html("");
  293. var da1 = $('#fitlist'+id).val();
  294. var selectedData = '<div class="form-group">\n' +
  295. ' <label class="col-sm-2 control-label">适用试题</label>\n' +
  296. ' <div class="col-sm-10">\n' +
  297. getSpanHtml(getData(da1))+
  298. ' </div>\n' +
  299. ' </div>';
  300. body.append(selectedData);
  301. var rowNum = myTable.rows.length;
  302. var tempdata = [];
  303. var td0;
  304. var tr;
  305. var type;
  306. for(var i = 0;i<rowNum;i++){
  307. tr = myTable.rows[i];
  308. type=tr.getAttribute("type");
  309. if(type=="singleCheck"){
  310. var singleCheckTip = myTable.rows[i].cells[1].children[0].value;
  311. var singleCheckData = myTable.rows[i].cells[2].children[0].value;
  312. console.log(singleCheckData,singleCheckTip)
  313. var singleCheckTemp = '<div class="form-group">\n' +
  314. ' <label class="col-sm-2 control-label">' +singleCheckTip+
  315. '</label>\n' +
  316. ' <div class="col-sm-10">\n' ;
  317. singleCheckTemp+='<div class="checkbox">\n' +
  318. ' <label>\n' +
  319. ' <input type="checkbox"/>\n' +singleCheckData+
  320. ' </label>\n' +
  321. ' </div>';
  322. singleCheckTemp+=
  323. ' </div>\n' +
  324. ' </div>';
  325. body.append(singleCheckTemp);
  326. }else if(type=="check"){
  327. var checkTip = myTable.rows[i].cells[1].children[0].value;
  328. var checkData = myTable.rows[i].cells[2].children[0].value;
  329. var checkArr = checkData.split(';');
  330. var checkTemp = '<div class="form-group">\n' +
  331. ' <label class="col-sm-2 control-label">' +checkTip+
  332. '</label>\n' +
  333. ' <div class="col-sm-10">\n' ;
  334. for( var checkJ = 0;checkJ<checkArr.length;checkJ++){
  335. checkTemp+='<div class="checkbox">\n' +
  336. ' <label>\n' +
  337. ' <input type="checkbox"/>\n' +checkArr[checkJ]+
  338. ' </label>\n' +
  339. ' </div>';
  340. }
  341. checkTemp+=
  342. ' </div>\n' +
  343. ' </div>';
  344. body.append(checkTemp);
  345. }else if(type=="ratio"){
  346. var ratioTip = myTable.rows[i].cells[1].children[0].value;
  347. var ratioData = myTable.rows[i].cells[2].children[0].value;
  348. var ratioArr = ratioData.split(';');
  349. var ratioTemp = '<div class="form-group">\n' +
  350. ' <label class="col-sm-2 control-label">' +ratioTip+
  351. '</label>\n' +
  352. ' <div class="col-sm-10">\n' ;
  353. for( var ratioJ = 0;ratioJ<ratioArr.length;ratioJ++){
  354. ratioTemp+='<div class="radio">\n' +
  355. ' <label>\n' +
  356. ' <input type="radio" name="optionsRadios' + i+
  357. '" value="' +ratioArr[ratioJ]+
  358. '"/>\n' +ratioArr[ratioJ]+
  359. ' </label>\n' +
  360. ' </div>';
  361. }
  362. ratioTemp+=
  363. ' </div>\n' +
  364. ' </div>';
  365. body.append(ratioTemp);
  366. }else if(type=="text"){
  367. var textData = myTable.rows[i].cells[1].children[0].value;
  368. body.append('<div class="form-group">\n' +
  369. ' <label class="col-sm-2 control-label">' +textData+
  370. '</label>\n' +
  371. ' <div class="col-sm-10">\n' +
  372. '<input class="form-control" placeholder="请输入"/>'+
  373. ' </div>\n' +
  374. ' </div>')
  375. }else if( type == "file"){
  376. // when the check item is file upload input
  377. var fileData = myTable.rows[i].cells[1].children[0].value;
  378. body.append('<div class="form-group">\n' +
  379. ' <label for="testApplication" class="col-sm-2 control-label">'+fileData+
  380. '</label>\n' +
  381. ' <div class="col-sm-10">\n' +
  382. ' <input type="file" />\n' +
  383. ' <!-- <p class="help-block">Example block-level help text here.</p>-->\n' +
  384. ' </div>\n' +
  385. ' </div>');
  386. }
  387. }
  388. $('#modal-default').modal('show');
  389. }
  390. showModalAlert = function () {
  391. var name = $('#name').val();
  392. }
  393. checkNum = function (event) {
  394. var num = event.target.value;
  395. console.log(num)
  396. if(!isNaN(num)&&num.length!=0){
  397. console.log(event.target.parentElement.parentElement)
  398. event.target.parentElement.parentElement.setAttribute("class","form-group has-success")
  399. if(event.target.nextSibling!=null){
  400. event.target.nextSibling.remove();
  401. }
  402. }else{
  403. var newNode = document.createElement("span");
  404. newNode.setAttribute("class","help-block")
  405. newNode.innerHTML =" 请输入数字 ";
  406. if(event.target.nextSibling!=null){
  407. event.target.nextSibling.remove();
  408. }
  409. event.target.parentNode.insertBefore(newNode,event.target.nextSibling)
  410. // if(event.target.nextSibling!=null){
  411. // }else{
  412. // event.target.parentNode.insertBefore(newNode,event.target.nextSibling)
  413. // }
  414. event.target.parentElement.parentElement.setAttribute("class","form-group has-error")
  415. }
  416. }
  417. str2number = function(data){
  418. // refer : https://blog.csdn.net/u010865136/article/details/49336255
  419. return parseInt(data)
  420. }
  421. checkNull = function (event) {
  422. var num = event.target.value;
  423. console.log(num)
  424. if(num!=null&&num.length!=0){
  425. console.log(event.target.parentElement.parentElement)
  426. event.target.parentElement.parentElement.setAttribute("class","form-group has-success")
  427. if(event.target.nextSibling!=null){
  428. event.target.nextSibling.remove();
  429. }
  430. }else{
  431. var newNode = document.createElement("span");
  432. newNode.setAttribute("class","help-block")
  433. newNode.innerHTML =" 请填写 ";
  434. if(event.target.nextSibling==null){
  435. event.target.parentNode.insertBefore(newNode,event.target.nextSibling)
  436. }
  437. event.target.parentElement.parentElement.setAttribute("class","form-group has-error")
  438. }
  439. }
  440. showExampleFile = function (element) {
  441. var td = $(element).parents("td").prev("td"); // 获取示例
  442. var data = $(element).val();
  443. td.html('<div class="form-group">\n' +
  444. ' <label class="col-sm-3 control-label">' + data +
  445. '</label>\n' +
  446. ' <div class="col-sm-9">\n' +
  447. ' <input type="file" />\n' +
  448. ' </div>\n' +
  449. ' </div>')
  450. }
  451. showExampleText = function (element) {
  452. var $tr = $(element).parents("td").prev("td"); // 获取上一个元素
  453. var data = $(element).val();
  454. $tr.html('<div class="form-group">\n' +
  455. ' <label class="col-sm-3 control-label">' +data+
  456. '</label>\n' +
  457. '\n' +
  458. ' <div class="col-sm-9">\n' +
  459. ' <input type="text" class="form-control" placeholder="请输入">\n' +
  460. ' </div>\n' +
  461. ' </div>')
  462. }
  463. showExampleRatio = function (element) { // xuanxiang shuju
  464. // 显示单选框
  465. var dataRatio = $(element).parents("td").prev("td").prev("td"); // 获取展示的元素
  466. var data = $(element).val();
  467. var label = $(element).parents("td").prev("td").children("input").val();
  468. dataRatio.html(getExampleRatioHtml(label,data));
  469. }
  470. //show example ratio by label ;
  471. showExampleRatioByLabel = function(element){
  472. // 显示单选框
  473. var dataRatio = $(element).parents("td").prev("td"); // 获取展示的元素
  474. var label = $(element).val();
  475. var data = $(element).parents("td").next("td").children("input").val();
  476. dataRatio.html(getExampleRatioHtml(label,data));
  477. }
  478. getExampleRatioHtml = function(label,data){
  479. var index = getNewRatioIndex();
  480. var ratioArr = data.split(';');
  481. var ratioTemp = '<div class="form-group">\n' +
  482. ' <label class="col-sm-3 control-label">' +label+
  483. '</label>\n' +
  484. ' <div class="col-sm-9">\n' ;
  485. for( var ratioJ = 0;ratioJ<ratioArr.length;ratioJ++){
  486. ratioTemp+='<div class="radio">\n' +
  487. ' <label>\n' +
  488. ' <input type="radio" name="optionsRadios' + index+
  489. '" value="' +ratioArr[ratioJ]+
  490. '"/>\n' +ratioArr[ratioJ]+
  491. ' </label>\n' +
  492. ' </div>';
  493. }
  494. ratioTemp+=
  495. ' </div>\n' +
  496. ' </div>';
  497. return ratioTemp;
  498. }
  499. showExampleSingle = function(element){
  500. //单复选框
  501. var dataRatio = $(element).parents("td").prev("td").prev("td"); // 获取展示的元素
  502. var data = $(element).val();
  503. var label = $(element).parents("td").prev("td").children("input").val();
  504. dataRatio.html(getExampleSingleHtml(label,data));
  505. }
  506. showExampleSingleByLabel = function(element){
  507. //单复选框
  508. var dataRatio = $(element).parents("td").prev("td"); // 获取展示的元素
  509. var label = $(element).val();
  510. var data = $(element).parents("td").next("td").children("input").val();
  511. dataRatio.html(getExampleSingleHtml(label,data));
  512. }
  513. getExampleSingleHtml = function(label,data ){
  514. var singleCheckTip = label;
  515. var singleCheckData = data;
  516. var singleCheckTemp = '<div class="form-group">\n' +
  517. ' <label class="col-sm-3 control-label">' +singleCheckTip+
  518. '</label>\n' +
  519. ' <div class="col-sm-9">\n' ;
  520. singleCheckTemp+='<div class="checkbox">\n' +
  521. ' <label>\n' +
  522. ' <input type="checkbox"/>\n' +singleCheckData+
  523. ' </label>\n' +
  524. ' </div>';
  525. singleCheckTemp+=
  526. ' </div>\n' +
  527. ' </div>';
  528. return singleCheckTemp;
  529. }
  530. showExampleCheck = function(element){
  531. //复选框
  532. var dataRatio = $(element).parents("td").prev("td").prev("td"); // 获取展示的元素
  533. var data = $(element).val();
  534. var label = $(element).parents("td").prev("td").children("input").val();
  535. dataRatio.html(getExampleCheckHtml(label,data));
  536. }
  537. showExampleCheckByLabel = function( element ){
  538. //复选框
  539. var dataRatio = $(element).parents("td").prev("td"); // 获取展示的元素
  540. var label = $(element).val();
  541. var data = $(element).parents("td").next("td").children("input").val();
  542. dataRatio.html(getExampleCheckHtml(label,data));
  543. }
  544. getExampleCheckHtml = function(label,data){
  545. // ---
  546. var checkTip = label;
  547. var checkData = data;
  548. var checkArr = checkData.split(';');
  549. var checkTemp = '<div class="form-group">\n' +
  550. ' <label class="col-sm-3 control-label">' +checkTip+
  551. '</label>\n' +
  552. ' <div class="col-sm-9">\n' ;
  553. for( var checkJ = 0;checkJ<checkArr.length;checkJ++){
  554. checkTemp+='<div class="checkbox">\n' +
  555. ' <label>\n' +
  556. ' <input type="checkbox"/>\n' +checkArr[checkJ]+
  557. ' </label>\n' +
  558. ' </div>';
  559. }
  560. checkTemp+=
  561. ' </div>\n' +
  562. ' </div>';
  563. return checkTemp;
  564. }
  565. getDataSplit = function ( str ) {
  566. var arr=str.split(";");
  567. var res = new Array();
  568. for(var i =0;i<arr.length;i++){
  569. res.push(arr[i]);
  570. }
  571. return res;
  572. }
  573. //获取在本页面不会重复的ratio
  574. getNewRatioIndex = function () {
  575. ratioIndex++;
  576. return ratioIndex;
  577. }
  578. generateJson = function( paperId, type ){
  579. // 遍历页面上的数据,生成json数据。
  580. var data = new Object();
  581. data.description = $('#description').val();
  582. data.name = $('#name').val();
  583. // data.time = $('#reservationtime').val();
  584. data.type = $('#testType').val();
  585. data.application_url = $('#testApplication').attr('value')==null?'':$('#testApplication').attr('value');
  586. data.requirement_url = $('#testRequirement').attr('value')==null?'':$('#testRequirement').attr('value');
  587. data.report_num = str2number( $('#reportNum').val() );
  588. data.create_time = $('#createTime').val();
  589. // data.worker_num = str2number( $('#auditNum').val() );
  590. var item_group_list = new Array();
  591. $('.rule').each(function () {
  592. // every item information
  593. var element = $(this);
  594. var temp = new Object();
  595. var reportTemp = new Object()
  596. var ruleIndex = element.attr("id").charAt(4); // index is 4 (like)
  597. // temp.index = ruleIndex;
  598. var examples = $('#namelist'+ruleIndex).children();
  599. var tempExample ;
  600. var report_list = new Array();
  601. for ( var i =0;i<examples.length;i++){
  602. tempExample = examples[i];
  603. // reportTemp = new Object();
  604. // reportTemp.report_index = tempExample.innerHTML;
  605. report_list.push(str2number(tempExample.innerHTML));
  606. }
  607. temp.report_list = report_list
  608. temp.origin_report_list = $('#fitlist'+ruleIndex).val();
  609. // bianli biao
  610. var myTable = document.getElementById("table"+ruleIndex) ; //
  611. var rowNum = myTable.rows.length;
  612. var tr;
  613. var type;
  614. var item_list = new Array();
  615. var itemTemp ;
  616. for(var i = 1;i<rowNum;i++){
  617. itemTemp = new Object()
  618. tr = myTable.rows[i];
  619. type=tr.getAttribute("type");
  620. itemTemp.index = (i-1);
  621. itemTemp.is_required = true;
  622. var options = new Array()
  623. if(type=="singleCheck"){
  624. var singleCheckTip = myTable.rows[i].cells[1].children[0].value;
  625. var singleCheckData = myTable.rows[i].cells[2].children[0].value;
  626. itemTemp.description = singleCheckTip
  627. // itemTemp.is_multiple ="0"
  628. itemTemp.type="Multiple"
  629. // var optionS = new Object();
  630. // optionS.option = singleCheckData
  631. itemTemp.originTip = singleCheckTip;
  632. itemTemp.originData = singleCheckTip;
  633. itemTemp.originType = "singleCheck"
  634. options.push(singleCheckData)
  635. }else if(type=="check"){
  636. var checkTip = myTable.rows[i].cells[1].children[0].value;
  637. var checkData = myTable.rows[i].cells[2].children[0].value;
  638. itemTemp.description = checkTip;
  639. // itemTemp.is_multiple = "1"
  640. itemTemp.type="Multiple"
  641. itemTemp.originType = "multiple"
  642. itemTemp.originTip = checkTip;
  643. itemTemp.originData = checkData;
  644. var optionC ;
  645. var checkArr = checkData.split(';');
  646. for( var checkJ = 0;checkJ<checkArr.length;checkJ++){
  647. // optionC = new Object();
  648. // optionC.option = checkArr[checkJ]
  649. options.push(checkArr[checkJ])
  650. }
  651. }else if(type=="ratio"){
  652. var ratioTip = myTable.rows[i].cells[1].children[0].value;
  653. var ratioData = myTable.rows[i].cells[2].children[0].value;
  654. var ratioArr = ratioData.split(';');
  655. itemTemp.description = ratioTip;
  656. // itemTemp.is_multiple = "0"
  657. itemTemp.type="Single"
  658. itemTemp.originTip = ratioTip;
  659. itemTemp.originData = ratioData;
  660. var optionR ;
  661. for( var ratioJ = 0;ratioJ<ratioArr.length;ratioJ++){
  662. // optionR = new Object();
  663. // optionR.option = ratioArr[ratioJ]
  664. options.push(ratioArr[ratioJ])
  665. }
  666. }else if(type=="text"){
  667. var textData = myTable.rows[i].cells[1].children[0].value;
  668. itemTemp.description = textData;
  669. // itemTemp.is_multiple = "0"
  670. itemTemp.type="Description"
  671. itemTemp.originData = textData;
  672. // var optionT = new Object();
  673. // optionT.option = ""
  674. // options.push("")
  675. }else if( type == "file"){
  676. var fileData = myTable.rows[i].cells[1].children[0].value;
  677. itemTemp.description = fileData;
  678. // itemTemp.is_multiple = "0"
  679. itemTemp.type="File"
  680. itemTemp.originData=fileData;
  681. // var optionF = new Object();
  682. // optionF.option = ""
  683. // options.push("")
  684. }
  685. itemTemp.options= options
  686. item_list.push(itemTemp)
  687. }
  688. temp.item_list=item_list
  689. item_group_list.push(temp)
  690. // console.log(JSON.stringify(temp))
  691. })
  692. data.item_group_list = item_group_list
  693. data.report_list = getReportInfo()
  694. // data.group_list = getDeliverInfo()
  695. console.log(JSON.stringify(data));
  696. // 提交
  697. //check
  698. // $.ajax({
  699. // url: 'http://10.0.0.29:8090/Bug/api/extra/uploadJob',
  700. // data: {
  701. // 'jobJson': JSON.stringify(data)
  702. // },
  703. // type: 'POST',
  704. // success: function (result) {
  705. // var obj = eval('(' + result + ')');
  706. // console.log(obj)
  707. // }
  708. // })
  709. // return ;
  710. // 发送请求
  711. $.ajax({
  712. url: 'http://'+reportHost+'/Bug/api/paper/updatePaper',
  713. data:{
  714. 'paperId':paperId,
  715. 'paperJson':JSON.stringify(data)
  716. },
  717. type: 'POST',
  718. success: function (result) {
  719. // alert(result);
  720. console.log(result);
  721. var obj = eval('(' + result + ')');
  722. console.log(obj)
  723. console.log(obj["id"])
  724. console.log(obj['status']);
  725. if(obj['status'] == 'fail'){
  726. $.notify({
  727. // options
  728. message: obj['message']
  729. },{
  730. // settings
  731. delay: 100,
  732. timer: 1000,
  733. type: 'error'
  734. });
  735. }else{
  736. // success
  737. var jobId = obj['paperId'];
  738. if ( type == 1 ){
  739. // var workid = getOneWorker();
  740. // console.log("worke")
  741. // console.log(workid)
  742. window.open('http://'+reportHost+'/report/review/paper/'+paperId)
  743. }else{
  744. $.notify({
  745. // options
  746. message: '添加成功,paperid为'+jobId
  747. },{
  748. // settings
  749. delay: 100,
  750. timer: 3000,
  751. type: 'success'
  752. });
  753. }
  754. }
  755. }
  756. });
  757. }
  758. showyu = function (){
  759. generateJson(paperId,1)
  760. }
  761. savePaper = function(){
  762. generateJson(paperId,0)
  763. }
  764. getReportInfo = function(){
  765. var str = $('#reportInfo').val();
  766. console.log(str)
  767. var obj = eval('(' + str + ')');
  768. // var tessst = new Object()
  769. // tessst.reports = obj
  770. console.log(JSON.stringify(obj))
  771. return obj
  772. }
  773. getDeliverInfo = function () {
  774. var str = $('#deliverInfo').val();
  775. console.log(str)
  776. var obj = eval('(' + str + ')');
  777. // var tessst = new Object()
  778. // tessst.reports = obj
  779. console.log(JSON.stringify(obj))
  780. return obj
  781. }
  782. changeJob = function () {
  783. $('#modal-reload').modal('show');
  784. }
  785. reloadJob = function () {
  786. var jobId = $('#jobid').val();
  787. location.href = '/addTask?jobid='+jobid
  788. }
  789. getOneWorker = function () {
  790. // var str = $('#deliverInfo').val();
  791. // // console.log(str)
  792. // var obj = eval('(' + str + ')');
  793. // console.log(obj[0].worker_list[0])
  794. // return obj[0].worker_list[0];
  795. return 1
  796. };
  797. getCleanStr = function (str) {
  798. var obj = eval('(' + str + ')');
  799. var formattedStr = JSON.stringify(obj, null, 2);
  800. return formattedStr;
  801. };
  802. function uploadFile( elementId) {
  803. var obj = $('#'+elementId).get(0)
  804. var file = obj.files[0];//获取文件流
  805. var val = obj.value;
  806. var suffix = val.substr(val.indexOf("."));
  807. var storeAs = "auditPaper/" + timestamp() +getShortId()+ suffix;
  808. // console.log(file.name + ' => ' + storeAs);
  809. client.multipartUpload(storeAs, file).then(function (result) {
  810. console.log('http://mooctest-site.oss-cn-shanghai.aliyuncs.com/'+storeAs)
  811. $('#'+elementId).attr('value','http://mooctest-site.oss-cn-shanghai.aliyuncs.com/'+storeAs)
  812. }).catch(function (err) {
  813. console.log(err);
  814. });
  815. }
  816. /**
  817. * 生成文件名
  818. * @returns
  819. */
  820. function timestamp(){
  821. var time = new Date();
  822. var y = time.getFullYear();
  823. var m = time.getMonth()+1;
  824. var d = time.getDate();
  825. var h = time.getHours();
  826. var mm = time.getMinutes();
  827. var s = time.getSeconds();
  828. console.log(y);
  829. return ""+y+add0(m)+add0(d)+"/"+add0(h)+add0(mm)+add0(s);
  830. }
  831. function add0(m){
  832. return m<10?'0'+m : m;
  833. }
  834. function getShortId () {
  835. if (paperId==null){
  836. return "0000"
  837. }else if (paperId.length < 4 ){
  838. return paperId
  839. }else{
  840. return paperId.substring(paperId.length-4, paperId.length);
  841. }
  842. }
  843. setShowRule = function (str) {
  844. var obj = eval('(' + str + ')');
  845. console.log(obj)
  846. var body = $('#showReport');
  847. var temp ;
  848. for (var i = 0 ; i < obj.length; i++){
  849. temp = obj[i]
  850. body.append(showSingleRule(temp))
  851. }
  852. }
  853. showSingleRule = function ( obj ){
  854. return '<div class="morris-hover morris-default-style col-lg-3 col-sm-6 col-md-4" >\n' +
  855. ' <div class="callout callout-my">\n' +
  856. ' <p><span class="show-report-left">index:</span>'+getShortDes(obj['index'],20)+'</p>\n' +
  857. ' <p><span class="show-report-left">name:</span>'+getShortDes(obj['name'],20)+'</p>\n' +
  858. ' <p><span class="show-report-left">file_url:</span>'+getShortDes(obj['file_url'],20)+'</p>\n' +
  859. ' <p><span class="show-report-left">img_url:</span>'+getShortDes(obj['img_url'],20)+'</p>\n' +
  860. ' <p><span class="show-report-left">original_id:</span>'+getShortDes(obj['original_id'],20)+'</p>\n' +
  861. ' <p><span class="show-report-left">description:</span>'+getShortDes(obj['description'],60)+'</p>\n' +
  862. ' </div>\n' +
  863. ' </div>'
  864. }
  865. getShortDes = function (test, length ) {
  866. if(test.length>length+1){
  867. return test.substr(0,length)+'...';
  868. }
  869. return test;
  870. }
  871. /*]]>*/