budgetInst-buttons.jsp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <c:set var="view">${view==true}</c:set>
  3. <c:set var="readOnly">${readOnly==true}</c:set>
  4. <c:set var="inProcess">${inProcess==true}</c:set>
  5. <c:set var="showButton">${readOnly?false:edit==true}</c:set>
  6. <c:set var="verifyTxt">
  7. <c:if test="${inst.status==1}">审核</c:if>
  8. <c:if test="${inst.status==2}">会审</c:if>
  9. <c:if test="${inst.status==3}">终审</c:if>
  10. </c:set><%--审核意见名称--%>
  11. <div style="display:flex;">
  12. <div style="flex:1">
  13. <table cellpadding="0" cellspacing="1" class="formtable" > <!-- bottom -->
  14. <tr >
  15. <td class="value">
  16. <span class="spancon">预算年度:</span>
  17. <input type="text" style="width: 150px" class="Wdate" disabled="disabled" value="${inst.periodYear}" disabled="disabled"/>
  18. </td>
  19. <td width="5px">&nbsp;</td>
  20. <td align="right" style="text-align: left;">
  21. <label class="Validform_label">预算主体:</label>
  22. <input type="text" style="width: 200px" class="inputxt" disabled="disabled" value="${inst.entityName}"/>
  23. <c:if test="${showButton}">
  24. <a href="#" class="easyui-linkbutton l-btn" onclick="changeEntity('${inst.tempSheetId}',${inst.status})">切换主体</a>
  25. </c:if>
  26. <%--<c:if test="${!showButton}">
  27. <a href="javascript:void(0)" class="easyui-linkbutton l-btn" iconcls="icon-return" onclick="back()">返回</a>
  28. </c:if>--%>
  29. </td>
  30. </tr>
  31. </table>
  32. <table cellpadding="0" cellspacing="1" class="formtable" >
  33. <tr>
  34. <td colspan="3">
  35. <c:if test="${showButton}">
  36. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-save" onclick="save()">暂存</a>
  37. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-save" onclick="saveVersion()">保存版本</a>
  38. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-putout" onclick="revertVersion()">导入历史版本</a>
  39. <c:if test="${inst.type=='normal'}">
  40. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-calculation" onclick="calcFunction()">公式计算</a>
  41. </c:if>
  42. <c:if test="${!inProcess}">
  43. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-confirm" onclick="doSubmit()">上报</a>
  44. </c:if>
  45. <c:if test="${inst.type=='orders'}">
  46. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-add" onclick="addOne()">添加货品</a>
  47. <a href="#" id="addRefYearButton" style="display:none" class="easyui-linkbutton l-btn" iconcls="icon-add" onclick="addRefYearGoods()">载入参考年度货品</a>
  48. <%--<a href="#" class="easyui-linkbutton l-btn" iconcls="icon-confirm" onclick="submitOrdersToCost()">提交至成本总表</a>--%>
  49. </c:if>
  50. <c:if test="${inst.type=='hr'}">
  51. <%--<a href="#" class="easyui-linkbutton l-btn" iconcls="icon-confirm" onclick="submitHrToCost()">提交至成本总表</a>--%>
  52. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-select" onclick="selectCostHrScheme()">选择预制方案</a>
  53. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-reload" onclick="refushNum()">刷新</a>
  54. </c:if>
  55. <a href="#" class="easyui-linkbutton l-btn" onclick="mark()" >
  56. <i class="fa fa-pencil" style="padding-right:5px"></i>
  57. <span id="markLinkTxt">${inst.bpmStatus=='1'?'标记':'取消标记'}</span>
  58. </a>
  59. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-return" onclick="back()">返回</a>
  60. <span id="autoSaveTimeTxt" style="margin-left:5px;"></span>
  61. <%--<a href="javascript:void(0)" class="easyui-linkbutton l-btn" iconcls="icon-return" onclick="back()">返回</a>--%>
  62. </c:if>
  63. <c:if test="${inst.actualStaKind=='leader'}"><%--闵总视图--%>
  64. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-select" onclick="selectShowColumn()">显示配置</a>
  65. <script>
  66. var lastShowColumnValues = ['a1','-1','-1','-1','-1','-1', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];
  67. var values = values == null ? lastShowColumnValues : values;
  68. //闵总视图样表
  69. function selectShowColumn() {
  70. _openDialog('budgetCostBreakdownController.do?selectAuth2&values=' + values.join(','), '显示配置', function (iframe) {
  71. values = iframe.getSelected();
  72. resetColumn();
  73. }, '500px', '300px');
  74. }
  75. function resetColumn(){
  76. var sheet = spread.getActiveSheet();
  77. sheet.suspendPaint();
  78. sheet.getRange(-1, 5, -1, 12 * 12).visible(true);
  79. for (var i = 6; i < lastShowColumnValues.length; i++) {
  80. if (values[i] == '-1') {
  81. sheet.getRange(-1, ((i - 6) * 12 + 1 + 4), -1, 12).visible(false);
  82. }
  83. }
  84. for (let i = 0; i < 6; i++) {
  85. if (values[i] == '-1') {
  86. for (var j = 0; j < 12; j++) {
  87. sheet.getRange(-1, j * 12 + i * 2 + 1 + 4, -1, 2).visible(false);
  88. }
  89. }
  90. }
  91. sheet.resumePaint();
  92. }
  93. </script>
  94. </c:if>
  95. </td>
  96. </tr>
  97. </table>
  98. </div>
  99. <c:if test="${inProcess}">
  100. <div style="flex:1;" >
  101. <table cellpadding="0" cellspacing="1" class="formtable" >
  102. <tr>
  103. <td>
  104. ${verifyTxt}意见:
  105. </td>
  106. <td>
  107. <textarea id="descn" name="descn" class="inputxt" rows="2" cols="40"></textarea>
  108. </td>
  109. <td>
  110. <a href="#" class="easyui-linkbutton l-btn" onclick="agree('${param.taskId}')">
  111. <c:if test="${inst.status==1}">核验完成</c:if>
  112. <c:if test="${inst.status!=1}">通过</c:if>
  113. </a>
  114. <a href="#" class="easyui-linkbutton l-btn" onclick="refuse('${param.taskId}')">退回</a>
  115. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-detail" onclick="historyTask('${param.taskId}')">流程历史</a>
  116. </td>
  117. </tr>
  118. </table>
  119. </div>
  120. </c:if>
  121. </div>
  122. <div style="height:5px">&nbsp;</div>
  123. <script>
  124. var instId='${inst.id}';
  125. var dbJson;
  126. <c:if test="${not empty inst.json}">
  127. dbJson=${inst.json};//初始化用
  128. </c:if>
  129. var status='${inst.status}';
  130. var readOnly = ${readOnly};
  131. var inProcess=${inProcess};
  132. var taskId='${param.taskId}';
  133. var periodYear='${inst.periodYear}';
  134. var entityId='${inst.entityId}';
  135. var bpmStatus='${inst.bpmStatus}';
  136. var actualStaKind = '${inst.actualStaKind}';
  137. var isTotal = '${isTotal}'
  138. var spread;
  139. function doSubmit(){
  140. save(true);
  141. var url = 'budgetInstController.do?doSubmit&id='+instId;
  142. var message = '确定上报吗?';
  143. confirm(url,message,{status:1},"上报成功");
  144. }
  145. function refuse(){
  146. finishTask(-1);
  147. }
  148. function agree() {
  149. finishTask(1);
  150. }
  151. function finishTask(status){
  152. var url = 'budgetInstController.do?finishTask';
  153. var tipMsg = status==1?'${verifyTxt}通过':'${verifyTxt}驳回';
  154. var message = '确定'+tipMsg+"吗?";
  155. var descn=$('#descn').val();
  156. if(!descn){
  157. $.messager.alert("信息","请填写${verifyTxt}意见");
  158. return;
  159. }
  160. var params={};
  161. params.descn=descn;
  162. params.status=status;
  163. params.instId=instId;
  164. params.taskId=taskId;
  165. var json = spread.toJSON();
  166. var jsonString =JSON.stringify(json);
  167. params.json = jsonString;
  168. params.id = instId;
  169. confirm(url,message,params,tipMsg);
  170. }
  171. function confirm(url,message,params,successMsg) {
  172. $.messager.confirm('提示信息', message, function(r) {
  173. if (r) {
  174. $.ajax({
  175. async : false,
  176. cache : false,
  177. data:params,
  178. type : 'POST',
  179. url : url,// 请求的action路径
  180. error : function() {// 请求失败处理函数
  181. },
  182. success : function(data) {
  183. var d = data; // ------ $.parseJSON(data);
  184. if (d.success) {
  185. var msg = successMsg;
  186. if(!msg) msg= d.msg;
  187. closeDialog(msg,true);
  188. }else {
  189. parent.tip(d.msg);
  190. }
  191. }
  192. });
  193. }
  194. });
  195. }
  196. function changeEntity(tempSheetId,status) {
  197. save(true);
  198. var url="budgetInstController.do?select4changeEntity&tempSheetId="+tempSheetId;
  199. url+='&status='+status;
  200. _openDialog(url,"选择主体",function(iframe){
  201. var selectedRows = iframe.getSelectedRow();
  202. if(selectedRows.length==0){
  203. iframe.tip('请选择预算主体');
  204. return false;
  205. }
  206. var one = selectedRows[0];
  207. var functionName='goFill&id='+one.id;
  208. if(status!=0 &&status!=-1){
  209. functionName='goTask&taskId='+one.taskId;
  210. }
  211. location='budgetInstController.do?'+functionName;
  212. },"800px","600px")
  213. }
  214. function back(){
  215. _confirm('是否保存数据?',function(){
  216. save(false,function(){
  217. closeDialog();
  218. });
  219. },function(){
  220. closeDialog();
  221. });
  222. }
  223. function saveVersion(){
  224. save(true);
  225. var url = 'budgetInstVersionController.do?goAdd&instId='+instId;
  226. createwindow('保存版本', url,'600px','200px');
  227. }
  228. function revertVersion() {
  229. var url = 'budgetInstVersionController.do?select&instId='+instId;
  230. _openDialog(url,'选择历史版本',function(iframe){
  231. var selectedRows = iframe.getSelectedRow();
  232. if(selectedRows.length==0){
  233. iframe.tip('请选择版本');
  234. return false;
  235. }
  236. $.messager.confirm("请确认","导入后将清空现有数据,请谨慎导入",function(r){
  237. if(r){
  238. var one = selectedRows[0];
  239. $.post('budgetInstVersionController.do?revert',{id:one.id},function(d){
  240. spread.suspendPaint();
  241. var instType=d.attributes.instType;
  242. var json =d.obj;
  243. if(instType=='orders' ||instType=='hr' ){
  244. spread.fromJSON(JSON.parse(json));
  245. }else{
  246. var sheet = spread.getActiveSheet();
  247. for(var i=0;i<json.length;i++){
  248. var one =json[i];
  249. sheet.setValue(one.row,one.col,one.oldVal);
  250. }
  251. }
  252. spread.resumePaint();
  253. },'json');
  254. }
  255. });
  256. },'800px','600px');
  257. }
  258. function save(auto,afterSaveFunction){
  259. var json = spread.toJSON();
  260. var jsonString =JSON.stringify(json);
  261. var params = {};
  262. params.json = jsonString;
  263. params.id = instId;
  264. params.type='${inst.type}';
  265. $.post('budgetInstController.do?doFill',params,function(d){
  266. if(!auto){
  267. if(afterSaveFunction){
  268. afterSaveFunction();
  269. }else{
  270. $.messager.alert("信息",d.msg);
  271. }
  272. }else{//自动存档刷新显示
  273. statusBar.remove('autoSaveTip');
  274. var txt ='最新自动保存时间: '+new Date().Format('hh:mm:ss');
  275. reloadStatusBarTips({autoSaveTip:txt});
  276. }
  277. },'json');
  278. }
  279. function calcFunction(){
  280. var url = 'budgetInstController.do?calcFunction&id='+instId;
  281. var sheet = spread.getActiveSheet();
  282. _post(url,{},function(d){
  283. spread.suspendPaint();
  284. spread.suspendCalcService(true);
  285. var valueList = d.obj;
  286. for(var i=0;i<valueList.length;i++){
  287. var valueInfo=valueList[i];
  288. sheet.setValue(valueInfo[0],valueInfo[1],valueInfo[2]);
  289. }
  290. if(d.attributes){
  291. if(d.attributes.errorMsg){
  292. tip(d.attributes.errorMsg);
  293. }
  294. }
  295. spread.resumeCalcService(true);
  296. spread.resumePaint();
  297. });
  298. }
  299. function closeDialog(msg,reload){
  300. var win = frameElement.api.opener;
  301. frameElement.api.close();
  302. if(msg) {
  303. win.tip(msg);
  304. }
  305. if(reload){
  306. win.reloadTable();
  307. }
  308. }
  309. function historyTask(taskId){
  310. var url='budgetInstController.do?goProcTaskHistoryList&taskId='+taskId;
  311. createdetailwindow('流程历史',url,'800px','600px');
  312. }
  313. $(function(){
  314. if(status=='0'|| status=='-1'){ //填报状态下 自动保存
  315. setInterval(function(){
  316. save(true);
  317. },60*1000);
  318. }
  319. })
  320. function selectCostHrScheme(){
  321. var url = 'budgetCostHrSchemeController.do?select';
  322. _openDialog(url,'人工费用预算方案',function(iframe){
  323. var selectedRows = iframe.getSelectRows();
  324. var one = selectedRows[0];
  325. $.post('budgetCostHrSchemeController.do?getDetailData',{id:one.id},function(d){
  326. spread.suspendPaint();
  327. var arr = [];
  328. for(var i=0;i<d.obj.length;i++){
  329. var one =d.obj[i];
  330. var postId = one.postId;
  331. arr[postId]=one;
  332. }
  333. var sheet= spread.getActiveSheet();
  334. var rowCount =sheet.getRowCount();
  335. for(var i=headerCount;i<rowCount;i++){
  336. var rowTag=sheet.getTag(i,-1);
  337. if(rowTag){
  338. var rowId = rowTag.id;
  339. var info = arr[rowId];
  340. if(info){
  341. var mothly = info.mothly;//月度工资;
  342. var socialBase = info.socialBase;//社保缴纳基数
  343. var socialPer = info.socialPer;//社保缴纳比例
  344. var providentFundBase = info.providentFundBase;//公积金缴纳基数
  345. var providentFundPer = info.providentFundPer;//公积金缴纳比例
  346. var mealOvertime = info.mealOvertime;//工作餐补及中夜班津贴
  347. var jiaojinPer = info.jiaojinPer;
  348. if(!jiaojinPer) jiaojinPer=0;
  349. var cert=info.cert;
  350. if(!cert) cert=0;
  351. sheet.setValue(i,4,jiaojinPer/100);
  352. sheet.setValue(i,5,mothly);
  353. sheet.setValue(i,6,cert);
  354. sheet.setValue(i,7,socialBase);
  355. sheet.setValue(i,8,socialPer/100);
  356. sheet.setValue(i,9,providentFundBase);
  357. sheet.setValue(i,10,providentFundPer/100);
  358. // sheet.setValue(i,12,mealOvertime);
  359. sheet.setFormula(i,14,mealOvertime+"*12*"+getCellStr(sheet,i,3));
  360. }
  361. }
  362. }
  363. spread.resumePaint();
  364. },'json');
  365. },'800px','600px');
  366. }
  367. Date.prototype.Format = function (fmt) {
  368. if(!fmt) fmt = 'yyyy-MM-dd hh:mm:ss'
  369. var o = {
  370. "M+": this.getMonth() + 1, //月份
  371. "d+": this.getDate(), //日
  372. "h+": this.getHours(), //小时
  373. "m+": this.getMinutes(), //分
  374. "s+": this.getSeconds(), //秒
  375. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
  376. "S": this.getMilliseconds() //毫秒
  377. };
  378. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  379. for (var k in o)
  380. if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  381. return fmt;
  382. }
  383. function mark(){
  384. var newBpmStatus=bpmStatus=='1'?'2':'1';
  385. $.post('budgetInstController.do?doUpdate',{id:instId,bpmStatus:newBpmStatus},function(d){
  386. if(newBpmStatus=='1'){
  387. $('#markLinkTxt').html('标记');
  388. }else {
  389. $('#markLinkTxt').html('取消标记');
  390. }
  391. bpmStatus = newBpmStatus;
  392. });
  393. }
  394. var instMeasureArray=[];
  395. <c:forEach items="${instMeasureEntityList}" var="instMeaureEntity" varStatus="i">
  396. instMeasureArray[${i.index}]={};
  397. instMeasureArray[${i.index}].row=${instMeaureEntity.row};
  398. instMeasureArray[${i.index}].col=${instMeaureEntity.col};
  399. instMeasureArray[${i.index}].expect=${instMeaureEntity.expect};
  400. instMeasureArray[${i.index}].dataValue=${instMeaureEntity.showDataValue};
  401. </c:forEach>
  402. </script>
  403. <link rel="stylesheet" type="text/css" href="plug-in/SpreadJS/css/gc.spread.sheets.excel2016colorful.13.1.0.css">
  404. <script src="plug-in/SpreadJS/scripts/gc.spread.sheets.all.13.1.0.min.js" type="text/javascript"></script>
  405. <script src="plug-in/SpreadJS/scripts/resources/zh/gc.spread.sheets.resources.zh.13.1.0.min.js" type="text/javascript"></script>
  406. <script src="plug-in/SpreadJS/license.js" type="text/javascript"></script>
  407. <script src="webpage/cn/com/lzt/budget/data/js/budget_tools.js?v=1" type="text/javascript"></script>