Переглянути джерело

提交转正调动页面调整前端代码

Heyuan 3 днів тому
батько
коміт
3d70e57677

+ 56 - 0
js/deploy/easweb.ear/eas_web.war/addon/custom/css/empHireBizBillHrManEditEx.css

@@ -0,0 +1,56 @@
+/* 容器样式 */
+.table-container {
+    width: 100%;
+    /* max-width: 2000px; */
+    margin: 20px auto;
+    overflow-x: auto;
+}
+
+/* 基础表格样式 */
+.responsive-table {
+    width: 100%;
+    border-collapse: collapse;
+    background: white;
+    box-shadow: 0 1px 10px rgba(0,0,0,0.1);
+    font-family: 'Segoe UI', sans-serif;
+}
+
+/* 表头样式 */
+.responsive-table th {
+    background: #f8f9fa;
+    padding: 12px 5px;
+    text-align: left;
+    font-weight: 600;
+    border-bottom: 2px solid #dee2e6;
+    color: #495057;
+}
+
+/* 数据单元格样式 */
+.responsive-table td {
+    padding: 12px 5px;
+    border-bottom: 1px solid #dee2e6;
+    color: #6c757d;
+}
+
+/* 斑马纹效果 */
+.responsive-table tr:nth-child(even) {
+    background-color: #f8f9fa;
+}
+
+/* 响应式处理 */
+@media (max-width: 768px) {
+    .table-container {
+        width: 95%;
+        margin: 10px auto;
+    }
+    
+    .responsive-table {
+        min-width: 600px;
+    }
+}
+
+/* 悬停效果 */
+.responsive-table tr:hover {
+    background-color: #e9ecef;
+    transition: background-color 0.2s ease;
+}

+ 11 - 0
js/deploy/easweb.ear/eas_web.war/addon/custom/js/empHireBizBillAuditEditEx.js

@@ -0,0 +1,11 @@
+/**
+ * 转正审批JS继承专员JS
+ */
+shr.defineClass("shr.affair.EmpHireBizBillAuditEditEx", shr.affair.hrman.EmpHireBizBillHrManEditEx, {
+
+	initalizeDOM : function () {
+		shr.affair.EmpHireBizBillAuditEditEx.superClass.setUiClass("com.kingdee.eas.hr.affair.app.EmpHireBizBill.form");
+		shr.affair.EmpHireBizBillAuditEditEx.superClass.setBizBillInfoOsfName("getPersonEmpHireBizBillInfoService");
+		shr.affair.EmpHireBizBillAuditEditEx.superClass.initalizeDOM.call(this);
+	}
+});

+ 413 - 0
js/deploy/easweb.ear/eas_web.war/addon/custom/js/empHireBizBillHrManEditEx.js

