index.html 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=0, maximum-scale=0, user-scalable=yes,shrink-to-fit=no">
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <title>{:get_config('web_site_title')}</title>
  9. <link rel="icon" href="./favicon.png">
  10. <meta name="keywords" content="" />
  11. <meta name="description" content="" />
  12. <link rel="shortcut icon" href="/favicon.ico">
  13. <link rel="stylesheet" href="/static/hplus/css/bootstrap.min.css">
  14. <link rel="stylesheet" href="/static/hplus/css/font-awesome.min.css?v=4.4.0" />
  15. <link rel="stylesheet" href="/static/hplus/css/animate.css"/>
  16. <link rel="stylesheet" href="/static/hplus/css/style.css?v=4.1.0">
  17. <link rel="stylesheet" href="/static/hplus/css/jquery.contextMenu.min.css"/>
  18. <link rel="stylesheet" href="/static/elementui2.15.5/index.css"/>
  19. <link rel="stylesheet" href="/admin/css/common.css">
  20. <link rel="stylesheet" href="/admin/css/index.css">
  21. <link rel="stylesheet" href="/static/swiper4.5/css/swiper.min.css">
  22. <script src="/static/hplus/js/jquery.min.js?v=2.1.4"></script>
  23. <style>
  24. .nav.navbar-right > li > a {
  25. display: inline-block;
  26. }
  27. #orderNums{
  28. /*vertical-align: middle;*/
  29. color: red;
  30. position: relative;
  31. top: -3px;
  32. }
  33. .nn:focus, .nn:hover{
  34. background-color:#fff !important;
  35. }
  36. .navbar-title{
  37. display: inline-block;
  38. font-size: 20px;
  39. font-family: Source Han Sans CN;
  40. font-weight: 500;
  41. color: #284A94;
  42. padding-left: 20px;
  43. line-height: 60px;
  44. float: left;
  45. }
  46. .navbar-header{
  47. width: 550px!important;
  48. height: 70px;
  49. line-height: 70px;
  50. font-size: 20px;
  51. font-family: Source Han Sans CN;
  52. font-weight: 500;
  53. color: #284A94;
  54. }
  55. .sidebox{
  56. width: 100%;
  57. height: 100%;
  58. position: relative;
  59. }
  60. .side-box-switch{
  61. width: 28px;
  62. height: 168px;
  63. position: absolute;
  64. z-index: 10;
  65. top: 50%;
  66. right: -28px;
  67. /*background-color: red !important;*/
  68. margin-top: -84px;
  69. cursor: pointer;
  70. }
  71. .side-box-switch .switch-img{
  72. width: 100%;
  73. height: 100%;
  74. }
  75. .main-box-padding-left{
  76. padding-left: 120px !important;
  77. }
  78. .main-box-padding-left1{
  79. padding-left: 280px !important;
  80. }
  81. .main-box-padding-left3{
  82. padding-left: 0px !important;
  83. }
  84. .menusub-box{
  85. width: 100%;
  86. height: 100%;
  87. overflow: hidden;
  88. }
  89. html{
  90. height: auto !important;
  91. }
  92. body{
  93. background-image: url("/admin/img/index-bg.png");
  94. background-repeat: no-repeat;
  95. background-size: 100% 100%;
  96. /*background-size: cover;*/
  97. }
  98. .navbar{
  99. width: 100%;
  100. height: 70px !important;
  101. background-image: url("/admin/img/index-header-bg.png");
  102. background-repeat: no-repeat;
  103. background-size: 100% 100%;
  104. margin-bottom: 0 !important;
  105. border-bottom: none !important;
  106. }
  107. .navbar-logo{
  108. width: 157px;
  109. height: 40px;
  110. display: inline-block;
  111. float: left;
  112. margin-left: 50px;
  113. margin-top: 15px;
  114. }
  115. .navbar-logo img{
  116. width: 100%;
  117. height: 100%;
  118. }
  119. </style>
  120. </head>
  121. <!--<body class="fixed-sidebar full-height-layout gray-bg fixed-nav pace-done">-->
  122. <body>
  123. <nav class="navbar navbar-fixed-top" role="navigation">
  124. <!-- <div class="navbar-title">{:get_config('web_site_title')}</div>-->
  125. <div class="navbar-logo">
  126. <img src="/admin/img/index-logo.png" alt="">
  127. </div>
  128. <div class="navbar-header">
  129. {if $userInfo.type==1}
  130. <!--{:get_config('web_site_title')}&nbsp;|&nbsp;-->
  131. <div data-width="60%" data-title="切换组织" url="{:url('Index/changeOrg')}" onclick="layer_open(this,2)" style="cursor: pointer;display: inline-block;height: 70px;line-height: 70px">
  132. {:session('orgName')} <span class="glyphicon glyphicon-menu-down" style="font-size: 16px;" aria-hidden="true"></span>
  133. </div>
  134. {else}
  135. <!--{:get_config('web_site_title')}&nbsp;|&nbsp;-->
  136. <div data-width="60%" style="display: inline-block;">
  137. {:session('orgName')}
  138. </div>
  139. {/if}
  140. </div>
  141. <!-- <ul class="nav navbar-top-links navbar-right">-->
  142. <!--<li class="dropdown">
  143. <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#"> <i class="fa fa-bell"></i> <span class="label label-primary">8</span> </a>
  144. <ul class="dropdown-menu dropdown-alerts">
  145. <li>
  146. <a href="mailbox.html">
  147. <div>
  148. <i class="fa fa-envelope fa-fw"></i> 您有16条未读消息
  149. <span class="pull-right text-muted small">4分钟前</span>
  150. </div>
  151. </a>
  152. </li>
  153. <li class="divider"></li>
  154. <li>
  155. <a href="profile.html">
  156. <div>
  157. <i class="fa fa-qq fa-fw"></i> 3条新回复
  158. <span class="pull-right text-muted small">12分钟前</span>
  159. </div>
  160. </a>
  161. </li>
  162. <li class="divider"></li>
  163. <li>
  164. <div class="text-center link-block">
  165. <a class="J_menuItem" href="notifications.html" data-index="89">
  166. <strong>查看所有 </strong>
  167. <i class="fa fa-angle-right"></i>
  168. </a>
  169. </div>
  170. </li>
  171. </ul>
  172. </li>-->
  173. <!-- <li class="dropdown">
  174. {if ($isDispatch == 1)}
  175. <a href="javascript:;" id="goOrder" url="{:url('Index/ordersList')}?mode=0&order_mode=1" onclick="layer_open_dispatch(this,2)" class="glyphicon glyphicon-bell">
  176. <text id="orderNums">{if condition="$orderNums > 0"}({$orderNums}){/if}</text>
  177. </a>
  178. <a href="javascript:;" class="nn" onclick="offNotice()" id="offNotice" >
  179. <text id="offNoticeBtn">关闭通知</text>
  180. </a>
  181. <input type="hidden" id="offNoticeVal" value="0">
  182. {/if}
  183. <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">欢迎,{:session('user_auth.real_name')} </a>
  184. <ul class="dropdown-menu animated fadeInRight m-t-xs">
  185. <li><a class="JmenuItem" href="{:url('User/modifyPass')}">修改密码</a></li>
  186. <li><a href="{:url('Common/logout')}">安全退出</a></li>
  187. </ul>
  188. </li>-->
  189. <!-- </ul>-->
  190. </nav>
  191. <div id="vueapphhq">
  192. <div class="container gymain-box">
  193. <div class="row">
  194. <div class="col-xs-2">
  195. <div class="gymain1">
  196. <div class="menu-search-box">
  197. <div class="menu-search-input">
  198. <input type="text" name="menu_name" placeholder="您想去的菜单页">
  199. </div>
  200. <div class="menu-search-img-btn">
  201. <img src="/admin/img/search.png" alt="">
  202. </div>
  203. </div>
  204. <div class="menu-list-box">
  205. <a href="">
  206. <div class="zi">人员配置管理</div>
  207. </a>
  208. <a href="">
  209. <div class="zi">人员配置管理</div>
  210. </a>
  211. <a href="">
  212. <div class="zi">人员配置管理</div>
  213. </a>
  214. <a href="">
  215. <div class="zi">人员配置管理</div>
  216. </a>
  217. </div>
  218. <div class="ggw-box">
  219. <img src="/admin/img/guanggaowei.png" alt="">
  220. </div>
  221. <div class="download-info-box">
  222. <div class="download-info-title">资料下载</div>
  223. <div class="download-info-content-box">
  224. <a href="">
  225. <div><span>PC端操作说明书</span><img src="/admin/img/download.png" alt=""></div>
  226. </a>
  227. <a href="">
  228. <div><span>移动端操作说明书</span><img src="/admin/img/download.png" alt=""></div>
  229. </a>
  230. </div>
  231. </div>
  232. <div class="qrcode-box">
  233. <div class="swiper-qrcode" id="swiper-qrcode">
  234. <div class="swiper-wrapper">
  235. <div class="swiper-slide">
  236. <div class="qrcode-title">APP下载/小程序二维码</div>
  237. <img src="/admin/img/screenbg.png">
  238. </div>
  239. <div class="swiper-slide">
  240. <div class="qrcode-title">APP下载/小程序二维码</div>
  241. <img src="/admin/img/screenbg.png">
  242. </div>
  243. </div>
  244. <div class="box-swiper-pagination" id="box-swiper-pagination1"></div>
  245. </div>
  246. </div>
  247. </div>
  248. </div>
  249. <div class="col-xs-7">
  250. <div class="gymain2">
  251. <div class="gymian2-one-box">
  252. <div class="row">
  253. <div class="col-xs-5" style="padding: 0 5px!important;">
  254. <div class="loginuserbox">
  255. <img src="" alt="">
  256. <div class="loginusername">
  257. <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">欢迎,{:session('user_auth.real_name')} </a>
  258. <ul class="dropdown-menu animated fadeInRight m-t-xs">
  259. <li><a class="JmenuItem" href="{:url('User/modifyPass')}">修改密码</a></li>
  260. <li><a href="{:url('Common/logout')}">安全退出</a></li>
  261. </ul>
  262. </div>
  263. </div>
  264. </div>
  265. <div class="col-xs-7" style="padding: 0 5px!important;">
  266. <div class="onemenu">
  267. <div class="col-xs-6">
  268. <div class="menu-info-box">
  269. <div class="menu-icon">
  270. <img src="" alt="">
  271. </div>
  272. <div class="menu-name">
  273. <div class="title">工作台</div>
  274. <div class="des">功能列表</div>
  275. </div>
  276. <img src="/admin/img/xiangyou1.png" alt="" class="jiantou">
  277. </div>
  278. </div>
  279. <div class="col-xs-6">
  280. <div class="menu-info-box">
  281. <div class="menu-icon">
  282. <img src="" alt="">
  283. </div>
  284. <div class="menu-name">
  285. <div class="title">工作台</div>
  286. <div class="des">功能列表</div>
  287. </div>
  288. <img src="/admin/img/xiangyou1.png" alt="" class="jiantou">
  289. </div>
  290. </div>
  291. <div class="col-xs-4">
  292. <div class="menu-info-box">
  293. <div class="menu-icon">
  294. <img src="" alt="">
  295. </div>
  296. <div class="menu-name">
  297. <div class="title">工作台</div>
  298. <div class="des">功能列表</div>
  299. </div>
  300. </div>
  301. </div>
  302. <div class="col-xs-4">
  303. <div class="menu-info-box">
  304. <div class="menu-icon">
  305. <img src="" alt="">
  306. </div>
  307. <div class="menu-name">
  308. <div class="title">工作台</div>
  309. <div class="des">功能列表</div>
  310. </div>
  311. </div>
  312. </div>
  313. <div class="col-xs-4">
  314. <div class="menu-info-box">
  315. <div class="menu-icon">
  316. <img src="" alt="">
  317. </div>
  318. <div class="menu-name">
  319. <div class="title">工作台</div>
  320. <div class="des">功能列表</div>
  321. </div>
  322. </div>
  323. </div>
  324. </div>
  325. </div>
  326. </div>
  327. </div>
  328. <div class="gymian2-two-box" >
  329. <div class="gymian2-two-header">常用模块 <img src="/admin/img/xiangyou1.png" alt=""></div>
  330. <div class="row">
  331. <div class="col-xs-4">
  332. <div class="menu-info-box">
  333. <div class="menu-icon">
  334. <img src="" alt="">
  335. </div>
  336. <div class="menu-name">
  337. <div class="title">工作台</div>
  338. <div class="des">功能列表</div>
  339. </div>
  340. </div>
  341. </div>
  342. <div class="col-xs-4">
  343. <div class="menu-info-box">
  344. <div class="menu-icon">
  345. <img src="" alt="">
  346. </div>
  347. <div class="menu-name">
  348. <div class="title">工作台</div>
  349. <div class="des">功能列表</div>
  350. </div>
  351. </div>
  352. </div>
  353. <div class="col-xs-4" >
  354. <div class="menu-info-box">
  355. <div class="menu-icon">
  356. <img src="" alt="">
  357. </div>
  358. <div class="menu-name">
  359. <div class="title">工作台</div>
  360. <div class="des">功能列表</div>
  361. </div>
  362. </div>
  363. </div>
  364. <div class="col-xs-4">
  365. <div class="menu-info-box">
  366. <div class="menu-icon">
  367. <img src="" alt="">
  368. </div>
  369. <div class="menu-name">
  370. <div class="title">工作台</div>
  371. <div class="des">功能列表</div>
  372. </div>
  373. </div>
  374. </div>
  375. <div class="col-xs-4">
  376. <div class="menu-info-box">
  377. <div class="menu-icon">
  378. <img src="" alt="">
  379. </div>
  380. <div class="menu-name">
  381. <div class="title">工作台</div>
  382. <div class="des">功能列表</div>
  383. </div>
  384. </div>
  385. </div>
  386. <div class="col-xs-4">
  387. <div class="menu-info-box">
  388. <div class="menu-icon">
  389. <img src="" alt="">
  390. </div>
  391. <div class="menu-name">
  392. <div class="title">工作台</div>
  393. <div class="des">功能列表</div>
  394. </div>
  395. </div>
  396. </div>
  397. </div>
  398. </div>
  399. <div class="gymian2-three-box">
  400. <div class="gymian2-three-heaader">今日看板</div>
  401. <div class="row">
  402. </div>
  403. </div>
  404. </div>
  405. </div>
  406. <div class="col-xs-3">
  407. <div class="gymain3">
  408. </div>
  409. </div>
  410. </div>
  411. </div>
  412. </div>
  413. <!--<div class="main-box main-box-h2" id="main-iframe">-->
  414. <div>
  415. <!-- <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="{:url('Index/def')}" frameborder="0" data-id="index_v1.html" seamless></iframe>-->
  416. <!--</div>-->
  417. <script src="/static/hplus/js/bootstrap.min.js?v=3.3.7"></script>
  418. <script src="/static/layer3.2.0/layer.js"></script>
  419. <script src="/static/hplus/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
  420. <script src="/static/hplus/js/plugins/metisMenu/jquery.metisMenu.js"></script>
  421. <script src="/static/hplus/js/plugins/contextMenu/jquery.contextMenu.min.js"></script>
  422. <script src="/static/hplus/js/hplus.js?v=4.1.0"></script>
  423. <script type="text/javascript" src="/static/hplus/js/contabs.js"></script>
  424. <!-- 第三方插件 -->
  425. <script src="/static/hplus/js/plugins/pace/pace.min.js"></script>
  426. <script src="/static/elementui2.15.5/vue-2.6.14.js"></script>
  427. <script src="/static/elementui2.15.5/index.js"></script>
  428. <script src="/admin/js/common.js"></script>
  429. <script src="/static/swiper4.5/js/swiper.min.js"></script>
  430. {if condition="is_login() and !is_admin(is_login()) and btnAuth(is_login(),'PhoneMonitor/show')"}
  431. <textarea style="display: none;" id="StatusArea" rows="13" name="S1" class="form-control" readonly></textarea>
  432. <script language="javascript" type="text/javascript" src="/static/phonejs/qnviccub.js"></script>
  433. <script language="javascript" type="text/javascript" src="/static/phonejs/qnvfunc.js"></script>
  434. <script language="javascript" type="text/javascript" src="/static/phonejs/json2.js"></script>
  435. <script language="javascript" type="text/javascript" src="/static/phonejs/deviceapi.js"></script>
  436. <script>
  437. var fp;
  438. $(document).ready(function(){
  439. TV_Initialize();
  440. getEvent(T_GetEvent);
  441. });
  442. $(window).unload(function(){
  443. TV_Disable();
  444. });
  445. setInterval(function () {
  446. OpenDevice(ODT_LBRIDGE,function(nResult){AppendStatus('打开设备.');});
  447. },30000);
  448. //离开页面
  449. $(window).bind('beforeunload',function(){
  450. TV_Disable();
  451. });
  452. function openPhone() {
  453. // let gphone = "13838379499";
  454. // let fp = "d:\\wyluyin\\" + getCurrentDate(3) + "_" + gphone + ".wav";
  455. // check_phone(gphone,fp);
  456. }
  457. function playBtn() {
  458. // let path = "d:\\wyluyin\\20220608191204_13027625915.wav";
  459. // console.log('path:',path);
  460. PlayFile(1,QNV_PLAY_FILE_START,0,PLAYFILE_MASK_REPEAT,path,function(id){
  461. console.log('play:',id);
  462. });
  463. }
  464. function check_phone(gphone,fp) {
  465. fp = base64encode(fp);
  466. var url = '{:url("orders/phone")}?phone=' + gphone + '&fp='+fp;
  467. var title = '添加订单';
  468. layer.open({
  469. type: 2,
  470. shade: 0.8,
  471. title: title,
  472. area: ['800px', '400px'],
  473. fix: false, //不固定
  474. maxmin: true,
  475. content: url,
  476. skin: 'layer-ext-moon',
  477. success: function(layero, index) {
  478. layer.iframeAuto(index);
  479. },
  480. // btn: ['取消']
  481. });
  482. return false;
  483. }
  484. function AppendStatus(szStatus)
  485. {
  486. // console.log(szStatus);
  487. // $("#StatusArea").append(szStatus+"\r\n" );
  488. // var scrollTop = $("#StatusArea")[0].scrollHeight;
  489. // $("#StatusArea").scrollTop(scrollTop);
  490. }
  491. function AppendStatusEx(uID,szStatus)
  492. {
  493. uID=uID+1;
  494. AppendStatus("通道"+uID+":"+szStatus);
  495. }
  496. function T_GetEvent(uID,uEventType,uHandle,uResult,szdata)
  497. {
  498. // console.log(uID,uEventType,uHandle,uResult,szdata);
  499. //var vValueArray=qnviccub.QNV_Event(0,2,0,"","",1024);
  500. if(uEventType == -1)
  501. return;
  502. var vValue=" type="+uEventType+" Handle="+uHandle+" Result="+uResult+" szdata="+szdata;
  503. switch(uEventType)
  504. {
  505. case BriEvent_PhoneHook:// 本地电话机摘机事件
  506. AppendStatusEx(uID,"本地电话机摘机"+vValue);
  507. TV_StartRecordFile(uID,fp);
  508. break;
  509. case BriEvent_PhoneDial:// 只有在本地话机摘机,没有调用软摘机时,检测到DTMF拨号
  510. AppendStatusEx(uID,"本地话机拨号"+vValue);
  511. break;
  512. case BriEvent_PhoneHang:// 本地电话机挂机事件
  513. TV_HangUpCtrl(uID);
  514. AppendStatusEx(uID,"本地电话机挂机"+vValue);
  515. TV_StopRecordFile(uID);
  516. break;
  517. case BriEvent_CallIn:// 外线通道来电响铃事件
  518. AppendStatusEx(uID,"外线通道来电响铃事件"+vValue);
  519. break;
  520. case BriEvent_GetCallID://得到来电号码
  521. AppendStatusEx(uID,"得到来电号码"+vValue);
  522. fp = "d:\\wyluyin\\" + getCurrentDate(3) + "_" + szdata + ".wav";
  523. check_phone(szdata,fp);
  524. break;
  525. case BriEvent_StopCallIn:// 对方停止呼叫(产生一个未接电话)
  526. AppendStatusEx(uID,"对方停止呼叫(产生一个未接电话)"+vValue);
  527. break;
  528. case BriEvent_DialEnd:// 调用开始拨号后,全部号码拨号结束
  529. AppendStatusEx(uID,"调用开始拨号后,全部号码拨号结束"+vValue);
  530. break;
  531. case BriEvent_PlayFileEnd:// 播放文件结束事件
  532. AppendStatusEx(uID,"播放文件结束事件"+vValue);
  533. break;
  534. case BriEvent_PlayMultiFileEnd:// 多文件连播结束事件
  535. AppendStatusEx(uID,"多文件连播结束事件"+vValue);
  536. break;
  537. case BriEvent_PlayStringEnd://播放字符结束
  538. AppendStatusEx(uID,"播放字符结束"+vValue);
  539. break;
  540. case BriEvent_RepeatPlayFile:// 播放文件结束准备重复播放
  541. AppendStatusEx(uID,"播放文件结束准备重复播放"+vValue);
  542. break;
  543. case BriEvent_SendCallIDEnd:// 给本地设备发送震铃信号时发送号码结束
  544. AppendStatusEx(uID,"给本地设备发送震铃信号时发送号码结束"+vValue);
  545. break;
  546. case BriEvent_RingTimeOut://给本地设备发送震铃信号时超时
  547. AppendStatusEx(uID,"给本地设备发送震铃信号时超时"+vValue);
  548. break;
  549. case BriEvent_Ringing://正在内线震铃
  550. AppendStatusEx(uID,"正在内线震铃"+vValue);
  551. break;
  552. case BriEvent_Silence:// 通话时检测到一定时间的静音.默认为5秒
  553. AppendStatusEx(uID,"通话时检测到一定时间的静音"+vValue);
  554. break;
  555. case BriEvent_GetDTMFChar:// 线路接通时收到DTMF码事件
  556. AppendStatusEx(uID,"线路接通时收到DTMF码事件"+vValue);
  557. break;
  558. case BriEvent_RemoteHook:// 拨号后,被叫方摘机事件
  559. AppendStatusEx(uID,"拨号后,被叫方摘机事件"+vValue);
  560. break;
  561. case BriEvent_RemoteHang://对方挂机事件
  562. TV_HangUpCtrl(uID);
  563. AppendStatusEx(uID,"对方挂机事件"+vValue);
  564. TV_StopRecordFile(uID);
  565. break;
  566. case BriEvent_Busy:// 检测到忙音事件,表示PSTN线路已经被断开
  567. AppendStatusEx(uID,"检测到忙音事件,表示PSTN线路已经被断开"+vValue);
  568. break;
  569. case BriEvent_DialTone:// 本地摘机后检测到拨号音
  570. AppendStatusEx(uID,"本地摘机后检测到拨号音"+vValue);
  571. break;
  572. case BriEvent_RingBack:// 电话机拨号结束呼出事件。
  573. AppendStatusEx(uID,"电话机拨号结束呼出事件"+vValue);
  574. break;
  575. case BriEvent_MicIn:// MIC插入状态
  576. AppendStatusEx(uID,"MIC插入状态"+vValue);
  577. break;
  578. case BriEvent_MicOut:// MIC拔出状态
  579. AppendStatusEx(uID,"MIC拔出状态"+vValue);
  580. break;
  581. case BriEvent_FlashEnd:// 拍插簧(Flash)完成事件,拍插簧完成后可以检测拨号音后进行二次拨号
  582. AppendStatusEx(uID,"拍插簧(Flash)完成事件,拍插簧完成后可以检测拨号音后进行二次拨号"+vValue);
  583. break;
  584. case BriEvent_RefuseEnd:// 拒接完成
  585. AppendStatusEx(uID,"拒接完成"+vValue);
  586. break;
  587. case BriEvent_SpeechResult:// 语音识别完成
  588. AppendStatusEx(uID,"语音识别完成"+vValue);
  589. break;
  590. case BriEvent_FaxRecvFinished:// 接收传真完成
  591. AppendStatusEx(uID,"接收传真完成"+vValue);
  592. break;
  593. case BriEvent_FaxRecvFailed:// 接收传真失败
  594. AppendStatusEx(uID,"接收传真失败"+vValue);
  595. break;
  596. case BriEvent_FaxSendFinished:// 发送传真完成
  597. AppendStatusEx(uID,"发送传真完成"+vValue);
  598. break;
  599. case BriEvent_FaxSendFailed:// 发送传真失败
  600. AppendStatusEx(uID,"发送传真失败"+vValue);
  601. break;
  602. case BriEvent_OpenSoundFailed:// 启动声卡失败
  603. AppendStatusEx(uID,"启动声卡失败"+vValue);
  604. break;
  605. case BriEvent_UploadSuccess://远程上传成功
  606. AppendStatusEx(uID,"远程上传成功"+vValue);
  607. break;
  608. case BriEvent_UploadFailed://远程上传失败
  609. AppendStatusEx(uID,"远程上传失败"+vValue);
  610. break;
  611. case BriEvent_EnableHook:// 应用层调用软摘机/软挂机成功事件
  612. AppendStatusEx(uID,"应用层调用软摘机/软挂机成功事件"+vValue);
  613. break;
  614. case BriEvent_EnablePlay:// 喇叭被打开或者/关闭
  615. AppendStatusEx(uID,"喇叭被打开或者/关闭"+vValue);
  616. break;
  617. case BriEvent_EnableMic:// MIC被打开或者关闭
  618. AppendStatusEx(uID,"MIC被打开或者关闭"+vValue);
  619. break;
  620. case BriEvent_EnableSpk:// 耳机被打开或者关闭
  621. AppendStatusEx(uID,"耳机被打开或者关闭"+vValue);
  622. break;
  623. case BriEvent_EnableRing:// 电话机跟电话线(PSTN)断开/接通
  624. AppendStatusEx(uID,"电话机跟电话线(PSTN)断开/接通"+vValue);
  625. break;
  626. case BriEvent_DoRecSource:// 修改录音源
  627. AppendStatusEx(uID,"修改录音源"+vValue);
  628. break;
  629. case BriEvent_DoStartDial:// 开始软件拨号
  630. AppendStatusEx(uID,"开始软件拨号"+vValue);
  631. break;
  632. case BriEvent_RecvedFSK:// 接收到FSK信号,包括通话中FSK/来电号码的FSK
  633. AppendStatusEx(uID,"接收到FSK信号,包括通话中FSK/来电号码的FSK"+vValue);
  634. break;
  635. case BriEvent_PlugOut:
  636. AppendStatusEx(uID,"设备移除");
  637. // alert('设备移除');
  638. break;
  639. case BriEvent_DevErr://设备错误
  640. AppendStatusEx(uID,"设备错误"+ decodeURIComponent(vValue) );
  641. // alert('设备错误');
  642. break;
  643. default:
  644. if(uEventType < BriEvent_EndID)
  645. AppendStatusEx(uID,"忽略其它事件发生:ID=" + uEventType+ vValue);
  646. break;
  647. }
  648. }
  649. </script>
  650. {/if}
  651. {if condition="$isDispatch eq 1"}
  652. <audio id="dingdantixing" src="/static/tixing.mp3" controls="controls" style="display: none;"></audio>
  653. <script>
  654. var time1;
  655. var audio = document.getElementById('dingdantixing');
  656. $(function () {
  657. var interval = function () {
  658. var url = "{:url('Index/order')}";
  659. $.get(url,function (data) {
  660. if(data.code == 1){
  661. var audio = document.getElementById('dingdantixing');
  662. audio.play();
  663. if(data.data > 0){
  664. document.getElementById('orderNums').innerHTML ='('+data.data +')';
  665. }
  666. // layer.msg('您有新的订单请及时处理',{time:3000});
  667. }
  668. });
  669. }
  670. time1 = setInterval(interval,30000);
  671. $("#offNoticeBtn").click(function () {
  672. var off = parseInt($("#offNoticeVal").val());
  673. if(off==0){
  674. clearInterval(time1);
  675. $("#offNoticeVal").val(1)
  676. $("#offNoticeBtn").html('开启通知');
  677. audio.pause();
  678. }else {
  679. $("#offNoticeVal").val(0)
  680. time1 = setInterval(interval,30000);
  681. $("#offNoticeBtn").html('关闭通知');
  682. }
  683. })
  684. })
  685. </script>
  686. {/if}
  687. <script>
  688. var menus = {:json_encode($menus)};
  689. $(function () {
  690. // $('#side-menu').slimScroll({
  691. // height: ($('.sidebar-box').height() + 40) + 'px'
  692. // });
  693. // $('#side-menu2').slimScroll({
  694. // height: $('.sidebar-box').height() + 'px'
  695. // });
  696. $('#sidebar-box-h2').removeClass('sidebar-box-h2');
  697. $('#main-iframe').addClass('main-box-h2');
  698. $('#menu-1').addClass('active');
  699. // $('.sidenav .side-list a').hover(
  700. // function () {
  701. // $(this).addClass("hover");
  702. // let id = $(this).attr('data-id');
  703. // initSubMenu(id);
  704. // },
  705. // function () {
  706. // $(this).removeClass("hover");
  707. // }
  708. // );
  709. $(document).on('click','#side-menu .Jiframe',function () {
  710. let id = $(this).attr('data-id');
  711. let url = $(this).attr('data-url');
  712. $('#main-iframe').removeClass('main-box-padding-left');
  713. $('#main-iframe').removeClass('main-box-padding-left1');
  714. $('#main-iframe').removeClass('main-box-padding-left3');
  715. // var width2 = localStorage.getItem("width1");
  716. // console.log(width2,'xxxxxxxxxxxxxxxx')
  717. // if(width2 == 120){
  718. // $('#main-iframe').css('padding-left','120px');
  719. // }
  720. // if(width2 == 280){
  721. // $('#main-iframe').css('padding-left','280px');
  722. // }
  723. if(url){
  724. if(id==485 || id==467 || id==488 || id==489){
  725. $('#sidebar-box-h2').removeClass('sidebar-box-h2');
  726. $('#main-iframe').addClass('main-box-h2');
  727. window.open(url);
  728. }else {
  729. $('#sidebar-box-h2').removeClass('sidebar-box-h2');
  730. $('#main-iframe').addClass('main-box-h2');
  731. let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
  732. $('#main-iframe').html(str);
  733. }
  734. }else{
  735. $('#sidebar-box-h2').addClass('sidebar-box-h2');
  736. $('#main-iframe').removeClass('main-box-h2');
  737. }
  738. $(this).addClass("hover");
  739. initSubMenu(id);
  740. $('#side-menu .Jiframe').removeClass('active');
  741. $(this).addClass('active');
  742. });
  743. $(document).on('click','#side-menu2 .Jiframe',function () {
  744. $('#main-iframe').removeClass('main-box-padding-left');
  745. $('#main-iframe').removeClass('main-box-padding-left1');
  746. $('#main-iframe').removeClass('main-box-padding-left3');
  747. let pid = $(this).attr('data-pid');
  748. let url = $(this).attr('data-url');
  749. let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
  750. $('#main-iframe').html(str);
  751. $('#side-menu2 .Jiframe').removeClass('active');
  752. $(this).addClass('active');
  753. // 寻找父级元素
  754. $('#side-menu .Jiframe').removeClass('active');
  755. $('#menu'+pid).addClass('active');
  756. });
  757. $(document).on('click','.JmenuItem',function () {
  758. $('#main-iframe').removeClass('main-box-padding-left');
  759. $('#main-iframe').removeClass('main-box-padding-left1');
  760. $('#main-iframe').removeClass('main-box-padding-left3');
  761. let url = $(this).attr('href');
  762. let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
  763. $('#main-iframe').html(str);
  764. return false;
  765. });
  766. });
  767. function initSubMenu(id) {
  768. $('#main-iframe').removeClass('main-box-padding-left');
  769. $('#main-iframe').removeClass('main-box-padding-left1');
  770. $('#main-iframe').removeClass('main-box-padding-left3');
  771. let submenus = [];
  772. for (let o in menus){
  773. if(id == menus[o].id){
  774. submenus = menus[o].child;
  775. break;
  776. }
  777. }
  778. if(submenus.length > 0){
  779. $('#sidebar-box-h2').addClass('sidebar-box-h2');
  780. $('#main-iframe').removeClass('main-box-h2');
  781. }else{
  782. $('#sidebar-box-h2').removeClass('sidebar-box-h2');
  783. $('#main-iframe').addClass('main-box-h2');
  784. }
  785. let str = '';
  786. for (let o in submenus){
  787. if(submenus[o].child.length > 0){
  788. // <div class="side-group">
  789. // <div class="side-group-label">系统设置</div>
  790. // <div class="side-list">
  791. // <a class="J_iframe" href="layouts.html"><span>项目管理</span></a>
  792. // </div>
  793. // </div>
  794. str += '<div class="side-group">';
  795. str += '<div class="side-group-label">'+submenus[o].title+'</div>';
  796. let children = submenus[o].child;
  797. for(let n in children){
  798. str += '<div class="side-list">';
  799. str += '<a class="Jiframe" id="menu'+children[n].id+'" data-id="'+children[n].id+'" data-pid="'+submenus[o].pid+'" data-url="'+children[n].url+'" href="javascript:;"><span>'+children[n].title+'</span></a>';
  800. str += '</div>';
  801. }
  802. str += '</div>';
  803. }else{
  804. // <div class="side-list">
  805. // <a class="J_iframe active" href="layouts.html"><span>权限管理</span></a>
  806. // </div>
  807. str += '<div class="side-list">';
  808. str += '<a class="Jiframe" id="menu'+submenus[o].id+'" data-id="'+submenus[o].id+'" data-pid="'+submenus[o].pid+'" data-url="'+submenus[o].url+'" href="javascript:;"><span>'+submenus[o].title+'</span></a>';
  809. str += '</div>';
  810. }
  811. }
  812. $('#side-menu2').html(str);
  813. }
  814. function add_highlight(url){
  815. console.log('url',url);
  816. $('.side-list a').removeClass('active');
  817. for (let o in menus){
  818. if(menus[o].url && menus[o].url == url){
  819. $('#menu'+menus[o].id).addClass('active');
  820. break;
  821. }
  822. let child1 = menus[o].child;
  823. let flag = false;
  824. let id = 0;
  825. if(child1.length > 0){
  826. for (let m in child1){
  827. if(child1[m].url && child1[m].url == url){
  828. flag = true;
  829. id = child1[m].id;
  830. break;
  831. }
  832. let child2 = child1[m].child;
  833. for (let n in child2){
  834. if(child2[n].url && child2[n].url == url){
  835. flag = true;
  836. id = child2[n].id;
  837. break;
  838. }
  839. }
  840. if(flag){
  841. break;
  842. }
  843. }
  844. }
  845. console.log('flag11',flag,id);
  846. if(flag){
  847. initSubMenu(menus[o].id);
  848. $('#menu'+menus[o].id).addClass('active');
  849. $('#menu'+id).addClass('active');
  850. break;
  851. }
  852. }
  853. }
  854. // $(document).on('click','#goOrder',function () {
  855. // let url = $(this).attr('href');
  856. // let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
  857. // $('#main-iframe').html(str);
  858. // return false;
  859. // });
  860. function layer_open_dispatch(_self,flag){
  861. var url = $(_self).attr('url');
  862. var title = $(_self).attr('data-title');
  863. var width = $(_self).attr('data-width')?$(_self).attr('data-width'):'90%';
  864. var height = $(_self).attr('data-height')?$(_self).attr('data-height'):'90%';
  865. layer.open({
  866. type: 2,
  867. title: title,
  868. shadeClose: true,
  869. shade: 0.3,
  870. maxmin: true,
  871. area: [width, height],
  872. content: url,
  873. end: function () {
  874. update_order_count();
  875. }
  876. });
  877. }
  878. function update_order_count() {
  879. let url = "{:url('Index/ocount')}";
  880. $.post(url,function (res) {
  881. if(res.code == 1){
  882. let count = res.data.count;
  883. if(count > 0){
  884. $('#orderNums').html('('+count+')');
  885. }else{
  886. $('#orderNums').html('');
  887. }
  888. }
  889. });
  890. }
  891. function toggleSide(_self) {
  892. var width = $('.menuall').width();
  893. if(Number(width) > 1){
  894. var width1 = Number(width);
  895. localStorage.setItem("width1",width1);
  896. }
  897. if ( $(_self).hasClass('switch-open') ) {
  898. $(_self).removeClass('switch-open');
  899. $(_self).find('.switch-img-open').show();
  900. $(_self).find('.switch-img-close').hide();
  901. $('.menuall').css('width','0');
  902. $('.menusub-box').css('display','none');
  903. $('#main-iframe').addClass('main-box-padding-left3');
  904. }else{
  905. $(_self).addClass('switch-open');
  906. $(_self).find('.switch-img-open').hide();
  907. $(_self).find('.switch-img-close').show();
  908. $('.menuall').css('width','');
  909. $('.menusub-box').css('display','block');
  910. $('#main-iframe').removeClass('main-box-padding-left3');
  911. var width2 = localStorage.getItem("width1");
  912. if(width2 == 120){
  913. // $('#main-iframe').css('padding-left','120px');
  914. $('#main-iframe').addClass('main-box-padding-left');
  915. }
  916. if(width2 == 280){
  917. // $('#main-iframe').css('padding-left','280px');
  918. $('#main-iframe').addClass('main-box-padding-left1');
  919. }
  920. localStorage.removeItem("width1");
  921. }
  922. }
  923. new Swiper ('#swiper-qrcode', {
  924. loop: false, // 循环模式选项
  925. observer:true,//修改swiper自己或子元素时,自动初始化swiper
  926. observeParents:true,//修改swiper的父元素时,自动初始化swiper
  927. autoplay: {
  928. delay: 6000,
  929. stopOnLastSlide: false,
  930. disableOnInteraction: false,
  931. },
  932. // 如果需要分页器
  933. pagination: {
  934. el: '#box-swiper-pagination1',
  935. clickable: true,
  936. },
  937. });
  938. </script>
  939. </body>
  940. </html>