project_clear.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. {{include "com/inc.html"}}
  2. <!-- Main Header -->
  3. {{include "com/header.html"}}
  4. <!-- Left side column. 权限菜单 -->
  5. {{include "com/menu.html"}}
  6. <div class="content-wrapper">
  7. <section class="content-header">
  8. <h1>
  9. <small></small>
  10. </h1>
  11. <ol class="breadcrumb">
  12. <li><a href="/front/project"><i class="fa fa-dashboard"></i> 项目列表</a></li>
  13. <li><a href="#"><i class="fa fa-dashboard"></i> 项目清洗</a></li>
  14. </ol>
  15. </section>
  16. <!-- Main content -->
  17. <section class="content">
  18. <div class="row">
  19. <div class="col-xs-12">
  20. <div class="box">
  21. <div class="box-body">
  22. <div class="form-horizontal">
  23. <div class="box-body margin">
  24. <h3><i class="glyphicon glyphicon-exclamation-sign" style="margin-right: 6px"></i>数据情况
  25. </h3>
  26. <div class="form-group" style="margin-left: 15px">
  27. <span class="form-inline panel-body">分发总量/数据总量(条):
  28. <input type="text" class="form-control" readonly value="{{.T.allGiveDataNum}}/{{.T.allDataNum}}">
  29. </span>
  30. </div>
  31. <div class="form-group" style="margin-left: 10px">
  32. <div class="col-xs-6" style="width: auto">
  33. <label class="form-inline">数据总量:
  34. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.allDataNum}}"></label>
  35. <label class="form-inline" style="margin-left: 20px">已分发:
  36. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.allGiveDataNum}}"></label>
  37. <label class="form-inline" style="margin-left: 20px">待分发:
  38. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.allNoGiveDataNum}}"></label>
  39. <label class="form-inline" style="margin-left: 20px">已标注:
  40. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.allIsTagDataNum}}"></label>
  41. </div>
  42. <div class="col-xs-3 form-group">
  43. <label class="form-inline">操作:
  44. <input type="button" class="btn btn-info" onclick="dispatchTak('all')" value="分发">
  45. <input type="button" class="btn btn-primary" value="质检">
  46. <input type="button" class="btn btn-success" value="质检结果">
  47. </label>
  48. </div>
  49. </div>
  50. <div class="form-group" style="margin-left: 10px">
  51. <div class="col-xs-6" style="width: auto">
  52. <label class="form-inline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;达标:
  53. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.okAllDataNum}}"></label>
  54. <label class="form-inline" style="margin-left: 20px">已分发:
  55. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.okIsGiveDataNum}}"></label>
  56. <label class="form-inline" style="margin-left: 20px">待分发:
  57. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.okNotGiveDataNum}}"></label>
  58. <label class="form-inline" style="margin-left: 20px">已标注:
  59. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.okIsTagDataNum}}"></label>
  60. </div>
  61. <div class="col-xs-3 form-group">
  62. <label class="form-inline">操作:
  63. <input type="button" class="btn btn-info" onclick="dispatchTak('notag')" value="分发">
  64. <input type="button" class="btn btn-primary" value="质检">
  65. <input type="button" class="btn btn-success" value="质检结果">
  66. </label>
  67. </div>
  68. </div>
  69. <div class="form-group" style="margin-left: 10px">
  70. <div class="col-xs-6" style="width: auto">
  71. <label class="form-inline">&nbsp;&nbsp;&nbsp;&nbsp;未达标:
  72. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.IsNoOkAllDataNum}}"></label>
  73. <label class="form-inline" style="margin-left: 20px">已分发:
  74. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.IsNoOkIsGiveDataNum}}"></label>
  75. <label class="form-inline" style="margin-left: 20px">待分发:
  76. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.IsNotOkNotGiveDataNum}}"></label>
  77. <label class="form-inline" style="margin-left: 20px">已标注:
  78. <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.IsNotOkIsTagDataNum}}"></label>
  79. </div>
  80. <div class="col-xs-3 form-group">
  81. <label class="form-inline">操作:
  82. <input type="button" class="btn btn-info" onclick="dispatchTak('tag')" value="分发">
  83. <input type="button" class="btn btn-primary" value="质检">
  84. <input type="button" class="btn btn-success" value="质检结果">
  85. </label>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. <hr>
  91. <div class="form-horizontal">
  92. <div class="box-body margin">
  93. <h3><i class="glyphicon glyphicon-tasks" style="margin-right: 6px"></i>数据清洗任务列表
  94. </h3>
  95. <table id="dataTable" class="table table-bordered table-hover">
  96. <thead>
  97. <tr>
  98. <th></th>
  99. <th>项目名称</th>
  100. <th>用户组名称</th>
  101. <th>负责人</th>
  102. <th>分发数据量</th>
  103. <th>任务状态</th>
  104. <th>完成进度</th>
  105. <th>任务时间</th>
  106. <th>操作</th>
  107. </tr>
  108. </thead>
  109. </table>
  110. </div>
  111. </div>
  112. </div>
  113. <!-- /.box-body -->
  114. </div>
  115. <!-- /.box -->
  116. </div>
  117. </div>
  118. </section>
  119. </div>
  120. <div class="modal fade" id="modal-create-task" tabindex="-1" role="dialog" aria-hidden="true">
  121. <div class="modal-dialog" style="width: 60%">
  122. <div class="modal-content">
  123. <div class="modal-header">
  124. <div class="modal-header">
  125. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  126. <div class="edit-info">
  127. <span class="glyphicon glyphicon-tasks" aria-hidden="true"></span>
  128. <span class="h3">新建任务</span>
  129. </div>
  130. <div class="edit-form">
  131. <form id="modal-form-task" class="form-horizontal">
  132. <div class="modal-body modal-task">
  133. <div class="form-group margin-bottom" style="margin-left: 15px">
  134. <label class="control-label form-inline h4">待分发数据总量(条):
  135. <span>0</span>
  136. </label>
  137. </div>
  138. <hr>
  139. <div style="margin-left: 15px;">
  140. <label>分发信息:</label>
  141. <input type="button" class="btn btn-info btn-sm" onclick="addTaskSelect()" value="新增">
  142. </div>
  143. <div></div>
  144. <div id="TaskDiv">
  145. <div id="itemDiv" class="form-group" style="margin-left: 10px;display: none">
  146. <select id="group-select-clone"></select>
  147. <label class="control-label form-inline" style="margin-left: 20px">数据量(条):
  148. <input type="number" class="form-control" required></label>
  149. </div>
  150. <div class="form-group itemDiv" style="margin-left: 10px;">
  151. <select class="selectpicker" id="group-select"></select>
  152. <label class="control-label form-inline" style="margin-left: 20px">数据量(条):
  153. <input type="number" class="form-control by-use" required></label>
  154. </div>
  155. </div>
  156. </div>
  157. </form>
  158. </div>
  159. </div>
  160. </div>
  161. <div class="modal-footer">
  162. <input type="button" onclick="saveTask()" class="btn btn-primary" value="保存">
  163. <input type="button" onclick="cancelModel()" class="btn btn-default" value="取消">
  164. </div>
  165. </div>
  166. </div><!-- /.modal -->
  167. </div>
  168. {{include "com/footer.html"}}
  169. <script>
  170. menuActive("project");
  171. let projectid = {{ .T.s_projectid }}
  172. let groupList = []
  173. let tableData = []
  174. let stype = "" // 分发类型:所有数据:all 达标数据:notag 未达标:tag
  175. $(function () {
  176. ttable = $('#dataTable').dataTable({
  177. "paging": true,
  178. "lengthChange": false,
  179. "searching": true,
  180. "ordering": false,
  181. "info": true,
  182. "autoWidth": false,
  183. "language": {
  184. "url": "/dist/js/dataTables.chinese.lang"
  185. },
  186. "fnDrawCallback": function () {
  187. $("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>");
  188. $('#dataTable-btn').click(function (e) {
  189. var redirectpage = 0
  190. if ($("#changePage").val() && $("#changePage").val() > 0) {
  191. var redirectpage = $("#changePage").val() - 1;
  192. }
  193. ttable.page(redirectpage).draw(false);
  194. });
  195. this.api().column(0).nodes().each(function (cell, i) {
  196. cell.innerHTML = i + 1;
  197. });
  198. },
  199. "columns": [
  200. {"data": "", width: "1%"},
  201. {"data": "s_entname", width: "5%"},
  202. {"data": "s_departname", width: "4%"},
  203. {"data": "s_rulename", width: "4%"},
  204. {"data": "s_name", width: "4%"},
  205. {"data": "s_personname", width: "4%"},
  206. {"data": "i_importnum", width: "4%"},
  207. {"data": "s_status", width: "4%"},
  208. {
  209. "data": "_id", width: "11%", render: function (val, a, row, pos) {
  210. tmp = '<div>' +
  211. '<a class="btn btn-sm btn-primary" onclick="editPro(\'' + pos.row + '\')">编辑</a>&nbsp;&nbsp;' +
  212. '<a class="btn btn-sm btn-warning" href="/front/project/clear?pid=' + val + '">清洗</a>&nbsp;&nbsp;' +
  213. '<a class="btn btn-sm btn-info" onclick="del(\'' + val + '\')">判重</a>&nbsp;&nbsp;' +
  214. '<a class="btn btn-sm btn-default" href="">完成</a>&nbsp;&nbsp;' +
  215. '</div>';
  216. return tmp
  217. }
  218. }
  219. ]
  220. });
  221. $.ajax({
  222. url: "/front/project/task/list",
  223. type: "POST",
  224. data: {"pid": projectid},
  225. success: function (r) {
  226. if (r.data.length > 0) {
  227. ttable.fnClearTable();
  228. ttable.fnAddData(r.data);
  229. }
  230. }
  231. })
  232. $.ajax({
  233. url: "/front/group/list",
  234. type: "POST",
  235. data: {},
  236. success: function (r) {
  237. if (r.rep) {
  238. groupList = r.data
  239. console.log(groupList)
  240. }
  241. }
  242. })
  243. });
  244. function del(id) {
  245. showConfirm("确定删除该用户组?", function () {
  246. $.ajax({
  247. url: "",
  248. type: 'POST',
  249. data: {"id": id},
  250. success: function (r) {
  251. if (r.rep) {
  252. } else {
  253. showTip("状态修改失败");
  254. }
  255. }
  256. })
  257. })
  258. }
  259. function dispatchTak(val) {
  260. stype = val
  261. $('#modal-create-task').modal('show')
  262. for (var i in groupList) {
  263. var opt = document.createElement('option');
  264. opt.innerText = groupList[i]["s_name"];
  265. opt.value = groupList[i]["_id"];
  266. $('#group-select')[0].appendChild(opt)
  267. }
  268. $("#group-select").selectpicker("refresh");
  269. console.log(val)
  270. }
  271. function cancelModel() {
  272. $('#TaskDiv .form-group .clone-template').remove()
  273. $("#modal-create-task").modal('hide')
  274. document.getElementById("modal-form-task").reset();
  275. }
  276. function addTaskSelect() {
  277. let tNode = $('#itemDiv').clone().addClass('clone-template').addClass('used').show()
  278. let st = $(tNode).find('select')
  279. $(st).addClass('selectpicker')
  280. for (var i in groupList) {
  281. var opt = document.createElement('option');
  282. opt.innerText = groupList[i]["s_name"];
  283. opt.value = groupList[i]["_id"];
  284. $(st)[0].appendChild(opt)
  285. }
  286. $(st).selectpicker("refresh");
  287. $('#TaskDiv').append($(tNode))
  288. }
  289. function saveTask() {
  290. console.log(stype)
  291. $('#TaskDiv select').each(function () {
  292. let ms = $(this).find("option:checked").val()
  293. console.log(ms)
  294. })
  295. $('#TaskDiv input').each(function () {
  296. let ms = $(this).val()
  297. console.log(ms)
  298. })
  299. let arr = []
  300. arr.push({"s_groupid": "61a47d76c908d368871f5033", "s_groupname": "ceshi", "s_personname": "111", "i_givenum": 100})
  301. console.log(JSON.stringify(arr))
  302. $.ajax({
  303. url: "/front/project/task/save",
  304. type: 'POST',
  305. data: {"s_projectid": projectid, "s_group": JSON.stringify(arr), "s_type": stype},
  306. success: function (r) {
  307. if (r.success) {
  308. location.reload()
  309. } else {
  310. showTip(r.msg);
  311. }
  312. }
  313. })
  314. }
  315. </script>