mbzm_view.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /**
  2. * Created by zhang on 2018/11/26.
  3. */
  4. let mbzm_obj={
  5. spread:null,
  6. nodeChanged:false,
  7. datas:[],
  8. setting:{
  9. header: [
  10. {headerName: "编码", headerWidth: 130, dataCode: "code", dataType: "String", formatter: "@"},
  11. {headerName: "模板类别", headerWidth: 260, dataCode: "name", dataType: "String", hAlign: "left"},
  12. {headerName: "系数", headerWidth: 65, dataCode: "coe", dataType: "Number",validator:"number"},
  13. {headerName: "单位", headerWidth: 45, dataCode: "unit", dataType: "String", hAlign: "center"},
  14. {headerName: "工程量", headerWidth: 65, dataCode: "quantity", dataType: "Number",validator:"number"},
  15. {headerName: "关联类别", headerWidth: 100, dataCode: "type", dataType: "String"},
  16. {headerName: "清单位置", headerWidth: 200, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton',getText:'forPosition'},
  17. ],
  18. view: {
  19. lockColumns:["code","name","unit","type","fxID"],
  20. rowHeaderWidth:25
  21. },
  22. getText:{
  23. forPosition:function (item) {
  24. let createL = $('#createLocation').val();
  25. if(createL == 1) return mbzm_obj.getDisplayText(item.billID,item.billsLocation);
  26. if(createL == 2) return mbzm_obj.getDisplayText(item.fxID,"");
  27. return ""
  28. }
  29. }
  30. },
  31. getDisplayText:function (billID,position) {
  32. if(billID && billID!=''){
  33. let node = projectObj.project.mainTree.getNodeByID(billID);
  34. if(node){
  35. let code = node.data.code?node.data.code:"";
  36. let name = node.data.name?node.data.name:"";
  37. return code +" "+name;
  38. }
  39. }
  40. return position;
  41. },
  42. //当点击应用的时候才保存数据
  43. initSpread:function () {
  44. this.spread = SheetDataHelper.createNewSpread($("#mbzmSpread")[0]);
  45. sheetCommonObj.spreadDefaultStyle(this.spread);
  46. this.sheet = this.spread.getSheet(0);
  47. sheetCommonObj.initSheet(this.sheet, this.setting);
  48. this.sheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onSheetValueChange);
  49. this.spread.bind(GC.Spread.Sheets.Events.ButtonClicked, installationFeeObj.onPositionButtonClick);//共用一个位置选择器
  50. this.sheet.name('ration_template');
  51. },
  52. refresh:function () {
  53. let total = $('#mbzmSpread').parent().height();
  54. let b_height = $('#mbzmSpread').prev('.col-12').height();
  55. $('#mbzmSpread').css('height',total- b_height);
  56. this.spread?this.spread.refresh():this.initSpread();
  57. },
  58. refreshSheetData:function () {
  59. sheetCommonObj.showData(this.sheet, this.setting,this.datas);
  60. },
  61. showMBZMData:function(node){
  62. let selected = node?node:projectObj.project.mainTree.selected;
  63. if(this.nodeChanged == true){//选中的行改变了才做初始化,刷新当前缓存, 在project_view 中treeSelectedChanged方法里设置
  64. let datas = [];
  65. $("#createLocation").val(1);//初始化
  66. if(selected&&selected.sourceType == "ration"){
  67. let ration = selected.data;
  68. let template = projectObj.project.ration_template.getTemplateByRationID(ration.ID);
  69. if(template) {
  70. $("#createLocation").val(template.createLocation);
  71. let pcol = _.findIndex(this.setting.header,{dataCode:"position"});
  72. this.setting.header[pcol].visible = template.createLocation == 3?false:true;
  73. datas = _.cloneDeep(template.templateList);
  74. }
  75. }
  76. this.datas = datas;
  77. this.nodeChanged = false;//这里要恢复成false 应为调用gljObj.refresh() 方法也会进到这里来,这时节点应是没有改变的
  78. }
  79. sheetCommonObj.showData(this.sheet, this.setting,this.datas);
  80. this.sheet.setRowCount(this.datas.length);
  81. },
  82. onSheetValueChange:function (e,info) {
  83. let me = mbzm_obj;
  84. let selected = projectObj.project.mainTree.selected;
  85. let row = info.row, col = info.col;
  86. let dataCode = me.setting.header[col].dataCode;
  87. let recode = me.datas[row], value = info.newValue;
  88. if (info.newValue === undefined) {
  89. return;
  90. }
  91. if (value && !sheetCommonObj.checkData(col, me.setting, value)) {
  92. alert('输入的数据类型不对,请重新输入!');
  93. me.refreshSheetData();
  94. return;
  95. }
  96. if (dataCode === 'coe') {//默认为0,可输入数值,输入数值后,后面的工程量=混凝土子目工程量*系数。
  97. let rationQuantity = selected.data.quantity;
  98. rationQuantity = rationQuantity?scMathUtil.roundForObj(rationQuantity, getDecimal('ration.quantity')):0;
  99. value = scMathUtil.roundForObj(value, getDecimal('process'));
  100. recode["quantity"] = scMathUtil.roundForObj(rationQuantity * value, getDecimal('ration.quantity'))+"";
  101. }
  102. if (dataCode === 'quantity') {//定额默认显示为0,可输入数值,输入数值后,则清空前面的系数列
  103. value = scMathUtil.roundForObj(value, getDecimal('ration.quantity'))+"";
  104. recode["coe"] = "0";
  105. }
  106. recode[dataCode] = value;
  107. me.refreshSheetData();
  108. }
  109. };
  110. $('#createLocation').change(function(){
  111. let me = mbzm_obj;
  112. let pcol = _.findIndex(me.setting.header,{dataCode:"position"});
  113. me.setting.header[pcol].visible = $(this).val() == 3?false:true;
  114. me.refreshSheetData();
  115. });