edit.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503
  1. <!DOCTYPE html>
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org" >
  3. <head>
  4. <th:block th:include="include :: header('修改弹框配置')" />
  5. <th:block th:include="include :: datetimepicker-css" />
  6. <th:block th:include="include :: bootstrap-select-css" />
  7. </head>
  8. <body class="white-bg">
  9. <div class="wrapper wrapper-content animated fadeInRight ibox-content">
  10. <form class="form-horizontal m" id="form-configuration-edit" th:object="${alertConfiguration}">
  11. <input name="alertId" th:field="*{alertId}" type="hidden">
  12. <div class="form-group">
  13. <label class="col-sm-3 control-label">弹框类型:</label>
  14. <div class="col-sm-8">
  15. <select style="margin-bottom: 10px;" name="alertType" id="alertType" class="form-control m-b"
  16. th:with="type=${@dict.getType('alert_configuration_type')}">
  17. <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"
  18. th:field="*{alertType}"></option>
  19. </select>
  20. <span style="font-size: 12px;color: #999999;">切换类型后需要重新配置信息</span>
  21. </div>
  22. </div>
  23. <div class="form-group" id="alertImageItem">
  24. <label class="col-sm-3 control-label">弹框图片:</label>
  25. <div class="col-sm-8">
  26. <div id="div-bgUrl"></div>
  27. <div class="action">
  28. <input type="file" class="" name="avatar" id="avatar" accept="image/*" value="上传"/>
  29. </div>
  30. <span style="font-size: 12px;color: #999999">建议图片宽度260px,高度300px</span>
  31. </div>
  32. </div>
  33. <div class="form-group" id="alertContentItem">
  34. <label class="col-sm-3 control-label">弹框内容:</label>
  35. <div class="col-sm-8">
  36. <textarea id="alertContent" name="alertContent" class="form-control">[[*{alertContent}]]</textarea>
  37. </div>
  38. </div>
  39. <div class="form-group">
  40. <label class="col-sm-3 control-label">弹框开始时间:</label>
  41. <div class="col-sm-8">
  42. <input id="alertStartTime" name="alertStartTime" th:value="${#dates.format(alertConfiguration.alertStartTime, 'yyyy-MM-dd HH:mm')}" class="form-control" type="datetime-local">
  43. <!--<div class="input-group date">-->
  44. <!--<span class="input-group-addon"><i class="fa fa-calendar"></i></span>-->
  45. <!--<input id="alertStartTime" name="alertStartTime" th:value="${#dates.format(alertConfiguration.alertStartTime, 'yyyy-MM-dd hh:mm')}" class="form-control" placeholder="yyyy-MM-dd hh:mm" type="text">-->
  46. <!--</div>-->
  47. </div>
  48. </div>
  49. <div class="form-group">
  50. <label class="col-sm-3 control-label">弹框结束时间:</label>
  51. <div class="col-sm-8">
  52. <input id="alertEndTime" name="alertEndTime" th:value="${#dates.format(alertConfiguration.alertEndTime, 'yyyy-MM-dd HH:mm')}" class="form-control" type="datetime-local">
  53. <!--<div class="input-group date">-->
  54. <!--<span class="input-group-addon"><i class="fa fa-calendar"></i></span>-->
  55. <!--<input id="alertEndTime" name="alertEndTime" th:value="${#dates.format(alertConfiguration.alertEndTime, 'yyyy-MM-dd hh:mm')}" class="form-control" placeholder="yyyy-MM-dd hh:mm" type="text">-->
  56. <!--</div>-->
  57. </div>
  58. </div>
  59. <div class="form-group">
  60. <label class="col-sm-3 control-label">弹框每日可弹次数:</label>
  61. <div class="col-sm-8">
  62. <input name="alertNum" th:field="*{alertNum}" class="form-control" type="number">
  63. </div>
  64. </div>
  65. <div class="form-group">
  66. <label class="col-sm-3 control-label">用户类型:</label>
  67. <div class="col-sm-8">
  68. <select title="请选择" id="userType" name="userType" class="form-control m-b selectpicker" th:with="type=${@dict.getType('sys_alert_permission')}">
  69. <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{userType}"></option>
  70. </select>
  71. </div>
  72. </div>
  73. <div class="form-group">
  74. <input name="alertId" th:field="*{alertId}" style="display: none;">
  75. <input name="salesLevel" th:field="*{salesLevel}" style="display: none;">
  76. <input name="orgCode" th:field="*{orgCode}" style="display: none;">
  77. <input name="orgName" th:field="*{orgName}" style="display: none;">
  78. <input name="userTypeStr" th:field="*{userType}" style="display: none;">
  79. <input name="userTypeStr" th:field="*{photoUrl}" style="display: none;">
  80. </div>
  81. <div class="form-group">
  82. <label class="col-sm-3 control-label">部门类型:</label>
  83. <div class="col-sm-3">
  84. <select title="请选择公司" id="deptType1" class="form-control m-b selectpicker">
  85. </select>
  86. </div>
  87. <div class="col-sm-3">
  88. <select title="请选择大区" id="deptType2" class="form-control m-b selectpicker">
  89. </select>
  90. </div>
  91. <div class="col-sm-3">
  92. <select title="请选择销售部" id="deptType3" class="form-control m-b selectpicker">
  93. </select>
  94. </div>
  95. </div>
  96. <div class="form-group">
  97. <label class="col-sm-3 control-label"></label>
  98. <div class="col-sm-3">
  99. <a class="btn btn-primary btn-rounded btn-sm" id="clearSelect">清空部门类型</a>
  100. </div>
  101. </div>
  102. <!-- <div class="form-group">
  103. <label class="col-sm-3 control-label">是否启动:</label>
  104. <div class="col-sm-8">
  105. <div class="radio-box" th:each="dict : ${@dict.getType('sys_ziti_show_hide')}">
  106. <input type="radio" th:id="${dict.dictCode}" name="alertStatus" th:value="${dict.dictValue}"
  107. th:field="*{alertStatus}">
  108. <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
  109. </div>
  110. </div>
  111. </div>-->
  112. </form>
  113. </div>
  114. <th:block th:include="include :: footer" />
  115. <th:block th:include="include :: datetimepicker-js" />
  116. <th:block th:include="include :: bootstrap-select-js" />
  117. <script type="text/javascript">
  118. var prefix = ctx + "system/configuration";
  119. // var getCompanyListPrefix = "http://localhost:10001/wxportal-api/sysuser/searchOrg";
  120. var getCompanyListPrefix = "http://suishenbangtest.nipponpaint.com.cn/wxportal-api/sysuser/searchOrg";
  121. var photoUrl;
  122. var options = {
  123. thumbBox: '.thumbBox',
  124. spinner: '.spinner',
  125. imgSrc: ctx + 'img/profile.jpg'
  126. }
  127. $(document).ready(function () {
  128. var formArray = $('#form-configuration-edit').serializeArray();
  129. var formData = {};
  130. $(formArray ).each(function(index, obj){
  131. formData[obj.name] = obj.value;
  132. });
  133. console.log(1,formData);
  134. if (formData.alertType == '0'){
  135. $("#alertImageItem").hide();
  136. } else {
  137. $("#alertContentItem").hide();
  138. $("#div-bgUrl").html("<img src='" + formData.photoUrl + "' style='width:300px;margin-bottom: 5px;'>");
  139. }
  140. $("#userType").selectpicker('val',formData.userType);
  141. if (formData.salesLevel == 'company_level'){
  142. var objhx1 = {
  143. parType: 'company_level',
  144. parValue: formData.orgCode
  145. }
  146. var confighuixian1 = {
  147. url: getCompanyListPrefix,
  148. type: "post",
  149. dataType: "json",
  150. data: objhx1,
  151. beforeSend: function () {
  152. $.modal.loading("正在处理中,请稍后...");
  153. },
  154. success: function(result) {
  155. $.modal.closeLoading();
  156. var objList = {
  157. parType: 'diy_level',
  158. parValue: ''
  159. }
  160. getCompanyList(objList,result.levelInfo.company_code);
  161. var objList1 = {
  162. parType: 'company_level',
  163. parValue: result.levelInfo.company_code
  164. }
  165. getCompanyList(objList1,"");
  166. }
  167. }
  168. $.ajax(confighuixian1)
  169. }else if (formData.salesLevel == 'office_level') {
  170. var objhx1 = {
  171. parType: 'office_level',
  172. parValue: formData.orgCode
  173. }
  174. var confighuixian1 = {
  175. url: getCompanyListPrefix,
  176. type: "post",
  177. dataType: "json",
  178. data: objhx1,
  179. beforeSend: function () {
  180. $.modal.loading("正在处理中,请稍后...");
  181. },
  182. success: function(result) {
  183. $.modal.closeLoading();
  184. var objList = {
  185. parType: 'diy_level',
  186. parValue: ''
  187. }
  188. getCompanyList(objList,result.levelInfo.company_code);
  189. var objList1 = {
  190. parType: 'company_level',
  191. parValue: result.levelInfo.company_code
  192. }
  193. getCompanyList(objList1,result.levelInfo.office_code);
  194. var objList2 = {
  195. parType: 'office_level',
  196. parValue: result.levelInfo.office_code
  197. }
  198. getCompanyList(objList2,"");
  199. }
  200. }
  201. $.ajax(confighuixian1)
  202. }else if (formData.salesLevel == 'suboffice_level') {
  203. var objhx1 = {
  204. parType: 'suboffice_level',
  205. parValue: formData.orgCode
  206. }
  207. var confighuixian1 = {
  208. url: getCompanyListPrefix,
  209. type: "post",
  210. dataType: "json",
  211. data: objhx1,
  212. beforeSend: function () {
  213. $.modal.loading("正在处理中,请稍后...");
  214. },
  215. success: function(result) {
  216. $.modal.closeLoading();
  217. var objList = {
  218. parType: 'diy_level',
  219. parValue: ''
  220. }
  221. getCompanyList(objList,result.levelInfo.company_code);
  222. var objList1 = {
  223. parType: 'company_level',
  224. parValue: result.levelInfo.company_code
  225. }
  226. getCompanyList(objList1,result.levelInfo.office_code);
  227. var objList2 = {
  228. parType: 'office_level',
  229. parValue: result.levelInfo.office_code
  230. }
  231. getCompanyList(objList2,result.levelInfo.suboffice_code);
  232. }
  233. }
  234. $.ajax(confighuixian1)
  235. }else {
  236. var objList = {
  237. parType: "diy_level",
  238. parValue: ""
  239. }
  240. getCompanyList(objList,"");
  241. }
  242. })
  243. $("#form-configuration-edit").validate({
  244. focusCleanup: true,
  245. rules:{
  246. alertContent:{
  247. required:true
  248. },
  249. alertStartTime:{
  250. required:true
  251. },
  252. alertEndTime:{
  253. required:true
  254. },
  255. alertNum: {
  256. required:true
  257. },
  258. userType: {
  259. required:true
  260. }
  261. }
  262. });
  263. function submitHandler() {
  264. if ($.validate.form()) {
  265. var alertId = $('#alertId').val();
  266. var alertType = $('#alertType').val();
  267. var contentVal = $('#alertContent').val();
  268. var startTime = $('#alertStartTime').val().replace('T',' ');
  269. var endTime = $('#alertEndTime').val().replace('T',' ');
  270. var alertNum = $('#alertNum').val();
  271. var userType = $('#userType').val();
  272. if (new Date(startTime).getTime() - new Date(endTime).getTime() >= 0){
  273. $.modal.alertWarning("弹框结束时间不能小于开始时间");
  274. }else {
  275. var objSubmit = {
  276. alertId:alertId,
  277. alertType:alertType,
  278. photoUrl:photoUrl,
  279. alertContent:contentVal,
  280. alertStartTime:startTime,
  281. alertEndTime:endTime,
  282. alertNum:alertNum,
  283. userType:userType,
  284. alertStatus:'0'
  285. }
  286. if ($('#deptType3').val() != "") {
  287. objSubmit.salesLevel = 'suboffice_level';
  288. objSubmit.orgCode = $('#deptType3').val();
  289. objSubmit.orgName = $('#deptType3').find("option:selected")[0].label
  290. }
  291. if ($('#deptType2').val() != "" && $('#deptType3').val() == "") {
  292. objSubmit.salesLevel = 'office_level';
  293. objSubmit.orgCode = $('#deptType2').val();
  294. objSubmit.orgName = $('#deptType2').find("option:selected")[0].label
  295. }
  296. if ($('#deptType1').val() != "" && $('#deptType2').val() == "" && $('#deptType3').val() == "") {
  297. objSubmit.salesLevel = 'company_level';
  298. objSubmit.orgCode = $('#deptType1').val();
  299. objSubmit.orgName = $('#deptType1').find("option:selected")[0].label
  300. }
  301. if ($('#deptType1').val() == "" && $('#deptType2').val() == "" && $('#deptType3').val() == "") {
  302. objSubmit.salesLevel = 'diy_level';
  303. }
  304. console.log('objSubmit', objSubmit);
  305. var configSubmit = {
  306. url: prefix + "/edit",
  307. type: "post",
  308. dataType: "json",
  309. data: objSubmit,
  310. beforeSend: function () {
  311. $.modal.loading("正在处理中,请稍后...");
  312. },
  313. success:function (result) {
  314. $.modal.closeLoading();
  315. $.operate.successCallback(result);
  316. }
  317. }
  318. $.ajax(configSubmit)
  319. }
  320. }
  321. // $.operate.save(prefix + "/edit", $('#form-configuration-edit').serialize());
  322. }
  323. // $("input[name='alertStartTime']").datetimepicker({
  324. // format: "yyyy-mm-dd hh:ii",
  325. // autoclose: true
  326. // });
  327. //
  328. // $("input[name='alertEndTime']").datetimepicker({
  329. // format: "yyyy-mm-dd hh:ii",
  330. // autoclose: true
  331. // });
  332. $('#avatar').on('change', function () {
  333. var reader = new FileReader();
  334. reader.onload = function (e) {
  335. options.imgSrc = e.target.result;
  336. //根据MIME判断上传的文件是不是图片类型
  337. if ((options.imgSrc).indexOf("image/") == -1) {
  338. $.modal.alertWarning("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
  339. }
  340. }
  341. reader.readAsDataURL(this.files[0]);
  342. upBg(this.files[0]);
  343. })
  344. $("#alertStartTime").on('change',function () {
  345. if ($(this).val() != -1){
  346. var startTimeChange1 = $('#alertStartTime').val().replace('T',' ');
  347. var endTimeChange1 = $('#alertEndTime').val().replace('T',' ');
  348. if (new Date(startTimeChange1).getTime() - new Date(endTimeChange1).getTime() >= 0){
  349. $.modal.alertWarning("弹框结束时间不能小于开始时间");
  350. }
  351. }
  352. })
  353. $("#alertEndTime").on('change',function () {
  354. if ($(this).val() != -1){
  355. var startTimeChange2 = $('#alertStartTime').val().replace('T',' ');
  356. var endTimeChange2 = $('#alertEndTime').val().replace('T',' ');
  357. if (new Date(startTimeChange2).getTime() - new Date(endTimeChange2).getTime() >= 0){
  358. $.modal.alertWarning("弹框结束时间不能小于开始时间");
  359. }
  360. }
  361. })
  362. $("#alertType").on('change',function () {
  363. if ($(this).val() != -1){
  364. if ($(this).val() == 0){
  365. $("#alertContentItem").show();
  366. $("#alertImageItem").hide();
  367. $("#div-bgUrl").html("<div></div>");
  368. photoUrl = "";
  369. }
  370. if ($(this).val() == 1){
  371. $("#alertImageItem").show();
  372. $("#alertContentItem").hide();
  373. $('#alertContent').val('');
  374. }
  375. }
  376. })
  377. $("#deptType1").on('change',function () {
  378. if ($(this).val() != -1){
  379. var obj1 = {
  380. parType: "company_level",
  381. parValue: $(this).val()
  382. }
  383. $("#deptType2").empty().append("");
  384. $("#deptType2").selectpicker('refresh');
  385. $("#deptType3").empty().append("");
  386. $("#deptType3").selectpicker('refresh');
  387. getCompanyList(obj1,"");
  388. }
  389. })
  390. $("#deptType2").on('change',function () {
  391. if ($(this).val() != -1){
  392. var obj2 = {
  393. parType: "office_level",
  394. parValue: $(this).val()
  395. }
  396. $("#deptType3").empty().append("");
  397. $("#deptType3").selectpicker('refresh');
  398. getCompanyList(obj2,"");
  399. }
  400. })
  401. $("#clearSelect").on('click',function () {
  402. var obj3 = {
  403. parType: "diy_level",
  404. parValue: ""
  405. }
  406. $("#deptType1").empty().append("");
  407. $("#deptType1").selectpicker('refresh');
  408. $("#deptType2").empty().append("");
  409. $("#deptType2").selectpicker('refresh');
  410. $("#deptType3").empty().append("");
  411. $("#deptType3").selectpicker('refresh');
  412. getCompanyList(obj3,"");
  413. })
  414. function upBg(imgFile) {
  415. var formdata = new FormData();
  416. formdata.append("file", imgFile);
  417. $.ajax({
  418. url: ctx + "common/upload",
  419. data: formdata,
  420. type: "post",
  421. processData: false,
  422. contentType: false,
  423. success: function (result) {
  424. if (result.code == 0) {
  425. photoUrl = result.data.url;
  426. $("#div-bgUrl").html("<img src='" + result.data.url + "' style='width:300px;margin-bottom: 5px;'>");
  427. } else {
  428. $.modal.alertWarning(result.msg);
  429. }
  430. }
  431. })
  432. }
  433. /* 获取公司列表 */
  434. function getCompanyList(obj,chooseId) {
  435. var config = {
  436. url: getCompanyListPrefix,
  437. type: "post",
  438. dataType: "json",
  439. data: obj,
  440. beforeSend: function () {
  441. $.modal.loading("正在处理中,请稍后...");
  442. },
  443. success: function(result) {
  444. $.modal.closeLoading();
  445. var companyList = result.dataList;
  446. if (companyList && companyList.length != 0){
  447. var options = '';
  448. if (obj.parType == 'diy_level'){
  449. companyList.forEach(item=>{
  450. if(item.company_code == chooseId){
  451. options += "<option value='" + item.company_code + "' selected='selected'>" + item.company_name + "</option>"
  452. }else{
  453. options += "<option value='" + item.company_code + "'>" + item.company_name + "</option>"
  454. }
  455. })
  456. $("#deptType1").append(options);
  457. $("#deptType1").selectpicker('refresh');
  458. $("#deptType1").selectpicker('render');
  459. } else if (obj.parType == 'company_level') {
  460. companyList.forEach(item=>{
  461. if(item.office_code == chooseId){
  462. options += "<option value='" + item.office_code + "' selected='selected'>" + item.office_name + "</option>"
  463. }else{
  464. options += "<option value='" + item.office_code + "'>" + item.office_name + "</option>"
  465. }
  466. })
  467. $("#deptType2").append(options);
  468. $("#deptType2").selectpicker('refresh');
  469. $("#deptType2").selectpicker('render');
  470. }else {
  471. companyList.forEach(item=>{
  472. if(item.suboffice_code == chooseId){
  473. options += "<option value='" + item.suboffice_code + "' selected='selected'>" + item.suboffice_name + "</option>"
  474. }else{
  475. options += "<option value='" + item.suboffice_code + "'>" + item.suboffice_name + "</option>"
  476. }
  477. })
  478. $("#deptType3").append(options);
  479. $("#deptType3").selectpicker('refresh');
  480. $("#deptType3").selectpicker('render');
  481. }
  482. }
  483. }
  484. };
  485. $.ajax(config)
  486. }
  487. </script>
  488. </body>
  489. </html>