talentInfo_wj_select_new.js 20 KB

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