workStaffBasicDetailModifyDirectly.jsp 137 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841
  1. <%--suppress ALL --%>
  2. <%@ page contentType="text/html;charset=UTF-8" %>
  3. <%@ include file="/webpage/include/taglib.jsp"%>
  4. <html>
  5. <head>
  6. <title>员工信息管理</title>
  7. <meta name="decorator" content="default"/>
  8. <script type="text/javascript">
  9. var validateForm;
  10. var existStaff = false;
  11. function doSubmit(index){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
  12. if(validateForm.form()){
  13. if(existStaff){
  14. layer.msg("该员工在职,不能提交入职信息,请确认身份证信息",{icon:2})
  15. return false;
  16. }
  17. $("#inputForm").submit();
  18. return true;
  19. }
  20. return false;
  21. }
  22. $(document).ready(function() {
  23. validateForm = $("#inputForm").validate({
  24. submitHandler: function(form){
  25. loading('正在提交,请稍等...');
  26. form.submit();
  27. },
  28. errorContainer: "#messageBox",
  29. errorPlacement: function(error, element) {
  30. $("#messageBox").text("输入有误,请先更正。");
  31. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  32. error.appendTo(element.parent().parent());
  33. } else {
  34. error.insertAfter(element);
  35. }
  36. }
  37. });
  38. var layDateArr = $(".layer-date");
  39. for(var i=0;i<layDateArr.length;i++){
  40. var id = '#'+$(layDateArr[i]).attr("id");
  41. if('#industryDate'==id){
  42. laydate.render({
  43. elem: id, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  44. event: 'focus', //响应事件。如果没有传入event,则按照默认的click
  45. type:'month'
  46. });
  47. continue;
  48. }
  49. laydate.render({
  50. elem: id, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  51. event: 'focus' //响应事件。如果没有传入event,则按照默认的click
  52. });
  53. }
  54. cacuAge('${workStaffBasicInfo.idCard}','1');
  55. $('#phone').blur(function (){
  56. if($('#phone').val()==null||$('#phone').val()=="") {
  57. /*$('#phone').next("span").html("电话不能为空");
  58. $('#phone').focus();*/
  59. }else{
  60. var phone = /^0\d{2,3}-?\d{7,8}$|^1[3|5|8]\d{9}$/;
  61. if(!phone.test($('#phone').val())){
  62. $('#phone').next("span").html("电话号码格式不正确");
  63. }else{
  64. $('#phone').next("span").html("");
  65. }
  66. }
  67. });
  68. });
  69. </script>
  70. <script type="text/javascript">
  71. //上传用户头像
  72. function this_upload_image_button(index){
  73. $("#this_upload_file_"+index).click();
  74. }
  75. function this_upload_show_image(index){
  76. var obj =$("#this_upload_file_"+index)[0].files[0];
  77. var fileType = obj.type;
  78. if(obj.size>100*1024){
  79. layer.msg("请上传100KB内图片格式文件!",{icon:2});
  80. return false ;
  81. }
  82. var url ;
  83. if((fileType.indexOf("png")>=0||fileType.indexOf("bmp")>=0||fileType.indexOf("jpg")>=0||fileType.indexOf("jpeg")>=0)){
  84. url = window.URL.createObjectURL(obj);
  85. }else {
  86. /*$("#this_upload_msg").css({"color":"red"});*/
  87. this_close_img(index);
  88. layer.msg("请上传图片格式文件!",{icon:2});
  89. return false ;
  90. }
  91. /*$("#this_upload_msg" + "index").removeAttr("style");*/
  92. $("#this_upload_image_"+index).attr("src",url);
  93. var span = '<span id="this_upload_close_'+index+'" class="pic_close glyphicon glyphicon-remove" onclick="this_close_img('+index+');"></span>';
  94. $("#this_upload_image_" + index).before(span);
  95. }
  96. function this_close_img(index) {
  97. $("#this_upload_div_"+index).remove();
  98. this_add_div(index);
  99. }
  100. function this_add_div(index) {
  101. var this_upload_div_1 =
  102. '<div id="this_upload_div_'+ index + '" style="position:relative;">'+
  103. '<img id="this_upload_image_' + index + '" class="upload_ico" style="cursor:pointer;" src="${pageContext.request.contextPath}/static/common/img/pic_add.png" onclick="this_upload_image_button('+index+')"/>'+
  104. '<input id="this_upload_file_'+ index + '" type="file" style="display:none" name="this_upload_files" onchange="this_upload_show_image('+index+ ')" /><br>'+
  105. '</div>';
  106. $("#this_upload_image_div_"+ index).html("").append(this_upload_div_1);
  107. }
  108. function cacuAge(idCard,type){
  109. if(type=='1'){
  110. var pattern = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  111. if(!pattern.test(idCard)){
  112. return;
  113. }
  114. }
  115. var age = 0;
  116. var year='';
  117. var months='';
  118. var days='';
  119. if(idCard.length==15){
  120. year = "19"+idCard.substring(6,8);
  121. months=idCard.substring(8,10);//截取身份证上的月
  122. days=idCard.substring(10,12);//截取身份证上的日
  123. }else {
  124. year=idCard.substring(6,10);//截取身份证上的年
  125. months=idCard.substring(10,12);//截取身份证上的月
  126. days=idCard.substring(12,14);//截取身份证上的日
  127. }
  128. var myDate = new Date();
  129. var month = myDate.getMonth() + 1;
  130. var day = myDate.getDate();
  131. age = myDate.getFullYear() - year - 1;
  132. if (months< month || months == month && days <= day) {
  133. age++;
  134. }
  135. if(age<0)age=0;
  136. $("#age").val(age);
  137. }
  138. function caculateAge(idCard) {
  139. var pattern = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  140. if(!pattern.test(idCard)){
  141. return;
  142. }
  143. var birthday='';
  144. var year='';
  145. var months='';
  146. var days='';
  147. if(idCard.length==15){
  148. year = "19"+idCard.substring(6,8);
  149. months=idCard.substring(8,10);//截取身份证上的月
  150. days=idCard.substring(10,12);//截取身份证上的日
  151. }else {
  152. year=idCard.substring(6,10);//截取身份证上的年
  153. months=idCard.substring(10,12);//截取身份证上的月
  154. days=idCard.substring(12,14);//截取身份证上的日
  155. }
  156. birthday=year+"-"+months+"-"+days;//转为2000-01-01的格式
  157. $("#birthday").val(birthday);
  158. cacuAge(idCard,'0');
  159. var staffId = '${workStaffBasicInfo.achiveId}';
  160. $.ajax({
  161. url:'${ctx}/workstaff/workStaffBasicInfo/idCard',
  162. data:{
  163. 'idCard':idCard
  164. },
  165. success:function(result){
  166. console.log(result);
  167. if(result.success){
  168. if(!result.body.exist){
  169. existStaff = false;
  170. return;
  171. }
  172. var id = result.body.id;
  173. if(staffId==''){
  174. if(result.body.onJob){
  175. existStaff = true;
  176. layer.msg("该员工在职,不能提交入职信息,请确认身份证信息",{icon:2});
  177. return;
  178. }
  179. window.location= "${ctx}/workstaff/workStaffBasicInfo/reform?achiveId="+id;
  180. }else {
  181. if(staffId != id){
  182. layer.msg("重复的身份证信息,请重新输入",{icon:2});
  183. $("idCard").val("");
  184. }
  185. }
  186. }
  187. }
  188. });
  189. }
  190. function this_upload_file_button(id){
  191. $("#"+id).click();
  192. }
  193. function changeFileName(obj,index) {
  194. var file = obj.files[0];
  195. var url = null;
  196. if (window.createObjectURL != undefined) { // basic
  197. url = window.createObjectURL(file);
  198. } else if (window.URL != undefined) { // mozilla(firefox)
  199. url = window.URL.createObjectURL(file);
  200. } else if (window.webkitURL != undefined) { // webkit or chrome
  201. url = window.webkitURL.createObjectURL(file);
  202. }
  203. console.log(url);
  204. var fileType = file.type;
  205. if(index==1 && (file.size > 100*1024 || !(fileType.indexOf("png")>=0||fileType.indexOf("bmp")>=0||fileType.indexOf("jpg")>=0||fileType.indexOf("jpeg")>=0))){
  206. layer.msg("请上传100KB内扫描件!",{icon:2});
  207. return;
  208. }
  209. var spanId = $(obj).attr("id") + 'Name' + index;
  210. var imgStr = '<img src="'+url+'" width="24" height="24" onclick="openDialogView(\'预览\',\'${ctx}/sys/picturepreview/picturePreview?url='+url+'\',\'90%\',\'90%\')" alt="'+file.name+'">';
  211. $('#'+spanId).html(imgStr);
  212. }
  213. </script>
  214. </head>
  215. <body>
  216. <div class="single-form">
  217. <div class="container">
  218. <form:form id="inputForm" modelAttribute="workStaffBasicInfo" action="${ctx}/workstaff/workStaffBasicInfo/saveAchiveModifyDirectly" enctype="multipart/form-data" method="post" class="form-horizontal">
  219. <form:hidden path="id"/>
  220. <form:hidden path="userId"/>
  221. <form:hidden path="home"/>
  222. <div class="form-group layui-row first">
  223. <div class="form-group-label"><h2>基本信息</h2></div>
  224. <div class="layui-item layui-col-sm6 lw7" style="padding-right: 0;">
  225. <div class="layui-item layui-col-sm12">
  226. <label class="layui-form-label"><span class="require-item">*</span>工 号:</label>
  227. <div class="layui-input-block">
  228. <form:input path="no" htmlEscape="false" readonly="true" class="form-control layui-input"/>
  229. </div>
  230. </div>
  231. <div class="layui-item layui-col-sm12">
  232. <label class="layui-form-label"><span class="require-item">*</span>性 别:</label>
  233. <div class="layui-input-block">
  234. <input value="${fns:getDictLabel(workStaffBasicInfo.gender,'sex','')}" type="text" readonly="true" class="form-control layui-input" />
  235. <input name="gender" value="${workStaffBasicInfo.gender}" type="hidden" readonly="true" class="form-control layui-input" />
  236. </div>
  237. </div>
  238. <div class="layui-item layui-col-sm12">
  239. <label class="layui-form-label"><span class="require-item">*</span>身份证号码:</label>
  240. <div class="layui-input-block">
  241. <form:input path="idCard" htmlEscape="false" onchange="caculateAge(this.value);" readonly="true" class="form-control idCard layui-input required"/>
  242. </div>
  243. </div>
  244. </div>
  245. <div class="layui-item layui-col-sm6 lw7">
  246. <div style="margin-right: 120px;">
  247. <div class="layui-item layui-col-sm12">
  248. <label class="layui-form-label"><span class="require-item">*</span>姓 名:</label>
  249. <div class="layui-input-block">
  250. <form:input path="name" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
  251. </div>
  252. </div>
  253. <div class="layui-item layui-col-sm12">
  254. <label class="layui-form-label"><span class="require-item">*</span>民 族:</label>
  255. <div class="layui-input-block">
  256. <input value="${fns:getDictLabel(workStaffBasicInfo.nation,'nation_type','')}" type="text" readonly="true" class="form-control layui-input" />
  257. <input name="nation" value="${workStaffBasicInfo.nation}" type="hidden" readonly="true" class="form-control layui-input" />
  258. </div>
  259. </div>
  260. <div class="layui-item layui-col-sm12">
  261. <label class="layui-form-label"><span class="require-item">*</span>年 龄:</label>
  262. <div class="layui-input-block">
  263. <form:input path="age" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
  264. </div>
  265. </div>
  266. </div>
  267. <div class="profile_box_wrapper">
  268. <div class="profile_box">
  269. <div id="this_upload_image_div_1">
  270. <div id="this_upload_div_1" style="position:relative;">
  271. <c:choose>
  272. <c:when test="${not empty workStaffBasicInfo.picture}">
  273. <span id="this_upload_close_1" class="pic_close glyphicon glyphicon-remove" onclick="this_close_img(1)"></span>
  274. <img alt="_blank" id="this_upload_image_1" class="upload_ico" style="cursor:pointer;" src="${workStaffBasicInfo.picture}?x-oss-process=image/resize,w_150,limit_0" onclick="this_upload_image_button(1)"/>
  275. </c:when>
  276. <c:otherwise>
  277. <img alt="_blank" id="this_upload_image_1" class="upload_ico" style="cursor:pointer;" src="${pageContext.request.contextPath}/static/common/img/pic_add.png" onclick="this_upload_image_button(1)"/>
  278. </c:otherwise>
  279. </c:choose>
  280. <input id="this_upload_file_1" type="file" style="display:none" name="pictureFile" onchange="this_upload_show_image(1)" class="form-control"/>
  281. </div>
  282. </div>
  283. </div>
  284. </div>
  285. </div>
  286. <div class="layui-item layui-col-sm6 lw7">
  287. <label class="layui-form-label"><span class="require-item">*</span>出生日期:</label>
  288. <div class="layui-input-block">
  289. <input name="birthday" value="<fmt:formatDate value="${workStaffBasicInfo.birthday}" pattern="yyyy-MM-dd"/>" type="text" readonly="true" class="form-control layui-input" />
  290. </div>
  291. </div>
  292. <div class="layui-item layui-col-sm6 lw7">
  293. <label class="layui-form-label"><span class="require-item">*</span>公历/农历:</label>
  294. <div class="layui-input-block">
  295. <input value="${fns:getDictLabel(workStaffBasicInfo.calendar,'calendar_type','')}" type="text" readonly="true" class="form-control layui-input" />
  296. <input value="${workStaffBasicInfo.calendar}" type="hidden" readonly="true" class="form-control layui-input" />
  297. </div>
  298. </div>
  299. <div class="layui-item layui-col-sm6 lw7">
  300. <label class="layui-form-label">电子邮箱:</label>
  301. <div class="layui-input-block">
  302. <form:input path="email" htmlEscape="false" readonly="true" class="form-control layui-input email"/>
  303. </div>
  304. </div>
  305. <div class="layui-item layui-col-sm6 lw7">
  306. <label class="layui-form-label"><span class="require-item">*</span>移动电话:</label>
  307. <div class="layui-input-block">
  308. <form:input path="mobile" htmlEscape="false" readonly="true" class="form-control layui-input required isPhone"/>
  309. </div>
  310. </div>
  311. <div class="layui-item layui-col-sm6 lw7">
  312. <label class="layui-form-label">座机:</label>
  313. <div class="layui-input-block">
  314. <form:input path="phone" htmlEscape="false"
  315. class="form-control isTel layui-input"/>
  316. </div>
  317. </div>
  318. <div class="layui-item layui-col-sm6 lw7">
  319. <label class="layui-form-label"><span class="require-item">*</span>归属部门:</label>
  320. <div class="layui-input-block">
  321. <input name="office.name" value="${workStaffBasicInfo.office.name}" type="text" readonly="true" class="form-control layui-input" />
  322. <input name="office.id" value="${workStaffBasicInfo.office.id}" type="hidden" readonly="true" class="form-control layui-input" />
  323. </div>
  324. </div>
  325. <div class="layui-item layui-col-sm6 lw7">
  326. <input name="roleId" value="${workStaffBasicInfo.roleId}" style="display: none"/>
  327. <label class="layui-form-label"><span class="require-item">*</span>岗 位:</label>
  328. <div class="layui-input-block">
  329. <input name="roleName" value="${workStaffBasicInfo.roleName}" type="text" readonly="true" class="form-control layui-input" />
  330. </div>
  331. </div>
  332. <div class="layui-item layui-col-sm6 lw7">
  333. <label class="layui-form-label"><span class="require-item">*</span>职 位:</label>
  334. <div class="layui-input-block">
  335. <input name="duty" value="${workStaffBasicInfo.duty}" type="text" readonly="true" class="form-control layui-input" />
  336. </div>
  337. </div>
  338. <div class="layui-item layui-col-sm6 lw7">
  339. <label class="layui-form-label"><span class="require-item">*</span>职 级:</label>
  340. <div class="layui-input-block with-icon">
  341. <form:input path="jobGrade.name" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
  342. <form:hidden path="jobGrade.id" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
  343. </div>
  344. </div>
  345. <div class="layui-item layui-col-sm6 lw7">
  346. <label class="layui-form-label"><span class="require-item">*</span>基本工资:</label>
  347. <div class="layui-input-block with-icon">
  348. <input id="salary" htmlEscape="false" readonly value="<fmt:formatNumber pattern="#,##0.00#" value="${workStaffBasicInfo.salary}"/>" class="form-control layui-input"/>
  349. </div>
  350. </div>
  351. <div class="layui-item layui-col-sm6 lw7">
  352. <label class="layui-form-label double-line"><span class="require-item">*</span>是否 TS人员:</label>
  353. <div class="layui-input-block">
  354. <input value="${fns:getDictLabel(workStaffBasicInfo.ts,'yes_no','')}" type="text" readonly="true" class="form-control layui-input" />
  355. <input name="ts" value="${workStaffBasicInfo.ts}" type="hidden" readonly="true" class="form-control layui-input" />
  356. </div>
  357. </div>
  358. <div class="layui-item layui-col-sm6 lw7">
  359. <label class="layui-form-label"><span class="require-item">*</span>员工状态:</label>
  360. <div class="layui-input-block">
  361. <input name="status" value="${workStaffBasicInfo.status}" type="text" readonly="true" class="form-control layui-input" />
  362. </div>
  363. </div>
  364. <div class="layui-item layui-col-sm6 lw7">
  365. <label class="layui-form-label"><span class="require-item">*</span>入职日期:</label>
  366. <div class="layui-input-block">
  367. <input name="entryDate" value="<fmt:formatDate value="${workStaffBasicInfo.entryDate}" pattern="yyyy-MM-dd"/>" type="text" readonly="true" class="form-control layui-input" />
  368. </div>
  369. </div>
  370. <div class="layui-item layui-col-sm6 lw7">
  371. <label class="layui-form-label double-line"><span class="require-item">*</span>参加工作日期:</label>
  372. <div class="layui-input-block">
  373. <input name="workDate" value="<fmt:formatDate value="${workStaffBasicInfo.workDate}" pattern="yyyy-MM"/>" type="text" readonly="true" class="form-control layui-input" />
  374. </div>
  375. </div>
  376. <div class="layui-item layui-col-sm6 lw7">
  377. <label class="layui-form-label">开户银行:</label>
  378. <div class="layui-input-block">
  379. <input name="bankName" value="${workStaffBasicInfo.bankName}" type="text" readonly="true" class="form-control layui-input" />
  380. </div>
  381. </div>
  382. <div class="layui-item layui-col-sm6 lw7">
  383. <label class="layui-form-label">银行卡号:</label>
  384. <div class="layui-input-block">
  385. <form:input path="bankCard" htmlEscape="false" readonly="true" minlength="16" maxlength="19" class="form-control layui-input digits"/>
  386. </div>
  387. </div>
  388. <div class="layui-item layui-col-sm6 lw7">
  389. <label class="layui-form-label"><span class="require-item">*</span>婚姻状况:</label>
  390. <div class="layui-input-block">
  391. <form:select path="marriage" class="form-control simple-select required">
  392. <form:option value="" label=""/>
  393. <form:options items="${fns:getDictList('marriage_status')}" itemLabel="label" itemValue="label" htmlEscape="false"/>
  394. </form:select>
  395. </div>
  396. </div>
  397. <div class="layui-item layui-col-sm6 lw7">
  398. <label class="layui-form-label"><span class="require-item">*</span>政治面貌:</label>
  399. <div class="layui-input-block">
  400. <form:select path="politics" class="form-control simple-select required basicInfo">
  401. <form:option value="" label=""/>
  402. <form:options items="${fns:getDictList('politics_type')}" itemLabel="label" itemValue="label" htmlEscape="false"/>
  403. </form:select>
  404. </div>
  405. </div>
  406. <div class="layui-item layui-col-sm6 lw7">
  407. <label class="layui-form-label double-line">是否退伍军人:</label>
  408. <div class="layui-input-block">
  409. <form:select path="exSoldier" class="form-control simple-select basicInfo">
  410. <form:option value="" label=""/>
  411. <form:options items="${fns:getDictList('yes_no')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  412. </form:select>
  413. </div>
  414. </div>
  415. <div class="layui-item layui-col-sm6 lw7">
  416. <label class="layui-form-label">常住地址:</label>
  417. <div class="layui-input-block">
  418. <form:input path="address" htmlEscape="false" class="form-control layui-input basicInfo"/>
  419. </div>
  420. </div>
  421. <div class="layui-item layui-col-sm6 lw7">
  422. <label class="layui-form-label">籍 贯:</label>
  423. <div class="layui-input-block with-icon">
  424. <sys:treeselect id="nativePlace" name="nativePlace.id" value="${workStaffBasicInfo.nativePlace.id}" labelName="" labelValue="${workStaffBasicInfo.nativePlace.name}"
  425. title="区域" url="/sys/area/treeData" cssClass="form-control layui-input basicInfo" allowClear="true" notAllowSelectParent="true"/>
  426. </div>
  427. </div>
  428. <div class="layui-item layui-col-sm6 lw7">
  429. <label class="layui-form-label">户口所在地:</label>
  430. <div class="layui-input-block">
  431. <form:input path="household" htmlEscape="false" class="form-control layui-input basicInfo"/>
  432. </div>
  433. </div>
  434. <div class="layui-item layui-col-sm6 lw7">
  435. <label class="layui-form-label double-line"><span class="require-item">*</span>从事本行业日期:</label>
  436. <div class="layui-input-block">
  437. <input id="industryDate" name="industryDate" type="text" maxlength="20" readonly class="laydate-icondate form-control layui-input layer-date laydate-icon required basicInfo"
  438. value="<fmt:formatDate value="${workStaffBasicInfo.industryDate}" pattern="yyyy-MM"/>"/>
  439. </div>
  440. </div>
  441. <div class="layui-item layui-col-sm6 lw7">
  442. <label class="layui-form-label double-line">试用期结束日期:</label>
  443. <div class="layui-input-block">
  444. <input id="tryEndTime" name="tryEndTime" type="text" maxlength="20" readonly class="form-control layui-input"
  445. value="<fmt:formatDate value="${workStaffBasicInfo.tryEndTime}" pattern="yyyy-MM-dd"/>"/>
  446. </div>
  447. </div>
  448. <div class="layui-item layui-col-sm6 lw7">
  449. <label class="layui-form-label">离职日期:</label>
  450. <div class="layui-input-block">
  451. <input id="dimissionDate" type="text" maxlength="20" readonly class="form-control layui-input"
  452. value="<fmt:formatDate value="${workStaffBasicInfo.dimissionDate}" pattern="yyyy-MM-dd"/>"/>
  453. </div>
  454. </div>
  455. <div class="layui-item layui-col-sm6 lw7">
  456. <label class="layui-form-label double-line">考勤截止日期:</label>
  457. <div class="layui-input-block">
  458. <input id="workEndDate" type="text" maxlength="20" readonly class="form-control layui-input"
  459. value="<fmt:formatDate value="${workStaffBasicInfo.workEndDate}" pattern="yyyy-MM-dd"/>"/>
  460. </div>
  461. </div>
  462. </div>
  463. <div class="form-group layui-row">
  464. <div class="form-group-label"><h2>教育经历</h2></div>
  465. <div class="layui-item nav-btns">
  466. <a href=javascript:void(0); onclick="addRowEducation('#educationList',educationIdx,educationTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  467. </div>
  468. <div class="layui-item layui-col-xs12 form-table-container">
  469. <table id="educationTable" class="table table-bordered table-condensed can-edit">
  470. <thead>
  471. <tr>
  472. <th class="hide"></th>
  473. <th width="10%"><span class="require-item">*</span>毕业院校</th>
  474. <th width="10%">所学专业</th>
  475. <th width="12%"><span class="require-item">*</span>学 历</th>
  476. <th width="8%">学 位</th>
  477. <th width="8%"><span class="require-item">*</span>学历性质</th>
  478. <th width="11%"><span class="require-item">*</span>入学日期</th>
  479. <th width="11%">毕业日期</th>
  480. <th width="10%">学历证书</th>
  481. <th width="10%">学位证书</th>
  482. <th width="10%">操作</th>
  483. </tr>
  484. </thead>
  485. <tbody id="educationList">
  486. <c:if test="${not empty workStaffBasicInfo.educationList}">
  487. <c:forEach items="${workStaffBasicInfo.educationList}" var="education" varStatus="varStatus">
  488. <tr id="${education.id}">
  489. <td class="hide">
  490. <input type="hidden" id="educationList${varStatus.index}_id" name="educationList[${varStatus.index}].id" value="${education.id}">
  491. <input id="educationList${varStatus.index}_delFlag" name="educationList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  492. <input id="educationList${varStatus.index}_degreePhoto" name="educationList[${varStatus.index}].degreePhoto" type="hidden" value="${education.degreePhoto}"/>
  493. <input id="educationList${varStatus.index}_eduPhoto" name="educationList[${varStatus.index}].eduPhoto" type="hidden" value="${education.eduPhoto}"/>
  494. </td>
  495. <td style="text-align:center;">
  496. <input id="educationList${varStatus.index}_school" name="educationList[${varStatus.index}].school" htmlEscape="false" value="${education.school}" class="form-control required"/>
  497. </td>
  498. <td style="text-align:center;">
  499. <input id="educationList${varStatus.index}_major" name="educationList[${varStatus.index}].major" htmlEscape="false" value="${education.major}" class="form-control"/>
  500. </td>
  501. <td style="text-align:center;">
  502. <select name="educationList[${varStatus.index}].edu" id="educationList${varStatus.index}_edu" class="form-control required">
  503. <c:forEach items="${fns:getDictList('education_level')}" var="var">
  504. <option value="${var.value}" <c:if test="${education.edu eq var.value}">selected</c:if>>${var.label}</option>
  505. </c:forEach>
  506. </select>
  507. </td>
  508. <td style="text-align:center;">
  509. <select name="educationList[${varStatus.index}].degree" id="educationList${varStatus.index}_degree" class="form-control">
  510. <c:forEach items="${fns:getDictList('degree_level')}" var="var">
  511. <option value="${var.value}" <c:if test="${education.degree eq var.value}">selected</c:if>>${var.label}</option>
  512. </c:forEach>
  513. </select>
  514. </td>
  515. <td style="text-align:center;">
  516. <select name="educationList[${varStatus.index}].eduType" id="educationList${varStatus.index}_eduType" class="form-control">
  517. <c:forEach items="${fns:getDictList('edu_type')}" var="var">
  518. <option value="${var.value}" <c:if test="${education.eduType eq var.value}">selected</c:if>>${var.label}</option>
  519. </c:forEach>
  520. </select>
  521. </td>
  522. <td style="text-align:center;">
  523. <input id="educationList${varStatus.index}_startDate" name="educationList[${varStatus.index}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  524. value="<fmt:formatDate value="${education.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  525. </td>
  526. <td style="text-align:center;">
  527. <input id="educationList${varStatus.index}_endDate" name="educationList[${varStatus.index}].endDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  528. value="<fmt:formatDate value="${education.endDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  529. </td>
  530. <td class="text-left op-td">
  531. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('educationList${varStatus.index}_eduPhotoFile')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="educationList${varStatus.index}_eduPhotoFileName1"><c:if test="${not empty education.eduPhoto}"><img src="${education.eduPhoto}" width="24" height="24" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${education.eduPhoto}','90%','90%')" alt=""></c:if></span>
  532. <input id="educationList${varStatus.index}_eduPhotoFile" name="educationList[${varStatus.index}].eduPhotoFile" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  533. </td>
  534. <td class="text-left op-td">
  535. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('educationList${varStatus.index}_degreePhotoFile')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="educationList${varStatus.index}_degreePhotoFileName1"><c:if test="${not empty education.degreePhoto}"><img src="${education.degreePhoto}" width="24" height="24" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${education.degreePhoto}','90%','90%')" alt=""></c:if></span>
  536. <input id="educationList${varStatus.index}_degreePhotoFile" name="educationList[${varStatus.index}].degreePhotoFile" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  537. </td>
  538. <td class="text-center op-td">
  539. <a href=javascript:void(0); onclick="delRow(this, '#educationList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  540. </td>
  541. </tr>
  542. </c:forEach>
  543. </c:if>
  544. </tbody>
  545. </table>
  546. <script type="text/template" id="educationTpl">//<!--
  547. <tr id="educationList{{idx}}">
  548. <td class="hide">
  549. <input type="hidden" id="educationList{{idx}}_id" name="educationList[{{idx}}].id" value="{{row.id}}">
  550. <input id="educationList{{idx}}_delFlag" name="educationList[{{idx}}].delFlag" type="hidden" value="0"/>
  551. <input id="educationList{{idx}}_degreePhoto" name="educationList[{{idx}}].degreePhoto" type="hidden" value="{{row.degreePhoto}}"/>
  552. <input id="educationList{{idx}}_eduPhoto" name="educationList[{{idx}}].eduPhoto" type="hidden" value="{{row.eduPhoto}}"/>
  553. </td>
  554. <td style="text-align:center;">
  555. <input id="educationList{{idx}}_school" name="educationList[{{idx}}].school" htmlEscape="false" value="{{row.school}}" class="form-control required"/>
  556. </td>
  557. <td style="text-align:center;">
  558. <input id="educationList{{idx}}_major" name="educationList[{{idx}}].major" htmlEscape="false" value="{{row.major}}" class="form-control"/>
  559. </td>
  560. <td style="text-align:center;">
  561. <select name="educationList[{{idx}}].edu" id="educationList{{idx}}_edu" class="form-control required">
  562. <c:forEach items="${fns:getDictList('education_level')}" var="var">
  563. <option value="${var.value}" <c:if test="${row.edu eq var.value}">selected</c:if>>${var.label}</option>
  564. </c:forEach>
  565. </select>
  566. </td>
  567. <td style="text-align:center;">
  568. <select name="educationList[{{idx}}].degree" id="educationList{{idx}}_degree" class="form-control">
  569. <c:forEach items="${fns:getDictList('degree_level')}" var="var">
  570. <option value="${var.value}" <c:if test="${row.degree eq var.value}">selected</c:if>>${var.label}</option>
  571. </c:forEach>
  572. </select>
  573. </td>
  574. <td style="text-align:center;">
  575. <select name="educationList[{{idx}}].eduType" id="educationList{{idx}}_eduType" class="form-control">
  576. <c:forEach items="${fns:getDictList('edu_type')}" var="var">
  577. <option value="${var.value}" <c:if test="${row.eduType eq var.value}">selected</c:if>>${var.label}</option>
  578. </c:forEach>
  579. </select>
  580. </td>
  581. <td style="text-align:center;">
  582. <input id="educationList{{idx}}_startDate" name="educationList[{{idx}}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  583. value="<fmt:formatDate value="${row.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  584. </td>
  585. <td style="text-align:center;">
  586. <input id="educationList{{idx}}_endDate" name="educationList[{{idx}}].endDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  587. value="<fmt:formatDate value="${row.endDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  588. </td>
  589. <td class="text-left op-td">
  590. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('educationList{{idx}}_eduPhotoFile')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="educationList{{idx}}_eduPhotoFileName1"></span>
  591. <input id="educationList{{idx}}_eduPhotoFile" name="educationList[{{idx}}].eduPhotoFile" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  592. </td>
  593. <td class="text-left op-td">
  594. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('educationList{{idx}}_degreePhotoFile')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="educationList{{idx}}_degreePhotoFileName1"></span>
  595. <input id="educationList{{idx}}_degreePhotoFile" name="educationList[{{idx}}].degreePhotoFile" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  596. </td>
  597. <td class="text-center op-td">
  598. <a href=javascript:void(0); onclick="delRow(this, '#educationList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  599. </td>
  600. </tr>//-->
  601. </script>
  602. <script type="text/javascript">
  603. var educationIdx = 0; var educationTpl = $("#educationTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  604. function addRowEducation(list, idx, tpl, row){
  605. if(idx==0) {
  606. educationIdx = $("#educationList tr").length;
  607. idx = educationIdx;
  608. }
  609. bornTemplete(list, idx, tpl, row, idx);
  610. educationIdx +=1;
  611. var startDateId = list+idx+"_startDate";
  612. var endDateId = list+idx+"_endDate";
  613. laydate.render({
  614. elem: startDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  615. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  616. });
  617. laydate.render({
  618. elem: endDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  619. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  620. });
  621. }
  622. </script>
  623. </div>
  624. </div>
  625. <div class="form-group layui-row">
  626. <div class="form-group-label"><h2>劳动关系</h2></div>
  627. <div class="layui-item layui-col-xs12 form-table-container">
  628. <table id="labourTable" class="table table-bordered table-condensed details">
  629. <thead>
  630. <tr>
  631. <th width="12%">合同类型</th>
  632. <th width="12%">合同编号</th>
  633. <th width="12%">合同期限</th>
  634. <th width="11%">合同起始日期</th>
  635. <th width="11%">合同终止日期</th>
  636. <th width="11%">试用期结束日期</th>
  637. <th width="11%">办理日期</th>
  638. <th width="20%">文件</th>
  639. </tr>
  640. </thead>
  641. <tbody id="labourList">
  642. <c:forEach items="${workStaffBasicInfo.labourList}" var="buyDetails" varStatus="status">
  643. <tr>
  644. <td>${fns:getDictLabel(buyDetails.contractType, 'relsp_cType', '')}</td>
  645. <td>${buyDetails.contractNum}</td>
  646. <td>${fns:getDictLabel(buyDetails.contractLimit, 'contract_limit', '')}</td>
  647. <td><fmt:formatDate value="${buyDetails.contractStartTime}" pattern="yyyy-MM-dd"/></td>
  648. <td><fmt:formatDate value="${buyDetails.contractEndTime}" pattern="yyyy-MM-dd"/></td>
  649. <td><fmt:formatDate value="${buyDetails.tryEndTime}" pattern="yyyy-MM-dd"/></td>
  650. <td><fmt:formatDate value="${buyDetails.transactTime}" pattern="yyyy-MM-dd"/></td>
  651. <%--试用期结束时间<td><fmt:formatDate value="${buyDetails.tryEndTime}" pattern="yyyy-MM-dd"/></td>--%>
  652. <c:forEach items="${buyDetails.workAttachments}" var = "workClientAttachment" varStatus="status">
  653. <c:choose>
  654. <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
  655. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
  656. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
  657. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
  658. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
  659. <td><img src="${workClientAttachment.url}" width="24" height="24" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
  660. </c:when>
  661. <c:otherwise>
  662. <c:choose>
  663. <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
  664. <td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
  665. </c:when>
  666. <c:otherwise>
  667. <td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
  668. </c:otherwise>
  669. </c:choose>
  670. </c:otherwise>
  671. </c:choose>
  672. </c:forEach>
  673. </tr>
  674. </c:forEach>
  675. </tbody>
  676. </table>
  677. </div>
  678. </div>
  679. <div class="form-group layui-row">
  680. <div class="form-group-label"><h2>外语语种</h2></div>
  681. <div class="layui-item nav-btns">
  682. <a href=javascript:void(0); onclick="addRowLanguage('#languageList',languageIdx,languageTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  683. </div>
  684. <div class="layui-item layui-col-xs12 form-table-container">
  685. <table id="languageTable" class="table table-bordered table-condensed can-edit">
  686. <thead>
  687. <tr>
  688. <th class="hide"></th>
  689. <th width="20%"><span class="require-item">*</span>语种</th>
  690. <th width="15%"><span class="require-item">*</span>熟练程度</th>
  691. <th width="20%">证书名称</th>
  692. <th width="20%">获证日期</th>
  693. <th width="15%">文件</th>
  694. <th width="10%">操作</th>
  695. </tr>
  696. </thead>
  697. <tbody id="languageList">
  698. <c:forEach items="${workStaffBasicInfo.languageList}" var="language" varStatus="varStatus">
  699. <tr>
  700. <td class="hide">
  701. <input type="hidden" id="languageList${varStatus.index}_id" name="languageList[${varStatus.index}].id" value="${language.id}">
  702. <input id="languageList${varStatus.index}_delFlag" name="languageList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  703. <input id="languageList${varStatus.index}_fileName" name="languageList[${varStatus.index}].fileName" type="hidden" value="${language.fileName}"/>
  704. <input id="languageList${varStatus.index}_filePath" name="languageList[${varStatus.index}].filePath" type="hidden" value="${language.filePath}"/>
  705. </td>
  706. <td style="text-align:center;">
  707. <select name="languageList[${varStatus.index}].language" id="languageList${varStatus.index}_language" class="form-control required">
  708. <c:forEach items="${fns:getMainDictList('language')}" var="var">
  709. <option value="${var.value}" <c:if test="${language.language eq var.value}">selected</c:if>>${var.label}</option>
  710. </c:forEach>
  711. </select>
  712. </td>
  713. <td style="text-align:center;">
  714. <select name="languageList[${varStatus.index}].proficiency" id="languageList${varStatus.index}_proficiency" class="form-control required">
  715. <c:forEach items="${fns:getDictList('proficiency')}" var="var">
  716. <option value="${var.value}" <c:if test="${language.proficiency eq var.value}">selected</c:if>>${var.label}</option>
  717. </c:forEach>
  718. </select>
  719. </td>
  720. <td style="text-align:center;">
  721. <input id="languageList${varStatus.index}_certificate" name="languageList[${varStatus.index}].certificate" class="form-control" value="${language.certificate}"/>
  722. </td>
  723. <td style="text-align:center;">
  724. <input id="languageList${varStatus.index}_certifDate" name="languageList[${varStatus.index}].certifDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  725. value="<fmt:formatDate value="${language.certifDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  726. </td>
  727. <td class="text-left op-td">
  728. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('languageList${varStatus.index}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="languageList${varStatus.index}_fileName1"><c:if test="${not empty language.filePath}"><img src="${language.filePath}" width="24" height="24" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${language.filePath}','90%','90%')" alt="${language.fileName}"></c:if></span>
  729. <input id="languageList${varStatus.index}_file" name="languageList[${varStatus.index}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  730. </td>
  731. <td class="text-center op-td">
  732. <a href=javascript:void(0); onclick="delRow(this, '#languageList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  733. </td>
  734. </tr>
  735. </c:forEach>
  736. </tbody>
  737. </table>
  738. <script type="text/template" id="languageTpl">//<!--
  739. <tr id="languageList{{idx}}">
  740. <td class="hide">
  741. <input id="languageList{{idx}}_id" name="languageList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
  742. <input id="languageList{{idx}}_delFlag" name="languageList[{{idx}}].delFlag" type="hidden" value="0"/>
  743. </td>
  744. <td style="text-align:center;">
  745. <select name="languageList[{{idx}}].language" id="languageList{{idx}}_language" class="form-control required">
  746. <c:forEach items="${fns:getMainDictList('language')}" var="var">
  747. <option value="${var.value}">${var.label}</option>
  748. </c:forEach>
  749. </select>
  750. </td>
  751. <td style="text-align:center;">
  752. <select name="languageList[{{idx}}].proficiency" id="languageList{{idx}}_proficiency" class="form-control required">
  753. <c:forEach items="${fns:getDictList('proficiency')}" var="var">
  754. <option value="${var.value}">${var.label}</option>
  755. </c:forEach>
  756. </select>
  757. </td>
  758. <td style="text-align:center;">
  759. <input id="languageList{{idx}}_certificate" name="languageList[{{idx}}].certificate" class="form-control" value="{{row.certificate}}"/>
  760. </td>
  761. <td style="text-align:center;">
  762. <input id="languageList{{idx}}_certifDate" name="languageList[{{idx}}].certifDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  763. value="<fmt:formatDate value="${row.certifDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  764. </td>
  765. <td class="text-left op-td">
  766. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('languageList{{idx}}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="languageList{{idx}}_fileName1"></span>
  767. <input id="languageList{{idx}}_file" name="languageList[{{idx}}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  768. </td>
  769. <td class="text-center op-td">
  770. <a href=javascript:void(0); onclick="delRow(this, '#languageList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  771. </td>
  772. </tr>//-->
  773. </script>
  774. <script type="text/javascript">
  775. var languageIdx = 0; var languageTpl = $("#languageTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  776. function addRowLanguage(list, idx, tpl, row){
  777. if(idx==0) {
  778. languageIdx = $("#languageList tr").length;
  779. idx = languageIdx;
  780. }
  781. bornTemplete(list, idx, tpl, row, idx);
  782. languageIdx +=1;
  783. var startDateId = list+idx+"_certifDate";
  784. laydate.render({
  785. elem: startDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  786. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  787. });
  788. }
  789. </script>
  790. </div>
  791. </div>
  792. <div class="form-group layui-row">
  793. <div class="form-group-label"><h2>工作经历</h2></div>
  794. <div class="layui-item nav-btns">
  795. <a href=javascript:void(0); onclick="addRowExperience('#experienceList', experienceIdx, experienceTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  796. </div>
  797. <div class="layui-item layui-col-xs12 form-table-container">
  798. <table id="experienceTable" class="table table-bordered table-condensed can-edit">
  799. <thead>
  800. <tr>
  801. <th class="hide"></th>
  802. <th width="15%"><span class="require-item">*</span>所在单位</th>
  803. <th width="15%"><span class="require-item">*</span>工作部门</th>
  804. <th width="14%"><span class="require-item">*</span>职务或岗位</th>
  805. <th width="12%"><span class="require-item">*</span>起始日期</th>
  806. <th width="12%"><span class="require-item">*</span>终止日期</th>
  807. <th width="11%">证明人</th>
  808. <th width="11%">证明人联系方式</th>
  809. <th width="10%">操作</th>
  810. </tr>
  811. </thead>
  812. <tbody id="experienceList">
  813. <c:forEach items="${workStaffBasicInfo.experienceList}" varStatus="varStatus" var="experience">
  814. <tr id="experienceList${varStatus.index}">
  815. <td class="hide">
  816. <input id="experienceList${varStatus.index}_id" name="experienceList[${varStatus.index}].id" type="hidden" value="${experience.id}"/>
  817. <input id="experienceList${varStatus.index}_delFlag" name="experienceList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  818. </td>
  819. <td style="text-align:center;">
  820. <input id="experienceList${varStatus.index}_company" name="experienceList[${varStatus.index}].company" class="form-control required" value="${experience.company}"/>
  821. </td>
  822. <td style="text-align:center;">
  823. <input id="experienceList${varStatus.index}_dept" name="experienceList[${varStatus.index}].dept" class="form-control required" value="${experience.dept}"/>
  824. </td>
  825. <td style="text-align:center;">
  826. <input id="experienceList${varStatus.index}_duty" name="experienceList[${varStatus.index}].duty" class="form-control required" value="${experience.duty}"/>
  827. </td>
  828. <td style="text-align:center;">
  829. <input id="experienceList${varStatus.index}_startDate" name="experienceList[${varStatus.index}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  830. value="<fmt:formatDate value="${experience.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  831. </td>
  832. <td style="text-align:center;">
  833. <input id="experienceList${varStatus.index}_endDate" name="experienceList[${varStatus.index}].endDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  834. value="<fmt:formatDate value="${experience.endDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  835. </td>
  836. <td style="text-align:center;">
  837. <input id="experienceList${varStatus.index}_certifier" name="experienceList[${varStatus.index}].certifier" class="form-control" value="${experience.certifier}"/>
  838. </td>
  839. <td style="text-align:center;">
  840. <input id="experienceList${varStatus.index}_certifierTel" name="experienceList[${varStatus.index}].certifierTel" class="form-control" value="${experience.certifierTel}"/>
  841. </td>
  842. <td class="text-center op-td">
  843. <a href=javascript:void(0); onclick="delRow(this, '#experienceList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  844. </td>
  845. </tr>
  846. </c:forEach>
  847. </tbody>
  848. </table>
  849. <script type="text/template" id="experienceTpl">//<!--
  850. <tr id="experienceList{{idx}}">
  851. <td class="hide">
  852. <input id="experienceList{{idx}}_id" name="experienceList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
  853. <input id="experienceList{{idx}}_delFlag" name="experienceList[{{idx}}].delFlag" type="hidden" value="0"/>
  854. </td>
  855. <td style="text-align:center;">
  856. <input id="experienceList{{idx}}_company" name="experienceList[{{idx}}].company" class="form-control required" value="{{row.company}}"/>
  857. </td>
  858. <td style="text-align:center;">
  859. <input id="experienceList{{idx}}_dept" name="experienceList[{{idx}}].dept" class="form-control required" value="{{row.dept}}"/>
  860. </td>
  861. <td style="text-align:center;">
  862. <input id="experienceList{{idx}}_duty" name="experienceList[{{idx}}].duty" class="form-control required" value="{{row.duty}}"/>
  863. </td>
  864. <td style="text-align:center;">
  865. <input id="experienceList{{idx}}_startDate" name="experienceList[{{idx}}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  866. value="<fmt:formatDate value="${row.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  867. </td>
  868. <td style="text-align:center;">
  869. <input id="experienceList{{idx}}_endDate" name="experienceList[{{idx}}].endDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  870. value="<fmt:formatDate value="${row.endDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  871. </td>
  872. <td style="text-align:center;">
  873. <input id="experienceList{{idx}}_certifier" name="experienceList[{{idx}}].certifier" class="form-control" value="{{row.certifier}}"/>
  874. </td>
  875. <td style="text-align:center;">
  876. <input id="experienceList{{idx}}_certifierTel" name="experienceList[{{idx}}].certifierTel" class="form-control" value="{{row.certifierTel}}"/>
  877. </td>
  878. <td class="text-center op-td">
  879. <a href=javascript:void(0); onclick="delRow(this, '#experienceList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  880. </td>
  881. </tr>//-->
  882. </script>
  883. <script type="text/javascript">
  884. var experienceIdx = 0; var experienceTpl = $("#experienceTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  885. function addRowExperience(list, idx, tpl, row){
  886. if(idx==0) {
  887. experienceIdx = $("#experienceList tr").length;
  888. idx = experienceIdx;
  889. }
  890. bornTemplete(list, idx, tpl, row, idx);
  891. experienceIdx +=1;
  892. var startDateId = list+idx+"_startDate";
  893. var endDateId = list+idx+"_endDate";
  894. laydate.render({
  895. elem: startDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  896. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  897. });
  898. laydate.render({
  899. elem: endDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  900. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  901. });
  902. }
  903. </script>
  904. </div>
  905. </div>
  906. <div class="form-group layui-row">
  907. <div class="form-group-label"><h2>执业资格证书</h2></div>
  908. <div class="layui-item nav-btns">
  909. <a href=javascript:void(0); onclick="addRowCertificate('#certificateList',certificateIdx,certificateTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  910. </div>
  911. <div class="layui-item layui-col-xs12 form-table-container">
  912. <table id="certificateTable" class="table table-bordered table-condensed can-edit">
  913. <thead>
  914. <tr>
  915. <th class="hide"></th>
  916. <th width="10%"><span class="require-item">*</span>证书名称</th>
  917. <th width="10%"><span class="require-item">*</span>证书编号</th>
  918. <th width="10%"><span class="require-item">*</span>发证机关</th>
  919. <th width="11%"><span class="require-item">*</span>发证日期</th>
  920. <th width="11%">注册日期</th>
  921. <th width="9%">注册证书编号</th>
  922. <th width="7%">专业</th>
  923. <th width="6%">等级</th>
  924. <th width="6%">取得方式</th>
  925. <th width="10%">文件</th>
  926. <th width="10%">操作</th>
  927. </tr>
  928. </thead>
  929. <tbody id="certificateList">
  930. <c:forEach items="${workStaffBasicInfo.certificateList}" var="certificate" varStatus="varStatus">
  931. <tr>
  932. <td class="hide">
  933. <input type="hidden" id="certificateList${varStatus.index}_id" name="certificateList[${varStatus.index}].id" value="${certificate.id}">
  934. <input id="certificateList${varStatus.index}_delFlag" name="certificateList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  935. <input id="certificateList${varStatus.index}_fileName" name="certificateList[${varStatus.index}].fileName" type="hidden" value="${certificate.fileName}"/>
  936. <input id="certificateList${varStatus.index}_filePath" name="certificateList[${varStatus.index}].filePath" type="hidden" value="${certificate.filePath}"/>
  937. </td>
  938. <td>
  939. <select name="certificateList[${varStatus.index}].name" id="certificateList${varStatus.index}_name" class="form-control required">
  940. <c:forEach items="${fns:getMainDictList('certificate_type')}" var="var">
  941. <option value="${var.label}" <c:if test="${certificate.name eq var.label}">selected</c:if>>${var.label}</option>
  942. </c:forEach>
  943. </select>
  944. </td>
  945. <td>
  946. <input id="certificateList${varStatus.index}_num" name="certificateList[${varStatus.index}].num" class="form-control required" value="${certificate.num}"/>
  947. </td>
  948. <td>
  949. <input id="certificateList${varStatus.index}_issuingAuthority" name="certificateList[${varStatus.index}].issuingAuthority" class="form-control required" value="${certificate.issuingAuthority}"/>
  950. </td>
  951. <td>
  952. <input id="certificateList${varStatus.index}_issuingDate" name="certificateList[${varStatus.index}].issuingDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  953. value="<fmt:formatDate value="${certificate.issuingDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  954. </td>
  955. <td>
  956. <input id="certificateList${varStatus.index}_registDate" name="certificateList[${varStatus.index}].registDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  957. value="<fmt:formatDate value="${certificate.registDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  958. </td>
  959. <td>
  960. <input id="certificateList${varStatus.index}_registNum" name="certificateList[${varStatus.index}].registNum" class="form-control" value="${certificate.registNum}"/>
  961. </td>
  962. <td>
  963. <input id="certificateList${varStatus.index}_major" name="certificateList[${varStatus.index}].major" class="form-control" value="${certificate.major}"/>
  964. </td>
  965. <td>
  966. <input id="certificateList${varStatus.index}_grade" name="certificateList[${varStatus.index}].grade" class="form-control" value="${certificate.grade}"/>
  967. </td>
  968. <td>
  969. <select name="certificateList[${varStatus.index}].issType" id="certificateList${varStatus.index}_issType" class="form-control">
  970. <option value="考试" <c:if test="${'考试' eq certificate.issType}">selected</c:if>>考试</option>
  971. <option value="考核" <c:if test="${'考核' eq certificate.issType}">selected</c:if>>考核</option>
  972. </select>
  973. </td>
  974. <td class="text-left op-td">
  975. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('certificateList${varStatus.index}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="certificateList${varStatus.index}_fileName1"><c:if test="${not empty certificate.filePath}"><img src="${certificate.filePath}" width="24" height="24" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${certificate.filePath}','90%','90%')" alt=""></c:if></span>
  976. <input id="certificateList${varStatus.index}_file" name="certificateList[${varStatus.index}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  977. </td>
  978. <td class="text-center op-td">
  979. <a href=javascript:void(0); onclick="delRow(this, '#certificateList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  980. </td>
  981. </tr>
  982. </c:forEach>
  983. </tbody>
  984. </table>
  985. <script type="text/template" id="certificateTpl">//<!--
  986. <tr>
  987. <td class="hide">
  988. <input type="hidden" id="certificateList{{idx}}_id" name="certificateList[{{idx}}].id" value="{{row.id}}">
  989. <input id="certificateList{{idx}}_delFlag" name="certificateList[{{idx}}].delFlag" type="hidden" value="0"/>
  990. <input id="certificateList{{idx}}_fileName" name="certificateList[{{idx}}].fileName" type="hidden" value="{{row.fileName}}"/>
  991. <input id="certificateList{{idx}}_filePath" name="certificateList[{{idx}}].filePath" type="hidden" value="{{row.filePath}}"/>
  992. </td>
  993. <td>
  994. <select name="certificateList[{{idx}}].name" id="certificateList{{idx}}_name" class="form-control required">
  995. <option value=""></option>
  996. <c:forEach items="${fns:getMainDictList('certificate_type')}" var="var">
  997. <option value="${var.label}">${var.label}</option>
  998. </c:forEach>
  999. </select>
  1000. </td>
  1001. <td>
  1002. <input id="certificateList{{idx}}_num" name="certificateList[{{idx}}].num" class="form-control required" value="{{row.num}}"/>
  1003. </td>
  1004. <td>
  1005. <input id="certificateList{{idx}}_issuingAuthority" name="certificateList[{{idx}}].issuingAuthority" class="form-control required" value="{{row.issuingAuthority}}"/>
  1006. </td>
  1007. <td>
  1008. <input id="certificateList{{idx}}_issuingDate" name="certificateList[{{idx}}].issuingDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  1009. value="<fmt:formatDate value="${certificate.issuingDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1010. </td>
  1011. <td>
  1012. <input id="certificateList{{idx}}_registDate" name="certificateList[{{idx}}].registDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  1013. value="<fmt:formatDate value="${certificate.registDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1014. </td>
  1015. <td>
  1016. <input id="certificateList{{idx}}_registNum" name="certificateList[{{idx}}].registNum" class="form-control" value="{{row.registNum}}"/>
  1017. </td>
  1018. <td>
  1019. <input id="certificateList{{idx}}_major" name="certificateList[{{idx}}].major" class="form-control" value="{{row.major}}"/>
  1020. </td>
  1021. <td>
  1022. <input id="certificateList{{idx}}_grade" name="certificateList[{{idx}}].grade" class="form-control" value="{{row.grade}}"/>
  1023. </td>
  1024. <td>
  1025. <select name="certificateList[{{idx}}].issType" id="certificateList{{idx}}_issType" class="form-control">
  1026. <option value="考试" selected >考试</option>
  1027. <option value="考核">考核</option>
  1028. </select>
  1029. </td>
  1030. <td class="text-left op-td">
  1031. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('certificateList{{idx}}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="certificateList{{idx}}_fileName1"></span>
  1032. <input id="certificateList{{idx}}_file" name="certificateList[{{idx}}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  1033. </td>
  1034. <td class="text-center op-td">
  1035. <a href=javascript:void(0); onclick="delRow(this, '#certificateList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  1036. </td>
  1037. </tr>//-->
  1038. </script>
  1039. <script type="text/javascript">
  1040. var certificateIdx = 0; var certificateTpl = $("#certificateTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  1041. function addRowCertificate(list, idx, tpl, row){
  1042. if(idx==0) {
  1043. certificateIdx = $("#certificateList tr").length;
  1044. idx = certificateIdx;
  1045. }
  1046. bornTemplete(list, idx, tpl, row, idx);
  1047. certificateIdx +=1;
  1048. var startDateId = list+idx+"_issuingDate";
  1049. var registDateId = list+idx+"_registDate";
  1050. laydate.render({
  1051. elem: startDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  1052. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  1053. });
  1054. laydate.render({
  1055. elem: registDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  1056. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  1057. });
  1058. }
  1059. </script>
  1060. </div>
  1061. </div>
  1062. <div class="form-group layui-row">
  1063. <div class="form-group-label"><h2>职称</h2></div>
  1064. <div class="layui-item nav-btns">
  1065. <a href=javascript:void(0); onclick="addRowTitle('#titleList',titleIdx,titleTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  1066. </div>
  1067. <div class="layui-item layui-col-xs12 form-table-container">
  1068. <table id="titleTable" class="table table-bordered table-condensed can-edit">
  1069. <thead>
  1070. <tr>
  1071. <th class="hide"></th>
  1072. <th width="15%"><span class="require-item">*</span>职称名称</th>
  1073. <th width="15%"><span class="require-item">*</span>职称等级</th>
  1074. <th width="15%"><span class="require-item">*</span>取得日期</th>
  1075. <th width="15%"><span class="require-item">*</span>取得途径</th>
  1076. <th width="15%"><span class="require-item">*</span>审批单位</th>
  1077. <th width="15%">文件</th>
  1078. <th width="10%">操作</th>
  1079. </tr>
  1080. </thead>
  1081. <tbody id="titleList">
  1082. <c:forEach items="${workStaffBasicInfo.titleList}" var="title" varStatus="varStatus">
  1083. <tr>
  1084. <td class="hide">
  1085. <input type="hidden" id="titleList${varStatus.index}_id" name="titleList[${varStatus.index}].id" value="${title.id}">
  1086. <input id="titleList${varStatus.index}_delFlag" name="titleList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  1087. <input id="titleList${varStatus.index}_fileName" name="titleList[${varStatus.index}].fileName" type="hidden" value="${title.fileName}"/>
  1088. <input id="titleList${varStatus.index}_filePath" name="titleList[${varStatus.index}].filePath" type="hidden" value="${title.filePath}"/>
  1089. </td>
  1090. <td>
  1091. <input id="titleList${varStatus.index}_name" name="titleList[${varStatus.index}].name" class="form-control required" value="${title.name}"/>
  1092. </td>
  1093. <td>
  1094. <input id="titleList${varStatus.index}_grade" name="titleList[${varStatus.index}].grade" class="form-control required" value="${title.grade}"/>
  1095. </td>
  1096. <td>
  1097. <input id="titleList${varStatus.index}_startDate" name="titleList[${varStatus.index}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  1098. value="<fmt:formatDate value="${title.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1099. </td>
  1100. <td>
  1101. <input id="titleList${varStatus.index}_pathway" name="titleList[${varStatus.index}].pathway" class="form-control required" value="${title.pathway}"/>
  1102. </td>
  1103. <td>
  1104. <input id="titleList${varStatus.index}_approvalAuthority" name="titleList[${varStatus.index}].approvalAuthority" class="form-control required" value="${title.approvalAuthority}"/>
  1105. </td>
  1106. <td class="text-left op-td">
  1107. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('titleList${varStatus.index}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="titleList${varStatus.index}_fileName1"><c:if test="${not empty title.filePath}"><img src="${title.filePath}" width="24" height="24" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${title.filePath}','90%','90%')" alt=""></c:if></span>
  1108. <input id="titleList${varStatus.index}_file" name="titleList[${varStatus.index}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  1109. </td>
  1110. <td class="text-center op-td">
  1111. <a href=javascript:void(0); onclick="delRow(this, '#titleList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  1112. </td>
  1113. </tr>
  1114. </c:forEach>
  1115. </tbody>
  1116. </table>
  1117. <script type="text/template" id="titleTpl">//<!--
  1118. <tr>
  1119. <td class="hide">
  1120. <input type="hidden" id="titleList{{idx}}_id" name="titleList[{{idx}}].id" value="{{row.id}}">
  1121. <input id="titleList{{idx}}_delFlag" name="titleList[{{idx}}].delFlag" type="hidden" value="0"/>
  1122. <input id="titleList{{idx}}_fileName" name="titleList[{{idx}}].fileName" type="hidden" value="{{row.fileName}}"/>
  1123. <input id="titleList{{idx}}_filePath" name="titleList[{{idx}}].filePath" type="hidden" value="{{row.filePath}}"/>
  1124. </td>
  1125. <td>
  1126. <input id="titleList{{idx}}_name" name="titleList[{{idx}}].name" class="form-control required" value="{{row.name}}"/>
  1127. </td>
  1128. <td>
  1129. <input id="titleList{{idx}}_grade" name="titleList[{{idx}}].grade" class="form-control required" value="{{row.grade}}"/>
  1130. </td>
  1131. <td>
  1132. <input id="titleList{{idx}}_startDate" name="titleList[{{idx}}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate required"
  1133. value="<fmt:formatDate value="${row.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1134. </td>
  1135. <td>
  1136. <input id="titleList{{idx}}_pathway" name="titleList[{{idx}}].pathway" class="form-control required" value="{{row.pathway}}"/>
  1137. </td>
  1138. <td>
  1139. <input id="titleList{{idx}}_approvalAuthority" name="titleList[{{idx}}].approvalAuthority" class="form-control required" value="{{row.approvalAuthority}}"/>
  1140. </td>
  1141. <td class="text-left op-td">
  1142. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('titleList{{idx}}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="titleList{{idx}}_fileName1"></span>
  1143. <input id="titleList{{idx}}_file" name="titleList[{{idx}}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  1144. </td>
  1145. <td class="text-center op-td">
  1146. <a href=javascript:void(0); onclick="delRow(this, '#titleList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  1147. </td>
  1148. </tr>//-->
  1149. </script>
  1150. <script type="text/javascript">
  1151. var titleIdx = 0; var titleTpl = $("#titleTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  1152. function addRowTitle(list, idx, tpl, row){
  1153. if(idx==0) {
  1154. titleIdx = $("#titleList tr").length;
  1155. idx = titleIdx;
  1156. }
  1157. bornTemplete(list, idx, tpl, row, idx);
  1158. titleIdx +=1;
  1159. var startDateId = list+idx+"_startDate";
  1160. laydate.render({
  1161. elem: startDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  1162. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  1163. });
  1164. }
  1165. </script>
  1166. </div>
  1167. </div>
  1168. <div class="form-group layui-row">
  1169. <div class="form-group-label"><h2>家庭情况</h2></div>
  1170. <div class="layui-item nav-btns">
  1171. <a href=javascript:void(0); onclick="addRowFamily('#familyList', familyIdx, familyTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  1172. </div>
  1173. <div class="layui-item layui-col-xs12 form-table-container">
  1174. <table id="familyTable" class="table table-bordered table-condensed can-edit">
  1175. <thead>
  1176. <tr>
  1177. <th class="hide"></th>
  1178. <th width="15%"><span class="require-item">*</span>与本人的关系</th>
  1179. <th width="20%"><span class="require-item">*</span>成员姓名</th>
  1180. <th width="25%"><span class="require-item">*</span>身份证号码</th>
  1181. <th width="10%"><span class="require-item">*</span>成员性别</th>
  1182. <th width="20%"><span class="require-item">*</span>成员联系方式</th>
  1183. <th width="10%">操作</th>
  1184. </tr>
  1185. </thead>
  1186. <tbody id="familyList">
  1187. <c:forEach items="${workStaffBasicInfo.familyList}" var="family" varStatus="varStatus">
  1188. <tr id="familyList${varStatus.index}">
  1189. <td class="hide">
  1190. <input id="familyList${varStatus.index}_id" name="familyList[${varStatus.index}].id" type="hidden" value="${family.id}"/>
  1191. <input id="familyList${varStatus.index}_delFlag" name="familyList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  1192. </td>
  1193. <td>
  1194. <input id="familyList${varStatus.index}_relation" name="familyList[${varStatus.index}].relation" class="form-control required" value="${family.relation}"/>
  1195. </td>
  1196. <td>
  1197. <input id="familyList${varStatus.index}_name" name="familyList[${varStatus.index}].name" class="form-control required" value="${family.name}"/>
  1198. </td>
  1199. <td>
  1200. <input id="familyList${varStatus.index}_idCard" name="familyList[${varStatus.index}].idCard" class="form-control required idCard" value="${family.idCard}"/>
  1201. </td>
  1202. <td>
  1203. <select name="familyList[${varStatus.index}].gender" class="form-control ">
  1204. <option value="男" <c:if test="${'男' eq family.gender}">selected</c:if>>男</option>
  1205. <option value="女" <c:if test="${'女' eq family.gender}">selected</c:if>>女</option>
  1206. </select>
  1207. </td>
  1208. <td>
  1209. <input id="familyList${varStatus.index}_contact" name="familyList[${varStatus.index}].contact" class="form-control required" value="${family.contact}"/>
  1210. </td>
  1211. <td class="text-center op-td">
  1212. <a href=javascript:void(0); onclick="delRow(this, '#familyList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  1213. </td>
  1214. </tr>
  1215. </c:forEach>
  1216. </tbody>
  1217. </table>
  1218. <script type="text/template" id="familyTpl">//<!--
  1219. <tr id="familyList{{idx}}">
  1220. <td class="hide">
  1221. <input id="familyList{{idx}}_id" name="familyList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
  1222. <input id="familyList{{idx}}_delFlag" name="familyList[{{idx}}].delFlag" type="hidden" value="0"/>
  1223. </td>
  1224. <td style="text-align:center;">
  1225. <input id="familyList{{idx}}_relation" name="familyList[{{idx}}].relation" class="form-control required" value="{{row.relation}}"/>
  1226. </td>
  1227. <td style="text-align:center;">
  1228. <input id="familyList{{idx}}_name" name="familyList[{{idx}}].name" class="form-control required" value="{{row.name}}"/>
  1229. </td>
  1230. <td style="text-align:center;">
  1231. <input id="familyList{{idx}}_idCard" name="familyList[{{idx}}].idCard" class="form-control required idCard" value="{{row.idCard}}"/>
  1232. </td>
  1233. <td style="text-align:center;">
  1234. <select name="familyList[{{idx}}].gender" class="form-control required">
  1235. <option value="男">男</option>
  1236. <option value="女">女</option>
  1237. </select>
  1238. </td>
  1239. <td style="text-align:center;">
  1240. <input id="familyList{{idx}}_contact" name="familyList[{{idx}}].contact" class="form-control required" value="{{row.contact}}"/>
  1241. </td>
  1242. <td class="text-center op-td">
  1243. <a href=javascript:void(0); onclick="delRow(this, '#familyList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  1244. </td>
  1245. </tr>//-->
  1246. </script>
  1247. <script type="text/javascript">
  1248. var familyIdx = 0; var familyTpl = $("#familyTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  1249. function addRowFamily(list, idx, tpl, row){
  1250. if(idx==0) {
  1251. familyIdx = $("#familyList tr").length;
  1252. idx = familyIdx;
  1253. }
  1254. bornTemplete(list, idx, tpl, row, idx);
  1255. familyIdx +=1;
  1256. }
  1257. </script>
  1258. </div>
  1259. </div>
  1260. <div class="form-group layui-row">
  1261. <div class="form-group-label"><h2>培训经历</h2></div>
  1262. <div class="layui-item nav-btns">
  1263. <a href=javascript:void(0); onclick="addRowTraining('#trainingList',trainingIdx,trainingTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  1264. </div>
  1265. <div class="layui-item layui-col-xs12 form-table-container">
  1266. <table id="trainingTable" class="table table-bordered table-condensed can-edit">
  1267. <thead>
  1268. <tr>
  1269. <th class="hide"></th>
  1270. <th width="9%"><span class="require-item">*</span>培训名称</th>
  1271. <th width="9%">培训机构</th>
  1272. <th width="9%">培训地点</th>
  1273. <th width="11%">培训起始日期</th>
  1274. <th width="11%">培训终止日期</th>
  1275. <th width="9%"><span class="require-item">*</span>培训类型</th>
  1276. <th width="5%">学时</th>
  1277. <th width="10%"><span class="require-item">*</span>所获证书</th>
  1278. <th width="10%">文件</th>
  1279. <th width="7%">备注</th>
  1280. <th width="10%">操作</th>
  1281. </tr>
  1282. </thead>
  1283. <tbody id="trainingList">
  1284. <c:forEach items="${workStaffBasicInfo.trainingList}" var="training" varStatus="varStatus">
  1285. <tr>
  1286. <td class="hide">
  1287. <input type="hidden" id="trainingList${varStatus.index}_id" name="trainingList[${varStatus.index}].id" value="${training.id}">
  1288. <input id="trainingList${varStatus.index}_delFlag" name="trainingList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  1289. <input id="trainingList${varStatus.index}_fileName" name="trainingList[${varStatus.index}].fileName" type="hidden" value="${training.fileName}"/>
  1290. <input id="trainingList${varStatus.index}_filePath" name="trainingList[${varStatus.index}].filePath" type="hidden" value="${training.filePath}"/>
  1291. </td>
  1292. <td>
  1293. <input id="trainingList${varStatus.index}_name" name="trainingList[${varStatus.index}].name" class="form-control required" value="${training.name}"/>
  1294. </td>
  1295. <td>
  1296. <input id="trainingList${varStatus.index}_agency" name="trainingList[${varStatus.index}].agency" class="form-control" value="${training.agency}"/>
  1297. </td>
  1298. <td>
  1299. <input id="trainingList${varStatus.index}_address" name="trainingList[${varStatus.index}].address" class="form-control" value="${training.address}"/>
  1300. </td>
  1301. <td>
  1302. <input id="trainingList${varStatus.index}_startDate" name="trainingList[${varStatus.index}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  1303. value="<fmt:formatDate value="${training.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1304. </td>
  1305. <td>
  1306. <input id="trainingList${varStatus.index}_endDate" name="trainingList[${varStatus.index}].endDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  1307. value="<fmt:formatDate value="${training.endDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1308. </td>
  1309. <td>
  1310. <select name="trainingList[${varStatus.index}].type" id="trainingList${varStatus.index}_type" class="form-control required">
  1311. <option value=""></option>
  1312. <c:forEach items="${fns:getMainDictList('training_type')}" var="var">
  1313. <option value="${var.label}" <c:if test="${var.label eq training.type}">selected</c:if> >${var.label}</option>
  1314. </c:forEach>
  1315. </select>
  1316. </td>
  1317. <td>
  1318. <input id="trainingList${varStatus.index}_hours" name="trainingList[${varStatus.index}].hours" class="form-control" value="${training.hours}"/>
  1319. </td>
  1320. <td>
  1321. <input id="trainingList${varStatus.index}_certificate" name="trainingList[${varStatus.index}].certificate" class="form-control required" value="${training.certificate}"/>
  1322. </td>
  1323. <td class="text-left op-td">
  1324. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('trainingList${varStatus.index}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="trainingList${varStatus.index}_fileName1"><c:if test="${not empty training.filePath}"><img src="${training.filePath}" width="24" height="24" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${training.filePath}','90%','90%')" alt=""></c:if></span>
  1325. <input id="trainingList${varStatus.index}_file" name="trainingList[${varStatus.index}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  1326. </td>
  1327. <td>
  1328. <input id="trainingList${varStatus.index}_remarks" name="trainingList[${varStatus.index}].remarks" class="form-control" value="${training.remarks}"/>
  1329. </td>
  1330. <td class="text-center op-td">
  1331. <a href=javascript:void(0); onclick="delRow(this, '#titleList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  1332. </td>
  1333. </tr>
  1334. </c:forEach>
  1335. </tbody>
  1336. </table>
  1337. <script type="text/template" id="trainingTpl">//<!--
  1338. <tr>
  1339. <td class="hide">
  1340. <input type="hidden" id="trainingList{{idx}}_id" name="trainingList[{{idx}}].id" value="{{row.id}}">
  1341. <input id="trainingList{{idx}}_delFlag" name="trainingList[{{idx}}].delFlag" type="hidden" value="0"/>
  1342. <input id="trainingList{{idx}}_fileName" name="trainingList[{{idx}}].fileName" type="hidden" value="{{row.fileName}}"/>
  1343. <input id="trainingList{{idx}}_filePath" name="trainingList[{{idx}}].filePath" type="hidden" value="{{row.filePath}}"/>
  1344. </td>
  1345. <td>
  1346. <input id="trainingList{{idx}}_name" name="trainingList[{{idx}}].name" class="form-control required" value="{{row.name}}"/>
  1347. </td>
  1348. <td>
  1349. <input id="trainingList{{idx}}_agency" name="trainingList[{{idx}}].agency" class="form-control" value="{{row.agency}}"/>
  1350. </td>
  1351. <td>
  1352. <input id="trainingList{{idx}}_address" name="trainingList[{{idx}}].address" class="form-control" value="{{row.address}}"/>
  1353. </td>
  1354. <td>
  1355. <input id="trainingList{{idx}}_startDate" name="trainingList[{{idx}}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  1356. value="<fmt:formatDate value="${row.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1357. </td>
  1358. <td>
  1359. <input id="trainingList{{idx}}_endDate" name="trainingList[{{idx}}].endDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  1360. value="<fmt:formatDate value="${row.endDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1361. </td>
  1362. <td>
  1363. <select name="trainingList[{{idx}}].type" id="trainingList{{idx}}_type" class="form-control required">
  1364. <option value=""></option>
  1365. <c:forEach items="${fns:getMainDictList('training_type')}" var="var">
  1366. <option value="${var.label}">${var.label}</option>
  1367. </c:forEach>
  1368. </select>
  1369. </td>
  1370. <td>
  1371. <input id="trainingList{{idx}}_hours" name="trainingList[{{idx}}].hours" class="form-control" value="{{row.hours}}"/>
  1372. </td>
  1373. <td>
  1374. <input id="trainingList{{idx}}_certificate" name="trainingList[{{idx}}].certificate" class="form-control required" value="{{row.certificate}}"/>
  1375. </td>
  1376. <td class="text-left op-td">
  1377. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('trainingList{{idx}}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="trainingList{{idx}}_fileName1"></span>
  1378. <input id="trainingList{{idx}}_file" name="trainingList[{{idx}}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  1379. </td>
  1380. <td>
  1381. <input id="trainingList{{idx}}_remarks" name="trainingList[{{idx}}].remarks" class="form-control" value="{{row.remarks}}"/>
  1382. </td>
  1383. <td class="text-center op-td">
  1384. <a href=javascript:void(0); onclick="delRow(this, '#titleList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  1385. </td>
  1386. </tr>//-->
  1387. </script>
  1388. <script type="text/javascript">
  1389. var trainingIdx = 0; var trainingTpl = $("#trainingTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  1390. function addRowTraining(list, idx, tpl, row){
  1391. if(idx==0) {
  1392. trainingIdx = $("#trainingList tr").length;
  1393. idx = trainingIdx;
  1394. }
  1395. bornTemplete(list, idx, tpl, row, idx);
  1396. trainingIdx +=1;
  1397. var startDateId = list+idx+"_startDate";
  1398. var endDateId = list+idx+"_endDate";
  1399. laydate.render({
  1400. elem: startDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  1401. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  1402. });
  1403. laydate.render({
  1404. elem: endDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  1405. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  1406. });
  1407. }
  1408. </script>
  1409. </div>
  1410. </div>
  1411. <div class="form-group layui-row">
  1412. <div class="form-group-label"><h2>社会及行业职务</h2></div>
  1413. <div class="layui-item nav-btns">
  1414. <a href=javascript:void(0); onclick="addRowSocialPosition('#socialPositionList',socialPositionIdx,socialPositionTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  1415. </div>
  1416. <div class="layui-item layui-col-xs12 form-table-container">
  1417. <table id="socialPositionTable" class="table table-bordered table-condensed can-edit">
  1418. <thead>
  1419. <tr>
  1420. <th class="hide"></th>
  1421. <th width="27%"><span class="require-item">*</span>职务名称</th>
  1422. <th width="20%">任职开始日期</th>
  1423. <th width="20%">任职结束日期</th>
  1424. <th width="23%">任职机构</th>
  1425. <th width="10%">操作</th>
  1426. </tr>
  1427. </thead>
  1428. <tbody id="socialPositionList">
  1429. <c:forEach items="${workStaffBasicInfo.socialPositionList}" varStatus="varStatus" var="socialPosition">
  1430. <tr id="socialPositionList${varStatus.index}">
  1431. <td class="hide">
  1432. <input id="socialPositionList${varStatus.index}_id" name="socialPositionList[${varStatus.index}].id" type="hidden" value="${socialPosition.id}"/>
  1433. <input id="socialPositionList${varStatus.index}_delFlag" name="socialPositionList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  1434. </td>
  1435. <td>
  1436. <input id="socialPositionList${varStatus.index}_name" name="socialPositionList[${varStatus.index}].name" class="form-control required" value="${socialPosition.name}"/>
  1437. </td>
  1438. <td>
  1439. <input id="socialPositionList${varStatus.index}_startDate" name="socialPositionList[${varStatus.index}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  1440. value="<fmt:formatDate value="${socialPosition.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1441. </td>
  1442. <td>
  1443. <input id="socialPositionList${varStatus.index}_endDate" name="socialPositionList[${varStatus.index}].endDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  1444. value="<fmt:formatDate value="${socialPosition.endDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1445. </td>
  1446. <td>
  1447. <input id="socialPositionList${varStatus.index}_organization" name="socialPositionList[${varStatus.index}].organization" class="form-control" value="${socialPosition.organization}"/>
  1448. </td>
  1449. <td class="text-center op-td">
  1450. <a href=javascript:void(0); onclick="delRow(this, '#socialPositionList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  1451. </td>
  1452. </tr>
  1453. </c:forEach>
  1454. </tbody>
  1455. </table>
  1456. <script type="text/template" id="socialPositionTpl">//<!--
  1457. <tr id="socialPositionList{{idx}}">
  1458. <td class="hide">
  1459. <input id="socialPositionList{{idx}}_id" name="socialPositionList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
  1460. <input id="socialPositionList{{idx}}_delFlag" name="socialPositionList[{{idx}}].delFlag" type="hidden" value="0"/>
  1461. </td>
  1462. <td style="text-align:center;">
  1463. <input id="socialPositionList{{idx}}_name" name="socialPositionList[{{idx}}].name" class="form-control required" value="{{row.name}}"/>
  1464. </td>
  1465. <td style="text-align:center;">
  1466. <input id="socialPositionList{{idx}}_startDate" name="socialPositionList[{{idx}}].startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  1467. value="<fmt:formatDate value="${row.startDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1468. </td>
  1469. <td style="text-align:center;">
  1470. <input id="socialPositionList{{idx}}_endDate" name="socialPositionList[{{idx}}].endDate" type="text" maxlength="20" class="laydate-icon form-control layer-date laydate-icondate"
  1471. value="<fmt:formatDate value="${row.endDate}" pattern="yyyy-MM-dd"/>" readOnly="true" />
  1472. </td>
  1473. <td style="text-align:center;">
  1474. <input id="socialPositionList{{idx}}_organization" name="socialPositionList[{{idx}}].organization" class="form-control" value="{{row.organization}}"/>
  1475. </td>
  1476. <td class="text-center op-td">
  1477. <a href=javascript:void(0); onclick="delRow(this, '#socialPositionList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  1478. </td>
  1479. </tr>//-->
  1480. </script>
  1481. <script type="text/javascript">
  1482. var socialPositionIdx = 0; var socialPositionTpl = $("#socialPositionTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  1483. function addRowSocialPosition(list, idx, tpl, row){
  1484. if(idx==0) {
  1485. socialPositionIdx = $("#socialPositionList tr").length;
  1486. idx = socialPositionIdx;
  1487. }
  1488. bornTemplete(list, idx, tpl, row, idx);
  1489. socialPositionIdx +=1;
  1490. var startDateId = list+idx+"_startDate";
  1491. var endDateId = list+idx+"_endDate";
  1492. laydate.render({
  1493. elem: startDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  1494. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  1495. });
  1496. laydate.render({
  1497. elem: endDateId, //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  1498. event: 'click' //响应事件。如果没有传入event,则按照默认的click
  1499. });
  1500. }
  1501. </script>
  1502. </div>
  1503. </div>
  1504. <div class="form-group layui-row">
  1505. <div class="form-group-label"><h2>奖惩情况</h2></div>
  1506. <div class="layui-item nav-btns">
  1507. <a href=javascript:void(0); onclick="addRowRewards('#rewardsList',rewardsIdx,rewardsTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  1508. </div>
  1509. <div class="layui-item layui-col-xs12 form-table-container">
  1510. <table id="rewardsTable" class="table table-bordered table-condensed can-edit">
  1511. <thead>
  1512. <tr>
  1513. <th class="hide"></th>
  1514. <th width="10%"><span class="require-item">*</span>奖惩类型</th>
  1515. <th width="15%"><span class="require-item">*</span>奖惩名称</th>
  1516. <th width="15%"><span class="require-item">*</span>时间</th>
  1517. <th width="13%">级别</th>
  1518. <th width="20%"><span class="require-item">*</span>原因</th>
  1519. <th width="17%"><span class="require-item">*</span>授予机构</th>
  1520. <th width="10%">操作</th>
  1521. </tr>
  1522. </thead>
  1523. <tbody id="rewardsList">
  1524. <c:forEach items="${workStaffBasicInfo.rewardsList}" varStatus="varStatus" var="rewards">
  1525. <tr id="rewardsList${varStatus.index}">
  1526. <td class="hide">
  1527. <input id="rewardsList${varStatus.index}_id" name="rewardsList[${varStatus.index}].id" type="hidden" value="${rewards.id}"/>
  1528. <input id="rewardsList${varStatus.index}_delFlag" name="rewardsList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  1529. </td>
  1530. <td>
  1531. <select name="rewardsList[${varStatus.index}].type" class="form-control required">
  1532. <option value="奖励" <c:if test="${'奖励' eq rewards.type}">selected</c:if>>奖励</option>
  1533. <option value="惩罚" <c:if test="${'惩罚' eq rewards.type}">selected</c:if>>惩罚</option>
  1534. </select>
  1535. </td>
  1536. <td>
  1537. <input id="rewardsList${varStatus.index}_name" name="rewardsList[${varStatus.index}].name" class="form-control required" value="${rewards.name}"/>
  1538. </td>
  1539. <td>
  1540. <input id="rewardsList${varStatus.index}_atTime" name="rewardsList[${varStatus.index}].atTime" class="form-control required" value="${rewards.atTime}"/>
  1541. </td>
  1542. <td>
  1543. <input id="rewardsList${varStatus.index}_grade" name="rewardsList[${varStatus.index}].grade" class="form-control" value="${rewards.grade}"/>
  1544. </td>
  1545. <td>
  1546. <input id="rewardsList${varStatus.index}_reason" name="rewardsList[${varStatus.index}].reason" class="form-control required" value="${rewards.reason}"/>
  1547. </td>
  1548. <td>
  1549. <input id="rewardsList${varStatus.index}_organization" name="rewardsList[${varStatus.index}].organization" class="form-control required" value="${rewards.organization}"/>
  1550. </td>
  1551. <td class="text-center op-td">
  1552. <a href=javascript:void(0); onclick="delRow(this, '#rewardsList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  1553. </td>
  1554. </tr>
  1555. </c:forEach>
  1556. </tbody>
  1557. </table>
  1558. <script type="text/template" id="rewardsTpl">//<!--
  1559. <tr id="rewardsList{{idx}}">
  1560. <td class="hide">
  1561. <input id="rewardsList{{idx}}_id" name="rewardsList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
  1562. <input id="rewardsList{{idx}}_delFlag" name="rewardsList[{{idx}}].delFlag" type="hidden" value="0"/>
  1563. </td>
  1564. <td style="text-align:center;">
  1565. <select name="rewardsList[{{idx}}].type" class="form-control required">
  1566. <option value="奖励">奖励</option>
  1567. <option value="惩罚">惩罚</option>
  1568. </select>
  1569. </td>
  1570. <td style="text-align:center;">
  1571. <input id="rewardsList{{idx}}_name" name="rewardsList[{{idx}}].name" class="form-control required" value="{{row.name}}"/>
  1572. </td>
  1573. <td style="text-align:center;">
  1574. <input id="rewardsList{{idx}}_atTime" name="rewardsList[{{idx}}].atTime" class="form-control required" value="{{row.atTime}}"/>
  1575. </td>
  1576. <td style="text-align:center;">
  1577. <input id="rewardsList{{idx}}_grade" name="rewardsList[{{idx}}].grade" class="form-control" value="{{row.grade}}"/>
  1578. </td>
  1579. <td style="text-align:center;">
  1580. <input id="rewardsList{{idx}}_reason" name="rewardsList[{{idx}}].reason" class="form-control required" value="{{row.reason}}"/>
  1581. </td>
  1582. <td style="text-align:center;">
  1583. <input id="rewardsList{{idx}}_organization" name="rewardsList[{{idx}}].organization" class="form-control required" value="{{row.organization}}"/>
  1584. </td>
  1585. <td class="text-center op-td">
  1586. <a href=javascript:void(0); onclick="delRow(this, '#rewardsList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  1587. </td>
  1588. </tr>//-->
  1589. </script>
  1590. <script type="text/javascript">
  1591. var rewardsIdx = 0; var rewardsTpl = $("#rewardsTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  1592. function addRowRewards(list, idx, tpl, row){
  1593. if(idx==0) {
  1594. rewardsIdx = $("#rewardsList tr").length;
  1595. idx = rewardsIdx;
  1596. }
  1597. bornTemplete(list, idx, tpl, row, idx);
  1598. rewardsIdx +=1;
  1599. }
  1600. </script>
  1601. </div>
  1602. </div>
  1603. <div class="form-group layui-row">
  1604. <div class="form-group-label"><h2>工作业绩</h2></div>
  1605. <div class="layui-item nav-btns">
  1606. <a href=javascript:void(0); onclick="addRowAchievement('#achievementList',achievementIdx,achievementTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  1607. </div>
  1608. <div class="layui-item layui-col-xs12 form-table-container">
  1609. <table id="achievementTable" class="table table-bordered table-condensed can-edit">
  1610. <thead>
  1611. <tr>
  1612. <th class="hide"></th>
  1613. <th width="20%">项目名称</th>
  1614. <th width="15%">主委托方</th>
  1615. <th width="10%">工程分类</th>
  1616. <th width="15%">规模类型/单位/数量</th>
  1617. <th width="10%">担任职务</th>
  1618. <th width="20%">参与内容</th>
  1619. <th width="10%">操作</th>
  1620. </tr>
  1621. </thead>
  1622. <tbody id="achievementList">
  1623. <c:forEach items="${workStaffBasicInfo.achievementList}" var="achievement" varStatus="varStatus">
  1624. <tr id="achievementList${varStatus.index}">
  1625. <td class="hide">
  1626. <input id="achievementList${varStatus.index}_id" name="achievementList[${varStatus.index}].id" type="hidden" value="${achievement.id}"/>
  1627. <input id="achievementList${varStatus.index}_delFlag" name="achievementList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  1628. </td>
  1629. <td>
  1630. <input id="achievementList${varStatus.index}_projName" name="achievementList[${varStatus.index}].projName" class="form-control" value="${achievement.projName}"/>
  1631. </td>
  1632. <td>
  1633. <input id="achievementList${varStatus.index}_projClient" name="achievementList[${varStatus.index}].projClient" class="form-control" value="${achievement.projClient}"/>
  1634. </td>
  1635. <td>
  1636. <input id="achievementList${varStatus.index}_category" name="achievementList[${varStatus.index}].category" class="form-control" value="${achievement.category}"/>
  1637. </td>
  1638. <td>
  1639. <input id="achievementList${varStatus.index}_unitNumber" name="achievementList[${varStatus.index}].unitNumber" class="form-control" value="${achievement.unitNumber}"/>
  1640. </td>
  1641. <td>
  1642. <select name="achievementList[${varStatus.index}].duty" class="form-control">
  1643. <option value=""></option>
  1644. <option value="成员" <c:if test="${'成员' eq achievement.duty}">selected</c:if>>成员</option>
  1645. <option value="项目负责人" <c:if test="${'项目负责人' eq achievement.duty}">selected</c:if>>项目负责人</option>
  1646. </select>
  1647. </td>
  1648. <td>
  1649. <input id="achievementList${varStatus.index}_content" name="achievementList[${varStatus.index}].content" class="form-control" value="${achievement.content}"/>
  1650. </td>
  1651. <td class="text-center op-td">
  1652. <a href=javascript:void(0); onclick="delRow(this, '#achievementList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  1653. </td>
  1654. </tr>
  1655. </c:forEach>
  1656. </tbody>
  1657. </table>
  1658. <script type="text/template" id="achievementTpl">//<!--
  1659. <tr id="achievementList{{idx}}">
  1660. <td class="hide">
  1661. <input id="achievementList{{idx}}_id" name="achievementList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
  1662. <input id="achievementList{{idx}}_delFlag" name="achievementList[{{idx}}].delFlag" type="hidden" value="0"/>
  1663. </td>
  1664. <td style="text-align:center;">
  1665. <input id="achievementList{{idx}}_projName" name="achievementList[{{idx}}].projName" class="form-control" value="{{row.projName}}"/>
  1666. </td>
  1667. <td style="text-align:center;">
  1668. <input id="achievementList{{idx}}_projClient" name="achievementList[{{idx}}].projClient" class="form-control" value="{{row.projClient}}"/>
  1669. </td>
  1670. <td style="text-align:center;">
  1671. <input id="achievementList{{idx}}_category" name="achievementList[{{idx}}].category" class="form-control" value="{{row.category}}"/>
  1672. </td>
  1673. <td style="text-align:center;">
  1674. <input id="achievementList{{idx}}_unitNumber" name="achievementList[{{idx}}].unitNumber" class="form-control" value="{{row.unitNumber}}"/>
  1675. </td>
  1676. <td style="text-align:center;">
  1677. <select name="achievementList[{{idx}}].duty" class="form-control">
  1678. <option value=""></option>
  1679. <option value="成员">成员</option>
  1680. <option value="项目负责人">项目负责人</option>
  1681. </select>
  1682. </td>
  1683. <td style="text-align:center;">
  1684. <input id="achievementList{{idx}}_content" name="achievementList[{{idx}}].content" class="form-control" value="{{row.content}}"/>
  1685. </td>
  1686. <td class="text-center op-td">
  1687. <a href=javascript:void(0); onclick="delRow(this, '#achievementList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  1688. </td>
  1689. </tr>//-->
  1690. </script>
  1691. <script type="text/javascript">
  1692. var achievementIdx = 0; var achievementTpl = $("#achievementTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  1693. function addRowAchievement(list, idx, tpl, row){
  1694. if(idx==0) {
  1695. achievementIdx = $("#achievementList tr").length;
  1696. idx = achievementIdx;
  1697. }
  1698. bornTemplete(list, idx, tpl, row, idx);
  1699. achievementIdx +=1;
  1700. }
  1701. </script>
  1702. </div>
  1703. </div>
  1704. <div class="form-group layui-row">
  1705. <div class="form-group-label"><h2>电子档案</h2></div>
  1706. <div class="layui-item nav-btns">
  1707. <a href=javascript:void(0); onclick="addRowRecord('#recordList',recordIdx,recordTpl)" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  1708. </div>
  1709. <div class="layui-item layui-col-xs12 form-table-container">
  1710. <table id="recordTable" class="table table-bordered table-condensed can-edit">
  1711. <thead>
  1712. <tr>
  1713. <th class="hide"></th>
  1714. <th width="25%"><span class="require-item">*</span>档案名称</th>
  1715. <th width="25%">编号</th>
  1716. <th width="20%">文件</th>
  1717. <th width="20%">验证</th>
  1718. <th width="10%">操作</th>
  1719. </tr>
  1720. </thead>
  1721. <tbody id="recordList">
  1722. <c:forEach items="${workStaffBasicInfo.recordList}" var="record" varStatus="varStatus">
  1723. <tr id="recordList${varStatus.index}">
  1724. <td class="hide">
  1725. <input type="hidden" id="recordList${varStatus.index}_id" name="recordList[${varStatus.index}].id" value="${record.id}">
  1726. <input id="recordList${varStatus.index}_delFlag" name="recordList[${varStatus.index}].delFlag" type="hidden" value="0"/>
  1727. <input id="recordList${varStatus.index}_fileName" name="recordList[${varStatus.index}].fileName" type="hidden" value="${record.fileName}"/>
  1728. <input id="recordList${varStatus.index}_filePath" name="recordList[${varStatus.index}].filePath" type="hidden" value="${record.filePath}"/>
  1729. </td>
  1730. <td>
  1731. <select id="recordList${varStatus.index}_name" name="recordList[${varStatus.index}].name" class="form-control required">
  1732. <option value="" ></option>
  1733. <c:forEach items="${fns:getMainDictList('record_type')}" var="var">
  1734. <option value="${var.label}" <c:if test="${var.label eq record.name}">selected</c:if>>${var.label}</option>
  1735. </c:forEach>
  1736. </select>
  1737. </td>
  1738. <td>
  1739. <input id="recordList${varStatus.index}_num" name="recordList[${varStatus.index}].num" class="form-control" value="${record.num}"/>
  1740. </td>
  1741. <td class="text-left op-td">
  1742. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('recordList${varStatus.index}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="recordList${varStatus.index}_fileName1"><c:if test="${not empty record.filePath}"><img src="${record.filePath}" width="24" height="24" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${record.filePath}','90%','90%')" alt=""></c:if></span>
  1743. <input id="recordList${varStatus.index}_file" name="recordList[${varStatus.index}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  1744. </td>
  1745. <td>
  1746. <input id="recordList${varStatus.index}_status" name="recordList[${varStatus.index}].status" class="form-control" readonly value="${record.status}"/>
  1747. </td>
  1748. <td class="text-center op-td">
  1749. <a href=javascript:void(0); onclick="delRow(this, '#recordList${varStatus.index}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  1750. </td>
  1751. </tr>
  1752. </c:forEach>
  1753. </tbody>
  1754. </table>
  1755. <script type="text/template" id="recordTpl">//<!--
  1756. <tr id="recordList{{varStatus.index}}">
  1757. <td class="hide">
  1758. <input type="hidden" id="recordList{{idx}}_id" name="recordList[{{idx}}].id" value="{{row.id}}">
  1759. <input id="recordList{{idx}}_delFlag" name="recordList[{{idx}}].delFlag" type="hidden" value="0"/>
  1760. <input id="recordList{{idx}}_fileName" name="recordList[{{idx}}].fileName" type="hidden" value="{{row.fileName}}"/>
  1761. <input id="recordList{{idx}}_filePath" name="recordList[{{idx}}].filePath" type="hidden" value="{{row.filePath}}"/>
  1762. </td>
  1763. <td>
  1764. <select id="recordList{{idx}}_name" name="recordList[{{idx}}].name" class="form-control required">
  1765. <option value="" ></option>
  1766. <c:forEach items="${fns:getMainDictList('record_type')}" var="var">
  1767. <option value="${var.label}">${var.label}</option>
  1768. </c:forEach>
  1769. </select>
  1770. </td>
  1771. <td>
  1772. <input id="recordList{{idx}}_num" name="recordList[{{idx}}].num" class="form-control" value="{{row.num}}"/>
  1773. </td>
  1774. <td class="text-left op-td">
  1775. <a class="op-btn op-btn-add" title="上传" onclick="this_upload_file_button('recordList{{idx}}_file')"><i class="fa fa-plus"></i>&nbsp;上传</a><span id="recordList{{idx}}_fileName1"></span>
  1776. <input id="recordList{{idx}}_file" name="recordList[{{idx}}].file" style="display:none" type="file" onchange="changeFileName(this,1)"/>
  1777. </td>
  1778. <td>
  1779. <input id="recordList{{idx}}_status" name="recordList[{{idx}}].status" class="form-control" readonly value="不验证"/>
  1780. </td>
  1781. <td class="text-center op-td">
  1782. <a href=javascript:void(0); onclick="delRow(this, '#recordList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  1783. </td>
  1784. </tr>//-->
  1785. </script>
  1786. <script type="text/javascript">
  1787. var recordIdx = 0; var recordTpl = $("#recordTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  1788. function addRowRecord(list, idx, tpl, row){
  1789. if(idx==0) {
  1790. recordIdx = $("#recordList tr").length;
  1791. idx = recordIdx;
  1792. }
  1793. bornTemplete(list, idx, tpl, row, idx);
  1794. recordIdx +=1;
  1795. }
  1796. </script>
  1797. </div>
  1798. </div>
  1799. </form:form>
  1800. </div>
  1801. </div>
  1802. <script type="text/javascript">
  1803. function bornTemplete(list, idx, tpl, row, idx1){
  1804. $(list).append(Mustache.render(tpl, {
  1805. idx: idx, delBtn: true, row: row,
  1806. order:idx1 + 1, idx1:idx1
  1807. }));
  1808. $(list+idx).find("select").each(function(){
  1809. $(this).val($(this).attr("data-value"));
  1810. });
  1811. $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
  1812. var ss = $(this).attr("data-value").split(',');
  1813. for (var i=0; i<ss.length; i++){
  1814. if($(this).val() == ss[i]){
  1815. $(this).attr("checked","checked");
  1816. }
  1817. }
  1818. });
  1819. }
  1820. function delRow(obj, prefix){
  1821. var delFlag = $(prefix+"_delFlag");
  1822. delFlag.val("1");
  1823. $(obj).parent().parent().hide();
  1824. }
  1825. </script>
  1826. </body>
  1827. </html>