index.html 52 KB

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