goods_stock_ledger.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  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. .layui-form-select dl{max-height: 150px;}
  13. </style>
  14. </head>
  15. <body>
  16. <div class="layui-fluid">
  17. <div class="layui-card">
  18. <div class="layui-card-body" pad15>
  19. <div class="layui-row layui-col-space15">
  20. <div class="layui-col-md12">
  21. <div class="LAY-btns" style="margin-bottom: 10px;">
  22. <button class="layui-btn layui-btn-sm" id="btn_export" data-permission="product.export_goods_stock_ledger"><i class="layui-icon layui-icon-download-circle"></i>导出</button>
  23. <button class="layui-btn layui-btn-sm" id="btn_query"><i class="layui-icon layui-icon-search"></i>查询</button>
  24. </div>
  25. <table class="layui-hide" id="datagrid" lay-filter="datagrid-operate"></table>
  26. </div>
  27. </div>
  28. </div>
  29. </div>
  30. </div>
  31. <div id="dlg_query" style="display: none">
  32. <div class="layui-card-body" pad15>
  33. <form class="layui-form" lay-filter="query-form-element">
  34. <div class="layui-row layui-col-space10 layui-form-item">
  35. <div class="layui-col-xs12 layui-col-sm12">
  36. <label class="layui-form-label">日期:</label>
  37. <div class="layui-input-block">
  38. <input type="text" class="layui-input" autocomplete="off" name="date" id="id_date" placeholder=" - ">
  39. </div>
  40. </div>
  41. <div class="layui-col-xs12 layui-col-sm12">
  42. <label class="layui-form-label">仓别:</label>
  43. <div class="layui-input-block">
  44. <select id="id_warehouse" name="warehouse">
  45. <option value="">选择仓别</option>
  46. </select>
  47. </div>
  48. </div>
  49. <div class="layui-col-xs12 layui-col-sm12">
  50. <label class="layui-form-label">产品名称:</label>
  51. <div class="layui-input-block">
  52. <input type="text" name="product_name" autocomplete="off" class="layui-input">
  53. </div>
  54. </div>
  55. <div class="layui-col-xs12 layui-col-sm12">
  56. <label class="layui-form-label">产品代码:</label>
  57. <div class="layui-input-block">
  58. <input type="text" name="product_model" autocomplete="off" class="layui-input">
  59. </div>
  60. </div>
  61. <div class="layui-col-xs12 layui-col-sm12">
  62. <label class="layui-form-label" style="width: 100px;">去除全部为0:</label>
  63. <div class="layui-input-block">
  64. <input type="checkbox" name="exclude_zero" lay-skin="switch" lay-text="是|否">
  65. </div>
  66. </div>
  67. </div>
  68. <div class="layui-form-item" style="display: none">
  69. <button id="query_search" class="layui-btn" lay-submit lay-filter="query-form-element">查询</button>
  70. </div>
  71. </form>
  72. </div>
  73. </div>
  74. <script src="../../layuiadmin/layui/layui.js"></script>
  75. <script>
  76. var _data_list = [];
  77. var _params = '';
  78. layui.config({
  79. base: '../../../layuiadmin/' //静态资源所在路径
  80. }).extend({
  81. index: 'lib/index' //主入口模块
  82. }).use(['index', 'form', 'table', 'laydate'], function(){
  83. var $ = layui.$
  84. ,admin = layui.admin
  85. ,form = layui.form
  86. ,laydate = layui.laydate
  87. ,table = layui.table;
  88. admin.req({
  89. url: '/warehouse/all_select/?type=2',
  90. done: function(res){
  91. var data = res.data;
  92. var warehouse_node = $('#id_warehouse');
  93. for (var i in data) {
  94. var pid = data[i].id;
  95. var value = data[i].name;
  96. warehouse_node.append("<option value='"+pid+"'>"+value+"</option>");
  97. }
  98. form.render();
  99. }
  100. });
  101. var title1 = [
  102. {title: '序号', type: 'numbers', rowspan: 2},
  103. {field: 'product_name', title: '产品名称', width: 150, rowspan: 2},
  104. {field: 'product_model', title: '产品代码', width: 150, rowspan: 2},
  105. {field: 'unit', title: '单位', width: 80, rowspan: 2},
  106. {align: 'center', title: '期初结存', width: 100, colspan: 3},
  107. {align: 'center', title: '本期收入', width: 100, colspan: 9},
  108. {align: 'center', title: '本期发出', width: 100, colspan: 9},
  109. {align: 'center', title: '期末结存', width: 100, colspan: 9}
  110. ];
  111. var title2 = [
  112. {field: 'prev_count', align:'right', title: '数量', width: 100},
  113. {field: 'prev_avg', align:'right', title: '平均单价', width: 100},
  114. {field: 'prev_amount', align:'right', title: '金额', width: 130},
  115. {field: 'in_count', align:'right', title: '总数量', width: 100},
  116. {field: 'in_avg', align:'right', title: '平均单价', width: 100},
  117. {field: 'in_amount', align:'right', title: '总金额', width: 130},
  118. {field: 'rk_count', align:'right', title: '入库数量', width: 100},
  119. {field: 'rk_amount', align:'right', title: '入库金额', width: 130},
  120. {field: 'py_count', align:'right', title: '盘盈数量', width: 100},
  121. {field: 'py_amount', align:'right', title: '盘盈金额', width: 130},
  122. {field: 'th_count', align:'right', title: '退货数量', width: 100},
  123. {field: 'th_amount', align:'right', title: '退货金额', width: 130},
  124. {field: 'out_count', align:'right', title: '总数量', width: 100},
  125. {field: 'out_avg', align:'right', title: '平均单价', width: 100},
  126. {field: 'out_amount', align:'right', title: '总金额', width: 130},
  127. {field: 'ck_count', align:'right', title: '出库数量', width: 100},
  128. {field: 'ck_amount', align:'right', title: '出库金额', width: 130},
  129. {field: 'pk_count', align:'right', title: '盘亏数量', width: 100},
  130. {field: 'pk_amount', align:'right', title: '盘亏金额', width: 130},
  131. {field: 'tl_count', align:'right', title: '退料数量', width: 100},
  132. {field: 'tl_amount', align:'right', title: '退料金额', width: 130},
  133. {field: 'remain_count', align:'right', title: '数量', width: 100},
  134. {field: 'remain_avg', align:'right', title: '平均单价', width: 100},
  135. {field: 'remain_amount', align:'right', title: '金额', width: 130}
  136. ];
  137. _data_list=[title1,title2];
  138. table.render({
  139. elem: '#datagrid'
  140. ,url: '/warehouse/stock/ledger_data/?product_type=2'
  141. ,cols: _data_list
  142. ,page: true
  143. ,totalRow: true
  144. ,parseData:function(res) {
  145. var cols = this.cols[1];
  146. for (var i in cols) {
  147. if (cols[i].field == 'prev_count') {
  148. cols[i].totalRowText = res.more.prev_count;
  149. } else if (cols[i].field == 'prev_amount') {
  150. cols[i].totalRowText = res.more.prev_amount;
  151. } else if (cols[i].field == 'remain_count') {
  152. cols[i].totalRowText = res.more.remain_count;
  153. }else if (cols[i].field == 'remain_amount') {
  154. cols[i].totalRowText = res.more.remain_amount;
  155. } else if (cols[i].field == 'rk_count') {
  156. cols[i].totalRowText = res.more.rk_count;
  157. } else if (cols[i].field == 'rk_amount') {
  158. cols[i].totalRowText = res.more.rk_amount;
  159. } else if (cols[i].field == 'tl_count') {
  160. cols[i].totalRowText = res.more.tl_count;
  161. } else if (cols[i].field == 'tl_amount') {
  162. cols[i].totalRowText = res.more.tl_amount;
  163. } else if (cols[i].field == 'py_count') {
  164. cols[i].totalRowText = res.more.py_count;
  165. } else if (cols[i].field == 'py_amount') {
  166. cols[i].totalRowText = res.more.py_amount;
  167. }else if (cols[i].field == 'ck_count') {
  168. cols[i].totalRowText = res.more.ck_count;
  169. }else if (cols[i].field == 'ck_amount') {
  170. cols[i].totalRowText = res.more.ck_amount;
  171. }else if (cols[i].field == 'th_count') {
  172. cols[i].totalRowText = res.more.th_count;
  173. }else if (cols[i].field == 'th_amount') {
  174. cols[i].totalRowText = res.more.th_amount;
  175. }else if (cols[i].field == 'pk_count') {
  176. cols[i].totalRowText = res.more.pk_count;
  177. }else if (cols[i].field == 'pk_amount') {
  178. cols[i].totalRowText = res.more.pk_amount;
  179. }else if (cols[i].field == 'in_count') {
  180. cols[i].totalRowText = res.more.in_count;
  181. }else if (cols[i].field == 'in_amount') {
  182. cols[i].totalRowText = res.more.in_amount;
  183. }else if (cols[i].field == 'out_count') {
  184. cols[i].totalRowText = res.more.out_count;
  185. }else if (cols[i].field == 'out_amount') {
  186. cols[i].totalRowText = res.more.out_amount;
  187. }
  188. }
  189. return {
  190. "code": res.code, //解析接口状态
  191. "count": res.count, //解析数据长度
  192. "data": res.data //解析数据列表
  193. };
  194. }
  195. ,height: 'full-104'
  196. ,done: function () {
  197. layui.index.removeNoPermButtons();
  198. }
  199. });
  200. $('#btn_export').on('click', function(){
  201. layui.admin.req({
  202. url: '/warehouse/stock/ledger_export/?product_type=2',
  203. data:_params,
  204. done: function (res) {
  205. layui.view.download(res.data.filename);
  206. }
  207. });
  208. });
  209. $('#btn_query').on('click', function(){
  210. layer.open({
  211. type: 1,
  212. shadeClose: true,
  213. area: ['600px', '400px'],
  214. title: '查询',
  215. btn: ['查询'],
  216. yes: function(index, dom){
  217. $('#query_search').click();
  218. },
  219. content: $('#dlg_query')
  220. });
  221. });
  222. form.on('submit(query-form-element)', function(data){
  223. if (!data.field.exclude_zero) {
  224. data.field.exclude_zero = '';
  225. }
  226. _params = data.field;
  227. table.reload('datagrid', {
  228. where: data.field
  229. ,page:{curr:1}
  230. });
  231. layer.closeAll();
  232. return false
  233. });
  234. laydate.render({
  235. elem: '#id_date'
  236. ,range: true
  237. });
  238. })
  239. </script>
  240. </body>
  241. </html>