tBActivitiCostPayInnerUser-add.jsp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459
  1. <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/context/mytags.jsp"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <title>员工报销</title>
  7. <style>
  8. .ui-button {
  9. display: inline-block;
  10. padding: 2px 2px;
  11. margin-bottom: 0;
  12. font-size: 8px;
  13. font-weight: normal;
  14. line-height: 1.42857143;
  15. text-align: center;
  16. white-space: nowrap;
  17. vertical-align: middle;
  18. -ms-touch-action: manipulation;
  19. touch-action: manipulation;
  20. cursor: pointer;
  21. -webkit-user-select: none;
  22. -moz-user-select: none;
  23. -ms-user-select: none;
  24. user-select: none;
  25. background-image: none;
  26. border: 1px solid transparent;
  27. border-radius: 4px;
  28. }
  29. </style>
  30. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  31. <script src="webpage/cn/com/lzt/useractiviti/select_user_tools.js"></script>
  32. <script src="webpage/cn/com/lzt/cost/cost_tools.js"></script>
  33. <c:set var="sourceType">${empty entity.sourceType?param.sourceType:entity.sourceType}</c:set>
  34. <script type="text/javascript">
  35. $(document).ready(function(){
  36. $('#tt').tabs({
  37. onSelect:function(title){
  38. changeTabHeight();
  39. }
  40. });
  41. $(".tabs-wrap").css('width','100%');
  42. });
  43. function changeTabHeight(){
  44. var height =window.top.document.body.offsetHeight;
  45. height = height -181.3 - 36 - 100 -4;//去掉底部输入框table高度、title高度、弹出框小于后台页面高度、文本格式高度
  46. $('#tt .panel-body').css('width','auto').css('height',height+'px');
  47. }
  48. var sourceType='${sourceType}';
  49. function openDep(){
  50. selectUserDep('项目列表',function (selectedRows) {
  51. var one = selectedRows[0];
  52. var departId = one.id;
  53. var depName = one.departName;
  54. $('#departId').val(departId);
  55. $('#depName').val(depName);
  56. $('#add_tBActivitiCostPayInnerUserDetail_table').html('');
  57. resetTotal();
  58. addRow();
  59. });
  60. }
  61. var isDepartUser = '${isDepart}';
  62. function openUser(){
  63. var depId = $('#departId').val();
  64. if(isDepartUser=='true'){
  65. selectAllUser('',function(rows){
  66. var one = rows[0];
  67. var userid = one.id;
  68. var realName = one.realName;
  69. $('#receiveUserId').val(userid);
  70. $('#receiveUserName').val(realName);
  71. });
  72. }else{
  73. selectUserByDepart(depId,'',function(rows){
  74. var one = rows[0];
  75. var userid = one.id;
  76. var realName = one.realName;
  77. $('#receiveUserId').val(userid);
  78. $('#receiveUserName').val(realName);
  79. });
  80. }
  81. }
  82. function resetTotal(){
  83. changeTotalExpectMoney();
  84. changeTotalBillCount();
  85. changeTotalPayMoney();
  86. changeTotalAmount();
  87. changeTotalTax();
  88. _selectRequest = {};
  89. $('input[name$="requestId"]').each(function(){
  90. var ids=$(this).val();
  91. var idArray=ids.split(',');
  92. for(var i=0;i<idArray.length;i++){
  93. _selectRequest[idArray[i]]=1
  94. }
  95. });
  96. }
  97. var _selectRequest= {};
  98. function openRequest(rowIndex) {
  99. var departId=$('#departId').val();
  100. var id=$('#id').val();
  101. var params = {};
  102. params.departId = departId;
  103. params.id = id;
  104. var t = $(this);
  105. if(sourceType=='cost_request') {
  106. selectCostRequest(params,function(selectRows){
  107. var one = selectRows[0];
  108. var summary = one.summary;
  109. var requestId = one.id;
  110. var expectMoney = one.expectMoney;
  111. if(_selectRequest[requestId]){
  112. tip('申请单已选');
  113. return ;
  114. }
  115. var index = getIndex(t.attr('name'));
  116. $('#requestId'+index).val(requestId);
  117. $('#requestSummary'+index).val(summary);
  118. $('#expectMoney'+index).val(expectMoney);
  119. $('#payMoney'+index).val(expectMoney);
  120. // costType
  121. /* $.get('tBCostTypeController/'+one.costType+".do",{},function(data){
  122. $('#financeSubject'+index).val(data.financeSubject);
  123. $('#financeSubjectSelect'+index).val(data.financeSubject);
  124. },'json');*/
  125. $('#financeSubject'+index).val(one.costType);
  126. $('#financeSubjectSelect'+index).val(one.costType);
  127. $('#showMeasureName'+index).val(one.measureName);
  128. $('#sourceType' + index).val(one.sourceType);
  129. $('#showDep'+ index).val(one.depName);
  130. changeTotalExpectMoney();
  131. changeTotalPayMoney();
  132. _selectRequest[requestId]=1;
  133. });
  134. }else {
  135. var index = getIndex(t.attr('name'));
  136. var ids = [];
  137. var excludeIds =[];
  138. $('input[name$="requestId"]').each(function(){
  139. var rindex = getIndex($(this).attr('name'));
  140. var requestIds = $(this).val();
  141. if(rindex==index) {
  142. ids.push(requestIds);
  143. }else {
  144. excludeIds.push(requestIds);
  145. }
  146. });
  147. selectUserProducts(ids.join(','),excludeIds.join(','),function(selectRows){
  148. _selectRequest[$('#requestId' + index).val()] = 0;
  149. var sourceIdArray = new Array();
  150. var expectMoney = 0;
  151. var departNameObj ={};
  152. for(var i=0;i<selectRows.length;i++) {
  153. var one = selectRows[i];
  154. var requestId = one.id;
  155. expectMoney += parseFloat(one.money);
  156. departNameObj[one.departName]='1';
  157. _selectRequest[requestId] = 1;
  158. sourceIdArray.push(requestId);
  159. }
  160. var departNameArray = [];
  161. var oriDepartName=$('#depName').val();
  162. for(var k in departNameObj){
  163. departNameArray.push(k);
  164. }
  165. expectMoney =expectMoney.toFixed(2);
  166. $('#requestId' + index).val(sourceIdArray.join(','));
  167. $('#requestSummary' + index).val('采购单报销');
  168. $('#expectMoney' + index).val(expectMoney);
  169. $('#payMoney' + index).val(expectMoney);
  170. $('#sourceType' + index).val('pOrder');
  171. $('#showDep'+index).val(departNameArray.join(','));
  172. changeTotalExpectMoney();
  173. changeTotalPayMoney();
  174. },'100%','100%');
  175. }
  176. }
  177. function changeTotalExpectMoney(){
  178. var totalMoney = 0;
  179. $('input[name$="expectMoney"]').each(function(){
  180. var money = $(this).val();
  181. if(money) {
  182. totalMoney += parseFloat(money);
  183. }
  184. });
  185. totalMoney=totalMoney.toFixed(2);
  186. $('#totalExpectMoney').val(totalMoney);
  187. $('#totalExpectMoneyText').html(totalMoney);
  188. }
  189. function changeTotalPayMoney(){
  190. var totalMoney = 0;
  191. $('input[name$="payMoney"]').each(function(){
  192. var money = $(this).val();
  193. if(money) {
  194. totalMoney += parseFloat(money);
  195. }
  196. });
  197. totalMoney=totalMoney.toFixed(2);
  198. $('#totalPayMoney').val(totalMoney);
  199. $('#totalPayMoneyText').html(totalMoney);
  200. }
  201. function changeTotalBillCount() {
  202. var billCount = 0;
  203. $('input[name$="billCount"]').each(function(){
  204. var count = $(this).val();
  205. if(count) {
  206. billCount += parseInt(count);
  207. }
  208. });
  209. $('#totalBillCount').val(billCount);
  210. $('#totalBillCountText').html(billCount);
  211. }
  212. function changeTotalAmount() {
  213. var totalMoney = 0;
  214. $('input[name$="amount"]').each(function(){
  215. var money = $(this).val();
  216. if(money) {
  217. totalMoney += parseFloat(money);
  218. }
  219. });
  220. totalMoney=totalMoney.toFixed(2);
  221. $('#totalAmount').val(totalMoney);
  222. $('#totalAmountText').html(totalMoney);
  223. }
  224. function changeTotalTax() {
  225. var totalMoney = 0;
  226. $('input[name$="tax"]').each(function(){
  227. var money = $(this).val();
  228. if(money) {
  229. totalMoney += parseFloat(money);
  230. }
  231. });
  232. totalMoney=totalMoney.toFixed(2);
  233. $('#totalTax').val(totalMoney);
  234. $('#totalTaxText').html(totalMoney);
  235. }
  236. function getIndex(name){
  237. var indexStart = name.indexOf('[');
  238. var indexEnd=name.indexOf(']');
  239. var index = name.substr(indexStart+1,(indexEnd-indexStart-1));
  240. return index;
  241. }
  242. $(function () {
  243. if($.Datatype) {
  244. $.Datatype.checkMoney = function (val, obj, frm) {
  245. var t =$(obj);
  246. var index =getIndex(t.attr('name'));
  247. var select = $('#invoicetype'+index);
  248. var invoicetype = select.val();
  249. var money = parseFloat(t.val()).toFixed(2);
  250. if(invoicetype=='special') {//专票验证金额+税额
  251. var amount=$('#amount'+index).val();
  252. var tax = $('#tax'+index).val()
  253. if(money!=parseFloat(parseFloat(amount)+parseFloat(tax)).toFixed(2)){
  254. return "价税合计与金额+税额不符";
  255. }
  256. }
  257. var expectMoney = $('#expectMoney'+index).val();
  258. if(expectMoney && money>parseFloat(expectMoney)) {
  259. return "当前报销额度超过费用申请额度,请重新提交费用申请";
  260. }
  261. return true;
  262. }
  263. }
  264. $('input[name$="showDep"]').live('mouseover',function(){
  265. var t = $(this);
  266. t.attr('title',t.val());
  267. })
  268. })
  269. function beforeSubmit() {
  270. var tableBody =$("#add_tBActivitiCostPayInnerUserDetail_table");
  271. if(tableBody.find('tr').length==0){
  272. tip('请至少添加一条报销详情记录');
  273. return false;
  274. }
  275. return true;
  276. }
  277. </script>
  278. </head>
  279. <body style="overflow-x: hidden;">
  280. <%--处理回调--%>
  281. <c:set var="_callback">
  282. <c:choose>
  283. <c:when test="${in_process}">@Overridecallback</c:when>
  284. <c:otherwise>callback</c:otherwise>
  285. </c:choose>
  286. </c:set>
  287. <t:formvalid formid="formobj" dialog="true" usePlugin="password" layout="table" tiptype="1" action="tBActivitiCostPayInnerUserController.do?doAdd"
  288. callback="${_callback}" beforeSubmit="beforeSubmit">
  289. <input id="id" name="id" type="hidden" value="${entity.id }"/>
  290. <input id="sourceType" name="sourceType" type="hidden" value="${sourceType}"/>
  291. <input id="finCode" name="finCode" type="hidden" value="${empty entity.finCode?param.finCode:entity.finCode}" />
  292. <t:tabs id="tt" iframe="false" tabPosition="top" fit="false">
  293. <t:tab href="tBActivitiCostPayInnerUserController.do?tBActivitiCostPayInnerUserDetailList&id=${entity.id}&in_process=${in_process}&flag=${param.flag}&sourceType=${sourceType}" icon="icon-search" title="详情" id="tBActivitiCostPayInnerUserDetail"></t:tab>
  294. </t:tabs>
  295. <table cellpadding="0" cellspacing="1" class="formtable">
  296. <tr>
  297. <td align="right">
  298. <label class="Validform_label">预计金额总计:</label>
  299. </td>
  300. <td class="value">
  301. <input id="totalExpectMoney" name="totalExpectMoney" type="hidden" style="width: 150px" class="inputxt" value="${entity.totalExpectMoney}" />
  302. <span id="totalExpectMoneyText"></span>
  303. </td>
  304. <td align="right">
  305. <label class="Validform_label">金额总计:</label>
  306. </td>
  307. <td class="value">
  308. <input id="totalAmount" name="totalAmount" type="hidden" style="width: 150px" class="inputxt" value="${entity.totalAmount}" />
  309. <span id="totalAmountText"></span>
  310. </td>
  311. <td align="right">
  312. <label class="Validform_label">税额总计:</label>
  313. </td>
  314. <td class="value">
  315. <input id="totalTax" name="totalTax" type="hidden" style="width: 150px" class="inputxt" value="${entity.totalTax}" />
  316. <span id="totalTaxText"></span>
  317. </td>
  318. <td align="right">
  319. <label class="Validform_label">价税合计总计:</label>
  320. </td>
  321. <td class="value">
  322. <input id="totalPayMoney" name="totalPayMoney" type="hidden" style="width: 150px" class="inputxt" value="${entity.totalPayMoney}" />
  323. <span id="totalPayMoneyText"></span>
  324. </td>
  325. <td align="right">
  326. <label class="Validform_label">发票张数总计:</label>
  327. </td>
  328. <td class="value">
  329. <input id="totalBillCount" name="totalBillCount" type="hidden" style="width: 150px" class="inputxt" value="${entity.totalBillCount}" />
  330. <span id="totalBillCountText"></span>
  331. </td>
  332. </tr>
  333. <tr>
  334. <c:if test="${in_process && param.flag!=1}">
  335. <td align="right">
  336. <label class="Validform_label">
  337. 申请人:
  338. </label>
  339. </td>
  340. <td class="value">
  341. ${entity.realName}
  342. </td>
  343. </c:if>
  344. <td align="right">
  345. <label class="Validform_label">所属部门:</label>
  346. </td>
  347. <td class="value">
  348. <input type="hidden" name="departId" id="departId" value="${empty entity.departId?param.departId:entity.departId}"/>
  349. <input type="hidden" name="depName" id="depName" value="${empty entity.depName?param.depName:entity.depName}"/>
  350. ${empty entity.depName?param.depName:entity.depName}
  351. <%--<c:if test="${(empty param.load && !in_process)|| (in_process&& param.flag==1)}">
  352. <a href="javascript:void(0)" class="easyui-linkbutton" plain="true" icon="icon-select" id="dutiesSearch" onclick="openDep()">选择</a>
  353. </c:if>--%>
  354. <span class="Validform_checktip"></span>
  355. <label class="Validform_label" style="display: none;">所属部门</label>
  356. </td>
  357. <td align="right">
  358. <label class="Validform_label">收款人:</label>
  359. </td>
  360. <td class="value">
  361. <input id="receiveUserId" name="receiveUserId" type="hidden" style="width: 150px" class="inputxt" value="${entity.receiveUserId}" />
  362. <input id="receiveUserName" name="receiveUserName" type="text" style="width: 150px" class="inputxt" readonly="readonly" value="${entity.receiveUserName}" datatype="*" nullmsg="请选择收款人"/>
  363. <c:if test="${(empty param.load && !in_process)|| (in_process&& param.flag==1)}">
  364. <a href="javascript:void(0)" class="easyui-linkbutton" plain="true" icon="icon-select" id="dutiesSearch" onclick="openUser()">选择</a>
  365. </c:if>
  366. </td>
  367. <td align="right">
  368. <label class="Validform_label">付款方式:</label>
  369. </td>
  370. <td class="value">
  371. <t:dictSelect field="paytype" id="paytype" type="list" typeGroupCode="paytype" datatype="*" defaultVal="${entity.paytype}"
  372. hasLabel="false" title="付款方式"></t:dictSelect>
  373. <span class="Validform_checktip"></span>
  374. <label class="Validform_label" style="display: none;">付款方式</label>
  375. </td>
  376. </tr>
  377. </table>
  378. <table style="width: 100%">
  379. <tr>
  380. <td style="text-align:center;">
  381. <%@include file="/webpage/cn/com/lzt/useractiviti/view_submit_buttons.jsp"%>
  382. </td>
  383. </tr>
  384. </table>
  385. </t:formvalid>
  386. <!-- 添加 附表明细 模版 -->
  387. <table style="display:none">
  388. <tbody id="add_tBActivitiCostPayInnerUserDetail_table_template">
  389. <tr>
  390. <td align="center"><div style="width: 25px;" name="xh"></div></td>
  391. <td align="center"><input style="width:20px;" type="checkbox" name="ck"/></td>
  392. <td align="left">
  393. <input name="tBActivitiCostPayInnerUserDetailList[#index#].sourceType" id="sourceType#index#" type="hidden"/>
  394. <input name="tBActivitiCostPayInnerUserDetailList[#index#].requestId" id="requestId#index#" maxlength="32" type="hidden" class="inputxt" style="width:120px;" datatype="*" nullmsg="请选择申请单"/>
  395. <input name="tBActivitiCostPayInnerUserDetailList[#index#].requestSummary" id="requestSummary#index#" maxlength="255" type="text" class="inputxt" style="width:300px;" readonly="readonly"/>
  396. <label class="Validform_label" style="display: none;">费用申请摘要</label>
  397. </td>
  398. <td align="left">
  399. <input name="tBActivitiCostPayInnerUserDetailList[#index#].showDep" id="showDep#index#" maxlength="32" type="text" readonly="readonly" class="inputxt" style="width:200px;" />
  400. <label class="Validform_label" style="display: none;">支出所属部门</label>
  401. </td>
  402. <td align="left">
  403. <input name="tBActivitiCostPayInnerUserDetailList[#index#].expectMoney" id="expectMoney#index#" maxlength="32" type="text" readonly="readonly" class="inputxt" style="width:120px;" />
  404. <label class="Validform_label" style="display: none;">预计金额</label>
  405. </td>
  406. <td align="left">
  407. <t:dictSelect field="tBActivitiCostPayInnerUserDetailList[#index#].invoicetype" id="invoicetype#index#" type="list" typeGroupCode="invoicetype" datatype="*"
  408. hasLabel="false" title="发票类型"></t:dictSelect>
  409. <label class="Validform_label" style="display: none;">发票类型</label>
  410. </td>
  411. <%--<td align="left">
  412. <t:dictSelect field="tBActivitiCostPayInnerUserDetailList[#index#].paytype" id="paytype#index#" type="list" typeGroupCode="paytype" datatype="*"
  413. hasLabel="false" title="付款方式"></t:dictSelect>
  414. <label class="Validform_label" style="display: none;">付款方式</label>
  415. </td>--%>
  416. <%--、、收款人--%>
  417. <td align="left">
  418. <input name="tBActivitiCostPayInnerUserDetailList[#index#].amount" id="amount#index#" maxlength="32" type="text" class="inputxt" style="width:120px;" datatype="d,fix2" />
  419. <label class="Validform_label" style="display: none;">金额</label>
  420. </td>
  421. <td align="left">
  422. <input name="tBActivitiCostPayInnerUserDetailList[#index#].tax" id="tax#index#" maxlength="32" type="text" class="inputxt" style="width:120px;" datatype="d,fix2" />
  423. <label class="Validform_label" style="display: none;">税额</label>
  424. </td>
  425. <td align="left">
  426. <input name="tBActivitiCostPayInnerUserDetailList[#index#].payMoney" id="payMoney#index#" maxlength="32" type="text" class="inputxt" style="width:120px;" datatype="d,fix2,checkMoney" />
  427. <label class="Validform_label" style="display: none;">价税合计</label>
  428. </td>
  429. <c:if test="${sourceType!='pOrder'}">
  430. <td align="left">
  431. <input type="hidden" name="tBActivitiCostPayInnerUserDetailList[#index#].financeSubject" id="financeSubject#index#"/>
  432. <input name="tBActivitiCostPayInnerUserDetailList[#index#].showMeasureName" id="showMeasureName#index#" maxlength="32" type="text" class="inputxt" style="width:120px;" readonly="readonly"/>
  433. <t:dictSelect field="tBActivitiCostPayInnerUserDetailList[#index#].financeSubjectSelect" id="financeSubjectSelect#index#" type="list"
  434. dictTable="t_b_cost_type" dictField="id" dictText="name" hasLabel="false" title="财务科目" readonly="readonly" extendJson="{style:'display:none'}"></t:dictSelect>
  435. <label class="Validform_label" style="display: none;">费用类型</label>
  436. </td>
  437. </c:if>
  438. <td align="left">
  439. <input name="tBActivitiCostPayInnerUserDetailList[#index#].billCount" id="billCount#index#" maxlength="32" type="text" class="inputxt" style="width:120px;" datatype="n" />
  440. <label class="Validform_label" style="display: none;">发票张数</label>
  441. </td>
  442. <td align="left">
  443. <input name="tBActivitiCostPayInnerUserDetailList[#index#].remark" id="remark#index#" maxlength="32" type="text" class="inputxt" style="width:360px;"/>
  444. <label class="Validform_label" style="display: none;">备注</label>
  445. </td>
  446. </tr>
  447. </tbody>
  448. </table>
  449. </body>
  450. <script src = "webpage/cn/com/lzt/cost/activiti/payinneruser/tBActivitiCostPayInnerUser.js"></script>