edit.html 23 KB

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