budgetCostBreakdown-fill.jsp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/context/mytags.jsp"%>
  3. <!doctype html>
  4. <html>
  5. <head>
  6. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  7. <meta charset="utf-8" />
  8. <meta name="spreadjs culture" content="zh-cn" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  10. <style>
  11. html{
  12. height:100%;
  13. }
  14. body{
  15. height:97%;
  16. width:calc(100% - 10px);
  17. background:#FFFFFF
  18. }
  19. .mainDiv{
  20. height: calc(100% - 40px);
  21. display:flex;
  22. flex-direction: column;
  23. }
  24. .buttonsDiv{
  25. }
  26. .excelDiv{
  27. flex:1;
  28. }
  29. .sample-spreadsheets {
  30. width: 100%;
  31. height: 100%;
  32. overflow: hidden;
  33. }
  34. .sample-spreadsheets-statusBar {
  35. width: 100%;
  36. overflow: hidden;
  37. }
  38. </style>
  39. </head>
  40. <div class="mainDiv">
  41. <div class="buttonsDiv">
  42. <%--查询框begin --%>
  43. <div style="display:flex;">
  44. <div style="flex:1">
  45. <table cellpadding="0" cellspacing="1" class="formtable" > <!-- bottom -->
  46. <tr >
  47. <td class="value">
  48. <span class="spancon">预算年度:</span>
  49. <input type="text" style="width: 150px" class="Wdate" disabled="disabled" value="${costEntity.periodYear}" disabled="disabled"/>
  50. </td>
  51. <td width="5px">&nbsp;</td>
  52. </tr>
  53. </table>
  54. <table cellpadding="0" cellspacing="1" class="formtable" >
  55. <tr>
  56. <td colspan="3">
  57. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-add" onclick="add()">新增</a>
  58. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-save" onclick="save()">保存</a>
  59. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-select" onclick="selectShowColumn()">显示配置</a>
  60. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-putout" onclick="exportExcel()">导出</a>
  61. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-calculation" onclick="calcFunction()">公式计算</a>
  62. <a href="#" class="easyui-linkbutton l-btn" onclick="goStatis('conf','配置超额分析')"><i class="fa fa-bar-chart-o" style="padding-right:5px;"></i>配置超额分析</a>
  63. <a href="#" class="easyui-linkbutton l-btn" onclick="goStatis('usercostper','人员费用占比分析')"><i class="fa fa-bar-chart-o" style="padding-right:5px;"></i>人员费用占比分析</a>
  64. <a href="#" class="easyui-linkbutton l-btn" onclick="goStatis('expect','预期盈利分析')"><i class="fa fa-bar-chart-o" style="padding-right:5px;"></i>预期盈利分析</a>
  65. <a href="#" class="easyui-linkbutton l-btn" onclick="goStatis('usercost','人员费用超额分析')"><i class="fa fa-bar-chart-o" style="padding-right:5px;"></i>人员费用超额分析</a>
  66. <a href="#" class="easyui-linkbutton l-btn" onclick="goStatis('orderscost','物料费用超额分析')"><i class="fa fa-bar-chart-o" style="padding-right:5px;"></i>物料费用超额分析</a>
  67. <a href="#" class="easyui-linkbutton l-btn" onclick="goStatis('usernum','人员数量超额分析')"><i class="fa fa-bar-chart-o" style="padding-right:5px;"></i>人员数量超额分析</a>
  68. <%--<a href="#" class="easyui-linkbutton l-btn" iconcls="icon-put" onclick="submitHrToCost()">拉取人资数据</a>--%>
  69. <%--<a href="#" class="easyui-linkbutton l-btn" iconcls="icon-put" onclick="submitOrdersToCost()">拉取物料数据</a>--%>
  70. </td>
  71. </tr>
  72. </table>
  73. </div>
  74. </div>
  75. <%--查询框end --%>
  76. </div>
  77. <div class="excelDiv">
  78. <div id="ss" class="sample-spreadsheets" ></div>
  79. <div id="statusBar" class="sample-spreadsheets-statusBar"></div>
  80. </div>
  81. </div>
  82. <script>
  83. var editAuth='${param.editAuth}';
  84. var costEntityId='${costEntity.id}';
  85. var dbJson;
  86. var isSave=false;
  87. <c:if test="${not empty costEntity.json}">
  88. dbJson=${costEntity.json};//初始化用
  89. isSave=true;
  90. </c:if>
  91. var status='${costEntity.status}';
  92. var periodYear = '${costEntity.periodYear}';
  93. var title=periodYear+"年成本预算配置总表";
  94. var spread;
  95. var contractInfo =[];
  96. <c:forEach items="${contractInfo}" var="cinfo" varStatus="i">
  97. contractInfo[${i.index}]={};
  98. contractInfo[${i.index}].id='${cinfo.id}';
  99. contractInfo[${i.index}].entityName ='${cinfo.entityName}';
  100. contractInfo[${i.index}].contractDate ='${cinfo.contractDate}';
  101. contractInfo[${i.index}].contractTotalAmount ='${cinfo.contractTotalAmount}';
  102. </c:forEach>
  103. var costMeasure={};
  104. <c:if test="${not empty costMeasure}">
  105. costMeasure=${costMeasure}
  106. </c:if>
  107. var lastShowColumnValues=['shichang','yunying','renzi','caigou'];
  108. function selectShowColumn(){
  109. _openDialog('budgetCostBreakdownController.do?selectAuth&values='+lastShowColumnValues.join(','),'显示配置',function(iframe){
  110. var values = iframe.getSelected();
  111. lastShowColumnValues = values;
  112. var sheet=spread.getActiveSheet();
  113. var colCount = sheet.getColumnCount();
  114. sheet.suspendPaint();
  115. for(var i=3;i<colCount;i++){
  116. var bindInfo = costMeasureBindMap[i];
  117. if(bindInfo && bindInfo.editAuth){
  118. if($.inArray(bindInfo.editAuth,values)==-1){
  119. sheet.getRange(-1,i).visible(false);
  120. }else {
  121. sheet.getRange(-1,i).visible(true);
  122. }
  123. }
  124. }
  125. sheet.resumePaint();
  126. },'500px','200px');
  127. }
  128. function add() {
  129. _openDialog('budgetCostBreakdownController.do?selectEntity&costEntityId='+costEntityId,'选择预算主体',function(iframe){
  130. var selectRows = iframe.getSelectRows();
  131. for(var i=0;i<selectRows.length;i++){
  132. addRow(selectRows[i],-1);
  133. }
  134. });
  135. }
  136. function exportExcel() {
  137. var sheet=spread.getActiveSheet();
  138. sheet.getRange(0,-1).visible(true);
  139. var excelIo = new GC.Spread.Excel.IO();
  140. var json = spread.toJSON();
  141. excelIo.save(json, function (blob) {
  142. saveAs(blob, title+ '.xlsx');
  143. sheet.getRange(0,-1).visible(false);
  144. }, function (e) {
  145. console.log(e);
  146. sheet.getRange(0,-1).visible(true);
  147. });
  148. }
  149. function submitOrdersToCost(){
  150. if(!isSave) {
  151. _alert('请先保存');
  152. return;
  153. }
  154. var layerIndex = layer.msg('提取物料数据,请稍候···', {
  155. time : 3000*1000,
  156. shade: 0.1});
  157. $.post('budgetInstController.do?submitOrdersToCost',{periodYear:periodYear},function(d){
  158. var sheet=spread.getActiveSheet();
  159. layer.close(layerIndex);
  160. tip(d.msg);
  161. for(var i=0;i<d.obj.length;i++){
  162. var one =d.obj[i];
  163. sheet.setValue(one.row,one.col,one.value);
  164. }
  165. },'json');
  166. }
  167. function submitHrToCost(){
  168. if(!isSave) {
  169. _alert('请先保存');
  170. return;
  171. }
  172. var layerIndex = layer.msg('提取人资数据,请稍候···', {
  173. time : 3000*1000,
  174. shade: 0.1});
  175. $.post('budgetInstController.do?submitHrToCost',{periodYear:periodYear},function(d){
  176. var sheet=spread.getActiveSheet();
  177. layer.close(layerIndex);
  178. tip(d.msg);
  179. for(var i=0;i<d.obj.length;i++){
  180. var one =d.obj[i];
  181. sheet.setValue(one.row,one.col,one.value);
  182. }
  183. },'json');
  184. }
  185. function calcFunction(){
  186. if(!isSave) {
  187. _alert('请先保存');
  188. return;
  189. }
  190. var sheet=spread.getActiveSheet();
  191. var params={};
  192. var functionInfoParamArray=[];
  193. loopAll(sheet,function(row,col){
  194. var cellTag = sheet.getTag(row,col);
  195. if(cellTag && cellTag.functionId&&cellTag.editAuth ==editAuth){
  196. var dArray=[];
  197. var cellTag = sheet.getTag(row,col);
  198. dArray.push(row);dArray.push(col);dArray.push(cellTag.functionId);
  199. dArray.push(cellTag.measureId);dArray.push(cellTag.entityId);
  200. functionInfoParamArray.push(dArray.join('#'));
  201. }
  202. });
  203. params.info=functionInfoParamArray.join(',');
  204. if(!params.info) return;
  205. var url = 'budgetCostBreakdownController.do?calcFunction';
  206. var layerIndex = layer.msg('计算中,请稍候···', {
  207. time : 3000*1000,
  208. shade: 0.1});
  209. $.post(url,params,function(d){
  210. spread.suspendPaint();
  211. spread.suspendCalcService(true);
  212. var valueList = d.obj;
  213. for(var i=0;i<valueList.length;i++){
  214. var valueInfo=valueList[i];
  215. sheet.setValue(valueInfo[0],valueInfo[1],valueInfo[2]);
  216. }
  217. if(d.attributes){
  218. if(d.attributes.errorMsg){
  219. tip(d.attributes.errorMsg);
  220. }
  221. }
  222. spread.resumeCalcService(true);
  223. spread.resumePaint();
  224. layer.close(layerIndex);
  225. },'json')
  226. }
  227. function goStatis(page,title){
  228. var url = 'budgetCostBreakdownController.do?goStatis&page='+page;
  229. var width='100%';
  230. var height='100%';
  231. createdetailwindow(title,url,width,height);
  232. }
  233. </script>
  234. <link rel="stylesheet" type="text/css" href="plug-in/SpreadJS/css/gc.spread.sheets.excel2016colorful.13.1.0.css">
  235. <script src="plug-in/SpreadJS/scripts/gc.spread.sheets.all.13.1.0.min.js" type="text/javascript"></script>
  236. <script src="plug-in/SpreadJS/scripts/FileSaver.js" type="text/javascript"></script>
  237. <script src="plug-in/SpreadJS/scripts/resources/zh/gc.spread.sheets.resources.zh.13.1.0.min.js" type="text/javascript"></script>
  238. <script src="plug-in/SpreadJS/scripts/interop/gc.spread.excelio.13.1.0.min.js" type="text/javascript"></script>
  239. <script src="plug-in/SpreadJS/license.js" type="text/javascript"></script>
  240. <script src="webpage/cn/com/lzt/budget/data/js/budget_tools.js?v=7" type="text/javascript"></script>
  241. <script src="webpage/cn/com/lzt/budget/costbreakdown/budgetCostBreakdown-fill.js" type="text/javascript"></script>
  242. <script src="webpage/cn/com/lzt/budget/costbreakdown/cost_breakdown_header.js?v=1" type="text/javascript"></script>
  243. <script src="webpage/cn/com/lzt/budget/costbreakdown/cost_measure_bindmap.js?v=1" type="text/javascript"></script>
  244. </body>
  245. </html>