servicer.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .layui-layout-admin .layui-body .body-content{
  5. background-color: transparent;
  6. padding: 0;
  7. }
  8. .input-text span{margin-right: 15px;}
  9. .form-wrap {margin-top: 0; position: relative;background: none;padding: 0}
  10. .layui-layout-admin .layui-body .body-content{margin: 0 !important;}
  11. .form-wrap .top{background: #f5f5f5;margin-top: 10px}
  12. .layui-form-item.top .layui-form-label{text-align: left;font-weight: bold;padding-left: 15px;}
  13. .layui-form-label{width: 100px ;}
  14. .layui-form-label + .layui-input-block{margin-left: 94px ;}
  15. .layui-form-item.top .border-left{border-left: 3px solid;padding-right: 5px;}
  16. .layui-unselect.layui-form-radio.layui-form-radioed.layui-radio-disbaled i:after{background:#eee !important;}
  17. .shop-information{width: 100%;background: white;padding: 20px;box-sizing: border-box;margin-bottom: 20px;}
  18. .shop-information .layui-input-block{margin-left: 0 !important;}
  19. .shop-information .main-title{display: flex;align-items: center;justify-content: space-between;margin-bottom: 18px;}
  20. .shop-information .title{color:#333333;margin-bottom: 0;width: 50%;height: 16px;line-height: 16px;padding-left: 10px;border-left: 3px solid var(--base-color);box-sizing: border-box;font-size: 17px;}
  21. .shop-information .main-title span{cursor: pointer;}
  22. .word-aux{margin-left: 100px}
  23. .all-box-left{margin-left: 100px;}
  24. .card-common{margin-top: 0;}
  25. .layui-layout-admin.admin-style-2 .body-content{margin: 15px !important;}
  26. .layui-layout-admin.admin-style-2 .form-wrap{padding-top: 0;}
  27. .input-text span{margin-right: 15px;}
  28. .layui-form-item.top .layui-form-label{text-align: left;font-weight: bold;padding-left: 15px;}
  29. .layui-form-item.top .border-left{border-left: 3px solid;padding-right: 5px;}
  30. .layui-unselect.layui-form-radio.layui-form-radioed.layui-radio-disbaled i:after{background:#eee !important;}
  31. .service-box .box .layui-form-label{width: 158px !important;height: 38px;line-height: 38px;}
  32. .service-popup-box .layui-form-label{width: 140px;}
  33. .service-popup-box .layui-form-label + .layui-input-block {margin-left: 140px}
  34. .service-popup-box .word-aux{margin-left: 140px;}
  35. .service-popup-box .all-box-left{margin-left: 140px;}
  36. .service-box .box .top {margin-bottom: 0;}
  37. .service-box{padding-bottom: 40px; width: calc(100% / 3);}
  38. </style>
  39. {/block}
  40. {block name="main"}
  41. <div class="layui-form form-wrap card-common">
  42. <div class="shop-information service-box">
  43. <div class="main-title">
  44. <div class="title">客服设置</div>
  45. <span class="text-color" onclick="editService()">编辑</span>
  46. </div>
  47. <div class="box">
  48. <div class="layui-form-item">
  49. <label class="layui-form-label">H5/微信公众号端:</label>
  50. <div class="layui-input-block">
  51. {switch name="$config.h5.type"}
  52. {case value="none"}未启用{/case}
  53. {case value="niushop"}Niushop客服{/case}
  54. {case value="wxwork"}企业微信客服{/case}
  55. {case value="third"}第三方客服{/case}
  56. {/switch}
  57. </div>
  58. </div>
  59. <div class="layui-form-item">
  60. <label class="layui-form-label">微信小程序端:</label>
  61. <div class="layui-input-block">
  62. {switch name="$config.weapp.type"}
  63. {case value="none"}未启用{/case}
  64. {case value="niushop"}Niushop客服{/case}
  65. {case value="wxwork"}企业微信客服{/case}
  66. {case value="weapp"}小程序客服{/case}
  67. {/switch}
  68. </div>
  69. </div>
  70. {if $pc_is_exit}
  71. <div class="layui-form-item">
  72. <label class="layui-form-label">PC端:</label>
  73. <div class="layui-input-block">
  74. {switch name="$config.pc.type"}
  75. {case value="none"}未启用{/case}
  76. {case value="third"}第三方客服{/case}
  77. {/switch}
  78. </div>
  79. </div>
  80. {/if}
  81. {if $aliapp_is_exit}
  82. <div class="layui-form-item">
  83. <label class="layui-form-label">支付宝小程序:</label>
  84. <div class="layui-input-block">
  85. {switch name="$config.aliapp.type"}
  86. {case value="none"}未启用{/case}
  87. {case value="niushop"}Niushop客服{/case}
  88. {case value="aliapp"}蚂蚁智能客服{/case}
  89. {/switch}
  90. </div>
  91. </div>
  92. {/if}
  93. </div>
  94. </div>
  95. </div>
  96. {/block}
  97. {block name="script"}
  98. <script>
  99. function refreshArea(_formWin) {
  100. var _formWinObj = $("#layui-layer" + _formWin);
  101. var w = _formWinObj.outerWidth();
  102. var h = _formWinObj.outerHeight();
  103. var l = ($(document).width() - w) / 2;
  104. var t = ($(window).height() - h) / 2;
  105. _formWinObj.css({
  106. "left": l,
  107. "top": t
  108. });
  109. }
  110. </script>
  111. <script type="text/html" id="contentService">
  112. <div class="layui-form form-wrap service-popup-box">
  113. <div class="layui-form-item top">
  114. <label class="layui-form-label"><span class="border-left border-color"></span>H5/微信公众号端</label>
  115. </div>
  116. <div class="layui-form-item">
  117. <label class="layui-form-label">客服类型:</label>
  118. <div class="layui-input-block">
  119. <input type="radio" name="h5[type]" lay-filter="serviceType" lay-type="h5" value="none" title="不启用" {if condition="$config.h5.type == 'none'"} checked {/if}>
  120. {if addon_is_exit('servicer')}<input type="radio" name="h5[type]" lay-filter="serviceType" lay-type="h5" value="niushop" title="Niushop客服" {if condition="$config.h5.type == 'niushop'"} checked {/if}>{/if}
  121. <input type="radio" name="h5[type]" lay-filter="serviceType" lay-type="h5" value="wxwork" title="企业微信客服" {if condition="$config.h5.type == 'wxwork'"} checked {/if}>
  122. <input type="radio" name="h5[type]" lay-filter="serviceType" lay-type="h5" value="third" title="第三方客服" {if condition="$config.h5.type == 'third'"} checked {/if}>
  123. </div>
  124. </div>
  125. <div class="h5-wrap wxwork" {if $config.h5.type != 'wxwork'} style="display: none" {/if}>
  126. <div class="layui-form-item">
  127. <label class="layui-form-label"><span class="required">*</span>企微客服链接:</label>
  128. <div class="layui-input-block">
  129. <input type="text" class="layui-input len-mid" name="h5[wxwork_url]" value="{$config.h5.wxwork_url ?? ''}" lay-verify="h5WxworkUrl">
  130. </div>
  131. </div>
  132. <div class="word-aux">H5中如何接入企业微信客服请查看<a href="https://work.weixin.qq.com/nl/act/p/3f8820e724cb44c5" target="_blank" class="text-color">在微信内网页中接入</a></div>
  133. </div>
  134. <div class="h5-wrap third" {if $config.h5.type != 'third'} style="display: none" {/if}>
  135. <div class="layui-form-item">
  136. <label class="layui-form-label"><span class="required">*</span>第三方客服链接:</label>
  137. <div class="layui-input-block">
  138. <input type="text" class="layui-input len-mid" name="h5[third_url]" value="{$config.h5.third_url ?? ''}" lay-verify="h5ThirdUrl">
  139. </div>
  140. </div>
  141. <div class="word-aux">请填写客服链接,聊天时跳转至第三方聊天窗口。例如:<a href="https://meiqia.com/zt/livechat?utm_source=tian&amp;utm_medium=baidu&amp;utm_term=pinzhuan" target="_blank" class="text-color">美洽</a>、<a href="https://shang.qq.com/v3/widget.html" target="_blank" class="text-color">腾讯</a>等。</div>
  142. </div>
  143. <div class="layui-form-item top">
  144. <label class="layui-form-label"><span class="border-left border-color"></span>微信小程序端</label>
  145. </div>
  146. <div class="layui-form-item">
  147. <label class="layui-form-label">客服类型:</label>
  148. <div class="layui-input-block">
  149. <input type="radio" name="weapp[type]" lay-filter="serviceType" lay-type="weapp" value="none" title="不启用" {if condition="$config.weapp.type == 'none'"} checked {/if}>
  150. {if addon_is_exit('servicer')}<input type="radio" name="weapp[type]" lay-filter="serviceType" lay-type="weapp" value="niushop" title="Niushop客服" {if condition="$config.weapp.type == 'niushop'"} checked {/if}>{/if}
  151. <input type="radio" name="weapp[type]" lay-filter="serviceType" lay-type="weapp" value="weapp" title="小程序客服" {if condition="$config.weapp.type == 'weapp'"} checked {/if}>
  152. <input type="radio" name="weapp[type]" lay-filter="serviceType" lay-type="weapp" value="wxwork" title="企业微信客服" {if condition="$config.weapp.type == 'wxwork'"} checked {/if}>
  153. </div>
  154. </div>
  155. <div class="weapp-wrap wxwork" {if $config.weapp.type != 'wxwork'} style="display: none" {/if}>
  156. <div class="layui-form-item">
  157. <label class="layui-form-label"><span class="required">*</span>企业ID:</label>
  158. <div class="layui-input-block">
  159. <input type="text" class="layui-input len-mid" name="weapp[corpid]" value="{$config.weapp.corpid ?? ''}" lay-verify="weappCorpid">
  160. </div>
  161. </div>
  162. <div class="layui-form-item">
  163. <label class="layui-form-label"><span class="required">*</span>企微客服链接:</label>
  164. <div class="layui-input-block">
  165. <input type="text" class="layui-input len-mid" name="weapp[wxwork_url]" value="{$config.weapp.wxwork_url ?? ''}" lay-verify="weappWxworkUrl">
  166. </div>
  167. </div>
  168. <div class="word-aux">小程序中如何接入企业微信客服请查看<a href="https://work.weixin.qq.com/nl/act/p/a733314375294bdd" target="_blank" class="text-color">在小程序中接入</a></div>
  169. </div>
  170. {if $pc_is_exit}
  171. <div class="layui-form-item top">
  172. <label class="layui-form-label"><span class="border-left border-color"></span>PC端</label>
  173. </div>
  174. <div class="layui-form-item">
  175. <label class="layui-form-label">客服类型:</label>
  176. <div class="layui-input-block">
  177. <input type="radio" name="pc[type]" lay-filter="serviceType" lay-type="pc" value="none" title="不启用" {if condition="$config.pc.type == 'none'"} checked {/if}>
  178. <input type="radio" name="pc[type]" lay-filter="serviceType" lay-type="pc" value="third" title="第三方客服" {if condition="$config.pc.type == 'third'"} checked {/if}>
  179. </div>
  180. </div>
  181. <div class="pc-wrap third" {if $config.pc.type != 'third'} style="display: none" {/if}>
  182. <div class="layui-form-item">
  183. <label class="layui-form-label"><span class="required">*</span>第三方客服链接:</label>
  184. <div class="layui-input-block">
  185. <input type="text" class="layui-input len-mid" name="pc[third_url]" value="{$config.pc.third_url ?? ''}" lay-verify="pcThirdUrl">
  186. </div>
  187. </div>
  188. <div class="word-aux">请填写客服链接,聊天时跳转至第三方聊天窗口。例如:<a href="https://meiqia.com/zt/livechat?utm_source=tian&amp;utm_medium=baidu&amp;utm_term=pinzhuan" target="_blank" class="text-color">美洽</a>、<a href="https://shang.qq.com/v3/widget.html" target="_blank" class="text-color">腾讯</a>等。</div>
  189. </div>
  190. {/if}
  191. {if $aliapp_is_exit}
  192. <div class="layui-form-item top">
  193. <label class="layui-form-label"><span class="border-left border-color"></span>支付宝小程序</label>
  194. </div>
  195. <div class="layui-form-item">
  196. <label class="layui-form-label">客服类型:</label>
  197. <div class="layui-input-block">
  198. <input type="radio" name="aliapp[type]" lay-filter="serviceType" lay-type="aliapp" value="none" title="不启用" {if condition="$config.aliapp.type == 'none'"} checked {/if}>
  199. {if addon_is_exit('servicer')}<input type="radio" name="aliapp[type]" lay-filter="serviceType" lay-type="aliapp" value="niushop" title="Niushop客服" {if condition="$config.aliapp.type == 'niushop'"} checked {/if}>{/if}
  200. <input type="radio" name="aliapp[type]" lay-filter="serviceType" lay-type="aliapp" value="aliapp" title="蚂蚁智能客服" {if condition="$config.aliapp.type == 'aliapp'"} checked {/if}>
  201. </div>
  202. </div>
  203. <div class="aliapp-wrap aliapp" {if $config.aliapp.type != 'aliapp'} style="display: none" {/if}>
  204. <div class="layui-form-item">
  205. <label class="layui-form-label"><span class="required">*</span>租户ID:</label>
  206. <div class="layui-input-block">
  207. <input type="text" class="layui-input len-mid" name="aliapp[instid]" value="{$config.aliapp.instid ?? ''}" lay-verify="aliappInstid">
  208. </div>
  209. </div>
  210. <div class="layui-form-item">
  211. <label class="layui-form-label"><span class="required">*</span>聊天窗ID:</label>
  212. <div class="layui-input-block">
  213. <input type="text" class="layui-input len-mid" name="aliapp[scene]" value="{$config.aliapp.scene ?? ''}" lay-verify="aliappScene">
  214. </div>
  215. </div>
  216. <div class="word-aux">小程序中如何接入蚂蚁智能客服请查看<a href="https://opendocs.alipay.com/b/03al9b" target="_blank" class="text-color">在小程序中接入</a></div>
  217. </div>
  218. {/if}
  219. <div class="form-row all-box-left">
  220. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  221. </div>
  222. </div>
  223. </script>
  224. <script>
  225. var _system = {if !empty($config.system) && $config.system == 1} 1 {else/} 0 {/if},form,serviceOpen;
  226. layui.use(['form'], function() {
  227. form = layui.form;
  228. repeat_flag = false; //防重复标识
  229. form.render();
  230. form.verify({
  231. h5WxworkUrl: function(value){
  232. if ($('[name="h5[type]"]:checked').val() == 'wxwork' && !/[\S]+/.test(value)) {
  233. return '请输入客服链接';
  234. }
  235. },
  236. h5ThirdUrl: function(value){
  237. if ($('[name="h5[type]"]:checked').val() == 'third' && !/[\S]+/.test(value)) {
  238. return '请输入客服链接';
  239. }
  240. },
  241. weappCorpid: function(value){
  242. if ($('[name="weapp[type]"]:checked').val() == 'wxwork' && !/[\S]+/.test(value)) {
  243. return '请输入企业ID';
  244. }
  245. },
  246. weappWxworkUrl: function(value){
  247. if ($('[name="weapp[type]"]:checked').val() == 'wxwork' && !/[\S]+/.test(value)) {
  248. return '请输入客服链接';
  249. }
  250. },
  251. pcThirdUrl: function(value){
  252. if ($('[name="pc[type]"]:checked').val() == 'third' && !/[\S]+/.test(value)) {
  253. return '请输入客服链接';
  254. }
  255. },
  256. aliappInstid: function(value){
  257. if ($('[name="aliapp[type]"]:checked').val() == 'aliapp' && !/[\S]+/.test(value)) {
  258. return '租户ID';
  259. }
  260. },
  261. aliappScene: function(value){
  262. if ($('[name="aliapp[type]"]:checked').val() == 'aliapp' && !/[\S]+/.test(value)) {
  263. return '聊天窗ID';
  264. }
  265. }
  266. })
  267. form.on('radio(serviceType)',function(data){
  268. var type = $(data.elem).attr('lay-type'),
  269. value = data.value;
  270. $('.' + type + '-wrap').hide();
  271. $('.' + type + '-wrap.' + value).show();
  272. })
  273. /**
  274. * 监听提交
  275. */
  276. form.on('submit(save)', function(data) {
  277. if (repeat_flag) return false;
  278. repeat_flag = true;
  279. $.ajax({
  280. url: ns.url("shop/config/servicer"),
  281. data: data.field,
  282. dataType: 'JSON',
  283. type: 'POST',
  284. success: function(res) {
  285. if (res.code == 0) {
  286. layer.msg('编辑成功');
  287. location.reload();
  288. }else{
  289. repeat_flag = false;
  290. layer.msg(res.message);
  291. }
  292. }
  293. });
  294. });
  295. });
  296. function showDemo(){
  297. layer.open({
  298. title: '查看示例',
  299. type: 1,
  300. area: ['700px', '660px'],
  301. content: '<img style="margin:15px;" src="SHOP_IMG/chat1.png"><img style="margin:15px;" src="SHOP_IMG/chat2.png">'
  302. })
  303. }
  304. function editService(){
  305. serviceOpen= layer.open({
  306. title:'客服设置',
  307. type:1,
  308. area: 'auto',
  309. fixed:true,
  310. maxWidth:1000,
  311. maxHeight:800,
  312. content:$("#contentService").html(),
  313. success:function(layero,index){
  314. form.render();
  315. }
  316. })
  317. }
  318. </script>
  319. {/block}