budgetInst-fill4orders.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. var headerCount;//头部行高
  2. var nextDataRowIndex;//下条数据所在行
  3. // var categoryCodeCol=31;
  4. var categoryBackColorArray=['rgb(180,198,231)','#FFE699','rgb(169,208,142)'];//0 工程 1保洁 2办公
  5. var priceAmountBackColor='yellow';//后两列颜色
  6. $(function(){
  7. spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 1 });
  8. initSpread();
  9. // setDoubleCheck(spread);
  10. });
  11. function initSpread(){
  12. spread.suspendPaint();
  13. if(dbJson){//数据库
  14. spread.fromJSON(dbJson);
  15. }
  16. var sheet = spread.getActiveSheet();
  17. changeRightSum(sheet);
  18. removeMenu(sheet);
  19. if(readOnly) {
  20. setSheetReadOnly(sheet);
  21. spread.resumePaint();
  22. return;
  23. }else {
  24. setInstDefault(spread);
  25. }
  26. addMenu(sheet);
  27. spread.options.newTabVisible = false;//取消新增sheet按钮
  28. spread.options.allowExtendPasteRange =true;//扩展粘贴区域
  29. // bindEvent(spread);
  30. setDefaultLock(sheet);
  31. setCellEdit(sheet);
  32. var setting = sheet.tag();
  33. if(setting){
  34. if(setting.sheetVar) {
  35. headerCount = setting.sheetVar.headerCount;
  36. }
  37. if(setting.nextDataRowIndex){
  38. nextDataRowIndex = setting.nextDataRowIndex;
  39. }
  40. }
  41. if(!nextDataRowIndex){
  42. nextDataRowIndex = headerCount;
  43. }
  44. spread.bind(GC.Spread.Sheets.Events.CellChanged, function (e, info) {
  45. if(info.sheetArea === GC.Spread.Sheets.SheetArea.viewport){
  46. var sheet =info.sheet;
  47. var row = info.row;
  48. var col = info.col;
  49. if(info.propertyName=='value'){//值变化
  50. changeRightSum(sheet);
  51. }
  52. }
  53. });
  54. spread.bind(GC.Spread.Sheets.Events.RowChanging, function (e, info) {
  55. //info.propertyName="deleteRows" //删除行
  56. if(info.propertyName="deleteRows"){
  57. var deleteRow = info.row;
  58. var deleteCount = info.count;
  59. var sheetTag = sheet.tag();
  60. var ids = sheetTag.ids;
  61. for(var i=deleteRow;i<deleteRow+deleteCount;i++) {
  62. if(nextDataRowIndex>headerCount) nextDataRowIndex--;
  63. var rowTag = sheet.getTag(i,-1);
  64. if(!rowTag) continue;
  65. for(var j=0;j<ids.length;j++){
  66. if(ids[j]==rowTag.id){
  67. delete ids[j];
  68. }
  69. }
  70. }
  71. addSheetTagValue(sheet,{ids:ids,nextDataRowIndex:nextDataRowIndex});
  72. }
  73. });
  74. if(ordersKindType=='m') {//耗材类
  75. /* var spreadNS = GC.Spread.Sheets;
  76. var cfs = sheet.conditionalFormats;
  77. var dataBarRule2 = new spreadNS.ConditionalFormatting.DataBarRule();
  78. dataBarRule2.minType(spreadNS.ConditionalFormatting.ScaleValueType.automin);
  79. dataBarRule2.maxType(spreadNS.ConditionalFormatting.ScaleValueType.automax);
  80. dataBarRule2.ranges([new spreadNS.Range(-1, 8, -1, 1)]);
  81. dataBarRule2.color("orange").showBorder(true).borderColor("rgb(0,138,239)");
  82. cfs.addRule(dataBarRule2);*/
  83. }
  84. spread.resumePaint();
  85. }
  86. function setDefaultLock(sheet){
  87. var option = {
  88. allowSelectLockedCells:true,
  89. allowSelectUnlockedCells:true,
  90. allowFilter: true,
  91. allowSort: false,
  92. allowResizeRows: true,
  93. allowResizeColumns: true,
  94. allowEditObjects: false,
  95. allowDragInsertRows: false,
  96. allowDragInsertColumns: false,
  97. allowInsertRows: false,
  98. allowInsertColumns: false,
  99. allowDeleteRows: true,
  100. allowDeleteColumns: false
  101. };
  102. sheet.options.protectionOptions = option;
  103. }
  104. function setCellEdit(sheet){
  105. var rowCount = sheet.getRowCount();
  106. var colCount = sheet.getColumnCount();
  107. for(var i=0;i<rowCount;i++){
  108. for(var j=0;j<colCount;j++){
  109. // dataCell
  110. var tag = sheet.getTag(i,j);
  111. if(tag){
  112. if(tag.dataCell){
  113. if(!tag.readOnly || tag.readOnly==0){
  114. sheet.getRange(i,j,1,1).locked(false);
  115. }
  116. }
  117. }
  118. }
  119. }
  120. }
  121. function addOne(){
  122. if(ordersKindType=='m'||ordersKindType=='dizhi'||ordersKindType=='dcg'){
  123. addGoods();
  124. }else if(ordersKindType=='gzf'){
  125. addClothing();
  126. }
  127. }
  128. function addGoods(){//单个加
  129. var url="budgetDataController.do?selectReferGoods4Budget" +
  130. "&classname=cn.com.lzt.goodsinfo.entity.TBGoodsInfoEntity" +
  131. "&codefield=goodsCode" +
  132. "&categoryfield=belongCategoryCode" +
  133. "&categoryNamefield=belongCategoryName" +
  134. "&namefield=goodsName" +
  135. "&purchaseUnit=purchaseUnit" +
  136. "&specification=specification" +
  137. "&goodsDesc=goodsDesc" +
  138. "&strEmpty=strEmpty" +
  139. "&supplierName=defaultProvider"
  140. +"&initCategoryCode="+ordersCategoryCode;
  141. _openDialog(url,'选择货品',function(iframe){
  142. spread.suspendPaint();
  143. var selected = iframe.getSelectRows();
  144. for(var i=0;i<selected.length;i++){
  145. var one =selected[i];
  146. if(ordersKindType=='m'){
  147. $.ajax({
  148. url: 'budgetInstController.do?getOneGoodsUesdCount'
  149. ,data:{goodsId:one.id,year:refYear,entityId:entityId}
  150. ,dataType:'json'
  151. ,type:'POST'
  152. ,async:false
  153. ,success:function (d) {
  154. if(d.success){
  155. one.refYearCountArray=d.obj;
  156. }
  157. }
  158. });
  159. }
  160. addRow(one);
  161. }
  162. fitColumn();
  163. spread.resumePaint();
  164. },'800px','600px');
  165. }
  166. function addClothing(){
  167. var url="budgetDataController.do?selectClothing";
  168. _openDialog(url,'选择工作服',function(iframe){
  169. spread.suspendPaint();
  170. var selected = iframe.getSelectRows();
  171. for(var i=0;i<selected.length;i++){
  172. addRow(selected[i]);
  173. }
  174. fitColumn();
  175. spread.resumePaint();
  176. },'800px','600px');
  177. }
  178. function addRefYearGoods() {//加去年使用的
  179. var url ='budgetInstController.do?getUsedGoods';
  180. /* var layerIndex = layer.msg('载入中,请稍候···', {
  181. time : 3000*1000,
  182. shade: 0.1});*/
  183. _alert('载入货品可能需要2-3分钟,请耐心等待',function(){
  184. $.ajax({
  185. url: url
  186. ,data:{initCategoryCode:ordersCategoryCode,year:refYear,entityId:entityId}
  187. ,dataType:'json'
  188. ,type:'POST'
  189. ,async:false
  190. ,success:function (d) {
  191. if(d.success){
  192. var obj = d.obj;
  193. spread.suspendPaint();
  194. for(var i=0;i<obj.length;i++){
  195. // $('div.layui-layer-content').html('载入中('+(i+1)+'/'+obj.length+'),请稍候···');
  196. addRow(obj[i]);
  197. // if(i==20) break;
  198. }
  199. fitColumn();
  200. spread.resumePaint();
  201. _alert('载入成功');
  202. }
  203. }
  204. });
  205. });
  206. // layer.close(layerIndex);
  207. }
  208. function traceTime(step){
  209. if(window._lastStepTime){
  210. var current = new Date().getTime();
  211. console.log(step+":"+(current-window._lastStepTime));
  212. window._lastStepTime=current;
  213. }else {
  214. window._lastStepTime = new Date().getTime();
  215. }
  216. }
  217. function getDoubleValidator() {
  218. return GC.Spread.Sheets.DataValidation.createFormulaValidator('^(-?\d+)(\.\d+)?$');
  219. }
  220. function addRow(one){
  221. var sheet = spread.getActiveSheet();
  222. var sheetTag = sheet.tag();
  223. if(!sheetTag) sheetTag={};
  224. if(!sheetTag.ids) sheetTag.ids=[];
  225. var id = one.id;
  226. if($.inArray(id, sheetTag.ids)!=-1){
  227. return;
  228. }
  229. sheetTag.ids.push(id);
  230. addSheetTagValue(sheet,{ids:sheetTag.ids});
  231. var row = nextDataRowIndex++;
  232. var sheetRowCount = sheet.getRowCount();
  233. if(row>sheetRowCount-1){
  234. sheet.addRows(sheetRowCount,1)
  235. }
  236. var unLockedColArray = [];
  237. var rowSetting={};//行变量
  238. if(ordersKindType=='m') {//消耗类
  239. sheet.setFormula(row, 0, "row()-"+headerCount);
  240. // sheet.setValue(row, 0, row-headerCount+1);//序号
  241. sheet.setValue(row, 1, one.goodsName);//品名
  242. sheet.setValue(row, 2, one.specification);//型号
  243. sheet.setValue(row, 3, typeList[one.purchaseUnit]);//单位
  244. sheet.setValue(row, 4, one.costPrice);//单价
  245. var priceColumnString = getCellStr(sheet, row, 4);//单价列
  246. var startIndex = 9;
  247. var allNumCol = '';
  248. var allRefNumCol='';
  249. for (var i = 0; i < 6; i++) {
  250. var refYearColIndex = startIndex + i * 3;//往年数量列
  251. var numIndex = refYearColIndex+1;//数量列
  252. var amountIndex = numIndex + 1;//金额列
  253. // var dv = getDoubleValidator();
  254. // sheet.getCell(row,numIndex).validator(dv);
  255. unLockedColArray.push(numIndex);
  256. var refYearColString = getCellStr(sheet, row, refYearColIndex);
  257. var numColString = getCellStr(sheet, row, numIndex);
  258. if(one.refYearCountArray){
  259. var refMonthCount = one.refYearCountArray[i];
  260. sheet.setValue(row,refYearColIndex,refMonthCount);
  261. }
  262. sheet.setFormula(row, amountIndex, numColString + "*" + priceColumnString);
  263. if (i > 0) {
  264. allNumCol += ',';
  265. allRefNumCol+=',';
  266. }
  267. allNumCol += numColString;
  268. allRefNumCol+=refYearColString;
  269. }
  270. // 5往年汇总 6年度数量 7年度金额 8数量差
  271. sheet.setFormula(row, 5, "sum(" + allRefNumCol + ")");
  272. unLockedColArray.push(6);
  273. sheet.setFormula(row, 6, "sum(" + allNumCol + ")");
  274. var c5String = getCellStr(sheet, row, 5);
  275. var c6String = getCellStr(sheet, row, 6);
  276. sheet.setFormula(row, 7, c6String+"*"+priceColumnString);
  277. sheet.setFormula(row, 8, c6String+"-"+c5String);
  278. rowSetting.categoryCode=one.belongCategoryCode;
  279. }else if(ordersKindType=='dizhi') { //低值、固定资产
  280. sheet.setFormula(row, 0, "row()-"+headerCount);
  281. // sheet.setValue(row, 0, row-headerCount+1);//序号
  282. sheet.setValue(row, 1, one.belongCategoryName);//类别
  283. sheet.setValue(row, 2, one.goodsName);//品名
  284. sheet.setValue(row, 3, one.brand);//品牌
  285. sheet.setValue(row, 4, one.specification);//型号
  286. sheet.setValue(row, 5, typeList[one.purchaseUnit]);//单位
  287. sheet.setValue(row, 6, one.costPrice);//单价
  288. var priceColumnString = getCellStr(sheet, row, 6);//单价列
  289. var startIndex = 7;
  290. var allNumCol = '';
  291. var numIndex = startIndex;
  292. for (var i = 0; i < 12; i++) {
  293. var amountIndex = numIndex + 1;//金额列
  294. // sheet.getRange(row, numIndex).locked(false);
  295. unLockedColArray.push(numIndex);
  296. var numColString = getCellStr(sheet, row, numIndex);
  297. sheet.setFormula(row, amountIndex, numColString + "*" + priceColumnString);
  298. if (i > 0) {
  299. allNumCol += ',';
  300. }
  301. allNumCol += numColString;
  302. numIndex+=2;
  303. }
  304. //数量
  305. sheet.setFormula(row, numIndex, "sum(" + allNumCol + ")");
  306. unLockedColArray.push(numIndex);
  307. var totalNumString = getCellStr(sheet, row, numIndex);
  308. numIndex++;
  309. //金额
  310. sheet.setFormula(row, numIndex,totalNumString+"*"+ priceColumnString);
  311. numIndex++;
  312. if(one.belongCategoryCode){
  313. sheet.setValue(row,numIndex,one.belongCategoryCode);
  314. }
  315. if(ordersKind=='rootA04') {//固定资产
  316. sheet.setValue(row,numIndex+1,one.propertytype);
  317. }
  318. rowSetting.categoryCode=one.belongCategoryCode;
  319. }else if(ordersKindType=='dcg') { //代采购
  320. sheet.setFormula(row, 0, "row()-"+headerCount);
  321. // sheet.setValue(row, 0, row-headerCount+1);//序号
  322. sheet.setValue(row, 1, one.goodsName);//维保名称
  323. sheet.setValue(row, 2, typeList[one.purchaseUnit]);//单位
  324. sheet.setValue(row, 3, one.costPrice);//单价
  325. var priceColumnString = getCellStr(sheet, row, 3);//单价列
  326. var startIndex = 4;
  327. var allNumCol = '';
  328. var numIndex = startIndex;
  329. for (var i = 0; i < 12; i++) {
  330. var amountIndex = numIndex + 1;//金额列
  331. // sheet.getRange(row, numIndex).locked(false);
  332. unLockedColArray.push(numIndex);
  333. var numColString = getCellStr(sheet, row, numIndex);
  334. sheet.setFormula(row, amountIndex, numColString + "*" + priceColumnString);
  335. if (i > 0) {
  336. allNumCol += ',';
  337. }
  338. allNumCol += numColString;
  339. numIndex+=2;
  340. }
  341. //数量
  342. sheet.setFormula(row, numIndex, "sum(" + allNumCol + ")");
  343. var totalNumString = getCellStr(sheet, row, numIndex);
  344. unLockedColArray.push(numIndex);
  345. numIndex++;
  346. //金额
  347. sheet.setFormula(row, numIndex++,totalNumString+"*"+ priceColumnString);
  348. var oneLevelCode = '';
  349. if(one.belongCategoryCode){
  350. oneLevelCode=one.belongCategoryCode.substr(0,7);
  351. sheet.setValue(row,numIndex++,oneLevelCode);
  352. }
  353. rowSetting.categoryCode=one.belongCategoryCode;
  354. }else if(ordersKindType=='gzf') { //工作服
  355. sheet.setFormula(row, 0, "row()-"+headerCount);
  356. // sheet.setValue(row, 0, row-headerCount+1);//序号
  357. sheet.setValue(row, 1,clothingusertypeList[one.clothingusertype]);//类别
  358. sheet.setValue(row, 2, one.name); // 品名
  359. sheet.setValue(row, 3, typeList[one.unit]);//单位
  360. var price = one.price;
  361. if(!price){
  362. price=0;
  363. }
  364. sheet.setValue(row, 4, price);//单价
  365. var priceColumnString = getCellStr(sheet, row, 4);//单价列
  366. var startIndex = 5;
  367. var allNumCol = '';
  368. var numIndex = startIndex;
  369. for (var i = 0; i < 12; i++) {
  370. var amountIndex = numIndex + 1;//金额列
  371. // sheet.getRange(row, numIndex).locked(false);
  372. unLockedColArray.push(numIndex);
  373. var numColString = getCellStr(sheet, row, numIndex);
  374. sheet.setFormula(row, amountIndex, numColString + "*" + priceColumnString);
  375. if (i > 0) {
  376. allNumCol += ',';
  377. }
  378. allNumCol += numColString;
  379. numIndex+=2;
  380. }
  381. //数量
  382. sheet.setFormula(row, numIndex, "sum(" + allNumCol + ")");
  383. unLockedColArray.push(numIndex);
  384. var totalNumString = getCellStr(sheet, row, numIndex);
  385. numIndex++;
  386. //合计
  387. sheet.setFormula(row, numIndex,totalNumString+"*"+ priceColumnString);
  388. }
  389. var columnCount = sheet.getColumnCount();
  390. var styleRowIndex = headerCount-1;
  391. for(var ci=0;ci<columnCount;ci++) {
  392. var styleColStyle=sheet.getStyle(styleRowIndex,ci);
  393. if(styleColStyle){
  394. sheet.setStyle(row,ci,styleColStyle);
  395. }
  396. var styleColFormatter = sheet.getFormatter(styleRowIndex,ci);
  397. if(styleColFormatter){
  398. sheet.setFormatter(row,ci,styleColFormatter);
  399. }
  400. if($.inArray(ci,unLockedColArray)!=-1){
  401. sheet.getCell(row,ci).locked(false);
  402. }
  403. }
  404. //边框
  405. /*var lineStyle = GC.Spread.Sheets.LineStyle.thin;
  406. var lineBorder = new GC.Spread.Sheets.LineBorder('black', lineStyle);
  407. var sheetArea = GC.Spread.Sheets.SheetArea.viewport;
  408. var columnCount = sheet.getColumnCount();
  409. for(var col=0;col<columnCount;col++) {
  410. sheet.getRange(row,col).setBorder(lineBorder, { left: true, right: true,top:true,bottom:true}, sheetArea);
  411. }*/
  412. // sheet.getCell(row,1).text(one.costPrice);
  413. addSheetTagValue(sheet,{nextDataRowIndex:nextDataRowIndex});
  414. rowSetting.id=id;
  415. addCellTagValue(sheet,row,-1,rowSetting);
  416. }
  417. var changeSumTimer;
  418. function changeRightSum(sheet){
  419. return;
  420. if(changeSumTimer){
  421. clearTimeout(changeSumTimer);
  422. }
  423. changeSumTimer=setTimeout(_changeSum,200);
  424. function _changeSum() {
  425. var categoryTotalCol = 32;
  426. var rowIndex =0;
  427. while(true){
  428. var cell = sheet.getCell(rowIndex,categoryTotalCol);
  429. var cs =cell.tag();
  430. if(!cs) break;
  431. var code = cs.categoryCode;
  432. var value =cell.value();
  433. value=parseFloat(value).toFixed(2);
  434. $('#'+code).val(value);
  435. categoryTotalCol++;
  436. }
  437. setEchart();
  438. changeSumTimer=null;
  439. }
  440. }
  441. function setEchart(){
  442. var option = {
  443. title: {
  444. text: '',
  445. subtext: '',
  446. left: 'center'
  447. },
  448. tooltip: {
  449. trigger: 'item',
  450. formatter: '{a} <br/>{b} : {c} ({d}%)'
  451. },
  452. legend: {
  453. orient: 'horizontal',
  454. left: 'left',
  455. data: []
  456. },
  457. series: [
  458. {
  459. name: '',
  460. type: 'pie',
  461. radius: '55%',
  462. center: ['50%', '60%'],
  463. data: [],
  464. emphasis: {
  465. itemStyle: {
  466. shadowBlur: 10,
  467. shadowOffsetX: 0,
  468. shadowColor: 'rgba(0, 0, 0, 0.5)'
  469. }
  470. }
  471. }
  472. ]
  473. };
  474. var categoryItems = [];
  475. var categoryItemData = [];
  476. var inputs = $('#cateSumTable input');
  477. for (var i = 0; i < inputs.length; i++) {
  478. var t = $(inputs[i]);
  479. var name = t.attr('categoryName');
  480. var v = t.val();
  481. categoryItems.push(name);
  482. var d = {};
  483. d.name = name;
  484. d.value = v;
  485. categoryItemData.push(d);
  486. }
  487. option.legend.data = categoryItems;
  488. option.series[0].data = categoryItemData;
  489. var myChart = echarts.init(document.getElementById('e1'));
  490. myChart.setOption(option);
  491. }
  492. function fitColumn(){
  493. var sheet = spread.getActiveSheet();
  494. sheet.autoFitColumn(0);sheet.autoFitColumn(1);sheet.autoFitColumn(2);
  495. }
  496. function removeMenu(){
  497. for(var i=0;i< spread.contextMenu.menuData.length;i++){
  498. var menu = spread.contextMenu.menuData[i];
  499. var text=menu.text;
  500. if(text=='清除' || text=='插入'|| text=='隐藏'|| text=='显示' ){//去掉过滤、排序
  501. delete spread.contextMenu.menuData[i];
  502. }
  503. }
  504. }
  505. function addMenu(){
  506. if(ordersKindType=='m') {//耗材类
  507. var oneRowHistoryMenu ={text: '历史详情',name: 'oneRowHistory',workArea: 'viewport',command:oneRowHistory};
  508. spread.contextMenu.menuData.push(oneRowHistoryMenu);
  509. }
  510. spread.contextMenu.onOpenMenu =function(menuData, itemsDataForShown, hitInfo, spread){
  511. //itemsDataForShown 实际工作菜单 可以删 不影响其他显示
  512. var info =hitInfo.worksheetHitInfo;
  513. if(info){
  514. var row =info.row;
  515. var col = info.col ;
  516. }
  517. }
  518. }
  519. function oneRowHistory(spread){
  520. var sheet = spread.getActiveSheet();
  521. var selections = sheet.getSelections();
  522. var select = selections[0];
  523. var row = select.row;
  524. var col = select.col;
  525. var rowSetting = sheet.getTag(row,-1);
  526. if(rowSetting){
  527. var url = 'budgetInstController.do?goOneHistry';
  528. var goods=rowSetting.id;
  529. var name = sheet.getValue(row,1);
  530. var unit=sheet.getValue(row,3);
  531. var d1=sheet.getValue(row,9);
  532. var v1=sheet.getValue(row,10);
  533. var d2=sheet.getValue(row,12);
  534. var v2=sheet.getValue(row,13);
  535. var d3=sheet.getValue(row,15);
  536. var v3=sheet.getValue(row,16);
  537. var d4=sheet.getValue(row,18);
  538. var v4=sheet.getValue(row,19);
  539. var d5=sheet.getValue(row,21);
  540. var v5=sheet.getValue(row,22);
  541. var d6=sheet.getValue(row,24);
  542. var v6=sheet.getValue(row,25);
  543. url +="&unit="+unit+"&refYear="+refYear+"&name="+name
  544. +"&d1="+d1+"&d2="+d2+"&d3="+d3+"&d4="+d4+"&d5="+d5+"&d6="+d6
  545. +"&v1="+v1+"&v2="+v2+"&v3="+v3+"&v4="+v4+"&v5="+v5+"&v6="+v6
  546. ;
  547. createdetailwindow('历史详情',url,'100%','100%');
  548. }
  549. }
  550. function bindCheckNum(spread) {
  551. spread.bind(GC.Spread.Sheets.Events.EditEnding, function (sender, args) {
  552. var sheet = args.sheet;
  553. var row=args.row;
  554. var col=args.col;
  555. var cellTag = sheet.getTag(row,col);
  556. if(cellTag) {
  557. if(cellTag.datatype!='txt'){
  558. var value =args.editingText;
  559. var reg=/^(-?\d+)(\.\d+)?$/;
  560. if(value){
  561. if(value.indexOf('=')!=0) {
  562. if (!reg.test(value)) {
  563. args.cancel = true;
  564. }
  565. }
  566. }
  567. }
  568. }
  569. });
  570. }
  571. function createAlignRightStyle(locked){
  572. var style = new GC.Spread.Sheets.Style();
  573. style.hAlign = GC.Spread.Sheets.HorizontalAlign.right;
  574. style.vAlign = GC.Spread.Sheets.VerticalAlign.center;
  575. style.locked=locked;
  576. return style;
  577. }