Heyuan пре 1 година
родитељ
комит
07c4b84239

+ 383 - 0
js/addon/custom/js/customDynamicList.js

@@ -0,0 +1,383 @@
+/**
+ * 自定义动态列表.js
+ */
+shr.defineClass("shr.custom.CustomDynamicList", shr.compensation.CmpTBDynamicList, {
+	//编辑列数组(大小写不区分)
+	editColumns: null,
+	initalizeDOM: function () {
+		shr.custom.CustomDynamicList.superClass.initalizeDOM.call(this);
+	},
+	/**
+	 * 返回
+	 */
+	backAction: function () {
+		var self = this;
+		self.beforeSave();
+		if (self.checkEditCell()) {
+			shr.showConfirm("您有编辑数据未保存,是否忽略?", function () {
+				self.back();
+			}, function () {
+				return;
+			});
+		} else {
+			self.back();
+		}
+	},
+	/**
+	 * 获取可以编辑列
+	 * @returns 
+	 */
+	getEditColumns: function () {
+		return this.editColumns;
+	},
+	/**
+	* 扩展jqgrid options,供子类复写
+	*/
+	extendGridOptions: function (options) {
+		var _self = this;
+		var editCol = _self.getEditColumns();
+		$.extend(true, options, {
+			gridOption: {
+				cellEdit: true,
+				cellsubmit: 'clientArray'
+			}
+		});
+		$.extend(true, options.gridConfig, {
+			editCol: editCol
+		});
+
+		_self.editColumnsSetting = _self.initData.editColumnsSetting;
+		if (_self.editColumnsSetting && !$.isEmptyObject(_self.editColumnsSetting) && options.gridConfig) {
+			var columns = options.gridConfig.columns;
+			if (columns) {
+				$.each(columns, function (key, value) {
+					if (value) {
+						var name = value.name;
+						var editSetting = _self.editColumnsSetting[name];
+						if (editSetting) {
+							$.extend(value, editSetting);
+							if (value.editable && (value.editable == "true" || value.editable == true)) {
+								if (value.formatter && value.formatter == "promptBox") {
+									if (options.datatype == "json") {
+										value.name = value.name + ".*";
+									}
+								}
+							}
+						}
+					}
+				});
+			}
+		}
+	},
+	/**
+	 * 处理表格操作
+	 * @param {*} options 
+	 */
+	handleGridOptions: function (options) {
+		var columns = options.gridConfig.columns;
+		var editCol = options.gridConfig.editCol;
+		for (var i = 0; editCol && i < editCol.length; i++) {
+			editCol[i] = editCol[i].toUpperCase();
+		}
+		if (editCol && editCol.length > 0 && columns && columns.length > 0) {
+			for (var i = 0; i < columns.length; i++) {
+				var column = columns[i];
+				var columnName = column.name;
+				var index = $.inArray(columnName.toUpperCase(), editCol);
+				if (index >= 0) {
+					column.editable = true;
+					if ("number" == column.type.toLowerCase() || "double" == column.type.toLowerCase() || "integer" == column.type.toLowerCase() || "bigdecimal" == column.type.toLowerCase()) {
+						column.edittype = 'numberfield';
+						column.editoptions = { maxlength: '50' };
+						column.editoptions.inputJson = column.extendOptions.numberOptions;
+					} else if ("date" == column.type.toLowerCase()) {
+						column.edittype = 'shrDateTimePicker';
+						column.formatter = 'shrDateTimePicker';
+					} else if (!column.edittype) {
+						column.edittype = 'shrtext';
+						column.editoptions = { maxlength: '100' };
+					}
+					column.classes = "cellEditItem";
+				}
+			}
+		}
+		$.extend(true, options, options.gridOption);
+	},
+	/**
+	* 设置插件,非002信息集必须复写
+	*/
+	getParamPlus: function () {
+		return {};
+	},
+	/**
+	 * 获取插件过滤条件,非002信息集必须复写
+	 */
+	getPlusFilterItems: function () {
+		return null;
+	},
+
+	/**
+	* 判断是否存在修改的单元格
+	*/
+	checkEditCell: function () {
+		var _self = this;
+		var tds = $("#grid td[class*='dirty-cell']");
+		//判断是否存在已经修改但是没有切换的单元格
+		var editCell = $("#grid input[type='text']");
+		if (tds && tds.length > 0) {
+			return true;
+		} else {
+			if (editCell) {
+				var value = $("#grid input[type='text']").parent().attr('title');
+				if (editCell.val() != value) {
+					return true;
+				}
+			}
+		}
+		return false;
+	},
+	/*
+	 * 确认是否存在已经修改但是没有保存的数据
+	 */
+	dynCalonfirm: function (message, action, cancel) {
+		shr.msgHideAll();
+		var _self = this;
+		//		var tds = $("#grid td[class='dirty-cell']");
+		if (_self.checkEditCell()) {
+			var msg = top.Messenger().post({
+				message: message,
+				hideAfter: null,
+				actions: {
+					retry: {
+						label: '确认',
+						auto: false,
+						delay: 0,
+						showCloseButton: true,
+						action: function () {
+							shr.msgHideAll();
+							if (action && $.isFunction(action)) {
+								action.call(this);
+							}
+						}
+					},
+					cancel: {
+						label: '取消',
+						action: function () {
+							shr.msgHideAll();
+							if (cancel && $.isFunction(cancel)) {
+								cancel.call(this);
+							} else {
+								return msg.cancel();
+							}
+						}
+					}
+				}
+			});
+			return msg;
+		} else {
+			shr.msgHideAll();
+			if (action && $.isFunction(action)) {
+				action.call(this);
+			}
+		}
+	},
+	/**
+	 * 校验 子类可重写
+	 * @returns 
+	 */
+	validate: function () {
+		// shr.showWarning({
+		// 	message: "提示",
+		// });
+		return true;
+	},
+	/**
+	* 组装保存时传至服务端的数据 有编辑列 子类必须重写
+	*/
+	assembleSaveData: function (action) {
+		// var _self = this;
+		// var data = _self.prepareParam(action + 'Action');
+		// data.method = action;
+		// //data.operateState = _self.getOperateState();
+		// data.model = shr.toJSON(_self.assembleModel());
+		// // relatedFieldId
+		// var relatedFieldId = this.getRelatedFieldId();
+		// if (relatedFieldId) {
+		// 	data.relatedFieldId = relatedFieldId;
+		// }
+
+		// return data;
+	},
+	/**
+	* 根据列名称获取字段类型
+	*/
+	getColumnType: function (col) {
+		var cols = $('#dynamicGrid').data("options").gridConfig.columns;
+		var item;
+		for (var i = 0; i < cols.length; i++) {
+			item = cols[i];
+			if (col.toUpperCase() == item.name.toUpperCase()) {
+				return item.type;
+			}
+		}
+		//默认数字
+		return "NUMBER";
+	},
+	//判断是否为数字,整数位和小数位分别不超过10位
+	checkNumValid: function (value, type) {
+		var mesasage;
+		if (value == null) {
+			return true;
+		}
+		value = value.toString();
+		if (type != undefined && !type) {//type为空默认校验数字
+			mesasage = "未获取到该列的数据类型";
+		}
+		if ('NUMBER' == type.toUpperCase() || 'INTEGER' == type.toUpperCase() || 'BIGDECIMAL' == type.toUpperCase()) {
+			// if (!/^-?[0-9]{1,10}\.?[0-9]{0,5}$/.test(value)) {
+			// 	return false;
+			// }
+			// 移除小数点和指数符号后的长度就是有效数字位数
+			let significantDigits = value.replace('.', '').replace('e+', '').length;
+			if (significantDigits > 12) {
+				return false;
+			}
+		}
+		return true;
+	},
+	/**
+	 * 保存前置方法
+	 */
+	beforeSave: function () {
+		var _self = this;
+		//将处于编辑状态的单元格执行savecell方法
+		var $table = $("#grid")[0];
+		var iRow = $table.p.iRow;
+		var iCol = $table.p.iCol;
+		$("#grid").jqGrid("saveCell", iRow, iCol);
+		//var tds = $("#grid td[class*='dirty-cell']");
+	},
+	/**
+	* 增加action参数,执行保存后继续执行其他方法
+	*/
+	saveDynGridAction: function (action) {
+		if (this.validate()) {
+			var _self = this;
+			this.beforeSave();
+			if (!_self.checkEditCell()) {
+				shr.showWarning({
+					message: "您没有修改列表中的数据,不需要保存!"
+				});
+				return;
+			}
+			try {
+				var data = _self.assembleSaveData(action);
+			} catch (error) {
+				// 捕获到异常后的处理代码
+				shr.showWarning({
+					message: error.message,
+					hideAfter: 3
+				});
+				return;
+			}
+			if (!data) {
+				shr.showWarning({
+					message: "请求参数为空!"
+				});
+				return;
+			}
+			$.block.show();
+			_self.remoteCall({
+				method: "saveDynGrid",
+				async: false,
+				param: { modi: JSON.stringify(data) },
+				success: function (res) {
+					//存在action则先不刷新
+					if (action && $.isFunction(action)) {
+						action.call(this);
+					} else {
+						shr.showInfo({
+							message: res,
+							hideAfter: 3
+						});
+						_self.queryGrid();
+					}
+				},
+				error: function (res) {
+					shr.showError({
+						message: res.summary
+					});
+				},
+				complete: function (jqXHR, textStatus) {
+					if (jqXHR.responseText.indexOf("\"result\":\"error\"") > 0) {
+						$.block.hide();
+					}
+				}
+			});
+		}
+	},
+	// /**
+	//  * 描述: 导入action
+	//  */
+	// importAction: function () {
+	// 	var self = this;
+	// 	//自定义参数
+	// 	//var parentId = shr.getUrlParam('parentId');
+	// 	var customParam = {};
+	// 	self.setFastFilterMap();
+	// 	this.setGridTreeParam();
+	// 	this.setGridCustomParam();
+	// 	//this.setBotpFilterItems($grid);
+	// 	//this.queryFastFilterGrid();
+	// 	// selector
+	// 	// var selector = this.getSelector();
+	// 	// if (typeof selector !== 'undefined') {
+	// 	// 	$grid.setGridParam({ selector: selector });
+	// 	// }
+	// 	// filter
+	// 	var filterItems = this.getFilterItems();
+	// 	filterItems = shr.strEscape(filterItems);
+	// 	customParam.filterItems = filterItems;
+
+	// 	// fastFilter
+	// 	var fastFilterItems = this.getFastFilterItems();
+	// 	if (fastFilterItems) {
+	// 		customParam.fastFilterItems = JSON.stringifyOnce(fastFilterItems);
+	// 	}
+	// 	//seniorFilter
+	// 	var advancedFilter = this.getAdvancedFilterItems();
+	// 	if (self.fastFilterMap && self.fastFilterMap.fastFilterItems && self.isReturn) {
+	// 		advancedFilter = self.fastFilterMap.fastFilterItems.advancedFilter;
+	// 	}
+	// 	if (advancedFilter) {
+	// 		customParam.advancedFilter = JSON.stringifyOnce(advancedFilter);
+	// 	} else {
+	// 		customParam.advancedFilter = null;
+	// 	}
+	// 	//gridHeadFilter
+	// 	var gridHeadFilter = this.getGridHeadFilterItems(advancedFilter);
+	// 	if (gridHeadFilter) {
+	// 		customParam.advancedFilter = JSON.stringifyOnce(gridHeadFilter);
+	// 	}
+	// 	// sorter
+	// 	var sorterItems = this.getSorterItems();
+	// 	if (sorterItems) {
+	// 		customParam.sorterItems = sorterItems;
+	// 	}
+	// 	var keyField = this.getBillIdFieldName();
+	// 	if (keyField) {
+	// 		customParam.keyField = keyField;
+	// 	}
+	// 	self.beforeSave();
+	// 	if (self.checkEditCell()) {
+	// 		shr.showConfirm("您有编辑数据未保存,是否忽略?", function () {
+	// 			self.doImportData('import', customParam);
+	// 		}, function () {
+	// 			return;
+	// 		});
+	// 	} else {
+	// 		self.doImportData('import', customParam);
+	// 	}
+	// },
+});
+

