|
@@ -0,0 +1,200 @@
|
|
|
|
+/**
|
|
|
|
+ * Created by Zhong on 2017/10/16.
|
|
|
|
+ */
|
|
|
|
+/*
|
|
|
|
+ 弹出组成物窗口 组成物表
|
|
|
|
+ * */
|
|
|
|
+let componentOprObj = {
|
|
|
|
+ treeObj:null,
|
|
|
|
+ rootNode: null,//分类树根节点
|
|
|
|
+ workBook: null,
|
|
|
|
+ selectedList: [],//选中的组成物
|
|
|
|
+ setting: {
|
|
|
|
+ owner: "components",
|
|
|
|
+ header: [
|
|
|
|
+ {headerName:"选择", headerWidth: 40, dataCode: "select", hAlign: "center", vAlign: "center"},
|
|
|
|
+ {headerName:"编码",headerWidth:80,dataCode:"code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
|
|
|
|
+ {headerName:"名称",headerWidth:120,dataCode:"name", dataType: "String", hAlign: "left", vAlign: "center"},
|
|
|
|
+ {headerName:"规格型号",headerWidth:80,dataCode:"specs", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
|
+ {headerName:"单位",headerWidth:80,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
|
+ {headerName:"单价",headerWidth:80,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
|
|
|
|
+ {headerName:"类型",headerWidth:80,dataCode:"gljType", dataType: "String", hAlign: "center", vAlign: "center"}
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
|
|
+ buildSheet: function (container) {
|
|
|
|
+ let me = componentOprObj;
|
|
|
|
+ me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
|
|
|
|
+ me.workBook.getSheet(0).setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
|
|
|
|
+ me.workBook.getSheet(0).setFormatter(-1, 1, "@", GC.Spread.Sheets.SheetArea.viewport);
|
|
|
|
+ me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditStarting, me.onCellEditStart);
|
|
|
|
+ me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
|
|
|
|
+ me.workBook.bind(GC.Spread.Sheets.Events.ButtonClicked, me.onButtonClicked);//复选框点击事件
|
|
|
|
+ me.workBook.getSheet(0).getRange(-1, 0, -1, 1).cellType(new GC.Spread.Sheets.CellTypes.CheckBox());
|
|
|
|
+ me.componentsBtnOpr($('#componentsConf'));
|
|
|
|
+ },
|
|
|
|
+ onClipboardPasting: function (sender, args) {
|
|
|
|
+ args.cancel = true;
|
|
|
|
+ },
|
|
|
|
+ onCellEditStart: function (sender, args) {
|
|
|
|
+ args.cancel = true;
|
|
|
|
+ },
|
|
|
|
+ onButtonClicked: function (sender, args) {
|
|
|
|
+ let me = componentOprObj, re = repositoryGljObj;
|
|
|
|
+ let val = args.sheet.getValue(args.row, args.col);
|
|
|
|
+ let thisComponent = me.currentCache[args.row];
|
|
|
|
+ thisComponent.isChecked = val;
|
|
|
|
+ if(args.sheet.isEditing()){
|
|
|
|
+ args.sheet.endEdit(true);
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ //维护选中组成物列表
|
|
|
|
+ if(val === true){
|
|
|
|
+ let isExist = false;
|
|
|
|
+ for(let i = 0, len = me.selectedList.length; i < len; i++){
|
|
|
|
+ if(me.selectedList[i].ID === thisComponent.ID){
|
|
|
|
+ isExist = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(!isExist){
|
|
|
|
+ me.selectedList.push(thisComponent);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else if(val === false){
|
|
|
|
+ for(let i = 0, len = me.selectedList.length; i < len; i++){
|
|
|
|
+ if(me.selectedList[i].ID === thisComponent.ID){
|
|
|
|
+ me.selectedList.splice(i, 1);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ setShowGljList: function (gljList, clearChecked) {
|
|
|
|
+ //初始为所有工料机,机械类型可添加机械组成物、机上人工,混凝土,砂浆、配合比可添加普通材料
|
|
|
|
+ let machineArr = [302, 303];
|
|
|
|
+ let materialArr = [202, 203, 204];//混凝土、砂浆、配合比, 201普通材料
|
|
|
|
+ let that = repositoryGljObj, me = componentOprObj;
|
|
|
|
+ for(let i = 0; i < gljList.length; i++){
|
|
|
|
+ if(that.currentGlj.gljType === 301 && machineArr.indexOf(gljList[i].gljType) !== -1 ||
|
|
|
|
+ materialArr.indexOf(that.currentGlj.gljType) !== -1 && gljList[i].gljType === 201){
|
|
|
|
+ let isExist = false;
|
|
|
|
+ for(let j = 0; j < that.currentComponent.length; j++){
|
|
|
|
+ if(that.currentComponent[j].ID === gljList[i].ID){
|
|
|
|
+ isExist = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(!isExist){
|
|
|
|
+ if(clearChecked){
|
|
|
|
+ gljList[i].isChecked = false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ gljList[i].isChecked = true;
|
|
|
|
+ }
|
|
|
|
+ me.showGljList.push(gljList[i]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //初始默认radio
|
|
|
|
+ initRadio: function () {
|
|
|
|
+ let that = repositoryGljObj, me = componentOprObj;
|
|
|
|
+ //初始化组成物列表
|
|
|
|
+ me.selectedList = [].concat(that.currentComponent);
|
|
|
|
+ //初始为所有工料机,机械类型可添加机械组成物,混凝土,砂浆、配合比可添加普通材料
|
|
|
|
+ me.showGljList = [];
|
|
|
|
+ me.setShowGljList(that.gljList, true);
|
|
|
|
+ that.sortGlj(me.showGljList);
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ getParentCache: function (nodes) {
|
|
|
|
+ let me = componentOprObj, rst = [];
|
|
|
|
+ for(let i = 0; i < me.showGljList.length; i++){
|
|
|
|
+ if(nodes.indexOf(me.showGljList[i].gljClass) !== -1){
|
|
|
|
+ rst.push(me.showGljList[i]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ rst.sort(function (a, b) {
|
|
|
|
+ let rst = 0;
|
|
|
|
+ if(a.code > b.code) rst = 1;
|
|
|
|
+ else if(a.code < b.code)rst = -1;
|
|
|
|
+ return rst;
|
|
|
|
+ });
|
|
|
|
+ return rst;
|
|
|
|
+ },
|
|
|
|
+ getCache: function() {
|
|
|
|
+ let me = componentOprObj, rst = [];
|
|
|
|
+ for (let i = 0; i < me.showGljList.length; i++) {
|
|
|
|
+ if (me.showGljList[i].gljClass == me.gljCurTypeId) {
|
|
|
|
+ rst.push(me.showGljList[i]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return rst;
|
|
|
|
+ },
|
|
|
|
+ showGljItems: function(data, type) {
|
|
|
|
+ let me = componentOprObj, re = repositoryGljObj;
|
|
|
|
+ if (me.workBook) {
|
|
|
|
+ let cacheSection = [];
|
|
|
|
+ let pArr = re.parentNodeIds["_pNodeId_" + type];
|
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
|
+ if (pArr && pArr.indexOf(data[i].gljClass) >= 0) {
|
|
|
|
+ cacheSection.push(data[i]);
|
|
|
|
+ } else if (type == data[i].gljClass) {
|
|
|
|
+ cacheSection.push(data[i]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
|
|
|
|
+ sheetsOprObj.showData(me.workBook.getSheet(0), me.setting, cacheSection, re.distTypeTree);
|
|
|
|
+ me.workBook.getSheet(0).setRowCount(cacheSection.length);
|
|
|
|
+ cacheSection = null;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //组成物窗口按钮操作
|
|
|
|
+ componentsBtnOpr: function (conf) {//确定、取消、关闭按钮
|
|
|
|
+ let me = componentOprObj, that = gljComponentOprObj, re = repositoryGljObj;
|
|
|
|
+ conf.click(function () {
|
|
|
|
+ //添加选择添加的组成物
|
|
|
|
+ let updateArr = [];
|
|
|
|
+ let newComponent = [];
|
|
|
|
+ for(let i = 0, len = me.selectedList.length; i < len; i++){
|
|
|
|
+ let isExist = false;
|
|
|
|
+ for(let j = 0, jLen = re.currentGlj.component.length; j < jLen; j++){
|
|
|
|
+ if(me.selectedList[i].ID === re.currentGlj.component[j].ID){
|
|
|
|
+ newComponent.push({ID: me.selectedList[i].ID, consumeAmt: re.currentGlj.component[j].consumeAmt});
|
|
|
|
+ isExist = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(!isExist){
|
|
|
|
+ newComponent.push({ID: me.selectedList[i].ID, consumeAmt: 0});
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ re.currentGlj.component = newComponent;
|
|
|
|
+ let gljBasePrc = that.reCalGljBasePrc(re.getCurrentComponent(re.currentGlj.component));
|
|
|
|
+ if(gljBasePrc !== re.currentGlj.basePrice){
|
|
|
|
+ re.currentGlj.basePrice = gljBasePrc;
|
|
|
|
+ re.reshowGljBasePrc(re.currentGlj);
|
|
|
|
+ }
|
|
|
|
+ updateArr.push(re.currentGlj);
|
|
|
|
+ that.updateComponent(updateArr);
|
|
|
|
+ $('#componentsCacnel').click();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+let componentTypeTreeOprObj = {
|
|
|
|
+ onClick: function(event,treeId,treeNode) {
|
|
|
|
+ let me = componentOprObj, re = repositoryGljObj, that = gljComponentOprObj, gljTypeId = treeNode.ID;
|
|
|
|
+ if(me.gljCurTypeId !== treeNode.ID){
|
|
|
|
+ me.gljCurTypeId = treeNode.ID;
|
|
|
|
+ if (re.parentNodeIds["_pNodeId_" + treeNode.ID]) {
|
|
|
|
+ me.currentOprParent = 1;
|
|
|
|
+ me.currentCache = me.getParentCache(re.parentNodeIds["_pNodeId_" + treeNode.ID]);
|
|
|
|
+ } else {
|
|
|
|
+ me.currentCache = me.getCache();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ me.showGljItems(me.showGljList, gljTypeId);
|
|
|
|
+ }
|
|
|
|
+}
|