details.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. $('.head2').load('head2.html');
  2. $('.foot').load('foot.html');
  3. var openIndex;
  4. var detailType;
  5. layui.use(['table', 'jquery', 'element', 'layer'], function() {
  6. element = layui.element;
  7. layer = layui.layer;
  8. var id = decodeURI(GetQueryString("id"));
  9. //获取hash来切换选项卡,假设当前地址的hash为lay-id对应的值
  10. // vat txt = $('.txt p').eq(1).text();
  11. // if (txt.substring(txt.length - 2) == ":") {
  12. // $('.txt p').eq(1).css('text-indent', '2em');
  13. // }
  14. //监听Tab切换,以改变地址hash值
  15. element.on('tab(docDemoTabBrief)', function(data) {
  16. console.log(data.index)
  17. var date = new Date(dateFormat("YYYY-mm-dd", new Date()));
  18. var dateStart = new Date(opinionSolicitationStart);
  19. var dateEnd = new Date(opinionSolicitationEnd);
  20. console.log("date:"+dateFormat("YYYY-mm-dd", new Date()));
  21. console.log("dateStart:"+dateStart.getTime());
  22. console.log("dateEnd:"+dateFormat("YYYY-mm-dd", dateEnd));
  23. if (detailType != 1 && data.index == 3) {
  24. layer.msg("未到意见征集时间或征集时间已过,不能发表意见");
  25. setTimeout(function() {
  26. // openMsg();
  27. // $('#tc').css('display', 'none');
  28. /*element.tabChange('docDemoTabBrief', "jcca");*/
  29. }, 100);
  30. return false;
  31. } else if (data.index == 3) {
  32. // $('#tc').fadeIn('slow');
  33. openMsg();
  34. return false;
  35. }
  36. var dateend = new Date(opinionFeedbackStart);
  37. if (data.index == 2 && (detailType == 0 || detailType == 1)) {
  38. layer.msg("未到意见反馈时间");
  39. element.tabChange('docDemoTabBrief', "jcca");
  40. return false;
  41. }
  42. });
  43. //获取验证码
  44. getCaptcha()
  45. //清空表单
  46. clearForm()
  47. });
  48. var conName;
  49. //初始值 用于点击更多时传递分页
  50. var page=1;
  51. var limit=5;
  52. function dateFormat(fmt, date) {
  53. let ret;
  54. const opt = {
  55. "Y+": date.getFullYear().toString(), // 年
  56. "m+": (date.getMonth() + 1).toString(), // 月
  57. "d+": date.getDate().toString(), // 日
  58. "H+": date.getHours().toString(), // 时
  59. "M+": date.getMinutes().toString(), // 分
  60. "S+": date.getSeconds().toString() // 秒
  61. // 有其他格式化字符需求可以继续添加,必须转化成字符串
  62. };
  63. for (let k in opt) {
  64. ret = new RegExp("(" + k + ")").exec(fmt);
  65. if (ret) {
  66. fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
  67. };
  68. };
  69. return fmt;
  70. }
  71. $(function() {
  72. if(id === "null" || id === "")
  73. {
  74. window.open('decision.html','_self');
  75. }
  76. selectPostById();
  77. $('#tangchu').click(function(){
  78. //重新调用验证码接口
  79. getCaptcha();
  80. $('#tc').fadeIn('slow');
  81. });
  82. $('.btn1').click(function(){
  83. })
  84. //公众意见与建议
  85. feedback();
  86. //点击公众意见与建议页面下的更多按钮
  87. $("#more").click(function () {
  88. addFeedback()
  89. });
  90. let dHeight = $("#jd").height();
  91. $(".center").css("height",dHeight);
  92. });
  93. var opinionSolicitationStart, opinionSolicitationEnd, opinionFeedbackStart;
  94. function selectPostById() {
  95. $.ajax({
  96. //请求方式
  97. type: "GET",
  98. //请求的媒体类型
  99. url: PATH + "/postManagement/selectPostById",
  100. data: {
  101. postId: id,
  102. type: 'detail'
  103. },
  104. //请求成功
  105. success: function (result) {
  106. if (result.data){
  107. //console.log(result);
  108. var postManagement = result.data.postManagement;
  109. if (postManagement.pdfContent) {
  110. // 加载pdf
  111. initPdf(postManagement.pdfContent);
  112. }
  113. var column = result.data.columns;
  114. $('#postTitle').empty().append(postManagement.postTitle);
  115. $('#draftDecision').empty().append(escape2Html(postManagement.draftInterpretation));
  116. $('#jd').empty().append(escape2Html(postManagement.draftDecision));
  117. if (postManagement.makePolicy) {
  118. $('#pdFile').empty().append(escape2Html(postManagement.makePolicy));
  119. }
  120. if (postManagement.policyInterpretation) {
  121. $('#zcdecode').empty().append(escape2Html(postManagement.policyInterpretation));
  122. }
  123. detailType = postManagement.type;
  124. var str = '';
  125. $.each(column,function (index,elm){
  126. str += '<li><a href="' + elm.url + '" target="_blank">' + elm.name + '</a></li>';
  127. })
  128. $('.column').empty().html(str);
  129. opinionSolicitationStart = postManagement.opinionSolicitationStart;
  130. opinionSolicitationEnd = postManagement.opinionSolicitationEnd;
  131. opinionFeedbackStart = postManagement.opinionFeedbackStart;
  132. }else {
  133. layer.msg(result.msg)
  134. }
  135. },
  136. //请求失败,包含具体的错误信息
  137. error: function(e) {
  138. layer.msg("发表失败!");
  139. }
  140. });
  141. }
  142. function escape2Html(str) {
  143. var arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'};
  144. return str.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return arrEntities[t];});
  145. }
  146. function feedback(){
  147. $.ajax({
  148. type:'get',
  149. url:PATH +'/tFeedback/queryFeedback?id='+id+'&page='+page+'&limit='+limit,
  150. success:function(obj){
  151. len=obj.data.count
  152. $.each(obj.data.tFeedbackList,function (index,elm) {
  153. $("#t_details").append("<tr>" +
  154. "<td>公众建议:</td>" +
  155. "<td>"+elm.opinion+"</td>"+
  156. "</tr>>"+
  157. "<td>政府反馈:</td>" +
  158. "<td>"+elm.text+"</td>"+
  159. "</tr>>")
  160. })
  161. page+=5
  162. if (page<len){
  163. $("#more").show();
  164. }else {
  165. $("#more").hide();
  166. }
  167. }
  168. })
  169. }
  170. function addFeedback() {
  171. console.log()
  172. $.ajax({
  173. type:'get',
  174. url:PATH +'/tFeedback/queryFeedback?id='+id+'&page='+page+'&limit='+limit,
  175. success:function(obj){
  176. $.each(obj.data.tFeedbackList,function (index,elm) {
  177. $("#t_details").append("<tr>" +
  178. "<td>公众建议:</td>" +
  179. "<td>"+elm.opinion+"</td>"+
  180. "</tr>>"+
  181. "<td>政府反馈:</td>" +
  182. "<td>"+elm.text+"</td>"+
  183. "</tr>>")
  184. })
  185. if (page<len){
  186. $("#more").show();
  187. }else {
  188. $("#more").hide();
  189. }
  190. }
  191. })
  192. }
  193. /**
  194. * 解析url
  195. * @param name
  196. * @returns {string|null}
  197. * @constructor
  198. */
  199. function GetQueryString(name)
  200. {
  201. var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
  202. var r = window.location.search.substr(1).match(reg);
  203. if(r!=null)return unescape(r[2]); return null;
  204. }
  205. /**
  206. * 获取验证码
  207. */
  208. function getCaptcha(){
  209. $('#im').attr('src', PATH + "/captcha?time="+new Date().getTime())
  210. }
  211. $('#im').click(function () {
  212. getCaptcha()
  213. })
  214. /**
  215. * 添加意见
  216. */
  217. function insertOpinion(call) {
  218. var pid = decodeURI(GetQueryString("id"));
  219. var nickName = $('#nickName').val();
  220. var tel = $('#tel').val();
  221. var opinionText = $('textarea').val();
  222. var captcha = $('#captcha').val();
  223. if (nickName === "") {
  224. layer.msg("昵称不能为空!");
  225. return;
  226. }
  227. const regex = /^1[3|4|5|6|7|8|9]\d{9}$/;
  228. if (!tel.match(regex)) {
  229. layer.msg("请输入正确的手机号");
  230. return;
  231. }
  232. if (opinionText === "") {
  233. layer.msg("请输入您的观点");
  234. return;
  235. }
  236. if (captcha === "") {
  237. layer.msg("请输入验证码");
  238. return;
  239. }
  240. console.log(111)
  241. $.ajax({
  242. //请求方式
  243. type: "POST",
  244. //请求的媒体类型
  245. url: PATH + "/opinion/insertOpinion",
  246. //数据,json字符串
  247. data: {
  248. nickName: nickName,
  249. tel: tel,
  250. opinionText: opinionText,
  251. captcha: captcha,
  252. postManageId:pid
  253. },
  254. //请求成功
  255. success: function (result) {
  256. console.log("result:"+result)
  257. if (!result.result){
  258. layer.msg(result.msg);
  259. }else {
  260. //清空表单
  261. clearForm();
  262. element.tabChange('docDemoTabBrief', "jcca");
  263. setTimeout(function() {
  264. layer.msg("发表成功!");
  265. }, 200);
  266. }
  267. call();
  268. },
  269. //请求失败,包含具体的错误信息
  270. error: function (e) {
  271. console.log(222)
  272. layer.msg("发表失败!");
  273. }
  274. });
  275. }
  276. /**
  277. * 清空from
  278. */
  279. function clearForm() {
  280. $('#nickName').val("");
  281. $('#tel').val("");
  282. $('textarea').val("");
  283. $('#captcha').val("");
  284. }
  285. function goback(){
  286. // $('#tc').fadeOut('slow');
  287. $('#jcca').click()
  288. }
  289. /**
  290. * 获取状态
  291. */
  292. function getState(){
  293. $.ajax({
  294. //请求方式
  295. type: "GET",
  296. //请求的媒体类型
  297. url: PATH + "/postManagement/queryImportmentPageById",
  298. //数据,json字符串
  299. data: {
  300. id:id
  301. },
  302. //请求成功
  303. success: function (result) {
  304. let data = result.data;
  305. if (chanceDate.isDuringDate(data.decisionPublicStart, data.decisionPublicEnd)) {
  306. conName = "决策公示";
  307. }else if (chanceDate.isDuringDate( data.opinionFeedbackStart, data.opinionFeedbackEnd)) {
  308. conName = "意见反馈"
  309. }else if (chanceDate.isDuringDate( data.opinionSolicitationStart, data.opinionSolicitationEnd)) {
  310. conName = "意见征集"
  311. }else {
  312. conName = "决策完成"
  313. }
  314. console.log(conName)
  315. },
  316. //请求失败,包含具体的错误信息
  317. error: function (e) {
  318. layer.msg("发表失败!");
  319. }
  320. });
  321. }
  322. var chanceDate = {
  323. isDuringDate: function (beginDateStr, endDateStr) {
  324. var curDate = new Date(),
  325. beginDate = new Date(beginDateStr),
  326. endDate = new Date(endDateStr);
  327. if (curDate >= beginDate && curDate <= endDate) {
  328. return true;
  329. }
  330. return false;
  331. }
  332. }
  333. function openMsg() {
  334. var openIndex = layer.open({
  335. type: 1,
  336. title: '我要发表观点',
  337. area: ['600px', '450px'], //宽高
  338. btn: ['提交'],
  339. content: $('#tc'),
  340. success: function() {
  341. $('#tc').css('display', 'block');
  342. },
  343. end: function() {
  344. $('#tc').css('display', 'none');
  345. clearForm();
  346. getCaptcha();
  347. element.tabChange('docDemoTabBrief', "jcca");
  348. },
  349. yes: function(index) {
  350. var nickName = $('#nickName').val();
  351. var tel = $('#tel').val();
  352. var opinionText = $('textarea').val();
  353. var captcha = $('#captcha').val();
  354. if (nickName === "") {
  355. layer.msg("昵称不能为空!");
  356. return;
  357. }
  358. const regex = /^1[3|4|5|6|7|8|9]\d{9}$/;
  359. if (!tel.match(regex)) {
  360. layer.msg("请输入正确的手机号");
  361. return;
  362. }
  363. if (opinionText === "") {
  364. layer.msg("请输入您的观点");
  365. return;
  366. }
  367. if (captcha === "") {
  368. layer.msg("请输入验证码");
  369. return;
  370. }
  371. console.log(index)
  372. let pid = decodeURI(GetQueryString("id"));
  373. $.ajax({
  374. //请求方式
  375. type: "POST",
  376. //请求的媒体类型
  377. url: PATH + "/opinion/insertOpinion",
  378. //数据,json字符串
  379. data: {
  380. nickName: nickName,
  381. tel: tel,
  382. opinionText: opinionText,
  383. captcha: captcha,
  384. postManageId:pid
  385. },
  386. //请求成功
  387. success: function (result) {
  388. console.log("result:"+result)
  389. if (!result.result){
  390. layer.msg(result.msg);
  391. }else {
  392. //清空表单
  393. clearForm();
  394. layer.close(index);
  395. element.tabChange('docDemoTabBrief', "jcca");
  396. setTimeout(function () {
  397. layer.msg("发表成功!");
  398. }, 200);
  399. }
  400. },
  401. //请求失败,包含具体的错误信息
  402. error: function (e) {
  403. console.log(222)
  404. layer.msg("发表失败!");
  405. }
  406. });
  407. /* insertOpinion(function() {
  408. layer.close(index);
  409. });*/
  410. /* layer.close(index);*/
  411. }
  412. });
  413. }
  414. function initPdf(url) {
  415. pdfjsLib.GlobalWorkerOptions.workerSrc =
  416. './pdfjs/build/pdf.worker.js';
  417. var loadingTask = pdfjsLib.getDocument(url);
  418. var pdfDiv = document.getElementById('pdfDiv');
  419. loadingTask.promise.then(function(pdf) {
  420. for (var i = 1; i<= pdf.numPages; i++) {
  421. pdf.getPage(i).then(function(page) {
  422. var scale = 1.5;
  423. var viewport = page.getViewport({ scale: scale, });
  424. // Support HiDPI-screens.
  425. var outputScale = window.devicePixelRatio || 1;
  426. var canvas = document.createElement('canvas');
  427. var context = canvas.getContext('2d');
  428. pdfDiv.appendChild(canvas);
  429. canvas.width = Math.floor(viewport.width * outputScale);
  430. canvas.height = Math.floor(viewport.height * outputScale);
  431. canvas.style.width = Math.floor(viewport.width) + "px";
  432. canvas.style.height = Math.floor(viewport.height) + "px";
  433. var transform = outputScale !== 1
  434. ? [outputScale, 0, 0, outputScale, 0, 0]
  435. : null;
  436. var renderContext = {
  437. canvasContext: context,
  438. transform: transform,
  439. viewport: viewport
  440. };
  441. page.render(renderContext);
  442. });
  443. }
  444. });
  445. }