index.html 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120
  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" id="menu_name" placeholder="您想去的菜单页">
  199. </div>
  200. <div class="menu-search-img-btn">
  201. <img src="/admin/img/search.png" alt=""onclick="searchMenu()">
  202. </div>
  203. </div>
  204. <div class="menu-list-box" id="menu-list-box">
  205. {foreach $userEndMenu as $k=>$v}
  206. <a href="{:url('indexsub1',['curmenu'=>500,'menuId'=>$v['id'],'ct'=>1])}">
  207. <div class="zi">{$v['title']}</div>
  208. </a>
  209. {/foreach}
  210. </div>
  211. <div class="ggw-box">
  212. <img src="/admin/img/guanggaowei.png" alt="">
  213. </div>
  214. <div class="download-info-box">
  215. <div class="download-info-title">资料下载</div>
  216. <div class="download-info-content-box">
  217. <a href="/doc/国药医嘉安-PC端操作说明书.pdf" target="_blank">
  218. <div><span>PC端操作说明书</span><img src="/admin/img/download.png" alt=""></div>
  219. </a>
  220. <a href="/doc/国药医嘉安-APP操作说明书.pdf" target="_blank">
  221. <div><span>移动端操作说明书</span><img src="/admin/img/download.png" alt=""></div>
  222. </a>
  223. </div>
  224. </div>
  225. <div class="qrcode-box">
  226. <div class="swiper-qrcode" id="swiper-qrcode">
  227. <div class="swiper-wrapper">
  228. {if $download}
  229. <div class="swiper-slide">
  230. <div class="qrcode-title">APP下载二维码</div>
  231. <img src="{:url('Qrcode/qrcode',['code'=>$download,'type'=>1])}" alt="APP下载二维码">
  232. </div>
  233. {/if}
  234. {if $wxcode}
  235. <div class="swiper-slide">
  236. <div class="qrcode-title">小程序二维码</div>
  237. <img src="{$wxcode}" alt="小程序二维码">
  238. </div>
  239. {/if}
  240. {if $phcode}
  241. <div class="swiper-slide">
  242. <div class="qrcode-title">陪护二维码</div>
  243. <img src="{:url('Qrcode/qrcode',['code'=>$phcode,'type'=>1])}" alt="陪护客户端二维码">
  244. </div>
  245. {/if}
  246. </div>
  247. <div class="box-swiper-pagination" id="box-swiper-pagination1"></div>
  248. </div>
  249. </div>
  250. </div>
  251. </div>
  252. <div class="col-xs-7">
  253. <div class="gymain2">
  254. <div class="gymian2-one-box">
  255. <div class="row">
  256. <div class="col-xs-5" style="padding: 0 5px!important;">
  257. <div class="loginuserbox">
  258. {empty name="userInfo['head_image']"}
  259. <img src="/img/defaulthead.png" style="" alt="">
  260. {else /}
  261. <img src="{$userInfo['head_image']}" alt="">
  262. {/empty}
  263. <div class="loginusername">
  264. <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">欢迎,{:session('user_auth.real_name')} </a>
  265. <ul class="dropdown-menu animated fadeInRight m-t-xs">
  266. <li><a class="JmenuItem" href="javascript:;" onclick="savePassWord()">修改密码</a></li>
  267. <li><a href="{:url('Common/logout')}">安全退出</a></li>
  268. </ul>
  269. </div>
  270. </div>
  271. </div>
  272. <div class="col-xs-7" style="padding: 0 5px!important;">
  273. <div class="onemenu">
  274. <div class="col-xs-6">
  275. <a href="{if $fixedModuleAuth ==1} {:url('index/indexsub',['curmenu'=>$fixedModule['id']])} {else /}javascript:void(0){/if}">
  276. <div class="menu-info-box">
  277. <div class="menu-icon">
  278. <img src="{$fixedModule.img}" alt="">
  279. </div>
  280. <div class="menu-name">
  281. <div class="title">{$fixedModule.title}</div>
  282. <div class="des">{$fixedModule.des}</div>
  283. </div>
  284. {if $fixedModuleAuth ==1} <img src="/admin/img/xiangyou1.png" alt="" class="jiantou">{/if}
  285. </div>
  286. </a>
  287. </div>
  288. <div class="col-xs-6">
  289. <a href="{if $fixedModuleAuth1 ==1} {:url('index/indexsub',['curmenu'=>$fixedModule1['id']])} {else /}javascript:void(0){/if}">
  290. <div class="menu-info-box">
  291. <div class="menu-icon">
  292. <img src="{$fixedModule1.img}" alt="">
  293. </div>
  294. <div class="menu-name">
  295. <div class="title">{$fixedModule1.title}</div>
  296. <div class="des">{$fixedModule1.des}</div>
  297. </div>
  298. {if $fixedModuleAuth ==1}
  299. <img src="/admin/img/xiangyou1.png" alt="" class="jiantou">
  300. {/if}
  301. </div>
  302. </a>
  303. </div>
  304. <div class="col-xs-4">
  305. <a href="{if $fixedModuleAuth2 ==1} {:url('index/indexsub',['curmenu'=>$fixedModule2['id']])} {else /}javascript:void(0){/if}">
  306. <div class="menu-info-box">
  307. <div class="menu-icon">
  308. <img src="{$fixedModule2.img}" alt="">
  309. </div>
  310. <div class="menu-name">
  311. <div class="title">{$fixedModule2.title}</div>
  312. <div class="des">{$fixedModule2.des}</div>
  313. </div>
  314. </div>
  315. </a>
  316. </div>
  317. <div class="col-xs-4">
  318. <a href="{if $fixedModuleAuth3 ==1} {:url('index/indexsub',['curmenu'=>$fixedModule3['id']])} {else /}javascript:void(0){/if}">
  319. <div class="menu-info-box">
  320. <div class="menu-icon">
  321. <img src="{$fixedModule3.img}" alt="">
  322. </div>
  323. <div class="menu-name">
  324. <div class="title">{$fixedModule3.title}</div>
  325. <div class="des">{$fixedModule3.des}</div>
  326. </div>
  327. </div>
  328. </a>
  329. </div>
  330. <div class="col-xs-4">
  331. <a href="{if $fixedModuleAuth4 ==1} {:url('index/indexsub',['curmenu'=>$fixedModule4['id']])} {else /}javascript:void(0){/if}">
  332. <div class="menu-info-box">
  333. <div class="menu-icon">
  334. <img src="{$fixedModule4.img}" alt="">
  335. </div>
  336. <div class="menu-name">
  337. <div class="title">{$fixedModule4.title}</div>
  338. <div class="des">{$fixedModule4.des}</div>
  339. </div>
  340. </div>
  341. </a>
  342. </div>
  343. </div>
  344. </div>
  345. </div>
  346. </div>
  347. <div class="gymian2-two-box" >
  348. <div class="gymian2-two-header">常用模块
  349. <!-- <img src="/admin/img/xiangyou1.png" alt="">-->
  350. </div>
  351. <div class="row">
  352. {foreach $module as $k=>$v}
  353. <div class="col-xs-4">
  354. <a href="{:url('indexsub1',['curmenu'=>500,'menuId'=>$v['menu_id'],'ct'=>1])}">
  355. <div class="menu-info-box">
  356. <div class="menu-icon">
  357. <img src="{$v.img}" alt="">
  358. </div>
  359. <div class="menu-name">
  360. <div class="title">{$v['title']}</div>
  361. <div class="des">{$v['des']}</div>
  362. </div>
  363. </div>
  364. </a>
  365. </div>
  366. {/foreach}
  367. </div>
  368. </div>
  369. <div class="gymian2-three-box">
  370. <div class="gymian2-three-header">今日看板</div>
  371. <div class="orders-box">
  372. <div class="col-xs-2">
  373. <div class="orders-status-box orders-status-bg">
  374. <div class="title">待处理</div>
  375. <div class="line"></div>
  376. <div class="nums">{$dayOrderCount.count1}</div>
  377. </div>
  378. </div>
  379. <div class="col-xs-2">
  380. <div class="orders-status-box orders-status-bg1">
  381. <div class="title">已派发</div>
  382. <div class="line"></div>
  383. <div class="nums">{$dayOrderCount.count2}</div>
  384. </div>
  385. </div>
  386. <div class="col-xs-2">
  387. <div class="orders-status-box orders-status-bg2">
  388. <div class="title">已完成</div>
  389. <div class="line"></div>
  390. <div class="nums">{$dayOrderCount.count3}</div>
  391. </div>
  392. </div>
  393. <div class="col-xs-2">
  394. <div class="orders-status-box orders-status-bg3">
  395. <div class="title">已评价</div>
  396. <div class="line"></div>
  397. <div class="nums">{$dayOrderCount.count4}</div>
  398. </div>
  399. </div>
  400. <div class="col-xs-2">
  401. <div class="orders-status-box orders-status-bg4">
  402. <div class="title">用户撤销</div>
  403. <div class="line"></div>
  404. <div class="nums">{$dayOrderCount.count5}</div>
  405. </div>
  406. </div>
  407. <div class="col-xs-2">
  408. <div class="orders-status-box orders-status-bg5">
  409. <div class="title">调度取消</div>
  410. <div class="line"></div>
  411. <div class="nums">{$dayOrderCount.count6}</div>
  412. </div>
  413. </div>
  414. </div>
  415. </div>
  416. </div>
  417. </div>
  418. <div class="col-xs-3" style="padding: 0 5px">
  419. <div class="gymain3">
  420. <div class="notice-box">
  421. <div class="notice-header-box">
  422. 通知公告
  423. <a href="{:url('index/indexsub1',['curmenu'=>500,'menuId'=>14,'ct'=>1])}">
  424. <img src="/admin/img/xiangyou1.png" alt="" class="pull-right" style="cursor: pointer">
  425. </a>
  426. </div>
  427. {notempty name="notice"}
  428. {volist name="notice" id="v"}
  429. <div class="notice-info-box">
  430. <div class="notice-info-header-box">
  431. <div class="yuandian"></div>
  432. <div class="name">{$v.title}</div>
  433. <text class="pull-right">{$v.create_time}</text>
  434. </div>
  435. <div class="notice-content">
  436. {$v.content}
  437. </div>
  438. <div class="go-notice-detail" style="cursor: pointer;" url="{:url('NoticeCommon/noticeDetail',['id'=>$v['id']])}" data-title="通知详情" data-width="800px" onclick="layer_open(this,1)">详情</div>
  439. </div>
  440. {/volist}
  441. {else /}
  442. <div style="width: 100%;text-align: center;margin-top: 50px;font-size: 16px">暂无通知</div>
  443. {/notempty}
  444. </div>
  445. <div class="tj-box">
  446. <div class="tj-header-box">
  447. 统计报表
  448. {if $fixedModuleAuth3 ==1}
  449. <a href="{:url('index/indexsub',['curmenu'=>$fixedModule3['id']])}">
  450. <img src="/admin/img/xiangyou1.png" alt="" class="pull-right">
  451. </a>
  452. {/if}
  453. </div>
  454. <div class="tj-body-box">
  455. <div class="col-xs-6">
  456. <a href="{:url('index/indexsub',['curmenu'=>163,'menuId'=>240,'ct'=>1])}">
  457. <div class="tj-info">
  458. 报修报表
  459. </div>
  460. </a>
  461. </div>
  462. <div class="col-xs-6">
  463. <a href="{:url('index/indexsub',['curmenu'=>163,'menuId'=>242,'ct'=>1])}">
  464. <div class="tj-info1">
  465. 运送报表
  466. </div>
  467. </a>
  468. </div>
  469. <div class="col-xs-6">
  470. <a href="{:url('index/indexsub',['curmenu'=>163,'menuId'=>244,'ct'=>1])}">
  471. <div class="tj-info1">
  472. 巡更报表
  473. </div>
  474. </a>
  475. </div>
  476. <div class="col-xs-12" style="padding: 0 5px!important;">
  477. <a href="{:url('index/indexsub',['curmenu'=>1,'menuId'=>41,'curmenuId'=>503,'ct'=>1])}">
  478. <div class="tj-info2">
  479. 视频监控
  480. </div>
  481. </a>
  482. </div>
  483. </div>
  484. </div>
  485. </div>
  486. </div>
  487. </div>
  488. </div>
  489. </div>
  490. <!--<div class="main-box main-box-h2" id="main-iframe">-->
  491. <div>
  492. <!-- <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="{:url('Index/def')}" frameborder="0" data-id="index_v1.html" seamless></iframe>-->
  493. <!--</div>-->
  494. <script src="/static/hplus/js/bootstrap.min.js?v=3.3.7"></script>
  495. <script src="/static/layer3.2.0/layer.js"></script>
  496. <script src="/static/hplus/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
  497. <script src="/static/hplus/js/plugins/metisMenu/jquery.metisMenu.js"></script>
  498. <script src="/static/hplus/js/plugins/contextMenu/jquery.contextMenu.min.js"></script>
  499. <script src="/static/hplus/js/hplus.js?v=4.1.0"></script>
  500. <script type="text/javascript" src="/static/hplus/js/contabs.js"></script>
  501. <!-- 第三方插件 -->
  502. <script src="/static/hplus/js/plugins/pace/pace.min.js"></script>
  503. <script src="/static/elementui2.15.5/vue-2.6.14.js"></script>
  504. <script src="/static/elementui2.15.5/index.js"></script>
  505. <script src="/admin/js/common.js"></script>
  506. <script src="/static/swiper4.5/js/swiper.min.js"></script>
  507. {if condition="is_login() and !is_admin(is_login()) and btnAuth(is_login(),'PhoneMonitor/show')"}
  508. <textarea style="display: none;" id="StatusArea" rows="13" name="S1" class="form-control" readonly></textarea>
  509. <script language="javascript" type="text/javascript" src="/static/phonejs/qnviccub.js"></script>
  510. <script language="javascript" type="text/javascript" src="/static/phonejs/qnvfunc.js"></script>
  511. <script language="javascript" type="text/javascript" src="/static/phonejs/json2.js"></script>
  512. <script language="javascript" type="text/javascript" src="/static/phonejs/deviceapi.js"></script>
  513. <script>
  514. var fp;
  515. $(document).ready(function(){
  516. TV_Initialize();
  517. getEvent(T_GetEvent);
  518. });
  519. $(window).unload(function(){
  520. TV_Disable();
  521. });
  522. setInterval(function () {
  523. OpenDevice(ODT_LBRIDGE,function(nResult){AppendStatus('打开设备.');});
  524. },30000);
  525. //离开页面
  526. $(window).bind('beforeunload',function(){
  527. TV_Disable();
  528. });
  529. function openPhone() {
  530. // let gphone = "13838379499";
  531. // let fp = "d:\\wyluyin\\" + getCurrentDate(3) + "_" + gphone + ".wav";
  532. // check_phone(gphone,fp);
  533. }
  534. function playBtn() {
  535. // let path = "d:\\wyluyin\\20220608191204_13027625915.wav";
  536. // console.log('path:',path);
  537. PlayFile(1,QNV_PLAY_FILE_START,0,PLAYFILE_MASK_REPEAT,path,function(id){
  538. console.log('play:',id);
  539. });
  540. }
  541. function check_phone(gphone,fp) {
  542. fp = base64encode(fp);
  543. var url = '{:url("orders/phone")}?phone=' + gphone + '&fp='+fp;
  544. var title = '添加订单';
  545. layer.open({
  546. type: 2,
  547. shade: 0.8,
  548. title: title,
  549. area: ['800px', '400px'],
  550. fix: false, //不固定
  551. maxmin: true,
  552. content: url,
  553. skin: 'layer-ext-moon',
  554. success: function(layero, index) {
  555. layer.iframeAuto(index);
  556. },
  557. // btn: ['取消']
  558. });
  559. return false;
  560. }
  561. function AppendStatus(szStatus)
  562. {
  563. // console.log(szStatus);
  564. // $("#StatusArea").append(szStatus+"\r\n" );
  565. // var scrollTop = $("#StatusArea")[0].scrollHeight;
  566. // $("#StatusArea").scrollTop(scrollTop);
  567. }
  568. function AppendStatusEx(uID,szStatus)
  569. {
  570. uID=uID+1;
  571. AppendStatus("通道"+uID+":"+szStatus);
  572. }
  573. function T_GetEvent(uID,uEventType,uHandle,uResult,szdata)
  574. {
  575. // console.log(uID,uEventType,uHandle,uResult,szdata);
  576. //var vValueArray=qnviccub.QNV_Event(0,2,0,"","",1024);
  577. if(uEventType == -1)
  578. return;
  579. var vValue=" type="+uEventType+" Handle="+uHandle+" Result="+uResult+" szdata="+szdata;
  580. switch(uEventType)
  581. {
  582. case BriEvent_PhoneHook:// 本地电话机摘机事件
  583. AppendStatusEx(uID,"本地电话机摘机"+vValue);
  584. TV_StartRecordFile(uID,fp);
  585. break;
  586. case BriEvent_PhoneDial:// 只有在本地话机摘机,没有调用软摘机时,检测到DTMF拨号
  587. AppendStatusEx(uID,"本地话机拨号"+vValue);
  588. break;
  589. case BriEvent_PhoneHang:// 本地电话机挂机事件
  590. TV_HangUpCtrl(uID);
  591. AppendStatusEx(uID,"本地电话机挂机"+vValue);
  592. TV_StopRecordFile(uID);
  593. break;
  594. case BriEvent_CallIn:// 外线通道来电响铃事件
  595. AppendStatusEx(uID,"外线通道来电响铃事件"+vValue);
  596. break;
  597. case BriEvent_GetCallID://得到来电号码
  598. AppendStatusEx(uID,"得到来电号码"+vValue);
  599. fp = "d:\\wyluyin\\" + getCurrentDate(3) + "_" + szdata + ".wav";
  600. check_phone(szdata,fp);
  601. break;
  602. case BriEvent_StopCallIn:// 对方停止呼叫(产生一个未接电话)
  603. AppendStatusEx(uID,"对方停止呼叫(产生一个未接电话)"+vValue);
  604. break;
  605. case BriEvent_DialEnd:// 调用开始拨号后,全部号码拨号结束
  606. AppendStatusEx(uID,"调用开始拨号后,全部号码拨号结束"+vValue);
  607. break;
  608. case BriEvent_PlayFileEnd:// 播放文件结束事件
  609. AppendStatusEx(uID,"播放文件结束事件"+vValue);
  610. break;
  611. case BriEvent_PlayMultiFileEnd:// 多文件连播结束事件
  612. AppendStatusEx(uID,"多文件连播结束事件"+vValue);
  613. break;
  614. case BriEvent_PlayStringEnd://播放字符结束
  615. AppendStatusEx(uID,"播放字符结束"+vValue);
  616. break;
  617. case BriEvent_RepeatPlayFile:// 播放文件结束准备重复播放
  618. AppendStatusEx(uID,"播放文件结束准备重复播放"+vValue);
  619. break;
  620. case BriEvent_SendCallIDEnd:// 给本地设备发送震铃信号时发送号码结束
  621. AppendStatusEx(uID,"给本地设备发送震铃信号时发送号码结束"+vValue);
  622. break;
  623. case BriEvent_RingTimeOut://给本地设备发送震铃信号时超时
  624. AppendStatusEx(uID,"给本地设备发送震铃信号时超时"+vValue);
  625. break;
  626. case BriEvent_Ringing://正在内线震铃
  627. AppendStatusEx(uID,"正在内线震铃"+vValue);
  628. break;
  629. case BriEvent_Silence:// 通话时检测到一定时间的静音.默认为5秒
  630. AppendStatusEx(uID,"通话时检测到一定时间的静音"+vValue);
  631. break;
  632. case BriEvent_GetDTMFChar:// 线路接通时收到DTMF码事件
  633. AppendStatusEx(uID,"线路接通时收到DTMF码事件"+vValue);
  634. break;
  635. case BriEvent_RemoteHook:// 拨号后,被叫方摘机事件
  636. AppendStatusEx(uID,"拨号后,被叫方摘机事件"+vValue);
  637. break;
  638. case BriEvent_RemoteHang://对方挂机事件
  639. TV_HangUpCtrl(uID);
  640. AppendStatusEx(uID,"对方挂机事件"+vValue);
  641. TV_StopRecordFile(uID);
  642. break;
  643. case BriEvent_Busy:// 检测到忙音事件,表示PSTN线路已经被断开
  644. AppendStatusEx(uID,"检测到忙音事件,表示PSTN线路已经被断开"+vValue);
  645. break;
  646. case BriEvent_DialTone:// 本地摘机后检测到拨号音
  647. AppendStatusEx(uID,"本地摘机后检测到拨号音"+vValue);
  648. break;
  649. case BriEvent_RingBack:// 电话机拨号结束呼出事件。
  650. AppendStatusEx(uID,"电话机拨号结束呼出事件"+vValue);
  651. break;
  652. case BriEvent_MicIn:// MIC插入状态
  653. AppendStatusEx(uID,"MIC插入状态"+vValue);
  654. break;
  655. case BriEvent_MicOut:// MIC拔出状态
  656. AppendStatusEx(uID,"MIC拔出状态"+vValue);
  657. break;
  658. case BriEvent_FlashEnd:// 拍插簧(Flash)完成事件,拍插簧完成后可以检测拨号音后进行二次拨号
  659. AppendStatusEx(uID,"拍插簧(Flash)完成事件,拍插簧完成后可以检测拨号音后进行二次拨号"+vValue);
  660. break;
  661. case BriEvent_RefuseEnd:// 拒接完成
  662. AppendStatusEx(uID,"拒接完成"+vValue);
  663. break;
  664. case BriEvent_SpeechResult:// 语音识别完成
  665. AppendStatusEx(uID,"语音识别完成"+vValue);
  666. break;
  667. case BriEvent_FaxRecvFinished:// 接收传真完成
  668. AppendStatusEx(uID,"接收传真完成"+vValue);
  669. break;
  670. case BriEvent_FaxRecvFailed:// 接收传真失败
  671. AppendStatusEx(uID,"接收传真失败"+vValue);
  672. break;
  673. case BriEvent_FaxSendFinished:// 发送传真完成
  674. AppendStatusEx(uID,"发送传真完成"+vValue);
  675. break;
  676. case BriEvent_FaxSendFailed:// 发送传真失败
  677. AppendStatusEx(uID,"发送传真失败"+vValue);
  678. break;
  679. case BriEvent_OpenSoundFailed:// 启动声卡失败
  680. AppendStatusEx(uID,"启动声卡失败"+vValue);
  681. break;
  682. case BriEvent_UploadSuccess://远程上传成功
  683. AppendStatusEx(uID,"远程上传成功"+vValue);
  684. break;
  685. case BriEvent_UploadFailed://远程上传失败
  686. AppendStatusEx(uID,"远程上传失败"+vValue);
  687. break;
  688. case BriEvent_EnableHook:// 应用层调用软摘机/软挂机成功事件
  689. AppendStatusEx(uID,"应用层调用软摘机/软挂机成功事件"+vValue);
  690. break;
  691. case BriEvent_EnablePlay:// 喇叭被打开或者/关闭
  692. AppendStatusEx(uID,"喇叭被打开或者/关闭"+vValue);
  693. break;
  694. case BriEvent_EnableMic:// MIC被打开或者关闭
  695. AppendStatusEx(uID,"MIC被打开或者关闭"+vValue);
  696. break;
  697. case BriEvent_EnableSpk:// 耳机被打开或者关闭
  698. AppendStatusEx(uID,"耳机被打开或者关闭"+vValue);
  699. break;
  700. case BriEvent_EnableRing:// 电话机跟电话线(PSTN)断开/接通
  701. AppendStatusEx(uID,"电话机跟电话线(PSTN)断开/接通"+vValue);
  702. break;
  703. case BriEvent_DoRecSource:// 修改录音源
  704. AppendStatusEx(uID,"修改录音源"+vValue);
  705. break;
  706. case BriEvent_DoStartDial:// 开始软件拨号
  707. AppendStatusEx(uID,"开始软件拨号"+vValue);
  708. break;
  709. case BriEvent_RecvedFSK:// 接收到FSK信号,包括通话中FSK/来电号码的FSK
  710. AppendStatusEx(uID,"接收到FSK信号,包括通话中FSK/来电号码的FSK"+vValue);
  711. break;
  712. case BriEvent_PlugOut:
  713. AppendStatusEx(uID,"设备移除");
  714. // alert('设备移除');
  715. break;
  716. case BriEvent_DevErr://设备错误
  717. AppendStatusEx(uID,"设备错误"+ decodeURIComponent(vValue) );
  718. // alert('设备错误');
  719. break;
  720. default:
  721. if(uEventType < BriEvent_EndID)
  722. AppendStatusEx(uID,"忽略其它事件发生:ID=" + uEventType+ vValue);
  723. break;
  724. }
  725. }
  726. </script>
  727. {/if}
  728. {if condition="$isDispatch eq 1"}
  729. <audio id="dingdantixing" src="/static/tixing.mp3" controls="controls" style="display: none;"></audio>
  730. <script>
  731. var time1;
  732. var audio = document.getElementById('dingdantixing');
  733. $(function () {
  734. var interval = function () {
  735. var url = "{:url('Index/order')}";
  736. $.get(url,function (data) {
  737. if(data.code == 1){
  738. var audio = document.getElementById('dingdantixing');
  739. audio.play();
  740. if(data.data > 0){
  741. document.getElementById('orderNums').innerHTML ='('+data.data +')';
  742. }
  743. // layer.msg('您有新的订单请及时处理',{time:3000});
  744. }
  745. });
  746. }
  747. time1 = setInterval(interval,30000);
  748. $("#offNoticeBtn").click(function () {
  749. var off = parseInt($("#offNoticeVal").val());
  750. if(off==0){
  751. clearInterval(time1);
  752. $("#offNoticeVal").val(1)
  753. $("#offNoticeBtn").html('开启通知');
  754. audio.pause();
  755. }else {
  756. $("#offNoticeVal").val(0)
  757. time1 = setInterval(interval,30000);
  758. $("#offNoticeBtn").html('关闭通知');
  759. }
  760. })
  761. })
  762. </script>
  763. {/if}
  764. <script>
  765. var menus = {:json_encode($menus)};
  766. $(function () {
  767. // $('#side-menu').slimScroll({
  768. // height: ($('.sidebar-box').height() + 40) + 'px'
  769. // });
  770. // $('#side-menu2').slimScroll({
  771. // height: $('.sidebar-box').height() + 'px'
  772. // });
  773. $('#sidebar-box-h2').removeClass('sidebar-box-h2');
  774. $('#main-iframe').addClass('main-box-h2');
  775. $('#menu-1').addClass('active');
  776. // $('.sidenav .side-list a').hover(
  777. // function () {
  778. // $(this).addClass("hover");
  779. // let id = $(this).attr('data-id');
  780. // initSubMenu(id);
  781. // },
  782. // function () {
  783. // $(this).removeClass("hover");
  784. // }
  785. // );
  786. $(document).on('click','#side-menu .Jiframe',function () {
  787. let id = $(this).attr('data-id');
  788. let url = $(this).attr('data-url');
  789. $('#main-iframe').removeClass('main-box-padding-left');
  790. $('#main-iframe').removeClass('main-box-padding-left1');
  791. $('#main-iframe').removeClass('main-box-padding-left3');
  792. // var width2 = localStorage.getItem("width1");
  793. // console.log(width2,'xxxxxxxxxxxxxxxx')
  794. // if(width2 == 120){
  795. // $('#main-iframe').css('padding-left','120px');
  796. // }
  797. // if(width2 == 280){
  798. // $('#main-iframe').css('padding-left','280px');
  799. // }
  800. if(url){
  801. if(id==485 || id==467 || id==488 || id==489){
  802. $('#sidebar-box-h2').removeClass('sidebar-box-h2');
  803. $('#main-iframe').addClass('main-box-h2');
  804. window.open(url);
  805. }else {
  806. $('#sidebar-box-h2').removeClass('sidebar-box-h2');
  807. $('#main-iframe').addClass('main-box-h2');
  808. let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
  809. $('#main-iframe').html(str);
  810. }
  811. }else{
  812. $('#sidebar-box-h2').addClass('sidebar-box-h2');
  813. $('#main-iframe').removeClass('main-box-h2');
  814. }
  815. $(this).addClass("hover");
  816. initSubMenu(id);
  817. $('#side-menu .Jiframe').removeClass('active');
  818. $(this).addClass('active');
  819. });
  820. $(document).on('click','#side-menu2 .Jiframe',function () {
  821. $('#main-iframe').removeClass('main-box-padding-left');
  822. $('#main-iframe').removeClass('main-box-padding-left1');
  823. $('#main-iframe').removeClass('main-box-padding-left3');
  824. let pid = $(this).attr('data-pid');
  825. let url = $(this).attr('data-url');
  826. let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
  827. $('#main-iframe').html(str);
  828. $('#side-menu2 .Jiframe').removeClass('active');
  829. $(this).addClass('active');
  830. // 寻找父级元素
  831. $('#side-menu .Jiframe').removeClass('active');
  832. $('#menu'+pid).addClass('active');
  833. });
  834. $(document).on('click','.JmenuItem',function () {
  835. $('#main-iframe').removeClass('main-box-padding-left');
  836. $('#main-iframe').removeClass('main-box-padding-left1');
  837. $('#main-iframe').removeClass('main-box-padding-left3');
  838. let url = $(this).attr('href');
  839. let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
  840. $('#main-iframe').html(str);
  841. return false;
  842. });
  843. });
  844. function initSubMenu(id) {
  845. $('#main-iframe').removeClass('main-box-padding-left');
  846. $('#main-iframe').removeClass('main-box-padding-left1');
  847. $('#main-iframe').removeClass('main-box-padding-left3');
  848. let submenus = [];
  849. for (let o in menus){
  850. if(id == menus[o].id){
  851. submenus = menus[o].child;
  852. break;
  853. }
  854. }
  855. if(submenus.length > 0){
  856. $('#sidebar-box-h2').addClass('sidebar-box-h2');
  857. $('#main-iframe').removeClass('main-box-h2');
  858. }else{
  859. $('#sidebar-box-h2').removeClass('sidebar-box-h2');
  860. $('#main-iframe').addClass('main-box-h2');
  861. }
  862. let str = '';
  863. for (let o in submenus){
  864. if(submenus[o].child.length > 0){
  865. // <div class="side-group">
  866. // <div class="side-group-label">系统设置</div>
  867. // <div class="side-list">
  868. // <a class="J_iframe" href="layouts.html"><span>项目管理</span></a>
  869. // </div>
  870. // </div>
  871. str += '<div class="side-group">';
  872. str += '<div class="side-group-label">'+submenus[o].title+'</div>';
  873. let children = submenus[o].child;
  874. for(let n in children){
  875. str += '<div class="side-list">';
  876. 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>';
  877. str += '</div>';
  878. }
  879. str += '</div>';
  880. }else{
  881. // <div class="side-list">
  882. // <a class="J_iframe active" href="layouts.html"><span>权限管理</span></a>
  883. // </div>
  884. str += '<div class="side-list">';
  885. 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>';
  886. str += '</div>';
  887. }
  888. }
  889. $('#side-menu2').html(str);
  890. }
  891. function add_highlight(url){
  892. console.log('url',url);
  893. $('.side-list a').removeClass('active');
  894. for (let o in menus){
  895. if(menus[o].url && menus[o].url == url){
  896. $('#menu'+menus[o].id).addClass('active');
  897. break;
  898. }
  899. let child1 = menus[o].child;
  900. let flag = false;
  901. let id = 0;
  902. if(child1.length > 0){
  903. for (let m in child1){
  904. if(child1[m].url && child1[m].url == url){
  905. flag = true;
  906. id = child1[m].id;
  907. break;
  908. }
  909. let child2 = child1[m].child;
  910. for (let n in child2){
  911. if(child2[n].url && child2[n].url == url){
  912. flag = true;
  913. id = child2[n].id;
  914. break;
  915. }
  916. }
  917. if(flag){
  918. break;
  919. }
  920. }
  921. }
  922. console.log('flag11',flag,id);
  923. if(flag){
  924. initSubMenu(menus[o].id);
  925. $('#menu'+menus[o].id).addClass('active');
  926. $('#menu'+id).addClass('active');
  927. break;
  928. }
  929. }
  930. }
  931. // $(document).on('click','#goOrder',function () {
  932. // let url = $(this).attr('href');
  933. // let str = '<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="'+url+'" frameborder="0" data-id="'+url+'" seamless></iframe>';
  934. // $('#main-iframe').html(str);
  935. // return false;
  936. // });
  937. function layer_open_dispatch(_self,flag){
  938. var url = $(_self).attr('url');
  939. var title = $(_self).attr('data-title');
  940. var width = $(_self).attr('data-width')?$(_self).attr('data-width'):'90%';
  941. var height = $(_self).attr('data-height')?$(_self).attr('data-height'):'90%';
  942. layer.open({
  943. type: 2,
  944. title: title,
  945. shadeClose: true,
  946. shade: 0.3,
  947. maxmin: true,
  948. area: [width, height],
  949. content: url,
  950. end: function () {
  951. update_order_count();
  952. }
  953. });
  954. }
  955. function update_order_count() {
  956. let url = "{:url('Index/ocount')}";
  957. $.post(url,function (res) {
  958. if(res.code == 1){
  959. let count = res.data.count;
  960. if(count > 0){
  961. $('#orderNums').html('('+count+')');
  962. }else{
  963. $('#orderNums').html('');
  964. }
  965. }
  966. });
  967. }
  968. function toggleSide(_self) {
  969. var width = $('.menuall').width();
  970. if(Number(width) > 1){
  971. var width1 = Number(width);
  972. localStorage.setItem("width1",width1);
  973. }
  974. if ( $(_self).hasClass('switch-open') ) {
  975. $(_self).removeClass('switch-open');
  976. $(_self).find('.switch-img-open').show();
  977. $(_self).find('.switch-img-close').hide();
  978. $('.menuall').css('width','0');
  979. $('.menusub-box').css('display','none');
  980. $('#main-iframe').addClass('main-box-padding-left3');
  981. }else{
  982. $(_self).addClass('switch-open');
  983. $(_self).find('.switch-img-open').hide();
  984. $(_self).find('.switch-img-close').show();
  985. $('.menuall').css('width','');
  986. $('.menusub-box').css('display','block');
  987. $('#main-iframe').removeClass('main-box-padding-left3');
  988. var width2 = localStorage.getItem("width1");
  989. if(width2 == 120){
  990. // $('#main-iframe').css('padding-left','120px');
  991. $('#main-iframe').addClass('main-box-padding-left');
  992. }
  993. if(width2 == 280){
  994. // $('#main-iframe').css('padding-left','280px');
  995. $('#main-iframe').addClass('main-box-padding-left1');
  996. }
  997. localStorage.removeItem("width1");
  998. }
  999. }
  1000. new Swiper ('#swiper-qrcode', {
  1001. loop: false, // 循环模式选项
  1002. observer:true,//修改swiper自己或子元素时,自动初始化swiper
  1003. observeParents:true,//修改swiper的父元素时,自动初始化swiper
  1004. autoplay: {
  1005. delay: 6000,
  1006. stopOnLastSlide: false,
  1007. disableOnInteraction: false,
  1008. },
  1009. // 如果需要分页器
  1010. pagination: {
  1011. el: '#box-swiper-pagination1',
  1012. clickable: true,
  1013. },
  1014. });
  1015. function searchMenu(){
  1016. var menu_name = $('#menu_name').val();
  1017. var url = '{:url("index/searchMenu")}';
  1018. $.post(url,{menu_name:menu_name},function (e){
  1019. if(e.code == 1){
  1020. var str = '';
  1021. $('#menu-list-box').html();
  1022. var list = e.data;
  1023. if(list.length > 0){
  1024. for (var i in list){
  1025. str +='<a href="'+list[i].url+'">';
  1026. str +='<div class="zi">'+list[i].title+'</div>';
  1027. str += '</a>';
  1028. }
  1029. }
  1030. $('#menu-list-box').html(str);
  1031. }
  1032. })
  1033. }
  1034. function savePassWord(){
  1035. console.log('xxxxxxxxxxxxxx');
  1036. window.location.href = "{:url('User/modifyPass')}";
  1037. }
  1038. </script>
  1039. </body>
  1040. </html>