新乡民调(来自息县民调) - 主标

SeatMonitor.html 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <link href="../css/init.css" rel="stylesheet" />
  7. <script src="../Script/Common/huayi.load.js"></script>
  8. <script src="../Script/Common/huayi.config.js"></script>
  9. <title>坐席监控管理</title>
  10. <style>
  11. body {
  12. background-color: #EEEEEE;
  13. font-family: "微软雅黑";
  14. background-color: #fdfdfd;
  15. }
  16. ul li {
  17. float: left;
  18. }
  19. .zx-title {
  20. background-color: #2e4050;
  21. color: #FFFFFF;
  22. padding: 5px 20px;
  23. border-top-left-radius: 5px;
  24. border-top-right-radius: 5px;
  25. letter-spacing: 3px;
  26. }
  27. ul {
  28. overflow: hidden;
  29. }
  30. ul li {
  31. list-style: none;
  32. }
  33. .fenxian {
  34. list-style: none;
  35. width: 136px;
  36. padding: 0;
  37. height: 10px;
  38. }
  39. .fenxian li {
  40. width: 50%;
  41. list-style: none;
  42. height: 8px;
  43. float: left;
  44. }
  45. .left_red {
  46. background: #65c2ca;
  47. }
  48. .rg_green {
  49. background: #F95A83;
  50. }
  51. .zx-box {
  52. background: #F5F5F5;
  53. /*height: 200px;*/
  54. border-radius: 5px;
  55. box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
  56. margin-bottom: 30px;
  57. overflow: hidden;
  58. }
  59. .m-b {
  60. margin-bottom: 0;
  61. }
  62. /*坐席数量*/
  63. .zt-content ul {
  64. width: 100%;
  65. overflow: hidden;
  66. padding-left: 0px;
  67. padding-top: 20px;
  68. }
  69. .zt-content ul li {
  70. width: 40%;
  71. font-size: 14px;
  72. float: left;
  73. margin-bottom: 20px;
  74. /*text-align: center;*/
  75. margin-left: 10%;
  76. }
  77. .zt-content ul li i {
  78. display: inline-block;
  79. width: 20px;
  80. height: 21px;
  81. vertical-align: middle;
  82. margin-right: 10px;
  83. background: url(../img/zuoxiIcon.png) no-repeat;
  84. }
  85. .hc {
  86. background-position: 0 0 !important;
  87. }
  88. .ml {
  89. background-position: 0 -24px !important;
  90. }
  91. .kx {
  92. background-position: 0 -68px !important;
  93. }
  94. .zl {
  95. background-position: 0 -93px !important;
  96. }
  97. .qc {
  98. background-position: 0 -116px !important;
  99. }
  100. .lx {
  101. background-position: 0 -138px !important;
  102. }
  103. .hh {
  104. background-position: 0 -46px !important;
  105. }
  106. .th {
  107. background: url(../img/thz.png) no-repeat!important;
  108. }
  109. /*坐席监控*/
  110. .bg_person {
  111. background: url(../img/bg-person.png)no-repeat;
  112. width: 65px;
  113. height: 65px;
  114. text-align: -webkit-center;
  115. background-position: center center;
  116. margin: 0 auto;
  117. }
  118. .zx_people {
  119. padding: 0;
  120. }
  121. .zx_content ul:after {
  122. content: "";
  123. display: block;
  124. clear: both;
  125. }
  126. .people_list p {
  127. margin-bottom: 5px !important;
  128. }
  129. .zx_content ul {
  130. height: 800px;
  131. overflow: auto;
  132. }
  133. .zx_content ul li {
  134. width: 14%;
  135. text-align: center;
  136. float: left;
  137. cursor: pointer;
  138. }
  139. .zx_content ul li>div {
  140. width: 100%;
  141. position: relative;
  142. }
  143. .zx_content i {
  144. display: block;
  145. height: 22px;
  146. width: 20px;
  147. background: url(../img/zuoxiIcon.png) no-repeat;
  148. position: relative;
  149. right: -25px;
  150. top: 25px;
  151. }
  152. /*坐席状态*/
  153. .ztsm {
  154. width: 100%;
  155. overflow: hidden;
  156. padding-left: 0px;
  157. padding-top: 20px;
  158. }
  159. .ztsm b {
  160. padding: 3px 15px;
  161. border-radius: 10px;
  162. color: #FFFFFF;
  163. }
  164. .ztsm2 ul li {
  165. width: 33%;
  166. font-size: 14px;
  167. float: left;
  168. margin-bottom: 25px;
  169. text-align: center;
  170. cursor: pointer;
  171. }
  172. .zx {
  173. /*background: #989898;*/
  174. background: #61b960;
  175. }
  176. .jt {
  177. background: #5ed7b7;
  178. }
  179. .dj {
  180. background: #bed75b;
  181. }
  182. .qca {
  183. background: #d75e7c;
  184. }
  185. .lj {
  186. background: #5daed8;
  187. }
  188. .qc {
  189. background: #d8988f;
  190. }
  191. .kqc {
  192. background: #44af3c;
  193. }
  194. .jqc {
  195. background: #d91e06;
  196. }
  197. .dis {
  198. background: #989898;
  199. }
  200. /*坐席弹屏*/
  201. .zx_photo {
  202. padding: 10px;
  203. }
  204. .zx_photo p {
  205. text-align: center;
  206. }
  207. .zx-box_ul>ul {
  208. padding-left: 0px;
  209. }
  210. .zx-box_ul>ul>li {
  211. width: 33% !important;
  212. padding: 22px 13px;
  213. text-align: -webkit-center;
  214. font-size: 15px;
  215. cursor: pointer;
  216. }
  217. .zx-box_ul>ul>li b {
  218. padding: 7px 15px;
  219. border-radius: 10px;
  220. color: #FFFFFF;
  221. }
  222. .zxtp {
  223. position: absolute;
  224. display: none;
  225. }
  226. .shows {
  227. display: block;
  228. }
  229. .hides {
  230. display: block;
  231. }
  232. .ztsm li:nth-of-type(1),
  233. .ztsm li:nth-of-type(2),
  234. .ztsm li:nth-of-type(3),
  235. .ztsm li:nth-of-type(4),
  236. .ztsm li:nth-of-type(5),
  237. .ztsm li:nth-of-type(6){
  238. cursor: default;
  239. }
  240. </style>
  241. </head>
  242. <body>
  243. <div class="wrapper wrapper-content animated fadeInRight">
  244. <div class="daoHang clearfix">
  245. <div class="dhLeft">
  246. <sapn><i class="syIcon"></i>位置:
  247. <a id="ReIndex">首页</a>&gt;
  248. <a href="javaScript:;">话务管理</a>&gt;
  249. <a href="" style="color: #000;">坐席监控管理</a>
  250. </sapn>
  251. </div>
  252. </div>
  253. <div class="row" style="margin-top: 20px;">
  254. <!--左边-->
  255. <div class="col-sm-9">
  256. <div class="zx_top">
  257. <span class="zx-title">坐席监控系统</span>
  258. <ul class="fenxian">
  259. <li class="left_red"></li>
  260. <li class="rg_green"></li>
  261. </ul>
  262. </div>
  263. <div class="zx_content">
  264. <ul class="zx_people"></ul>
  265. </div>
  266. </div>
  267. <!--右边-->
  268. <div class="col-sm-3">
  269. <div class="zx_top">
  270. <span class="zx-title">状态说明</span>
  271. <ul class="m-b fenxian" style="width:104px;">
  272. <li class="left_red"></li>
  273. <li class="rg_green"></li>
  274. </ul>
  275. <div class="zx-box">
  276. <div class="ztsm2 w_3">
  277. <ul class="ztsm">
  278. <li><b class="zx">置闲</b></li>
  279. <li><b class="jt">监听</b></li>
  280. <li><b class="dj">代接</b></li>
  281. <li><b class="qca">强插</b></li>
  282. <li><b class="lj">拦截</b></li>
  283. <li><b class="qc">强拆</b></li>
  284. <li style="width: 50%;"><b class="kqc">开始监测</b></li>
  285. <li style="width: 50%;"><b class="jqc dis">停止监测</b></li>
  286. </ul>
  287. </div>
  288. </div>
  289. </div>
  290. <div class="zx_top">
  291. <span class="zx-title">实时统计</span>
  292. <ul class="m-b fenxian" style="width:104px;">
  293. <li class="left_red"></li>
  294. <li class="rg_green"></li>
  295. </ul>
  296. <div class="zx-box">
  297. <div class="zt-content w_5">
  298. <ul class="tjcount">
  299. <li>登录坐席:<b>0</b></li>
  300. <li>离线人数:<b>0</b></li>
  301. <li>空闲人数:<b>0</b></li>
  302. <li>通话人数:<b>0</b></li>
  303. <li>系统呼入:<b>0</b></li>
  304. <li>置忙坐席:<b>0</b></li>
  305. <!--<li>签出坐席:<b>100</b></li>-->
  306. <li>全部坐席:<b>0</b></li>
  307. </ul>
  308. </div>
  309. </div>
  310. </div>
  311. <div class="zx_top">
  312. <span class="zx-title">状态说明</span>
  313. <ul class="m-b fenxian" style="width:104px;">
  314. <li class="left_red"></li>
  315. <li class="rg_green"></li>
  316. </ul>
  317. <div class="zx-box">
  318. <div class="zt-content w_5">
  319. <ul>
  320. <li><i class="hc"></i>呼出</li>
  321. <li><i class="ml"></i>忙绿</li>
  322. <li><i class="kx"></i>空闲</li>
  323. <li><i class="zl"></i>振铃</li>
  324. <!--<li><i class="qc"></i>&nbsp;签出</li>-->
  325. <li><i class="lx"></i>离线</li>
  326. <li><i class="hh"></i>话后处理</li>
  327. <li><i class="th"></i>通话中</li>
  328. </ul>
  329. </div>
  330. </div>
  331. </div>
  332. </div>
  333. </div>
  334. </div>
  335. <!--坐席弹屏-->
  336. <div class="zxT zxtp">
  337. <div class="zx-box" style="width: 400px;">
  338. <div class="zx_photo row zx_content">
  339. <div style="width: 400px;">
  340. <div class="bg_person"> <i class="lx"></i></div>
  341. <p>
  342. <span>工号:</span>
  343. <span class="g_nums"></span>
  344. </p>
  345. <p>
  346. <span>姓名:</span>
  347. <span class="g_names"></span>
  348. </p>
  349. </div>
  350. </div>
  351. <div class="zx-box_ul row">
  352. <ul>
  353. <li><b class="zx" item="ForceAgentState">置闲</b></li>
  354. <li><b class="jt" item="Listen">监听</b></li>
  355. <li><b class="dj" item="Instead">代接</b></li>
  356. <li><b class="qca" item="Insert">强插</b></li>
  357. <li><b class="lj" item="Intercept">拦截</b></li>
  358. <li><b class="qc" item="Break">强拆</b></li>
  359. </ul>
  360. </div>
  361. </div>
  362. </div>
  363. <script>
  364. var user;
  365. $(document).ready(function() {
  366. //获取坐席列表
  367. $.getJSON(huayi.config.callcenter_url + 'SeatMonitoring/getlist', {
  368. "token": $.cookie("token")
  369. }, function(result) {
  370. if(result.state.toLowerCase() == "success") {
  371. $(".zx_people").empty();
  372. user = result.data;
  373. $(".tjcount li").eq(6).find("b").text(user.length);
  374. $(user).each(function(i, n) {
  375. var html = '<li class="people_list ' + n.F_WorkNumber + '">' +
  376. '<div>' +
  377. ' <div class="bg_person">' +
  378. ' <i class="lx" zx_item="0" xl_item="0"></i>' +
  379. '</div>' +
  380. ' <p>' +
  381. ' <span>工号:</span>' +
  382. ' <span class="g-num">' + n.F_WorkNumber + '</span>' +
  383. ' </p>' +
  384. ' <p>' +
  385. ' <span>&nbsp;&nbsp;姓名:</span>' +
  386. ' <span class="g-name">' + n.F_UserName + '</span>' +
  387. ' </p>' +
  388. '</div>' +
  389. '</li>';
  390. $(html).appendTo($(".zx_people")).click(function(event) {
  391. event.stopPropagation();
  392. if(top.obj.AgentID != $(this).find(".g-num").text()) {
  393. $(".zxtp .g_nums").text($(this).find(".g-num").text());
  394. $(".zxtp .g_names").text($(this).find(".g-name").text());
  395. $(".zxtp i").removeClass().addClass($(this).find("i").attr("class"));
  396. //if (!$(this).find("i").hasClass("lx")) {
  397. // Center($('.zxtp'));
  398. //}
  399. Center($('.zxtp'));
  400. UpdateSelState($(this).find("i").attr("zx_item"), $(this).find("i").attr("xl_item"));
  401. } else {
  402. layer.confirm('不能操作自己的坐席!', {
  403. btn: ['确定']
  404. });
  405. }
  406. })
  407. })
  408. }
  409. })
  410. $(".wrapper").click(function() {
  411. if(!$('.zxtp').is(":hidden")) {
  412. $('.zxtp').hide();
  413. }
  414. })
  415. //开始监测
  416. $(".kqc").click(function() {
  417. if(!$(this).hasClass("dis")) {
  418. $(user).each(function(i, n) {
  419. top.obj.Type = "SubScribe";
  420. top.obj.SubParmer = n.F_WorkNumber;
  421. top.obj.SubType = "0"; //根据工号订阅坐席状态
  422. top.Send();
  423. top.obj.SubType = "1"; //根据工号订阅线路状态
  424. top.Send();
  425. })
  426. //top.obj.Type = "SubScribe";
  427. //top.obj.SubParmer = "8003";
  428. //top.obj.SubType = "0";//根据工号订阅坐席状态
  429. //top.Send();
  430. //top.obj.SubType = "1";//根据工号订阅线路状态
  431. //top.Send();
  432. }
  433. })
  434. //停止监测
  435. $(".jqc").click(function() {
  436. if(!$(this).hasClass("dis")) {
  437. //$(user).each(function (i, n) {
  438. // top.obj.Type = "SubScribeCancel";
  439. // top.obj.SubParmer = n.F_WorkNumber;
  440. // top.obj.SubType = "0";//根据工号取消订阅坐席状态
  441. // top.Send();
  442. // top.obj.SubType = "1";//根据工号取消订阅线路状态
  443. // top.Send();
  444. //})
  445. top.obj.Type = "SubScribeCancel";
  446. top.obj.SubParmer = "-1";
  447. top.obj.SubType = "0"; //根据工号取消订阅坐席状态
  448. top.Send();
  449. top.obj.SubType = "1"; //根据工号取消订阅线路状态
  450. top.Send();
  451. }
  452. })
  453. //班长操作坐席
  454. $(".zxtp b").click(function() {
  455. if(!$(this).hasClass("dis")) {
  456. var wn = $(".zxtp .g_nums").text();//坐席工号
  457. var type = $(this).attr("item");//坐席状态值
  458. top.obj.Type = type;
  459. top.obj.TargetAgentID = wn;
  460. top.Send();
  461. }
  462. })
  463. })
  464. //计算数量
  465. var tj;
  466. function tjcount() {
  467. tj = {
  468. hr: 0,
  469. tx: 0,
  470. kx: 0,
  471. lx: 0,
  472. zm: 0,
  473. dl: 0
  474. };
  475. $(".zx_people i").each(function() {
  476. var zx = $(this).attr("zx_item");
  477. var xl = $(this).attr("xl_item");
  478. switch(zx) {
  479. case "0":
  480. tj.lx = tj.lx + 1;
  481. break; //离线
  482. case "5":
  483. tj.zm = tj.zm + 1;
  484. break; //小休
  485. }
  486. switch(xl) {
  487. case "5":
  488. tj.hr = tj.hr + 1;
  489. break; //来电振铃
  490. case "6":
  491. tj.tx = tj.tx + 1;
  492. break; //通话中
  493. }
  494. if(zx == '2' && xl == '1') {
  495. tj.kx = tj.kx + 1;
  496. } //空闲
  497. if(zx != '0' && zx != '7' && xl != '0' && xl != '9') {
  498. tj.dl = tj.dl + 1;
  499. }
  500. })
  501. $(".tjcount li").eq(0).find("b").text(tj.dl);
  502. $(".tjcount li").eq(1).find("b").text(tj.lx);
  503. $(".tjcount li").eq(2).find("b").text(tj.kx);
  504. $(".tjcount li").eq(3).find("b").text(tj.tx);
  505. $(".tjcount li").eq(4).find("b").text(tj.hr);
  506. $(".tjcount li").eq(5).find("b").text(tj.zm);
  507. }
  508. /*居中*/
  509. function Center(obj) {
  510. var screenWidth = $(window).width(),
  511. screenHeight = $(window).height(); //当前浏览器窗口的 宽高
  512. var scrolltop = $(document).scrollTop(); //获取当前窗口距离页面顶部高度
  513. var objLeft = (screenWidth - obj.width()) / 2;
  514. var objTop = (screenHeight - obj.height()) / 2 + scrolltop;
  515. obj.css({
  516. left: objLeft + 'px',
  517. top: objTop + 'px'
  518. });
  519. obj.show();
  520. }
  521. //开始监测成功后
  522. function Start() {
  523. $(".kqc").addClass("dis");
  524. $(".jqc").removeClass("dis");
  525. }
  526. //停止监测成功后
  527. function Stop() {
  528. $(".jqc").addClass("dis");
  529. $(".kqc").removeClass("dis");
  530. $(".zxtp i").removeClass().addClass("lx");
  531. $(".zx_people i").removeClass().addClass("lx").attr("zx_item", "0").attr("xl_item", "0");
  532. }
  533. /**
  534. * 修改当前页面坐席列表内 坐席弹屏内 坐席头像上 坐席状态
  535. * WorkNumber 坐席工号
  536. * State 状态值
  537. *
  538. * 坐席状态
  539. * */
  540. function UpdateAgentState(WorkNumber, State) {
  541. var sts = "";
  542. switch(State) {
  543. case "0":
  544. sts = "lx";
  545. break; //离线
  546. case "1":
  547. break; //登录中
  548. case "2":
  549. sts = "kx";
  550. break; //空闲
  551. case "3":
  552. sts = "th";
  553. break; //通话中
  554. case "4":
  555. sts = "hh";
  556. break; //话后处理中
  557. case "5":
  558. sts = "ml";
  559. break; //小休
  560. case "6":
  561. sts = "zl";
  562. break; //被请求
  563. case "7":
  564. sts = "lx";
  565. break; //注销
  566. }
  567. var ele = $("." + WorkNumber).find("i");
  568. if(sts) {
  569. ele.removeClass().addClass(sts);
  570. }
  571. ele.attr("zx_item", State);
  572. if($(".zxtp .g_nums").text() == WorkNumber) {
  573. if(sts) {
  574. $(".zxtp i").removeClass().addClass(sts);
  575. }
  576. UpdateSelState(State, ele.attr("xl_item"))
  577. }
  578. tjcount();
  579. }
  580. //线路状态
  581. function UpdateLineState(WorkNumber, State) {
  582. var sts = "";
  583. switch(State) {
  584. case "0":
  585. sts = "lx";
  586. break; //分机不可用
  587. case "1": if (!(ele.hasClass("hh") || ele.hasClass("ml"))) {//空闲 2018-05-18 zhangshuangnan 新增
  588. sts = "kx";
  589. top.$(".zxzt").removeClass("br").addClass("bl");
  590. top.$(".SayBusy").addClass("active");
  591. top.$(".SayFree").removeClass("active");
  592. top.$(".hwzt").text('空闲');/*2018-05-24 zhangshuangnan 新增 (top.) 解决强拆后状态不准确问题*/
  593. } break;
  594. case "2":
  595. sts = "ml";
  596. break; //摘机等待拨号
  597. case "3":
  598. sts = "ml";
  599. break; //正在拨号
  600. case "4":
  601. sts = "hc";
  602. break; //呼出振铃
  603. case "5":
  604. sts = "zl";
  605. break; //来电振铃
  606. case "6":
  607. sts = "th";
  608. break; //通话中
  609. case "7":
  610. sts = "ml";
  611. break; //播放忙音中
  612. case "8":
  613. sts = "th";
  614. break; //通话保持中
  615. case "9":
  616. break; //话机移除
  617. case "10":
  618. break; //保持/空闲
  619. case "11":
  620. break; //保持/摘机等待拨号
  621. case "12":
  622. break; //保持/正在拨号
  623. case "13":
  624. break; //保持/呼出振铃
  625. case "14":
  626. break; //保持/通话中
  627. }
  628. var ele = $("." + WorkNumber).find("i");
  629. if(sts) {
  630. ele.removeClass().addClass(sts);
  631. }
  632. ele.attr("xl_item", State);
  633. if($(".zxtp .g_nums").text() == WorkNumber) {
  634. if(sts) {
  635. $(".zxtp i").removeClass().addClass(sts);
  636. }
  637. UpdateSelState(ele.attr("zx_item"), State)
  638. }
  639. tjcount();
  640. }
  641. //更新选中坐席的操作 按钮状态
  642. function UpdateSelState(zxState, xlState) {
  643. $(".zxtp b").addClass("dis");
  644. if(zxState == '5' && xlState == '1') {
  645. $(".zxtp .zx").removeClass("dis");
  646. }
  647. if(zxState == '3' && xlState == '6') {
  648. $(".zxtp .jt").removeClass("dis");
  649. $(".zxtp .qca").removeClass("dis");
  650. $(".zxtp .qc").removeClass("dis");
  651. $(".zxtp .lj").removeClass("dis");
  652. }
  653. if(zxState == '2' && xlState == '5') {
  654. $(".zxtp .dj").removeClass("dis");
  655. }
  656. }
  657. // //浏览器窗口大小改变时
  658. // $(window).resize(function() {
  659. // screenWidth = $(window).width();
  660. // screenHeight = $(window).height();
  661. // scrolltop = $(document).scrollTop();
  662. // objLeft = (screenWidth - obj.width())/2 ;
  663. // objTop = (screenHeight - obj.height())/2 + scrolltop;
  664. // obj.css({left: objLeft + 'px', top: objTop + 'px'});
  665. // obj.fadeToggle();
  666. // });
  667. // //浏览器有滚动条时的操作、
  668. // $(window).scroll(function() {
  669. // screenWidth = $(window).width();
  670. // screenHeight = $(window).height();
  671. // scrolltop = $(document).scrollTop();
  672. // objLeft = (screenWidth - obj.width())/2 ;
  673. // objTop = (screenHeight - obj.height())/2 + scrolltop;
  674. // obj.css({left: objLeft + 'px', top: objTop + 'px'});
  675. // obj.fadeToggle();
  676. // });
  677. //# sourceURL=zx.js;
  678. </script>
  679. </body>
  680. </html>