edit.html 24 KB

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