sale.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <!DOCTYPE html>
  2. <html lang="en">
  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"
  9. content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  10. <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
  11. <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
  12. <style type="text/css">
  13. .LAY-btns .layui-nav {padding-left:0;padding-right:10px;top:-4px;margin: 0 10px;border: 0;background-color: #009688;}
  14. .LAY-btns .layui-nav .layui-nav-item{line-height: 30px;}
  15. .LAY-btns .layui-nav .layui-nav-child{top:34px;}
  16. .LAY-btns .layui-nav .layui-nav-bar{display: none;}
  17. .LAY-btns .layui-nav .layui-nav-child dd.layui-this a{color:#333;background-color:#fff;}
  18. .LAY-btns .layui-nav .layui-nav-child dd.layui-this a:hover {background-color: #f2f2f2;color: #000;}
  19. </style>
  20. </head>
  21. <body>
  22. <div class="layui-fluid">
  23. <div class="layui-card">
  24. <div class="layui-card-body" pad15>
  25. <div class="layui-row layui-col-space15">
  26. <div class="layui-col-md12">
  27. <div class="LAY-btns" style="margin-bottom: 10px;">
  28. <button class="layui-btn layui-btn-sm" id="btn_add" data-permission="plan.add_sale_plan"><i class="layui-icon layui-icon-add-1"></i>添加</button>
  29. <button class="layui-nav" data-permission="plan.export_sale_plan">
  30. <div class="layui-nav-item">
  31. <a href="javascript:;" style="color:#fff;">导出</a>
  32. <dl class="layui-nav-child"> <!-- 二级菜单 -->
  33. <dd><a href="#" id="btn_export">导出列表</a></dd>
  34. <dd><a href="#" id="btn_export_detail">导出明细</a></dd>
  35. </dl>
  36. </div>
  37. </button>
  38. <button class="layui-btn layui-btn-sm" id="btn_print" data-permission="plan.print_sale_plan"><i class="layui-icon layui-icon-form"></i>打印</button>
  39. <button class="layui-btn layui-btn-sm" id="btn_query"><i class="layui-icon layui-icon-search"></i>查询</button>
  40. </div>
  41. <table class="layui-hide" id="datagrid" lay-filter="datagrid-operate"></table>
  42. <script type="text/html" id="datagrid-operate-bar">
  43. <div class="layui-btn-group">
  44. <a class="layui-btn layui-btn-xs" lay-event="detail">查看</a>
  45. {{# if(d.status == 0){ }}
  46. <a class="layui-btn layui-btn-xs" lay-event="edit" data-permission="plan.add_sale_plan">修改</a>
  47. <a class="layui-btn layui-btn-danger layui-btn-xs" data-permission="plan.delete_sale_plan" lay-event="del">删除</a>
  48. <a class="layui-btn layui-btn-xs" lay-event="check" data-permission="plan.check_sale_plan">审核</a>
  49. {{# } }}
  50. {{# if(d.status == 1){ }}
  51. <a class="layui-btn layui-btn-xs" lay-event="toProduction" data-permission="plan.add_production_plan">转生产</a>
  52. <a class="layui-btn layui-btn-xs" lay-event="checkout" data-permission="plan.check_sale_plan">撤销审核</a>
  53. {{# } }}
  54. </div>
  55. </script>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div id="dlg_query" style="display: none">
  62. <div class="layui-card-body" pad15>
  63. <form class="layui-form" lay-filter="query-form-element">
  64. <div class="layui-row layui-col-space10 layui-form-item">
  65. <div class="layui-col-xs12 layui-col-sm12">
  66. <label class="layui-form-label">单号:</label>
  67. <div class="layui-input-block">
  68. <input type="text" name="no" class="layui-input" autocomplete="off">
  69. </div>
  70. </div>
  71. <div class="layui-col-xs12 layui-col-sm12">
  72. <label class="layui-form-label">客户:</label>
  73. <div class="layui-input-block">
  74. <input type="text" name="customer_text" class="layui-input" autocomplete="off">
  75. </div>
  76. </div>
  77. </div>
  78. <div style="display: none" >
  79. <button id="query-submit" lay-submit lay-filter="query-form-element">查询</button>
  80. </div>
  81. </form>
  82. </div>
  83. </div>
  84. <script src="../../layuiadmin/layui/layui.js?t=1"></script>
  85. <script>
  86. var _params = '';
  87. layui.config({
  88. base: '../../../layuiadmin/' //静态资源所在路径
  89. }).extend({
  90. index: 'lib/index', //主入口模块
  91. utils: 'utils'
  92. }).use(['index', 'table', 'form', 'utils'], function () {
  93. var $ = layui.$;
  94. var table = layui.table
  95. , form = layui.form
  96. , admin = layui.admin
  97. ,utils = layui.utils;
  98. table.render({
  99. elem: '#datagrid'
  100. , url: '/plan/sale/data/'
  101. , cols: [[
  102. {type: 'checkbox', width: 50}
  103. , {field: 'no', title: '单号', width: 140}
  104. , {field: 'customer_text', title: '客户', width: 120}
  105. , {field: 'goods_text', title: '产品', width: 150}
  106. , {field: 'total_count', align:'right', title: '合计数量', width: 150}
  107. , {field: 'total_amount', align:'right', title: '合计金额', width: 150}
  108. , {field: 'create_time', title: '创建时间', width: 145}
  109. , {field: 'create_user_text', title: '创建人', width: 100}
  110. , {field: 'department_text', title: '所属部门', width: 130}
  111. , {field: 'status_text', title: '审核状态', width: 100}
  112. , {field: 'check_time', title: '审核时间', width: 145}
  113. , {field: 'check_user_text', title: '审核人', width: 100}
  114. , {field: 'notes', title: '备注', minWidth: 150}
  115. , {width: 200, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
  116. ]]
  117. , page: true
  118. , height: 'full-104'
  119. , totalRow: true
  120. ,parseData:function(res) {
  121. var cols = this.cols[0];
  122. for (var i in cols) {
  123. if (cols[i].field == 'total_count') {
  124. cols[i].totalRowText = res.more.total_count;
  125. }
  126. if (cols[i].field == 'total_amount') {
  127. cols[i].totalRowText = res.more.total_amount;
  128. }
  129. }
  130. return {
  131. "code": res.code, //解析接口状态
  132. "count": res.count, //解析数据长度
  133. "data": res.data //解析数据列表
  134. };
  135. }
  136. , done: function (res) {
  137. layui.index.removeNoPermButtons();
  138. }
  139. });
  140. //监听工具条
  141. table.on('tool(datagrid-operate)', function (obj) {
  142. var data = obj.data;
  143. if (obj.event === 'del') {
  144. if (data.status == 1){
  145. layer.msg('销售计划已审核,无法删除!');
  146. return false;
  147. }
  148. layer.confirm('确定要删除吗?', function (index) {
  149. layer.close(index);
  150. layui.admin.req({
  151. url: '/plan/sale/delete/?id=' + data.id
  152. , done: function (res) {
  153. table.reload('datagrid', {});
  154. }
  155. });
  156. });
  157. } else if (obj.event === 'edit') {
  158. table.editdata = data;
  159. if (data.status == 1){
  160. layer.msg('销售计划已审核,无法修改!');
  161. return false;
  162. }
  163. layer.open({
  164. type: 2,
  165. title: '修改',
  166. shadeClose: false,
  167. area: ['90%', '90%'],
  168. btn: ['保存', '取消'],
  169. yes: function (index, dom) {
  170. layui.onSubmitChild = function (data) {
  171. layer.close(index);
  172. table.reload('datagrid', {});
  173. };
  174. layui.submitChild();
  175. },
  176. btn2: function (index, layero) {
  177. layer.close(index);//关闭当前按钮
  178. },
  179. content: 'sale_edit.html?id=' + data.id
  180. });
  181. }else if(obj.event === 'check'){
  182. layer.confirm('确定要审核吗?', function(index){
  183. layer.close(index);
  184. layui.admin.req({
  185. url: '/plan/sale/check/?status=1&id='+data.id
  186. ,done: function(res){
  187. table.reload('datagrid',{});
  188. }
  189. });
  190. });
  191. }else if(obj.event === 'checkout'){
  192. layer.confirm('确定要撤销审核吗?', function(index){
  193. layer.close(index);
  194. layui.admin.req({
  195. url: '/plan/sale/check/?status=0&id='+data.id
  196. ,done: function(res){
  197. table.reload('datagrid',{});
  198. }
  199. });
  200. });
  201. }else if(obj.event === 'detail'){
  202. table.editdata = data;
  203. layer.open({
  204. type: 2,
  205. title: '查看['+ data.no + ']',
  206. shadeClose: true,
  207. area: ['80%', '80%'],
  208. content: 'sale_detail.html?id='+data.id
  209. });
  210. } else if (obj.event === 'toProduction') {
  211. admin.req({
  212. url: '/plan/sale/detail/?id=' + data.id,
  213. done: function (res) {
  214. var status = res.data.sale_data.status;
  215. var is_toproduction = res.data.sale_data.is_toproduction;
  216. if (status == '已审核'){
  217. if(is_toproduction){
  218. toProduction(data)
  219. }else{
  220. layer.msg('库存充足,无需转生产!');
  221. }
  222. }else {
  223. layer.msg('销售计划未审核,无法转生产!');
  224. }
  225. }
  226. })
  227. table.editdata = data;
  228. }
  229. });
  230. $('#btn_export').on('click', function () {
  231. layui.admin.req({
  232. url: '/plan/sale/export/',
  233. data: _params,
  234. done: function (res) {
  235. layui.view.download(res.data.filename);
  236. }
  237. });
  238. });
  239. $('#btn_export_detail').on('click', function () {
  240. var data = utils.getSelectedRow('datagrid');
  241. if (data == false) {
  242. return;
  243. }
  244. layui.admin.req({
  245. url: '/plan/sale/export_detail/?id='+data.id,
  246. data: _params,
  247. done: function (res) {
  248. layui.view.download(res.data.filename);
  249. }
  250. });
  251. });
  252. $('#btn_add').on('click', function () {
  253. layer.open({
  254. type: 2,
  255. title: '添加销售计划',
  256. area: ['90%', '90%'],
  257. btn: ['保存', '取消'],
  258. yes: function (index, dom) {
  259. layui.onSubmitChild = function (data) {
  260. layer.close(index);
  261. table.reload('datagrid', {});
  262. };
  263. layui.submitChild();
  264. },
  265. btn2: function (index, layero) {
  266. layer.close(index);//关闭当前按钮
  267. },
  268. content: 'sale_edit.html'
  269. });
  270. });
  271. $('#btn_query').on('click', function () {
  272. layer.open({
  273. type: 1,
  274. shadeClose: true,
  275. area: ['400px', '240px'],
  276. title: '查询',
  277. btn: ['查询'],
  278. yes: function (index, dom) {
  279. $("#query-submit").click();
  280. },
  281. content: $('#dlg_query')
  282. });
  283. });
  284. form.on('submit(query-form-element)', function (data) {
  285. //layer.msg(JSON.stringify(data.field));
  286. _params = data.field;
  287. table.reload('datagrid', {
  288. where: data.field,
  289. page:{curr:1}
  290. });
  291. layer.closeAll();
  292. return false
  293. });
  294. $('#btn_print').on('click', function () {
  295. var data = utils.getSelectedRow('datagrid');
  296. if (data == false) {
  297. return;
  298. }
  299. layer.open({
  300. type: 2,
  301. title: '打印',
  302. shadeClose: true,
  303. area: ['90%', '90%'],
  304. btn: ['打印', '取消'],
  305. yes: function (index, dom) {
  306. layui.onSubmitChild = function(data){
  307. layer.close(index);
  308. };
  309. layui.submitChild();
  310. },
  311. btn2: function (index, layero) {
  312. layer.close(index);//关闭当前按钮
  313. },
  314. content: 'sale_print.html?id=' + data.id
  315. });
  316. });
  317. function toProduction(data) {
  318. layer.open({
  319. type: 2,
  320. title: '添加生产计划',
  321. area: ['80%', '90%'],
  322. btn: ['保存', '取消'],
  323. yes: function (index, dom) {
  324. layui.onSubmitChild = function (data) {
  325. layer.close(index);
  326. layer.msg('生产计划添加成功', {icon: 6});
  327. };
  328. layui.submitChild();
  329. },
  330. btn2: function (index, layero) {
  331. layer.close(index);//关闭当前按钮
  332. },
  333. content: 'production_edit.html?sale_id=' + data.id
  334. });
  335. }
  336. })
  337. </script>
  338. </body>
  339. </html>