@@ -0,0 +1,413 @@
+/**
+ * 转正申请扩展
+ */
+var customFields;
+shr.defineClass("shr.affair.hrman.EmpHireBizBillHrManEditEx", shr.affair.hrman.EmpHireBizBillHrManEdit, {
+	initalizeDOM: function () {
+		this.renderPersonInfoTable();
+		shr.affair.hrman.EmpHireBizBillHrManEditEx.superClass.initalizeDOM.call(this);
+	},
+	/**
+	* 根据personId和uipk关联查询出关联字段并赋值
+	*/
+	initDataFromStructure: function (personID) {
+		var self = this;
+		var uipk = shr.getUrlParam('uipk');
+		shr.callService({
+			serviceName: "getDataFromStructure",
+			param: {
+				personID: personID,
+				uiClass: uipk
+			},
+			async: true,
+			success: function (data) {
+				if (data && data.length > 0) {
+					$.each(data, function (i, v) {
+						//$('#' + v.name).shrTextField('setValue',v.value);
+						if (v.name) {
+							self.getField(v.name).shrTextField('setValue', v.value);
+							// if ("personnelCa_name" == v.name) {
+							// 	$("#personnelCa_nameEx").shrTextField("setValue", v.value)
+							// }else if ("salarysche_name" == v.name) {
+							// 	$("#salarysche_nameEx").shrTextField("setValue", v.value)
+							// }else if ("manageca_name" == v.name) {
+							$("#" + v.name + "Ex").shrTextField("setValue", v.value);
+							//}
+						}
+					})
+				}
+			}
+		})
+	},
+	setDepartmentValue: function (data) {
+		this.setF7Value("entrys.position.adminOrgUnit.department", data);
+		$('#entrys_position_adminOrgUnit_departmentEx').shrPromptBox("setValue", data);
+	},
+	/**
+	 * 初始化职位,如果是目标职位,则可选,如果是原职位,则不可选 
+	 */
+	initTargetPositionF7: function (data, isNeedUptVal) {
+		var self = this;
+		if (data[0] === undefined) {
+			return;
+		}
+		var needTargetPosition = true;
+		if (data && data[0]) {
+			var defineFieldState = data[0].defineFieldState;
+			if (defineFieldState != null) {
+				needTargetPosition = defineFieldState.needTargetPosition;
+			}
+		}
+		if (needTargetPosition) {
+			self.getField("entrys.position").shrPromptBox("enable");
+			$("#entrys_positionEx").shrPromptBox("enable");
+		} else {
+			self.getField("entrys.position").shrPromptBox("disable");
+			$("#entrys_positionEx").shrPromptBox("disable");
+		}
+	},
+
+	/**
+	* 初始化用工关系状态,根据OSF GetHrBizDefineByDefineIdService||GetHRBizDefineService 返回的参数做判断
+	* 
+	* 1只有一个默认带出可编辑,多个默认带出第一个且必填,无则灰
+	* 2目标用工关系状态为原目标用工关系状态时,尽管配置了出口用工关系,目标用工关系也是原用工关系
+	* @param isNeedUptVal 页面编辑时:false|页面新增时:true
+	*/
+	initOutEmpTypeF7: function (data, isNeedUptVal) {
+		var self = this,
+			needLaborState = true,
+			laborStateInitValue = null;
+		if (data && data[0]) {
+			var defineFieldState = data[0].defineFieldState;
+			if (defineFieldState != null) {
+				needLaborState = defineFieldState.needLaborState;
+			}
+			laborStateInitValue = defineFieldState.laborStateInitValue;
+		}
+		var outEmpType = $(data[0].outEmpType);
+		// 编辑浏览状态下不可以清空,新增状态或者变动操作修改后,先清空
+		if (isNeedUptVal == true) {
+			if (self.getFieldValue("entrys.empType")) {
+				$('#entrys_empType').shrPromptBox("setValue", null);
+			}
+			if ($('#entrys_empTypeEx')) {
+				$('#entrys_empTypeEx').shrPromptBox("setValue", null);
+			}
+			if (outEmpType.length == 1) {
+				self.getField("entrys.empType").shrPromptBox("setValueNoTrigger",
+					{
+						id: outEmpType[0].id,
+						name: outEmpType[0].name
+					});
+				$('#entrys_empTypeEx').shrPromptBox("setValueNoTrigger",
+					{
+						id: outEmpType[0].id,
+						name: outEmpType[0].name
+					});
+				$("#entrys_empType").shrPromptBox('option', 'required', false);
+				$("#entrys_empTypeEx").shrPromptBox('option', 'required', false);
+			}
+		}
+		//目标用工关系状态为原目标用工关系状态时,尽管配置了出口用工关系,目标用工关系也是原用工关系,
+		if (needLaborState) {//如果是目标用工关系状态
+			$('#entrys_empType').shrPromptBox("option", "required", true);
+			$('#entrys_empType').shrPromptBox("option", "readonly", false);
+			$('#entrys_empType').shrPromptBox("enable");
+			$('#entrys_empTypeEx').shrPromptBox("option", "required", true);
+			$('#entrys_empTypeEx').shrPromptBox("option", "readonly", false);
+			$('#entrys_empTypeEx').shrPromptBox("enable");
+		} else if (needLaborState == false) {//如果不是目标用工关系状态,则设置原用工关系状态
+			if (isNeedUptVal == true) {//编辑状态下不可以修改,新增状态或者变动操作修改后,才允许修改
+				// 如果有原用工关系状态,则带出原用工关系状态否则清空
+				if (self._currentPersonOrgInfo) {
+					var oldEmpTypeData = self._currentPersonOrgInfo.empType;
+					// 原用工关系状态
+					if (oldEmpTypeData != null) {
+						var entrys_oldEmpTypeValue = {
+							id: oldEmpTypeData.id,
+							name: oldEmpTypeData.name
+						}
+						$("#entrys_empType").shrPromptBox("setValue", entrys_oldEmpTypeValue);
+						$("#entrys_empTypeEx").shrPromptBox("setValue", entrys_oldEmpTypeValue);
+					}
+				} else {
+					$('#entrys_empType').shrPromptBox("setValue", null);
+					$('#entrys_empTypeEx').shrPromptBox("setValue", null);
+				}
+			}
+			$('#entrys_empType').shrPromptBox("option", "required", false);
+			$('#entrys_empType').shrPromptBox("disable");
+			$('#entrys_empTypeEx').shrPromptBox("option", "required", false);
+			$('#entrys_empTypeEx').shrPromptBox("disable");
+		}
+		var fliter = self.buildOutEmpTypeFilter(data);
+		$("#entrys_empType").shrPromptBox("setFilter", fliter);
+		$('#entrys_empTypeEx').shrPromptBox("setFilter", fliter);
+	},
+
+
+	/**
+	 *  子类处理 getPersonPosOrgInfo返回的值,给子类覆写 (转正和调动、离职、返聘退休等)
+	 * @param {*} data 
+	 */
+	initShrAffairBizBillData: function (data) {
+		shr.affair.hrman.EmpHireBizBillHrManEditEx.superClass.initShrAffairBizBillData.call(this, data);
+		var self = this,
+			personPosOrgData = data[0];
+		var personData = personPosOrgData.person,
+			oldPositionData = personPosOrgData.position,
+			empLaborRelationData = personPosOrgData.empLaborRelation;
+		var personPosOrgData = data[0];
+		var personData = personPosOrgData.person,
+			oldPositionData = personPosOrgData.position,
+			oldJobData = personPosOrgData.oldJob,
+			oldAdminOrgData = personPosOrgData.adminOrg,
+			oldCompanyData = personPosOrgData.company,
+			oldDepartment = personPosOrgData.department,
+			oldEmpPostRankData = personPosOrgData.oldEmpPostRank,
+			oldEmpTypeData = personPosOrgData.empType,
+			hrbizdefine = personPosOrgData.hrbizdefine;
+		//原员工状态
+		if (oldEmpTypeData != null) {
+			var entrys_oldEmpTypeValue = {
+				id: oldEmpTypeData.id,
+				name: oldEmpTypeData.name
+			}
+			$("#entrys_oldEmpTypeEx").shrPromptBox("setValue", entrys_oldEmpTypeValue);
+		}
+		if (empLaborRelationData) {
+			//预计转正日期
+			if (!empLaborRelationData.planFormalDate) {
+				$("#entrys_planFormalDateEx").shrDateTimePicker('setValue', "");
+			} else {
+				$("#entrys_planFormalDateEx").shrDateTimePicker('setValue', empLaborRelationData.planFormalDate);
+			}
+			//转正日期
+			if (!empLaborRelationData.formalDate) {
+				$("#entrys_bizDateEx").shrDateTimePicker('setValue', "");
+			} else {
+				$("#entrys_bizDateEx").shrDateTimePicker('setValue', empLaborRelationData.formalDate);
+				//self.changeOldDateHandler(null, self);
+			}
+		}
+
+		if (oldPositionData != null) {
+			var entrys_oldPositionValue = {
+				id: oldPositionData.id,
+				name: oldPositionData.name
+			}
+			//原职位
+			$("#entrys_oldPositionEx").shrPromptBox("setValue", entrys_oldPositionValue);
+			//var adminOrgUnitDetailData = self.getAdminOrgUnitDetailData(entrys_oldPositionValue.id);
+			//self.setOldOrgUnitLayerValue(adminOrgUnitDetailData);
+			//现职位
+			$("#entrys_positionEx").shrPromptBox("setValue", entrys_oldPositionValue);
+		}
+		if (oldJobData != null) {
+			var entrys_oldJobValue = {
+				id: oldJobData.id,
+				name: oldJobData.name
+			}
+			if ($('#entrys_oldJobEx') != null) {
+				//原职务
+				$("#entrys_oldJobEx").shrPromptBox("setValue", entrys_oldJobValue);
+			}
+			if ($('#entrys_jobEx') != null) {
+				//转正后职务
+				$("#entrys_jobEx").shrPromptBox("setValue", entrys_oldJobValue);
+			}
+		}
+		//当前职级
+		if (oldEmpPostRankData != null) {
+			if ($('#entrys_oldJobGradeEx') != null) {
+				$('#entrys_oldJobGradeEx').shrPromptBox("setValue", { id: oldEmpPostRankData.jobGradeId, name: oldEmpPostRankData.jobGradeName });
+			}
+		}
+		var oldDepartment = $("#entrys_oldAdminOrg").shrPromptBox("getValue");
+		//var department = $("#entrys_adminOrg").shrPromptBox("getValue");
+		$("#entrys_oldPosition_adminOrgUnit_departmentEx").shrPromptBox("setValue", oldDepartment)
+		$("#entrys_position_adminOrgUnit_departmentEx").shrPromptBox("setValue", oldDepartment)
+	},
+	/**
+	 * 渲染人员组织表格p
+	 */
+	renderPersonInfoTable: function () {
+		const $tbody = $("#myTable tbody");
+		const $tr1 = $("<tr></tr>");
+		$tr1.append("<td><div class='flex-c'>调整前</div></td>");
+		$tbody.append($tr1);
+		this.getF7Html("entrys_oldEmpType", $tr1);//原用工关系状态
+		this.getDateHtml("entrys_planFormalDate", $tr1);//预计转正日期
+		this.getTextFieldHtml("manageca_name", $tr1);//系统分类
+		this.getF7Html("entrys_oldPosition_adminOrgUnit_department", $tr1);//现任部门
+		this.getF7Html("entrys_oldPosition", $tr1);//现任职位
+		this.getF7Html("entrys_oldJobGrade", $tr1);;//当前职级
+		this.getTextFieldHtml("salarysche_name", $tr1);//计薪方式
+		this.getTextFieldHtml("personnelCa_name", $tr1);//人员类别
+		const $tr2 = $("<tr></tr>");
+		$tr2.append("<td><div class='flex-c'>调整后</div></td>");
+		$tbody.append($tr2);
+		this.getF7Html("entrys_empType", $tr2);//目标用工关系状态
+		this.getDateHtml("entrys_bizDate", $tr2);//实际转正日期
+		this.getF7Html("entrys_manageCa", $tr2);//系统分类
+		this.getF7Html("entrys_position_adminOrgUnit_department", $tr2);//转正后部门
+		this.getF7Html("entrys_position", $tr2);//转正后职位
+		this.getF7Html("entrys_jobGrade", $tr2);//转正后职级
+		this.getF7Html("entrys_salaryScheme", $tr2);//计薪方式
+		this.getF7Html("entrys_personnelCa", $tr2);//人员类别
+		//实际转正日期
+		$("#entrys_bizDateEx").change(function () {
+			var changeDate = $("#entrys_bizDateEx").shrDateTimePicker("getValue");//发生变化的日期值
+			$("#entrys_bizDate").shrDateTimePicker("setValue", changeDate);
+			self.changeOldDateHandler(null, self);
+			self.changeLeftCompanyDate(bizDate);
+		});
+	},
+
+	/**
+	 * 获取F7html
+	 * @returns 
+	 */
+	getF7Html: function (element, $tr) {
+		//判断元素是否存在
+		if ($('#' + element) == null) {
+			//元素不存在
+		}
+		var self = this;
+		var elementIdName = element + "Ex";
+		var elementName = elementIdName.replace("_", ".");
+		if ("VIEW" == self.getOperateState()) {
+			var html = '<td><div class="flex-c"><span id="' + elementIdName + '"></span></div></td>';
+			$tr.append(html);
+			//$tbody.append($tr);
+			var name = $("#" + element).html();
+			var id = $("#" + element).val();
+			var options = {
+				value: { id: id, name: name },
+				originalValue: id,
+				className: "field_input"
+			};
+			$("#" + elementIdName).shrFieldDisplay(options);
+		} else {
+
+			var value = $("#" + element).shrPromptBox("getValue");
+			var options = $("#" + element).shrPromptBox("option")
+			var validate = options.validate
+			options.id = elementIdName;
+			options.name = elementName;
+			options.value = value;
+			if (options.readonly != "readonly") {
+				//不等于只读时,绑定值改变事件,对原有字段同步更新值
+				options.onchange = function (e, value) {
+					if (value.current) {
+						$("#" + element).shrPromptBox("setValue", value.current)
+					} else {
+						$("#" + element).shrPromptBox("setValue", null)
+					}
+				}
+				options.verifyBeforeOpenCallback = function (event) {
+					var options = $("#" + element).shrPromptBox("option");
+					$("#" + elementIdName).shrPromptBox("setFilter", options.subWidgetOptions.filter);
+				}
+			}
+			var html = '<td><div class="flex-c"><input id="' + elementIdName + '" name="' + elementName + '" class="block-father input-height" type="text"  istotemplate="true"';
+			if (validate.includes("required:true")) {
+				html += ' required="true" ';
+			}
+			html += '></div></td>';
+			$tr.append(html);
+			$("#" + elementIdName).shrPromptBox(options);
+		}
+	},
+	/**
+	 * 获取日期html
+	 * @returns Date
+	 */
+	getDateHtml: function (element, $tr) {
+		//判断元素是否存在
+		var self = this;
+		var elementIdName = element + "Ex";
+		var elementName = elementIdName.replace("_", ".");
+		if ("VIEW" == self.getOperateState()) {
+			var html = '<td><div class="flex-c"><span id="' + elementIdName + '"></span></div></td>';
+			$tr.append(html);
+			var value = $("#" + element).html();
+			var options = {
+				value: value,
+				originalValue: value,
+				alias: value,
+				className: "field_input"
+			};
+			$("#" + elementIdName).shrFieldDisplay(options);
+		} else {
+			var value = $("#" + element).shrDateTimePicker("getValue");
+			var options = $("#" + element).shrDateTimePicker("option");
+			options.id = elementIdName;
+			options.name = elementName;
+			options.value = value;
+			var validate = options.validate
+			var html = '<td><div class="flex-c"><input id="' + elementIdName + '" name="' + elementName + '" class="block-father input-height" type="text" istotemplate="true"';
+			if (validate.includes("required:true")) {
+				html += ' required="true" ';
+			}
+			html += '></div></td>';
+			$tr.append(html);
+			$("#" + elementIdName).shrDateTimePicker(options);
+			if (options.readonly != 'readonly') {
+				//不等于只读时,绑定只改变事件,对原有字段同步更新值
+				$("#" + elementIdName).change(function () {
+					var changeDate = $("#" + elementIdName).shrDateTimePicker("getValue");//发生变化的日期值
+					$("#" + element).shrDateTimePicker("setValue", changeDate);
+				});
+			}
+		}
+	},
+	/**
+	* 获取文本字段html
+	* @returns 
+	*/
+	getTextFieldHtml: function (element, $tr) {
+		//判断元素是否存在
+		if ($('#' + element) == null) {
+			//元素不存在
+		}
+		var self = this;
+		var elementIdName = element + "Ex";
+		var elementName = elementIdName.replace("_", ".");
+		if ("VIEW" == self.getOperateState()) {
+			var html = '<td><div class="flex-c"><span id="' + elementIdName + '"></span></div></td>';
+			$tr.append(html);
+			//$tbody.append($tr);
+			var name = $("#" + element).html();
+			var id = $("#" + element).val();
+			var options = {
+				value: { id: id, name: name },
+				originalValue: id,
+				className: "field_input"
+			};
+			$("#" + elementIdName).shrFieldDisplay(options);
+		} else {
+
+			var value = $("#" + element).shrTextField("getValue");
+			var options = $("#" + element).shrTextField("option")
+			var validate = options.validate
+			options.id = elementIdName;
+			options.name = elementName;
+			options.value = value;
+			if (options.readonly != "readonly") {
+				//不等于只读时,绑定值改变事件,对原有字段同步更新值
+				options.onchange = function (e, value) {
+					if (value.current) {
+						$("#" + element).shrTextField("setValue", value.current)
+					} else {
+						$("#" + element).shrTextField("setValue", null)
+					}
+				}
+			}
+			var html = '<td><div class="flex-c"><input id="' + elementIdName + '" name="' + elementName + '" class="block-father input-height" type="text"  istotemplate="true"></div></td>';
+			$tr.append(html);
+			$("#" + elementIdName).shrTextField(options);
+		}
+	},
+});