+ 29 - 0
js/addon/custom/js/projectbonus/bonusCycleEdit.js

@@ -0,0 +1,29 @@
+/**
+ * 奖金周期表Edit.js
+ */
+shr.defineClass("shr.custom.BonusCycleEdit", shr.framework.Edit, {
+	initalizeDOM: function () {
+		shr.custom.BonusCycleEdit.superClass.initalizeDOM.call(this);
+	},
+	/**
+	 * 取消
+	 */
+	cancelAction: function () {
+		if (this.getOperateState().toUpperCase() == 'ADDNEW') {
+			if (this.isFromF7()) {
+				dialogClose(null);
+			} else {
+				this.back();
+			}
+		} else {
+			this.back();
+		}
+	},
+	/**
+	 * 返回
+	 */
+	backAction: function () {
+		this.back();
+	},
+});
+

+ 37 - 0
js/addon/custom/js/projectbonus/bonusCycleList.js

@@ -0,0 +1,37 @@
+/**
+ * 奖金周期表list.js
+ */
+shr.defineClass("shr.custom.BonusCycleList", shr.framework.List, {
+	initalizeDOM: function () {
+		shr.custom.BonusCycleList.superClass.initalizeDOM.call(this);
+	},
+	/**
+	 * 查看
+	 */
+	viewAction: function (billId, rowid) {
+		// 编辑界面禁用,则直接返回
+		if (this.editViewDisable) {
+			return;
+		}
+		this.reloadPage({
+			//uipk: "com.kingdee.eas.custom.projectbonus.app.BonusCycleBusDepProject.list",
+			uipk: "com.kingdee.eas.custom.projectbonus.app.BonusCycle.dynamicList",
+			parentId: billId
+		});
+	},
+	/**
+	 * 修改周期名称
+	 */
+	updateCycleNameAction: function () {
+		var _self = this;
+		var billId = this.getSelectedIds();
+		if (billId != '' && billId != undefined) {
+			this.reloadPage({
+				uipk: this.getEditUIPK(),
+				billId: billId,
+				method: 'edit'
+			});
+		}
+	},
+});
+

