/** * Created by Mai on 2017/4/1. */ var Bills = { createNew: function (project) { var billsTreeSetting = { id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true }; // 用户定义private方法 var tools = { coverseTreeUpdateData: function (datas, projectID) { var updateDatas = []; datas.forEach(function (data) { var updateData = {}; data.data.projectID = projectID; if (data.type === idTree.updateType.new) { updateData.updateType = 'ut_create'; updateData.updateData = data.data; } else if (data.type === idTree.updateType.update) { updateData.updateType = 'ut_update'; updateData.updateData = data.data; } else if (data.type === idTree.updateType.delete) { updateData.updateType = 'ut_delete'; updateData.updateData = data.data; } updateDatas.push(updateData); }); return updateDatas; } }; // 所有通过this访问的属性,都不应在此单元外部进行写入操作 var bills = function (proj) { this.project = proj; this.datas = null; this.tree = idTree.createNew(billsTreeSetting); var sourceType = ModuleNames.bills; this.getSourceType = function () { return sourceType; } proj.registerModule(ModuleNames.bills, this); }; // 从后台获取数据 /*bills.prototype.pullData = function (){ this.project.pullData( '/bills/getData', {projectID: this.project.ID}, function(result){ if (result.error ===0){ this.loadDatas(result.data); } else { // to do: ?错误处理需要细化 alert(result.message); } }, function (){}// to do: 错误处理需要细化 ) };*/ // prototype用于定义public方法 bills.prototype.loadData = function (datas) { this.datas = datas; // generate Fees & Flags Index, For View & Calculate this.datas.forEach(function (data) { data.FeesIndex = {}; if (data.fees) { data.fees.forEach(function (fee) { data.FeesIndex[fee.fieldName] = fee; }); } data.FlagsIndex = {}; if (data.flags) { data.flags.forEach(function (flag) { data.FlagsIndex[flag.fieldName] = flag; }); } }); // datas load to Tree this.tree.loadDatas(this.datas); }; bills.prototype.setMaxID = function (ID) { this.tree.maxNodeID(ID); }; // 提交数据后的错误处理方法 bills.prototype.doAfterUpdate = function(err, data){ // to do }; bills.prototype.getCounterData = function (count) { var updateData = {'projectID': this.project.ID()}; if (count) { updateData[this.getSourceType()] = this.tree.maxNodeID() + count; } else { updateData[this.getSourceType()] = this.tree.maxNodeID() + 1; } return updateData; }; bills.prototype.insertBills = function (parentId, nextSiblingId) { var insertData = this.tree.getInsertData(parentId, nextSiblingId); var that = this, newData = null; insertData.forEach(function (data) { if (data.type === idTree.updateType.new) { newData = data.data; } }); this.project.pushNow('insertBills', [this.getSourceType(), this.project.projCounter()], [ tools.coverseTreeUpdateData(insertData, this.project.ID()), this.getCounterData()]); //project.pushNow('insertBills', ModuleNames.bills, tools.coverseTreeUpdateData(insertData)); this.datas.push(newData); return this.tree.insert(parentId, nextSiblingId); }; bills.prototype.insertStdBills = function (parentId, nextSiblingId, stdBillsData) { var insertData = this.tree.getInsertData(parentId, nextSiblingId); var newData = null, that = this; insertData.forEach(function (data) { if (data.type === idTree.updateType.new) { data.data.code = stdBillsData.code; data.data.name = stdBillsData.name; data.data.unit = stdBillsData.unit; newData = data.data; } }); this.project.pushNow('insertStdBills', [this.getSourceType(), this.project.projCounter()], [ tools.coverseTreeUpdateData(insertData, this.project.ID()), this.getCounterData()]); this.datas.push(newData); return this.tree.insertByData(newData, parentId, nextSiblingId); }; bills.prototype.deleteBills = function (node) { var deleteData = this.tree.getDeleteData(node); var ration_glj =projectObj.project.ration_glj; // project.beginUpdate('deleteBills'); //project.push(ModuleNames.bills, tools.coverseTreeUpdateData(deleteData, this.project.ID())); //project.endUpdate(); var moudles =[ModuleNames.bills,ModuleNames.ration_glj]; var deleteDatas=[tools.coverseTreeUpdateData(deleteData, this.project.ID()),ration_glj.getDeleteDataByBills(deleteData)]; // project.ration.getDeleteDataByBill(node); project.pushNow('deleteBILL', moudles, deleteDatas); // return this.tree.delete(node); }; bills.prototype.upMoveBills = function (node) { var upMoveData = node.getUpMoveData(); project.pushNow('upMoveBills', this.getSourceType(), tools.coverseTreeUpdateData(upMoveData, this.project.ID())); return node.upMove(); }; bills.prototype.downMoveBills = function (node) { var downMoveData = node.getDownMoveData(); project.pushNow('downMoveBills', this.getSourceType(), tools.coverseTreeUpdateData(downMoveData, this.project.ID())); return node.downMove(); }; bills.prototype.upLevelBills = function (node) { var upLevelData = node.getUpLevelData(); project.pushNow('upLevelBills', this.getSourceType(), tools.coverseTreeUpdateData(upLevelData, this.project.ID())); return node.upLevel(); }; bills.prototype.downLevelBills = function (node) { var downLevelData = node.getDownLevelData(); project.pushNow('downLevelBills', [this.getSourceType()], [tools.coverseTreeUpdateData(downLevelData, this.project.ID())]); return node.downLevel(); } return new bills(project); } };