feeding.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  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>
  100. <td>${result.data[i].material}</td>
  101. <td>${result.data[i].nweight}</td><td>`;
  102. if (result.data[i].weight) {
  103. html += parseFloat(result.data[i].weight);
  104. }
  105. html += `
  106. </td><td>${result.data[i].gy_name}</td>
  107. </tr>`;
  108. }
  109. html+= `<tr>
  110. <td style="width: 100px;text-align: center">总计</td>
  111. <td class="total" style="width: 100px;text-align: center">${result.total}</td>
  112. <td id="total"></td>
  113. <td></td>
  114. </tr>`;
  115. $("#print_gy").append(html);
  116. $("#table").append(str);
  117. $("#c-bach").attr('readonly','readonly');
  118. $("#wuliao").keydown((e)=>{
  119. let key = e.which;
  120. var error = 0;
  121. if(key === 13){
  122. var wuliao = $("#wuliao").val();
  123. for(var i=0;i<result.data.length;i++) {
  124. if(result.data[i].material===wuliao){
  125. $(".material")[i].setAttribute('style','color:red');
  126. error++;
  127. }
  128. if(result.data[i].material.indexOf('/')!==-1){
  129. var arr = result.data[i].material.split('/');
  130. if(arr.indexOf($("#wuliao").val()) !== -1){
  131. $(".material")[i].value = wuliao;
  132. $(".material")[i].setAttribute('style','color:red');
  133. error++;
  134. }
  135. }
  136. }
  137. if(error===0){
  138. Layer.confirm("此物料不在配方中,请确认!");
  139. //语音播报
  140. var msg = new SpeechSynthesisUtterance("此物料不在配方中,请确认!");
  141. window.speechSynthesis.speak(msg);
  142. }
  143. }
  144. });
  145. }
  146. });
  147. });
  148. }else{//批次号不重复直接赋值
  149. $("#bach").css('cssText','display:none! important');
  150. $("#btn").css('display','none');
  151. $("#c-name").val(res[0].name);
  152. $("#c-specifications").val(res[0].drawer_name);
  153. $("#c-unit").val(res[0].examine_name);
  154. $("#c-operator").val(res.operator);
  155. $("#c-inspector").val(res.inspector);
  156. $.ajax({
  157. method: "POST",
  158. url: "feeding/get_formula",
  159. data: {
  160. bach: $("#c-bach").val(),
  161. num:''
  162. },
  163. success(res) {
  164. var str = '';
  165. for(var i=0;i<res.data.length;i++){
  166. str += "<tr class='tablestr"+i+" tablestr'><td><input class='form-control material' type='text' name='row[material][]' readonly value='"+res.data[i].material+"'></td>";
  167. str += "<td><input class='form-control' type='text' name='row[nweight][]' readonly value='"+res.data[i].nweight+"'></td>";
  168. str += "<input class='form-control' type='hidden' name='row[gy_num][]' value='"+res.data[i].gy_num+"'>";
  169. str += "<td><input class='form-control' type='number' name='row[weight][]' value='";
  170. if (res.data[i].weight) {
  171. str += parseFloat(res.data[i].weight) + "' readonly ";
  172. }
  173. str += "'></td>";
  174. str += "<td><input class='form-control' type='text' name='row[gy_name][]' readonly value='"+res.data[i].gy_name+"'></td>";
  175. str += "</tr>";
  176. }
  177. $("#table").append(str);
  178. $("#c-bach").attr('readonly','readonly');
  179. $("#wuliao").keydown((e)=>{
  180. let key = e.which;
  181. var error = 0;
  182. if(key === 13){
  183. var wuliao = $("#wuliao").val();
  184. for(var i=0;i<res.data.length;i++) {
  185. if(res.data[i].material===wuliao){
  186. $(".material")[i].setAttribute('style','color:red');
  187. error++;
  188. }
  189. if(res.data[i].material.indexOf('/')!==-1){
  190. var arr = res.data[i].material.split('/');
  191. if(arr.indexOf($("#wuliao").val()) !== -1){
  192. $(".material")[i].value = wuliao;
  193. $(".material")[i].setAttribute('style','color:red');
  194. error++;
  195. }
  196. }
  197. }
  198. if(error===0){
  199. Layer.confirm("此物料不在配方中,且没有替代料,请确认!");
  200. //语音播报
  201. var msg = new SpeechSynthesisUtterance("此物料不在配方中,且没有替代料,请确认!");
  202. window.speechSynthesis.speak(msg);
  203. }
  204. }
  205. });
  206. }
  207. });
  208. }
  209. }
  210. });
  211. num++;
  212. }else{
  213. // return false;
  214. }
  215. }
  216. });
  217. $('input').keydown( function (e) {
  218. let key = e.which;
  219. if (key == 13) {
  220. return false;
  221. }
  222. });
  223. $(document).ready(function($) { 'use strict';
  224. $(".print-link").on('click', function() {
  225. var status = 1;
  226. var total = 0;
  227. //开票人
  228. $("#specifications").val($('#c-specifications').val());
  229. //审核
  230. $("#unit").val($('#c-unit').val());
  231. //批次号
  232. var bach = $('#c-bach').val();
  233. //写入到add页面
  234. $("#formula").html(bach);
  235. //添加重量,包装规格,机组到表格内
  236. for(var i=0;i<$(".tablestr").length;i++){
  237. var weight = parseFloat($(".tablestr:eq("+i+")").children("tr td:eq(2)").children().val());
  238. $(".print:eq("+i+")").children("tr td:eq(2)").html(weight);
  239. if(weight){
  240. total += weight;
  241. }
  242. }
  243. $("#total").html(total.toFixed(2));
  244. // console.log(total);
  245. if(!$("#c-pickor").val()){
  246. status = 2;
  247. }
  248. if(!$("#c-warehouseor").val()){
  249. status = 2;
  250. }
  251. /*if (status == 2){
  252. layer.confirm('领料人或仓管人为空,请检查!');return false;
  253. }*/
  254. // createQrcode(bach,80,80);
  255. var img = document.getElementById("myImage"); /// get image element
  256. var canvas = document.getElementsByTagName('canvas')[0];
  257. // img.src = canvas.toDataURL(); /// update image
  258. $.print('#print_area');
  259. return false;
  260. });
  261. function createQrcode(txt,width,height) {
  262. $("#qrcode").qrcode({
  263. render: "canvas",//canvas和table两种渲染方式
  264. width: width,
  265. height: height,
  266. correctLevel:2,//二维码纠错级别
  267. background:"#ffffff",//背景颜色
  268. foreground:"#000000", //二维码颜色
  269. text:txt
  270. });
  271. }
  272. });
  273. Controller.api.bindevent();
  274. },
  275. edit: function () {
  276. Controller.api.bindevent();
  277. },
  278. api: {
  279. bindevent: function () {
  280. Form.api.bindevent($("form[role=form]"));
  281. }
  282. }
  283. };
  284. return Controller;
  285. });