action.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. $('.form_date').datetimepicker({
  2. language: 'zh-CN',
  3. weekStart: 1,
  4. todayBtn: 1,
  5. autoclose: 1,
  6. todayHighlight: 1,
  7. startView: 2,
  8. minView: 2,
  9. forceParse: 0
  10. });
  11. $('#tab_players').bootstrapTable({
  12. locale: 'zh-CN', //中文支持
  13. singleSelect: true,
  14. columns: [{
  15. checkbox: false
  16. }],
  17. pagination: true, //是否开启分页(*)
  18. pageNumber: 1, //初始化加载第一页,默认第一页
  19. pageSize: 20, //每页的记录行数(*)
  20. pageList: [2, 3, 4], //可供选择的每页的行数(*)
  21. sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
  22. queryParamsType: ""
  23. });
  24. $('#tab_one').bootstrapTable({
  25. locale: 'zh-CN', //中文支持
  26. singleSelect: true,
  27. columns: [{
  28. checkbox: false
  29. }],
  30. pagination: true, //是否开启分页(*)
  31. pageNumber: 1, //初始化加载第一页,默认第一页
  32. pageSize: 20, //每页的记录行数(*)
  33. pageList: [2, 3, 4], //可供选择的每页的行数(*)
  34. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  35. queryParamsType: ""
  36. });
  37. Date.prototype.format = function(format) {
  38. var date = {
  39. "M+": this.getMonth() + 1,
  40. "d+": this.getDate(),
  41. "h+": this.getHours(),
  42. "m+": this.getMinutes(),
  43. "s+": this.getSeconds(),
  44. "q+": Math.floor((this.getMonth() + 3) / 3),
  45. "S+": this.getMilliseconds()
  46. };
  47. if (/(y+)/i.test(format)) {
  48. format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
  49. }
  50. for (var k in date) {
  51. if (new RegExp("(" + k + ")").test(format)) {
  52. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ?
  53. date[k] : ("00" + date[k]).substr(("" + date[k]).length));
  54. }
  55. }
  56. return format;
  57. }
  58. $('#tab_players').on('click-row.bs.table', function(e, row, element) {
  59. $('.success').removeClass('success'); //去除之前选中的行的,选中样式
  60. $(element).addClass('success'); //添加当前选中的 success样式用于区别
  61. var date = new Date(row.lastlogin.split(" ")[0]);
  62. $('#action-date1-text').val(date.format("yyyy-MM-dd"));
  63. date.setDate(date.getDate() - 3);
  64. $('#action-date-text').val(date.format("yyyy-MM-dd"));
  65. });
  66. function getSelectedRow() {
  67. var index = $('#tab_players').find('tr.success').data('index'); //获得选中的行
  68. return $('#tab_players').bootstrapTable('getData')[index]; //返回选中行所有数据
  69. }
  70. function ok_click() {
  71. var date = $('#date-text').val();
  72. var date1 = $('#date-text1').val();
  73. var isnew = $('#isnew').prop('checked') ? 1 : 0;
  74. var isold = $('#isold').prop('checked') ? 1 : 0;
  75. var islost = $('#islost').prop('checked') ? 1 : 0;
  76. if (date == "" || date1 == "") {
  77. alert("请选择起始日期或终止日期!");
  78. return;
  79. }
  80. if (date1 < date) {
  81. alert("终止日期不得小于起始日期!");
  82. return;
  83. }
  84. if (moment(date1).diff(moment(date), 'days') > 21) {
  85. alert("时间间隔不要超过21天");
  86. return;
  87. }
  88. var url = getProviderUrl("action");
  89. url += "?date=" + date;
  90. url += "&date1=" + date1;
  91. url += "&isnew=" + isnew;
  92. url += "&isold=" + isold;
  93. url += "&islost=" + islost;
  94. $('#tab_players').bootstrapTable('refresh', {
  95. url: url
  96. });
  97. }
  98. function c32_ok_click() {
  99. var nameTxt = $('#name-text').val();
  100. var oidTxt = $('#oid-text').val();
  101. if (nameTxt == "" && oidTxt == "") {
  102. alert("请填写玩家名称 或 oid!");
  103. return;
  104. }
  105. var url = getProviderUrl("actionc32");
  106. url += "?name=" + nameTxt;
  107. url += "&oid=" + oidTxt;
  108. $('#tab_players').bootstrapTable('refresh', {
  109. url: url
  110. });
  111. }
  112. function one_click() {
  113. var data = getSelectedRow();
  114. if (!data) {
  115. alert("请先选中玩家id");
  116. return;
  117. }
  118. var date = $('#action-date-text').val();
  119. var date1 = $('#action-date1-text').val();
  120. if (date == "" || date1 == "") {
  121. alert("请选择起始日期或终止日期!");
  122. return;
  123. }
  124. if (date1 < date) {
  125. alert("终止日期不得小于起始日期!");
  126. return;
  127. }
  128. if (moment(date1).diff(moment(date), 'days') > 7) {
  129. alert("时间间隔不要超过7天");
  130. return;
  131. }
  132. var url = getProviderUrl("actionone");
  133. url += "?date=" + date;
  134. url += "&date1=" + date1;
  135. url += "&oid=" + data.userID;
  136. $('#tab_one').bootstrapTable('refresh', {
  137. url: url
  138. });
  139. GetContinued(data.userID);
  140. }
  141. function ts2time(ts) {
  142. function addZero(m) {
  143. return m < 10 ? '0' + m : m;
  144. }
  145. if (ts) {
  146. ts *= 1000;
  147. var time = new Date(ts);
  148. var y = time.getFullYear();
  149. var M = time.getMonth() + 1;
  150. var d = time.getDate();
  151. var h = time.getHours();
  152. var m = time.getMinutes();
  153. var s = time.getSeconds();
  154. return addZero(h) + ':' + addZero(m) + ':' + addZero(s);
  155. } else {
  156. return '';
  157. }
  158. }
  159. function GetContinued(uid) {
  160. var zoneid = 1;
  161. var date = moment($('#action-date-text').val());
  162. var date1 = moment($('#action-date1-text').val());
  163. // var uid = $("#i-uid").val(); // "D51D63CA040982E406BDE9898AD757AE";
  164. var ts = [];
  165. for (i = 0; i < date1.diff(date, 'days'); i++) {
  166. ts.push(date.add(i, 'day').format('YYYYMMDD'))
  167. }
  168. // moment($("#i-date").val()).format('YYYYMMDD'); //"20201119";
  169. var data = {
  170. zoneid: zoneid,
  171. uid: uid,
  172. ts: ts
  173. };
  174. post(
  175. getProviderUrl("GameContinuedTsMulti"), {
  176. date: data
  177. },
  178. function(ret) {
  179. // $("canvas#myChart").remove();
  180. $("div#charts_wrap").empty();
  181. h = Math.round((100 / Object.keys(ret).length));
  182. for (var date in ret) {
  183. id = "myChart" + date;
  184. $("div#charts_wrap").append('<div style="width=100%;height=' + h + '%"> <canvas id="' + id +
  185. '" class="animated fadeIn;" ></canvas></div>');
  186. ctx = $("#" + id);
  187. lbls = [];
  188. ds = [];
  189. for (var i in ret[date]) {
  190. info = ret[date][i];
  191. l = ts2time(info.startTs) + "-" + ts2time(info.endTs);
  192. lbls.push(l);
  193. ds.push(Math.floor(info.durationTs / 60));
  194. }
  195. chat = new Chart(ctx, {
  196. type: 'bar',
  197. data: {
  198. labels: lbls,
  199. datasets: [{
  200. label: "持续时长(分钟)",
  201. data: ds
  202. }]
  203. },
  204. options: {}
  205. });
  206. }
  207. }, 'json');
  208. }