+ 28 - 0
js/addon/custom/js/projectbonus/bonusCyclePrincipalList.js

@@ -0,0 +1,28 @@
+/**
+ * 奖金周期表负责人list.js
+ */
+shr.defineClass("shr.custom.BonusCyclePrincipalList", shr.framework.List, {
+	initalizeDOM: function () {
+		shr.custom.BonusCyclePrincipalList.superClass.initalizeDOM.call(this);
+	},
+	/**
+	 * 查看
+	 */
+	viewAction: function (billId, rowid) {
+		// 编辑界面禁用,则直接返回
+		if (this.editViewDisable) {
+			return;
+		}
+		this.reloadPage({
+			uipk: this.getEditUIPK(),
+			parentId: billId
+		});
+	},
+	/**
+	 * 返回
+	 */
+	backAction: function () {
+		this.back();
+	},
+});
+

+ 191 - 0
js/addon/custom/js/projectbonus/busDepProjectDynamicList.js

@@ -0,0 +1,191 @@
+/**
+ * 事业部项目表动态list.js
+ */
+shr.defineClass("shr.custom.BusDepProjectDynamicList", shr.custom.CustomDynamicList, {
+	//可编辑列 数组(不区分大小写)
+	editColumns: [],
+	isSum: false,
+	initalizeDOM: function () {
+		//新增编辑列
+		this.editColumns.push("principal.name");
+		this.editColumns.push("bdp.notprincipalpropor");
+		this.editColumns.push("bdp.bonusAmount");
+		this.editColumns.push("bdp.principalpropor");
+		this.editColumns.push("bdp.totalbonushalf");
+		this.editColumns.push("bdp.totalbonushalf");
+		this.editColumns.push("bdp.totalbonusreal");
+		this.editColumns.push("bdp.directmanprojbonus");
+		this.editColumns.push("bdp.contramanprojbonus");
+		this.editColumns.push("bdp.condmanprojectbonus");
+		this.editColumns.push("bdp.stramanprojectbonus");
+		this.editColumns.push("bdp.bonusadjustment");
+		this.editColumns.push("bdp.bonusadjustmentdesc");
+		this.editColumns.push("bdp.initialallocationratio1");
+		this.editColumns.push("bdp.initialallocationratio2");
+		this.editColumns.push("bdp.initialallocationratio3");
+		shr.custom.BusDepProjectDynamicList.superClass.initalizeDOM.call(this);
+	},
+	// 根据动态列表配置 取业务主键
+	getBillIdFieldName: function () {
+		return 'bdp.id';
+	},
+	//导出选中
+	getExportFieldName:function(){
+		return 'bdp.id';
+	},
+	/**
+	* 描述: 维护奖金分配人员明细
+	*/
+	optionPersonnelDetailAction: function () {
+		var self = this;
+		//自定义参数
+		var parentId = shr.getUrlParam('parentId');
+		self.beforeSave();
+		if (self.checkEditCell()) {
+			shr.showConfirm("您有编辑数据未保存,是否忽略?", function () {
+				self.reloadPage({
+					uipk: "com.kingdee.eas.custom.projectbonus.app.PersonnelDetail.dynamicList",
+					parentId: parentId
+				});
+			}, function () {
+				return;
+			});
+		} else {
+			self.reloadPage({
+				uipk: "com.kingdee.eas.custom.projectbonus.app.PersonnelDetail.dynamicList",
+				parentId: parentId
+			});
+		}
+	},
+	/**
+	 * 描述: 导入action
+	 */
+	importAction: function () {
+		var self = this;
+		//自定义参数
+		var parentId = shr.getUrlParam('parentId');
+		var customParam = { "parentId": parentId }
+		self.beforeSave();
+		if (self.checkEditCell()) {
+			shr.showConfirm("您有编辑数据未保存,是否忽略?", function () {
+				self.doImportData('import', customParam);
+			}, function () {
+				return;
+			});
+		} else {
+			self.doImportData('import', customParam);
+		}
+	},
+	/**
+	 * 同步事业部项目
+	 */
+	syncDepProjectAction: function () {
+		var self = this;
+		var parentId = shr.getUrlParam('parentId');
+		var options = {
+			action: 'syncDepProject',
+			uipk: this.uipk,
+			type: 'POST',
+			param: {
+				parentId: parentId
+			},
+			success: function (res) {
+				//重新查询数据
+				self.queryGrid();
+				shr.showInfo({
+					message: res,
+					hideAfter: 3
+				});
+			},
+		};
+		self.beforeSave();
+		if (self.checkEditCell()) {
+			shr.showConfirm("您有编辑数据未保存,是否忽略?", function () {
+				shr.remoteCall(options);
+			}, function () {
+				return;
+			});
+		} else {
+			shr.remoteCall(options);
+		}
+	},
+	/**
+	 * 获得自定义过滤条件,供子类覆写使用
+	 */
+	getCustomFilterItems: function () {
+		var parentId = shr.getUrlParam('parentId');
+		return "bonusCycle.id = '" + parentId + "' and busdep.id is not null"
+	},
+	/**
+	* 组装保存时传至服务端的数据
+	*/
+	assembleSaveData: function (action) {
+		var _self = this;
+		//组装需要修改的数据
+		var data = [];
+		var meta;
+		var id, column, value, cur, element, personCode, datatype;
+		var tds = $("#grid td[class*='dirty-cell']");
+		var $table = $("#grid")[0];
+
+		for (var i = 0; i < tds.length; i++) {
+			//获取父节点,以获取对应id
+			meta = {};
+			var cur = $(tds[i]);
+			//获取输入的内容,而不是转以后的字符实体,同时对单引号处理
+
+			fid = cur.parent().attr('id');
+			element = cur.attr('aria-describedby').replace('grid_', '');
+			value = $($table).getCell(fid, element);
+			//value = cur.text().replace(/\'/g, "''").trim();
+			fid = cur.parent().attr('id');
+			element = cur.attr('aria-describedby').replace('grid_', '');
+			datatype = _self.getColumnType(element);
+			if ("promptbox" == datatype) {
+				column = element.split('.')[0];
+				value = value["id"];
+			} else {
+				column = element.split('.')[1];
+			}
+			//列表需要显示id列
+			id = $("#" + _self.getEscapeChars(fid) + " td[aria-describedby='grid_bdp\\.id']").attr('title');
+			// //校验输入内容
+
+			if (!_self.checkNumValid(value, datatype)) {
+				$(tds[i]).focus();
+				$(tds[i]).css({
+					"border": "solid 2px red"
+				});
+				throw new Error("请输入正确的格式");
+			}
+			meta.fid = id;
+			meta.column = column;
+			meta.value = value;
+			meta.type = datatype;
+			data.push(meta);
+		}
+		return data;
+	},
+	/**
+	 * 默认的action处理方法
+	 */
+	defaultBatchActionHandle: function (option) {
+		var self = this;
+		var selectedIds = this.getSelectedIds();
+		if (!selectedIds) {
+			shr.showWarning({ message: "请先选中数据!", hideAfter: 3 })
+			return;
+		}
+		self.beforeSave();
+		if (self.checkEditCell()) {
+			shr.showConfirm("您有编辑数据未保存,是否忽略?", function () {
+				shr.custom.BusDepProjectDynamicList.superClass.defaultBatchActionHandle.call(self, option);
+			}, function () {
+				return;
+			});
+		} else {
+			shr.custom.BusDepProjectDynamicList.superClass.defaultBatchActionHandle.call(this, option);
+		}
+	},
+});
+

