empPreEntryEditExt.js 11 KB

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