index.html 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. {extend name="../../base/view/common/base" /}
  2. <!-- 主体 -->
  3. {block name="body"}
  4. <div class="p-3">
  5. <form class="layui-form gg-form-bar border-x border-t" lay-filter="barsearchform">
  6. <div class="layui-input-inline" style="width:150px;">
  7. <select name="cate_id">
  8. <option value="">请选择合同类别</option>
  9. {volist name=":contract_cate()" id="v"}
  10. <option value="{$v.id}">{$v.title}</option>
  11. {/volist}
  12. </select>
  13. </div>
  14. <div class="layui-input-inline" style="width:150px;">
  15. <select name="type">
  16. <option value="">请选择合同性质</option>
  17. <option value="1">普通合同</option>
  18. <option value="2">框架合同</option>
  19. <option value="3">补充协议</option>
  20. <option value="4">其他合同</option>
  21. </select>
  22. </div>
  23. <div class="layui-input-inline" style="width:150px;">
  24. <select name="check_status">
  25. <option value="">请选择合同状态</option>
  26. <option value="0">待审核</option>
  27. <option value="1">审核中</option>
  28. <option value="2">审核通过</option>
  29. <option value="3">审核拒绝</option>
  30. <option value="4">已撤销</option>
  31. <option value="5">已中止</option>
  32. <option value="6">已作废</option>
  33. </select>
  34. </div>
  35. <div class="layui-input-inline" style="width:240px;">
  36. <input type="text" name="keywords" placeholder="输入关键字" class="layui-input" autocomplete="off">
  37. </div>
  38. <div class="layui-input-inline" style="width:150px;">
  39. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
  40. <button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
  41. </div>
  42. </form>
  43. <table class="layui-hide" id="test" lay-filter="test"></table>
  44. </div>
  45. <script type="text/html" id="toolbarDemo">
  46. <div class="layui-btn-container">
  47. <span class="layui-btn layui-btn-sm" title="添加合同" lay-event="add">+ 添加合同</span>
  48. </div>
  49. </script>
  50. {/block}
  51. <!-- /主体 -->
  52. <!-- 脚本 -->
  53. {block name="script"}
  54. <script>
  55. const moduleInit = ['tool'];
  56. function gouguInit() {
  57. var table = layui.table, tool = layui.tool ,form = layui.form;
  58. layui.pageTable = table.render({
  59. elem: '#test',
  60. title: '合同列表',
  61. toolbar: '#toolbarDemo',
  62. defaultToolbar:['filter', {title:'导出EXCEL',layEvent: 'LAYTABLE_EXCEL',icon: 'layui-icon-export'}],
  63. url: "/contract/index/index", //数据接口
  64. cellMinWidth: 80,
  65. page: true, //开启分页
  66. limit: 20,
  67. cols: [
  68. [ //表头
  69. {
  70. field: 'id',
  71. title: '编号',
  72. align: 'center',
  73. width: 80
  74. },
  75. { field: 'check_status', title: '状态', align: 'center', width: 80, templet: function (d) {
  76. var html = '<span class="layui-btn layui-btn-xs layui-bg-' + d.check_status + '">' + d.status_name + '</span>';
  77. return html;
  78. }
  79. },
  80. {
  81. field: 'code',
  82. title: '合同编号',
  83. width: 160
  84. },
  85. {
  86. field: 'name',
  87. title: '合同名称',
  88. minWidth:240,
  89. templet: '<div><a data-href="/contract/index/view/id/{{d.id}}.html" class="side-a">{{d.name}}</a></div>'
  90. },
  91. {
  92. field: 'cate_title',
  93. title: '合同类别',
  94. align: 'center',
  95. width: 100
  96. },
  97. {
  98. field: 'type_name',
  99. title: '合同性质',
  100. align: 'center',
  101. width: 80,
  102. templet: function (d) {
  103. var html = '<span class="layui-color-' + d.type_a + '">' + d.type_name + '</span>';
  104. return html;
  105. }
  106. },
  107. {
  108. field: 'interval_time',
  109. title: '合同有效时间',
  110. align: 'center',
  111. width: 248,
  112. templet: function (d) {
  113. var html = d.interval_time;
  114. if (d.delay > 0 && d.delay < 30) {
  115. html += '<span class="red ml-1" style="font-size:12px;">' + d.delay + '天后到期</span>';
  116. }
  117. if (d.delay == 0) {
  118. html += '<span class="red ml-1" style="font-size:12px;">已过期</span>';
  119. }
  120. return html;
  121. }
  122. },
  123. {
  124. field: 'cost',
  125. title: '合同金额/元',
  126. align: 'right',
  127. width: 100
  128. },
  129. {
  130. field: 'sign_name',
  131. title: '签定人',
  132. align: 'center',
  133. width: 80
  134. },
  135. {
  136. field: 'keeper_name',
  137. title: '保管人',
  138. align: 'center',
  139. width: 80
  140. },
  141. {
  142. field: 'sign_time',
  143. title: '签订时间',
  144. align: 'center',
  145. width: 100
  146. },
  147. {
  148. field: 'right',
  149. fixed:'right',
  150. title: '操作',
  151. width: 100,
  152. align: 'center',
  153. templet: function (d) {
  154. var html = '<div class="layui-btn-group">';
  155. var btn0='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
  156. var btn1='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
  157. var btn2='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span>';
  158. if(d.check_status==0 || d.check_status==4){
  159. return html+btn1+btn2+'</div>';
  160. }
  161. else{
  162. return btn0;
  163. }
  164. }
  165. }
  166. ]
  167. ]
  168. });
  169. //表头工具栏事件
  170. table.on('toolbar(test)', function(obj){
  171. if (obj.event === 'add') {
  172. selectType();
  173. return;
  174. }
  175. if(obj.event === 'LAYTABLE_EXCEL'){
  176. var formSelect = form.val('barsearchform');
  177. formSelect.limit=99999;
  178. $.ajax({
  179. url: '/contract/index/index',
  180. data: formSelect,
  181. success:function(res){
  182. table.exportFile('test', res.data,'xls');
  183. }
  184. });
  185. return;
  186. }
  187. });
  188. //监听行工具事件
  189. table.on('tool(test)', function(obj) {
  190. var data = obj.data;
  191. if(obj.event === 'view'){
  192. tool.side('/contract/index/view?id='+data.id);
  193. return;
  194. }
  195. if(obj.event === 'edit'){
  196. tool.side('/contract/index/add?id='+data.id);
  197. return;
  198. }
  199. if (obj.event === 'del') {
  200. layer.confirm('确定要删除吗?', {
  201. icon: 3,
  202. title: '提示'
  203. }, function(index) {
  204. let callback = function (e) {
  205. layer.msg(e.msg);
  206. if (e.code == 0) {
  207. obj.del();
  208. }
  209. }
  210. tool.delete("/contract/index/delete", {id: data.id}, callback);
  211. layer.close(index);
  212. });
  213. }
  214. });
  215. //选择合同性质
  216. var table_a;
  217. function selectType() {
  218. layer.open({
  219. title: '选择合同性质',
  220. type:1,
  221. area: ['480px', '336px'],
  222. content: '<div class="picker-table"><div id="boxselect"></div></div>',
  223. success: function() {
  224. table_a = table.render({
  225. elem: '#boxselect',
  226. cols: [
  227. [{
  228. type: 'radio',
  229. title: '选择',
  230. width: 100
  231. }, {
  232. field: 'title',
  233. title: '名称'
  234. }]
  235. ],
  236. data: [{
  237. "type": "1",
  238. "title": "普通合同"
  239. },{
  240. "type": "2",
  241. "title": "框架合同"
  242. }, {
  243. "type": "3",
  244. "title": "补充协议"
  245. }, {
  246. "type": "4",
  247. "title": "其他合同"
  248. }]
  249. });
  250. },
  251. btn:['确定'],
  252. yes: function(index) {
  253. var checkStatus = table.checkStatus(table_a.config.id);
  254. var data = checkStatus.data;
  255. if (data.length > 0) {
  256. if(data[0].type == 3){
  257. selectCharge(data[0].type);
  258. }
  259. else{
  260. tool.side("/contract/index/add?type="+data[0].type);
  261. }
  262. layer.close(index);
  263. }
  264. else{
  265. layer.msg('选择合同性质');
  266. }
  267. }
  268. })
  269. }
  270. //选择母合同
  271. var table_b;
  272. function selectCharge(type){
  273. layer.open({
  274. title:'选择母合同',
  275. area:['680px','580px'],
  276. type:1,
  277. content:'<div class="picker-table">\
  278. <form class="layui-form pb-2">\
  279. <div class="layui-input-inline" style="width:500px;">\
  280. <input type="text" name="keywords" placeholder="合同名称" class="layui-input" autocomplete="off" />\
  281. </div>\
  282. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="search_form">提交搜索</button>\
  283. </form>\
  284. <div id="boxcontract"></div></div>',
  285. success:function(){
  286. table_b=table.render({
  287. elem: '#boxcontract'
  288. ,url:'/contract/api/get_contract'
  289. ,page: true //开启分页
  290. ,limit: 10
  291. ,cols: [[
  292. {type:'radio',title: '选择'}
  293. ,{field:'name', title: '合同名称'}
  294. ,{field:'sign_name', width:90, title: '签约人',align:'center'}
  295. ,{field:'sign_time', width:110, title: '签约日期',align:'center'}
  296. ]]
  297. });
  298. //搜索提交
  299. form.on('submit(search_form)', function(data){
  300. table_b.reload({where:{keywords:data.field.keywords},page:{curr:1}});
  301. return false;
  302. });
  303. },
  304. btn: ['确定'],
  305. yes: function(index){
  306. var checkStatus = table.checkStatus(table_b.config.id);
  307. var data = checkStatus.data;
  308. if(data.length>0){
  309. tool.side("/contract/index/add?type="+type+"&pid="+data[0].id);
  310. layer.close(index);
  311. }else{
  312. layer.msg('请先选择合同');
  313. return false;
  314. }
  315. }
  316. })
  317. }
  318. //监听搜索提交
  319. form.on('submit(webform)', function(data) {
  320. layui.pageTable.reload({
  321. where: {
  322. keywords: data.field.keywords,
  323. cate_id: data.field.cate_id,
  324. type: data.field.type,
  325. check_status: data.field.check_status
  326. },
  327. page: {
  328. curr: 1
  329. }
  330. });
  331. return false;
  332. });
  333. }
  334. </script>
  335. {/block}
  336. <!-- /脚本 -->