+ 16 - 0
js/addon/custom/js/projectbonus/busDepProjectList.js

@@ -0,0 +1,16 @@
+/**
+ * 事业部项目表动态list.js
+ */
+shr.defineClass("shr.custom.BusDepProjectList", shr.framework.List, {
+	initalizeDOM: function () {
+		shr.custom.BusDepProjectList.superClass.initalizeDOM.call(this);
+	},
+	/**
+	 * 获得自定义过滤条件,供子类覆写使用
+	 */
+	getCustomFilterItems: function () {
+		var billId = shr.getUrlParam('parentId');
+		return "bonusCycle.id = '" + billId + "'"
+	},
+});
+

+ 124 - 0
js/addon/custom/js/projectbonus/detailDynamicList.js

@@ -0,0 +1,124 @@
+/**
+ * 分配人员明细列表list.js
+ */
+shr.defineClass("shr.custom.DetailDynamicList", shr.custom.CustomDynamicList, {
+	//可编辑列 数组(不区分大小写)
+	editColumns: [],
+	isSum: false,
+	initalizeDOM: function () {
+		//新增编辑列
+		this.editColumns.push("bdpapd.functioncoefficient");
+		this.editColumns.push("bdpapd.energyinputcoeff");
+		this.editColumns.push("bdpapd.performancegradeq1");
+		this.editColumns.push("bdpapd.performancegradeq2");
+		this.editColumns.push("bdpapd.performancecoeffq1");
+		this.editColumns.push("bdpapd.performancecoeffq2");
+		this.editColumns.push("bdpapd.bonusduedate");
+		this.editColumns.push("bdpapd.bonusstartingdate");
+		this.editColumns.push("bdpapd.initialproportion");
+		shr.custom.DetailDynamicList.superClass.initalizeDOM.call(this);
+		var self = this;
+		$('#busDep').shrPromptBox("option", {
+			//确定按钮设置值,之后执行方法
+			afterOK: function (datas, e) {
+				//查询表格数据
+				self.queryGrid();
+			},
+			//open方法里调用
+			verifyBeforeOpenCallback: function (e, value) {
+				var parentId = shr.getUrlParam('parentId');
+				$("#busDep").shrPromptBox("setFilter", "id in ( SELECT CFBusDepID FROM CT_PB_BONUSCYCLEBUSDEPPROJECT where FParentID ='" + parentId + "' and CFType='事业部' and CFState = '1')");
+			},
+		});
+	},
+	// 根据动态列表配置 取业务主键
+	getBillIdFieldName: function () {
+		return 'bDPAPD.id';
+	},
+
+	/**
+	 * 描述: 导入action
+	 */
+	importAction: function () {
+		//自定义参数
+		var parentId = shr.getUrlParam('parentId');
+		var customParam = { "parentId": parentId }
+		this.doImportData('import', customParam);
+	},
+
+	/**
+	 * 获得自定义过滤条件,供子类覆写使用
+	 */
+	getCustomFilterItems: function () {
+		var parentId = shr.getUrlParam('parentId');
+		var busDepIds = $("#busDep_el").val();
+		var filter = "bonusCycle.id = '" + parentId + "' and bDPAPD.id is not null";
+		if (busDepIds) {
+			busDepIds = busDepIds.replace(/,/g, "','");
+			return filter += " and busDep.id in ('" + busDepIds + "')";
+		}
+		return filter;
+	},
+	/**
+	* 组装保存时传至服务端的数据
+	*/
+	assembleSaveData: function (action) {
+		var _self = this;
+		//组装需要修改的数据
+		var data = [];
+		var meta;
+		var id, column, value, cur, element, personCode, datatype;
+		var tds = $("#grid td[class*='dirty-cell']");
+		var $table = $("#grid")[0];
+
+		for (var i = 0; i < tds.length; i++) {
+			//获取父节点,以获取对应id
+			meta = {};
+			var cur = $(tds[i]);
+			//获取输入的内容,而不是转以后的字符实体,同时对单引号处理
+
+			fid = cur.parent().attr('id');
+			element = cur.attr('aria-describedby').replace('grid_', '');
+			value = $($table).getCell(fid, element);
+			//value = cur.text().replace(/\'/g, "''").trim();
+			fid = cur.parent().attr('id');
+			element = cur.attr('aria-describedby').replace('grid_', '');
+			datatype = _self.getColumnType(element);
+			if ("promptbox" == datatype) {
+				column = element.split('.')[0];
+				value = value["id"];
+			} else {
+				column = element.split('.')[1];
+			}
+			//列表需要显示id列
+			id = $("#" + _self.getEscapeChars(fid) + " td[aria-describedby='grid_bdp\\.id']").attr('title');
+			// //校验输入内容
+
+			if (!_self.checkNumValid(value, datatype)) {
+				$(tds[i]).focus();
+				$(tds[i]).css({
+					"border": "solid 2px red"
+				});
+				throw new Error("请输入正确的格式");
+			}
+			meta.fid = id;
+			meta.column = column;
+			meta.value = value;
+			meta.type = datatype;
+			data.push(meta);
+		}
+		return data;
+	},
+	/**
+	 * 默认的action处理方法
+	 */
+	defaultBatchActionHandle: function (option) {
+		var selectedIds = this.getSelectedIds();
+		if (!selectedIds) {
+			shr.showWarning({ message: "请先选中数据!", hideAfter: 3 })
+			return;
+		}
+		shr.custom.BusDepProjectDynamicList.superClass.defaultBatchActionHandle.call(this, option);
+	},
+});
+