+ 207 - 0
js/deploy/easweb.ear/eas_web.war/addon/custom/js/empSalaryItemDataPartEditEx.js

@@ -0,0 +1,207 @@
+/**
+ * 定调数据分区编辑界面JS
+ */
+
+shr.defineClass("shr.emp.EmpSalaryItemDataPartEditEx", shr.emp.EmpSalaryItemDataPartEdit, {
+    initalizeDOM: function () {
+        var _self = this;
+        shr.emp.EmpSalaryItemDataPartEditEx.superClass.initalizeDOM.call(this);
+    },
+    /**
+     * 渲染自定表格
+     */
+    redenerCustomTable: function () {
+        //隐藏标品表格
+        $("#salarytable-container").prev().hide()
+        //标品表格数据
+        var rowDatas = _self.$editGrid.getAllRowData();
+        console.log(rowDatas);
+        var preCmpDatas = window.parent.jsBinder.preCmpData;
+        console.log(preCmpDatas);
+        //
+        var preMoneySum = 0;
+        //年薪合计
+        var yearBonusBaseSum = 0;
+        //标准薪资合计
+        var salaryStandardSum = 0;
+        var operateState = this.getOperateState();
+        //扩展
+        const $thead = $("#salaryTable thead");
+        const $tbody = $("#salaryTable tbody");
+        //const $th = $("<tr><th>薪酬项</th><th>币别</th></tr>");
+        var $th = $("<tr><th>薪酬项</th></tr>");
+        $thead.append($th);
+        var $tr1 = $("<tr><td class='disabled edit-cell ui-state-highlight'>调整前</td></tr>");
+        $tbody.append($tr1);
+        var $tr2 = $("<tr><td class='disabled edit-cell ui-state-highlight'>调整后</td></tr>");
+        $tbody.append($tr2);
+        for (var i = 0; i < rowDatas.length; i++) {
+            var preMoney = 0;
+            var amount = 0;
+            var rowData = rowDatas[i];
+            var salaryItem = rowData.salaryItem;
+            //表头
+            var $th1 = "<th>" + salaryItem.name + "</th>";
+            $th.append($th1);
+            if ("ADDNEW" == operateState) {
+                for (var j = 0; j < preCmpDatas.length; j++) {
+                    var preCmpData = preCmpDatas[j]
+                    if (salaryItem.id && salaryItem.id == preCmpData.empAdjItemId) {
+                        //调整前金额
+                        preMoney = parseFloat(preCmpData.money);
+                        if ("ADJ021" == salaryItem.number) {
+                            //标准薪资合计
+                            preMoneySum += preMoney * 12;
+                        } else if ("ADJ029" == salaryItem.number) {
+                            //季度奖金基数 
+                            preMoneySum += preMoney * 4;
+                        } else if ("ADJ030" == salaryItem.number) {
+                            //年终奖基数 
+                            preMoneySum += preMoney;
+                        }
+                        break;
+                    }
+                }
+            } else {
+                //调整前金额
+                preMoney = parseFloat(rowData.preAmount ? rowData.preAmount : 0);
+                //调整后金额
+                amount = parseFloat(rowData.amount ? rowData.amount : 0);
+                if ("ADJ021" == salaryItem.number) {
+                    //标准薪资合计
+                    preMoneySum += preMoney * 12;
+                    yearBonusBaseSum += amount * 12;
+                } else if ("ADJ029" == salaryItem.number) {
+                    //季度奖金基数 
+                    preMoneySum += preMoney * 4;
+                    yearBonusBaseSum += amount * 4;
+                } else if ("ADJ030" == salaryItem.number) {
+                    //年终奖基数 
+                    preMoneySum += preMoney;
+                    yearBonusBaseSum += amount;
+                } else {
+                    //累加标准薪资合计
+                    //salaryStandardSum += amount;
+                }
+            }
+            //第一行
+            var $td1 = '<td role="gridcell" style="text-align:left;" class="disabled edit-cell ui-state-highlight" title="' + preMoney + '">' + preMoney + '</td>';
+            $tr1.append($td1);
+            //第二行
+            if ("ADJ021" == salaryItem.number) {
+                //标准薪资合计
+                var $td2 = '<td id="after_stdSalaryTotal" style="text-align:left;" class="disabled edit-cell ui-state-highlight" title="' + amount + '">' + amount + '</td>';
+            } else {
+                var $td2 = '';
+                if ("VIEW" != operateState) {
+                    $td2 = '<td><input id="after_' + salaryItem.id + '" type="number" min="0" maxlength="200" value="' + amount + '" ctrlrole="text" name="' + salaryItem.number + '" required="true" errorshowmode="float" class="block-father input-height cursor-pointer required"></td> ';
+                } else {
+                    $td2 = '<td id="after_stdSalaryTotal" style="text-align:left;" class="disabled edit-cell ui-state-highlight" title="' + amount + '">' + amount + '</td>';
+                }
+            }
+            $tr2.append($td2);
+            if (i == rowDatas.length - 1) {
+                //最后一次遍历,处理年薪合计
+                $th1 = "<th>年薪合计</th>";
+                $th.append($th1);
+                $td1 = '<td role="gridcell" style="text-align:left;" class="disabled edit-cell ui-state-highlight" title="' + preMoneySum + '" aria-describedby="empSalaryItemPartDataDetail_preAmount">' + preMoneySum + '</td>';
+                $tr1.append($td1);
+                $td2 = '<td id="after_moneySum" style="text-align:left;" class="disabled edit-cell ui-state-highlight" title="" aria-describedby="empSalaryItemPartDataDetail_preAmount">' + yearBonusBaseSum + '</td>';
+                $tr2.append($td2);
+            }
+        }
+        if ("VIEW" != operateState) {
+            var fields = $('[id*="after_"]');
+            fields.on("change", function (event) {
+                var number = event.currentTarget.name;
+                if ("ADJ021" != number && "ADJ029" != number && "ADJ030" != number) {
+                    //累加标准薪资合计
+                    var moneySum = _self.getAfterStdSalaryTotal()
+                    $("#after_stdSalaryTotal").html(moneySum);
+                }
+                //计算年薪合计
+                var moneySum = _self.getAfterMoneySum();
+                $("#after_moneySum").html(moneySum);
+            });
+        }
+    },
+
+    /**
+     * 组装数据
+     * @param {*} action 
+     * @returns 
+     */
+    assembleData: function (action) {
+        var _self = this;
+        var data = shr.assembleModel(_self.fields, _self.getWorkarea(), _self.uuid);
+        var empSalaryItemPartDataDetail = data.empSalaryItemPartDataDetail;
+        for (var i = 0; i < empSalaryItemPartDataDetail.length; i++) {
+            var empSalaryItemPartData = empSalaryItemPartDataDetail[i];
+            //薪酬项目编码
+            var number = empSalaryItemPartData.salaryItem.number
+            //调整后金额
+            var amount = 0;
+            if ("ADJ021" == number) {
+                amount = _self.getAfterStdSalaryTotal();
+            } else {
+                amount = parseFloat($("[name='" + number + "']").val() != '' ? $("[name='" + number + "']").val() : 0);
+            }
+            empSalaryItemPartData.amount = amount;
+            //调整前金额
+            var preAmount = empSalaryItemPartData.preAmount;
+            var modulationRatio = "0";
+            if (amount && preAmount) {
+                modulationRatio = parseFloat((amount - preAmount) / preAmount).toFixed(2) * 100;
+                modulationRatio = parseFloat(modulationRatio).toFixed(0);
+            }
+            //调幅比
+            empSalaryItemPartData.modulationRatio = modulationRatio + '%';
+            //顺序
+            empSalaryItemPartData.index = i;
+        }
+        return data; index
+    },
+    /**
+     * 获取调整后标准薪资合计金额
+     */
+    getAfterStdSalaryTotal: function () {
+        //基本工资标准
+        var baseStd = parseFloat($("[name='ADJ022']").val() != '' ? $("[name='ADJ022']").val() : 0);
+        //技能工资标准
+        var skillStd = parseFloat($("[name='ADJ023']").val() != '' ? $("[name='ADJ023']").val() : 0);
+        //岗位补助工资标准
+        var postAllowStd = parseFloat($("[name='ADJ024']").val() != '' ? $("[name='ADJ024']").val() : 0);
+        //加班工资标准
+        var otSalaryStd = parseFloat($("[name='ADJ025']").val() != '' ? $("[name='ADJ025']").val() : 0);
+        //学历补助标准
+        var eduAllowStd = parseFloat($("[name='ADJ026']").val() != '' ? $("[name='ADJ026']").val() : 0);
+        //绩效工资标准
+        var perfSalaryStd = parseFloat($("[name='ADJ027']").val() != '' ? $("[name='ADJ027']").val() : 0);
+        //费用补助
+        var costSubsidy = parseFloat($("[name='ADJ032']").val() != '' ? $("[name='ADJ032']").val() : 0);
+        //年薪合计 = 标准工资合计*12+季度奖基数*4+年终奖基数
+        var moneySum = baseStd + skillStd + postAllowStd + otSalaryStd + eduAllowStd + perfSalaryStd + costSubsidy;
+        return moneySum;
+    },
+    /**
+    * 获取调整后年薪合计
+    */
+    getAfterMoneySum: function () {
+        //标准薪资合计、季度奖金基数、年终奖基数 
+        var stdSalaryTotal = parseFloat($("#after_stdSalaryTotal").html());
+        var qBonusBase = parseFloat($("[name='ADJ029']").val() != '' ? $("[name='ADJ029']").val() : 0);
+        var yearBonusBase = parseFloat($("[name='ADJ030']").val() != '' ? $("[name='ADJ030']").val() : 0);
+        //年薪合计 = 标准工资合计*12+季度奖基数*4+年终奖基数
+        var moneySum = parseFloat(stdSalaryTotal) * 12 + parseFloat(qBonusBase) * 4 + parseFloat(yearBonusBase);
+        return moneySum;
+    },
+    /**
+     * 
+     * @returns 
+     */
+    processPreCmpRowData: function () {
+        var _self = this;
+        shr.emp.EmpSalaryItemDataPartEditEx.superClass.processPreCmpRowData.call(this);
+        _self.redenerCustomTable();
+    },
+})

