talentInfo_wj_select_new.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. /**
  2. * 初始化人才认定申报详情对话框
  3. */
  4. var locked = false;
  5. var TalentInfoInfoDlg = {
  6. talentInfoInfoData: {},
  7. };
  8. /**
  9. * 初始化表格的列
  10. */
  11. TalentInfoInfoDlg.initFileTypeColumn = function () {
  12. return [
  13. {field: 'selectItem', checkbox: false, visible: false},
  14. {title: '名称', field: 'name', visible: true, align: 'center', valign: 'middle', width: "70%", 'class': 'uitd_showTip',
  15. formatter: function (value, row, index) {
  16. let str = '<div class="word-wrap">';
  17. let highlights_by_api = ["crz"];
  18. let description = row.description;
  19. if (highlights_by_api.indexOf(row.api) > -1) {
  20. value = '<span style="font-weight:bold;color:red;">' + value + '</span>';
  21. description = '<span style="font-weight:bold;color:red;">' + description + '</span>';
  22. }
  23. if (row.must == 1) {
  24. return '<i class="fa fa-paste"></i><span style="font-weight:bold;color:red;font-size:14px;font-family:宋体"> * </span> ' + value;
  25. }
  26. if (row.must == 2) {
  27. return '<i class="fa fa-paste"></i>' + value;
  28. }
  29. str = str + '<br /><span id="desc_' + row.rel + '">' + description + '</span></div>'
  30. return str;
  31. }
  32. },
  33. {title: '模板', field: 'templateUrl', visible: true, align: 'center', valign: 'middle', width: "10%",
  34. formatter: function (value, row, index) {
  35. if (value == null || value == '' || value == 'null') {
  36. return '无';
  37. }
  38. return "<button type='button' onclick=\"TalentInfoInfoDlg.downloadFile('" + row.id + "',5)\" style='margin-right: 10px' class=\"btn btn-xs btn-primary\">" +
  39. "<i class=\"fa fa-download\"></i>下载" +
  40. "</button>";
  41. }
  42. },
  43. {title: '操作', field: 'id', visible: true, align: 'center', valign: 'middle', width: "20%",
  44. formatter: function (value, row, index) {
  45. return "";
  46. }
  47. }
  48. ]
  49. };
  50. TalentInfoInfoDlg.initFileTable = function () {
  51. var ajax = new $ax("/common/api/findCommonFileType", function (data) {
  52. if (data == null || data.length == 0) {
  53. return;
  54. }
  55. var datas = new Array();
  56. for (var i = 0; i < $(".fileTable").length; i++) {
  57. datas.push([]);//创建空的多维数组,等下用来存每个附件表的各自的列
  58. }
  59. var enterpriseTag = $("#enterprise_tag").val();
  60. for (var k in data["rows"]) {
  61. if (data["rows"][k].enterprise_tag != "" && data["rows"][k].enterprise_tag != null && data["rows"][k].enterprise_tag.indexOf(enterpriseTag) == -1) {
  62. continue;
  63. }
  64. var rel = data["rows"][k].rel;
  65. if ($("#" + rel).length > 0) {
  66. var tableIndex = 0;
  67. if ($("#" + rel).parents(".table").length > 0) {
  68. tableIndex = $("#" + rel).parents(".table").find("table.fileTable").index(".fileTable");
  69. } else {
  70. tableIndex = $("#" + rel).parents(".row").next(".row").find("table.fileTable").index(".fileTable");
  71. }
  72. data["rows"][k].tableIndex = tableIndex;
  73. data["rows"][k].trIndex = datas[tableIndex].length;
  74. datas[tableIndex].push(data["rows"][k]);
  75. if (data["rows"][k].option) {
  76. //指定了选项
  77. if (rel == "birthday") {
  78. let age = 0;
  79. if ($("#" + rel).val()) {
  80. let birthDate = new Date($("#" + rel).val());//生日日期
  81. let birthYear = birthDate.getFullYear();
  82. let birthMonth = birthDate.getMonth() + 1;
  83. let currentDate = new Date();//当前日期
  84. let currentYear = currentDate.getFullYear();
  85. let currentMonth = currentDate.getMonth() + 1;
  86. age = (currentYear * 12 + currentMonth - birthYear * 12 - birthMonth) / 12;
  87. }
  88. if (age < data["rows"][k].option)
  89. data["rows"][k].hidden = true;
  90. } else {
  91. let selectVal = $("#" + rel).data("value").toString();
  92. let options = data["rows"][k].option.split(",");
  93. if (options.indexOf(selectVal) == -1) {
  94. data["rows"][k].hidden = true;
  95. }
  96. }
  97. }
  98. } else {
  99. if (data["rows"][k].isConditionFile) {
  100. var tableIndex = 0;
  101. if ($("#talent_condition_rel").parents(".table").length > 0) {
  102. tableIndex = $("#talent_condition_rel").parents(".table").find("table.fileTable").index(".fileTable");
  103. } else {
  104. tableIndex = $("#talent_condition_rel").parents(".row").next(".row").find("table.fileTable").index(".fileTable");
  105. }
  106. data["rows"][k].tableIndex = tableIndex;
  107. data["rows"][k].trIndex = datas[tableIndex].length;
  108. datas[tableIndex].push(data["rows"][k]);//放入人才条件后面的附件表
  109. } else {
  110. var tableIndex = $(".fileTable").length - 2;
  111. data["rows"][k].tableIndex = tableIndex;
  112. data["rows"][k].trIndex = datas[tableIndex].length;
  113. datas[$(".fileTable").length - 2].push(data["rows"][k]);//没有归属,放入最后一个附件表
  114. }
  115. }
  116. }
  117. for (var i = 0; i < $(".fileTable").length; i++) {
  118. var that = $(".fileTable").eq(i);
  119. that.bootstrapTable({
  120. columns: TalentInfoInfoDlg.initFileTypeColumn(),
  121. data: datas[i],
  122. showHeader: false,
  123. rowStyle: function (row, index) {
  124. return {classes: ""};
  125. },
  126. onPostBody: function (data) {
  127. for (var k in data) {
  128. var files = data[k].files;
  129. var html = '<ul class="imgs"><li style="width: 70%;font-weight: bold;padding-top: 5px;">附件原名</li><li style="width: 10%;font-weight: bold;padding-top: 5px;">预览</li><li style="width: 20%;font-weight: bold;padding-top: 5px;">操作</li>';
  130. for (var key in files) {
  131. var sn = files[key].url.lastIndexOf(".");
  132. var suffix = files[key].ext;//files[key].url.substring(sn + 1, files[key].url.length);
  133. var imgStr = "";
  134. if (suffix == "pdf" || suffix == "PDF") {
  135. imgStr = "<button type='button' onclick=\"Feng.showPdf('" + files[key].url + "','" + files[key].id + "','" + files[key].orignName + "')\" class=\"btn btn-xs btn-danger\"><i class=\"fa fa-file-pdf-o\" aria-hidden=\"true\"></i></button>";
  136. } else if (suffix == "xlsx" || suffix == "XLSX" || suffix == 'xls' || suffix == 'XLS') {
  137. imgStr = "<button type='button' onclick=\"Feng.showExcel('" + files[key].url + "','" + files[key].id + "','" + files[key].orignName + "')\" class=\"btn btn-xs btn-danger\"><i class=\"fa fa-file-excel-o\" aria-hidden=\"true\"></i></button>";
  138. } else {
  139. imgStr = '<img class=\"imgUrl\" onclick="Feng.showImg(this)" src=\"' + files[key].url + '\" style=\"width:25px;height:25px;\">';
  140. }
  141. html += '<li data-id="' + files[key].id + '">\n\
  142. <div><input type="hidden" name="uploadFiles[]" value="' + files[key].id + '"></div>\n' +
  143. '<div style="width: 70%;">' + files[key].orignName + '</div>\n' +
  144. '<div style="width: 10%;">' + imgStr + '</div>\n' +
  145. '<div style="width: 20%;"></div>\n\
  146. </li>';
  147. }
  148. html = html + '</ul>';
  149. that.find("tr[data-index='" + k + "']").attr("data-rel", data[k]["rel"]);
  150. that.find("tr[data-index='" + k + "']").attr("data-option", data[k]["option"]);
  151. that.find("tr[data-index='" + k + "']").after('<tr class="detail-view"><td colspan="5">' + html + '</td></tr>');
  152. if (typeof data[k].hidden != "undefined") {
  153. that.find("tr[data-index='" + k + "']").css("display", "none");
  154. that.find("tr[data-index='" + k + "']").next("tr.detail-view").css("display", "none");
  155. }
  156. }
  157. $("td.uitd_showTip").bind("mouseover", function () {
  158. var htm = $(this).html();
  159. $(this).webuiPopover({title: '详情', content: htm, trigger: 'hover'}).webuiPopover('show');
  160. });
  161. },
  162. });
  163. }
  164. }, function (data) {
  165. Feng.error("查询失败!" + data.responseJSON.message + "!");
  166. });
  167. var queryData = {};
  168. queryData["mainId"] = $("#id").val();
  169. queryData['project'] = CONFIG.project_rcrd;
  170. queryData['type'] = $("#type").val();
  171. queryData["source"] = $("#source").val();
  172. queryData["talent_condition"] = $("#talent_condition").val();
  173. queryData['checkState'] = $("#checkState").val();
  174. ajax.set(queryData);
  175. ajax.start();
  176. }
  177. /**
  178. * 显示初审审核模态框
  179. */
  180. TalentInfoInfoDlg.showFirstCheckModal = function () {
  181. var ajax = new $ax("/enterprise/talent/validateIsCheck", function (data) {
  182. if (data.code == 200) {
  183. layer.open({
  184. type: 1,
  185. id: "neewFieldFormModel",
  186. title: '审核',
  187. area: ['800px', '450px'], //宽高
  188. fix: false, //不固定
  189. shade: 0,
  190. maxmin: true,
  191. content: TalentInfoInfoDlg.creatFieldCheckModal(),
  192. btn: ['<i class="fa fa-save"></i>&nbsp;&nbsp;提交', '<i class="fa fa-eraser"></i>&nbsp;&nbsp;关闭'],
  193. btnAlign: 'c',
  194. zIndex: layer.zIndex,
  195. success: function (layero, index) {
  196. layer.setTop(layero);
  197. var obj = data.obj.talentInfo;
  198. var fileList = data.obj.fileList;
  199. if (typeof data.obj.fieldList != "undefined" && data.obj.fieldList.length > 0) {
  200. var fieldList = data.obj.fieldList;
  201. var html1 = '';
  202. for (var key in fieldList) {
  203. html1 = html1 + '<li style="float:left;margin:0 10px 10px 0;"><input type="checkbox" value="' + fieldList[key]["key"] + '"><span>' + fieldList[key]["value"] + '</span></li>';
  204. }
  205. }
  206. var html2 = '';
  207. for (var key in fileList) {
  208. html2 = html2 + '<ul><li style="width: 100%"><input type="checkbox" value="' + fileList[key].id + '"><span>' + fileList[key].name + '</span></li></ul>';
  209. }
  210. $("#field_info ul").css("overflow", "hidden").empty().append(html1);
  211. $("#field_file").css("overflow", "hidden").empty().append(html2);
  212. $("#firstCheckForm")[0].reset();
  213. $("#checkStateFirstModal").val(data.obj.check.checkState);
  214. $("#checkStateFirstModal").trigger("change");
  215. $("#checkMsgFirst").val(data.obj.check.msg);
  216. if (obj.fields != null && obj.fields != '') {
  217. $("#field_info input").each(function () {
  218. for (var key in obj.fields) {
  219. if ($(this).val() == obj.fields[key]) {
  220. this.checked = true;
  221. }
  222. }
  223. });
  224. }
  225. if (obj.files != null && obj.files != '') {
  226. $("#field_file input").each(function () {
  227. for (var key in obj.files) {
  228. if ($(this).val() == obj.files[key]) {
  229. this.checked = true;
  230. }
  231. }
  232. });
  233. }
  234. },
  235. yes: function (index, layero) {
  236. TalentInfoInfoDlg.firstCheck(index);
  237. }
  238. });
  239. } else {
  240. Feng.error(data.msg);
  241. }
  242. }, function (data) {
  243. Feng.error("校验失败!" + data.responseJSON.message + "!");
  244. });
  245. ajax.setData({"id": $("#id").val()})
  246. ajax.start();
  247. }
  248. /**
  249. * 初审提交
  250. */
  251. TalentInfoInfoDlg.firstCheck = function (i) {
  252. var checkState = $("#checkStateFirstModal").val();
  253. var checkMsg = $("#checkMsgFirst").val();
  254. if (checkState == null || checkState == '') {
  255. Feng.info("请选择审核状态");
  256. return;
  257. }
  258. if (checkMsg == null || checkMsg == '') {
  259. Feng.info("请填写审核意见");
  260. return;
  261. }
  262. var fields = '';
  263. var files = '';
  264. $("#field_info li input").each(function (index) {
  265. if ($(this).is(":checked")) {
  266. fields = fields + $(this).val() + ",";
  267. }
  268. });
  269. $("#field_file li input").each(function (index) {
  270. if ($(this).is(":checked")) {
  271. files = files + $(this).val() + ",";
  272. }
  273. });
  274. if (checkState == 2 && fields == '' && files == '') {
  275. Feng.info("请选择可修改的字段或附件!");
  276. return;
  277. }
  278. if (locked)
  279. return;
  280. locked = true;
  281. var ajax = new $ax("/enterprise/talent/check", function (data) {
  282. if (data.code == 200) {
  283. // $("#firstModal").modal("hide");
  284. layer.close(i);
  285. Feng.success(data.msg);
  286. } else {
  287. Feng.error(data.msg);
  288. }
  289. locked = false;
  290. }, function (data) {
  291. Feng.error("提交审核失败!" + data.responseJSON.message + "!");
  292. locked = false;
  293. });
  294. ajax.setData({"id": $("#id").val(), "checkState": checkState, "checkMsg": checkMsg,
  295. "fields": fields, "files": files})
  296. ajax.start();
  297. }
  298. TalentInfoInfoDlg.submitCheck = function () {
  299. var operation = function () {
  300. var ajax = new $ax(Feng.ctxPath + "/enterprise/talent/submitCheck", function (data) {
  301. if (data.code == 200) {
  302. Feng.success(data.msg);
  303. window.parent.TalentInfo.table.refresh();
  304. TalentInfoInfoDlg.close();
  305. } else {
  306. Feng.error(data.msg);
  307. }
  308. }, function (data) {
  309. Feng.error("提交审核失败!" + data.responseJSON.message + "!");
  310. });
  311. ajax.setData({"id": $("#id").val()});
  312. ajax.start();
  313. }
  314. Feng.confirm("一旦提交无法修改,是否审核完毕且无误?", operation);
  315. }
  316. TalentInfoInfoDlg.creatFieldCheckModal = function () {
  317. return '<form id="firstCheckForm">\n' +
  318. ' <div class="form-group" style="margin: 10px;">\n' +
  319. ' <label for="checkState" class="control-label">审核状态</label>\n' +
  320. ' <select class="form-control" id="checkStateFirstModal" onchange="TalentInfoInfoDlg.toggleField()">\n' +
  321. ' <option value="">请选择</option>\n' +
  322. ' <option value="3">审核通过</option>\n' +
  323. ' <option value="2">审核驳回</option>\n' +
  324. ' </select>\n' +
  325. ' </div>\n' +
  326. ' <div class="form-group" style="margin: 10px;">\n' +
  327. ' <label for="checkMsg" class="control-label" >审核意见</label>\n' +
  328. ' <textarea class="form-control" id="checkMsgFirst" placeholder="审核状态属“审核通过”的,仅代表此步骤已操作完成,不代表用户提交的信息符合认定条件。若不符合认定条件的,请写明不符合原因。" rows="6"></textarea>\n' +
  329. ' <div id="field" style="padding-top: 5px;display: none">\n' +
  330. ' <label for="checkMsg" class="control-label">可修改字段</label>\n' +
  331. ' <div id="field_info">\n' +
  332. ' <ul style="overflow:hidden;list-style:none;">\n' +
  333. ' </ul>\n' +
  334. ' </div>\n' +
  335. ' <label for="checkMsg" class="control-label">可修改附件</label>\n' +
  336. ' <div id="field_file">\n' +
  337. ' </div>\n' +
  338. ' <div class="form-group" style="text-align: center">\n' +
  339. ' <button type="button" class="btn btn-primary" onclick="TalentInfoInfoDlg.checkAll()">全选</button>\n' +
  340. ' <button type="button" class="btn btn-success" onclick="TalentInfoInfoDlg.unCheckAll()">反选</button>\n' +
  341. ' </div>\n' +
  342. ' </div>\n' +
  343. ' </div>\n' +
  344. ' </form>';
  345. }
  346. TalentInfoInfoDlg.addSubmit = function () {
  347. Feng.error("当前状态不能修改");
  348. }
  349. TalentInfoInfoDlg.submitToCheck = function () {
  350. Feng.error("当前状态不能修改");
  351. }
  352. /**
  353. * 显示字段或者隐藏字段选择
  354. */
  355. TalentInfoInfoDlg.toggleField = function () {
  356. var checkState = $("#checkStateFirstModal").val();
  357. var checkMsgFirst = $("#checkMsgFirst").val();
  358. if (checkState == 2) {
  359. $("#field").show();
  360. $("#checkMsgFirst").val("");
  361. } else if (checkState == 3) {
  362. $("#field").hide();
  363. $("#field").find("input[type=checkbox]").removeAttr("checked");
  364. if (checkMsgFirst == null || checkMsgFirst == '') {
  365. $("#checkMsgFirst").val("审核通过");
  366. }
  367. }
  368. }
  369. TalentInfoInfoDlg.downloadFile = function (id, type) {
  370. window.location.href = Feng.ctxPath + "/common/api/downloadFile?id=" + id + "&type=" + type;
  371. }
  372. /**
  373. * 全选
  374. */
  375. TalentInfoInfoDlg.checkAll = function () {
  376. $("#field input").each(function () {
  377. this.checked = true;
  378. })
  379. }
  380. /**
  381. * 反选
  382. */
  383. TalentInfoInfoDlg.unCheckAll = function () {
  384. $("#field input").each(function () {
  385. if (this.checked) {
  386. this.checked = false;
  387. } else {
  388. this.checked = true;
  389. }
  390. })
  391. }
  392. $(function () {
  393. $(":input").prop("disabled", true);
  394. $("#talent_type option").eq(0).prop("selected", true);
  395. var id = $("#id").val();
  396. var checkState = $("#checkState").val();
  397. TalentInfoInfoDlg.initFileTable();
  398. if (id != null && id != '') {
  399. //select初始化
  400. $("select").each(function () {
  401. $(this).val($(this).attr("value")).trigger("change");
  402. });
  403. Feng.getCheckLog("logTable", {"type": CONFIG.project_rcrd, "mainId": id, "typeFileId": "", "active": 1})
  404. }
  405. /*var source = $("#source").val();
  406. var columns = 3;
  407. if (source == 1 || source == 2) {
  408. columns = 3;
  409. } else if (source == 3 || source == 4) {
  410. columns = 4;
  411. }
  412. $("#source").parents("td").attr("colspan", columns);
  413. $("#talent_arrange").parents("td").attr("colspan", columns);
  414. $("#talent_condition").parents("td").attr("colspan", columns - 1);*/
  415. });