You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

FormOfStudent.js 11 KiB

4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. /* * 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园(http://www.learun.cn)
  2. * Copyright (c) 2013-2018 北京泉江科技有限公司
  3. * 创建人:超级管理员
  4. * 日 期:2019-08-08 17:21
  5. * 描 述:新生信息管理
  6. */
  7. var acceptClick;
  8. var keyValue = request('keyValue');
  9. var bootstrap = function ($, learun) {
  10. "use strict";
  11. var page = {
  12. init: function () {
  13. $('.lr-form-wrap').lrscroll();
  14. page.bind();
  15. page.initData();
  16. },
  17. bind: function () {
  18. $("#GenderNo").lrDataItemSelect({ code: 'usersex' });
  19. $("#PartyFaceNo").lrDataItemSelect({ code: 'BCdPartyFace' });
  20. $("#FamilyOriginNo").lrDataItemSelect({ code: 'ExamineeCategory' });
  21. $("#NationalityNo").lrDataItemSelect({ code: 'National' });
  22. $("#TestStuSortNo").lrDataItemSelect({ code: 'ExamineeType' });
  23. $("#TestStuSubjectNo").lrDataItemSelect({ code: 'SubjectType' });
  24. $("#HighTestSortNo").lrDataItemSelect({ code: 'GraduateCategory' });
  25. $("#MatriculateSort").lrDataItemSelect({ code: 'EnrollStyle' });
  26. $('#ResidenceNo').lrDataItemSelect({ code: 'ResidenceNo' });
  27. $('#StuInfoFreshFamily').jfGrid({
  28. headData: [
  29. {
  30. label: '姓名', name: 'Name', width: 100, align: 'left'
  31. , edit: {
  32. type: 'input'
  33. }
  34. },
  35. {
  36. label: '与本人关系', name: 'Relation', width: 100, align: 'left'
  37. , edit: {
  38. type: 'select',
  39. datatype: 'dataItem',
  40. code: 'FamilyRelation'
  41. }
  42. },
  43. {
  44. label: '性别', name: 'Sex', width: 100, align: 'left'
  45. , edit: {
  46. type: 'select',
  47. datatype: 'dataItem',
  48. code: 'usersex'
  49. }
  50. },
  51. {
  52. label: '年龄', name: 'Age', width: 100, align: 'left'
  53. , edit: {
  54. type: 'input'
  55. }
  56. },
  57. {
  58. label: '政治面貌', name: 'Politicy', width: 100, align: 'left'
  59. , edit: {
  60. type: 'select',
  61. datatype: 'dataItem',
  62. code: 'PolityStatus'
  63. }
  64. },
  65. {
  66. label: '身份证号', name: 'IdCard', width: 100, align: 'left'
  67. , edit: {
  68. type: 'input'
  69. }
  70. },
  71. ],
  72. isEdit: true,
  73. isEditWithTip: true,
  74. height: 200
  75. });
  76. $('#StuInfoFreshEmergePeople').jfGrid({
  77. headData: [
  78. {
  79. label: '姓名', name: 'Name', width: 100, align: 'left'
  80. , edit: {
  81. type: 'input'
  82. }
  83. },
  84. {
  85. label: '与本人关系', name: 'Relation', width: 100, align: 'left'
  86. , edit: {
  87. type: 'input'
  88. }
  89. },
  90. {
  91. label: '手机号码', name: 'Mobile', width: 100, align: 'left'
  92. , edit: {
  93. type: 'input'
  94. }
  95. },
  96. {
  97. label: '座机电话', name: 'Telephone', width: 100, align: 'left'
  98. , edit: {
  99. type: 'input'
  100. }
  101. },
  102. {
  103. label: '联系地址', name: 'Address', width: 100, align: 'left'
  104. , edit: {
  105. type: 'input'
  106. }
  107. },
  108. ],
  109. isEdit: true,
  110. isEditWithTip: true,
  111. height: 200
  112. });
  113. //拍照
  114. $("#photoBtn").on('click', function () {
  115. takeImg();
  116. });
  117. },
  118. initData: function () {
  119. if (!!keyValue) {
  120. $.lrSetForm(top.$.rootUrl + '/EducationalAdministration/StuInfoFresh/GetFormData?keyValue=' + keyValue, function (data) {
  121. for (var id in data) {
  122. if (id == 'Url') {
  123. //头像地址
  124. $('#photoBox').find('img').attr('src', data[id]);
  125. } else {
  126. if (!!data[id].length && data[id].length > 0) {
  127. $('#' + id).jfGridSet('refreshdata', data[id]);
  128. }
  129. else {
  130. $('[data-table="' + id + '"]').lrSetFormData(data[id]);
  131. }
  132. }
  133. }
  134. });
  135. }
  136. }
  137. };
  138. // 保存数据
  139. acceptClick = function (callBack) {
  140. if (!$('body').lrValidform()) {
  141. return false;
  142. }
  143. //家庭成员:身份证号的验证
  144. var familyList = $('#StuInfoFreshFamily').jfGridGet('rowdatas');
  145. $.each(familyList, function (i, item) {
  146. if (!IsUserCard(item.IdCard)) {//身份证错误
  147. learun.alert.warning("家庭成员:" + item.Name + "的身份证号有误!");
  148. return false;
  149. }
  150. });
  151. var postData = {};
  152. postData.strEntity = JSON.stringify($('[data-table="StuInfoFresh"]').lrGetFormData());
  153. postData.strstuInfoFreshEmergePeopleList = JSON.stringify($('#StuInfoFreshEmergePeople').jfGridGet('rowdatas'));
  154. postData.strstuInfoFreshFamilyList = JSON.stringify($('#StuInfoFreshFamily').jfGridGet('rowdatas'));
  155. $.lrSaveForm(top.$.rootUrl + '/EducationalAdministration/StuInfoFresh/SaveForm?keyValue=' + keyValue, postData, function (res) {
  156. // 保存成功后才回调
  157. if (!!callBack) {
  158. callBack();
  159. }
  160. });
  161. };
  162. page.init();
  163. }
  164. // 验证身份证
  165. function IsUserCard(idNo) {
  166. if (idNo.length != 0) {
  167. if (!checkCard(idNo)) {
  168. // $("#errorTips").html("身份证号码格式错误");
  169. return false;
  170. } else {
  171. return true;
  172. }
  173. }
  174. return true;
  175. }
  176. checkCard = function (obj) {
  177. //校验长度,类型
  178. if (isCardNo(obj) === false) {
  179. return false;
  180. }
  181. //检查省份
  182. if (checkProvince(obj) === false) {
  183. return false;
  184. }
  185. //校验生日
  186. if (checkBirthday(obj) === false) {
  187. return false;
  188. }
  189. //检验位的检测
  190. if (checkParity(obj) === false) {
  191. return false;
  192. }
  193. return true;
  194. };
  195. //检查号码是否符合规范,包括长度,类型
  196. isCardNo = function (obj) {
  197. //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
  198. var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X)$)/;
  199. if (reg.test(obj) === false) {
  200. return false;
  201. }
  202. return true;
  203. };
  204. //取身份证前两位,校验省份
  205. checkProvince = function (obj) {
  206. var province = obj.substr(0, 2);
  207. if (vcity[province] == undefined) {
  208. return false;
  209. }
  210. return true;
  211. };
  212. //检查生日是否正确
  213. checkBirthday = function (obj) {
  214. var len = obj.length;
  215. //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
  216. if (len == '15') {
  217. var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
  218. var arr_data = obj.match(re_fifteen);
  219. var year = arr_data[2];
  220. var month = arr_data[3];
  221. var day = arr_data[4];
  222. var birthday = new Date('19' + year + '/' + month + '/' + day);
  223. return verifyBirthday('19' + year, month, day, birthday);
  224. }
  225. //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
  226. if (len == '18') {
  227. var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;
  228. var arr_data = obj.match(re_eighteen);
  229. var year = arr_data[2];
  230. var month = arr_data[3];
  231. var day = arr_data[4];
  232. var birthday = new Date(year + '/' + month + '/' + day);
  233. return verifyBirthday(year, month, day, birthday);
  234. }
  235. return false;
  236. };
  237. //校验日期
  238. verifyBirthday = function (year, month, day, birthday) {
  239. var now = new Date();
  240. var now_year = now.getFullYear();
  241. //年月日是否合理
  242. if (birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) {
  243. //判断年份的范围(3岁到100岁之间)
  244. var time = now_year - year;
  245. if (time >= 0 && time <= 130) {
  246. return true;
  247. }
  248. return false;
  249. }
  250. return false;
  251. };
  252. //校验位的检测
  253. checkParity = function (obj) {
  254. //15位转18位
  255. obj = changeFivteenToEighteen(obj);
  256. var len = obj.length;
  257. if (len == '18') {
  258. var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
  259. var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
  260. var cardTemp = 0, i, valnum;
  261. for (i = 0; i < 17; i++) {
  262. cardTemp += obj.substr(i, 1) * arrInt[i];
  263. }
  264. valnum = arrCh[cardTemp % 11];
  265. if (valnum == obj.substr(17, 1)) {
  266. return true;
  267. }
  268. return false;
  269. }
  270. return false;
  271. };
  272. //15位转18位身份证号
  273. changeFivteenToEighteen = function (obj) {
  274. if (obj.length == '15') {
  275. var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
  276. var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
  277. var cardTemp = 0, i;
  278. obj = obj.substr(0, 6) + '19' + obj.substr(6, obj.length - 6);
  279. for (i = 0; i < 17; i++) {
  280. cardTemp += obj.substr(i, 1) * arrInt[i];
  281. }
  282. obj += arrCh[cardTemp % 11];
  283. return obj;
  284. }
  285. return obj;
  286. };
  287. var vcity = {
  288. 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古",
  289. 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏",
  290. 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南",
  291. 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆",
  292. 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃",
  293. 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外"
  294. };