budgetInst-fill.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. $(function(){
  2. spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 1 });
  3. initSpread();
  4. var sheet = spread.getActiveSheet();
  5. $('#info1').show();
  6. var showLeftColumn = 0;
  7. var showTopRow = 0;
  8. if(actualStaKind=='leader'){
  9. resetColumn();
  10. showLeftColumn=3;
  11. showTopRow = 4;
  12. }
  13. if(isTotal=='1'){
  14. showLeftColumn=1;
  15. showTopRow = 2;
  16. sheet.frozenColumnCount(3);
  17. sheet.frozenRowCount(2);
  18. }
  19. sheet.showColumn(showLeftColumn, GC.Spread.Sheets.HorizontalPosition.left);
  20. sheet.showRow(showTopRow, GC.Spread.Sheets.VerticalPosition.top);
  21. });
  22. function initSpread(){
  23. spread.suspendPaint();
  24. if(dbJson){//数据库
  25. spread.fromJSON(dbJson);
  26. }
  27. var sheet = spread.getActiveSheet();
  28. bindEvent(spread);//现在只有点击显示单元格维度
  29. initMeasureData();
  30. if(actualStaKind=='leader') {
  31. //设置闵总视图
  32. setLeader(sheet);
  33. }
  34. if(actualStaKind=='main') {
  35. //设置统计表中的 主统计表
  36. setStaMain(sheet);
  37. }
  38. if(readOnly) {
  39. setSheetReadOnly(sheet);
  40. spread.resumePaint();
  41. return;
  42. }else {
  43. setInstDefault(spread);
  44. }
  45. spread.options.newTabVisible = false;//取消新增sheet按钮
  46. spread.options.allowExtendPasteRange =true;//扩展粘贴区域
  47. setDefaultLock(sheet);
  48. setCellEdit(sheet);
  49. spread.resumePaint();
  50. }
  51. function setDefaultLock(sheet){
  52. var option = {
  53. allowSelectLockedCells:true,
  54. allowSelectUnlockedCells:true,
  55. allowFilter: true,
  56. allowSort: false,
  57. allowResizeRows: true,
  58. allowResizeColumns: true,
  59. allowEditObjects: false,
  60. allowDragInsertRows: false,
  61. allowDragInsertColumns: false,
  62. allowInsertRows: false,
  63. allowInsertColumns: false,
  64. allowDeleteRows: false,
  65. allowDeleteColumns: false
  66. };
  67. sheet.options.protectionOptions = option;
  68. }
  69. function setCellEdit(sheet){
  70. var rowCount = sheet.getRowCount();
  71. var colCount = sheet.getColumnCount();
  72. for(var i=0;i<rowCount;i++){
  73. for(var j=0;j<colCount;j++){
  74. // dataCell
  75. var tag = sheet.getTag(i,j);
  76. if(tag){
  77. if(tag.dataCell){
  78. if(!tag.readOnly || tag.readOnly==0){
  79. sheet.getRange(i,j,1,1).locked(false);
  80. }
  81. }
  82. }
  83. }
  84. }
  85. }
  86. function bindEvent(spread) {
  87. bindCheckNum(spread);
  88. spread.bind(GC.Spread.Sheets.Events.EnterCell, function (event, data) {//点击cell事件
  89. var row = data.row;
  90. var col = data.col;
  91. var cellSheet = data.sheet;
  92. var cellSetting = cellSheet.getTag(row,col);
  93. var header =false;
  94. if(cellSetting) {
  95. var rowHeader = cellSetting[_vars.rowHeader];
  96. var colHeader = cellSetting[_vars.colHeader];
  97. if(rowHeader || colHeader) {
  98. if(rowHeader) $('#otherTxt').html('行表头');
  99. if(colHeader) $('#otherTxt').html('列表头');
  100. $('#info1').hide();$('#info2').show();
  101. header=true;
  102. }
  103. }
  104. if(!header) {
  105. if(!cellSetting){
  106. $('#otherTxt').html('无属性单元格');
  107. $('#info1').hide();$('#info2').show();
  108. }else{
  109. $('#info2').hide();$('#info1').show();
  110. var periodDetailName= cellSetting.periodDetailName;
  111. var measureName= cellSetting.customCode+" "+cellSetting.measureName;
  112. var includeTax= cellSetting.includeTax;
  113. var expect= cellSetting.expect;
  114. var entityName = cellSetting.entityName;
  115. $('#timeInput').val(periodDetailName);
  116. $('#measureInput').val(measureName);
  117. $('input[name="includeTax"][value=' + includeTax + ']').attr('checked', 'checked');
  118. $('input[name="expect"][value=' + expect + ']').attr('checked', 'checked');
  119. if(entityName){
  120. $('#entityInput').val(entityName);
  121. $('#entityTr').show();
  122. }else{
  123. $('#entityInput').val('');
  124. $('#entityTr').hide();
  125. }
  126. $('#readOnlyInput').val(cellSetting.readOnly==1?'是':'否');
  127. $('#datatypeInput').val( measureDataTypeList[cellSetting.datatype]);
  128. var functionTxt = cellSetting.functionTxt?cellSetting.functionTxt:'';
  129. if(functionTxt){
  130. $('#functionInputTr').show();
  131. $('#functionInput').val(functionTxt);
  132. }else {
  133. $('#functionInputTr').hide();
  134. }
  135. var controlFlagName = cellSetting.controlFlagName?cellSetting.controlFlagName:'';
  136. if(controlFlagName){
  137. $('#controlFlagNameTr').show();
  138. $('#controlFlagNameInput').val(controlFlagName);
  139. }else {
  140. $('#controlFlagNameTr').hide();
  141. }
  142. }
  143. }
  144. // sheet.startEdit(false); //单击修改
  145. });
  146. }
  147. function bindCheckNum(spread) {
  148. spread.bind(GC.Spread.Sheets.Events.EditEnding, function (sender, args) {
  149. var sheet = args.sheet;
  150. var row=args.row;
  151. var col=args.col;
  152. var cellTag = sheet.getTag(row,col);
  153. if(cellTag) {
  154. if(cellTag.datatype!='txt'){
  155. var value =args.editingText;
  156. var reg=/^(-?\d+)(\.\d+)?$/;
  157. if(value){
  158. if(value.indexOf('=')!=0) {
  159. if (!reg.test(value)) {
  160. args.cancel = true;
  161. }
  162. }
  163. }
  164. }
  165. }
  166. });
  167. }
  168. function setLeader(sheet) {
  169. showTotalSheet(sheet);
  170. var actualPerCol = 4;//经营类年度执行比例
  171. var rowCount = sheet.getRowCount();
  172. var now=new Date;
  173. var month=now.getMonth();
  174. month++;
  175. for(var i=0;i<rowCount;i++){
  176. var cell = sheet.getCell(i,actualPerCol);
  177. if(cell){
  178. var value = cell.value();
  179. if(value>(month*0.08)){
  180. cell.foreColor('red').font('bold normal 15px normal');
  181. sheet.getCell(i,actualPerCol-1).foreColor('red').font('bold normal 15px normal');
  182. }
  183. }
  184. }
  185. }
  186. function setStaMain(sheet){
  187. showTotalSheet(sheet);
  188. }
  189. function showTotalSheet(sheet){
  190. sheet.bind(GC.Spread.Sheets.Events.CellDoubleClick, function (e, info) {
  191. var row = info.row; var col = info.col;
  192. if(col==1) {//双击第二列弹出执行总表
  193. var tag = sheet.getTag(row,col);
  194. if(tag){
  195. var entityId =tag.entityId;
  196. var entityName = tag.entityName;
  197. if(entityId){
  198. var data ={};
  199. data.periodYear = periodYear;
  200. data.entityId = entityId;
  201. data.actual = 1;
  202. var layerIndex = layer.msg('载入中,请稍候···', {
  203. time : 3000*1000,
  204. shade: 0.1});
  205. $.post('budgetInstController.do?getTotalInstId',data,function(d){
  206. layer.close(layerIndex);
  207. if(!d.obj){
  208. alerLayerTip('无对应执行总表');
  209. return;
  210. }
  211. var instId = d.obj[0];
  212. var instName = d.obj[1];
  213. if(instId){
  214. var openUrl = 'budgetInstController.do?goView&id='+instId;
  215. createdetailwindow(entityName+':'+instName,openUrl,'100%','100%');
  216. }
  217. },'json');
  218. }
  219. }
  220. }
  221. });
  222. }