purchase_order_senior.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>配件出库</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  9. <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
  10. <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
  11. <style type="text/css">
  12. .table-overlay .layui-table-view,
  13. .table-overlay .layui-table-header,
  14. .table-overlay .layui-table-box,
  15. .table-overlay .layui-table-body{overflow: visible;}
  16. .table-overlay .layui-table-cell{height: auto; overflow: visible;}
  17. </style>
  18. </head>
  19. <body>
  20. <div class="layui-fluid">
  21. <div class="layui-card">
  22. <div class="layui-card-body" pad15>
  23. <div class="layui-row layui-col-space15">
  24. <div class="layui-col-md12">
  25. <form class="layui-form" action="" lay-filter="component-form-element">
  26. <div class="layui-row layui-col-space10">
  27. <div class="layui-col-xs6 layui-col-sm4">
  28. <label class="layui-form-label"><font color='red' size="4">*</font>合同号:</label>
  29. <div class="layui-input-block">
  30. <input id="id_no" type="text" name="no" lay-verify="required" autocomplete="off" class="layui-input">
  31. </div>
  32. </div>
  33. <div class="layui-col-xs6 layui-col-sm4">
  34. <label class="layui-form-label"><font color='red' size="4">*</font>供应商:</label>
  35. <div class="layui-input-block">
  36. <select id="id_supplier" name="supplier" lay-verify="required" lay-search>
  37. <option value=""></option>
  38. </select>
  39. </div>
  40. </div>
  41. <div class="layui-col-xs6 layui-col-sm4">
  42. <label class="layui-form-label">付款方式:</label>
  43. <div class="layui-input-block">
  44. <!--<input id="id_payment_type" type="text" name="payment_type" autocomplete="off"
  45. class="layui-input">-->
  46. <input type="text" name="payment_type" id="id_payment_type" class="layui-input" style="position:absolute;z-index:2;width:80%;" autocomplete="off">
  47. <select lay-filter="hc_select">
  48. <option value="票到付款">票到付款</option>
  49. <option value="预付">预付</option>
  50. </select>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="layui-row layui-col-space10">
  55. <div class="layui-col-xs6 layui-col-sm4">
  56. <label class="layui-form-label"><font color='red' size="4">*</font>收货人:</label>
  57. <div class="layui-input-block">
  58. <input id="id_consignee_name" type="text" name="consignee_name" lay-verify="required" autocomplete="off"
  59. class="layui-input">
  60. </div>
  61. </div>
  62. <div class="layui-col-xs6 layui-col-sm4">
  63. <label class="layui-form-label"><font color='red' size="4">*</font>收货电话:</label>
  64. <div class="layui-input-block">
  65. <input id="id_consignee_tel" type="text" name="consignee_tel" lay-verify="required" autocomplete="off"
  66. class="layui-input">
  67. </div>
  68. </div>
  69. <div class="layui-col-xs6 layui-col-sm4">
  70. <label class="layui-form-label">交货时间:</label>
  71. <div class="layui-input-block">
  72. <input id="id_deliver_time" type="text" name="deliver_time" autocomplete="off"
  73. class="layui-input">
  74. </div>
  75. </div>
  76. </div>
  77. <div class="layui-row layui-col-space10">
  78. <div class="layui-col-xs12">
  79. <label class="layui-form-label">备注:</label>
  80. <div class="layui-input-block">
  81. <input id="id_notes" type="text" name="notes" autocomplete="off"
  82. class="layui-input">
  83. </div>
  84. </div>
  85. </div>
  86. <fieldset class="layui-elem-field layui-field-title">
  87. <legend>产品明细&nbsp;&nbsp;<button type="button" id="part-btn-add" class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon"></i></button></legend>
  88. </fieldset>
  89. <div class="table-overlay">
  90. <table id="product_data_table" lay-filter="product_data_table" class="layui-hide"></table>
  91. </div>
  92. <button class="layui-btn" id="purchase-order-submit" lay-submit lay-filter="component-form-element" style="display: none">保存</button>
  93. </form>
  94. </div>
  95. </div>
  96. </div>
  97. </div>
  98. </div>
  99. <script src="../../layuiadmin/layui/layui.js"></script>
  100. <script>
  101. var _options = [];
  102. layui.link('../../../layuiadmin/style/autocomplete.css');
  103. layui.config({
  104. base: '../../../layuiadmin/' //静态资源所在路径
  105. }).extend({
  106. index: 'lib/index',
  107. autocomplete: 'autocomplete'
  108. }).use(['index', 'form', 'autocomplete', 'table', 'utils'], function(){
  109. var $ = layui.$
  110. ,admin = layui.admin
  111. ,element = layui.element
  112. ,form = layui.form
  113. ,table = layui.table
  114. ,utils = layui.utils
  115. ,autocomplete = layui.autocomplete;
  116. var id = layui.view.getParameterByName('id');
  117. var supplier_type = layui.view.getParameterByName('type');
  118. var supplier_option = '';
  119. admin.req({
  120. url: '/foundation/search_options/?type=4',
  121. done: function(res){
  122. _options = res.data;
  123. }
  124. });
  125. admin.req({
  126. url: '/supplier/supplier/select/?type=' + supplier_type,
  127. done: function(res){
  128. var suppliers = res.data;
  129. for (var i in suppliers) {
  130. supplier_option += "<option value="+ suppliers[i].id+">"+ suppliers[i].value+"</option>";
  131. }
  132. $("#id_supplier").append(supplier_option);
  133. form.render();
  134. if (id) {
  135. var orderData = JSON.parse(JSON.stringify(parent.layui.table.editdata));
  136. form.val("component-form-element", orderData);
  137. }
  138. }
  139. });
  140. var product_data_table = "product_data_table";
  141. var product_tableIns = table.render({
  142. elem: '#product_data_table',
  143. id: product_data_table,
  144. data: [],
  145. page: false,
  146. limit: 1000,
  147. loading: true,
  148. even: true, //不开启隔行背景
  149. cols: [[
  150. {title: '序号', type: 'numbers'},
  151. {field: 'name', title: '产品名称', width: 100},
  152. {field: 'model', title: '产品代码', width: 100},
  153. {field: 'type_text', title: '产品类别', width: 100},
  154. {field: 'option_text', title: '类型', width: 100},
  155. {field: 'unit', title: '单位', width: 80},
  156. {field: 'count', title: '数量', width: 100, templet: function (d){
  157. return '<input id="count'+d.id+'" type="text" value="'+d.count+'" lay-verify="required|numberGtZ" autocomplete="off" class="layui-input">';
  158. }},
  159. {field: 'price', title: '单价', width: 100, templet: function (d){
  160. return '<input id="price'+d.id+'" type="text" value="'+d.price+'" lay-verify="required|numberGeZ" autocomplete="off" class="layui-input">';
  161. }},
  162. {field: 'option_type', title: '质量要求', width: 150, templet: function (d) {
  163. return '<input id="option_type'+d.id+'" type="text" value="'+d.option_type+'" autocomplete="off" class="layui-input">';
  164. }
  165. },
  166. {field: 'id', title: '操作',minWidth:120, templet: function(d){
  167. return '<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del" lay-id="'+ d.id +'"><i class="layui-icon layui-icon-delete"></i>删除</a>';
  168. }}
  169. ]]
  170. });
  171. table.on('tool(product_data_table)', function (obj) {
  172. var data = obj.data;
  173. var event = obj.event;
  174. switch (event) {
  175. case "del":
  176. obj.del();
  177. layer.msg('删除成功', {icon: 6});
  178. break;
  179. }
  180. });
  181. form.render(null, 'component-form-element');
  182. element.render('breadcrumb', 'breadcrumb');
  183. var getProductData = function () {
  184. var rows = table.cache[product_data_table];
  185. var items = [];
  186. for(var k in rows){
  187. if (rows[k] == false) {
  188. continue;
  189. }
  190. var option_type = $('#option_type'+rows[k].id).val();
  191. var count = $('#count'+rows[k].id).val();
  192. var price = $('#price'+rows[k].id).val();
  193. var item = {
  194. id:rows[k].id,
  195. product:rows[k].id,
  196. name:rows[k].name,
  197. model:rows[k].model,
  198. option_text: rows[k].option_type_text,
  199. type_text: rows[k].type_text,
  200. count:count,
  201. price:price,
  202. quality_request_text:option_type
  203. };
  204. items.push(item);
  205. }
  206. return items
  207. };
  208. form.on('select(hc_select)', function (data) { // 赋值给input框
  209. $("#id_payment_type").val(data.value);
  210. form.render();
  211. });
  212. form.on('submit(component-form-element)', function(data){
  213. var items = getProductData();
  214. var supplier = $('#id_supplier').val();
  215. var payment_type = $('#id_payment_type').val();
  216. var notes = $('#id_notes').val();
  217. var deliver_time = $('#id_deliver_time').val();
  218. var no = $('#id_no').val();
  219. var consignee_name = $('#id_consignee_name').val();
  220. var consignee_tel = $('#id_consignee_tel').val();
  221. if(items.length == 0){
  222. layer.msg('请添加产品!', {icon: 5});
  223. return false;
  224. }
  225. var order_data = {
  226. 'supplier': supplier,
  227. 'notes': notes,
  228. 'no': no,
  229. 'count': 0,
  230. 'amount': 0,
  231. 'payment_type': payment_type,
  232. 'deliver_time':deliver_time,
  233. 'consignee_name': consignee_name,
  234. 'consignee_tel': consignee_tel
  235. };
  236. data.field.order_data = order_data;
  237. data.field.items = items;
  238. admin.req({
  239. url: '/purchase/purchase_order/save/?id='+id
  240. ,data: JSON.stringify(data.field)
  241. ,type: 'post'
  242. , done: function (res) {
  243. parent.layui.onSubmitChild();
  244. }
  245. });
  246. return false;
  247. });
  248. $('#btn_close').on('click', function() {
  249. parent.layer.closeAll('iframe');
  250. });
  251. $('#part-btn-add').on('click', function(){
  252. layer.open({
  253. type: 2,
  254. title: '添加产品',
  255. shadeClose: false,
  256. area: ['90%', '98%'],
  257. btn: ['保存', '取消'],
  258. yes: function (index, layero) {
  259. layui.onSubmitChild = function (data) {
  260. var oldData = getProductData();
  261. if (data.length > 0) {
  262. layer.msg('添加成功!', {icon: 6});
  263. } else {
  264. layer.msg('请先选择记录!');
  265. }
  266. for (var i in data){
  267. var is_exit = false;
  268. for (var m in oldData){
  269. if(oldData[m].id == data[i].id){
  270. is_exit = true;
  271. break;
  272. }
  273. }
  274. if(is_exit){
  275. continue;
  276. }
  277. var newRow = {
  278. id:data[i].id,
  279. name:data[i].name,
  280. model:data[i].model,
  281. type_text: data[i].type_text,
  282. option_text: data[i].option_type_text,
  283. unit: data[i].unit,
  284. count: 1.00,
  285. price: '',
  286. warehouse_place:data[i].warehouse_place,
  287. option_type: ''
  288. };
  289. oldData.push(newRow);
  290. }
  291. product_tableIns.reload({
  292. data: oldData
  293. });
  294. };
  295. layui.submitChild();
  296. },
  297. btn2: function(index, layero){
  298. layer.close(index);
  299. },
  300. content: 'search_purchase_product.html?type=' + supplier_type
  301. });
  302. });
  303. if (id) {
  304. admin.req({
  305. url: '/purchase/purchase_order/detail/?id='+id,
  306. done: function(res){
  307. var data = res.data.items_data;
  308. var oldData = [];
  309. for (var i in data) {
  310. var item = data[i];
  311. var newRow = {
  312. id: item.product_id,
  313. name: item.name,
  314. model:item.model,
  315. unit:item.unit,
  316. price: item.price,
  317. count: item.count,
  318. amount: item.amount,
  319. type_text: item.type_text,
  320. option_text: item.options_type_text,
  321. warehouse_place: '',
  322. option_type: item.quality_request_text
  323. }
  324. oldData.push(newRow);
  325. }
  326. product_tableIns.reload({
  327. data: oldData
  328. });
  329. }
  330. });
  331. } else {
  332. admin.req({
  333. url: '/config/data/',
  334. done: function (res) {
  335. var data = res.data;
  336. var edit_data = {};
  337. for(var i in data) {
  338. if (data[i].property === 'consignee_name'){
  339. edit_data['consignee_name'] = data[i].value;
  340. }else if (data[i].property === 'consignee_tel') {
  341. edit_data['consignee_tel'] = data[i].value;
  342. }
  343. }
  344. form.val("component-form-element", edit_data);
  345. form.render();
  346. }
  347. });
  348. }
  349. parent.layui.submitChild = function () {
  350. $("#purchase-order-submit").click();
  351. };
  352. });
  353. </script>
  354. </body>
  355. </html>