Sin descripción

talktime.js 7.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. var myChart;
  2. var tabIndex = 0;
  3. $(document).ready(function() {
  4. layui.use('laydate', function() {
  5. var laydate = layui.laydate;
  6. //日期
  7. laydate.render({
  8. elem: '#sc_times',
  9. range: "~",
  10. theme: '#249fea',
  11. });
  12. });
  13. //tab切换
  14. $('.hu-tab li').click(function() {
  15. $(this).addClass('active')
  16. .siblings().removeClass('active');
  17. tabIndex = $(this).index();
  18. $('.hu-content >div').eq(tabIndex).show()
  19. .siblings().hide();
  20. });
  21. //柱形图
  22. //基于准备好的dom,初始化echarts实例
  23. myChart = echarts.init(document.getElementById('huData'));
  24. var option = {
  25. tooltip: {
  26. trigger: 'axis',
  27. },
  28. legend: {
  29. data: [],
  30. bottom: 40,
  31. padding: 5,
  32. },
  33. grid: {
  34. bottom: 180
  35. },
  36. dataZoom: [{ // 这个dataZoom组件,默认控制x轴。
  37. type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件
  38. xAxisIndex: 0,
  39. start: 0, // 左边在 0% 的位置。
  40. end: 100, // 右边在 100% 的位置。
  41. bottom: 100,
  42. },
  43. ],
  44. xAxis: [{
  45. type: 'category',
  46. data: [],
  47. axisPointer: {
  48. type: ''
  49. },
  50. axisLabel: {
  51. interval: 0,
  52. rotate: 40
  53. }
  54. }],
  55. yAxis: [{
  56. type: 'value',
  57. name: '通话次数(次)',
  58. nameLocation: 'end',
  59. axisLabel: {
  60. formatter: '{value} '
  61. }
  62. },
  63. {
  64. type: 'value',
  65. name: '通话时长(s)',
  66. nameLocation: 'end',
  67. axisLabel: {
  68. formatter: '{value} '
  69. }
  70. }
  71. ],
  72. series: [{
  73. type: 'bar',
  74. name: '呼入次数',
  75. data: []
  76. }, {
  77. type: 'line',
  78. name: '呼入时长',
  79. yAxisIndex: 1,
  80. data: []
  81. },
  82. {
  83. type: 'bar',
  84. name: '呼出次数',
  85. data: []
  86. }, {
  87. type: 'line',
  88. name: '呼出时长',
  89. yAxisIndex: 1,
  90. data: []
  91. }, {
  92. type: 'bar',
  93. name: '呼出未接通次数',
  94. data: []
  95. }, {
  96. type: 'line',
  97. name: '振铃时长',
  98. yAxisIndex: 1,
  99. data: []
  100. },
  101. {
  102. type: 'line',
  103. name: '通话总时长',
  104. yAxisIndex: 1,
  105. data: []
  106. },
  107. {
  108. type: 'line',
  109. name: '平均通话时长',
  110. yAxisIndex: 1,
  111. data: []
  112. }
  113. ],
  114. //color: ['#1ab394', '#fbbe5b', '#88ebc4', '#fa957f', '#cddc39', '#ff5722', '#e91e63', '#673ab7', '#61a0a8', '#bda29a']
  115. color: ['#74dbc6', '#d9c228', '#a1ef9f', '#66d1e8', '#8565e3', '#f8a6ad', '#e45764', '#bbb1f3', '#32a1e8', '#32da62']
  116. };
  117. // 使用刚指定的配置项和数据显示图表。
  118. myChart.setOption(option);
  119. //搜索事件
  120. $("#sc_btns").click(function() {
  121. getDataList();
  122. });
  123. getDataList();
  124. })
  125. function getDataList() {
  126. var colsArr = [];
  127. var dataArr = [];
  128. var keys = [];
  129. var loadindex;
  130. $.ajax({
  131. type: 'get',
  132. url: huayi.config.callcenter_url + "callcenterapi/api/talktime/getcolumnlist",
  133. async: true,
  134. dataType: 'json',
  135. success:function(data){
  136. if(data.state.toLowerCase() == "success") {
  137. var cons = data.data;
  138. var legends=[];
  139. if(cons && cons.length > 0) {
  140. var newArr = [];
  141. for (var j=0;j<cons.length;j++){
  142. keys.push(cons[j]);
  143. if(j>=1){
  144. legends.push(cons[j])
  145. }
  146. }
  147. myChart.setOption({
  148. legend: {
  149. data: legends,
  150. },
  151. });
  152. newArr.push({
  153. field: keys[0],
  154. title: keys[0],
  155. align: 'center',
  156. fixed: true,
  157. //sort: true,
  158. width: 150,
  159. });
  160. for(var i = 0, colNL = keys.length; i < colNL; i++) {
  161. newArr.push({
  162. field: keys[i],
  163. title: keys[i],
  164. align: 'center',
  165. //fixed: true,
  166. //sort: true,
  167. //width: 150,
  168. });
  169. }
  170. colsArr.push(newArr);
  171. }
  172. }
  173. }
  174. });
  175. $.ajax({
  176. type: 'get',
  177. url: huayi.config.callcenter_url + "callcenterapi/api/talktime/getdatalist",
  178. async: true,
  179. dataType: 'json',
  180. beforeSend: function() {
  181. loadindex = layer.load()
  182. },
  183. data: {
  184. stime: $('#sc_times').val() && $('#sc_times').val().split(' ~ ')[0],
  185. endtime: $('#sc_times').val() && $('#sc_times').val().split(' ~ ')[1],
  186. },
  187. success: function(data) {
  188. if(data.state.toLowerCase() == "success") {
  189. var result = data.data;
  190. if(result && result.length > 0) {
  191. dataArr = result;
  192. layui.use('table', function() {
  193. var table = layui.table;
  194. //方法级渲染
  195. table.render({
  196. elem: '#t_callTotal',
  197. skin: 'row', //line (行边框风格) row (列边框风格) nob (无边框风格)
  198. even: true, //开启隔行背景
  199. size: 'lg', //sm,lg尺寸的表格
  200. cellMinWidth: 100,
  201. page: true,
  202. cols: colsArr,
  203. data: dataArr,
  204. height: 'full-150'
  205. });
  206. });
  207. myChart.setOption({
  208. xAxis: {
  209. data: (function() {
  210. var res = [];
  211. for(var i = 0; i < result.length; i++) {
  212. res.push(result[i].坐席名称);
  213. }
  214. return res;
  215. })(),
  216. },
  217. series: (function() {
  218. var formatterArr = function(tarr, prames) {
  219. var newArrs = [];
  220. $.each(tarr, function(i, v) {
  221. $.each(v, function(j, k) {
  222. if(j == prames) {
  223. newArrs.push(k);
  224. }
  225. });
  226. });
  227. return {
  228. name: prames,
  229. data: newArrs
  230. };
  231. }
  232. console.log( [formatterArr(result, "呼入次数"), formatterArr(result, "呼入时长"),
  233. formatterArr(result, "呼出次数"), formatterArr(result, "呼出时长"), formatterArr(result, "呼出未接通次数"),
  234. formatterArr(result, "振铃时长"), formatterArr(result, "通话总时长"),
  235. formatterArr(result, "平均通话时长")
  236. ])
  237. return [formatterArr(result, "呼入次数"), formatterArr(result, "呼入时长"),
  238. formatterArr(result, "呼出次数"), formatterArr(result, "呼出时长"), formatterArr(result, "呼出未接通次数"),
  239. formatterArr(result, "振铃时长"), formatterArr(result, "通话总时长"),
  240. formatterArr(result, "平均通话时长")
  241. ]
  242. })(),
  243. });
  244. }
  245. }
  246. },
  247. }).then(function() {
  248. layer.close(loadindex);
  249. });
  250. }
  251. function getNowYear() {
  252. //获取当前年份
  253. var myDate = new Date();
  254. return myDate.getFullYear(); //获取完整的年份(4位,1970-????)
  255. }
  256. //导出
  257. function dcexcel(obj) {
  258. var beginyear=$('#sc_times').val() && $('#sc_times').val().split(' ~ ')[0];
  259. var endyear=$('#sc_times').val() && $('#sc_times').val().split(' ~ ')[1];
  260. var url=huayi.config.callcenter_url +"callcenterapi/api/talktime/exportexcel?stime="+ beginyear +"&endtime="+endyear ;
  261. obj.href = url;
  262. }