+ 137 - 0
js/addon/custom/js/projectbonus/detailPrincipalDynamicList.js

@@ -0,0 +1,137 @@
+/**
+ * 分配人员明细动态list.js(负责人)
+ */
+shr.defineClass("shr.custom.DetailPrincipalDynamicList", shr.custom.CustomDynamicList, {
+	//可编辑列 数组(不区分大小写)
+	editColumns: [],
+	isSum: false,
+	initalizeDOM: function () {
+		//新增编辑列
+		this.editColumns.push("person.name");
+		this.editColumns.push("bdpapd.functioncoefficient");
+		this.editColumns.push("bdpapd.energyinputcoeff");
+		this.editColumns.push("bdpapd.performancegradeq1");
+		this.editColumns.push("bdpapd.performancegradeq2");
+		this.editColumns.push("bdpapd.performancecoeffq1");
+		this.editColumns.push("bdpapd.performancecoeffq2");
+		this.editColumns.push("bdpapd.bonusduedate");
+		this.editColumns.push("bdpapd.bonusstartingdate");
+		this.editColumns.push("bdpapd.initialproportion");
+		shr.custom.DetailPrincipalDynamicList.superClass.initalizeDOM.call(this);
+		var self = this;
+		$('#busDep').shrPromptBox("option", {
+			//确定按钮设置值,之后执行方法
+			afterOK: function (datas, e) {
+				//查询表格数据
+				self.queryGrid();
+			},
+			//open方法里调用
+			verifyBeforeOpenCallback: function (e, value) {
+				var parentId = shr.getUrlParam('parentId');
+				var options = {
+					action: 'getBusDepIdStrByParentId',
+					uipk: this.uipk,
+					type: 'POST',
+					async: false,
+					param: {
+						parentId: parentId
+					},
+					success: function (res) {
+						$("#busDep").shrPromptBox("setFilter", "id in ( " + res + ")");
+					},
+				};
+				shr.remoteCall(options);
+			}
+		});
+	},
+	// 根据动态列表配置 取业务主键
+	getBillIdFieldName: function () {
+		return 'bDPAPD.id';
+	},
+
+	/**
+	 * 描述: 导入action
+	 */
+	importAction: function () {
+		//自定义参数
+		var parentId = shr.getUrlParam('parentId');
+		var customParam = { "parentId": parentId }
+		this.doImportData('import', customParam);
+	},
+
+	/**
+	 * 获得自定义过滤条件,供子类覆写使用
+	 */
+	getCustomFilterItems: function () {
+		var parentId = shr.getUrlParam('parentId');
+		var busDepIds = $("#busDep_el").val();
+		var filter = "bonusCycle.id = '" + parentId + "' and bDPAPD.id is not null";
+		if (busDepIds) {
+			busDepIds = busDepIds.replace(/,/g, "','");
+			return filter += " and busDep.id in ('" + busDepIds + "')";
+		}
+		return filter;
+	},
+	/**
+	* 组装保存时传至服务端的数据
+	*/
+	assembleSaveData: function (action) {
+		var _self = this;
+		//组装需要修改的数据
+		var data = [];
+		var meta;
+		var id, column, value, cur, element, personCode, datatype;
+		var tds = $("#grid td[class*='dirty-cell']");
+		var $table = $("#grid")[0];
+
+		for (var i = 0; i < tds.length; i++) {
+			//获取父节点,以获取对应id
+			meta = {};
+			var cur = $(tds[i]);
+			//获取输入的内容,而不是转以后的字符实体,同时对单引号处理
+
+			fid = cur.parent().attr('id');
+			element = cur.attr('aria-describedby').replace('grid_', '');
+			value = $($table).getCell(fid, element);
+			//value = cur.text().replace(/\'/g, "''").trim();
+			fid = cur.parent().attr('id');
+			element = cur.attr('aria-describedby').replace('grid_', '');
+			datatype = _self.getColumnType(element);
+			if ("promptbox" == datatype) {
+				column = element.split('.')[0];
+				value = value["id"];
+			} else {
+				column = element.split('.')[1];
+			}
+			//列表需要显示id列
+			id = $("#" + _self.getEscapeChars(fid) + " td[aria-describedby='grid_bdp\\.id']").attr('title');
+			// //校验输入内容
+
+			if (!_self.checkNumValid(value, datatype)) {
+				$(tds[i]).focus();
+				$(tds[i]).css({
+					"border": "solid 2px red"
+				});
+				throw new Error("请输入正确的格式");
+			}
+			meta.fid = id;
+			meta.column = column;
+			meta.value = value;
+			meta.type = datatype;
+			data.push(meta);
+		}
+		return data;
+	},
+	/**
+	 * 默认的action处理方法
+	 */
+	defaultBatchActionHandle: function (option) {
+		var selectedIds = this.getSelectedIds();
+		if (!selectedIds) {
+			shr.showWarning({ message: "请先选中数据!", hideAfter: 3 })
+			return;
+		}
+		shr.custom.DetailPrincipalDynamicList.superClass.defaultBatchActionHandle.call(this, option);
+	},
+});
+