demand.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  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"
  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. </head>
  13. <style type="text/css">
  14. .LAY-btns .layui-nav {
  15. padding-left: 0;
  16. padding-right: 10px;
  17. top: -4px;
  18. margin: 0 10px;
  19. border: 0;
  20. background-color: #009688;
  21. }
  22. .LAY-btns .layui-nav .layui-nav-item {
  23. line-height: 30px;
  24. }
  25. .LAY-btns .layui-nav .layui-nav-child {
  26. top: 34px;
  27. }
  28. .LAY-btns .layui-nav .layui-nav-bar {
  29. display: none;
  30. }
  31. .LAY-btns .layui-nav .layui-nav-child dd.layui-this a {
  32. color: #333;
  33. background-color: #fff;
  34. }
  35. .LAY-btns .layui-nav .layui-nav-child dd.layui-this a:hover {
  36. background-color: #f2f2f2;
  37. color: #000;
  38. }
  39. </style>
  40. <body>
  41. <div class="layui-fluid">
  42. <div class="layui-card">
  43. <div class="layui-card-body" pad15>
  44. <div class="layui-row layui-col-space15">
  45. <div class="layui-col-md12">
  46. <div class="LAY-btns" style="margin-bottom: 10px;">
  47. <button class="layui-btn layui-btn-sm" id="btn_add" data-permission="plan.add_production_demand"><i
  48. class="layui-icon layui-icon-add-circle"></i>添加
  49. </button>
  50. <button class="layui-nav" data-permission="plan.export_production_demand">
  51. <div class="layui-nav-item">
  52. <a href="javascript:;" style="color:#fff;">导入</a>
  53. <dl class="layui-nav-child"> <!-- 二级菜单 -->
  54. <dd><a href="#" id="import_order">执行导入</a></dd>
  55. <dd><a href="#" id="btn_download_tmp">下载模板</a></dd>
  56. </dl>
  57. </div>
  58. </button>
  59. <button class="layui-btn layui-btn-sm" id="btn_receive" data-permission="plan.receive_production_demand"><i
  60. class="layui-icon layui-icon-download-circle"></i>收货
  61. </button>
  62. <button class="layui-nav" data-permission="plan.export_production_demand">
  63. <div class="layui-nav-item">
  64. <a href="javascript:;" style="color:#fff;">导出</a>
  65. <dl class="layui-nav-child"> <!-- 二级菜单 -->
  66. <dd><a href="#" id="btn_download">导出列表</a></dd>
  67. <dd><a href="#" id="btn_download_detail">导出明细</a></dd>
  68. <dd><a href="#" id="btn_download_all_detail">导出全部明细</a></dd>
  69. </dl>
  70. </div>
  71. </button>
  72. <button class="layui-btn layui-btn-sm" id="btn_print" data-permission="plan.print_production_demand">
  73. <i class="layui-icon layui-icon-print"></i>打印
  74. </button>
  75. <button class="layui-btn layui-btn-sm" id="btn_query"><i
  76. class="layui-icon layui-icon-search"></i>查询
  77. </button>
  78. </div>
  79. <table class="layui-hide" id="datagrid" lay-filter="datagrid-operate"></table>
  80. <script type="text/html" id="datagrid-operate-bar">
  81. <div class="layui-btn-group">
  82. <a class="layui-btn layui-btn-xs" lay-event="detail"
  83. data-permission="plan.view_production_demand">查看</a>
  84. {{# if(d.status ==0){ }}
  85. <a class="layui-btn layui-btn-xs" lay-event="edit"
  86. data-permission="plan.add_production_demand">修改</a>
  87. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"
  88. data-permission="plan.delete_production_demand">删除</a>
  89. <a class="layui-btn layui-btn-xs" lay-event="check_pass"
  90. data-permission="plan.check_production_demand">审核</a>
  91. {{# } }}
  92. {{# if(d.status ==1){ }}
  93. <a class="layui-btn layui-btn-xs" lay-event="check_revoke"
  94. data-permission="plan.check_production_demand">撤销审核</a>
  95. {{# } }}
  96. </div>
  97. </script>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. <div id="dlg_query" style="display: none">
  104. <form class="layui-form" lay-filter="query-form-element">
  105. <div class="layui-card-body" pad15>
  106. <div class="layui-row layui-col-space10 layui-form-item">
  107. <div class="layui-col-xs12 layui-col-sm12">
  108. <label class="layui-form-label">下单时间</label>
  109. <div class="layui-input-inline">
  110. <input type="text" class="layui-input" autocomplete="off" name="create_time" id="create_time"
  111. placeholder=" - ">
  112. </div>
  113. </div>
  114. <div class="layui-col-xs12 layui-col-sm12">
  115. <label class="layui-form-label">下单人:</label>
  116. <div class="layui-input-block">
  117. <input type="text" autocomplete="off" name="create_user" class="layui-input">
  118. </div>
  119. </div>
  120. <div class="layui-col-xs12 layui-col-sm12">
  121. <label class="layui-form-label">状态:</label>
  122. <div class="layui-input-block">
  123. <select id="id_check_status" name="status">
  124. <option value="" selected></option>
  125. <option value="0">待审核</option>
  126. <option value="1">已审核</option>
  127. </select>
  128. </div>
  129. </div>
  130. <div class="layui-col-xs12 layui-col-sm12">
  131. <label class="layui-form-label">订单号:</label>
  132. <div class="layui-input-block">
  133. <input type="text" autocomplete="off" name="no" class="layui-input">
  134. </div>
  135. </div>
  136. <div class="layui-col-xs12 layui-col-sm12">
  137. <label class="layui-form-label">客户姓名:</label>
  138. <div class="layui-input-block">
  139. <input type="text" autocomplete="off" name="customer_name" class="layui-input">
  140. </div>
  141. </div>
  142. <div class="layui-col-xs12 layui-col-sm12">
  143. <label class="layui-form-label">客户电话:</label>
  144. <div class="layui-input-block">
  145. <input type="text" autocomplete="off" name="customer_tel" class="layui-input">
  146. </div>
  147. </div>
  148. <div class="layui-col-xs12 layui-col-sm12">
  149. <label class="layui-form-label">需求时间:</label>
  150. <div class="layui-input-block">
  151. <input type="text" class="layui-input" autocomplete="off" name="demand_date" id="demand_date"
  152. placeholder=" - ">
  153. </div>
  154. </div>
  155. </div>
  156. <div class="layui-form-item" style="display: none">
  157. <button id="query_search" class="layui-btn" lay-submit lay-filter="query-form-element">查询</button>
  158. </div>
  159. </div>
  160. </form>
  161. </div>
  162. <script src="../../layuiadmin/layui/layui.js?t=1"></script>
  163. <script>
  164. var _params = '';
  165. layui.config({
  166. base: '../../../layuiadmin/' //静态资源所在路径
  167. }).extend({
  168. index: 'lib/index' //主入口模块
  169. }).use(['index', 'table', 'laydate', 'form', 'upload', 'element', 'utils'], function () {
  170. var $ = layui.$;
  171. var table = layui.table
  172. , laydate = layui.laydate
  173. , form = layui.form
  174. , utils = layui.utils
  175. , upload = layui.upload;
  176. table.render({
  177. elem: '#datagrid'
  178. , url: '/plan/demand/data/'
  179. , cols: [[
  180. {type: 'radio', width: 50}
  181. , {field: 'no', title: '单号', width: 150}
  182. , {field: 'demand_date', title: '需求时间', width: 110}
  183. , {field: 'customer_name', title: '客户', width: 120}
  184. , {field: 'customer_tel', title: '客户电话', width: 120}
  185. , {field: 'products', title: '产品', width: 150}
  186. , {field: 'count', title: '合计数量', width: 90, align: 'right'}
  187. , {field: 'receive_count', title: '收货数量', width: 90, align: 'right'}
  188. , {field: 'receiveable_count', title: '待收数量', width: 90, align: 'right'}
  189. , {field: 'receive_notes', title: '收货备注', width: 200}
  190. , {field: 'create_time', title: '创建时间', width: 145}
  191. , {field: 'create_user_text', title: '创建人', width: 120}
  192. , {field: 'check_status_text', title: '审核状态', width: 120}
  193. , {field: 'check_time', title: '审核时间', width: 145}
  194. , {field: 'check_user_text', title: '审核人', width: 120}
  195. , {field: 'notes', title: '备注', minWidth: 200}
  196. , {width: 200, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
  197. ]]
  198. , page: true
  199. , totalRow: true
  200. , height: 'full-104'
  201. , parseData: function (res) {
  202. var cols = this.cols[0];
  203. for (var i in cols) {
  204. if (cols[i].field == 'count') {
  205. cols[i].totalRowText = res.more.sum_count;
  206. }
  207. if (cols[i].field == 'receive_count') {
  208. cols[i].totalRowText = res.more.sum_receive_count;
  209. }
  210. }
  211. return {
  212. "code": res.code, //解析接口状态
  213. "count": res.count, //解析数据长度
  214. "data": res.data //解析数据列表
  215. };
  216. }
  217. , done: function () {
  218. layui.index.removeNoPermButtons();
  219. }
  220. });
  221. //监听工具条
  222. table.on('tool(datagrid-operate)', function (obj) {
  223. var data = obj.data;
  224. table.editdata = data;
  225. if (obj.event === 'detail') {
  226. layer.open({
  227. type: 2,
  228. title: '查看',
  229. shadeClose: true,
  230. area: ['90%', '90%'],
  231. content: 'demand_detail.html?id=' + data.id
  232. });
  233. } else if (obj.event === 'del') {
  234. if (data.status != 0) {
  235. layer.msg('该订单已审核,不允许删除');
  236. return;
  237. }
  238. layer.confirm('确定要删除吗?', function (index) {
  239. layer.close(index);
  240. layui.admin.req({
  241. url: '/plan/demand/delete/?id=' + data.id
  242. , done: function (res) {
  243. table.reload('datagrid', {});
  244. }
  245. });
  246. });
  247. } else if (obj.event === 'edit') {
  248. if (data.status != 0) {
  249. layer.msg('该订单已审核,不允许修改');
  250. return;
  251. }
  252. table.editdata = data;
  253. layer.open({
  254. type: 2,
  255. title: '修改订单[' + data.no + ']',
  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: 'demand_edit.html?id=' + data.id
  269. });
  270. } else if (obj.event === 'check_pass') {
  271. if (data.status != 0) {
  272. layer.msg('该出订单已审核, 禁止重复操作');
  273. return;
  274. }
  275. layer.confirm('确定要通过审核吗?', function (index) {
  276. layer.close(index);
  277. layui.admin.req({
  278. url: '/plan/demand/check/?id=' + data.id + '&status=1'
  279. , done: function (res) {
  280. table.reload('datagrid', {});
  281. }
  282. });
  283. });
  284. } else if (obj.event === 'check_revoke') {
  285. if (data.status == 0) {
  286. layer.msg('该出订单尚未审核');
  287. return;
  288. }
  289. layer.confirm('确定要撤销审核吗?', function (index) {
  290. layer.close(index);
  291. layui.admin.req({
  292. url: '/plan/demand/check/?id=' + data.id + '&status=0'
  293. , done: function (res) {
  294. table.reload('datagrid', {});
  295. }
  296. });
  297. });
  298. }
  299. });
  300. $('#btn_add').on('click', function () {
  301. layer.open({
  302. type: 2,
  303. title: '下单',
  304. area: ['90%', '90%'],
  305. btn: ['保存', '取消'],
  306. yes: function (index, dom) {
  307. layui.onSubmitChild = function (data) {
  308. layer.close(index);
  309. table.reload('datagrid', {});
  310. };
  311. layui.submitChild();
  312. },
  313. btn2: function (index, layero) {
  314. layer.close(index);//关闭当前按钮
  315. },
  316. content: 'demand_edit.html'
  317. });
  318. });
  319. $('#btn_download').on('click', function () {
  320. layui.admin.req({
  321. url: '/plan/demand/export/',
  322. data: _params,
  323. done: function (res) {
  324. layui.view.download(res.data.filename);
  325. }
  326. });
  327. });
  328. $('#btn_download_detail').on('click', function () {
  329. var data = utils.getSelectedRow('datagrid');
  330. if (data == false) {
  331. return;
  332. }
  333. layui.admin.req({
  334. url: '/plan/demand/export_detail/?id=' + data.id,
  335. done: function (res) {
  336. layui.view.download(res.data.filename);
  337. }
  338. });
  339. });
  340. $('#btn_download_all_detail').on('click', function () {
  341. layui.admin.req({
  342. url: '/plan/demand/export_detail/',
  343. done: function (res) {
  344. layui.view.download(res.data.filename);
  345. }
  346. });
  347. });
  348. $('#btn_download_tmp').on('click', function () {
  349. layui.view.download("/static/xls/生产需求导入模板.xlsx");
  350. });
  351. upload.render({
  352. elem: '#import_order'
  353. , url: '/plan/demand/import/'
  354. , accept: 'file'
  355. , acceptMime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  356. , exts: 'xlsx'
  357. , field: 'excel_file'
  358. , multiple: false
  359. , done: function (res) {
  360. if (res.code == 0) {
  361. table.reload('datagrid', {});
  362. } else {
  363. layer.msg(res.msg);
  364. }
  365. }
  366. , error: function () {
  367. layer.msg('导入失败');
  368. }
  369. });
  370. $('#btn_print').on('click', function () {
  371. var data = utils.getSelectedRow('datagrid');
  372. if (data == false) {
  373. return;
  374. }
  375. table.editdata = data;
  376. layer.open({
  377. type: 2,
  378. title: '打印',
  379. shadeClose: true,
  380. area: ['90%', '90%'],
  381. btn: ['打印', '取消'],
  382. yes: function (index, dom) {
  383. layui.onSubmitChild = function (data) {
  384. layer.close(index);
  385. };
  386. layui.submitChild();
  387. },
  388. btn2: function (index, layero) {
  389. layer.close(index);//关闭当前按钮
  390. },
  391. content: 'demand_print.html?id=' + data.id
  392. });
  393. });
  394. $('#btn_receive').on('click', function () {
  395. var data = utils.getSelectedRow('datagrid');
  396. if (data == false) {
  397. return;
  398. }
  399. if (data.status == 0) {
  400. layer.msg('该生产需求未审核,不允许收货');
  401. return;
  402. }
  403. table.editdata = data;
  404. layer.open({
  405. type: 2,
  406. title: '收货[' + data.no + ']',
  407. shadeClose: false,
  408. area: ['60%', '90%'],
  409. btn: ['保存', '取消'],
  410. yes: function (index, dom) {
  411. layui.onSubmitChild = function (data) {
  412. layer.close(index);
  413. table.reload('datagrid', {});
  414. };
  415. layui.submitChild();
  416. },
  417. btn2: function (index, layero) {
  418. layer.close(index);//关闭当前按钮
  419. },
  420. content: 'demand_receive.html?order_id=' + data.id
  421. });
  422. });
  423. $('#btn_query').on('click', function () {
  424. layer.open({
  425. type: 1,
  426. shadeClose: true,
  427. area: ['500px', '450px'],
  428. title: '查询',
  429. btn: ['查询'],
  430. yes: function (index, dom) {
  431. $('#query_search').click();
  432. },
  433. content: $('#dlg_query')
  434. });
  435. });
  436. form.on('submit(query-form-element)', function (data) {
  437. //layer.msg(JSON.stringify(data.field));
  438. _params = data.field;
  439. table.reload('datagrid', {
  440. where: data.field,
  441. page: {curr: 1}
  442. });
  443. layer.closeAll();
  444. return false
  445. });
  446. laydate.render({
  447. elem: '#create_time'
  448. , range: true
  449. });
  450. laydate.render({
  451. elem: '#demand_date'
  452. , range: true
  453. });
  454. });
  455. </script>
  456. </body>
  457. </html>