budgetspreadjsdemo.jsp 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@include file="/context/mytags.jsp"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  5. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  6. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  7. <head>
  8. <meta name="spreadjs culture" content="zh-cn" />
  9. <meta charset="utf-8" />
  10. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  11. <link rel="stylesheet" type="text/css" href="plug-in/SpreadJS/css/gc.spread.sheets.excel2016colorful.13.1.0.css">
  12. <script src="plug-in/SpreadJS/scripts/gc.spread.sheets.all.13.1.0.min.js" type="text/javascript"></script>
  13. <script src="plug-in/SpreadJS/scripts/resources/zh/gc.spread.sheets.resources.zh.13.1.0.min.js" type="text/javascript"></script>
  14. <script src = "webpage/cn/com/lzt/budget/demo/dataDetail.js" type="text/javascript"></script>
  15. <script type="text/javascript" src="plug-in/tools/money.js"></script>
  16. <script src="plug-in/SpreadJS/license.js" type="text/javascript"></script>
  17. <style>
  18. .sample-tutorial {
  19. position: relative;
  20. height: 100%;
  21. overflow: hidden;
  22. }
  23. .sample-spreadsheets {
  24. width: calc(100%);
  25. height: 100%;
  26. overflow: hidden;
  27. float: left;
  28. }
  29. .options-container {
  30. float: right;
  31. width: 40%;
  32. /* padding: 12px; */
  33. padding-left: 12px;
  34. padding-right: 12px;
  35. height: 100%;
  36. box-sizing: border-box;
  37. background: #fbfbfb;
  38. overflow: auto;
  39. }
  40. .option-row {
  41. font-size: 14px;
  42. margin-top: 10px;
  43. }
  44. label {
  45. margin-bottom: 6px;
  46. }
  47. input {
  48. padding: 4px 6px;
  49. }
  50. input[type=button] {
  51. margin-top: 6px;
  52. }
  53. .buttonStyle{
  54. width:240px;
  55. height:30px;
  56. }
  57. .colorPickerContent{
  58. width: 100%;
  59. background-color:white;
  60. }
  61. .colorDom{
  62. width: 14px;
  63. height: 14px;
  64. margin:0 0 0 6px;
  65. display: inline-block;
  66. border: solid 1px #333333;
  67. vertical-align: top;
  68. }
  69. body {
  70. position: absolute;
  71. top: 0;
  72. bottom: 0;
  73. left: 0;
  74. right: 0;
  75. }
  76. </style>
  77. </head>
  78. <body style="background:#FFFFFF">
  79. <!-- <form id="form1" runat="server"> -->
  80. <div>
  81. <div id="div2">
  82. <%--查询框begin --%>
  83. <table cellpadding="0" cellspacing="1" class="formtable" style="position:fixed;top:5px;"> <!-- bottom -->
  84. <tr >
  85. <td align="right" width="600px" style="text-align: left;">
  86. <label class="Validform_label">预算主体: </label>
  87. <!-- </td>
  88. <td class="value" nowrap> -->
  89. <input id="warehouseId" name="warehouseId" type="hidden" >
  90. <input name="warehouseName" type="text" class="inputxt" style="width: 150px" id="warehouseName" readonly="readonly" />
  91. <span class="Validform_checktip"></span>
  92. <label class="Validform_label" style="display: none;">领料点</label>
  93. <t:choose hiddenName="warehouseId" hiddenid="id" url="pOrdersController.do?selectReferWareHouse&classname=cn.com.lzt.warehouse.entity.WarehouseEntity&codefield=warehouseCode&namefield=warehouseName" name="list"
  94. left="40%" width="450px" height="700px" icon="icon-search" title="领料点" textname="warehouseName" isclear="true" isInit="true" ></t:choose>
  95. </td>
  96. </tr>
  97. <tr>
  98. <td class="value">
  99. <span class="spancon" title="attType">预算年度:</span>
  100. </span>
  101. <input type="text" id="attYear" name="attYear" style="width: 94px;" class="Wdate" onclick="WdatePicker({readOnly:true,enableKeyboard:false,enableInputMask:false,lang:'zh-cn',dateFmt:'yyyy'})">
  102. <span style="display:-moz-inline-box;display:inline-block;width: 20px;text-align:center;">年</span>
  103. <input type="text" id="attMonth" name="period" style="width: 94px;" class="Wdate" onclick="WdatePicker({readOnly:true,enableKeyboard:false,enableInputMask:false,lang:'zh-cn',dateFmt:'MM'})">
  104. <span style="display:-moz-inline-box;display:inline-block;width: 20px;text-align:center;">月</span>
  105. </td>
  106. <span style="float: left;padding-left: 750px;padding-top: 34px;" >
  107. <td height="50px" align="right" colspan="8" valign="top">
  108. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-search" onclick="btn_query()">保存</a>
  109. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-putout" onclick="btn_output()">同步管理方案</a>
  110. </td>
  111. </span>
  112. </tr>
  113. </table>
  114. <%--查询框end --%>
  115. </div>
  116. <br/><br/><br/>
  117. <div class="sample-tutorial" style="top: 20px;width:calc(100vw-200px); height:600px;">
  118. <div id="ss" class="sample-spreadsheets" ></div>
  119. <!-- <div id="detail" class="options-container"> -->
  120. <!-- <div class="option-row">
  121. 操作<br/>
  122. <div class="option-row">
  123. <input id="addBackgroundColorMenuSelection" type="checkbox" />
  124. <label for="addBackgroundColorMenuSelection">Add background color menu selection</label>
  125. </div>
  126. </div> -->
  127. </div>
  128. </div>
  129. <script>
  130. var spreadNS = GC.Spread.Sheets;
  131. var spread;
  132. window.onload = function () {
  133. spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 1 });
  134. initSpread(spread);
  135. initMenu(spread);
  136. };
  137. function initSpread(spread) {
  138. var sheet = spread.getSheet(0);
  139. // 自定义命令替换右键菜单命令
  140. spread.commandManager().register("customInsertRows",
  141. {
  142. canUndo: true,
  143. execute: function (context, options, isUndo) {
  144. var Commands = GC.Spread.Sheets.Commands;
  145. // 在此加cmd
  146. options.cmd = "customInsertRows";
  147. if (isUndo) {
  148. Commands.undoTransaction(context, options);
  149. return true;
  150. } else {
  151. Commands.startTransaction(context, options);
  152. spread.commandManager().execute({
  153. cmd: "gc.spread.contextMenu.insertRows",
  154. sheetName: sheet.name(),
  155. activeRow: options.activeRow,
  156. activeCol: options.activeCol,
  157. selections: options.selections
  158. });
  159. // 在此定义用户自己的逻辑
  160. var colCount = sheet.getColumnCount();
  161. for(var i = 0; i < colCount; i++){
  162. sheet.getCell(options.activeRow, i).locked(false);
  163. }
  164. Commands.endTransaction(context, options);
  165. return true;
  166. }
  167. }
  168. });
  169. sheet.suspendPaint();
  170. //设置省略符
  171. sheet.getDefaultStyle().showEllipsis = true;
  172. var cfs = sheet.conditionalFormats ;
  173. //11
  174. var table = sheet.tables.add("tblOperatingExpenses2", 4, 1, 51, 6, new spreadNS.Tables.TableTheme());
  175. table.showFooter(true);
  176. var dataTable = [];
  177. dataTable[0] = new Array("_", "预算指标", "不含税金额", "价税金额", "指标说明", "预算备注");
  178. dataTable[1] = new Array(0, "项目人员薪资及附加", 600, 545, "标准工时工资,不含餐费", null);
  179. dataTable[2] = new Array(0, " 岗位编制", 125, 150, null, null);
  180. dataTable[3] = new Array(0, " 保安岗编制", 11, 11, null, null);
  181. dataTable[4] = new Array(0, " 保洁岗编制", 8, 8, null, null);
  182. dataTable[5] = new Array(0, " 工程岗编制", 4, 4, null, null);
  183. dataTable[6] = new Array(0, " 会务岗编制", 2, 2, null, null);
  184. dataTable[7] = new Array(0, " 宿管岗编制", 0, 0, null, null);
  185. dataTable[8] = new Array(0, " 管理岗编制", 3, 3, null, null);
  186. dataTable[9] = new Array(0, " 工资", 125, 150, null, null);
  187. dataTable[10] = new Array(0, " 保安工资", 550000, 550000, null, null);
  188. dataTable[11] = new Array(0, " 保洁工资", 230300, 230300, null, null);
  189. dataTable[12] = new Array(0, " 工程工资", 150000, 150000, null, null);
  190. dataTable[13] = new Array(0, " 会务工资", 100000, 100000, null, null);
  191. dataTable[14] = new Array(0, " 宿管工资", 0, 0, null, null);
  192. dataTable[15] = new Array(0, " 管理人员工资", 239400, 239400, null, null);
  193. dataTable[16] = new Array(0, " 加班费", 1000, 1000, "排班加班工时、额外申请加班工时(非业主付费)、国定加班工时。不含餐费、交通费等", null);
  194. dataTable[17] = new Array(0, " 保安加班费", 500, 630, null, null);
  195. dataTable[18] = new Array(0, " 保洁加班费", 350, 375, null, null);
  196. dataTable[19] = new Array(0, " 工程加班费", 400, 370, null, null);
  197. dataTable[20] = new Array(0, " 会务加班费", 500, 435, null, null);
  198. dataTable[21] = new Array(0, " 宿管加班费", 600, 545, null, null);
  199. dataTable[22] = new Array(0, " 社保", 125, 150, null, null);
  200. dataTable[23] = new Array(0, " 公积金", 100, 100, null, null);
  201. dataTable[24] = new Array(0, " 日常餐补", 100, 90, null, null);
  202. dataTable[25] = new Array(0, " 保安餐补", 150, 145, null, null);
  203. dataTable[26] = new Array(0, " 保洁餐补", 1000, 1000, null, null);
  204. dataTable[27] = new Array(0, " 工程餐补", 500, 630, null, null);
  205. dataTable[28] = new Array(0, " 会务餐补", 350, 375, null, null);
  206. dataTable[29] = new Array(0, " 宿管餐补", 400, 370, null, null);
  207. dataTable[30] = new Array(0, " 管理人员餐补", 500, 435, null, null);
  208. dataTable[31] = new Array(0, " 福利费", 600, 545, null, null);
  209. dataTable[32] = new Array(0, " 员工补助", 125, 150, null, null);
  210. dataTable[33] = new Array(0, " 节日福利费", 100, 100, null, null);
  211. dataTable[34] = new Array(0, " 团队建设费", 100, 90, null, null);
  212. dataTable[35] = new Array(0, "集约化分摊", 150, 145, null, null);
  213. dataTable[36] = new Array(0, " 工程集约化", 1000, 1000, null, null);
  214. dataTable[37] = new Array(0, " 管理集约化", 500, 630, null, null);
  215. dataTable[38] = new Array(0, "项目培训费", 350, 375, null, null);
  216. dataTable[39] = new Array(0, " 保安培训", 400, 370, null, null);
  217. dataTable[40] = new Array(0, " 资格证书", 500, 435, null, null);
  218. dataTable[41] = new Array(0, " 复证费", 600, 545, null, null);
  219. dataTable[42] = new Array(0, " 培训课程及书籍", 125, 150, null, null);
  220. dataTable[43] = new Array(0, " 培训差旅餐费", 100, 100, null, null);
  221. dataTable[44] = new Array(0, "绩效评价指标",null ,null, null, null);
  222. dataTable[45] = new Array(0, " 年休使用率", 2.00, 1.28, "年休工时/加班工时", null);
  223. dataTable[46] = new Array(0, " 经济补偿率", 2.00, 1.89, "经济赔偿次数/员工数量", null);
  224. dataTable[47] = new Array(0, " 调休使用率", 2.00, 2.1, "调休工时/加班工时", null);
  225. dataTable[48] = new Array(0, " 物料采购业主支付比例", 2.00, 1.33, "业主支付费用/物料采购费用", null);
  226. dataTable[49] = new Array(0, " 业主支付加班费比例", 2.00, 3.58, "业主支付费用/加班工时费", null);
  227. dataTable[50] = new Array(0, ".........", 2.00, 3.58, null, null);
  228. dataTable[51] = new Array(0, "合计", 0, 0, null, null);
  229. sheet.addSpan(0, 1, 1, 4);
  230. sheet.addSpan(0, 5, 1, 2);
  231. sheet.addSpan(1, 1, 1, 6);
  232. sheet.addSpan(2, 1, 1, 6);
  233. sheet.addSpan(3, 1, 1, 2);
  234. // sheet.addSpan(16, 1, 1, 6);
  235. // sheet.addSpan(17, 1, 1, 6);
  236. sheet.getDefaultStyle().vAlign = spreadNS.VerticalAlign.center;
  237. sheet.getDefaultStyle().font = "lighter 10pt Calibri";
  238. sheet.getDefaultStyle().foreColor = "rgb(68, 84, 106)";
  239. sheet.options.gridline = { showVerticalGridline: false, showHorizontalGridline: false };
  240. sheet.getCell(0, 1).value("项目运营成本预算表").font("lighter 28pt Calibri")
  241. .hAlign(spreadNS.HorizontalAlign.center);
  242. sheet.getCell(0, 5).value("美都环卫物业-青浦工业园区【2020年度】").font("11pt Calibri").foreColor("rgb(64, 64, 64)")
  243. .hAlign(spreadNS.HorizontalAlign.right).vAlign(spreadNS.VerticalAlign.bottom);
  244. sheet.getCell(3, 1).value("指标预算").font("bold 13pt Calibri ").foreColor("rgb(64, 64, 64)");
  245. sheet.getCell(3, 5).value("项目经理绩效奖(预计):").font("bold 13pt Calibri ").foreColor("rgb(64, 64, 64)");
  246. sheet.getCell(3, 6).value("¥17680.00").font("bold 13pt Calibri ").foreColor("rgb(64, 64, 64)");
  247. sheet.getCell(3, 6).formatter('"¥"#,##0.00');
  248. //奖金公式设置
  249. sheet.getCell(3, 6).formula('=(2280000-D6)*0.04');
  250. sheet.getRange(4, 1, 1, 6).font("bold 10pt Calibri")
  251. .borderTop(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thin));
  252. //15
  253. sheet.getRange(55, 1, 1, 6).font("bold 10pt Calibri")
  254. .borderBottom(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thin));
  255. sheet.getRange(3, 1, 1, 2)
  256. .borderLeft(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thin))
  257. .borderTop(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thin))
  258. .borderRight(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thin));
  259. //12 getRange (row col rowcount colcount)
  260. sheet.getRange(4, 1, 52, 1).borderLeft(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thin)).hAlign(spreadNS.HorizontalAlign.center);
  261. //12
  262. sheet.getRange(4, 6, 52, 1).borderRight(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thin));
  263. //10
  264. sheet.getRange(5, 1, 50, 6).borderBottom(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.dashed));;
  265. //16
  266. for (var row = 4; row < 56; row++) {
  267. for (var col = 1; col < 7; col++) {
  268. sheet.setValue(row, col, dataTable[row - 4][col - 1]);
  269. }
  270. }
  271. var rowHeights = new Array(74, 4, 20);
  272. for (var row = 0; row < 3; row++) {
  273. sheet.setRowHeight(row, rowHeights[row]);
  274. }
  275. //
  276. for (var row = 3; row < 56; row++) {
  277. sheet.setRowHeight(row, 24);
  278. }
  279. //
  280. sheet.setRowHeight(56, 4);
  281. var colWidths = new Array(18, 110, 180, 180, 180, 180, 180);
  282. for (var col = 0; col < 7; col++) {
  283. sheet.setColumnWidth(col, colWidths[col]);
  284. }
  285. sheet.getRange(1, 1, 1, 6)
  286. .borderTop(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thick))
  287. .borderBottom(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thin));
  288. //17
  289. sheet.getRange(56, 1, 1, 6)
  290. .borderTop(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thick))
  291. .borderBottom(new spreadNS.LineBorder("rgb(217,217,217)", spreadNS.LineStyle.thin));
  292. //13
  293. sheet.getRange(3, 3, 45, 2).formatter('"¥"#,##0.00');
  294. sheet.getRange(49, 3, 6, 2).formatter('##0.00"%"');
  295. sheet.getRange(6, 3, 8, 2).formatter('""#,##0');
  296. //12
  297. //sheet.getRange(3, 6, 52, 1).formatter('0%');
  298. //15
  299. sheet.getCell(55, 6).formatter('0.0%');
  300. //
  301. sheet.getCell(6, 3).formula('=SUM(D8:D13)');
  302. sheet.getCell(6, 4).formula('=SUM(E8:E13)');
  303. sheet.getCell(13, 3).formula('=SUM(D15:D20)');
  304. sheet.getCell(13, 4).formula('=SUM(E15:E20)');
  305. sheet.getCell(20, 3).formula('=SUM(D22:D26)');
  306. sheet.getCell(20, 4).formula('=SUM(E22:E26)');
  307. sheet.getCell(5, 3).formula('=D7+D14+D21');
  308. sheet.getCell(5, 4).formula('=E7+E14+E21');
  309. sheet.frozenRowCount(5);
  310. var iconSetRule1 = new spreadNS.ConditionalFormatting.IconSetRule();
  311. //15
  312. iconSetRule1.ranges([new spreadNS.Range(55, 1, 1, 1)]);
  313. iconSetRule1.iconSetType(spreadNS.ConditionalFormatting.IconSetType.threeSymbolsCircled)
  314. .showIconOnly(true);
  315. var icons = iconSetRule1.iconCriteria();
  316. icons[0] = new spreadNS.ConditionalFormatting.IconCriterion(false, spreadNS.ConditionalFormatting.IconValueType.number, -1);
  317. icons[1] = new spreadNS.ConditionalFormatting.IconCriterion(true, spreadNS.ConditionalFormatting.IconValueType.number, 1);
  318. cfs.addRule(iconSetRule1);
  319. var style = new spreadNS.Style();
  320. style.foreColor = "red";
  321. //15
  322. cfs.addCellValueRule(spreadNS.ConditionalFormatting.ComparisonOperators.lessThan, 0, 0, style, [new spreadNS.Range(55, 5, 1, 2)]);
  323. var dataBarRule1 = new spreadNS.ConditionalFormatting.DataBarRule();
  324. dataBarRule1.minType(spreadNS.ConditionalFormatting.ScaleValueType.automin);
  325. dataBarRule1.maxType(spreadNS.ConditionalFormatting.ScaleValueType.automax);
  326. //10
  327. /* dataBarRule1.ranges([new spreadNS.Range(5, 4, 43, 1)]);
  328. dataBarRule1.color("orange").showBorder(true).borderColor("orange").dataBarDirection(spreadNS.ConditionalFormatting.BarDirection.rightToLeft);
  329. cfs.addRule(dataBarRule1); */
  330. var dataBarRule2 = new spreadNS.ConditionalFormatting.DataBarRule();
  331. dataBarRule2.minType(spreadNS.ConditionalFormatting.ScaleValueType.automin);
  332. dataBarRule2.maxType(spreadNS.ConditionalFormatting.ScaleValueType.automax);
  333. //10
  334. dataBarRule2.ranges([new spreadNS.Range(5, 3, 43, 1)]);
  335. dataBarRule2.color("rgb(0,138,239)").showBorder(true).borderColor("rgb(0,138,239)");
  336. cfs.addRule(dataBarRule2);
  337. var dataBarRule3 = new spreadNS.ConditionalFormatting.DataBarRule();
  338. dataBarRule3.minType(spreadNS.ConditionalFormatting.ScaleValueType.lowestValue);
  339. dataBarRule3.maxType(spreadNS.ConditionalFormatting.ScaleValueType.highestValue);
  340. //10
  341. /* dataBarRule3.ranges([new spreadNS.Range(5, 6, 50, 1)]);
  342. dataBarRule3.color("rgb(91,155,213)").showBorder(true).borderColor("rgb(91,155,213)")
  343. .negativeFillColor("rgb(237,125,49)").useNegativeBorderColor(true).negativeBorderColor("rgb(237,125,49)")
  344. .axisPosition(spreadNS.ConditionalFormatting.DataBarAxisPosition.cellMidPoint);
  345. cfs.addRule(dataBarRule3); */
  346. var iconSetRule2 = new spreadNS.ConditionalFormatting.IconSetRule();
  347. //10
  348. iconSetRule2.ranges([new spreadNS.Range(5, 1, 50, 1)]);
  349. iconSetRule2.iconSetType(spreadNS.ConditionalFormatting.IconSetType.threeSymbolsUncircled)
  350. .reverseIconOrder(true)
  351. .showIconOnly(true);
  352. cfs.addRule(iconSetRule2);
  353. //table.setColumnFormula(0, "=tblOperatingExpenses2[[#Totals],[差率 (%)]]");
  354. table.setColumnFormula(2, "=SUBTOTAL(109,[预算金额])");
  355. table.setColumnFormula(3, "=SUBTOTAL(109,[预算价税合计])");
  356. // table.setColumnFormula(4, "=SUBTOTAL(109,[填报说明])");
  357. //table.setColumnFormula(5, '=IFERROR(SUM(tblOperatingExpenses2[[#Totals],[填报说明]]/tblOperatingExpenses2[[#Totals],[预算金额]]),"")');
  358. table.setColumnDataFormula(0, '=IFERROR([@预算价税合计]/[@预算金额],"")');
  359. //table.setColumnDataFormula(4, '=[@预算金额]-[@预算价税合计]');
  360. //去掉一个单元格的公式
  361. sheet.getCell(48,5).formula('').text('');
  362. // table.setColumnDataFormula(5, '=IFERROR([@[填报说明]]/[@预算金额],"")');
  363. sheet.resumePaint();
  364. }
  365. function initMenu(spread){
  366. var commandManager = spread.commandManager();
  367. var selectActualDetailbtn = {
  368. text: "人员工资预算子表",
  369. name: "selectActualDetail" ,
  370. workArea: "viewport",
  371. command: "selectActualDetailcommand"
  372. };
  373. //清空原有按钮
  374. //spread.contextMenu.menuData = new Array();
  375. //添加自定义按钮
  376. spread.contextMenu.menuData.push(selectActualDetailbtn);
  377. //响应事件在这里写代码
  378. var selectActualDetailCommand = {
  379. canUndo: false,
  380. execute: function (spread, options) {
  381. showBudgetSub();
  382. return true;
  383. }
  384. };
  385. commandManager.register("selectActualDetailcommand", selectActualDetailCommand, null, false, false, false, false);
  386. }
  387. function showBudgetSub(){
  388. var url = 'budgetTempSheetController.do?budgetSubDemo';
  389. $.dialog({
  390. title:'人力资源成本分表',
  391. content: 'url:'+ url,
  392. zIndex: getzIndex(),
  393. lock: true,
  394. width: window.top.document.body.offsetWidth ,
  395. height: window.top.document.body.offsetHeight-100,
  396. cache:false,
  397. button: [
  398. {
  399. name: '<t:mutiLang langKey="common.confirm"/>',
  400. callback: function(){
  401. /*
  402. //获得子页面getReason()方法中的值
  403. var iframe = this.iframe.contentWindow;
  404. if(iframe.getReason().length>0){
  405. var strData=eval(iframe.getReason());
  406. var maintainids="";
  407. for(var key in strData[0]){
  408. if(key=="id"){
  409. maintainids=strData[0][key];
  410. }
  411. }
  412. if(maintainids.length > 0)
  413. {
  414. //addApply(cid,contractType,maintainids);
  415. }
  416. }
  417. */
  418. },
  419. focus: true
  420. },
  421. {
  422. name: '<t:mutiLang langKey="common.cancel"/>',
  423. callback: function(){
  424. //refresh();
  425. }
  426. }
  427. ]
  428. });
  429. }
  430. function btn_output(){
  431. var sheet = spread.getSheet(0);
  432. /* var jsonString = JSON.stringify(
  433. spread.toJSON( { includeBindingSource: true } )
  434. );
  435. console.log(jsonString);
  436. return; */
  437. var params = '';
  438. var year = $('#attYear').val();
  439. params+='&year='+year;
  440. var totalwageclass = formatNumber(sheet.getValue(5,3),2);
  441. params+='&totalwageclass='+totalwageclass;
  442. var wageclassmemo = sheet.getValue(5,5);
  443. params+='&wageclassmemo='+wageclassmemo;
  444. var totalcount = formatNumber(sheet.getValue(6,3),0);//sheet.getCell(6,3).text;
  445. params+='&totalcount='+totalcount;
  446. var sucuritycount = formatNumber(sheet.getValue(7,3),0);
  447. params+='&sucuritycount='+sucuritycount;
  448. var cleanercount = formatNumber(sheet.getValue(8,3),0);
  449. params+='&cleanercount='+cleanercount;
  450. var maintenancecount = formatNumber(sheet.getValue(9,3),0);
  451. params+='&maintenancecount='+maintenancecount;
  452. var meetingcount = formatNumber(sheet.getValue(10,3),0);
  453. params+='&meetingcount='+meetingcount;
  454. var apartcount = formatNumber(sheet.getValue(11,3),0);
  455. params+='&apartcount='+apartcount;
  456. var manangercount = formatNumber(sheet.getValue(12,3),0);
  457. params+='&manangercount='+manangercount;
  458. var totalwage = formatNumber(sheet.getValue(13,3),2);
  459. params+='&totalwage='+totalwage;
  460. var sucuritywage = formatNumber(sheet.getValue(14,3),2);
  461. params+='&sucuritywage='+sucuritywage;
  462. var cleanerwage = formatNumber(sheet.getValue(15,3),2);
  463. params+='&cleanerwage='+cleanerwage;
  464. var maintenancewage = formatNumber(sheet.getValue(16,3),2);
  465. params+='&maintenancewage='+maintenancewage;
  466. var meetingwage = formatNumber(sheet.getValue(17,3),2);
  467. params+='&meetingwage='+meetingwage;
  468. var apartwage = formatNumber(sheet.getValue(18,3),2);
  469. params+='&apartwage='+apartwage;
  470. var managerwage = formatNumber(sheet.getValue(19,3),2);
  471. params+='&managerwage='+managerwage;
  472. var url = "budgetTempSheetController.do?downloadword"+params;
  473. layer.msg('数据导出中,请稍候···', {
  474. time : 6000,
  475. shade: 0.1});
  476. window.location.href = url; //encodeURI(fields+params+id);
  477. }
  478. </script>
  479. </body>
  480. </html>