|  | @@ -0,0 +1,344 @@
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 聊天室相关
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @author CaiAoLin
 | 
	
		
			
				|  |  | + * @date 2017/6/15
 | 
	
		
			
				|  |  | + * @version
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +let header = [];
 | 
	
		
			
				|  |  | +let sheet = null;
 | 
	
		
			
				|  |  | +$(document).ready(function () {
 | 
	
		
			
				|  |  | +    // excel
 | 
	
		
			
				|  |  | +     header = [
 | 
	
		
			
				|  |  | +        {name: '编码', field: 'code', visible: true},
 | 
	
		
			
				|  |  | +        {name: '名称', field: 'name', visible: true},
 | 
	
		
			
				|  |  | +        {name: '规格型号', field: 'unit_price.specs', visible: true},
 | 
	
		
			
				|  |  | +        {name: '单位', field: 'unit_price.unit', visible: true},
 | 
	
		
			
				|  |  | +        {name: 'ID', field: 'id', visible: false},
 | 
	
		
			
				|  |  | +        {name: '类型', field: 'unit_price.type', visible: false},
 | 
	
		
			
				|  |  | +        {name: '总消耗量', field: '', visible: true},
 | 
	
		
			
				|  |  | +        {name: '基价单价', field: "unit_price.base_price", visible: true},
 | 
	
		
			
				|  |  | +        {name: '调整基价', field: 'adjust_price', visible: true},
 | 
	
		
			
				|  |  | +        {name: '市场单价', field: "unit_price.market_price", visible: true, validator: 'number'},
 | 
	
		
			
				|  |  | +        {name: '是否暂估', field: 'is_evaluate', visible: true, cellType: new GC.Spread.Sheets.CellTypes.CheckBox(),  validator: 'boolean'},
 | 
	
		
			
				|  |  | +        {name: '供货方式', field: 'supply', visible: true},
 | 
	
		
			
				|  |  | +        {name: '甲供数量', field: 'supply_quantity', visible: true},
 | 
	
		
			
				|  |  | +        {name: '交货方式', field: 'delivery', visible: true},
 | 
	
		
			
				|  |  | +        {name: '送达地点', field: 'delivery_address', visible: true},
 | 
	
		
			
				|  |  | +        {name: '不调价', field: 'is_adjust_price', visible: true, cellType: new GC.Spread.Sheets.CellTypes.CheckBox(),  validator: 'boolean'},
 | 
	
		
			
				|  |  | +        {name: 'UID', field: 'unit_price.id', visible: false},
 | 
	
		
			
				|  |  | +    ];
 | 
	
		
			
				|  |  | +    // 数据转换格式
 | 
	
		
			
				|  |  | +    let sourceData = JSON.parse(jsonData);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    let setting = {
 | 
	
		
			
				|  |  | +        header: []
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    for(let tmp of header) {
 | 
	
		
			
				|  |  | +        setting.header.push({headerName: tmp.name, headerWidth: 120});
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    let spread = sheetCommonObj.buildSheet(document.getElementById("test"), setting, sourceData.length);
 | 
	
		
			
				|  |  | +    spread.options.scrollbarShowMax = true;
 | 
	
		
			
				|  |  | +    spread.options.scrollbarMaxAlign = true;
 | 
	
		
			
				|  |  | +    spread.options.showHorizontalScrollbar = true;
 | 
	
		
			
				|  |  | +    sheet = spread.getActiveSheet();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 设置表单不可编辑
 | 
	
		
			
				|  |  | +    sheet.options.isProtected = true;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 居中样式
 | 
	
		
			
				|  |  | +    let centerStyleSetting = {hAlign: 1};
 | 
	
		
			
				|  |  | +    sheet.setStyle(-1, 10, getStyle(centerStyleSetting), GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +    sheet.setStyle(-1, 15, getStyle(centerStyleSetting), GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +    sheet.setStyle(-1, 3, getStyle(centerStyleSetting), GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 向右对齐样式
 | 
	
		
			
				|  |  | +    let rightStyleSetting = {hAlign: GC.Spread.Sheets.HorizontalAlign.right};
 | 
	
		
			
				|  |  | +    sheet.setStyle(-1, 6, getStyle(rightStyleSetting), GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +    sheet.setStyle(-1, 7, getStyle(rightStyleSetting), GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +    sheet.setStyle(-1, 8, getStyle(rightStyleSetting), GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +    sheet.setStyle(-1, 9, getStyle(rightStyleSetting), GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 设置可编辑列
 | 
	
		
			
				|  |  | +    sheet.getRange(-1, 9, -1, 1).locked(false);
 | 
	
		
			
				|  |  | +    sheet.getRange(-1, 10, -1, 1).locked(false);
 | 
	
		
			
				|  |  | +    sheet.getRange(-1, 15, -1, 1).locked(false);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 设置json数据
 | 
	
		
			
				|  |  | +    let rowCounter = 0;
 | 
	
		
			
				|  |  | +    for(let data of sourceData) {
 | 
	
		
			
				|  |  | +        let columnCounter = 0;
 | 
	
		
			
				|  |  | +        for(let columnInfo of header) {
 | 
	
		
			
				|  |  | +            // 设置是否显示
 | 
	
		
			
				|  |  | +            sheet.setColumnVisible(columnCounter, columnInfo.visible);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            let dataString = columnInfo.field !== '' && columnInfo.field !== undefined ?
 | 
	
		
			
				|  |  | +                "data." + columnInfo.field : '';
 | 
	
		
			
				|  |  | +            let cellData = eval(dataString);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 设置复选框
 | 
	
		
			
				|  |  | +            if (columnInfo.cellType !== undefined) {
 | 
	
		
			
				|  |  | +                let checkbox = new GC.Spread.Sheets.CellTypes.CheckBox();
 | 
	
		
			
				|  |  | +                sheet.setCellType(rowCounter, columnCounter, checkbox, GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 如果不为材料“是否暂估列”根据条件显示
 | 
	
		
			
				|  |  | +            if (columnInfo.field === 'is_evaluate' && materialIdList.indexOf(data.unit_price.type + '') < 0) {
 | 
	
		
			
				|  |  | +                let string = new GC.Spread.Sheets.CellTypes.Text();
 | 
	
		
			
				|  |  | +                sheet.setCellType(rowCounter, columnCounter, string, GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +                cellData = '';
 | 
	
		
			
				|  |  | +                // 并且锁定该单元格
 | 
	
		
			
				|  |  | +                sheet.getRange(rowCounter, columnCounter, 1, 1).locked(true);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 如果类型为混凝土、砂浆、配合比、机械,则市场单价不能修改
 | 
	
		
			
				|  |  | +            if (columnInfo.field === 'unit_price.market_price' && canNotChangeTypeId.indexOf(data.unit_price.type + '') >= 0) {
 | 
	
		
			
				|  |  | +                // 锁定该单元格
 | 
	
		
			
				|  |  | +                sheet.getRange(rowCounter, columnCounter, 1, 1).locked(true);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            sheet.setValue(rowCounter, columnCounter, cellData, GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +            columnCounter++;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        rowCounter++;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | +    let socket = io('http://notify.smartcost.com.cn:3300');
 | 
	
		
			
				|  |  | +    socket.on('connect', function () {
 | 
	
		
			
				|  |  | +        socket.emit('join', project);
 | 
	
		
			
				|  |  | +        console.log('连接成功');
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 接受到改变
 | 
	
		
			
				|  |  | +    let changeInfo = [];
 | 
	
		
			
				|  |  | +    socket.on('dataChange', function(data) {
 | 
	
		
			
				|  |  | +        data = JSON.parse(data);
 | 
	
		
			
				|  |  | +        if (data.newValue === undefined) {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        changeInfo.push(data);
 | 
	
		
			
				|  |  | +        $("#message").html('基价单位已被修改,<a href="javascript:void(0);" id="load-data">点击加载</a>');
 | 
	
		
			
				|  |  | +        $("#notify").slideDown('fast');
 | 
	
		
			
				|  |  | +        initiativeChange = false;
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 是否主动更改数据
 | 
	
		
			
				|  |  | +    let initiativeChange = false;
 | 
	
		
			
				|  |  | +    $("#message").on('click', '#load-data', function() {
 | 
	
		
			
				|  |  | +        $("#notify").slideUp('fast');
 | 
	
		
			
				|  |  | +        if (changeInfo.length > 0) {
 | 
	
		
			
				|  |  | +            for (let index in changeInfo) {
 | 
	
		
			
				|  |  | +                let cell = sheet.getCell(changeInfo[index].row, changeInfo[index].col, GC.Spread.Sheets.SheetArea.viewport);
 | 
	
		
			
				|  |  | +                cell.value(changeInfo[index].newValue);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        changeInfo = [];
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 进入单元格后设置为主动设置数据
 | 
	
		
			
				|  |  | +    sheet.bind(GC.Spread.Sheets.Events.EditEnding, function (element, info) {
 | 
	
		
			
				|  |  | +        initiativeChange = true;
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +    // 绑定事件
 | 
	
		
			
				|  |  | +    let isChanging = false;
 | 
	
		
			
				|  |  | +    sheet.bind(GC.Spread.Sheets.Events.ValueChanged, function (element, info) {
 | 
	
		
			
				|  |  | +        // 获取修改的数据
 | 
	
		
			
				|  |  | +        let column = info.col;
 | 
	
		
			
				|  |  | +        let row = info.row;
 | 
	
		
			
				|  |  | +        let model = 'glj';
 | 
	
		
			
				|  |  | +        let idString = 'id';
 | 
	
		
			
				|  |  | +        let field = header[column] !== undefined && header[column].field !== undefined ?
 | 
	
		
			
				|  |  | +            header[column].field : '';
 | 
	
		
			
				|  |  | +        if (field === '') {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 切割字段
 | 
	
		
			
				|  |  | +        let fieldArray = field.split('.');
 | 
	
		
			
				|  |  | +        idString = fieldArray.length > 1 ? 'unit_price.id' : idString;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 防止快速同时提交
 | 
	
		
			
				|  |  | +        if (isChanging) {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // 校验数据
 | 
	
		
			
				|  |  | +        let validator = header[column].validator !== undefined ? header[column].validator : null;
 | 
	
		
			
				|  |  | +        let value = info.newValue;
 | 
	
		
			
				|  |  | +        if (validator && !checkData(validator, value)) {
 | 
	
		
			
				|  |  | +            alert('数据格式错误,请重新输入!');
 | 
	
		
			
				|  |  | +            sheet.setValue(row, column, info.oldValue);
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 获取id
 | 
	
		
			
				|  |  | +        let idColumn = getFieldColumn(header, idString);
 | 
	
		
			
				|  |  | +        if (idColumn < 0) {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        let id = sheet.getValue(row, idColumn);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $.ajax({
 | 
	
		
			
				|  |  | +            url: '/glj/update',
 | 
	
		
			
				|  |  | +            type: 'post',
 | 
	
		
			
				|  |  | +            data: {id: id, field: field, value: value, model: model},
 | 
	
		
			
				|  |  | +            dataType: 'json',
 | 
	
		
			
				|  |  | +            error: function() {
 | 
	
		
			
				|  |  | +                alert('数据传输有误!');
 | 
	
		
			
				|  |  | +                isChanging = false;
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            beforeSend: function() {
 | 
	
		
			
				|  |  | +                isChanging = true;
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            success: function(response) {
 | 
	
		
			
				|  |  | +                isChanging = false;
 | 
	
		
			
				|  |  | +                // 修改失败则恢复原值
 | 
	
		
			
				|  |  | +                if (response.err !== 0) {
 | 
	
		
			
				|  |  | +                    sheet.setValue(row, column, info.oldValue);
 | 
	
		
			
				|  |  | +                    alert('更改数据失败!');
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    // 成功则触发相应事件
 | 
	
		
			
				|  |  | +                    successTrigger(field, info);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        /*
 | 
	
		
			
				|  |  | +        // 如果修改了数据且为主动修改,先存库再广播给其他页面
 | 
	
		
			
				|  |  | +        if (info.newValue !== undefined && info.oldValue !== undefined && initiativeChange) {
 | 
	
		
			
				|  |  | +            let id = sheet.getCell(info.row, 0).value();
 | 
	
		
			
				|  |  | +            $.ajax({
 | 
	
		
			
				|  |  | +                url: '/save',
 | 
	
		
			
				|  |  | +                type: 'post',
 | 
	
		
			
				|  |  | +                data: {priceValue: info.newValue, id: id},
 | 
	
		
			
				|  |  | +                error: function() {
 | 
	
		
			
				|  |  | +                    // @todo 替换为更好地错误提示
 | 
	
		
			
				|  |  | +                    alert('error');
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                beforeSend: function() {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                success: function(response) {
 | 
	
		
			
				|  |  | +                    if (response.err === 0) {
 | 
	
		
			
				|  |  | +                        socket.emit('dataNotify', JSON.stringify(info));
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        // @todo 替换为更好地错误提示
 | 
	
		
			
				|  |  | +                        alert(response.msg);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        */
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 绑定双击事件
 | 
	
		
			
				|  |  | +    sheet.bind(GC.Spread.Sheets.Events.CellDoubleClick, function (element, info) {
 | 
	
		
			
				|  |  | +        let column = info.col;
 | 
	
		
			
				|  |  | +        let row = info.row;
 | 
	
		
			
				|  |  | +        let field = header[column] !== undefined && header[column].field !== undefined ?
 | 
	
		
			
				|  |  | +            header[column].field : '';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 获取类型
 | 
	
		
			
				|  |  | +        let typeColumn = getFieldColumn(header, 'unit_price.type');
 | 
	
		
			
				|  |  | +        let type = sheet.getValue(row, typeColumn);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 如果类型为混凝土、砂浆、配合比、机械,则提示
 | 
	
		
			
				|  |  | +        if (field === 'unit_price.market_price' && canNotChangeTypeId.indexOf(type + '') >= 0) {
 | 
	
		
			
				|  |  | +            alert('当前工料机的市场单价由组成物计算得出,不可直接修改');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 生成样式
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @param {object} setting
 | 
	
		
			
				|  |  | + * @return {object}
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +function getStyle(setting) {
 | 
	
		
			
				|  |  | +    let style = new GC.Spread.Sheets.Style();
 | 
	
		
			
				|  |  | +    style.locked = setting.readOnly === undefined ? true : setting.readOnly;
 | 
	
		
			
				|  |  | +    style.hAlign = setting.hAlign === undefined ? GC.Spread.Sheets.HorizontalAlign.center : setting.hAlign;
 | 
	
		
			
				|  |  | +    return style;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 查找指定字段的列index
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @param {object} data
 | 
	
		
			
				|  |  | + * @param {String} field
 | 
	
		
			
				|  |  | + * @return {Number}
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +function getFieldColumn(data, field) {
 | 
	
		
			
				|  |  | +    let result = -1;
 | 
	
		
			
				|  |  | +    if (data.length <= 0) {
 | 
	
		
			
				|  |  | +        return result;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    for (let tmp in data) {
 | 
	
		
			
				|  |  | +        if (data[tmp].field === field) {
 | 
	
		
			
				|  |  | +            result = tmp;
 | 
	
		
			
				|  |  | +            break;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return result;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 校验数据
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @param {string} validator
 | 
	
		
			
				|  |  | + * @param {string} value
 | 
	
		
			
				|  |  | + * @return {boolean}
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +function checkData(validator, value) {
 | 
	
		
			
				|  |  | +    let result = false;
 | 
	
		
			
				|  |  | +    switch (validator) {
 | 
	
		
			
				|  |  | +        case 'number':
 | 
	
		
			
				|  |  | +            let regular = /^\d+(\.\d+)?$/;
 | 
	
		
			
				|  |  | +            result = regular.test(value);
 | 
	
		
			
				|  |  | +            break;
 | 
	
		
			
				|  |  | +        case 'boolean':
 | 
	
		
			
				|  |  | +            let booleanValue = [true, false];
 | 
	
		
			
				|  |  | +            result = booleanValue.indexOf(value) >= 0;
 | 
	
		
			
				|  |  | +            break;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return result;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 成功事件
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @param {string} field
 | 
	
		
			
				|  |  | + * @param {object} info
 | 
	
		
			
				|  |  | + * @return {void}
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +function successTrigger(field, info) {
 | 
	
		
			
				|  |  | +    switch (field) {
 | 
	
		
			
				|  |  | +        case 'unit_price.market_price':
 | 
	
		
			
				|  |  | +            let row = info.row;
 | 
	
		
			
				|  |  | +            let basePriceColumn = getFieldColumn(header, 'unit_price.base_price');
 | 
	
		
			
				|  |  | +            let adjustPriceColumn = getFieldColumn(header, 'adjust_price');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 获取类型
 | 
	
		
			
				|  |  | +            let typeColumn = getFieldColumn(header, 'unit_price.type');
 | 
	
		
			
				|  |  | +            let type = sheet.getValue(row, typeColumn);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 主材、设备自动赋值基价单价=市场单价、调整基价=市场单价
 | 
	
		
			
				|  |  | +            if (autoChangeGLJType.indexOf(type + '') >= 0) {
 | 
	
		
			
				|  |  | +                sheet.setValue(info.row, basePriceColumn, info.newValue);
 | 
	
		
			
				|  |  | +                sheet.setValue(info.row, adjustPriceColumn, info.newValue);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 人工、材料(普通材料)触发 需计算混凝土、砂浆、配合比、机械的市场单价 @todo 后续添加
 | 
	
		
			
				|  |  | +            if (triggerCalculateGLJType.indexOf(type + '') >= 0) {
 | 
	
		
			
				|  |  | +                // 计算
 | 
	
		
			
				|  |  | +                console.log('触发计算');
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            break;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |