empPreEntryEditExt.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. shr.defineClass('shr.emp.EmpPreEntryEditExt',shr.emp.EmpPreEntryEdit , {
  2. initalizeDOM: function () {
  3. var _self = this;
  4. shr.emp.EmpPreEntryEditExt.superClass.initalizeDOM.call(this);
  5. if(this.operateState.toUpperCase() != 'VIEW'){
  6. _self.nameChange();
  7. _self.visaChange();
  8. }
  9. },
  10. visaChange:function(){
  11. var that = this;
  12. //监听文本域,数值控件的值变化
  13. $("#talent_birthday").on("change", function(){
  14. if(that.checkAge()){
  15. shr.showError({message:"Onboarding is not allowed for persons under 18 years old"});
  16. return;
  17. }
  18. that.checkVisa();
  19. });
  20. },
  21. //身份证变更事件处理
  22. processIDCardNoChangeEvent: function () {
  23. var self = this;
  24. $("#" + self.getRealId('talent.idCardNO')).blur(function () {
  25. var idCardNoValue = self.getFieldValue('talent.idCardNO');
  26. //根据身份证取出生日期和性别,并且OSF校验,调用人事OSF,如要修改请联系人事开发
  27. if (idCardNoValue) {
  28. self._idCardNo_IsChanged = true;
  29. self._idCardNo_IsPassed = false;
  30. } else {
  31. self._idCardNo_IsChanged = false;
  32. self._idCardNo_IsPassed = true;
  33. return;
  34. }
  35. var localLang = shr.getFieldLangByContext();
  36. var personName = self.getFieldValue("name")[localLang];
  37. shr.callService({
  38. serviceName: 'getPersonIdCardNOInfoService',
  39. param: {
  40. idCardNO: idCardNoValue,
  41. personId: "",
  42. hrOrgUnitId: self.getFieldValue("hrOrgUnit"),
  43. preEntryId: self.billId,
  44. personName: personName
  45. },
  46. async: false,
  47. success: function (data) {
  48. self._isIdCardNoTrue = true;
  49. self._idCardNo_IsPassed = true;
  50. if (data.birthday) {
  51. self.getField('talent.birthday').shrDateTimePicker('setValue', data.birthday);
  52. self.calculateAge(data.birthday);
  53. self.checkConstellationAndZodiac(data.birthday.split(" ")[0]);
  54. if(self.checkAge()){
  55. shr.showError({message:"Onboarding is not allowed for persons under 18 years old"});
  56. return;
  57. }else{
  58. self.checkVisa();
  59. }
  60. }
  61. if (data.gender_value) {
  62. var value = data.gender_value;
  63. self.getField('talent.gender').shrSelect('setValue', value);
  64. }
  65. _self.remoteCall({
  66. method: "checkIdEntity",
  67. param: {idCardNo:idCardNoValue},
  68. async: false,
  69. success: function(response) {
  70. if(response.resultMessage){
  71. shr.showWarning({message:response.resultMessage});
  72. }
  73. },
  74. error : function(){}
  75. });
  76. }
  77. });
  78. });
  79. $("#" + this.getRealId('talent.idCardNO')).keyup(function () {
  80. self._idCardNo_IsChanged = true;
  81. self._idCardNo_IsPassed = true;
  82. });
  83. },
  84. nameChange:function(){
  85. var that = this;
  86. //监听文本域,数值控件的值变化
  87. that.getField("surname").on("change", function(){
  88. var surname = $("#surname").val();
  89. //全英校验
  90. //var regex = /^[A-Za-z]+$/;
  91. var regex = /^[A-Za-z\s]+$/;
  92. if( !regex.test(surname)){
  93. shr.showError({ message: "The first name must be in English" });
  94. }
  95. surname = surname.toUpperCase();
  96. that.getField("surname").shrTextField('setValue',surname);
  97. //用户名赋值
  98. that.updateUserName();
  99. //姓名赋值
  100. that.updateName();
  101. that.checkVisa();
  102. });
  103. that.getField("givenName").on("change", function(){
  104. //用户名赋值
  105. that.updateUserName();
  106. //姓名赋值
  107. that.updateName();
  108. that.checkVisa();
  109. });
  110. //本地名称
  111. that.getField("LocalName").on("change", function(){
  112. //姓名赋值
  113. that.updateName();
  114. that.checkVisa();
  115. });
  116. //试用期开始时间
  117. that.getField("preEnterDate").on("change", function(){
  118. //预入职日期
  119. var preEnterDate = $("#preEnterDate").val();
  120. that.getField("trialStartDate").shrDateTimePicker('setValue',preEnterDate);
  121. that.updateTransferDate();
  122. });
  123. //预计转正日期
  124. that.getField("tryMonth").on("change", function(){
  125. that.updateTransferDate();
  126. });
  127. //职等过滤
  128. that.getField("position").on("change", function(){
  129. var positionId = $("#position_el").val();
  130. shr.callService({
  131. serviceName : 'getJobInfosByPositionService',
  132. param : {
  133. "positionId" : positionId
  134. },
  135. async:true,//职层职等可以异步更新
  136. success: function(data) {
  137. that.updateJobGrade(positionId,data);
  138. }
  139. });
  140. $("#jobGrade").shrPromptBox("setValue", null);
  141. });
  142. },
  143. //职等过滤
  144. updateJobGrade:function(currentId,data){
  145. var self = this;
  146. if(data){
  147. var lowGradeObject = data.lowJobGrade;
  148. var highGradeObject = data.highJobGrade;
  149. var jobGradeModule = data.jobGradeModule;
  150. if(lowGradeObject && highGradeObject ){
  151. // 如果职位的最低职等=最高职等,F7只能选择一个
  152. if(lowGradeObject.id ==highGradeObject.id){
  153. self.getField("jobGrade").shrPromptBox("setFilter","id ='"+lowGradeObject.id+"'");
  154. }else if((lowGradeObject.index || lowGradeObject.index == 0) && (highGradeObject.index || highGradeObject.index == 0)){
  155. self.getField("jobGrade").shrPromptBox("setFilter",
  156. " index <="+highGradeObject.index+" and index >="+lowGradeObject.index+" and jobGradeModule.id='"+jobGradeModule.id+"'");
  157. }
  158. } else{
  159. self.getField("jobGrade").shrPromptBox("setValueNoTrigger",null);
  160. self.getField("jobGrade").shrPromptBox("setFilter", "index<-9999");//-9999 没有最低和最高则不要选到
  161. }
  162. }
  163. },
  164. //用户名赋值
  165. updateUserName:function(){
  166. var that = this;
  167. //用户名赋值
  168. var surname = $("#surname").val();
  169. var givenName = $("#givenName").val();
  170. var userName = givenName + "." + surname;
  171. if(userName.length > 20){
  172. if(surname != '' ){
  173. userName = givenName + "." + surname.slice(0,1).toUpperCase() ;
  174. if(userName.length > 20){
  175. var startLength = userName.length - 20;
  176. userName = userName.substring(startLength,userName.length);
  177. }
  178. }
  179. }
  180. userName = userName.toLowerCase();
  181. that.getField("userName").shrTextField('setValue',userName);
  182. that.getField("workemail").shrTextField('setValue',userName+"@gtiit.edu.cn");
  183. },
  184. updateName: function(){
  185. var that = this;
  186. //姓
  187. var surname = $("#surname").val();
  188. //名
  189. var givenName = $("#givenName").val();
  190. //本地名称
  191. var localName = $("#LocalName").val();
  192. var name = "";
  193. if(givenName != ''){
  194. name = givenName + " ";
  195. }
  196. if(surname != ''){
  197. name = name + surname + " ";
  198. }
  199. if(localName != ''){
  200. name = name + localName + " ";
  201. }
  202. //姓名
  203. that.getField("name").shrTextField('setValue',name);
  204. },
  205. //预计转正日期
  206. updateTransferDate:function(){
  207. var that = this;
  208. //预入职日期
  209. var preEnterDate = $("#preEnterDate").val();
  210. //试用期(月)
  211. var tryMonth = $("#tryMonth").val();
  212. let date = new Date(preEnterDate); // 创建一个 Date 对象
  213. if(tryMonth != '' && tryMonth > 0 && preEnterDate != null ){
  214. tryMonth = parseInt(tryMonth);
  215. date.setMonth(date.getMonth() + tryMonth);
  216. employeeType = {id:"00000000-0000-0000-0000-000000000002A29E85B3", name_l1:"On Probation",name:"试用员工",name_l2:"试用员工"};
  217. }else{
  218. date = null;
  219. employeeType = {id:"00000000-0000-0000-0000-000000000001A29E85B3", name_l1:"Permanent Employee",name:"正式员工",name_l2:"正式员工"};
  220. }
  221. that.getField("transferDate").shrDateTimePicker('setValue',date);
  222. $("#empType").shrPromptBox("setValue", employeeType);
  223. },
  224. createBillAction:function(){
  225. var self = this;
  226. self.remoteCall({
  227. method : 'createEmpBill',
  228. async : false,
  229. success:function(data){
  230. shr.showInfo({message: "Test"+data});
  231. }
  232. });
  233. },
  234. verify: function () {
  235. var self = this;
  236. var beginDate = self.getFieldValue("talent.idCardBeginDate");
  237. var endDate = self.getFieldValue("talent.idCardEndDate");
  238. var idCardBeginDate = new Date(beginDate);
  239. var idCardEndDate = new Date(endDate);
  240. var localLang = shr.getFieldLangByContext();
  241. var personName = self.getFieldValue("name")[localLang];
  242. if (idCardBeginDate.getTime() > idCardEndDate.getTime()) {
  243. shr.showError({
  244. message: jsBizMultLan.emp_empPreEntryEdit_i18n_0
  245. });
  246. return false;
  247. }
  248. var idCardNO = self.getFieldValue("talent.idCardNO");
  249. var passportNO = self.getFieldValue("talent.passportNO");
  250. if(idCardNO == "" && passportNO == ""){
  251. shr.showError({
  252. message: jsBizMultLan.emp_empPreEntryEdit_i18n_8
  253. });
  254. return false;
  255. }
  256. if (idCardNO) {
  257. var verifyFlag = false;
  258. shr.callService({
  259. serviceName: 'getPersonIdCardNOInfoService',
  260. param: {
  261. idCardNO: idCardNO,
  262. personId: "",
  263. hrOrgUnitId: self.getFieldValue("hrOrgUnit"),
  264. preEntryId: self.billId,
  265. personName: personName
  266. },
  267. async: false,
  268. success: function (data) {
  269. verifyFlag = true;
  270. }
  271. });
  272. if(verifyFlag == false)
  273. return false;
  274. }
  275. if (passportNO){
  276. var verifyFlag = false;
  277. shr.callService({
  278. serviceName: 'getPersonPassPortNOInfoService',
  279. param: {
  280. passportNO: passportNO,
  281. personId: "",
  282. preEntryId: self.billId,
  283. personName: personName
  284. },
  285. async: false,
  286. success: function (data) {
  287. verifyFlag = true;
  288. }
  289. });
  290. if(verifyFlag == false)
  291. return false;
  292. }
  293. if(self.checkAge()){
  294. shr.showError({message:"Onboarding is not allowed for persons under 18 years old"});
  295. return false;
  296. }
  297. return true;
  298. },
  299. checkVisa:function(){
  300. var name = $("#name").val().trim();
  301. var birthday = $("#talent_birthday").val();
  302. if(name && birthday){
  303. _self.remoteCall({
  304. method: "checkIdEntity",
  305. param: {name:name,birthday:birthday},
  306. async: false,
  307. success: function(response) {
  308. if(response.resultMessage){
  309. shr.showWarning({message:response.resultMessage});
  310. }
  311. },
  312. error : function(){}
  313. });
  314. }
  315. },
  316. checkAge:function(){
  317. var birthday = $("#talent_birthday").val();
  318. if(birthday){
  319. var bomDate = new Date(birthday);
  320. var today = new Date();
  321. // 计算年份差异
  322. var yearDiff = today.getFullYear() - bomDate.getFullYear();
  323. // 如果出生日期在今年之后,则减去年份差异
  324. if (today < new Date(today.getFullYear(), bomDate.getMonth(), bomDate.getDate())) {
  325. yearDiff--;
  326. }
  327. if (yearDiff >= 18) {
  328. return false;
  329. } else {
  330. return true;
  331. }
  332. }
  333. }
  334. });