index.html 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. {extend name="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="$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. var dataLength = 0;//定义一个被减去的长度,0
  59. layui.pageTable = table.render({
  60. elem: '#test',
  61. id:"demo",
  62. title: '合同列表',
  63. toolbar: '#toolbarDemo',
  64. defaultToolbar:['filter', {title:'导出EXCEL',layEvent: 'LAYTABLE_EXCEL',icon: 'layui-icon-export'}],
  65. url: "/admin/contract.index/index", //数据接口
  66. cellMinWidth: 80,
  67. page: true, //开启分页
  68. limit: 20,
  69. cols: [
  70. [ //表头
  71. {
  72. field: 'numbers',
  73. title: '编号',
  74. align: 'center',
  75. width: 80,
  76. // type:"numbers",
  77. templet: function(d){
  78. //获取当前数据的长度,减去dataLength
  79. const ccc = table.cache['demo'].length - dataLength;
  80. //减去dataLength加1
  81. dataLength++
  82. return ccc;
  83. }
  84. },{ field: 'check_status', title: '状态', align: 'center', width: 80, templet: function (d) {
  85. var html = '<span class="layui-btn layui-btn-xs layui-bg-' + d.check_status + '">' + d.status_name + '</span>';
  86. return html;
  87. }
  88. },{
  89. field: 'code',
  90. title: '合同编号',
  91. width: 160
  92. },{
  93. field: 'name',
  94. title: '合同名称',
  95. minWidth:240,
  96. templet: '<div><a data-href="/admin/contract.index/view?id={{d.id}}" class="side-a">{{d.name}}</a></div>'
  97. }, {
  98. field: 'cate_title',
  99. title: '合同类别',
  100. align: 'center',
  101. width: 100
  102. }, {
  103. field: 'type_name',
  104. title: '合同性质',
  105. align: 'center',
  106. width: 80,
  107. templet: function (d) {
  108. var html = '<span class="layui-color-' + d.type_a + '">' + d.type_name + '</span>';
  109. return html;
  110. }
  111. },{
  112. field: 'interval_time',
  113. title: '合同有效时间',
  114. align: 'center',
  115. width: 248,
  116. templet: function (d) {
  117. var html = d.interval_time;
  118. if (d.delay > 0 && d.delay < 30) {
  119. html += '<span class="red ml-1" style="font-size:12px;">' + d.delay + '天后到期</span>';
  120. }
  121. if (d.delay == 0) {
  122. html += '<span class="red ml-1" style="font-size:12px;">已过期</span>';
  123. }
  124. return html;
  125. }
  126. },{
  127. field: 'cost',
  128. title: '合同金额(元)',
  129. align: 'right',
  130. align: 'center',
  131. width: 200
  132. }, {
  133. field: 'sign_name',
  134. title: '签定人',
  135. align: 'center',
  136. width: 200
  137. },{
  138. field: 'keeper_name',
  139. title: '保管人',
  140. align: 'center',
  141. width: 200
  142. }, {
  143. field: 'sign_time',
  144. title: '签订时间',
  145. align: 'center',
  146. width: 200
  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. done:function () {
  169. dataLength = 0;
  170. }
  171. });
  172. //表头工具栏事件
  173. table.on('toolbar(test)', function(obj){
  174. if (obj.event === 'add') {
  175. selectType();
  176. return;
  177. }
  178. if(obj.event === 'LAYTABLE_EXCEL'){
  179. var formSelect = form.val('barsearchform');
  180. formSelect.limit=99999;
  181. $.ajax({
  182. url: '/admin/contract.index/index',
  183. data: formSelect,
  184. success:function(res){
  185. table.exportFile('test', res.data,'xls');
  186. }
  187. });
  188. return;
  189. }
  190. });
  191. //监听行工具事件
  192. table.on('tool(test)', function(obj) {
  193. var data = obj.data;
  194. if(obj.event === 'view'){
  195. tool.side('/admin/contract.index/view?id='+data.id);
  196. return;
  197. }
  198. if(obj.event === 'edit'){
  199. tool.side('/admin/contract.index/edit?id='+data.id);
  200. return;
  201. }
  202. if (obj.event === 'del') {
  203. layer.confirm('确定要删除吗?', {
  204. icon: 3,
  205. title: '提示'
  206. }, function(index) {
  207. let callback = function (e) {
  208. layer.msg(e.msg);
  209. if (e.code == 0) {
  210. obj.del();
  211. }
  212. }
  213. tool.delete("/admin/contract.index/delete", {id: data.id}, callback);
  214. layer.close(index);
  215. });
  216. }
  217. });
  218. //选择合同性质
  219. var table_a;
  220. function selectType() {
  221. layer.open({
  222. title: '选择合同性质',
  223. type:1,
  224. area: ['480px', '336px'],
  225. content: '<div class="picker-table"><div id="boxselect"></div></div>',
  226. success: function() {
  227. table_a = table.render({
  228. elem: '#boxselect',
  229. cols: [
  230. [{
  231. type: 'radio',
  232. title: '选择',
  233. width: 100
  234. }, {
  235. field: 'title',
  236. title: '名称'
  237. }]
  238. ],
  239. data: [{
  240. "type": "1",
  241. "title": "普通合同"
  242. },{
  243. "type": "2",
  244. "title": "框架合同"
  245. }, {
  246. "type": "3",
  247. "title": "补充协议"
  248. }, {
  249. "type": "4",
  250. "title": "其他合同"
  251. }]
  252. });
  253. },
  254. btn:['确定'],
  255. yes: function(index) {
  256. var checkStatus = table.checkStatus(table_a.config.id);
  257. var data = checkStatus.data;
  258. console.log(checkStatus,data);
  259. if (data.length > 0) {
  260. if(data[0].type == 3){
  261. selectCharge(data[0].type);
  262. }
  263. else{
  264. tool.side("/admin/contract.index/add?type="+data[0].type);
  265. }
  266. layer.close(index);
  267. }
  268. else{
  269. layer.msg('选择合同性质');
  270. }
  271. }
  272. })
  273. }
  274. //选择母合同
  275. var table_b;
  276. function selectCharge(type){
  277. layer.open({
  278. title:'选择母合同',
  279. area:['680px','580px'],
  280. type:1,
  281. content:'<div class="picker-table">\
  282. <form class="layui-form pb-2">\
  283. <div class="layui-input-inline" style="width:500px;">\
  284. <input type="text" name="keywords" placeholder="合同名称" class="layui-input" autocomplete="off" />\
  285. </div>\
  286. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="search_form">提交搜索</button>\
  287. </form>\
  288. <div id="boxcontract"></div></div>',
  289. success:function(){
  290. table_b=table.render({
  291. elem: '#boxcontract'
  292. ,url:'/admin/contract.api/get_contract'
  293. ,page: true //开启分页
  294. ,limit: 10
  295. ,cols: [[
  296. {type:'radio',title: '选择'}
  297. ,{field:'name', title: '合同名称'}
  298. ,{field:'sign_name', width:90, title: '签约人',align:'center'}
  299. ,{field:'sign_time', width:110, title: '签约日期',align:'center'}
  300. ]]
  301. });
  302. //搜索提交
  303. form.on('submit(search_form)', function(data){
  304. table_b.reload({where:{keywords:data.field.keywords},page:{curr:1}});
  305. return false;
  306. });
  307. },
  308. btn: ['确定'],
  309. yes: function(index){
  310. var checkStatus = table.checkStatus(table_b.config.id);
  311. var data = checkStatus.data;
  312. if(data.length>0){
  313. tool.side("/admin/contract.index/add?type="+type+"&pid="+data[0].id);
  314. layer.close(index);
  315. }else{
  316. layer.msg('请先选择合同');
  317. return false;
  318. }
  319. }
  320. })
  321. }
  322. //监听搜索提交
  323. form.on('submit(webform)', function(data) {
  324. layui.pageTable.reload({
  325. where: {
  326. keywords: data.field.keywords,
  327. cate_id: data.field.cate_id,
  328. type: data.field.type,
  329. check_status: data.field.check_status
  330. },
  331. page: {
  332. curr: 1
  333. }
  334. });
  335. return false;
  336. });
  337. }
  338. </script>
  339. {/block}
  340. <!-- /脚本 -->