+ 355 - 0
js/deploy/easweb.ear/eas_web.war/addon/custom/js/fluctuationBizBillHrManEditEx.js

@@ -0,0 +1,355 @@
+/**
+ * 调动申请:专业用户
+ */
+shr.defineClass("shr.affair.hrman.FluctuationBizBillHrManEditEx", shr.affair.hrman.FluctuationBizBillHrManEdit, {
+	initalizeDOM: function () {
+		this.renderPersonInfoTable();
+		shr.affair.hrman.FluctuationBizBillHrManEditEx.superClass.initalizeDOM.call(this);
+	},
+	/**
+	* 根据personId和uipk关联查询出关联字段并赋值
+	*/
+	initDataFromStructure: function (personID) {
+		var self = this;
+		var uipk = shr.getUrlParam('uipk');
+		shr.callService({
+			serviceName: "getDataFromStructure",
+			param: {
+				personID: personID,
+				uiClass: uipk
+			},
+			async: true,
+			success: function (data) {
+				if (data && data.length > 0) {
+					$.each(data, function (i, v) {
+						//$('#' + v.name).shrTextField('setValue',v.value);
+						if (v.name) {
+							self.getField(v.name).shrTextField('setValue', v.value);
+							// if ("personnelCa_name" == v.name) {
+							// 	$("#personnelCa_nameEx").shrTextField("setValue", v.value)
+							// }else if ("salarysche_name" == v.name) {
+							// 	$("#salarysche_nameEx").shrTextField("setValue", v.value)
+							// }else if ("manageca_name" == v.name) {
+								$("#"+ v.name+"Ex").shrTextField("setValue", v.value);
+							//}
+						}
+					})
+				}
+			}
+		})
+	},
+	/**
+	 * 设置部门数据
+	 * @param {*} data 
+	 */
+	setDepartmentValue: function (data) {
+		this.setF7Value("entrys.position.adminOrgUnit.department", data);
+		$('#entrys_position_adminOrgUnit_departmentEx').shrPromptBox("setValue", data);
+	},
+	/**
+	 * 初始化职位,如果是目标职位,则可选,如果是原职位,则不可选 
+	 */
+	initTargetPositionF7: function (data, isNeedUptVal) {
+		var self = this;
+		if (data[0] === undefined) {
+			return;
+		}
+		var needTargetPosition = true;
+		if (data && data[0]) {
+			var defineFieldState = data[0].defineFieldState;
+			if (defineFieldState != null) {
+				needTargetPosition = defineFieldState.needTargetPosition;
+			}
+		}
+		if (needTargetPosition) {
+			self.getField("entrys.position").shrPromptBox("enable");
+			$("#entrys_positionEx").shrPromptBox("enable");
+		} else {
+			self.getField("entrys.position").shrPromptBox("disable");
+			$("#entrys_positionEx").shrPromptBox("disable");
+		}
+	},
+	/**
+ * 初始化用工关系状态,根据OSF GetHrBizDefineByDefineIdService||GetHRBizDefineService 返回的参数做判断
+ * 
+ * 1只有一个默认带出可编辑,多个默认带出第一个且必填,无则灰
+ * 2目标用工关系状态为原目标用工关系状态时,尽管配置了出口用工关系,目标用工关系也是原用工关系
+ * @param isNeedUptVal 页面编辑时:false|页面新增时:true
+ */
+	initOutEmpTypeF7: function (data, isNeedUptVal) {
+		var self = this,
+			needLaborState = true,
+			laborStateInitValue = null;
+		if (data && data[0]) {
+			var defineFieldState = data[0].defineFieldState;
+			if (defineFieldState != null) {
+				needLaborState = defineFieldState.needLaborState;
+			}
+			laborStateInitValue = defineFieldState.laborStateInitValue;
+		}
+		var outEmpType = $(data[0].outEmpType);
+		// 编辑浏览状态下不可以清空,新增状态或者变动操作修改后,先清空
+		if (isNeedUptVal == true) {
+			if (self.getFieldValue("entrys.empType")) {
+				$('#entrys_empType').shrPromptBox("setValue", null);
+				if ($('#entrys_empTypeEx')) {
+					$('#entrys_empTypeEx').shrPromptBox("setValue", null);
+				}
+			}
+			if (outEmpType.length == 1) {
+				self.getField("entrys.empType").shrPromptBox("setValueNoTrigger",
+					{
+						id: outEmpType[0].id,
+						name: outEmpType[0].name
+					});
+				$('#entrys_empTypeEx').shrPromptBox("setValueNoTrigger",
+					{
+						id: outEmpType[0].id,
+						name: outEmpType[0].name
+					});
+				$("#entrys_empType").shrPromptBox('option', 'required', false);
+				$("#entrys_empTypeEx").shrPromptBox('option', 'required', false);
+			}
+		}
+		//目标用工关系状态为原目标用工关系状态时,尽管配置了出口用工关系,目标用工关系也是原用工关系,
+		if (needLaborState) {//如果是目标用工关系状态
+			$('#entrys_empType').shrPromptBox("option", "required", true);
+			$('#entrys_empType').shrPromptBox("option", "readonly", false);
+			$('#entrys_empType').shrPromptBox("enable");
+			$('#entrys_empTypeEx').shrPromptBox("option", "required", true);
+			$('#entrys_empTypeEx').shrPromptBox("option", "readonly", false);
+			$('#entrys_empTypeEx').shrPromptBox("enable");
+		} else if (needLaborState == false) {//如果不是目标用工关系状态,则设置原用工关系状态
+			if (isNeedUptVal == true) {//编辑状态下不可以修改,新增状态或者变动操作修改后,才允许修改
+				// 如果有原用工关系状态,则带出原用工关系状态否则清空
+				if (self._currentPersonOrgInfo) {
+					var oldEmpTypeData = self._currentPersonOrgInfo.empType;
+					// 原用工关系状态
+					if (oldEmpTypeData != null) {
+						var entrys_oldEmpTypeValue = {
+							id: oldEmpTypeData.id,
+							name: oldEmpTypeData.name
+						}
+						$("#entrys_empType").shrPromptBox("setValue", entrys_oldEmpTypeValue);
+						$("#entrys_empTypeEx").shrPromptBox("setValue", entrys_oldEmpTypeValue);
+					}
+				} else {
+					$('#entrys_empType').shrPromptBox("setValue", null);
+					$('#entrys_empTypeEx').shrPromptBox("setValue", null);
+				}
+			}
+			$('#entrys_empType').shrPromptBox("option", "required", false);
+			$('#entrys_empType').shrPromptBox("disable");
+			$('#entrys_empTypeEx').shrPromptBox("option", "required", false);
+			$('#entrys_empTypeEx').shrPromptBox("disable");
+		}
+		var fliter = self.buildOutEmpTypeFilter(data);
+		$("#entrys_empType").shrPromptBox("setFilter", fliter);
+		$("#entrys_empTypeEx").shrPromptBox("setFilter", fliter);
+	},
+	// 调动补录转正时,用工关系可能会不一致
+	customUpdateFieldBybizDate: function (data) {
+		var ischange = shr.affair.hrman.FluctuationBizBillHrManEditEx.superClass.customUpdateFieldBybizDate.call(this, data);
+		if (ischange) {
+			var empTypeValue = $('#entrys_empType').shrPromptBox('getValue');
+			$('#entrys_empTypeEx').shrPromptBox('setValue', empTypeValue);
+		}
+		return ischange;
+	},
+	/**
+	 *  子类处理 getPersonPosOrgInfo返回的值,给子类覆写 (转正和调动、离职、返聘退休等)
+	 * @param {*} data 
+	 */
+	initShrAffairBizBillData: function (data) {
+		shr.affair.hrman.FluctuationBizBillHrManEditEx.superClass.initShrAffairBizBillData.call(this, data);
+		var self = this,
+			personPosOrgData = data[0];
+		var personData = personPosOrgData.person,
+			oldPositionData = personPosOrgData.position,
+			empLaborRelationData = personPosOrgData.empLaborRelation;
+		var personPosOrgData = data[0];
+		var personData = personPosOrgData.person,
+			oldPositionData = personPosOrgData.position,
+			oldJobData = personPosOrgData.oldJob,
+			oldAdminOrgData = personPosOrgData.adminOrg,
+			oldCompanyData = personPosOrgData.company,
+			oldDepartment = personPosOrgData.department,
+			oldEmpPostRankData = personPosOrgData.oldEmpPostRank,
+			oldEmpTypeData = personPosOrgData.empType,
+			hrbizdefine = personPosOrgData.hrbizdefine;
+		//原员工状态
+		if (oldEmpTypeData != null) {
+			var entrys_oldEmpTypeValue = {
+				id: oldEmpTypeData.id,
+				name: oldEmpTypeData.name
+			}
+			$("#entrys_oldEmpTypeEx").shrPromptBox("setValue", entrys_oldEmpTypeValue);
+		}
+		if (oldPositionData != null) {
+			var entrys_oldPositionValue = {
+				id: oldPositionData.id,
+				name: oldPositionData.name
+			}
+			//原职位
+			$("#entrys_oldPositionEx").shrPromptBox("setValue", entrys_oldPositionValue);
+			//现职位
+			$("#entrys_positionEx").shrPromptBox("setValue", entrys_oldPositionValue);
+		}
+		if (oldJobData != null) {
+			var entrys_oldJobValue = {
+				id: oldJobData.id,
+				name: oldJobData.name
+			}
+			if ($('#entrys_oldJobEx') != null) {
+				//原职务
+				$("#entrys_oldJobEx").shrPromptBox("setValue", entrys_oldJobValue);
+			}
+			if ($('#entrys_jobEx') != null) {
+				//转正后职务
+				$("#entrys_jobEx").shrPromptBox("setValue", entrys_oldJobValue);
+			}
+		}
+		//当前职级
+		if (oldEmpPostRankData != null) {
+			if ($('#entrys_oldJobGradeEx') != null) {
+				$('#entrys_oldJobGradeEx').shrPromptBox("setValue", { id: oldEmpPostRankData.jobGradeId, name: oldEmpPostRankData.jobGradeName });
+			}
+		}
+		var oldDepartment = $("#entrys_oldAdminOrg").shrPromptBox("getValue");
+		//var department = $("#entrys_adminOrg").shrPromptBox("getValue");
+		$("#entrys_oldPosition_adminOrgUnit_departmentEx").shrPromptBox("setValue", oldDepartment)
+		$("#entrys_position_adminOrgUnit_departmentEx").shrPromptBox("setValue", oldDepartment)
+	},
+
+	/**
+	 * 渲染人员组织表格p
+	 */
+	renderPersonInfoTable: function () {
+		const $tbody = $("#myTable tbody");
+		const $tr1 = $("<tr></tr>");
+		$tr1.append("<td><div class='flex-c'>调整前</div></td>");
+		$tbody.append($tr1);
+		this.getF7Html("entrys_oldEmpType", $tr1);//原用工关系状态
+		this.getTextFieldHtml("manageca_name", $tr1);//原管理类别
+		this.getF7Html("entrys_oldPosition_adminOrgUnit_department", $tr1);//现任部门
+		this.getF7Html("entrys_oldPosition", $tr1);//现任职位
+		//this.getF7Html("entrys_oldJob", $tr1);//现任职务
+		this.getF7Html("entrys_oldJobGrade", $tr1);//当前职级
+		this.getTextFieldHtml("salarysche_name", $tr1);//原计薪方式
+		this.getTextFieldHtml("personnelCa_name", $tr1);//原人员类别
+		const $tr2 = $("<tr></tr>");
+		$tr2.append("<td><div class='flex-c'>调整后</div></td>");
+		$tbody.append($tr2);
+		this.getF7Html("entrys_empType", $tr2);//目标用工关系状态
+		this.getF7Html("entrys_manageCa", $tr2);//管理类别
+		this.getF7Html("entrys_position_adminOrgUnit_department", $tr2);//调用后部门
+		this.getF7Html("entrys_position", $tr2);//调用后职位
+		//this.getF7Html("entrys_job", $tr2);//调用后职务
+		this.getF7Html("entrys_jobGrade", $tr2);//调用后职级
+		this.getF7Html("entrys_salaryScheme", $tr2);//计薪方式
+		this.getF7Html("entrys_personnelCa", $tr2);//调用后人员类别
+	},
+
+	/**
+	 * 获取F7html
+	 * @returns 
+	 */
+	getF7Html: function (element, $tr) {
+		//判断元素是否存在
+		if ($('#' + element) == null) {
+			//元素不存在
+		}
+		var self = this;
+		var elementIdName = element + "Ex";
+		var elementName = elementIdName.replace("_", ".");
+		if ("VIEW" == self.getOperateState()) {
+			var html = '<td><div class="flex-c"><span id="' + elementIdName + '"></span></div></td>';
+			$tr.append(html);
+			//$tbody.append($tr);
+			var name = $("#" + element).html();
+			var id = $("#" + element).val();
+			var options = {
+				value: { id: id, name: name },
+				originalValue: id,
+				className: "field_input"
+			};
+			$("#" + elementIdName).shrFieldDisplay(options);
+		} else {
+
+			var value = $("#" + element).shrPromptBox("getValue");
+			var options = $("#" + element).shrPromptBox("option")
+			var validate = options.validate
+			options.id = elementIdName;
+			options.name = elementName;
+			options.value = value;
+			if (options.readonly != "readonly") {
+				//不等于只读时,绑定值改变事件,对原有字段同步更新值
+				options.onchange = function (e, value) {
+					if (value.current) {
+						$("#" + element).shrPromptBox("setValue", value.current)
+					} else {
+						$("#" + element).shrPromptBox("setValue", null)
+					}
+				}
+				options.verifyBeforeOpenCallback = function (event) {
+					var options = $("#" + element).shrPromptBox("option");
+					$("#" + elementIdName).shrPromptBox("setFilter", options.subWidgetOptions.filter);
+				}
+			}
+			var html = '<td><div class="flex-c"><input id="' + elementIdName + '" name="' + elementName + '" class="block-father input-height" type="text"  istotemplate="true"';
+			if (validate.includes("required:true")) {
+				html += ' required="true" ';
+			}
+			html += '></div></td>';
+			$tr.append(html);
+			$("#" + elementIdName).shrPromptBox(options);
+		}
+	},
+	/**
+	* 获取文本字段html
+	* @returns 
+	*/
+	getTextFieldHtml: function (element, $tr) {
+		//判断元素是否存在
+		if ($('#' + element) == null) {
+			//元素不存在
+		}
+		var self = this;
+		var elementIdName = element + "Ex";
+		var elementName = elementIdName.replace("_", ".");
+		if ("VIEW" == self.getOperateState()) {
+			var html = '<td><div class="flex-c"><span id="' + elementIdName + '"></span></div></td>';
+			$tr.append(html);
+			//$tbody.append($tr);
+			var name = $("#" + element).html();
+			var id = $("#" + element).val();
+			var options = {
+				value: { id: id, name: name },
+				originalValue: id,
+				className: "field_input"
+			};
+			$("#" + elementIdName).shrFieldDisplay(options);
+		} else {
+
+			var value = $("#" + element).shrTextField("getValue");
+			var options = $("#" + element).shrTextField("option")
+			var validate = options.validate
+			options.id = elementIdName;
+			options.name = elementName;
+			options.value = value;
+			if (options.readonly != "readonly") {
+				//不等于只读时,绑定值改变事件,对原有字段同步更新值
+				options.onchange = function (e, value) {
+					if (value.current) {
+						$("#" + element).shrTextField("setValue", value.current)
+					} else {
+						$("#" + element).shrTextField("setValue", null)
+					}
+				}
+			}
+			var html = '<td><div class="flex-c"><input id="' + elementIdName + '" name="' + elementName + '" class="block-father input-height" type="text"  istotemplate="true"></div></td>';
+			$tr.append(html);
+			$("#" + elementIdName).shrTextField(options);
+		}
+	},
+});