workStaffBasicDetailModify.jsp 139 KB

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