basics.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>编辑管理员</title>
  7. <link rel="shortcut icon" href="favicon.ico">
  8. <link href="__CSS__/bootstrap.min.css?v=3.3.6" rel="stylesheet">
  9. <link href="__CSS__/font-awesome.min.css?v=4.4.0" rel="stylesheet">
  10. <link href="__CSS__/animate.min.css" rel="stylesheet">
  11. <link href="__JS__/layui/css/layui.css" rel="stylesheet">
  12. <link href="__CSS__/style.min.css?v=4.1.0" rel="stylesheet">
  13. </head>
  14. <body class="gray-bg">
  15. <div class="layui-layer-shade" id="all_blank_img" style="display: none;"></div>
  16. <div class="layui-layer layui-layer-dialog" id="check_image" style="display: none;">
  17. <div class="layui-layer-title" style="cursor: move;">请选择图片</div>
  18. <div id="images" class="layui-layer-content layui-layer-padding" style="height: 70vh;">
  19. {volist name="material" id="vo"}
  20. <div style="width: 21.5%;height:100px;float: left;text-align: center;background-color: #DCDCDC;margin: 1%;position: relative;">
  21. <div style="height:23px;line-height: 23px;width:80%;margin: 0 auto;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;font-size: 11px;">{$vo.name}</div>
  22. <img onclick="onCheckImage(`{$vo.url}`)" src="{$vo.url}" style="margin-top: 0px;height: 70px;">
  23. </div>
  24. {/volist}
  25. </div>
  26. <span class="layui-layer-setwin"></span>
  27. <div class="layui-layer-btn layui-layer-btn-">
  28. <a class="layui-layer-btn0" onclick="closeCheckImage()">取消</a>
  29. </div>
  30. <span class="layui-layer-resize"></span>
  31. </div>
  32. <div class="layui-layer-shade" id="all_blank" style="display: none"></div>
  33. <div class="layui-layer layui-layer-dialog" id="check_img" style="display: none">
  34. <div class="layui-layer-title" style="cursor: move;">请选择图片</div>
  35. <div id="imgs" padding="0" class="layui-layer-content layui-layer-padding" style="height: 70vh;">
  36. {volist name="material" id="vo"}
  37. <div style="width: 21.5%;height:100px;float: left;text-align: center;background-color: #DCDCDC;margin: 1%;position: relative;">
  38. <div style="height:23px;line-height: 23px;width:80%;margin: 0 auto;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;font-size: 11px;">{$vo.name}</div>
  39. <img onclick="onCheckImg(`{$vo.url}`)" src="{$vo.url}" style="margin-top: 0px;height: 70px;">
  40. </div>
  41. {/volist}
  42. </div>
  43. <span class="layui-layer-setwin"></span>
  44. <div class="layui-layer-btn layui-layer-btn-">
  45. <a class="layui-layer-btn0" onclick="closeCheckImg()">取消</a>
  46. </div>
  47. <span class="layui-layer-resize"></span>
  48. </div>
  49. <div class="wrapper wrapper-content animated fadeInRight">
  50. <div class="row">
  51. <div class="col-sm-8">
  52. <div class="ibox float-e-margins">
  53. <div class="ibox-title">
  54. <h5>基础设置</h5>
  55. </div>
  56. <div class="ibox-content">
  57. <form class="form-horizontal m-t layui-form" id="commentForm" method="post" action="{:url('system/basics')}">
  58. <h4 style="margin-bottom: 10px;">欢迎语设置</h4>
  59. <div class="ibox-title">
  60. </div>
  61. <div class="form-group">
  62. <label class="col-sm-3 control-label">客服欢迎语:</label>
  63. <div class="input-group col-sm-4">
  64. <input type="text" class="form-control" name="serverWord" required="" aria-required="true" value="{$replyServer['word']}">
  65. </div>
  66. </div>
  67. <h4 style="margin-bottom: 10px; margin-top: 40px">广告设置</h4>
  68. <div class="ibox-title">
  69. </div>
  70. <div class="form-group">
  71. <label class="col-sm-3 control-label">广告网址:</label>
  72. <div class="input-group col-sm-4">
  73. <input type="text" class="form-control" name="advertisementUrl" required="" aria-required="true" value="{$advertisement['advertisement_url']}">
  74. </div>
  75. </div>
  76. <div class="form-group layui-form-item form-inline" style="height: 60px;">
  77. <input type="hidden" name="advertisement_img" id="advertisement_img"/>
  78. <label class="col-sm-3 control-label">广告图片:</label>
  79. <div class="input-group col-sm-1">
  80. <button type="button" class="layui-btn layui-btn-small" id="up-avatar">
  81. <i class="layui-icon"></i>上传图片</button>
  82. </div>
  83. <span>建议上传420px*700px</span>
  84. <button type="button" class="layui-btn layui-btn-small" onclick="checkImage()">选择图片</button>
  85. <div class="input-group col-sm-3" id="avatar">
  86. <img src="{$advertisement['advertisement_img']}" id="ChoiceImg" height="40px"/>
  87. </div>
  88. </div>
  89. <div class="form-group layui-form-item" style="display: none;">
  90. <label class="col-sm-3 control-label">是否启用:</label>
  91. <div class="input-group col-sm-6">
  92. {if !empty($status)}
  93. {foreach name="status" item="vo" key="key"}
  94. <input type="radio" name="status" value="{$key}" title="{$vo}" {if $key eq $advertisement['advertisement_status']}checked{/if}>
  95. {/foreach}
  96. {/if}
  97. </div>
  98. </div>
  99. <h4 style="margin-bottom: 10px; margin-top: 40px">企业logo设置</h4>
  100. <div class="ibox-title">
  101. </div>
  102. <div class="form-group">
  103. <label class="col-sm-3 control-label">企业名称:</label>
  104. <div class="input-group col-sm-4">
  105. <input type="text" class="form-control" name="enterprise_name" required="" aria-required="true" value="{$settings['enterprise_name']}" placeholder="不超过8个字符">
  106. </div>
  107. </div>
  108. <div class="form-group layui-form-item form-inline" style="height: 60px;">
  109. <input type="hidden" name="logo_img" id="logo_img"/>
  110. <label class="col-sm-3 control-label">企业logo:</label>
  111. <div class="input-group col-sm-1">
  112. <button type="button" class="layui-btn layui-btn-small" id="up-logo">
  113. <i class="layui-icon"></i>上传logo</button>
  114. </div>
  115. <span>建议上传48px*48px</span>
  116. <button type="button" class="layui-btn layui-btn-small" id="" onclick="checkImg()">选择图片</button>
  117. <div class="input-group col-sm-3" id="logo">
  118. <img src="{$settings['logo']}" id="onChoiceImg" height="40px"/>
  119. </div>
  120. </div>
  121. <div class="form-group" style="margin-top: 40px;">
  122. <label class="col-sm-3 control-label"></label>
  123. <div class="input-group col-sm-4">
  124. <button class="btn btn-primary btn-sm" type="submit">提交</button>
  125. </div>
  126. </div>
  127. </form>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. </div>
  133. <script src="__JS__/jquery.min.js?v=2.1.4"></script>
  134. <script src="__JS__/bootstrap.min.js?v=3.3.6"></script>
  135. <script src="__JS__/content.min.js?v=1.0.0"></script>
  136. <script src="__JS__/plugins/validate/jquery.validate.min.js"></script>
  137. <script src="__JS__/plugins/validate/messages_zh.min.js"></script>
  138. <script src="__JS__/plugins/layer/layer.min.js"></script>
  139. <script src="__JS__/layui/layui.js"></script>
  140. <script src="__JS__/jquery.form.js"></script>
  141. <script src="/static/customer/js/md5.js"></script>
  142. <script>
  143. function checkImage() {
  144. $("#all_blank_img").css({"z-index": "19991015", "background-color": "rgb(0, 0, 0)", "opacity": "0.3", "display": "block"});
  145. $("#check_image").css({"z-index": "19991016", "top": "40px", "left": "170px", "width": "70vw", "display": "block"});
  146. }
  147. function closeCheckImage() {
  148. $("#all_blank_img").css({"display": "none"});
  149. $("#check_image").css({"display": "none"});
  150. }
  151. function onCheckImage(path) {
  152. $("#all_blank_img").css({"display": "none"});
  153. $("#check_image").css({"display": "none"});
  154. $("#ChoiceImg").attr('src',path);
  155. $("#advertisement_img").val(path);
  156. }
  157. function checkImg() {
  158. $("#all_blank").css({"z-index": "19991015", "background-color": "rgb(0, 0, 0)", "opacity": "0.3", "display": "block"});
  159. $("#check_img").css({"z-index": "19991016", "top": "40px", "left": "170px", "width": "70vw", "display": "block"});
  160. }
  161. function closeCheckImg() {
  162. $("#all_blank").css({"display": "none"});
  163. $("#check_img").css({"display": "none"});
  164. }
  165. function onCheckImg(path) {
  166. $("#all_blank").css({"display": "none"});
  167. $("#check_img").css({"display": "none"});
  168. $("#onChoiceImg").attr('src',path);
  169. $("#logo_img").val(path);
  170. }
  171. </script>
  172. <script type="text/javascript">
  173. let config = {
  174. socket: '{$socket}',
  175. };
  176. let date = new Date(new Date().setHours(0, 0, 0, 0)) / 1000;
  177. let getLocation = window.location.href;
  178. let host = getLocation.split('/admin')[0];
  179. //let apiToken = hex_md5('customer-service'+date+host);
  180. let apiToken = hex_md5('customer-service'+host);
  181. layui.use(['form', 'upload'], function(){
  182. var form = layui.form;
  183. var upload = layui.upload;
  184. //执行实例
  185. var uploadInst = upload.render({
  186. elem: '#up-avatar' //绑定元素
  187. ,url: "{:url('users/upAvatar')}" //上传接口
  188. ,exts: 'png|jpg|jpeg|gif'
  189. ,done: function(res){
  190. //上传完毕回调
  191. if(0 == res.code){
  192. $("#avatar").html('<img src="' + res.data.src + '" id="ChoiceImg" height="40px">');
  193. $("#advertisement_img").val(res.data.src);
  194. }else{
  195. layer.msg(res.msg);
  196. }
  197. }
  198. ,error: function(){
  199. //请求异常回调
  200. }
  201. });
  202. var uploadInst = upload.render({
  203. elem: '#up-logo' //绑定元素
  204. ,url: "{:url('users/upAvatar')}" //上传接口
  205. ,exts: 'png|jpg|jpeg|gif'
  206. ,done: function(res){
  207. //上传完毕回调
  208. if(0 == res.code){
  209. $("#logo").html('<img src="' + res.data.src + '" id="onChoiceImg" height="40px">');
  210. $("#logo_img").val(res.data.src);
  211. }else{
  212. layer.msg(res.msg);
  213. }
  214. }
  215. ,error: function(){
  216. //请求异常回调
  217. }
  218. });
  219. form.on('select(group)', function(value){
  220. $("#group_id").val(value.value);
  221. });
  222. });
  223. var index = '';
  224. function showStart(){
  225. index = layer.load(0, {shade: false});
  226. return true;
  227. }
  228. function showSuccess(res){
  229. let socket = new WebSocket('ws://' + config.socket+'?apiToken=' + apiToken);
  230. socket.onopen = function(res) {
  231. console.log('握手成功');
  232. socket.send(JSON.stringify({
  233. type: 'updatecache',
  234. data: {dtype: ''},
  235. }));
  236. };
  237. layer.ready(function(){
  238. layer.close(index);
  239. if(1 == res.code){
  240. layer.alert(res.msg, {title: '友情提示', icon: 1, closeBtn: 0}, function(){
  241. window.location.href = res.data;
  242. });
  243. }else if(111 == res.code){
  244. window.location.reload();
  245. }else{
  246. layer.msg(res.msg, {anim: 6});
  247. }
  248. });
  249. }
  250. $(document).ready(function(){
  251. // 添加管理员
  252. var options = {
  253. beforeSubmit:showStart,
  254. success:showSuccess
  255. };
  256. $('#commentForm').submit(function(){
  257. $(this).ajaxSubmit(options);
  258. return false;
  259. });
  260. });
  261. // 表单验证
  262. $.validator.setDefaults({
  263. highlight: function(e) {
  264. $(e).closest(".form-group").removeClass("has-success").addClass("has-error")
  265. },
  266. success: function(e) {
  267. e.closest(".form-group").removeClass("has-error").addClass("has-success")
  268. },
  269. errorElement: "span",
  270. errorPlacement: function(e, r) {
  271. e.appendTo(r.is(":radio") || r.is(":checkbox") ? r.parent().parent().parent() : r.parent())
  272. },
  273. errorClass: "help-block m-b-none",
  274. validClass: "help-block m-b-none"
  275. });
  276. </script>
  277. </body>
  278. </html>