select_FB_view.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. let selectFBObject = {
  2. spread:null,
  3. datas:[],
  4. setting:{
  5. header: [
  6. {headerName: "编号", headerWidth: 180, dataCode: "code", dataType: "String"},
  7. {headerName: "名称", headerWidth: 210, dataCode: "name", dataType: "String"},
  8. {headerName: "单位", headerWidth: 50, dataCode: "unit", dataType: "String", hAlign: "center"},
  9. ],
  10. view:{ lockColumns: ["name","code","unit"]}
  11. },
  12. initSpread:function(){
  13. if(!this.spread){
  14. this.spread = SheetDataHelper.createNewSpread($("#selectFBSheet")[0]);
  15. sheetCommonObj.spreadDefaultStyle(this.spread);
  16. let sheet = this.spread.getSheet(0);
  17. sheetCommonObj.initSheet(sheet,this.setting,0);
  18. /* sheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onSelectionChange);
  19. sheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onEngineerInfoValueChange);
  20. sheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onEngineerInfoRangeChange);
  21. sheet.name('engineerInfo'); */
  22. if(projectReadOnly){
  23. sheetCommonObj.disableSpread(this.spread);
  24. }
  25. }else{
  26. this.spread.repaint();
  27. }
  28. },
  29. getSelectedData:function(){
  30. let sel = this.spread.getSheet(0).getSelections()[0];
  31. if(sel && gljUtil.isDef(sel.row)){
  32. return this.datas[sel.row]
  33. }
  34. return null;
  35. },
  36. showData:function(){
  37. let me = selectFBObject;
  38. billsGuidance.initBillsLibs(()=>{
  39. if(me.datas.length==0){
  40. for(let r of billsGuidance.bills.tree.roots){
  41. selectFBObject.setDatas(r);
  42. }
  43. }
  44. sheetCommonObj.showTreeData(me.spread.getSheet(0), me.setting, me.datas);
  45. });
  46. },
  47. setDatas:function(node){
  48. if(node.children.length > 0){//过滤叶子节点
  49. let nodeData = node.data;
  50. let d = {
  51. ID:nodeData.ID,
  52. ParentID:nodeData.ParentID,
  53. code:nodeData.code,
  54. name:nodeData.name,
  55. unit:nodeData.unit
  56. }
  57. this.datas.push(d);
  58. for(let c of node.children){
  59. this.setDatas(c)
  60. }
  61. }
  62. }
  63. }
  64. $(function () {
  65. $('#selectFBDiv').on('shown.bs.modal', function (e) {
  66. selectFBObject.initSpread();
  67. selectFBObject.showData();
  68. })
  69. $("#selectFBConfirm").click(async ()=>{
  70. let data = selectFBObject.getSelectedData();
  71. if(!data) return;
  72. let selected = projectObj.project.mainTree.selected;
  73. let datas = [{
  74. type:'bills',
  75. data:{
  76. ID:selected.data.ID,
  77. name:data.name,
  78. code:data.code,
  79. unit:data.unit
  80. }
  81. }]
  82. await projectObj.project.syncUpdateNodesAndRefresh(datas);
  83. })
  84. })