basics.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  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. <h4 style="margin-bottom: 10px;">网址设定</h4>
  122. <div class="ibox-title">
  123. </div>
  124. <div class="form-group">
  125. <label class="col-sm-3 control-label">访问者网址:</label>
  126. <div class="input-group col-sm-4">
  127. <input type="text" class="form-control joinurl" name="visitor_url" value="{$settings['visitor_url']}">
  128. </div>
  129. </div>
  130. <div class="form-group">
  131. <label class="col-sm-3 control-label">客服网址:</label>
  132. <div class="input-group col-sm-4">
  133. <input type="text" class="form-control" name="customer_url" value="{$settings['customer_url']}">
  134. </div>
  135. </div>
  136. <div class="form-group">
  137. <label class="col-sm-3 control-label">后台网址:</label>
  138. <div class="input-group col-sm-4">
  139. <input type="text" class="form-control" name="backend_url" value="{$settings['backend_url']}">
  140. </div>
  141. </div>
  142. <h4 style="margin-bottom: 10px;">接入设置</h4>
  143. <div class="ibox-title">
  144. </div>
  145. <div class="form-group">
  146. <label class="col-sm-3 control-label">网址接入:</label>
  147. <div class="input-group col-sm-4">
  148. <input type="text" class="form-control joinurl" name="joinurl" value="{$settings['visitor_url']}/?pid=%u8FD9%u5C31%u662F%u4E00%u4E2A%u7F16%u7801%u6CA1%u6709%u4EC0%u4E48%u7528%u554A">
  149. </div>
  150. </div>
  151. <div class="form-group">
  152. <label class="col-sm-3 control-label">网址接入参数:</label>
  153. <div class="input-group col-sm-4">
  154. <input type="text" class="form-control" name="joinparams" value="&appId={平台}&appUid={用户名称}">
  155. </div>
  156. </div>
  157. <div class="form-group">
  158. <label class="col-sm-3 control-label">JS接入:</label>
  159. <div class="input-group col-sm-4">
  160. <a href="/admin/settings/entrancelist.html" style="line-height: 32px;" >跳转JS管理</a>
  161. </div>
  162. </div>
  163. <div class="form-group" style="margin-top: 40px;">
  164. <label class="col-sm-3 control-label"></label>
  165. <div class="input-group col-sm-4">
  166. <button class="btn btn-primary btn-sm" type="submit">提交</button>
  167. </div>
  168. </div>
  169. </form>
  170. </div>
  171. </div>
  172. </div>
  173. </div>
  174. </div>
  175. <script src="__JS__/jquery.min.js?v=2.1.4"></script>
  176. <script src="__JS__/bootstrap.min.js?v=3.3.6"></script>
  177. <script src="__JS__/content.min.js?v=1.0.0"></script>
  178. <script src="__JS__/plugins/validate/jquery.validate.min.js"></script>
  179. <script src="__JS__/plugins/validate/messages_zh.min.js"></script>
  180. <script src="__JS__/plugins/layer/layer.min.js"></script>
  181. <script src="__JS__/layui/layui.js"></script>
  182. <script src="__JS__/jquery.form.js"></script>
  183. <script src="/static/customer/js/md5.js"></script>
  184. <script>
  185. function checkImage() {
  186. $("#all_blank_img").css({"z-index": "19991015", "background-color": "rgb(0, 0, 0)", "opacity": "0.3", "display": "block"});
  187. $("#check_image").css({"z-index": "19991016", "top": "40px", "left": "170px", "width": "70vw", "display": "block"});
  188. }
  189. function closeCheckImage() {
  190. $("#all_blank_img").css({"display": "none"});
  191. $("#check_image").css({"display": "none"});
  192. }
  193. function onCheckImage(path) {
  194. $("#all_blank_img").css({"display": "none"});
  195. $("#check_image").css({"display": "none"});
  196. $("#ChoiceImg").attr('src',path);
  197. $("#advertisement_img").val(path);
  198. }
  199. function checkImg() {
  200. $("#all_blank").css({"z-index": "19991015", "background-color": "rgb(0, 0, 0)", "opacity": "0.3", "display": "block"});
  201. $("#check_img").css({"z-index": "19991016", "top": "40px", "left": "170px", "width": "70vw", "display": "block"});
  202. }
  203. function closeCheckImg() {
  204. $("#all_blank").css({"display": "none"});
  205. $("#check_img").css({"display": "none"});
  206. }
  207. function onCheckImg(path) {
  208. $("#all_blank").css({"display": "none"});
  209. $("#check_img").css({"display": "none"});
  210. $("#onChoiceImg").attr('src',path);
  211. $("#logo_img").val(path);
  212. }
  213. </script>
  214. <script type="text/javascript">
  215. let config = {
  216. socket: '{$socket}',
  217. };
  218. let date = new Date(new Date().setHours(0, 0, 0, 0)) / 1000;
  219. let getLocation = window.location.href;
  220. let host = getLocation.split('/admin')[0];
  221. //let apiToken = hex_md5('customer-service'+date+host);
  222. let apiToken = hex_md5('customer-service'+host);
  223. layui.use(['form', 'upload'], function(){
  224. var form = layui.form;
  225. var upload = layui.upload;
  226. //执行实例
  227. var uploadInst = upload.render({
  228. elem: '#up-avatar' //绑定元素
  229. ,url: "{:url('users/upAvatar')}" //上传接口
  230. ,exts: 'png|jpg|jpeg|gif'
  231. ,done: function(res){
  232. //上传完毕回调
  233. if(0 == res.code){
  234. $("#avatar").html('<img src="' + res.data.src + '" id="ChoiceImg" height="40px">');
  235. $("#advertisement_img").val(res.data.src);
  236. }else{
  237. layer.msg(res.msg);
  238. }
  239. }
  240. ,error: function(){
  241. //请求异常回调
  242. }
  243. });
  244. var uploadInst = upload.render({
  245. elem: '#up-logo' //绑定元素
  246. ,url: "{:url('users/upAvatar')}" //上传接口
  247. ,exts: 'png|jpg|jpeg|gif'
  248. ,done: function(res){
  249. //上传完毕回调
  250. if(0 == res.code){
  251. $("#logo").html('<img src="' + res.data.src + '" id="onChoiceImg" height="40px">');
  252. $("#logo_img").val(res.data.src);
  253. }else{
  254. layer.msg(res.msg);
  255. }
  256. }
  257. ,error: function(){
  258. //请求异常回调
  259. }
  260. });
  261. form.on('select(group)', function(value){
  262. $("#group_id").val(value.value);
  263. });
  264. });
  265. var index = '';
  266. function showStart(){
  267. index = layer.load(0, {shade: false});
  268. return true;
  269. }
  270. function showSuccess(res){
  271. let socket = new WebSocket('ws://' + config.socket+'?apiToken=' + apiToken);
  272. socket.onopen = function(res) {
  273. console.log('握手成功');
  274. socket.send(JSON.stringify({
  275. type: 'updatecache',
  276. data: {dtype: ''},
  277. }));
  278. };
  279. layer.ready(function(){
  280. layer.close(index);
  281. if(1 == res.code){
  282. layer.alert(res.msg, {title: '友情提示', icon: 1, closeBtn: 0}, function(){
  283. window.location.href = res.data;
  284. });
  285. }else if(111 == res.code){
  286. window.location.reload();
  287. }else{
  288. layer.msg(res.msg, {anim: 6});
  289. }
  290. });
  291. }
  292. $(document).ready(function(){
  293. // 添加管理员
  294. var options = {
  295. beforeSubmit:showStart,
  296. success:showSuccess
  297. };
  298. $('#commentForm').submit(function(){
  299. $(this).ajaxSubmit(options);
  300. return false;
  301. });
  302. });
  303. // 表单验证
  304. $.validator.setDefaults({
  305. highlight: function(e) {
  306. $(e).closest(".form-group").removeClass("has-success").addClass("has-error")
  307. },
  308. success: function(e) {
  309. e.closest(".form-group").removeClass("has-error").addClass("has-success")
  310. },
  311. errorElement: "span",
  312. errorPlacement: function(e, r) {
  313. e.appendTo(r.is(":radio") || r.is(":checkbox") ? r.parent().parent().parent() : r.parent())
  314. },
  315. errorClass: "help-block m-b-none",
  316. validClass: "help-block m-b-none"
  317. });
  318. </script>
  319. </body>
  320. </html>