web 分录科目实现辅助账

com.kingdee.eas.fi.cas.web.receivingbill.event.GetAsstAccountInfoActionEvent

com.kingdee.eas.fi.cas.web.receivingbill.handler.GetAsstAccountInfoActionEventHandler

javascript 复制代码
mod.defineModule("extend/custom/zcht/jczl/js/accounteditor",["base","waf","fi/cas/js/webCommonUtil","editgrid"],function(waf){//
	waf(function(){ 
	    _self.asstAccountConfig = {};
		waf.defineCustomeClass("celleditor.accountCellEditor", celleditor.f7, {
		
			show: function(){
				debugger;
				var self = this;
				var div = waf("#asst");
				if (div.length == 0) {
					div = $("<div id='asst' class='floatdiv'></div>");
					div.appendTo($(".page_margins"));
				}
				else {
					div.empty();
				}
				this.div = div;
				div.unbind('keydown');
				div.bind('keydown', function(e){
					if (e.keyCode == 13 || e.keyCode == 9) {
						//调用此方法由表格来决定全键盘的下一个走向,有可能向前(同时按住shift键) ,也有可能向后
						if (document.activeElement.id == self.lastItemId || document.activeElement.id.indexOf(self.lastItemId) != -1) {
							waf.jgrid.editKeyHandler(e, self.table, self.iRow, self.iCol);
							return false;
						}
					}
				});
				var grid = waf(this.table);
				var rowid = grid.wafGrid("getRowId", this.iRow);
				var account = grid.getCell(rowid, self.nmjq);     //获得当前分录编辑字段
				_self.showAccountDIV(this, account);
			},
			clear: function(){
				this.div.hide();
			},
			getValue: function(){
				return _self.getAccountAsstValue(this);
			}
		});
	    /**
	     * 描述:是否字符串
	     * @param {Object} o
	     */
	    _self.isString = function(o){
	        return _self.getType(o) == "string";
	    }
	    _self.getType = function(object){
	        var _t;
	        return ((_t = typeof(object)) == "object" ? object == null && "null" || Object.prototype.toString.call(object).slice(8, -1) : _t).toLowerCase();
	    }
		/**
		 * 科目列显示辅助账信息
		 * @param cellvalue  科目单元格的值
		 * @param options	列的相关配置
		 * @param rowObject  行对象值
		 */
		waf.defineCustomeClass("cellformatter.accountFormat", cellformatter.f7, {
			format: function(cellval, rwd){
				cellformatter.f7.prototype.format.call(this, cellval, rwd);
				if (cellval == undefined || cellval == "") 
					return "";
				var diaplyString = "";
				if (_self.isString(cellval.displayName)) {
					diaplyString = "<div>" + cellval.number + " " + cellval.displayName + "</div>";
				}else if (cellval.displayName && cellval.displayName[waf.getContext().locale]) {
					diaplyString = "<div>" + cellval.number + " " + cellval.displayName[waf.getContext().locale] + "</div>";
				}else {
					diaplyString = "<div>" + (cellval.number || "") + "</div>";
				}

				var asstName = "";
				var assgrp = cellval.assgrp;
				if (assgrp && assgrp != "") {
					var assGrpDisplayName = assgrp.displayname;
					if (assGrpDisplayName && assGrpDisplayName != "") {
						asstName = asstName.concat(assGrpDisplayName);
					}
				}
				if (asstName.length > 0) {
					diaplyString = diaplyString.concat("<div>[ ").concat(asstName).concat(" ]</div>");
				}
				return diaplyString;
			},
			unformat: function(cell, rowId){
				return cellformatter.f7.prototype.unformat.call(this, cell, rowId);
			}
		});
		_self.showAccountDIV = function(self, account){
			self.div.css("display", "block");
			_self.appendAccountF7(self, account);
			//浮动层相对于当前单元格来定位
			self.div.position(waf.extend({
				of: self.cell
			}, {
				my: "left top",
				at: "left top",
				collision: "none"
			}));
			var f7id = '#' + self.opts.id;
			//焦点显示
			window.setTimeout(function(){
				waf(f7id).focus().select();
			}, 0)
		};
		
		_self.appendAccountF7 = function(self, account){
			var rowHeight = (self.cell.height() - 1) + "px";
			var cellWidth = self.cell.width() - 6 + "px";
			self.div.css("height", rowHeight);
			var company = waf.dataBinder.getComponentByProperty('fICompany').wafPromptBox('getValue');		
			self.items = new Array();
			var comId = self.opts.id;
			var lbOptions = {
				id: comId + "Lb",
				labelPosition: "left",
				caption: "",
				disTl: false,
				tagClass: "accountlb"
			};

            var  accountTableId="";
			if(null!=company.accountTable){
				accountTableId=company.accountTable.id;
			}else{
				accountTableId=waf.dataBinder.getComponentByProperty('AccountTableID').wafText('getValue');
			}

			self.div.append("<div id = 'accountCellDiv' class='mianpromptdiv' style='border: 1px solid #1A7DF4'></div>");
			var accountCellDiv = waf("#accountCellDiv");
			var filterItems = waf.parseSql.getFilter("companyID.id","=",company.id); 
			var filterItems1 = waf.parseSql.getFilter("accountTableID.id","=",accountTableId); 
			var filterItems2 = waf.parseSql.getFilter("isleaf","=",1); 
			filterItems = waf.parseSql.mergeFilter([filterItems, filterItems1],"and");
			filterItems = waf.parseSql.mergeFilter([filterItems, filterItems2],"and");
			// if(!showCashAndBankAcctView) {
			// 	var filterItems3 = waf.parseSql.getFilter("isCash","=",0); 
			// 	var filterItems4 = waf.parseSql.getFilter("isBank","=",0); 
			// 	filterItems = waf.parseSql.mergeFilter([filterItems, filterItems3],"and");
			// 	filterItems = waf.parseSql.mergeFilter([filterItems, filterItems4],"and");
			// }
			//科目显示
			var options = {
				id: comId,
				name: comId,
				width: cellWidth,
				height: rowHeight,
				disTl: false,
				subWidgetName: "wafPromptStandard",// wafPromptSpecial_Account
				subWidgetOptions: {
					//url: waf.getContextPath() + "/component/promptTable.do",
					//ajaxType: "GET",
					query: "com.kingdee.eas.fi.gl.app.AccountViewNumberNameQuery",
					//accessType: "remote",
					// allowAutoComplete: true,
					 searchItem: "number+longName",
					// autoCompleteItem: "number+name",
					cu: false,
					companyOrg:company.id,
					//accountTable:company.accountTable.id,
					accountTable:accountTableId,
					onlyLeaf:true,
					filteritem: filterItems
				}
			};
			var promptBoxDom = waf.createDOM("promptBox", options);
			waf.appendDOM(accountCellDiv, promptBoxDom);
			waf.initComponent("promptBox", options, promptBoxDom);
			accountCellDiv.css("height", rowHeight).css("width", cellWidth);
			var accountpromptBox = waf('#' + comId);
			var innerWidth = (self.cell.height() - 3) + "px";
			accountpromptBox.css("height", innerWidth);
			waf("#accountCellDiv .ui-f7-frame .ui-f7-trigger").css("height", innerWidth);
			self.lastItemId = comId;
			accountpromptBox.wafPromptBox("setValue", account);
			_self.accountchange(null, account, self, {});
			accountpromptBox.wafPromptBox("option", "onchange", function(e, value){
				_self.accountchange(e, value.current, self, value.previous);
			});
		};
		
		_self.accountchange = function(e, account, self, oldValue){
			var items = self.items;
			for (var i = 0; i < items.length; i++) {
				$("#" + items[i]).remove();
			}
			self.items = new Array();
			self.firstItemId = undefined;
			self.div.css("height", (self.cell.height() - 3) + "px");
			if (!account || account == "") {
				_self.asstActItems(e, account, self, oldValue);
				return;
			}
			//account = _self.transAccountViewInfo(account);
			if (account.cAA || account.hasUserProperty) {
				if ((account.cAA && (!account.assgrp || !account.assgrp.detail)) || (account.hasUserProperty && !account.accountcustprop)) {
					var company = waf.dataBinder.getComponentByProperty('fICompany').wafPromptBox('getValue');
					waf.doPost({
						data: {
							source: 'editGrid.account',
							accountid: account.id,
							caaid: account.cAA ? account.cAA.id : "",
							hgid: account.assgrp ? account.assgrp.id : "",
							companyId: company.id,
							property: 'getAsstAccountInfo'

						},
						action : 'getAsstAccountInfo',
						success: function(model){
							account.assgrp = model.assgrp;
							_self.asstActItems(e, account, self, oldValue);
							_self.appendAsstItem(self, account);
							if (e) {
								waf("#" + self.firstItemId).focus().select();
							}
						}
					});				
				}else {
					_self.asstActItems(e, account, self, oldValue);
					_self.appendAsstItem(self, account);
					if (e) {
						waf("#" + self.firstItemId).focus().select();
					}
				}
			}else {
				if (e) {
					_self.asstActItems(e, account, self, oldValue);
					waf("#editGrid").wafGrid("nextCell", self.iRow, self.iCol);
				}
				
			}
		};
		/**
		 * 更新核算明细
		 * @param {Object} e
		 * @param {Object} account
		 * @param {Object} self
		 * @param {Object} oldValue
		 */
		_self.asstActItems = function(e, account, self, oldValue){
		
			// oldValue是个空对像,不进行任何处理,查看模式
			if(oldValue && !oldValue.id)return;
			// account有值,oldValue有值,且两个值相等,不做任何变化
			if(oldValue && account && oldValue.id && account.id && account.id == oldValue.id)return;
			var isDelete = false;
			// 返回是否有删除明细,将决定核算项目添加时,是否新增核算明细项
			// account没有值,删除核算明细
			if(!account){
				isDelete = true;
			}else if(!account.cAA || !account.cAA.id){
				// account没有关联核算项目,删除核算明细
				isDelete = true;
			}
			// account有值,oldValue有值,且两个值不相等 删除核算明细
			// isDelete 为 true 只删除明细,不新增行,否则的话,删除完成,要根据核算类型关联的明细,新增新的核算项目行
			var entryGrid;
			var dataGrid;
			if(self && self.table && self.table.id){
				debugger;
 
				if( self.nmjq=="dfkm" ){
					entryGrid = waf("#editgrid");
					dataGrid = waf("#asstltems");
				 }

               if( self.nmjq=="asstltemsDebit" ){   //字段名
				   entryGrid = waf("#editgrid");
				   dataGrid = waf("#asstltemsDebit");   //分录名
			    }

			}
			var rowid = entryGrid.wafGrid("getSelectedRow");
			var allDatas = dataGrid.wafGrid("getAllRowData");
			for (var index in allDatas){
				if(rowid == allDatas[index].entryParentID){
					row = allDatas[index];
					if(row.id && "" != row.id){
						dataGrid.wafGrid("delRow", row.id);
					}else{
						dataGrid.wafGrid("delRow", row.rowId);// , row
					}
				}
			}
			if(isDelete)return;
			if (!account.assgrp || !account.assgrp.CAAId){
				account.assgrp.CAAId = account.cAA.id;
			}
			var option = {accountId: account.id, canEditAsst: false};
			var config = _self.getAsstAccountConfig(account, account.assgrp.CAAId, option);
			var flag = 1;
			for (var p in config) {
				var asst = config[p];
				// 向明细分录插入数据
				var row = {};
				row.entryParentID = rowid;
				row.asstActType = asst;
				row.entrySeq = flag;
				// row.fromID = "";
				// row.fromNumber = "";
				row.mappingFileds = asst.mappingFieldName;
				row.tableName = asst.realtionDataObject;
				dataGrid.wafGrid("addRow",{data:row});
				flag++;
			}
		};
		
		
		_self.appendAsstItem = function(self, account){
			_self.appendCaa(self, account);
			//_self.appendAccountCustProp(self, account);
			var num = self.items.length;
			var height = self.cell.height();
			if (num) {
				height = num * 44 + 10 + height;
			}
			self.div.css("height", height + "px");
		};
		
		// _self.transAccountViewInfo = function(account){
		// 	if (!account || account == "") {
		// 		return null;
		// 	}
		// 	//隐藏或显示辅助账DIV
		// 	if (!account.companyID) {
		// 		var companyid = account["companyID.id"];
		// 		var company = new Object();
		// 		company.id = companyid;
		// 		account.companyID = company;
		// 	}
		// 	if (!account.accountTableID) {
		// 		var accountTableid = account["accountTableID.id"];
		// 		var accountTable = new Object();
		// 		accountTable.id = accountTableid;
		// 		account.accountTableID = accountTable;
		// 	}
		// 	var caaId = account["CAA.id"];
		// 	if (!account.cAA && caaId) {
		// 		var caa = new Object();
		// 		caa.id = caaId;
		// 		caa.isQty = account["CAA.isQty"];
		// 		account.cAA = caa;
		// 	}
		// 	if (!$.isNaN(account.isQty)) {
		// 		account.isQty = !!parseInt(account.isQty);
		// 	}
		// 	if (account.AC != undefined) {
		// 		account.aC = account.AC;
		// 	}
		// 	if (!$.isNaN(account.hasUserProperty)) {
		// 		account.hasUserProperty = !!parseInt(account.hasUserProperty);
		// 	}
		// 	return account;
		// };
		
		/**
		 * 描述:创建辅助账
		 */
		_self.appendCaa = function(self, account){
			if (!account.assgrp || !account.assgrp.CAAId){
				if(!account.cAA.id){
					return;
				}else{
					account.assgrp.CAAId = account.cAA.id;
				}
			}
			var option = {accountId: account.id, canEditAsst: false};
			var config = _self.getAsstAccountConfig(account, account.assgrp.CAAId, option);
			//var detail = account.assgrp.detail;
			//var asstTypeNum = detail.length;
			for (var p in config) {
				var asst = config[p];
				for(var n in account.assgrp.detail){
					if(p == account.assgrp.detail[n].asstHGAttribute){
						asst.value = account.assgrp.detail[n].value;
					}
				}
				var name = eval("asst.name." + waf.getContext().locale);
				queryid = asst.queryid;
				// 如果是银行账户,设置条件为科目相同
				if("bankAccount"==asst.asstHGAttribute) {			
					_self.createF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value);
				} else if("adminOrg"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Org","promptSpecial_Org", {orgType:"Admin"});
				} else if("companyOrg"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Org","promptSpecial_Org", {orgType:"Company"});
				} else if("costOrg"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Org","promptSpecial_Org", {orgType:"CostCenter"});
				} else if("profitOrg"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Org","promptSpecial_Org", {orgType:"ProfitCenter"});
				} else if("purchaseOrg"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Org","promptSpecial_Org", {orgType:"Purchase"});
				} else if("saleOrg"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Org","promptSpecial_Org", {orgType:"Sale"});
				} else if("storeageOrg"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Org","promptSpecial_Org", {orgType:"Storeage"});
				} else if("customer"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Customer","promptSpecial_Customer", {});
				} else if("supplier"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Supplier","promptSpecial_Supplier", {});
				} else if("material"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Material","promptSpecial_Material", {});
				} else if("person"==asst.asstHGAttribute) {
					_self.createSpecialF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value, "wafPromptSpecial_Person","promptSpecial_Person", {});
				} else {
					_self.createF7Field(self, "acc" + asst.asstHGAttribute, name, asst.defaultQueryName, queryid, asst.value);
				}		
			}
		};
		
		_self.getAsstAccountConfig = function(assAcc, asstAccountId, option){
            if (!asstAccountId) {
                return {};
            }
            if (!_self.asstAccountConfig) {
                _self.asstAccountConfig = {};
            }
            if (!_self.asstAccountConfig[assAcc.id]) {
               _self.asstAccountConfig[assAcc.id] = _self.getAsstGrpInfo(assAcc, asstAccountId, undefined, option ? option.accountId : undefined);
                if (!assAcc.assgrp) {
                    assAcc.assgrp = {};
                    var config = _self.asstAccountConfig[assAcc.id];
                    if (option.defaultValues) {
                        for (var p in config) {
                            var asst = config[p];
                            assAcc.assgrp[p] = option.defaultValues[p];
                        }
                    }
                }
            }
            return _self.asstAccountConfig[assAcc.id];
        };
		
		_self.getAsstGrpInfo = function(assAcc, asstAccountId, hgId, accountId){
            var company = waf.dataBinder.getComponentByProperty('fICompany').wafPromptBox('getValue');
            // var sysParams = JSON.parse(company.glsysparam); 
			var sysParams = {G001: false,G003: true,G010: false,GL_002: "2",GL_003: "2",GL_012: false,GL_014: "0",GL_014_1: false,GL_015: false,GL_029: false,GL_031: false,GL_043: false,GL_047: "0",GL_067: "0",GL_069: true,GL_099: false,GL_102: "1",GL_111: false,GL_0151: false,GL_0155: false,GL_0302: false,GL_VCH_POST_CONTROL: false}
            var config;
            _self.doPost({
                url: waf.getContextPath() + '/fi/gl/asstgrp/source.do?method=getAsstGrpInfo',
                async: false,
				showBlock : false,
                data: {
                    asstAccountId: asstAccountId,
                    hgId: hgId,
                    options: waf.toJSONString({
                        companyId: company.id,
                        accountId: accountId,
                        sysParams: sysParams
                    })
                },
                success: function(data){
                    if (!self.asstAccountConfig) {
                        self.asstAccountConfig = {};
                    }
                    config = data.config;
                }
            });
            return config;
        };

		_self.doPost = function(option){
			var company = waf.dataBinder.getComponentByProperty('fICompany').wafPromptBox('getValue');
		    if (!option.data) {
		        option.data = {};
		    }
		    if (!option.data.mainorgtype) {
		        option.data.mainorgtype = 'Company';
		    }
		    if (!option.data.mainorgunit) {
		        option.data.mainorgunit = company.id;
		    }
		    waf.doPost(option);
		};
		
		/**
		 * 描述:创建F7字段
		 * @param {Object} div
		 * @param {Object} detail
		 * @param {Object} index
		 */
		_self.createF7Field = function(self, comId, title, queryName, queryid, value){
			var lbOptions = {
				id: comId + "Lb",
				labelPosition: "left",
				caption: title,
				tagClass: "asstlb"
			};
			var lbDOM = waf.createDOM("labelContainer", lbOptions);
			waf.appendDOM($(self.div), lbDOM);
			waf.initComponent("labelContainer", lbOptions, lbDOM);
			_self.addItemId(self, comId + "Lb");
			var options = {
				id: comId,
				name: comId,
				subWidgetName: "wafPromptStandard",
				subWidgetOptions: {
					url: waf.getContextPath() + "/component/F7Common.do",
					ajaxType: "GET",
					query: queryName,
					title: title,
					accessType: "remote",
					allowAutoComplete: true,
					autoCompleteItem: "number+name",
					queryID: queryid,
					cu:false
				}
			};
			var promptBoxDom = waf.createDOM("promptBox", options);
			waf("#" + comId + "Lb").wafLabelContainer("append", promptBoxDom);
			waf.initComponent("promptBox", options, promptBoxDom);
			var width = 153;
			waf("#" + comId + "Lb_ctrl .ui-f7-frame").css("width", width + "px");
			if (self.firstItemId == undefined) {
				self.firstItemId = comId;
			}
			self.lastItemId = comId;
			if (value) {
				waf("#" + comId).wafPromptBox("setValue", value);
			}
		};
		
		_self.createSpecialF7Field = function(self, comId, title, queryName, queryid, value, subWidgetName, module, moduleOptions){
			var lbOptions = {
				id: comId + "Lb",
				labelPosition: "left",
				caption: title,
				tagClass: "asstlb"
			};
			var lbDOM = waf.createDOM("labelContainer", lbOptions);
			waf.appendDOM($(self.div), lbDOM);
			waf.initComponent("labelContainer", lbOptions, lbDOM);
			_self.addItemId(self, comId + "Lb");
			var options = {
				id: comId,
				name: comId,
				subWidgetName: subWidgetName,
				subWidgetOptions: {
					//url: waf.getContextPath() + "/component/F7Common.do",
					ajaxType: "GET",
					query: queryName,
					accessType: "remote",
					allowAutoComplete: true,
					autoCompleteItem: "number+name",
					queryID: queryid,
					cu:false
				}
			};
			waf.extend(options.subWidgetOptions, moduleOptions);
			mod.use(module, function(){
				var promptBoxDom = waf.createDOM("promptBox", options);
				waf("#" + comId + "Lb").wafLabelContainer("append", promptBoxDom);
				waf.initComponent("promptBox", options, promptBoxDom);
				var width = 153;
				waf("#" + comId + "Lb_ctrl .ui-f7-frame").css("width", width + "px");
				if (self.firstItemId == undefined) {
					self.firstItemId = comId;
				}
				self.lastItemId = comId;
				if (value) {
					waf("#" + comId).wafPromptBox("setValue", value);
				}
			});
			
		};

		/**
		 * 描述:创建日期字段
		 * @param {Object} self
		 * @param {Object} comId
		 * @param {Object} title
		 * @param {Object} value
		 */
		_self.createDateField = function(self, comId, title, value){
			var lbOptions = {
				id: comId + "Lb",
				labelPosition: "left",
				caption: title,
				tagClass: "asstlb"
			};
			var lbDOM = waf.createDOM("labelContainer", lbOptions);
			waf.appendDOM($(self.div), lbDOM);
			waf.initComponent("labelContainer", lbOptions, lbDOM);
			_self.addItemId(self, comId + "Lb");
			var options = {
				id: comId,
				name: comId + "DatePicker"
			};
			var datePickerDom = waf.createDOM("datePicker", options);
			waf("#" + comId + "Lb").wafLabelContainer("append", datePickerDom);
			waf.initComponent("datePicker", options, datePickerDom);
			var width = 153;
			waf("#" + comId + "Lb_ctrl .ui-datepicker-frame").css("width", width + "px");
			if (self.firstItemId == undefined) {
				self.firstItemId = comId;
			}
			self.lastItemId = comId;
			if (value) {
				waf("#" + comId).wafDatePicker("setValue", value);
			}
			else {
				var date = waf("#section1_bizDate").wafDatePicker("getValue");
				waf("#" + comId).wafDatePicker("setValue", date);
			}
		};
		
		/**
		 * 描述:创建文本字段
		 * @param {Object} self
		 * @param {Object} comId
		 * @param {Object} title
		 * @param {Object} value
		 */
		_self.createTextField = function(self, comId, title, value){
			var lbOptions = {
				id: comId + "Lb",
				labelPosition: "left",
				caption: title,
				tagClass: "asstlb"
			};
			var lbDOM = waf.createDOM("labelContainer", lbOptions);
			waf.appendDOM($(self.div), lbDOM);
			waf.initComponent("labelContainer", lbOptions, lbDOM);
			_self.addItemId(self, comId + "Lb");
			var options = {
				id: comId,
				name: comId + "Txt"
			};
			var txtDom = waf.createDOM("text", options);
			waf("#" + comId + "Lb").wafLabelContainer("append", txtDom);
			waf.initComponent("text", options, txtDom);
			var width = 153;
			waf("#" + comId + "Lb_ctrl input").css("width", width + "px");
			if (self.firstItemId == undefined) {
				self.firstItemId = comId;
			}
			self.lastItemId = comId;
			if (value) {
				waf("#" + comId).wafText("setValue", value);
			}
		};
		
		
		/**
		 * 描述:创建数值字段
		 * @param {Object} self
		 * @param {Object} comId
		 * @param {Object} title
		 * @param {Object} precision
		 * @param {Object} value
		 */
		_self.createNumberField = function(self, comId, title, precision, value){
			var lbOptions = {
				id: comId + "Lb",
				labelPosition: "left",
				caption: title,
				tagClass: "asstlb"
			};
			var lbDOM = waf.createDOM("labelContainer", lbOptions);
			waf.appendDOM($(self.div), lbDOM);
			waf.initComponent("labelContainer", lbOptions, lbDOM);
			_self.addItemId(self, comId + "Lb");
			if (precision == undefined) {
				precision = 2;
			}
			var options = {
				id: comId,
				name: comId + "Number",
				decimalPrecision: precision,
				onlyPrecision: true,
				allowNegative: false
			};
			var numberDom = waf.createDOM("numberField", options);
			waf("#" + comId + "Lb").wafLabelContainer("append", numberDom);
			waf.initComponent("numberField", options, numberDom);
			var width = 153;
			waf("#" + comId + "Lb_ctrl input").css("width", width + "px");
			if (self.firstItemId == undefined) {
				self.firstItemId = comId;
			}
			self.lastItemId = comId;
			if (value) {
				waf("#" + comId).wafNumberField("setValue", value);
			}
		};
		
		/**
		 * 描述:创建下拉字段
		 * @param {Object} self
		 * @param {Object} comId
		 * @param {Object} title
		 * @param {Object} enumList
		 * @param {Object} value
		 */
		_self.createSelectField = function(self, comId, title, enumList, value){
			var lbOptions = {
				id: comId + "Lb",
				labelPosition: "left",
				caption: title,
				tagClass: "asstlb"
			};
			var lbDOM = waf.createDOM("labelContainer", lbOptions);
			waf.appendDOM($(self.div), lbDOM);
			waf.initComponent("labelContainer", lbOptions, lbDOM);
			_self.addItemId(self, comId + "Lb");
			var options = {
				id: comId,
				name: comId + "select",
				enumSource: enumList
			};
			var enumDom = waf.createDOM("select", options);
			waf("#" + comId + "Lb").wafLabelContainer("append", enumDom);
			waf.initComponent("select", options, enumDom);
			var width = 153;
			waf("#" + comId + "Lb_ctrl .ui-multiselect").css("width", width + "px");
			if (self.firstItemId == undefined) {
				self.firstItemId = comId;
			}
			self.lastItemId = comId;
			if (value) {
				waf("#" + comId).wafSelect("setValue", value);
			}
		};
		
		_self.addItemId = function(self, comId){
			var num = self.items.length;
			if (num == 0) {
				waf("#" + comId).css("margin-top", "10px");
			}
			self.items[num] = comId;
		};
		
		_self.getAccountAsstValue = function(accountpromptBox){
			debugger;
			var account = waf('#' + accountpromptBox.opts.id).wafPromptBox("getValue");
			if (!account || account == "") {
				return ["", ""];
			}
			// accountpromptBox.table.id
			var dataGrid;
			var entryGrid;
			if(accountpromptBox && accountpromptBox.table && accountpromptBox.table.id){
				if(accountpromptBox.nmjq=="dfkm"){
					entryGrid = waf("#editgrid");
					dataGrid = waf("#asstltems");
				} 

				if( accountpromptBox.nmjq=="asstltemsDebit" ){
					entryGrid = waf("#editgrid");
					dataGrid = waf("#asstltemsDebit");
				 }
 

			}
			var rowid = entryGrid.wafGrid("getSelectedRow");
			var allDatas = dataGrid.wafGrid("getAllRowData");
			
			if (account.assgrp) {
				//获取值
				var detail = account.assgrp.detail;
				var displayName = "";
				var changed = false;
				for (var i = 0; i < detail.length; i++) {
					var asst = detail[i];
					var asstHGAttribute = asst.asstHGAttribute;
					var asstItem = waf("#acc" + asstHGAttribute).wafPromptBox("getValue");
					if (_self.isAsstItemChanged(asst.value, asstItem)) {
						changed = true;
					}
					
					asst.value = asstItem;
					if (asstItem && asstItem != "" && asstItem.id) {
						if (displayName.length > 0) {
							displayName = displayName.concat(" | ");
						}
						var asstItemName = "";
						if (_self.isString(asst.value.name)) {
							asstItemName = asst.value.name;
						}
						else {
							asstItemName = eval("asst.value.name." + waf.getContext().locale);
						}
						displayName = displayName.concat(asstItemName);
						// 重新赋值
						for (var index in allDatas){
							if(rowid == allDatas[index].entryParentID && allDatas[index].entrySeq - 1 == i){
								rowdata = allDatas[index];
								rowdata.fromID = asstItem.id;
								rowdata.fromNumber = asstItem.number;
								if(rowdata.id && "" != rowdata.id){
									dataGrid.wafGrid("setRowData", rowdata.id, rowdata);
								}else{
									dataGrid.wafGrid("setRowData", rowdata.rowId, rowdata);
								}
							}
						}
					}else{
						// 重新赋值
						for (var index in allDatas){
							if(rowid == allDatas[index].entryParentID && allDatas[index].entrySeq - 1 == i){
								rowdata = allDatas[index];
								rowdata.fromID = "";
								rowdata.fromNumber = "";
								if(rowdata.id && "" != rowdata.id){
									dataGrid.wafGrid("setRowData", rowdata.id, rowdata);
								}else{
									dataGrid.wafGrid("setRowData", rowdata.rowId, rowdata);
								}
							}
						}
					}
				}
				account.assgrp.displayname = displayName;
				if (changed) {
					account.assgrp.id = null;
				}
			}
			return [account, account];
		};
		
		/**
		 * 描述:核算项目是否改变
		 * @param {Object} obj1
		 * @param {Object} obj2
		 */
		_self.isAsstItemChanged = function(obj1, obj2){
			if (obj1 == obj2 || (obj1 && obj2 && obj1 != "" && obj2 != "" && obj1.id == obj2.id)) {
				return false;
			}
			return true;
		};

	});
});
相关推荐
梵刹古音2 小时前
【C语言】 循环结构
c语言·开发语言·算法
消失的旧时光-19432 小时前
C++ 函数参数传递方式总结:什么时候用值传递、引用、const 引用?
开发语言·c++
2601_949868362 小时前
Flutter for OpenHarmony 剧本杀组队App实战04:发起组队表单实现
开发语言·javascript·flutter
一匹电信狗2 小时前
【C++】CPU的局部性原理
开发语言·c++·系统架构·学习笔记·c++11·智能指针·新特性
m0_561359672 小时前
C++代码冗余消除
开发语言·c++·算法
毕设源码-郭学长2 小时前
【开题答辩全过程】以 基于Python爬取学院师资队伍信息的设计与分析为例,包含答辩的问题和答案
开发语言·python
会开花的二叉树2 小时前
吃透Reactor多线程:EventLoop_Channel_ThreadPool协作原理
开发语言·c++·tcp/ip·servlet
小白64022 小时前
2025年终总结-迷途漫漫,终有一归
前端·程序人生
Jm_洋洋2 小时前
【C++进阶】虚函数、虚表与虚指针:多态底层机制剖析
java·开发语言·c++