edit.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. <!DOCTYPE HTML>
  2. <html xmlns:th="http://www.thymeleaf.org"
  3. xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  4. layout:decorate="~{admin/common/common}">
  5. <head>
  6. <title>添加通知公告</title>
  7. <style>
  8. .ke-container-default {
  9. width: 100% !important
  10. }
  11. .ke-swfupload-body {
  12. height: 265px
  13. }
  14. .ke-dialog-body {
  15. height: 340px !important;
  16. }
  17. .ke-dialog-default {
  18. height: 410px !important;
  19. }
  20. .error {
  21. color: red;
  22. }
  23. </style>
  24. </head>
  25. <body layout:fragment="content">
  26. <article class="page-container">
  27. <form class="form form-horizontal" id="form-add">
  28. <div class="row cl">
  29. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>项目大类:</label>
  30. <div class="formControls col-xs-8 col-sm-9">
  31. <span class="select-box">
  32. <select class="select" th:name="project_super_type" id="project_super_type" required
  33. onchange="changeSuperType()">
  34. <option value="">-- 请选择项目大类 --</option>
  35. <option th:each="item : ${projectSuperTypeList}" th:value="${item.value}"
  36. th:text="${item.name}" th:selected=${project?.project_super_type}==${item.value}>
  37. </option>
  38. </select>
  39. </span>
  40. </div>
  41. </div>
  42. <div class="row cl">
  43. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>项目来源:</label>
  44. <div class="formControls col-xs-8 col-sm-9">
  45. <span class="select-box">
  46. <select class="select" th:name="project_source" id="project_source" required>
  47. <option value="">-- 请选择项目来源 --</option>
  48. <option th:each="item : ${projectSourceList}" th:value="${item.value}"
  49. th:text="${item.name}" th:selected=${project?.project_source}==${item.value}>
  50. </option>
  51. </select>
  52. </span>
  53. </div>
  54. </div>
  55. <div class="row cl">
  56. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>是否在线申报项目:</label>
  57. <div class="formControls col-xs-8 col-sm-9">
  58. <label style="margin-right: 10px;">
  59. <input name="is_online_application" type="radio" value="1"
  60. th:checked="${project.is_online_application == '1'}"> 在线申报</label>
  61. <label><input name="is_online_application" type="radio" value="0"
  62. th:checked="${project.is_online_application == '0'}"> 项目通知</label>
  63. </div>
  64. </div>
  65. <div class="row cl">
  66. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>发布单位:</label>
  67. <div class="formControls col-xs-8 col-sm-9">
  68. <span class="select-box">
  69. <select class="select" th:name="release_departments" id="release_departments" multiple="multiple">
  70. <option th:each="item : ${departmentList}" th:value="${item.id}"
  71. th:text="${item.name}">
  72. </option>
  73. </select>
  74. </span>
  75. </div>
  76. </div>
  77. <div class="row cl">
  78. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>责任单位:</label>
  79. <div class="formControls col-xs-8 col-sm-9">
  80. <span class="select-box">
  81. <select class="select" th:name="department_id" id="department_id" required>
  82. <option value="">-- 请选择责任单位 --</option>
  83. <option th:each="item : ${departmentList}" th:value="${item.id}"
  84. th:text="${item.name}" th:selected=${project?.department_id}==${item.id}>
  85. </option>
  86. </select>
  87. </span>
  88. </div>
  89. </div>
  90. <div class="row cl">
  91. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>项目名称:</label>
  92. <div class="formControls col-xs-8 col-sm-9">
  93. <input type="text" class="input-text" placeholder="在此输入项目名称" id="project_name" name="project_name"
  94. th:value="${project.project_name}"/>
  95. </div>
  96. </div>
  97. <!--<div class="row cl">
  98. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>专项扶持资金项目:</label>
  99. <div class="formControls col-xs-8 col-sm-9">
  100. <label style="margin-right: 10px;"><input name="is_special_fund" type="radio" value="1"
  101. th:checked="${project.is_special_fund == '1'}"> 是</label>
  102. <label><input name="is_special_fund" type="radio" value="0"
  103. th:checked="${project.is_special_fund == '0'}"> 否</label>
  104. </div>
  105. </div>-->
  106. <div class="row cl">
  107. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>项目内容:</label>
  108. <div class="formControls col-xs-8 col-sm-9">
  109. <textarea id="project_content" name="project_content">[[${project?.project_content}]]</textarea>
  110. </div>
  111. </div>
  112. <div class="row cl">
  113. <label class="form-label col-xs-4 col-sm-2"><span>上传附件:</span></label>
  114. <div class="formControls col-xs-8 col-sm-9">
  115. <div class="uploader-thum-container">
  116. <div id="fileListPre" class="uploader-list">
  117. <th:block th:unless="${project.fileDown.file_url} == null">
  118. <!-- <a th:href="${project.fileDown.download_uri} + ${project.fileDown.file_url}" target="_blank">[[${project.fileDown.file_name}]]</a>
  119. -->
  120. <a th:href=" ${fileUrl} + ${project.fileDown.file_url}" target="_blank">[[${project.fileDown.file_name}]]</a>
  121. </th:block>
  122. </div>
  123. <div id="filePicker">重新上传</div>
  124. <input type="hidden" name="file_url" id="img" th:value="${project.fileDown.file_url}"/>
  125. </div>
  126. </div>
  127. </div>
  128. <div class="row cl">
  129. <label class="form-label col-xs-4 col-sm-2"><span>摘要:</span></label>
  130. <div class="formControls col-xs-8 col-sm-9">
  131. <textarea id="summary" class="input-text" name="summary">[[${project?.summary}]]</textarea>
  132. </div>
  133. </div>
  134. <!--<div class="row cl">
  135. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>申报开始日期:</label>
  136. <div class="formControls col-xs-8 col-sm-9">
  137. <input type="text" class="input-text" id="apply_startDate" name="apply_startdate" readonly
  138. th:value="${project.apply_startdate}"/>
  139. </div>
  140. </div>
  141. <div class="row cl">
  142. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>申报截止日期:</label>
  143. <div class="formControls col-xs-8 col-sm-9">
  144. <input type="text" class="input-text" id="apply_endDate" name="apply_enddate" readonly
  145. th:value="${project.apply_enddate}">
  146. </div>
  147. </div>-->
  148. <!--<div class="row cl">
  149. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>申报日期:</label>
  150. <div style="position: relative; margin-left: 15px; float: left;">
  151. <input th:if="${project.apply_startdate!=null && project.apply_startdate!=''}" type="text"
  152. class="input-text" id="apply_date_range" name="apply_date_range" readonly
  153. th:value="${project.apply_startdate+' 至 '+project.apply_enddate}"/>
  154. <input th:if="${project.apply_startdate==null || project.apply_startdate==''}" type="text"
  155. class="input-text" id="apply_date_range" name="apply_date_range" readonly
  156. th:value="''"/>
  157. </div>
  158. </div>-->
  159. <div class="row cl">
  160. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>开始日期:</label>
  161. <div class="formControls col-xs-8 col-sm-9">
  162. <input type="text" class="input-text" th:id="apply_startdate" th:name="apply_startdate"
  163. th:value="${project.apply_startdate}" style="float:left; width: 150px;"/>
  164. <input class="Wdate input-text" type="text" th:id="apply_startdateIE" th:name="apply_startdate"
  165. style="float:left; width: 150px;" th:value="${project.apply_startdate}"
  166. onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',maxDate:'#F{$dp.$D(\'apply_enddateIE\')}',isShowClear:true,readOnly:true})"/>
  167. </div>
  168. </div>
  169. <div class="row cl">
  170. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>结束日期:</label>
  171. <div class="formControls col-xs-8 col-sm-9">
  172. <input type="text" class="input-text pull-left" th:id="apply_enddate" th:name="apply_enddate"
  173. th:value="${project.apply_enddate}" style="float:left; width: 150px;"/>
  174. <input class="Wdate input-text" type="text" th:id="apply_enddateIE" th:name="apply_enddate"
  175. style="float:left; width: 150px;" th:value="${project.apply_enddate}"
  176. onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'apply_startdateIE\')}',isShowClear:true,readOnly:true})"/>
  177. </div>
  178. </div>
  179. <div hidden class="row cl">
  180. <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>是否公开:</label>
  181. <div class="formControls col-xs-8 col-sm-9">
  182. <input type="radio" id="isOpen1" name="is_open" th:value="1" th:checked="${project.is_open == '1'}">是
  183. <input type="radio" id="isOpen2" name="is_open" th:value="0" th:checked="${project.is_open == '0'}">否
  184. </div>
  185. </div>
  186. <!--<div class="row cl">
  187. <label class="form-label col-xs-4 col-sm-2"><span>消息通知:</span></label>
  188. <div class="formControls col-xs-8 col-sm-9">
  189. <input type="checkbox" id="appNotice" name="app_notice" checked th:value="1"
  190. th:checked="${project.app_notice == '1'}"/>APP通知
  191. <input type="checkbox" id="mesNotice" name="mes_notice" checked th:value="1"
  192. th:checked="${project.mes_notice == '1'}"/>短信通知
  193. </div>
  194. </div>
  195. <div class="row cl">
  196. <label class="form-label col-xs-4 col-sm-2"><span>推送对象:</span></label>
  197. <div class="formControls col-xs-8 col-sm-9">
  198. <a class="btn btn-primary radius"
  199. th:onclick="'javascript:notify_addPush(\'项目申报推送\',\'/projectDeclaration/addPush\',\'800\',\'500\');'"><i
  200. class="Hui-iconfont">&#xe6df;</i>添加</a>
  201. <input id="pushStreetIds" name="push_street_ids" type="hidden" th:value="${project.push_street_ids}"/>
  202. <input id="pushBuildIds" name="push_build_ids" type="hidden" th:value="${project.push_build_ids}"/>
  203. <input id="pushCompanyIds" name="push_company_ids" type="hidden"
  204. th:value="${project.push_company_ids}"/>
  205. <input id="pushStreetNames" name="push_street_names" type="hidden"
  206. th:value="${project.push_street_names}"/>
  207. <input id="pushBuildNames" name="push_build_names" type="hidden"
  208. th:value="${project.push_build_names}"/>
  209. <input id="pushCompanyNames" name="push_company_names" type="hidden"
  210. th:value="${project.push_company_names}"/>
  211. <input type="hidden" id="isPush">
  212. </div>
  213. <label class="form-label col-xs-4 col-sm-2"><span>已添加单位:</span></label>
  214. <div class="formControls col-xs-8 col-sm-9">
  215. <span id="pushNames" th:text="${project.push_company_names}">
  216. </span>
  217. </div>
  218. </div>-->
  219. <input id="id" name="id" type="hidden" th:value="${project.id}"/>
  220. <div class="row cl">
  221. <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-2">
  222. <a onclick="release()" class="btn btn-primary radius"><i class="Hui-iconfont">&#xe632;</i>发布</a>
  223. <a th:if="${project.status=='0'}" onclick="save()" class="btn btn-secondary radius"><i class="Hui-iconfont">&#xe632;</i>保存草稿</a>
  224. <a th:onclick="'javascript:preview(\'项目申报预览\',\'/projectDeclaration/preview\',\'800\',\'600\');'"
  225. class="btn btn-secondary radius"><i class="Hui-iconfont">&#xe632;</i>预览</a>
  226. <a onClick="removeIframe();" class="btn btn-default radius" type="button">&nbsp;&nbsp;取消&nbsp;&nbsp;</a>
  227. </div>
  228. </div>
  229. </form>
  230. </article>
  231. <script type="text/javascript" th:src="@{/h-ui/lib/webuploader/0.1.5/webuploader.min.js}"></script>
  232. <script th:inline="javascript">
  233. //富文本kindeditor初始化
  234. var editor;
  235. KindEditor.ready(function (K) {
  236. editor = K.create('#project_content', {
  237. uploadJson: pagePath + '/upload/kindEditorUpload',
  238. allowFileManager: false,
  239. allowUpload: true,
  240. width: "100%",
  241. height: "350px",
  242. items: array,
  243. syncType: "auto",
  244. filterMode: false,
  245. afterBlur: function () {
  246. this.sync();
  247. }
  248. });
  249. });
  250. $(function () {
  251. var options = {
  252. uploadBtnId: '#filePicker',
  253. picturePreId: 'fileListPre',
  254. hiddenPictureUrl: 'img',
  255. hiddenPictureName: 'imgName',
  256. width: 81,
  257. height: 81,
  258. fileSizeLimit: 100 * 1024 * 1024,
  259. fileSingleSizeLimit: 100 * 1024 * 1024
  260. };
  261. var webUploadPicture = new $WebUploadDoc(options);
  262. webUploadPicture.init();
  263. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  264. var isOpera = userAgent.indexOf("Opera") > -1;
  265. //判断是否IE浏览器
  266. if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
  267. $("#apply_startdate").remove();
  268. $("#apply_enddate").remove();
  269. } else {
  270. $("#apply_startdateIE").remove();
  271. $("#apply_enddateIE").remove();
  272. var startDate = laydate.render({
  273. elem: '#apply_startdate',
  274. type: 'datetime',
  275. done: function (value, date) {
  276. setTimeout(function () {
  277. $("#form-add").validate().element($("#apply_startdate"));
  278. }, 100)
  279. if (value !== '') {
  280. endDate.config.min.year = date.year;
  281. endDate.config.min.month = date.month - 1;
  282. endDate.config.min.date = date.date;
  283. endDate.config.min.hours = date.hours;
  284. endDate.config.min.minutes = date.minutes;
  285. endDate.config.min.seconds = date.seconds;
  286. } else {
  287. endDate.config.min.year = '1900';
  288. endDate.config.min.month = '0';
  289. endDate.config.min.date = '1';
  290. endDate.config.min.hours = '0';
  291. endDate.config.min.minutes = '0';
  292. endDate.config.min.seconds = '0';
  293. }
  294. }
  295. });
  296. var endDate = laydate.render({
  297. elem: '#apply_enddate',
  298. type: 'datetime',
  299. done: function (value, date) {
  300. setTimeout(function () {
  301. $("#form-add").validate().element($("#apply_enddate"));
  302. }, 100)
  303. if (value !== '') {
  304. startDate.config.max.year = date.year;
  305. startDate.config.max.month = date.month - 1;
  306. startDate.config.max.date = date.date;
  307. startDate.config.max.hours = date.hours;
  308. startDate.config.max.minutes = date.minutes;
  309. startDate.config.max.seconds = date.seconds;
  310. } else {
  311. startDate.config.max.year = '2100';
  312. startDate.config.max.month = '0';
  313. startDate.config.max.date = '1';
  314. startDate.config.max.hours = '0';
  315. startDate.config.max.minutes = '0';
  316. startDate.config.max.seconds = '0';
  317. }
  318. }
  319. });
  320. var start = [[${project.apply_startdate}]];
  321. var end = [[${project.apply_enddate}]];
  322. if (start) {
  323. endDate.config.min.year = parseInt(start.split("-")[0]);
  324. endDate.config.min.month = parseInt(start.split("-")[1]) - 1;
  325. endDate.config.min.date = parseInt(start.split("-")[2]);
  326. }
  327. if (end) {
  328. startDate.config.max.year = parseInt(end.split("-")[0]);
  329. startDate.config.max.month = parseInt(end.split("-")[1]) - 1;
  330. startDate.config.max.date = parseInt(end.split("-")[2]);
  331. }
  332. }
  333. });
  334. /**
  335. * 取消
  336. */
  337. function removeIframe() {
  338. var index = parent.layer.getFrameIndex(window.name);
  339. parent.layer.close(index);
  340. }
  341. /* laydate.render({
  342. elem: '#apply_date_range', //指定元素
  343. min: 0,
  344. range: "至"
  345. });*/
  346. var state = "0";
  347. $("#form-add").validate({
  348. rules: {
  349. project_name: {
  350. required: true,
  351. maxlength: 50
  352. },
  353. project_content: {
  354. required: true,
  355. //maxlength: 2000
  356. },
  357. summary: {
  358. maxlength: 100
  359. },
  360. apply_startdate: {
  361. required: true,
  362. },
  363. apply_enddate: {
  364. required: true,
  365. },
  366. apply_date_range: {
  367. required: true,
  368. },
  369. is_open: {
  370. required: true,
  371. }
  372. },
  373. onkeyup: false,
  374. focusCleanup: true,
  375. focusInvalid: false,
  376. success: "valid",
  377. submitHandler: function (form) {
  378. if ($("#release_departments").find("option:selected").length == 0) {
  379. errorMessage("至少选择一个发布单位");
  380. return false;
  381. }
  382. if (editor.isEmpty()) {
  383. errorMessage('请输入项目内容');
  384. return false;
  385. } else if (editor.text().length > 2000) {
  386. //errorMessage('项目内容最多2000字');
  387. //return false;
  388. }
  389. if (state == '1') {
  390. if ($('input[name="is_open"]:checked').val() == 0) {
  391. if ($("#pushNames").val().length <= 0) {
  392. errorMessage('请选择推送对象');
  393. return false;
  394. }
  395. }
  396. }
  397. $(form).ajaxSubmit({
  398. type: 'post',
  399. url: pagePath + "/projectDeclaration/update",
  400. dataType: "json",
  401. data: {
  402. /*isPush: $("#isPush").val()*/
  403. state: state
  404. },
  405. success: function (result) {
  406. if (result.success) {
  407. succeedMessage(result.message);
  408. setTimeClose();
  409. } else {
  410. // $(form).find(":submit").attr("disabled", false);
  411. errorMessage(result.message);
  412. }
  413. },
  414. error: function () {
  415. errorMessage('系统错误!');
  416. }
  417. });
  418. return false; // 非常重要,如果是false,则表明是不跳转,在本页上处理,也就是ajax,如果是非false,则传统的form跳转。
  419. }
  420. });
  421. function release() {
  422. state = "1";
  423. $("#form-add").submit();
  424. }
  425. function save() {
  426. state = "0";
  427. $("#form-add").ajaxSubmit({
  428. type: 'post',
  429. url: pagePath + "/projectDeclaration/update",
  430. dataType: "json",
  431. data: {
  432. state: state
  433. },
  434. success: function (data) {
  435. if (data.success) {
  436. succeedMessage(data.message);
  437. setTimeClose();
  438. } else {
  439. // $(form).find(":submit").attr("disabled", false);
  440. errorMessage(data.message);
  441. }
  442. },
  443. error: function () {
  444. errorMessage('系统错误!');
  445. }
  446. });
  447. }
  448. function preview() {
  449. /*$("#form-add").ajaxSubmit({
  450. type: 'post',
  451. url: pagePath + "/projectDeclaration/preview",
  452. dataType: "json",
  453. data: {
  454. state: state
  455. },
  456. success: function (data) {
  457. if (data.success) {
  458. succeedMessage(data.message);
  459. setTimeClose();
  460. } else {
  461. // $(form).find(":submit").attr("disabled", false);
  462. errorMessage(data.message);
  463. }
  464. },
  465. error: function () {
  466. errorMessage('系统错误!');
  467. }
  468. });*/
  469. }
  470. $(function () {
  471. $("#allBuilds").click(function () {
  472. if (this.checked) {
  473. $("#pushBuildsList :checkbox").prop("checked", true);
  474. } else {
  475. $("#pushBuildsList :checkbox").prop("checked", false);
  476. }
  477. });
  478. });
  479. function sendNotify() {
  480. $("#isPush").val(true);
  481. if ($("#pushStreetIds").val() == "" && $("#pushBuildIds").val() == "" && $("#pushCompanyIds").val() == "") {
  482. sadMessage("请选择推送单位!");
  483. return false;
  484. }
  485. }
  486. function clearPush() {
  487. $("#isPush").val(false);
  488. }
  489. function getPushBuildsIds() {
  490. var chlength = $('#pushBuildsList').find('input[type="checkbox"]:checked').length;
  491. var build_ids = '';
  492. $('#pushBuildsList').find('input[type="checkbox"]:checked').each(function (i, item) {
  493. build_ids = build_ids + $(this).attr("value") + ",";
  494. });
  495. build_ids = build_ids.substring(0, build_ids.length - 1);
  496. return build_ids;
  497. }
  498. /*
  499. 参数解释:
  500. title 标题
  501. url 请求的url
  502. id 需要操作的数据id
  503. w 弹出层宽度(缺省调默认值)
  504. h 弹出层高度(缺省调默认值)
  505. */
  506. /*管理员-*/
  507. function notify_addPush(title, url, w, h) {
  508. layer_show(title, pagePath + url, w, h);
  509. }
  510. function preview(title, url, w, h) {
  511. layer_show(title, pagePath + url, w, h);
  512. }
  513. $(window).load(function () {
  514. $("#release_departments").select2({
  515. multiple: true,
  516. width: '100%',
  517. language: {
  518. noResults: function (params) {
  519. return "暂无数据";
  520. }
  521. }
  522. });
  523. });
  524. $(document).ready(function () {
  525. initMultipleSelect();
  526. });
  527. function initMultipleSelect() {
  528. $("#release_departments").val([[${project.release_departmentsIds}]]).trigger("change");
  529. }
  530. </script>
  531. </body>
  532. </html>