123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- /**
- * Created by zhang on 2018/3/13.
- */
- projectGljObject={
- projectGljSetting:{
- header: [
- {headerName: "编码", headerWidth: 80, dataCode: "code", dataType: "String"},
- {headerName: "名称", headerWidth: 160, dataCode: "name", dataType: "String"},
- {headerName: "规格型号", headerWidth: 120, dataCode: "specs", hAlign: "left", dataType: "String"},
- {headerName: "单位", headerWidth: 45, dataCode: "unit", hAlign: "center", dataType: "String"},
- {headerName: "类型", headerWidth: 45, dataCode: "short_name", hAlign: "center", dataType: "String"},
- {headerName: "总消耗量", headerWidth: 100, dataCode: "quantity", hAlign: "right", dataType: "Number",decimalField:'glj.quantity'},
- {headerName: "定额价", headerWidth: 70, dataCode: "basePrice", hAlign: "right", dataType: "Number",decimalField:'glj.quantity',validator:"number"},
- {headerName: "调整价", headerWidth: 70, dataCode: "adjustPrice", hAlign: "right", dataType: "Number",decimalField:"glj.unitPrice"},
- {headerName: "市场价", headerWidth: 70, dataCode: "marketPrice", hAlign: "right", dataType: "Number",decimalField:"glj.unitPrice",validator:"number"},
- {headerName: "是否暂估", headerWidth: 60, dataCode: "is_evaluate", hAlign: "center", dataType: "String",cellType:'checkBox'},
- {headerName: "供货方式", headerWidth: 80, dataCode: "supply", hAlign: "center", dataType: "String",cellType:'comboBox',editorValueType:true,options:supplyComboMap},
- {headerName: "甲供数量", headerWidth: 100, dataCode: "supply_quantity", hAlign: "right", dataType: "String",validator:"number"},
- {headerName: "交货方式", headerWidth: 90, dataCode: "delivery", hAlign: "left", dataType: "String"},
- {headerName: "送达地点", headerWidth: 100, dataCode: "delivery_address", hAlign: "left", dataType: "String"},
- {headerName: "不调价", headerWidth: 55, dataCode: "is_adjust_price", dataType: "String",cellType: "checkBox"}
- ],
- view: {
- lockColumns: [0,1,2,3,4,5,7,12,13]
- }
- },
- projectGljSpread:null,
- projectGljSheet:null,
- projectGljSheetData:[],
- mixRatioSetting:{
- header:[
- {headerName: "编码", headerWidth: 80, dataCode: "code", dataType: "String"},
- {headerName: "名称", headerWidth: 160, dataCode: "name", dataType: "String"},
- {headerName: "单位", headerWidth: 45, dataCode: "unit", hAlign: "center", dataType: "String"},
- {headerName: "类型", headerWidth: 45, dataCode: "short_name", hAlign: "center", dataType: "String"},
- {headerName: "定额价", headerWidth: 70, dataCode: "basePrice", hAlign: "right", dataType: "Number",decimalField:'glj.quantity',validator:"number"},
- {headerName: "调整价", headerWidth: 70, dataCode: "adjustPrice", hAlign: "right", dataType: "Number",decimalField:"glj.unitPrice"},
- {headerName: "市场价", headerWidth: 70, dataCode: "marketPrice", hAlign: "right", dataType: "Number",decimalField:"glj.unitPrice",validator:"number"}
- ],
- view: {
- lockColumns: [0,1]
- }
- },
- mixRatioSpread:null,
- mixRatioSheet:null,
- mixRatioData:[],
- initProjectGljSpread:function () {
- this.projectGljSpread = SheetDataHelper.createNewSpread($("#project_glj_sheet")[0]);
- this.projectGljSheet = this.projectGljSpread .getSheet(0);
- this.initSheet(this.projectGljSheet,this.projectGljSetting);
- this.projectGljSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onProjectGljSelectionChange);
- this.projectGljSheet.bind(GC.Spread.Sheets.Events.EditStarting,this.onProjectGljEditStarting);
- this.projectGljSheet.name('projectGljSheet');
- },
- onProjectGljEditStarting:function (sender, args) {
- let me = projectGljObject;
- let row = args.row;
- let col = args.col;
- let dataCode = me.projectGljSetting.header[col].dataCode;
- if(dataCode=='is_adjust_price'||dataCode=='is_evaluate'){
- args.cancel = true;
- }
- },
- onProjectGljSelectionChange:function (sender, args) {
- let me = projectGljObject;
- let row = args.newSelections[0].row;
- let col = args.newSelections[0].col;
- let data = me.projectGljSheetData[row];
- let dataCode = me.projectGljSetting.header[col].dataCode;
- if(dataCode=='basePrice'||dataCode=='marketPrice'||dataCode=='supply'){//有组成物时,市场单价、定额价、供货方式不能修改
- let priceCell = false;
- if (data.ratio_data && data.ratio_data.length > 0){
- priceCell = true;
- }
- if(priceCell==false&&dataCode=='basePrice'&&data.is_add!=1){//如果不是新增,定额价不可修改。
- priceCell = true;
- }
- me.projectGljSheet.getCell(row, col, GC.Spread.Sheets.SheetArea.viewport).locked(priceCell);
- }
- if(dataCode == 'supply_quantity'){
- if (data.supply == 1) {// 如果为部分甲供则甲供数量需要可编辑
- me.projectGljSheet.getCell(row, col, GC.Spread.Sheets.SheetArea.viewport).locked(false);
- }else {
- me.projectGljSheet.getCell(row, col, GC.Spread.Sheets.SheetArea.viewport).locked(true);
- }
- }
- me.projectGljSheet.repaint();
- },
- showProjectGljData:function () {
- let projectGljSheetData = [];
- let gljList = projectObj.project.projectGLJ.datas.gljList;
- gljList = filterProjectGLJ(gljList);
- gljList = sortProjectGLJ(gljList);
- for(let glj of gljList){
- projectGljSheetData.push(this.getSheetDataByGLJ(glj));
- }
- this.projectGljSheetData = projectGljSheetData;
- this.projectGljSheet.setRowCount(0);
- sheetCommonObj.showData(this.projectGljSheet, this.projectGljSetting,this.projectGljSheetData);
- this.projectGljSheet.setRowCount(this.projectGljSheetData.length);
- },
- getSheetDataByGLJ:function (glj) {
- let projectGLJ = projectObj.project.projectGLJ;
- let materialIdList = projectGLJ.datas.constData.materialIdList;
- let data ={
- id:glj.id,
- code:glj.code,
- name:glj.name,
- specs:glj.specs,
- unit:glj.unit,
- type:glj.type,
- short_name:projectGLJ.getShortNameByID(glj.type),
- quantity:glj.quantity,
- supply:glj.supply,
- supply_quantity:glj.supply_quantity,
- delivery:glj.delivery,
- delivery_address:glj.delivery_address,
- is_adjust_price:glj.is_adjust_price,
- ratio_data:glj.ratio_data,
- is_add:glj.unit_price.is_add,
- bgColour:'white'
- };
- gljOprObj.setGLJPrice(data,glj);
- //供货方式为完全甲供时设置甲供数量为总消耗量
- if (data.supply == 2) {
- data.supply_quantity = glj.quantity;
- }
- // 只有材料才显示是否暂估
- if (materialIdList.indexOf(glj.type) >= 0) {
- data.is_evaluate = glj.is_evaluate;
- }
- //bgColour
- if(data.basePrice == data.marketPrice){//如果定额价等于市场价时,改底色。 优先度低于有组成物时的底色
- data.bgColour = "#C4CAFB";
- }
- if (notEditType.indexOf(glj.type) >= 0) {
- if (data.ratio_data && data.ratio_data.length > 0){//有组成物时
- //设置底色
- data.bgColour = "#E0E0E0";
- }
- }
- return data;
- },
- refreshProjectGljRow:function (row) {
- let me = projectGljObject;
- let rowData = me.projectGljSheetData[row];
- let glj = projectObj.project.projectGLJ.getByID(rowData.id);
- if(glj){
- me.projectGljSheetData[row] = me.getSheetDataByGLJ(glj);
- }
- sheetCommonObj.showRowData(this.projectGljSheet, this.projectGljSetting,row,this.projectGljSheetData);
- },
- initSheet: function (sheet,setting) {
- var me = this;
- sheetCommonObj.initSheet(sheet, setting, 30);
- sheet.bind(GC.Spread.Sheets.Events.ValueChanged, me.onSheetValueChange);
- },
- onSheetValueChange:function (e,info) {
- let me = projectGljObject;
- if(info.sheetName=='projectGljSheet'){
- me.onProjectGLJValueChange(e,info);
- }
- },
- onProjectGLJValueChange:function (e,info) {
- let projectGLJ = projectObj.project.projectGLJ;
- let me = projectGljObject,row = info.row, col = info.col;
- let dataCode = me.projectGljSetting.header[col].dataCode;
- let recode = me.projectGljSheetData[row];
- let value = info.newValue;
- if (!me.checkData(col,me.projectGljSetting,value)) {
- alert('输入的数据类型不对,请重新输入!');
- return ;
- }
- let callback=function (impactList) {
- info.sheet.suspendPaint();
- info.sheet.suspendEvent();
- me.refreshProjectGljRow(row);
- for(let g of impactList){
- let index = _.findIndex(me.projectGljSheetData, { 'id': g.id });
- if(index>=0&&index != row){
- me.refreshProjectGljRow(index);
- }
- }
- info.sheet.resumeEvent();
- info.sheet.resumePaint();
- };
- if(dataCode=='basePrice'||dataCode=='marketPrice'){
- value= scMathUtil.roundForObj(value,getDecimal('glj.unitPrice'));//修改市场价和修改定额价时需要重新记算很多受影响的树节点,现在改成与定字额工料机那里调相同的方法。
- let editField = dataCode === 'basePrice'?"base_price":"market_price";
- projectObj.project.projectGLJ.updatePrice(recode,editField,value,'pg',callback);
- }else {
- let extend = {};
- // 如果是供货方式则需要处理数据
- if (dataCode === 'supply') {
- extend.supply_quantity = me.getSupplyQuantity(value, recode.quantity);
- }
- if(dataCode === 'supply_quantity'){//修改数量需做4舍5入
- value= value.toDecimal(getDecimal('glj.quantity'));
- }
- if(dataCode === 'is_evaluate'||dataCode === 'is_adjust_price'){
- if(value == true){
- value = 1;
- }else if(value == false){
- value = 0;
- }
- }
- extend = Object.keys(extend).length > 0 ? JSON.stringify(extend) : '';
- let updateData = {id: recode.id, field: dataCode, value: value, extend: extend};
- projectGLJ.pGljUpdate(updateData,callback);
- }
- },
- getSupplyQuantity : function(supplyType, quantity) {
- // 自行采购和甲定乙供则把甲供数量设置为0,其余情况则设置为当前总消耗量
- let supplyQuantity = supplyType == 0 || supplyType == 3 ? 0 : quantity;
- supplyQuantity = parseFloat(supplyQuantity);
- return supplyQuantity;
- },
- checkData : function(col,setting, value) {
- let result = true;
- let validator = setting.header[col].validator !== undefined ? setting.header[col].validator : null;
- if (validator === null) {
- return result;
- }
- 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;
- }
- };
- $(function () {
- $('#tab_project_glj').on('show.bs.tab', function (e) {
- let me = projectGljObject;
- $(e.relatedTarget.hash).removeClass('active');
- setTimeout(function () {
- if(me.projectGljSpread==null){
- me.initProjectGljSpread();
- }
- me.showProjectGljData();
- loadSize("project-glj-main", function () {
- me.projectGljSpread.refresh();
- });
- },1)
- });
- slideResize($("#project-glj-main"), function () {
- projectGljObject.projectGljSpread.refresh();
- });
- });
|