view.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. {extend name="../../base/view/common/base" /}
  2. {block name="style"}
  3. <style>
  4. .layui-tab-title .layui-this{background-color:#fff;}
  5. .layui-tab-card,.layui-card{box-shadow:0 0 0 0 rgb(0 0 0 / 10%); border-radius:0; border-top:none;}
  6. #checkBox .pb-2{display:none;}
  7. </style>
  8. {/block}
  9. <!-- 主体 -->
  10. {block name="body"}
  11. <div class="p-page">
  12. <h3 class="pb-2">合同详情</h3>
  13. <table class="layui-table layui-table-form">
  14. <tr>
  15. <td class="layui-td-gray">合同名称</td>
  16. <td colspan="3">{$detail.name}</td>
  17. <td class="layui-td-gray">合同编号</td>
  18. <td>{$detail.code}</td>
  19. </tr>
  20. <tr>
  21. <td class="layui-td-gray">签约主体<span style="font-size:12px;">(乙方)</span></td>
  22. <td colspan="3">{$detail.subject_title}</td>
  23. <td class="layui-td-gray-2">合同始止日期</td>
  24. <td>{$detail.start_time} 至 {$detail.end_time}</td>
  25. </tr>
  26. <tr>
  27. <td class="layui-td-gray">客户名称<span style="font-size:12px;">(甲方)</span></td>
  28. <td colspan="3">{$detail.customer}</td>
  29. <td class="layui-td-gray">签约客户代表</td>
  30. <td>{$detail.contact_name}</td>
  31. </tr>
  32. <tr>
  33. <td class="layui-td-gray-2">客户联系地址</td>
  34. <td colspan="3">{$detail.contact_address|default='-'}</td>
  35. <td class="layui-td-gray">客户联系电话</td>
  36. <td>{$detail.contact_mobile|default='-'}</td>
  37. </tr>
  38. {notempty name="$detail.chance"}
  39. <tr>
  40. <td class="layui-td-gray">关联机会线索</td>
  41. <td colspan="5">{$detail.chance} <span class="layui-btn layui-btn-normal layui-btn-xs side-a" data-href="/customer/chance/view/?id={$detail.chance_id}">详情</span></td>
  42. </tr>
  43. {/notempty}
  44. <tr>
  45. <td class="layui-td-gray">合同金额</td>
  46. <td>{$detail.cost}</td>
  47. <td class="layui-td-gray">合同性质</td>
  48. <td>{$detail.types_name}</td>
  49. <td class="layui-td-gray">合同类别</td>
  50. <td>{$detail.cate_title}</td>
  51. </tr>
  52. <tr>
  53. <td colspan="6"><strong>签订信息</strong></td>
  54. </tr>
  55. <tr>
  56. <td class="layui-td-gray-2">合同签订人</td>
  57. <td>{$detail.sign_name}</td>
  58. <td class="layui-td-gray-2">合同所属部门</td>
  59. <td>{$detail.sign_department}</td>
  60. <td class="layui-td-gray-2">合同签订日期</td>
  61. <td>{$detail.sign_time}</td>
  62. </tr>
  63. <tr>
  64. <td class="layui-td-gray-2">合同制定人</td>
  65. <td>{$detail.prepared_name|default='-'}</td>
  66. <td class="layui-td-gray-2">合同保管人</td>
  67. <td>{$detail.keeper_name|default='-'} <span id="keeper" data-ids="{$detail.keeper_uid}" data-names="{$detail.keeper_name}" class="layui-btn layui-btn-xs layui-btn-normal ml-1">更改</span></td>
  68. <td class="layui-td-gray">合同共享人员</td>
  69. <td colspan="3">{$detail.share_names|default='-'} <span id="shares" data-ids="{$detail.share_ids}" data-names="{$detail.share_names}" class="layui-btn layui-btn-xs layui-btn-normal ml-1">更改</span></td>
  70. </tr>
  71. {eq name="$detail.types" value="2"}{include file="/contract/view_product"}{/eq}
  72. {eq name="$detail.types" value="3"}{include file="/contract/view_service"}{/eq}
  73. {notempty name="$detail.file_ids"}
  74. <tr>
  75. <td colspan="6"><strong>相关附件</strong></td>
  76. </tr>
  77. <tr>
  78. <td colspan="6">
  79. <div class="layui-row">
  80. {volist name="$detail.file_array" id="vo"}
  81. <div class="layui-col-md4">{:file_card($vo,'view')}</div>
  82. {/volist}
  83. </div>
  84. </td>
  85. </tr>
  86. {/notempty}
  87. {notempty name="$detail.remark"}
  88. <tr>
  89. <td colspan="6"><strong>备注信息</strong></td>
  90. </tr>
  91. <tr>
  92. <td colspan="6">{$detail.remark}</td>
  93. </tr>
  94. {/notempty}
  95. {notempty name="$detail.invoice"}
  96. <tr>
  97. <td colspan="6"><strong>申请开票记录</strong>『 已申请开票金额:<strong class="green">{$detail.has_invoice}</strong> 元,未申请开票金额:<strong class="red">{$detail.no_invoice}</strong> 元 』</td>
  98. </tr>
  99. <tr>
  100. <td colspan="6">
  101. <table class="layui-table layui-table-min" style="margin:0;">
  102. <tr>
  103. <th style="width:60px;">序号</th>
  104. <th style="width:150px;">发票金额(元)</th>
  105. <th style="width:150px;">发票状态</th>
  106. <th style="width:200px;">发票号码</th>
  107. <th style="width:150px;">发票日期</th>
  108. <th style="width:100px;">回款状态</th>
  109. <th style="width:100px;">申请人</th>
  110. <th style="width:150px;">申请时间</th>
  111. <th style="width:60px;">操作</th>
  112. </tr>
  113. {volist name="$detail.invoice" id="vo"}
  114. <tr>
  115. <td>{$vo.id}</td>
  116. <td><span class="green">{$vo.amount}</span></td>
  117. {eq name="$vo.open_status" value="1"}
  118. <td><span class="green">已开具</span></td>
  119. <td>{$vo.code}</td>
  120. <td>{$vo.open_time|date='Y-m-d'}</td>
  121. {else/}
  122. <td><span class="red">未开具</span></td>
  123. <td>-</td>
  124. <td>-</td>
  125. {/eq}
  126. <td>
  127. {eq name="$vo.enter_status" value="0"}<span class="red">未回款</span>{/eq}
  128. {eq name="$vo.enter_status" value="1"}<span class="blue">部分回款</span>{/eq}
  129. {eq name="$vo.enter_status" value="2"}<span class="green">全部回款</span>{/eq}
  130. </td>
  131. <td>{$vo.admin}</td>
  132. <td>{$vo.create_time | date='Y-m-d H:i:s'}</td>
  133. <td><span class="layui-btn layui-btn-normal layui-btn-xs side-a" data-href="/finance/invoice/view?id={$vo.id}">详情</span></td>
  134. </tr>
  135. {/volist}
  136. </table>
  137. </td>
  138. </tr>
  139. {/notempty}
  140. {notempty name="$detail.income"}
  141. <tr>
  142. <td colspan="6"><strong>回款记录</strong>『 已回款金额:<strong class="green">{$detail.has_income}</strong> 元,未回款金额:<strong class="red">{$detail.no_income}</strong> 元 』</</td>
  143. </tr>
  144. <tr>
  145. <td colspan="6">
  146. <table class="layui-table layui-table-min" style="margin:0;">
  147. <tr>
  148. <th style="width:60px;">序号</th>
  149. <th style="width:150px;">到帐金额(元)</th>
  150. <th style="width:200px;">到账日期</th>
  151. <th style="width:100px;">到账操作人</th>
  152. <th style="width:150px;">操作时间</th>
  153. <th style="width:60px;">操作</th>
  154. </tr>
  155. {volist name="$detail.income" id="vo"}
  156. <tr>
  157. <td>{$vo.id}</td>
  158. <td><span class="green">{$vo.amount}</span></td>
  159. <td>{$vo.enter_time | date='Y-m-d'}</td>
  160. <td>{$vo.admin}</td>
  161. <td>{$vo.create_time | date='Y-m-d H:i:s'}</td>
  162. <td><span class="layui-btn layui-btn-normal layui-btn-xs side-a" data-href="/finance/income/view?id={$vo.invoice_id}">详情</span></td>
  163. </tr>
  164. {/volist}
  165. </table>
  166. </td>
  167. </tr>
  168. {/notempty}
  169. <tr>
  170. <td colspan="6"><strong>合同情况</strong></td>
  171. </tr>
  172. <tr>
  173. <td class="layui-td-gray">录入人</td>
  174. <td>{$detail.admin_name} </td>
  175. <td class="layui-td-gray">录入时间</td>
  176. <td colspan="3">{$detail.create_time}</td>
  177. </tr>
  178. {gt name="$detail.archive_time" value="0"}
  179. <tr>
  180. <td class="layui-td-gray">归档状态</td>
  181. <td>
  182. <span class="red">已归档</span>
  183. {if ($auth == 1) }
  184. <span class="layui-btn layui-btn-danger layui-btn-xs ml-4" data-event="archive" data-status="0">反确认归档</span>
  185. {/if}
  186. </td>
  187. <td class="layui-td-gray">归档人</td>
  188. <td>{$detail.archive_name} </td>
  189. <td class="layui-td-gray">归档时间</td>
  190. <td>{$detail.archive_time|date='Y-m-d H:i:s'}</td>
  191. {else/}
  192. <td class="layui-td-gray">归档状态</td>
  193. <td colspan="5">
  194. <span class="green">未归档</span>
  195. {if ($auth == 1) AND ($detail.check_status == 2) }
  196. <span class="layui-btn layui-btn-xs ml-4" data-event="archive" data-status="1">确认归档</span>
  197. {/if}
  198. </td>
  199. </tr>
  200. {/gt}
  201. {gt name="$detail.stop_time" value="0"}
  202. <tr>
  203. <td class="layui-td-gray">中止人</td>
  204. <td>{$detail.stop_name}</td>
  205. <td class="layui-td-gray">中止时间</td>
  206. <td>{$detail.stop_time|date='Y-m-d H:i:s'}</td>
  207. <td colspan="2"><span class="layui-btn layui-btn-danger layui-btn-xs" data-event="stop" data-status="0">反中止合同</span></td>
  208. </tr>
  209. <tr>
  210. <td class="layui-td-gray">中止备注</td>
  211. <td colspan="5">{$detail.stop_remark|default='-'}</td>
  212. </tr>
  213. {/gt}
  214. {gt name="$detail.void_time" value="0"}
  215. <tr>
  216. <td class="layui-td-gray">作废人</td>
  217. <td>{$detail.void_name}</td>
  218. <td class="layui-td-gray">作废时间</td>
  219. <td>{$detail.void_time|date='Y-m-d H:i:s'}</td>
  220. <td colspan="2"><span class="layui-btn layui-btn-danger layui-btn-xs" data-event="void" data-status="0">反作废合同</span></td>
  221. </tr>
  222. <tr>
  223. <td class="layui-td-gray-2">作废备注</td>
  224. <td colspan="5">{$detail.void_remark|default='-'}</td>
  225. </tr>
  226. {/gt}
  227. <tr>
  228. <td class="layui-td-gray">
  229. <div>盖章合同文件</div>
  230. <div><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn">文件上传</button></div>
  231. </td>
  232. <td colspan="5">
  233. <div class="row" id="uploadBox">
  234. <input type="hidden" data-type="file" name="seal_ids" value="{$detail.seal_ids|default=''}">
  235. {volist name="$detail.seal_array" id="vo"}
  236. <div class="layui-col-md4" id="file_{$vo.id}">{:file_card($vo)}</div>
  237. {/volist}
  238. </div>
  239. </td>
  240. </tr>
  241. </table>
  242. <div class="layui-tab layui-tab-card" style="margin:0; background-color:#fff;" lay-filter="contract" id="contractTab">
  243. <ul class="layui-tab-title">
  244. <li class="layui-this" data-load="true">审批信息</li>
  245. <li>操作记录</li>
  246. </ul>
  247. <div class="layui-tab-content" style="padding:0;">
  248. <div class="layui-tab-item layui-show" style="padding-top:12px; background-color:#fff;">
  249. {if ($detail.stop_time == 0) AND ($detail.void_time == 0) }
  250. <div id="checkBox" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}" class="px-3 pb-3"></div>
  251. {/if}
  252. </div>
  253. <div class="layui-tab-item">
  254. {include file="/contract/view_log" /}
  255. </div>
  256. </div>
  257. </div>
  258. </div>
  259. {/block}
  260. <!-- /主体 -->
  261. <!-- 脚本 -->
  262. {block name="script"}
  263. <script>
  264. var contract_id = {$detail.id};
  265. var auth = {$auth};
  266. var archive = {$detail.archive_time};
  267. var moduleInit = ['tool','oaCheck','oaPicker','oaEdit','uploadPlus'];
  268. let checking_btn='<span class="layui-btn layui-btn-warm" data-event="stop" data-status="1">中止合同</span><span class="layui-btn layui-btn-danger" data-event="void" data-status="1">作废合同</span>';
  269. function gouguInit() {
  270. var tool = layui.tool,element = layui.element,oaCheck=layui.oaCheck,oaPicker=layui.oaPicker,uploadPlus=layui.uploadPlus;
  271. var attachment = new uploadPlus({
  272. "attachment":{
  273. "uidDelete":true,//是否开启只有上传人自己才能删除自己的附件
  274. "ajaxSave":function(res){
  275. $.ajax({
  276. url: "/contract/api/contract_seal_ids",
  277. type:'post',
  278. data:{
  279. 'id':contract_id,
  280. 'seal_ids':res,
  281. },
  282. success: function (e) {
  283. layer.msg(e.msg);
  284. if (e.code == 0) {
  285. setTimeout(function(){
  286. location.reload();
  287. },1000)
  288. }
  289. }
  290. })
  291. },
  292. "ajaxDelete":function(res){
  293. $.ajax({
  294. url: "/contract/api/contract_seal_ids",
  295. type:'post',
  296. data:{
  297. 'id':contract_id,
  298. 'seal_ids':res,
  299. },
  300. success: function (e) {
  301. layer.msg(e.msg);
  302. if (e.code == 0) {
  303. setTimeout(function(){
  304. location.reload();
  305. },1000)
  306. }
  307. }
  308. })
  309. }
  310. }
  311. })
  312. element.on('tab(contract)', function(data){
  313. let index = data.index;
  314. if(index == 1){
  315. log();
  316. }
  317. });
  318. oaCheck.init({
  319. check_name:'contract',
  320. checking_btn:checking_btn,
  321. check_reversed :function(){
  322. }
  323. });
  324. let eventCallback = function (e) {
  325. layer.msg(e.msg);
  326. parent.layui.pageTable.reload();
  327. setTimeout(function(){
  328. location.reload();
  329. },1200)
  330. }
  331. //选择合同保管人弹窗
  332. $('body').on('click','#keeper',function () {
  333. let that = $(this);
  334. let ids=$(this).data('ids')+'',names = $(this).data('names')+'';
  335. oaPicker.employeeInit({
  336. ids:ids,
  337. names:names,
  338. type:1,//1是单选,2是多选
  339. callback:function(data){
  340. let select_id=[],select_name=[];
  341. for(var a=0; a<data.length;a++){
  342. select_id.push(data[a].id);
  343. select_name.push(data[a].name);
  344. }
  345. tool.post("/contract/contract/add", {'id':contract_id,'keeper_uid':select_id.join(','),'scene':'change'}, eventCallback);
  346. }
  347. });
  348. });
  349. //选择共享成员弹窗
  350. $('body').on('click','#shares',function () {
  351. let that = $(this);
  352. let ids=$(this).data('ids')+'',names = $(this).data('names')+'';
  353. oaPicker.employeeInit({
  354. ids:ids,
  355. names:names,
  356. type:2,//1是单选,2是多选
  357. callback:function(data){
  358. let select_id=[],select_name=[];
  359. for(var a=0; a<data.length;a++){
  360. select_id.push(data[a].id);
  361. select_name.push(data[a].name);
  362. }
  363. tool.post("/contract/contract/add", {'id':contract_id,'share_ids':select_id.join(','),'scene':'change'}, eventCallback);
  364. }
  365. });
  366. });
  367. //归档操作
  368. $('body').on('click','[data-event="archive"]',function(){
  369. let status = $(this).data('status');
  370. let tips = '合同归档后将不能进行任何数据操作,确定要提交归档?';
  371. if(status==0){
  372. tips = '确定要反归档操作?';
  373. }
  374. layer.confirm(tips, {
  375. icon: 3,
  376. title: '提示'
  377. }, function(index) {
  378. tool.post("/contract/api/contract_archive", {id: contract_id,archive_status:status}, eventCallback);
  379. layer.close(index);
  380. });
  381. })
  382. //中止操作
  383. $('body').on('click','[data-event="stop"]',function(){
  384. let status = $(this).data('status');
  385. if(status==1){
  386. layer.prompt({
  387. formType: 2,
  388. title: '请输入中止的理由',
  389. area: ['480px', '120px']
  390. }, function(value, index, elem){
  391. tool.post("/contract/api/contract_stop", {id: contract_id,stop_status:status,stop_remark:value}, eventCallback);
  392. layer.close(index);
  393. });
  394. }
  395. else{
  396. layer.confirm('确定要反中止该合同?', {
  397. icon: 3,
  398. title: '提示'
  399. }, function(index) {
  400. tool.post("/contract/api/contract_stop", {id: contract_id,stop_status:status}, eventCallback);
  401. layer.close(index);
  402. });
  403. }
  404. })
  405. //作废操作
  406. $('body').on('click','[data-event="void"]',function(){
  407. let status = $(this).data('status');
  408. if(status==1){
  409. layer.prompt({
  410. formType: 2,
  411. title: '请输入作废的理由',
  412. area: ['480px', '120px']
  413. }, function(value, index, elem){
  414. tool.post("/contract/api/contract_tovoid", {id: contract_id,void_status:status,void_remark:value}, eventCallback);
  415. layer.close(index);
  416. });
  417. }
  418. else{
  419. layer.confirm('确定要反作废该合同?', {
  420. icon: 3,
  421. title: '提示'
  422. }, function(index) {
  423. tool.post("/contract/api/contract_tovoid", {id: contract_id,void_status:status}, eventCallback);
  424. layer.close(index);
  425. });
  426. }
  427. })
  428. }
  429. </script>
  430. {/block}
  431. <!-- /脚本 -->