feeding.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form','jQuery.print'], function ($, undefined, Backend, Table, Form) {
  2. var Controller = {
  3. index: function () {
  4. // 初始化表格参数配置
  5. Table.api.init({
  6. extend: {
  7. index_url: 'feeding/index' + location.search,
  8. add_url: 'feeding/add',
  9. edit_url: 'feeding/edit',
  10. del_url: 'feeding/del',
  11. multi_url: 'feeding/multi',
  12. import_url: 'feeding/import',
  13. table: 'feeding',
  14. }
  15. });
  16. var table = $("#table");
  17. // 初始化表格
  18. table.bootstrapTable({
  19. url: $.fn.bootstrapTable.defaults.extend.index_url,
  20. pk: 'id',
  21. sortName: 'id',
  22. fixedColumns: true,
  23. fixedRightNumber: 1,
  24. columns: [
  25. [
  26. {checkbox: true},
  27. {field: 'id', title: __('Id')},
  28. {field: 'bach', title: __('Bach'), operate: 'LIKE'},
  29. {field: 'material', title: __('Material'), operate: 'LIKE'},
  30. {field: 'nweight', title: __('Nweight'), operate: 'LIKE'},
  31. {field: 'weight', title: __('Weight'), operate: 'LIKE'},
  32. {field: 'gy_num', title: __('Gy_num')},
  33. {field: 'date', title: __('Date'), operate: 'LIKE'},
  34. {field: 'operator', title: __('Operator'), operate: 'LIKE'},
  35. // {field: 'tid', title: __('Tid')},
  36. {field: 'inspector', title: __('Inspector'), operate: 'LIKE'},
  37. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  38. ]
  39. ]
  40. });
  41. table.on('post-body.bs.table',function(){
  42. $(".btn-add").data("area",["100%","100%"]);
  43. });
  44. // 为表格绑定事件
  45. Table.api.bindevent(table);
  46. },
  47. add: function () {
  48. var num=0;
  49. $('#c-bach').keydown((e)=>{
  50. let key = e.which;
  51. if(key == 13){
  52. if(num === 0){
  53. $.ajax({
  54. method:"POST",
  55. data:{bach:$("#c-bach").val()},//批次号
  56. url:"feeding/get_task",
  57. success(res){
  58. //批次号重复/做下拉选择
  59. if(res.data.length>1){
  60. let str = '';
  61. str+='<select class="selectpicker form-control" id="bach"><option>请选择对应的生产量</option>';
  62. for(var i=0;i<res.data.length;i++){
  63. str+='<option value="'+i+'">'+res.data[i].create+'&nbsp;&nbsp;&nbsp;&nbsp;生产量:'+res.data[i].number+'</option>';
  64. }
  65. str+='</select><a href="javascript:;" id="btn" class="btn btn-success">确认</a>';
  66. $('#c-bach').parent('#c_bach').append(str);
  67. $("#bach").change(()=>{
  68. $("#c-name").val(res.data[$("#bach").val()].name);
  69. $("#c-specifications").val(res.data[$("#bach").val()].drawer_name);
  70. $("#c-unit").val(res.data[$("#bach").val()].examine_name);
  71. });
  72. $("#btn").click(()=>{
  73. if($("#c-bach").attr('readonly')==='readonly'){
  74. return false;
  75. }
  76. $("#bach").css('cssText','display:none! important');
  77. $("#btn").css('display','none');
  78. $.ajax({
  79. method:"POST",
  80. url:"feeding/get_formula",
  81. data:{
  82. bach:$("#c-bach").val(),
  83. num:res.data[$("#bach").val()].number
  84. },
  85. success(result){
  86. var str = '';
  87. var html = '';
  88. for(var i=0;i<result.data.length;i++){
  89. str += "<tr class='tablestr"+i+" tablestr'><td><input class='form-control material' type='text' name='row[material][]' readonly value='"+result.data[i].material+"'></td>";
  90. str += "<td><input class='form-control' type='text' name='row[nweight][]' readonly value='"+result.data[i].nweight+"'></td>";
  91. str += "<td><input class='form-control' type='number' name='row[weight][]' value='";
  92. if (result.data[i].weight) {
  93. str += parseFloat(result.data[i].weight) + "' readonly ";
  94. }
  95. str += "'></td>";
  96. str += "<input class='form-control' type='hidden' name='row[gy_num][]' value='"+result.data[i].gy_num+"'>";
  97. str += "<td><input class='form-control' type='text' name='row[gy_name][]' readonly value='"+result.data[i].gy_name+"'></td>";
  98. str += "</tr>";
  99. html += `<tr class="print${i} print"><td>${result.data[i].material}</td>
  100. <td>${result.data[i].nweight}</td><td>`;
  101. if (result.data[i].weight) {
  102. html += parseFloat(result.data[i].weight);
  103. }
  104. html += `</td><td>${result.data[i].gy_name}</td></tr>`;
  105. }
  106. html+= `<tr>
  107. <td style="width: 100px;text-align: center">总计</td>
  108. <td class="total" style="width: 100px;text-align: center"></td>
  109. <td id="total"></td>
  110. <td></td>
  111. </tr>`;//${res.data.number}
  112. $("#print_gy").append(html);
  113. $("#table").append(str);
  114. $("#c-bach").attr('readonly','readonly');
  115. $("#wuliao").keydown((e)=>{
  116. let key = e.which;
  117. var error = 0;
  118. if(key === 13){
  119. var wuliao = $("#wuliao").val();
  120. for(var i=0;i<result.data.length;i++) {
  121. if(result.data[i].material===wuliao){
  122. $(".material")[i].setAttribute('style','color:red');
  123. error++;
  124. }
  125. if(result.data[i].material.indexOf('/')!==-1){
  126. var arr = result.data[i].material.split('/');
  127. if(arr.indexOf($("#wuliao").val()) !== -1){
  128. $(".material")[i].value = wuliao;
  129. $(".material")[i].setAttribute('style','color:red');
  130. error++;
  131. }
  132. }
  133. }
  134. if(error===0){
  135. Layer.confirm("此物料不在配方中,请确认!");
  136. //语音播报
  137. var msg = new SpeechSynthesisUtterance("此物料不在配方中,请确认!");
  138. window.speechSynthesis.speak(msg);
  139. }
  140. }
  141. });
  142. }
  143. });
  144. });
  145. }else{//批次号不重复直接赋值
  146. $("#bach").css('cssText','display:none! important');
  147. $("#btn").css('display','none');
  148. $("#c-name").val(res.data[0].name);
  149. $("#c-specifications").val(res.data[0].drawer_name);
  150. $("#c-unit").val(res.data[0].examine_name);
  151. $("#c-operator").val(res.data.operator);
  152. $("#c-inspector").val(res.data.inspector);
  153. $.ajax({
  154. method: "POST",
  155. url: "feeding/get_formula",
  156. data: {
  157. bach: $("#c-bach").val(),
  158. num:''
  159. },
  160. success(result) {
  161. var str = '';
  162. var html = '';
  163. for(var i=0;i<result.data.length;i++){
  164. str += "<tr class='tablestr"+i+" tablestr'><td><input class='form-control material' type='text' name='row[material][]' readonly value='"+result.data[i].material+"'></td>";
  165. str += "<td><input class='form-control' type='text' name='row[nweight][]' readonly value='"+result.data[i].nweight+"'></td>";
  166. str += "<input class='form-control' type='hidden' name='row[gy_num][]' value='"+result.data[i].gy_num+"'>";
  167. str += "<td><input class='form-control' type='number' name='row[weight][]' value='";
  168. if (result.data[i].weight) {
  169. str += parseFloat(result.data[i].weight) + "' readonly ";
  170. }
  171. str += "'></td>";
  172. str += "<td><input class='form-control' type='text' name='row[gy_name][]' readonly value='"+result.data[i].gy_name+"'></td>";
  173. str += "</tr>";
  174. html += `<tr class="print${i} print"><td>${result.data[i].material}</td>
  175. <td>${result.data[i].nweight}</td><td>`;
  176. if (result.data[i].weight) {
  177. html += parseFloat(result.data[i].weight);
  178. }
  179. html += `</td><td>${result.data[i].gy_name}</td></tr>`;
  180. }
  181. html+= `<tr>
  182. <td style="width: 100px;text-align: center">总计</td>
  183. <td class="total" style="width: 100px;text-align: center"></td>
  184. <td id="total"></td>
  185. <td></td>
  186. </tr>`;//${res.data[0].number}
  187. $("#print_gy").append(html);
  188. $("#table").append(str);
  189. $("#c-bach").attr('readonly','readonly');
  190. $("#wuliao").keydown((e)=>{
  191. let key = e.which;
  192. var error = 0;
  193. if(key === 13){
  194. var wuliao = $("#wuliao").val();
  195. for(var i=0;i<result.data.length;i++) {
  196. if(result.data[i].material===wuliao){
  197. $(".material")[i].setAttribute('style','color:red');
  198. error++;
  199. }
  200. if(result.data[i].material.indexOf('/')!==-1){
  201. var arr = result.data[i].material.split('/');
  202. if(arr.indexOf($("#wuliao").val()) !== -1){
  203. $(".material")[i].value = wuliao;
  204. $(".material")[i].setAttribute('style','color:red');
  205. error++;
  206. }
  207. }
  208. }
  209. if(error===0){
  210. Layer.confirm("此物料不在配方中,且没有替代料,请确认!");
  211. //语音播报
  212. var msg = new SpeechSynthesisUtterance("此物料不在配方中,且没有替代料,请确认!");
  213. window.speechSynthesis.speak(msg);
  214. }
  215. }
  216. });
  217. }
  218. });
  219. }
  220. }
  221. });
  222. num++;
  223. }else{
  224. // return false;
  225. }
  226. }
  227. });
  228. $('input').keydown( function (e) {
  229. let key = e.which;
  230. if (key == 13) {
  231. return false;
  232. }
  233. });
  234. $(document).ready(function($) { 'use strict';
  235. $(".print-link").on('click', function() {
  236. var status = 1;
  237. var total = 0;
  238. //开票人
  239. $("#specifications").html($('#c-specifications').val());
  240. //审核
  241. $("#unit").html($('#c-unit').val());
  242. //批次号
  243. var bach = $('#c-bach').val();
  244. //写入到add页面
  245. $("#formula").html(bach);
  246. //添加重量,包装规格,机组到表格内
  247. for(var i=0;i<$(".tablestr").length;i++){
  248. var weight = parseFloat($(".tablestr:eq("+i+")").children("tr td:eq(2)").children().val());
  249. if(weight){
  250. $(".print:eq("+i+")").children("tr td:eq(2)").html(weight);
  251. total += weight;
  252. }
  253. }
  254. $("#total").html(total.toFixed(2));
  255. // console.log(total);
  256. if(!$("#c-pickor").val()){
  257. status = 2;
  258. }
  259. if(!$("#c-warehouseor").val()){
  260. status = 2;
  261. }
  262. /*if (status == 2){
  263. layer.confirm('领料人或仓管人为空,请检查!');return false;
  264. }*/
  265. // createQrcode(bach,80,80);
  266. var img = document.getElementById("myImage"); /// get image element
  267. var canvas = document.getElementsByTagName('canvas')[0];
  268. // img.src = canvas.toDataURL(); /// update image
  269. $.print('#print_area');
  270. return false;
  271. });
  272. function createQrcode(txt,width,height) {
  273. $("#qrcode").qrcode({
  274. render: "canvas",//canvas和table两种渲染方式
  275. width: width,
  276. height: height,
  277. correctLevel:2,//二维码纠错级别
  278. background:"#ffffff",//背景颜色
  279. foreground:"#000000", //二维码颜色
  280. text:txt
  281. });
  282. }
  283. });
  284. Controller.api.bindevent();
  285. },
  286. edit: function () {
  287. Controller.api.bindevent();
  288. },
  289. api: {
  290. bindevent: function () {
  291. Form.api.bindevent($("form[role=form]"));
  292. }
  293. }
  294. };
  295. return Controller;
  296. });