123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- /**
- * Created by zhang on 2018/11/26.
- */
- let mbzm_obj={
- spread:null,
- nodeChanged:false,
- datas:[],
- setting:{
- header: [
- {headerName: "编码", headerWidth: 130, dataCode: "code", dataType: "String", formatter: "@"},
- {headerName: "模板类别", headerWidth: 260, dataCode: "name", dataType: "String", hAlign: "left"},
- {headerName: "系数", headerWidth: 65, dataCode: "coe", dataType: "Number",validator:"number"},
- {headerName: "单位", headerWidth: 45, dataCode: "unit", dataType: "String", hAlign: "center"},
- {headerName: "工程量", headerWidth: 65, dataCode: "quantity", dataType: "Number",validator:"number"},
- {headerName: "关联类别", headerWidth: 100, dataCode: "type", dataType: "String"},
- {headerName: "清单位置", headerWidth: 200, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton',getText:'forPosition'},
- ],
- view: {
- lockColumns:["code","name","unit","type","fxID"],
- rowHeaderWidth:25
- },
- getText:{
- forPosition:function (item) {
- let createL = $('#createLocation').val();
- if(createL == 1) return mbzm_obj.getDisplayText(item.billID,item.billsLocation);
- if(createL == 2) return mbzm_obj.getDisplayText(item.fxID,"");
- return ""
- }
- }
- },
- getDisplayText:function (billID,position) {
- if(billID && billID!=''){
- let node = projectObj.project.mainTree.getNodeByID(billID);
- if(node){
- let code = node.data.code?node.data.code:"";
- let name = node.data.name?node.data.name:"";
- return code +" "+name;
- }
- }
- return position;
- },
- //当点击应用的时候才保存数据
- initSpread:function () {
- this.spread = SheetDataHelper.createNewSpread($("#mbzmSpread")[0]);
- sheetCommonObj.spreadDefaultStyle(this.spread);
- this.sheet = this.spread.getSheet(0);
- sheetCommonObj.initSheet(this.sheet, this.setting);
- this.sheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onSheetValueChange);
- this.spread.bind(GC.Spread.Sheets.Events.ButtonClicked, installationFeeObj.onPositionButtonClick);//共用一个位置选择器
- this.sheet.name('ration_template');
- },
- refresh:function () {
- let total = $('#mbzmSpread').parent().height();
- let b_height = $('#mbzmSpread').prev('.col-12').height();
- $('#mbzmSpread').css('height',total- b_height);
- this.spread?this.spread.refresh():this.initSpread();
- },
- refreshSheetData:function () {
- sheetCommonObj.showData(this.sheet, this.setting,this.datas);
- },
- showMBZMData:function(node){
- let selected = node?node:projectObj.project.mainTree.selected;
- if(this.nodeChanged == true){//选中的行改变了才做初始化,刷新当前缓存, 在project_view 中treeSelectedChanged方法里设置
- let datas = [];
- $("#createLocation").val(1);//初始化
- if(selected&&selected.sourceType == "ration"){
- let ration = selected.data;
- let template = projectObj.project.ration_template.getTemplateByRationID(ration.ID);
- if(template) {
- $("#createLocation").val(template.createLocation);
- let pcol = _.findIndex(this.setting.header,{dataCode:"position"});
- this.setting.header[pcol].visible = template.createLocation == 3?false:true;
- datas = _.cloneDeep(template.templateList);
- }
- }
- this.datas = datas;
- this.nodeChanged = false;//这里要恢复成false 应为调用gljObj.refresh() 方法也会进到这里来,这时节点应是没有改变的
- }
- sheetCommonObj.showData(this.sheet, this.setting,this.datas);
- this.sheet.setRowCount(this.datas.length);
- },
- onSheetValueChange:function (e,info) {
- let me = mbzm_obj;
- let selected = projectObj.project.mainTree.selected;
- let row = info.row, col = info.col;
- let dataCode = me.setting.header[col].dataCode;
- let recode = me.datas[row], value = info.newValue;
- if (info.newValue === undefined) {
- return;
- }
- if (value && !sheetCommonObj.checkData(col, me.setting, value)) {
- alert('输入的数据类型不对,请重新输入!');
- me.refreshSheetData();
- return;
- }
- if (dataCode === 'coe') {//默认为0,可输入数值,输入数值后,后面的工程量=混凝土子目工程量*系数。
- let rationQuantity = selected.data.quantity;
- rationQuantity = rationQuantity?scMathUtil.roundForObj(rationQuantity, getDecimal('ration.quantity')):0;
- value = scMathUtil.roundForObj(value, getDecimal('process'));
- recode["quantity"] = scMathUtil.roundForObj(rationQuantity * value, getDecimal('ration.quantity'))+"";
- }
- if (dataCode === 'quantity') {//定额默认显示为0,可输入数值,输入数值后,则清空前面的系数列
- value = scMathUtil.roundForObj(value, getDecimal('ration.quantity'))+"";
- recode["coe"] = "0";
- }
- recode[dataCode] = value;
- me.refreshSheetData();
- }
- };
- $('#createLocation').change(function(){
- let me = mbzm_obj;
- let pcol = _.findIndex(me.setting.header,{dataCode:"position"});
- me.setting.header[pcol].visible = $(this).val() == 3?false:true;
- me.refreshSheetData();
- });
|