123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- /**
- * Created by zhang on 2018/8/23.
- */
- let materialOjb = {
- billsSpread:null,
- materialSpread:null,
- billsList:JSON.parse(billsList),
- billsSetting:{
- header: [
- {headerName: "清单编号", headerWidth: 180, dataCode: "code", dataType: "String",formatter: "@"},
- {headerName: "清单名称", headerWidth: 240, dataCode: "name", dataType: "String"},
- {headerName: "规则", headerWidth: 150, dataCode: "rule", hAlign: "left", dataType: "String",cellType:'comboBox',editorValueType:true,options:[{text:"规则1",value:1},{text:"规则2",value:2}]}
- ],
- view: {
- lockColumns: [1]
- },
- headerHeight:45
- },
- materialSetting:{
- header: [
- {headerName: "材料编号", headerWidth: 180, dataCode: "code", dataType: "String"},
- {headerName: "材料名称", headerWidth: 240, dataCode: "name", dataType: "String",cellType:'tipsCell'},
- {headerName: "规格", headerWidth: 150, dataCode: "specs", hAlign: "left", dataType: "String",cellType:'tipsCell'}
- ],
- view: {
- lockColumns: [1,2]
- },
- headerHeight:45
- },
- initSpread:function () {
- if(!this.billsSpread){
- this.billsSpread = SheetDataHelper.createNewSpread($("#billsSpread")[0]);
- }
- if(!this.materialSpread){
- this.materialSpread = SheetDataHelper.createNewSpread($("#materialSpread")[0]);
- }
- this.billsSheet = this.billsSpread .getSheet(0);
- sheetCommonObj.initSheet(this.billsSheet,this.billsSetting, 30);
- this.billsSheet.name('billsSheet');
- this.billsSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onBillsValueChange);
- this.billsSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onBillsSelectionChange);
- this.initRightClick("billsSpread",this.billsSpread);
- this.materialSheet = this.materialSpread .getSheet(0);
- sheetCommonObj.initSheet(this.materialSheet,this.materialSetting, 30);
- this.materialSheet.name('materialSheet');
- this.initRightClick("materialSpread",this.materialSpread);
- this.refreshSheet();
- },
- canDelete : function (sheet) {
- let sel = sheet.getSelections()[0];
- console.log(sel);
- if(sel.row === undefined || sel.row < 0) return false ;//一行都没选中时,不能删除
- //选中空行时,不能删除
- // to do
- return true;
- },
- initRightClick : function(id,spread) {
- let me = this;
- $.contextMenu({
- selector: '#'+id,
- build: function ($trigger, e) {
- me.rightClickTarget = SheetDataHelper.safeRightClickSelection($trigger, e, spread);
- return me.rightClickTarget.hitTestType === GC.Spread.Sheets.SheetArea.viewport ||
- me.rightClickTarget.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
- },
- items: {
- "delete": {
- name: "删除",
- icon: 'fa-trash-o',
- disabled: function () {
- return !me.canDelete(spread.getActiveSheet());
- },
- callback: function (key, opt) {
- console.log();
- }
- }
- }
- });
- },
- refreshSheet:function(){
- sheetCommonObj.showData(this.billsSheet,this.billsSetting,this.billsList);
- this.billsSheet.setRowCount(this.billsList.length + 1);
- },
- onBillsSelectionChange:function (sander,args) {
- args.sheet.repaint();
- },
- onBillsValueChange: function(sander,args){
- let me = materialOjb;
- let field = me.billsSetting.header[args.col].dataCode;
- let code = null;
- if(args.row < me.billsList.length){
- code = me.billsList[args.row].code;
- }
- if(me.validateBills(field,args.newValue)){
- let data = me.getUpdateData(field,args.newValue,code);
- if (data){
- me.saveBills([data]);
- return;
- }
- }
- me.refreshSheet();
- },
- validateBills:function (field,value) {
- if(field == 'code'){
- if(value.length !== 9){
- alert("清单长度不正确");
- return false;
- }
- if(_.find(this.billsList,{'code':value})) {
- alert("清单已存在");
- return false;
- }
- }
- return true;
- },
- getUpdateData:function (field,newValue,code) {
- if(field == 'code'){
- if(!isDef(code) || code ==''&&newValue!=null){//说明是新增
- return {
- type:'add',
- code:newValue.toString(),
- libID:$('#libID').val(),
- billsLibId:parseInt($('#billsLibId').val())
- }
- }else {//说明是替换
- return {
- type:'update',
- oldCode:code.toString(),
- newCode:newValue.toString(),
- libID:$('#libID').val(),
- billsLibId:parseInt($('#billsLibId').val())
- }
- }
- }else if(isDef(code)){
- let updateData = {};
- updateData[field] = newValue;
- return {
- type:'update',
- oldCode:code.toString(),
- libID:$('#libID').val(),
- updateData:updateData
- }
- }
- },
- saveBills:async function (datas) {
- try {
- let result = await ajaxPost("/materialReplace/saveBills",datas);
- let missCodes = [];
- for(let r of result){
- if(r.missCodes && r.missCodes.length >0) missCodes =missCodes.concat(r.missCodes);
- if(r.type == 'add'){
- this.billsList = this.billsList.concat(r.list);
- }if(r.type == 'update'){
- for(let l of r.list){
- this.updateCache(l.code,l.updateData)
- }
- }if(r.type == 'delete'){
- }
- }
- if(missCodes.length > 0) alert(`没有找到清单:${missCodes.join("、")}`);
- this.refreshSheet();
- }catch (err){
- console.log(err);
- }
- },
- updateCache:function (code,updateData) {
- let bill = _.find(this.billsList,{'code':code});
- for(let key of updateData){
- bill[key] = updateData[key]
- }
- }
- };
- function isDef(obj) {
- return obj!==undefined && obj!==null;
- }
- materialOjb.initSpread();
|