cmClubEacths.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. /**
  2. * Created 机构订单图表 by zjy on 2023/02/10.
  3. */
  4. function getDateStr(dd, addCount) {
  5. dd.setDate(dd.getDate() + addCount);//获取addCount天后的日期
  6. var y = dd.getFullYear();
  7. var m = (dd.getMonth() + 1) < 10 ? "0" + (dd.getMonth() + 1) : (dd.getMonth() + 1);//获取当前月份的日期,不足10补0
  8. var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
  9. return y + "/" + m + "/" + d;
  10. }
  11. // PC
  12. const isPC = ($(window).width() > 768);
  13. //默认参数
  14. const defaultParams = {
  15. clubID:$('#clubId').val()*1,// 机构id
  16. dateType:0,// 日期类别 0日 1月 2半年 3全年
  17. startTime:'',// 开始时间
  18. endTime:'',// 结束时间
  19. type:0// 统计类别 0订单 1搜索关键词 2咨询记录 3访问记录 4初始状态
  20. }
  21. // 默认时间
  22. const startDate = getDateStr(new Date(), -365),
  23. endDate = getDateStr(new Date(), 0);
  24. // 初始化订单选择时间控件
  25. const getInfoOrderDate = function () {
  26. $('#orderDate').dateRangePicker({
  27. language: 'cn',
  28. startDate: startDate,
  29. endDate: endDate,
  30. format: 'YYYY-MM-DD',
  31. showShortcuts: false,
  32. autoClose: isPC,
  33. isNowrap: false,
  34. getValue: function () {
  35. if (defaultParams.startTime && defaultParams.endTime) {
  36. return defaultParams.startTime + ' to ' + defaultParams.endTime;
  37. } else {
  38. return '';
  39. }
  40. },
  41. setValue: function (s, s1, s2) {
  42. defaultParams.startTime = s1;
  43. defaultParams.endTime = s2;
  44. $('#orderTimeStart').val(s1);
  45. $('#orderTimeEnd').val(s2);
  46. if (defaultParams.startTime && defaultParams.endTime) {
  47. getClubEacthsData(0,0)
  48. }
  49. }
  50. });
  51. }
  52. // 初始化关键词选择时间控件
  53. const getInfoKeyWordsDate = function () {
  54. $('#keyWordsDate').dateRangePicker({
  55. language: 'cn',
  56. startDate: startDate,
  57. endDate: endDate,
  58. format: 'YYYY-MM-DD',
  59. showShortcuts: false,
  60. autoClose: isPC,
  61. isNowrap: false,
  62. getValue: function () {
  63. if (defaultParams.startTime && defaultParams.endTime) {
  64. return defaultParams.startTime + ' to ' + defaultParams.endTime;
  65. } else {
  66. return '';
  67. }
  68. },
  69. setValue: function (s, s1, s2) {
  70. defaultParams.startTime = s1;
  71. defaultParams.endTime = s2;
  72. $('#keyWordsTimeStart').val(s1);
  73. $('#keyWordsTimeEnd').val(s2);
  74. if (defaultParams.startTime && defaultParams.endTime) {
  75. getClubEacthsData(1,0)
  76. }
  77. }
  78. });
  79. }
  80. // 初始化咨询选择时间控件
  81. const getInfoServiceDate = function () {
  82. $('#serviceDate').dateRangePicker({
  83. language: 'cn',
  84. startDate: startDate,
  85. endDate: endDate,
  86. format: 'YYYY-MM-DD',
  87. showShortcuts: false,
  88. autoClose: isPC,
  89. isNowrap: false,
  90. getValue: function () {
  91. if (defaultParams.startTime && defaultParams.endTime) {
  92. return defaultParams.startTime + ' to ' + defaultParams.endTime;
  93. } else {
  94. return '';
  95. }
  96. },
  97. setValue: function (s, s1, s2) {
  98. defaultParams.startTime = s1;
  99. defaultParams.endTime = s2;
  100. $('#serviceTimeStart').val(s1);
  101. $('#serviceTimeEnd').val(s2);
  102. if (defaultParams.startTime && defaultParams.endTime) {
  103. getClubEacthsData(2,0)
  104. }
  105. }
  106. });
  107. }
  108. // 初始化访问记录选择时间控件
  109. const getInfoVisitDate = function () {
  110. $('#visitDate').dateRangePicker({
  111. language: 'cn',
  112. startDate: startDate,
  113. endDate: endDate,
  114. format: 'YYYY-MM-DD',
  115. showShortcuts: false,
  116. autoClose: isPC,
  117. isNowrap: false,
  118. getValue: function () {
  119. if (defaultParams.startTime && defaultParams.endTime) {
  120. return defaultParams.startTime + ' to ' + defaultParams.endTime;
  121. } else {
  122. return '';
  123. }
  124. },
  125. setValue: function (s, s1, s2) {
  126. defaultParams.startTime = s1;
  127. defaultParams.endTime = s2;
  128. $('#visitTimeStart').val(s1);
  129. $('#visitTimeEnd').val(s2);
  130. if (defaultParams.startTime && defaultParams.endTime) {
  131. getClubEacthsData(3,0)
  132. }
  133. }
  134. });
  135. }
  136. // 数据接口请求
  137. const getClubEacthsData = function (type,dateType) {
  138. defaultParams.type = type;
  139. defaultParams.dateType = dateType;
  140. console.log('数据接口请求参数',defaultParams)
  141. $.ajax({
  142. url: $('#eachtsAjaxUrl').val(),
  143. type: "GET",
  144. data: defaultParams,
  145. contentType : 'application/json;charset=UTF-8', //contentType很重要
  146. success: function (data) {
  147. console.log('res',data)
  148. if (data.code === 0) {
  149. switch (type) {
  150. case 0:
  151. if(!data.order){
  152. $('#orderEacthsNone').show();
  153. $('#orderEacths').hide();
  154. $('.eachts-total').hide();
  155. }else{
  156. getOrderEacths(data.order.orderList);
  157. $('#orderTotalNum').text(`${data.order.orderTotalNum}个`);
  158. }
  159. break;
  160. case 1:
  161. if(!data.behavior){
  162. $('#keyWordsEacthsNone').show();
  163. $('#keyWordsEacths').hide();
  164. }else{
  165. setOtherData(type,data)
  166. }
  167. break;
  168. case 2:
  169. if(!data.remarks){
  170. $('#serviceEacthsNone').show();
  171. $('#serviceEacths').hide();
  172. }else{
  173. setOtherData(type,data)
  174. }
  175. break;
  176. case 3:
  177. if(!data.pageType){
  178. $('#visitEacthsNone').show();
  179. $('#visitEacths').hide();
  180. }else{
  181. setOtherData(type,data)
  182. }
  183. break;
  184. }
  185. } else {
  186. console.log('机构订单图表数据异常')
  187. }
  188. }
  189. });
  190. }
  191. // 基于准备好的dom,初始化echarts实例
  192. const getOrderEacths = function (data) {
  193. // 基于准备好的dom,初始化echarts实例
  194. const myChart = echarts.init(document.getElementById('orderEacths'));
  195. const option = {
  196. tooltip: {
  197. trigger: 'item'
  198. },
  199. legend: {
  200. orient: 'vertical',
  201. right: '10%',
  202. top:'20%',
  203. textStyle: {
  204. fontSize: 14,
  205. },
  206. },
  207. color:['#3aa0ff','#36cbcb','#fad337','#4dcb73','#f2637b','#975fe4'],
  208. series: [
  209. {
  210. name: '订单总量',
  211. type: 'pie',
  212. radius: '70%',
  213. center: ['25%', '50%'],
  214. avoidLabelOverlap: false,
  215. emphasis: {
  216. itemStyle: {
  217. shadowBlur: 10,
  218. shadowOffsetX: 0,
  219. shadowColor: 'rgba(0, 0, 0, 0.5)'
  220. }
  221. },
  222. label: {
  223. show: false,
  224. position: 'center'
  225. },
  226. data:data
  227. }
  228. ]
  229. };
  230. // 使用刚指定的配置项和数据显示图表。
  231. myChart.setOption(option);
  232. window.onresize = myChart.resize;//移动适配
  233. };
  234. // 其他三个图表
  235. const setOtherData = function (type,data) {
  236. const dataMap = {
  237. 1:{
  238. id:'keyWordsEacths',
  239. color:'#e15616',
  240. series:{
  241. yAxisData:data.behavior.name,
  242. seriesData:data.behavior.value
  243. },
  244. },
  245. 2:{
  246. id:'serviceEacths',
  247. color:'#36cbcb',
  248. series:{
  249. yAxisData:data.remarks.name,
  250. seriesData:data.remarks.value
  251. },
  252. },
  253. 3:{
  254. id:'visitEacths',
  255. color:'#3aa0ff',
  256. series:{
  257. yAxisData:data.pageType.name,
  258. seriesData:data.pageType.value
  259. },
  260. }
  261. }
  262. getOtherEacths(dataMap[type].id,dataMap[type].series,dataMap[type].color);
  263. }
  264. // 其他三个图表
  265. const getOtherEacths = function (id,data,color) {
  266. // 基于准备好的dom,初始化echarts实例
  267. console.log('id',id)
  268. const myChart = echarts.init(document.getElementById(id));
  269. const option = {
  270. title: {
  271. show:false
  272. },
  273. tooltip: {
  274. trigger: 'axis',
  275. axisPointer: {
  276. type: 'shadow'
  277. }
  278. },
  279. legend: {
  280. show:false,
  281. },
  282. grid: {
  283. left: '3%',
  284. right: '4%',
  285. bottom: '3%',
  286. containLabel: true
  287. },
  288. xAxis: {
  289. type: 'value',
  290. boundaryGap: [0, 0.01]
  291. },
  292. yAxis: {
  293. type: 'category',
  294. data: data.yAxisData
  295. },
  296. series: [
  297. {
  298. type: 'bar',
  299. name: '2023',
  300. data: data.seriesData,
  301. itemStyle:{
  302. color:color,
  303. fontSize: 14,
  304. }
  305. }
  306. ]
  307. };
  308. // 使用刚指定的配置项和数据显示图表。
  309. myChart.setOption(option);
  310. window.onresize = myChart.resize;//移动适配
  311. };