medicalSubsidy_info.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502
  1. /**
  2. * 初始化医疗补助详情对话框
  3. */
  4. var MedicalSubsidyInfoDlg = {
  5. medicalSubsidyInfoData : {},
  6. validateFields: {
  7. talentId: {validators: {notEmpty: {message: '申报人不能为空'}}},
  8. address: {validators: {notEmpty: {message: '现居地址不能为空'}}},
  9. phone: {
  10. validators: {
  11. notEmpty: {
  12. message: '联系电话不能为空'
  13. },
  14. regexp: {
  15. regexp: /0?(13|14|15|17|18|19)[0-9]{9}/,
  16. message: "手机号码格式不正确"
  17. }
  18. }
  19. },
  20. }
  21. };
  22. /**
  23. * 清除数据
  24. */
  25. MedicalSubsidyInfoDlg.clearData = function() {
  26. this.medicalSubsidyInfoData = {};
  27. }
  28. /**
  29. * 设置对话框中的数据
  30. *
  31. * @param key 数据的名称
  32. * @param val 数据的具体值
  33. */
  34. MedicalSubsidyInfoDlg.set = function(key, val) {
  35. this.medicalSubsidyInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
  36. return this;
  37. }
  38. /**
  39. * 设置对话框中的数据
  40. *
  41. * @param key 数据的名称
  42. * @param val 数据的具体值
  43. */
  44. MedicalSubsidyInfoDlg.get = function(key) {
  45. return $("#" + key).val();
  46. }
  47. /**
  48. * 关闭此对话框
  49. */
  50. MedicalSubsidyInfoDlg.close = function() {
  51. parent.layer.close(window.parent.MedicalSubsidy.layerIndex);
  52. }
  53. /**
  54. * 收集数据
  55. */
  56. MedicalSubsidyInfoDlg.collectData = function() {
  57. this
  58. .set('id')
  59. .set('year')
  60. .set('talentId')
  61. .set('address')
  62. .set('phone')
  63. .set('checkState');
  64. this.medicalSubsidyInfoData['pensionDetail'] = Feng.getCheckBoxValues("pensionDetail");
  65. this.medicalSubsidyInfoData['unemploymentDetail'] = Feng.getCheckBoxValues("unemploymentDetail");
  66. this.medicalSubsidyInfoData['medicaDetail'] = Feng.getCheckBoxValues("medicaDetail");
  67. this.medicalSubsidyInfoData['taxDetail'] = Feng.getCheckBoxValues("taxDetail");
  68. }
  69. /**
  70. * 根据所选人才对象初始化相应数据
  71. */
  72. MedicalSubsidyInfoDlg.objChange = function(){
  73. var talentId = $("#talentId").val();
  74. if(Feng.isEmptyStr(talentId)){
  75. $("#sex,#cardType,#idcard,#talentArrange,#certificateNo,#nativePlace,#phone,#bankAddress,#bankNumber").val("");
  76. }else{
  77. var ajax = new $ax(Feng.ctxPath + "/api/talentInfo/detail/"+talentId, function(data){
  78. $("#sex").val(data.sex);
  79. $("#cardType").val(data.cardType);
  80. $("#idCard").val(data.idCard);
  81. $("#talentArrange").val(data.talentArrange);
  82. $("#certificateNo").val(data.certificateNO);
  83. $("#nativePlace").val(data.provinceName+data.cityName+data.countyName);
  84. $("#phone").val(data.phone);
  85. $("#bankAddress").val(data.bankNetwork);
  86. $("#bankNumber").val(data.bankAccount);
  87. },function(data){
  88. Feng.error("查询失败!" + data.responseJSON.message + "!");
  89. });
  90. ajax.start();
  91. }
  92. }
  93. /**
  94. * 校验字段
  95. */
  96. MedicalSubsidyInfoDlg.validate = function(){
  97. $('#medicSubsidyForm').data("bootstrapValidator").resetForm();
  98. $('#medicSubsidyForm').bootstrapValidator('validate');
  99. return $("#medicSubsidyForm").data('bootstrapValidator').isValid();
  100. }
  101. /**
  102. * 校验是否可以操作
  103. */
  104. function validateIsEdit () {
  105. var checkState = $("#checkState").val();
  106. if(Feng.isNotEmptyStr(checkState) && checkState != 1 && checkState != 4) {
  107. Feng.error("您的申报正在审核中或已审核完成,无法操作");
  108. return false;
  109. }
  110. return true;
  111. }
  112. /**
  113. * 提交添加
  114. */
  115. MedicalSubsidyInfoDlg.addSubmit = function() {
  116. if(Feng.isNotEmptyStr($("#id").val())){
  117. MedicalSubsidyInfoDlg.editSubmit(1);
  118. return;
  119. }
  120. this.clearData();
  121. this.collectData();
  122. if(!MedicalSubsidyInfoDlg.validate()){
  123. return ;
  124. }
  125. if(!validateIsEdit())return;
  126. //提交信息
  127. var hospitalArr = new Array();
  128. var error = MedicalSubsidyInfoDlg.getHospitalArray(hospitalArr);
  129. if (Feng.isNotEmptyStr(error)){
  130. Feng.info(error);
  131. return ;
  132. }
  133. this.medicalSubsidyInfoData["feesList"] = hospitalArr;
  134. var ajax = new $ax(Feng.ctxPath + "/api/medicalSubsidy/add", function(data){
  135. if(data.code == 200){
  136. Feng.success(data.msg);
  137. window.parent.MedicalSubsidy.table.refresh();
  138. $("#id").val(data.obj.id);
  139. $("#checkState").val(data.obj.checkState);
  140. MedicalSubsidyInfoDlg.initHospital(data.obj.feesList);
  141. MedicalSubsidyInfoDlg.validId();
  142. }else{
  143. Feng.info(data.msg);
  144. }
  145. },function(data){
  146. Feng.error("添加失败!" + data.responseJSON.message + "!");
  147. });
  148. ajax.setcontentType("application/json;charset=utf-8");
  149. ajax.setData(JSON.stringify(this.medicalSubsidyInfoData));
  150. ajax.start();
  151. }
  152. /**
  153. * 提交修改
  154. */
  155. MedicalSubsidyInfoDlg.editSubmit = function(type) {
  156. this.clearData();
  157. this.collectData();
  158. if(!MedicalSubsidyInfoDlg.validate()){
  159. return ;
  160. }
  161. if(!validateIsEdit())return;
  162. //提交信息
  163. var hospitalArr = new Array();
  164. var error = MedicalSubsidyInfoDlg.getHospitalArray(hospitalArr);
  165. if (Feng.isNotEmptyStr(error)){
  166. Feng.info(error);
  167. return ;
  168. }
  169. this.medicalSubsidyInfoData["feesList"] = hospitalArr;
  170. var ajax = new $ax(Feng.ctxPath + "/api/medicalSubsidy/update", function(data){
  171. if(data.code == 200){
  172. if(type == 1){
  173. Feng.success(data.msg);
  174. MedicalSubsidyInfoDlg.initHospital(data.obj.feesList);
  175. window.parent.MedicalSubsidy.table.refresh();
  176. }else{
  177. MedicalSubsidyInfoDlg.submitToCheck();
  178. }
  179. }else{
  180. Feng.info(data.msg);
  181. }
  182. },function(data){
  183. Feng.error("修改失败!" + data.responseJSON.message + "!");
  184. });
  185. ajax.setcontentType("application/json;charset=utf-8");
  186. ajax.setData(JSON.stringify(this.medicalSubsidyInfoData));
  187. ajax.start();
  188. }
  189. MedicalSubsidyInfoDlg.getHospitalArray = function(hospitalArr){
  190. var error = "";
  191. $("#hospitalDiv .panel-body").each(function (index) {
  192. var id = $(this).find("input[name='id']").val();
  193. var mainId = $(this).find("input[name='mainId']").val();
  194. var hospital = $(this).find("input[name='hospital']").val();
  195. var startTime = $(this).find("input[name='startTime']").val();
  196. var endTime = $(this).find("input[name='endTime']").val();
  197. var settlementTime = $(this).find("input[name='settlementTime']").val();
  198. var total = $(this).find("input[name='total']").val();
  199. var plan = $(this).find("input[name='plan']").val();
  200. var insurance = $(this).find("input[name='insurance']").val();
  201. var ownFees = $(this).find("input[name='ownFees']").val();
  202. if(Feng.isNotEmptyStr(id) || Feng.isNotEmptyStr(mainId) || Feng.isNotEmptyStr(hospital) || Feng.isNotEmptyStr(settlementTime)||Feng.isNotEmptyStr(ownFees)){
  203. if(Feng.isEmptyStr(hospital)){
  204. error = error + "第"+ (index + 1) + ")个救治医院为空;\n";
  205. }
  206. if(Feng.isEmptyStr(startTime)){
  207. error = error + "第"+ (index + 1) + "个住院开始时间为空;\n";
  208. }else if(!/^\d{4}-\d{2}-\d{2}$/.test(startTime)){
  209. error = error + "第"+ (index + 1) + "个住院开始时间格式不正确;\n";
  210. }
  211. if(Feng.isEmptyStr(endTime)){
  212. error = error + "第"+ (index + 1) + "个住院截止时间为空;\n";
  213. }else if(!/^\d{4}-\d{2}-\d{2}$/.test(endTime)){
  214. error = error + "第"+ (index + 1) + "个住院截止时间格式不正确;\n";
  215. }
  216. if(Feng.isEmptyStr(settlementTime)){
  217. error = error + "第"+ (index + 1) + "个医保报销结算时间为空;\n";
  218. }else if(!/^\d{4}-\d{2}-\d{2}$/.test(settlementTime)){
  219. error = error + "第"+ (index + 1) + "个医保报销结算时间格式不正确;\n";
  220. }
  221. if(Feng.isEmptyStr(total)){
  222. error = error + "第"+ (index + 1) + "个总费用为空;\n";
  223. }else if(!/^([1-9][0-9]*)+(\.[0-9]{1,10})?$/.test(total)){
  224. error = error + "第"+ (index + 1) + "个总费用格式不正确;\n";
  225. }
  226. if(Feng.isEmptyStr(plan)){
  227. error = error + "第"+ (index + 1) + "个统筹基金为空;\n";
  228. }else if(!/^([1-9][0-9]*)+(\.[0-9]{1,10})?$/.test(plan)){
  229. error = error + "第"+ (index + 1) + "个统筹基金格式不正确;\n";
  230. }
  231. if(Feng.isEmptyStr(insurance)){
  232. error = error + "第"+ (index + 1) + "个商保基金为空;\n";
  233. }else if(!/^([1-9][0-9]*)+(\.[0-9]{1,10})?$/.test(insurance)){
  234. error = error + "第"+ (index + 1) + "个商保基金格式不正确;\n";
  235. }
  236. if(Feng.isEmptyStr(ownFees)){
  237. error = error + "第"+ (index + 1) + "个个人自费为空;\n";
  238. }else if(!/^([1-9][0-9]*)+(\.[0-9]{1,10})?$/.test(ownFees)){
  239. error = error + "第"+ (index + 1) + "个个人自费格式不正确;\n";
  240. }
  241. hospitalArr.push({"id":id,"mainId":Feng.isEmptyStr(mainId)?$("#id").val():mainId,"hospital":hospital,"startTime":startTime,"endTime":endTime,"settlementTime":settlementTime,"total":total,"plan":plan,"insurance":insurance,"ownFees":ownFees});
  242. }
  243. });
  244. return error;
  245. }
  246. MedicalSubsidyInfoDlg.initHospital = function(list){
  247. $("#hospitalDiv").find(".panel-default").remove();
  248. var html = "";
  249. for(var key in list){
  250. html = html + '<div class="panel panel-default ">\n' +
  251. ' <div class="panel-heading">\n' +
  252. ' <span class="caret" onclick="$(this).parent().next().toggle()"></span>\n' +
  253. ' <span class="hospitalName">'+list[key].hospital+'</span>\n' +
  254. ' <button type="button" class="btn btn-xs btn-danger" style="float: right" onclick="MedicalSubsidyInfoDlg.removeHospital(this)"><i class="fa fa-remove"></i>删除</button>\n' +
  255. ' </div>\n' +
  256. ' <div class="panel-body">\n' +
  257. ' <div class="col-sm-12">\n' +
  258. ' <div class="rowGroup col-sm-3">\n' +
  259. ' <input type="hidden" name="id" value="'+list[key].id+'"/>\n' +
  260. ' <input type="hidden" name="mainId" value="'+list[key].mainId+'"/>\n' +
  261. ' <label class="control-label spacing">救治医院</label>\n' +
  262. ' <input type="text" class="form-control" name="hospital" value="'+list[key].hospital+'" onchange="MedicalSubsidyInfoDlg.addTitle(this)" onkeypress="MedicalSubsidyInfoDlg.addTitle(this)"/>\n' +
  263. ' </div>\n' +
  264. ' <div class="rowGroup col-sm-3">\n' +
  265. ' <label class="control-label spacing">住院开始时间</label>\n' +
  266. ' <input type="text" class="form-control date" name="startTime" value="'+list[key].startTime+'"/>\n' +
  267. ' </div>\n' +
  268. ' <div class="rowGroup col-sm-3">\n' +
  269. ' <label class="control-label spacing">住院截止时间</label>\n' +
  270. ' <input type="text" class="form-control date" name="endTime" value="'+list[key].endTime+'"/>\n' +
  271. ' </div>\n' +
  272. ' <div class="rowGroup col-sm-3">\n' +
  273. ' <label class="control-label spacing">医保报销结算时间</label>\n' +
  274. ' <input type="text" class="form-control date" name="settlementTime" value="'+list[key].settlementTime+'"/>\n' +
  275. ' </div>\n' +
  276. ' <div class="rowGroup col-sm-3">\n' +
  277. ' <label class="control-label spacing">总费用</label>\n' +
  278. ' <input type="text" class="form-control" name="total" value="'+list[key].total+'"/>\n' +
  279. ' </div>\n' +
  280. ' <div class="rowGroup col-sm-3">\n' +
  281. ' <label class="control-label spacing">统筹基金</label>\n' +
  282. ' <input type="text" class="form-control" name="plan" value="'+list[key].plan+'"/>\n' +
  283. ' </div>\n' +
  284. ' <div class="rowGroup col-sm-3">\n' +
  285. ' <label class="control-label spacing">商保基本</label>\n' +
  286. ' <input type="text" class="form-control" name="insurance" value="'+list[key].insurance+'"/>\n' +
  287. ' </div>\n' +
  288. ' <div class="rowGroup col-sm-3">\n' +
  289. ' <label class="control-label spacing">个人自费</label>\n' +
  290. ' <input type="text" class="form-control" name="ownFees" value="'+list[key].ownFees+'"/>\n' +
  291. ' </div>\n' +
  292. ' </div>\n' +
  293. ' </div>\n' +
  294. '</div>'
  295. }
  296. $("#hospitalDiv").append(html);
  297. }
  298. /**
  299. * 提交审核
  300. */
  301. MedicalSubsidyInfoDlg.submitToCheck = function () {
  302. var id = $("#id").val();
  303. if(id==null || id==""){
  304. Feng.info("请先填写基础信息并上传附件");
  305. return ;
  306. }
  307. if(!validateIsEdit())return;
  308. var operation = function() {
  309. var ajax = new $ax(Feng.ctxPath + "/api/medicalSubsidy/submitToCheck", function (data) {
  310. if(data.code==200){
  311. Feng.success(data.msg);
  312. // $("#checkState").val(data.obj);
  313. window.parent.MedicalSubsidy.table.refresh();
  314. MedicalSubsidyInfoDlg.close();
  315. }else{
  316. Feng.error(data.msg);
  317. }
  318. }, function (data) {
  319. Feng.error("提交审核失败!" + data.responseJSON.message + "!");
  320. });
  321. ajax.set("id", id);
  322. ajax.start();
  323. }
  324. Feng.confirm("请确认基础信息已核对无误,相应附件已上传,一旦提交,无法修改", operation);
  325. }
  326. /**
  327. * 校验是否显示按钮
  328. * @param type 类型 1-上传按钮,2-修改删除按钮
  329. * @param row
  330. * @returns {string}
  331. */
  332. function validUploadButton(type,row,fileId){
  333. var checkState = $("#checkState").val();
  334. if(Feng.isEmptyStr(checkState)|| checkState ==1 ||checkState== 4){
  335. if(type == 1){ //上传
  336. return "<button type='button' onclick=\"checkFile(this,'"+row.id+"','"+null+"')\" style='margin-right: 10px' class=\"btn btn-xs btn-info\">" +
  337. "<i class=\"fa fa-upload\"></i>上传" +
  338. "</button>" ;
  339. }else{
  340. return "<button type=\'button\' onclick=\"checkFile(this,'"+row.id+"','"+fileId+"')\" style=\'margin-right: 10px\' class=\"btn btn-xs btn-info\">" +
  341. "<i class=\"fa fa-paste\"></i>修改" +
  342. "</button>" +
  343. "<button type='button' onclick=\"deleteFile('"+fileId+"','"+CONFIG.project_medical+"')\" class=\"btn btn-xs btn-danger\">" +
  344. "<i class=\"fa fa-times\"></i>删除" +
  345. "</button>";
  346. }
  347. }else{
  348. return type == 1?"":"";
  349. }
  350. }
  351. //校验是否保存基础信息
  352. MedicalSubsidyInfoDlg.validId = function (){
  353. $("#fileLi").css("pointer-events",Feng.isEmptyStr($("#id").val())?"none":"auto");
  354. }
  355. MedicalSubsidyInfoDlg.checkSbAndTax = function(){
  356. var pensionDetail = $("#pensionDetail").attr("value");
  357. var unemploymentDetail = $("#unemploymentDetail").attr("value");
  358. var medicaDetail = $("#medicaDetail").attr("value");
  359. var taxDetail = $("#taxDetail").attr("value");
  360. $("#pensionDetail input").each(function () {
  361. if(pensionDetail.indexOf($(this).val())!= -1){
  362. $(this).attr("checked", true);
  363. }
  364. })
  365. $("#unemploymentDetail input").each(function () {
  366. if(unemploymentDetail.indexOf($(this).val())!= -1){
  367. $(this).attr("checked", true);
  368. }
  369. })
  370. $("#medicaDetail input").each(function () {
  371. if(medicaDetail.indexOf($(this).val())!= -1){
  372. $(this).attr("checked", true);
  373. }
  374. })
  375. $("#taxDetail input").each(function () {
  376. if(taxDetail.indexOf($(this).val())!= -1){
  377. $(this).attr("checked", true);
  378. }
  379. })
  380. }
  381. /**
  382. * 同步医院标题
  383. * @param context
  384. */
  385. MedicalSubsidyInfoDlg.addTitle = function(context){
  386. $(context).parent().parent().parent().parent().find(".hospitalName").text($(context).val());
  387. }
  388. MedicalSubsidyInfoDlg.addHospital = function(){
  389. $("#hospitalDiv").append(
  390. '<div class="panel panel-default ">\n' +
  391. ' <div class="panel-heading">\n' +
  392. ' <span class="caret" onclick="$(this).parent().next().toggle()"></span>\n' +
  393. ' <span class="hospitalName"></span>\n' +
  394. ' <button type="button" class="btn btn-xs btn-danger" style="float: right" onclick="MedicalSubsidyInfoDlg.removeHospital(this)"><i class="fa fa-remove"></i>删除</button>\n' +
  395. ' </div>\n' +
  396. ' <div class="panel-body">\n' +
  397. ' <div class="col-sm-12">\n' +
  398. ' <div class="rowGroup col-sm-3">\n' +
  399. ' <input type="hidden" name="id"/>\n' +
  400. ' <input type="hidden" name="mainId" />\n' +
  401. ' <label class="control-label spacing">救治医院</label>\n' +
  402. ' <input type="text" class="form-control" name="hospital" onchange="MedicalSubsidyInfoDlg.addTitle(this)" onkeypress="MedicalSubsidyInfoDlg.addTitle(this)"/>\n' +
  403. ' </div>\n' +
  404. ' <div class="rowGroup col-sm-3">\n' +
  405. ' <label class="control-label spacing">住院开始时间</label>\n' +
  406. ' <input type="text" class="form-control date" name="startTime" />\n' +
  407. ' </div>\n' +
  408. ' <div class="rowGroup col-sm-3">\n' +
  409. ' <label class="control-label spacing">住院截止时间</label>\n' +
  410. ' <input type="text" class="form-control date" name="endTime"/>\n' +
  411. ' </div>\n' +
  412. ' <div class="rowGroup col-sm-3">\n' +
  413. ' <label class="control-label spacing">医保报销结算时间</label>\n' +
  414. ' <input type="text" class="form-control date" name="settlementTime"/>\n' +
  415. ' </div>\n' +
  416. ' <div class="rowGroup col-sm-3">\n' +
  417. ' <label class="control-label spacing">总费用</label>\n' +
  418. ' <input type="text" class="form-control" name="total"/>\n' +
  419. ' </div>\n' +
  420. ' <div class="rowGroup col-sm-3">\n' +
  421. ' <label class="control-label spacing">统筹基金</label>\n' +
  422. ' <input type="text" class="form-control" name="plan"/>\n' +
  423. ' </div>\n' +
  424. ' <div class="rowGroup col-sm-3">\n' +
  425. ' <label class="control-label spacing">商保基本</label>\n' +
  426. ' <input type="text" class="form-control" name="insurance"/>\n' +
  427. ' </div>\n' +
  428. ' <div class="rowGroup col-sm-3">\n' +
  429. ' <label class="control-label spacing">个人自费</label>\n' +
  430. ' <input type="text" class="form-control" name="ownFees"/>\n' +
  431. ' </div>\n' +
  432. ' </div>\n' +
  433. ' </div>\n' +
  434. '</div>');
  435. Feng.initDate();
  436. }
  437. /**
  438. * 删除住院信息
  439. * @param context
  440. */
  441. MedicalSubsidyInfoDlg.removeHospital = function(context){
  442. var id = $(context).parent().parent().find("input[name='id']").val();
  443. if(Feng.isEmptyStr(id)){
  444. $(context).parent().parent().remove();
  445. }else{
  446. var operation = function() {
  447. var ajax1 = new $ax(Feng.ctxPath + "/api/medicalSubsidy/removeHospital", function (data) {
  448. if (data.code == 200) {
  449. Feng.success(data.msg);
  450. $(context).parent().parent().remove();
  451. } else {
  452. Feng.info(data.msg);
  453. }
  454. }, function (data) {
  455. Feng.error("删除失败!" + data.responseJSON.message + "!");
  456. });
  457. ajax1.set("id", id);
  458. ajax1.start();
  459. }
  460. Feng.confirm("一旦删除无法恢复,确认删除吗?", operation);
  461. }
  462. }
  463. $(function() {
  464. Feng.initValidatorTip("medicSubsidyForm",MedicalSubsidyInfoDlg.validateFields);
  465. var arr = [{"name":"talentArrange","code":"un_talentLevel"},
  466. {"name":"cardType","code":"un_cardType"}];
  467. Feng.findChildDictBatch(JSON.stringify(arr))
  468. Feng.initDate();
  469. if(Feng.isNotEmptyStr($("#id").val())){
  470. $("select").each(function () {
  471. $(this).val($(this).attr("value")).trigger("change");
  472. });
  473. Feng.getCheckLog("logTable",{"type":CONFIG.project_medical,"mainId":$("#id").val(),"typeFileId":"","active":1})
  474. MedicalSubsidyInfoDlg.checkSbAndTax();
  475. }
  476. MedicalSubsidyInfoDlg.validId();
  477. });