purchase_payment.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  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" 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. </head>
  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. <body>
  21. <div class="layui-fluid">
  22. <div class="layui-card">
  23. <div class="layui-card-body" pad15>
  24. <div class="layui-row layui-col-space15">
  25. <div class="layui-col-md12">
  26. <div class="LAY-btns" style="margin-bottom: 10px;">
  27. <button class="layui-btn layui-btn-sm" data-permission="purchase.add_purchase_payment" id="btn_add"><i class="layui-icon layui-icon-add-1"></i>添加</button>
  28. <button class="layui-nav" data-permission="purchase.review_purchase_payment">
  29. <div class="layui-nav-item">
  30. <a href="javascript:;" style="color:#fff;">复核</a>
  31. <dl class="layui-nav-child">
  32. <dd><a href="#" id="btn_review">复核</a></dd>
  33. <dd><a href="#" id="btn_review_back">撤销</a></dd>
  34. </dl>
  35. </div>
  36. </button>
  37. <button class="layui-nav" data-permission="purchase.ratify_purchase_payment">
  38. <div class="layui-nav-item">
  39. <a href="javascript:;" style="color:#fff;">批准</a>
  40. <dl class="layui-nav-child">
  41. <dd><a href="#" id="btn_ratify">批准</a></dd>
  42. <dd><a href="#" id="btn_ratify_back">撤销</a></dd>
  43. </dl>
  44. </div>
  45. </button>
  46. <button class="layui-btn layui-btn-sm" data-permission="purchase.pay_purchase_payment" id="btn_pay"><i class="layui-icon layui-icon-add-1"></i>付款</button>
  47. <button class="layui-nav" data-permission="purchase.export_purchase_payment">
  48. <div class="layui-nav-item">
  49. <a href="javascript:;" style="color:#fff;">导出</a>
  50. <dl class="layui-nav-child"> <!-- 二级菜单 -->
  51. <dd><a href="#" id="btn_export">导出列表</a></dd>
  52. <dd><a href="#" id="btn_detail_export">导出明细</a></dd>
  53. </dl>
  54. </div>
  55. </button>
  56. <button class="layui-btn layui-btn-sm" data-permission="purchase.print_purchase_payment" id="btn_print"><i class="layui-icon layui-icon-form"></i>打印</button>
  57. <button class="layui-btn layui-btn-sm" id="btn_query"><i class="layui-icon layui-icon-search"></i>查询</button>
  58. </div>
  59. <table class="layui-hide" id="datagrid" lay-filter="datagrid-operate"></table>
  60. <script type="text/html" id="datagrid-operate-bar">
  61. <div class="layui-btn-group">
  62. <a class="layui-btn layui-btn-xs" data-permission="purchase.view_purchase_plan" lay-event="detail">查看</a>
  63. {{# if(d.status ==0){ }}
  64. <a class="layui-btn layui-btn-xs" data-permission="purchase.add_purchase_plan" lay-event="edit">修改</a>
  65. <a class="layui-btn layui-btn-danger layui-btn-xs" data-permission="purchase.delete_purchase_plan" lay-event="del">删除</a>
  66. <a class="layui-btn layui-btn-xs" data-permission="purchase.check_purchase_plan" id="check" lay-event="check">审核</a>
  67. {{# } }}
  68. {{# if(d.status > 0 && d.is_pay ==0){ }}
  69. <a class="layui-btn layui-btn-xs" data-permission="purchase.check_purchase_plan" id="checkout" lay-event="checkout">撤销审核</a>
  70. {{# } }}
  71. {{# if(d.status > 1 && d.is_pay ==1){ }}
  72. <a class="layui-btn layui-btn-xs" data-permission="purchase.view_purchase_plan" id="pay_detail" lay-event="pay_detail">付款明细</a>
  73. {{# } }}
  74. </div>
  75. </script>
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. <div id="dlg_query" style="display: none">
  82. <div class="layui-card-body" pad15>
  83. <form class="layui-form" lay-filter="query-form-element">
  84. <div class="layui-row layui-col-space10 layui-form-item">
  85. <div class="layui-col-xs12 layui-col-sm12">
  86. <label class="layui-form-label">创建时间</label>
  87. <div class="layui-input-inline">
  88. <input type="text" class="layui-input" name="create_time" id="create_time" placeholder=" - ">
  89. </div>
  90. </div>
  91. <div class="layui-col-xs12 layui-col-sm12">
  92. <label class="layui-form-label">审核状态:</label>
  93. <div class="layui-input-block">
  94. <select id="id_status" name="status">
  95. <option value="">全部</option>
  96. <option value="0">待审核</option>
  97. <option value="1">已审核</option>
  98. </select>
  99. </div>
  100. </div>
  101. <div class="layui-col-xs12 layui-col-sm12">
  102. <label class="layui-form-label">付款单号:</label>
  103. <div class="layui-input-block">
  104. <input type="text" name="no" class="layui-input" autocomplete="off">
  105. </div>
  106. </div>
  107. <div class="layui-col-xs12 layui-col-sm12">
  108. <label class="layui-form-label">供应商:</label>
  109. <div class="layui-input-block">
  110. <input type="text" name="supplier_name" class="layui-input" autocomplete="off">
  111. </div>
  112. </div>
  113. <div class="layui-col-xs12 layui-col-sm12">
  114. <label class="layui-form-label">合同单号:</label>
  115. <div class="layui-input-block">
  116. <input type="text" name="order_no" class="layui-input" autocomplete="off">
  117. </div>
  118. </div>
  119. <div class="layui-col-xs12 layui-col-sm12">
  120. <label class="layui-form-label">备注:</label>
  121. <div class="layui-input-block">
  122. <input type="text" name="notes" class="layui-input" autocomplete="off">
  123. </div>
  124. </div>
  125. </div>
  126. <div class="layui-form-item" style="display: none">
  127. <button class="layui-btn" lay-submit lay-filter="query-form-element" id="query_btn">查询</button>
  128. </div>
  129. </form>
  130. </div>
  131. </div>
  132. <script src="../../layuiadmin/layui/layui.js?t=1"></script>
  133. <script>
  134. var _params = '';
  135. layui.config({
  136. base: '../../../layuiadmin/' //静态资源所在路径
  137. }).extend({
  138. index: 'lib/index' //主入口模块
  139. }).use(['index','utils', 'table','laydate', 'form', 'upload'], function () {
  140. var $ = layui.$;
  141. var table = layui.table
  142. ,laydate = layui.laydate
  143. ,utils = layui.utils
  144. ,form = layui.form;
  145. table.render({
  146. elem: '#datagrid'
  147. ,url: '/purchase/purchase_payment/data/'
  148. ,cols: [[
  149. {type:'checkbox',width:50}
  150. ,{field:'no', title:'付款单号', width:140}
  151. ,{field:'order_no', title:'合同号', width:120}
  152. ,{field:'supplier_name', title:'供应商', width:100}
  153. ,{field:'supplier_account', title:'供应商账号', width:100}
  154. ,{field:'amount', align:'right', title:'合同总金额', width:100}
  155. ,{field:'apply_amount', align:'right', title:'申请金额', width:100}
  156. ,{field:'actual_amount', align:'right', title:'实付金额', width:120}
  157. ,{field:'create_time', title:'创建时间', width:150}
  158. ,{field:'create_user_text', title:'创建人', width:100}
  159. ,{field:'status_text', title:'审核状态', width: 100}
  160. ,{field:'check_time', title:'审核时间', width:150}
  161. ,{field:'check_user_text', title:'审核人', width: 100}
  162. ,{field:'review_time', title:'复核时间', width:150}
  163. ,{field:'review_user_text', title:'复核人', width: 100}
  164. ,{field:'ratify_time', title:'批准时间', width:150}
  165. ,{field:'ratify_user_text', title:'批准人', width: 100}
  166. ,{field:'notes', title:'备注', minWidth:120}
  167. ,{width:193, align:'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
  168. ]]
  169. ,page: true
  170. ,totalRow: true
  171. ,height: 'full-104'
  172. ,parseData:function(res) {
  173. var cols = this.cols[0];
  174. for (var i in cols) {
  175. if (cols[i].field == 'amount') {
  176. cols[i].totalRowText = res.more.sum_amount;
  177. }
  178. }
  179. return {
  180. "code": res.code, //解析接口状态
  181. "count": res.count, //解析数据长度
  182. "data": res.data //解析数据列表
  183. };
  184. }
  185. ,done:function () {
  186. layui.index.removeNoPermButtons();
  187. }
  188. });
  189. //监听工具条
  190. table.on('tool(datagrid-operate)', function(obj){
  191. var data = obj.data;
  192. if(obj.event === 'del'){
  193. if (data.status == 1){
  194. layer.msg('付款单已审核,禁止删除');
  195. return false;
  196. }
  197. layer.confirm('确定要删除吗?', function(index){
  198. layer.close(index);
  199. layui.admin.req({
  200. url: '/purchase/purchase_payment/delete/?id='+data.id
  201. ,done: function(res){
  202. table.reload('datagrid',{});
  203. }
  204. });
  205. });
  206. }else if(obj.event === 'detail'){
  207. table.editdata = data;
  208. layer.open({
  209. type: 2,
  210. title: '查看['+ data.no + ']',
  211. shadeClose: true,
  212. area: ['90%', '90%'],
  213. content: 'purchase_payment_detail.html?id='+data.id
  214. });
  215. }else if(obj.event === 'pay_detail'){
  216. table.editdata = data;
  217. layer.open({
  218. type: 2,
  219. title: '查看付款明细['+ data.no + ']',
  220. shadeClose: true,
  221. area: ['90%', '90%'],
  222. content: 'purchase_payment_pay_detail.html?id='+data.id
  223. });
  224. }else if(obj.event === 'check'){
  225. if (data.status == 1){
  226. layer.msg('付款单已审核,禁止重复操作');
  227. return false;
  228. }
  229. layer.confirm('确定要审核吗?', function(index){
  230. layer.close(index);
  231. layui.admin.req({
  232. url: '/purchase/purchase_payment/check/?status=1&id='+data.id
  233. ,done: function(res){
  234. table.reload('datagrid',{});
  235. }
  236. });
  237. });
  238. }else if(obj.event === 'checkout'){
  239. if (data.status == 0){
  240. layer.msg('该单据尚未审核');
  241. return false;
  242. }
  243. if (data.review_time){
  244. layer.msg('该单据已复核');
  245. return false;
  246. }
  247. if (data.is_pay){
  248. layer.msg('该单据已付款,禁止撤销审核');
  249. return false;
  250. }
  251. layer.confirm('确定要撤销审核吗?', function(index){
  252. layer.close(index);
  253. layui.admin.req({
  254. url: '/purchase/purchase_payment/check/?status=0&id='+data.id
  255. ,done: function(res){
  256. table.reload('datagrid',{});
  257. }
  258. });
  259. });
  260. }else if(obj.event === 'edit'){
  261. if (data.status == 1){
  262. layer.msg('采购计划已审核,禁止修改');
  263. return false;
  264. }
  265. table.editdata = data;
  266. layer.open({
  267. type: 2,
  268. title: '修改',
  269. shadeClose: false,
  270. area: ['90%', '90%'],
  271. btn: ['保存', '取消'],
  272. yes: function(index, dom){
  273. layui.onSubmitChild = function (data) {
  274. layer.close(index);
  275. table.reload('datagrid',{});
  276. };
  277. layui.submitChild();
  278. },
  279. btn2: function(index, layero){
  280. layer.close(index);//关闭当前按钮
  281. },
  282. content: 'purchase_payment_edit.html?id='+data.id
  283. });
  284. }
  285. });
  286. $('#btn_export').on('click', function(){
  287. layui.admin.req({
  288. url: '/purchase/purchase_payment/export/',
  289. data:_params,
  290. done: function (res) {
  291. layui.view.download(res.data.filename);
  292. }
  293. });
  294. });
  295. $('#btn_detail_export').on('click', function(){
  296. var data = utils.getSelectedRow('datagrid');
  297. if(data == false){
  298. return;
  299. }
  300. table.editdata = data;
  301. layui.admin.req({
  302. url: '/purchase/purchase_payment/export_detail/?id='+data.id,
  303. data:_params,
  304. done: function (res) {
  305. layui.view.download(res.data.filename);
  306. }
  307. });
  308. });
  309. $('#btn_add').on('click', function(){
  310. layer.open({
  311. type: 2,
  312. title: '添加',
  313. area: ['90%', '90%'],
  314. btn: ['保存', '取消'],
  315. yes: function(index, dom){
  316. layui.onSubmitChild = function (data) {
  317. layer.close(index);
  318. table.reload('datagrid',{});
  319. };
  320. layui.submitChild();
  321. },
  322. btn2: function(index, layero){
  323. layer.close(index);//关闭当前按钮
  324. },
  325. content: 'purchase_payment_edit.html'
  326. });
  327. });
  328. $('#btn_review').on('click', function(){
  329. var data = utils.getSelectedRow('datagrid');
  330. if (!data) {
  331. layer.msg('请选择一条记录');
  332. return;
  333. }
  334. if(data.review_time){
  335. layer.msg('该付款单已复核');
  336. return;
  337. }
  338. if(data.status == '0' ){
  339. layer.msg('该付款单未审核,禁止复核');
  340. return;
  341. }
  342. layer.confirm('确定要复核吗?', function(index){
  343. layer.close(index);
  344. layui.admin.req({
  345. url: '/purchase/purchase_payment/review/?status=1&id='+data.id
  346. ,done: function(res){
  347. table.reload('datagrid',{});
  348. }
  349. });
  350. });
  351. });
  352. $('#btn_review_back').on('click', function(){
  353. var data = utils.getSelectedRow('datagrid');
  354. if (!data) {
  355. layer.msg('请选择一条记录');
  356. return;
  357. }
  358. if(!data.review_time){
  359. layer.msg('该付款单未复核,禁止撤销复核');
  360. return;
  361. }
  362. if(data.ratify_time){
  363. layer.msg('该付款单已批准,禁止撤销复核');
  364. return;
  365. }
  366. layer.confirm('确定要撤销复核吗?', function(index){
  367. layer.close(index);
  368. layui.admin.req({
  369. url: '/purchase/purchase_payment/review/?status=0&id='+data.id
  370. ,done: function(res){
  371. table.reload('datagrid',{});
  372. }
  373. });
  374. });
  375. });
  376. $('#btn_ratify').on('click', function(){
  377. var data = utils.getSelectedRow('datagrid');
  378. if (!data) {
  379. layer.msg('请选择一条记录');
  380. return;
  381. }
  382. if(!data.review_time){
  383. layer.msg('该付款单未复核');
  384. return;
  385. }
  386. if(data.ratify_time){
  387. layer.msg('该付款单已批准');
  388. return;
  389. }
  390. layer.confirm('确定要批准吗?', function(index){
  391. layer.close(index);
  392. layui.admin.req({
  393. url: '/purchase/purchase_payment/ratify/?status=1&id='+data.id
  394. ,done: function(res){
  395. table.reload('datagrid',{});
  396. }
  397. });
  398. });
  399. });
  400. $('#btn_ratify_back').on('click', function(){
  401. var data = utils.getSelectedRow('datagrid');
  402. if (!data) {
  403. layer.msg('请选择一条记录');
  404. return;
  405. }
  406. if(!data.ratify_time){
  407. layer.msg('该付款单未批准');
  408. return;
  409. }
  410. if(data.is_pay){
  411. layer.msg('该付款单已付款');
  412. return;
  413. }
  414. layer.confirm('确定要撤销批准吗?', function(index){
  415. layer.close(index);
  416. layui.admin.req({
  417. url: '/purchase/purchase_payment/ratify/?status=0&id='+data.id
  418. ,done: function(res){
  419. table.reload('datagrid',{});
  420. }
  421. });
  422. });
  423. });
  424. $('#btn_pay').on('click', function(){
  425. var data = utils.getSelectedRow('datagrid');
  426. if(data == false){
  427. return;
  428. }
  429. if (!data.ratify_time) {
  430. layer.msg('该付款单尚未批准,不允许付款');
  431. return false;
  432. }
  433. var actual_amount = parseFloat(data.actual_amount);
  434. var amount = parseFloat(data.apply_amount);
  435. if (actual_amount >= amount) {
  436. layer.msg('该付款单已付款完毕');
  437. return false;
  438. }
  439. table.editdata = data;
  440. layer.open({
  441. type: 2,
  442. title: '付款['+ data.no +']',
  443. area: ['500px', '400px'],
  444. btn: ['保存', '取消'],
  445. yes: function(index, dom){
  446. layui.onSubmitChild = function (data) {
  447. layer.close(index);
  448. table.reload('datagrid',{});
  449. };
  450. layui.submitChild();
  451. },
  452. btn2: function(index, layero){
  453. layer.close(index);//关闭当前按钮
  454. },
  455. content: 'purchase_payment_pay.html'
  456. });
  457. });
  458. $('#btn_print').on('click', function(){
  459. var data = utils.getSelectedRow('datagrid');
  460. if(data == false){
  461. return;
  462. }
  463. table.editdata = data;
  464. layer.open({
  465. type: 2,
  466. title: '打印',
  467. shadeClose: true,
  468. area: ['90%', '90%'],
  469. btn: ['打印', '取消'],
  470. yes: function (index, dom) {
  471. layui.onSubmitChild = function(data){
  472. layer.close(index);
  473. };
  474. layui.submitChild();
  475. },
  476. btn2: function(index, layero){
  477. layer.close(index);//关闭当前按钮
  478. },
  479. content: 'purchase_payment_print.html'
  480. });
  481. });
  482. $('#btn_query').on('click', function(){
  483. layer.open({
  484. type: 1,
  485. shadeClose: true,
  486. area: ['500px', '430px'],
  487. title: '查询',
  488. btn: ['查询'],
  489. yes: function(index, dom){
  490. $('#query_btn').click();
  491. },
  492. content: $('#dlg_query')
  493. });
  494. });
  495. form.on('submit(query-form-element)', function(data){
  496. //layer.msg(JSON.stringify(data.field));
  497. _params = data.field;
  498. table.reload('datagrid', {
  499. where: data.field,
  500. page:{curr:1}
  501. });
  502. layer.closeAll();
  503. return false
  504. });
  505. laydate.render({
  506. elem: '#create_time'
  507. ,range: true
  508. });
  509. })
  510. </script>
  511. </body>
  512. </html>