cmClubEacths.js 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  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.orderPortrait){
  152. $('#orderEacthsNone').show();
  153. $('#orderEacths').hide();
  154. $('.eachts-total').hide();
  155. }else{
  156. getOrderEacths(data.orderPortrait)
  157. }
  158. break;
  159. case 1:
  160. if(!data.behavior){
  161. $('#keyWordsEacthsNone').show();
  162. $('#keyWordsEacths').hide();
  163. }else{
  164. setOtherData(type,data)
  165. }
  166. break;
  167. case 2:
  168. if(!data.remarks){
  169. $('#serviceEacthsNone').show();
  170. $('#serviceEacths').hide();
  171. }else{
  172. setOtherData(type,data)
  173. }
  174. break;
  175. case 3:
  176. if(!data.pageType){
  177. $('#visitEacthsNone').show();
  178. $('#visitEacths').hide();
  179. }else{
  180. setOtherData(type,data)
  181. }
  182. break;
  183. }
  184. } else {
  185. console.log('机构订单图表数据异常')
  186. }
  187. }
  188. });
  189. }
  190. // 基于准备好的dom,初始化echarts实例
  191. const getOrderEacths = function (data) {
  192. // 基于准备好的dom,初始化echarts实例
  193. const myChart = echarts.init(document.getElementById('orderEacths'));
  194. const option = {
  195. tooltip: {
  196. trigger: 'item'
  197. },
  198. legend: {
  199. orient: 'vertical',
  200. right: '10%',
  201. top:'20%',
  202. textStyle: {
  203. fontSize: 14,
  204. },
  205. },
  206. color:['#3aa0ff','#36cbcb','#fad337','#4dcb73','#f2637b','#975fe4'],
  207. series: [
  208. {
  209. name: '订单总量',
  210. type: 'pie',
  211. radius: '70%',
  212. center: ['25%', '50%'],
  213. avoidLabelOverlap: false,
  214. emphasis: {
  215. itemStyle: {
  216. shadowBlur: 10,
  217. shadowOffsetX: 0,
  218. shadowColor: 'rgba(0, 0, 0, 0.5)'
  219. }
  220. },
  221. label: {
  222. show: false,
  223. position: 'center'
  224. },
  225. data:data
  226. }
  227. ]
  228. };
  229. // 使用刚指定的配置项和数据显示图表。
  230. myChart.setOption(option);
  231. window.onresize = myChart.resize;//移动适配
  232. };
  233. // 其他三个图表
  234. const setOtherData = function (type,data) {
  235. const dataMap = {
  236. 1:{
  237. id:'keyWordsEacths',
  238. color:'#e15616',
  239. series:{
  240. yAxisData:data.behavior.name,
  241. seriesData:data.behavior.value
  242. },
  243. },
  244. 2:{
  245. id:'serviceEacths',
  246. color:'#36cbcb',
  247. series:{
  248. yAxisData:data.remarks.name,
  249. seriesData:data.remarks.value
  250. },
  251. },
  252. 3:{
  253. id:'visitEacths',
  254. color:'#3aa0ff',
  255. series:{
  256. yAxisData:data.pageType.name,
  257. seriesData:data.pageType.value
  258. },
  259. }
  260. }
  261. getOtherEacths(dataMap[type].id,dataMap[type].series,dataMap[type].color);
  262. }
  263. // 其他三个图表
  264. const getOtherEacths = function (id,data,color) {
  265. // 基于准备好的dom,初始化echarts实例
  266. console.log('id',id)
  267. const myChart = echarts.init(document.getElementById(id));
  268. const option = {
  269. title: {
  270. show:false
  271. },
  272. tooltip: {
  273. trigger: 'axis',
  274. axisPointer: {
  275. type: 'shadow'
  276. }
  277. },
  278. legend: {
  279. show:false,
  280. },
  281. grid: {
  282. left: '3%',
  283. right: '4%',
  284. bottom: '3%',
  285. containLabel: true
  286. },
  287. xAxis: {
  288. type: 'value',
  289. boundaryGap: [0, 0.01]
  290. },
  291. yAxis: {
  292. type: 'category',
  293. data: data.yAxisData
  294. },
  295. series: [
  296. {
  297. type: 'bar',
  298. name: '2023',
  299. data: data.seriesData,
  300. itemStyle:{
  301. color:color,
  302. fontSize: 14,
  303. }
  304. }
  305. ]
  306. };
  307. // 使用刚指定的配置项和数据显示图表。
  308. myChart.setOption(option);
  309. window.onresize = myChart.resize;//移动适配
  310. };