cmClubEacths.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. /**
  2. * Created 机构订单图表 by zjy on 2023/02/10.
  3. */
  4. const getDateStr = function(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 defaultDemand = {
  23. clubID:$('#clubId').val()*1,// 机构id
  24. dateType:0,// 日期类别 0日 1月 2半年 3全年
  25. startTime:'',// 开始时间
  26. endTime:'',// 结束时间
  27. }
  28. // 默认时间
  29. const startDate = getDateStr(new Date(), -365),
  30. endDate = getDateStr(new Date(), 0);
  31. // 初始化客户需求选择时间控件
  32. const getInfoDemandDate = function () {
  33. $('#customerDemandData').dateRangePicker({
  34. language: 'cn',
  35. startDate: startDate,
  36. endDate: endDate,
  37. format: 'YYYY-MM-DD',
  38. showShortcuts: false,
  39. autoClose: isPC,
  40. isNowrap: false,
  41. getValue: function () {
  42. if (defaultParams.startTime && defaultParams.endTime) {
  43. return defaultParams.startTime + ' to ' + defaultParams.endTime;
  44. } else {
  45. return '';
  46. }
  47. },
  48. setValue: function (s, s1, s2) {
  49. defaultParams.startTime = s1;
  50. defaultParams.endTime = s2;
  51. $('#demandStart').val(s1);
  52. $('#demandEnd').val(s2);
  53. if (defaultParams.startTime && defaultParams.endTime) {
  54. $('#customerDemand').find('a').removeClass('active');
  55. getDemandData(0)
  56. }
  57. }
  58. });
  59. }
  60. // 初始化订单选择时间控件
  61. const getInfoOrderDate = function () {
  62. $('#orderDate').dateRangePicker({
  63. language: 'cn',
  64. startDate: startDate,
  65. endDate: endDate,
  66. format: 'YYYY-MM-DD',
  67. showShortcuts: false,
  68. autoClose: isPC,
  69. isNowrap: false,
  70. getValue: function () {
  71. if (defaultParams.startTime && defaultParams.endTime) {
  72. return defaultParams.startTime + ' to ' + defaultParams.endTime;
  73. } else {
  74. return '';
  75. }
  76. },
  77. setValue: function (s, s1, s2) {
  78. defaultParams.startTime = s1;
  79. defaultParams.endTime = s2;
  80. $('#orderTimeStart').val(s1);
  81. $('#orderTimeEnd').val(s2);
  82. if (defaultParams.startTime && defaultParams.endTime) {
  83. $('#orderTabs').find('a').removeClass('active');
  84. getClubEacthsData(0,0)
  85. }
  86. }
  87. });
  88. }
  89. // 初始化关键词选择时间控件
  90. const getInfoKeyWordsDate = function () {
  91. $('#keyWordsDate').dateRangePicker({
  92. language: 'cn',
  93. startDate: startDate,
  94. endDate: endDate,
  95. format: 'YYYY-MM-DD',
  96. showShortcuts: false,
  97. autoClose: isPC,
  98. isNowrap: false,
  99. getValue: function () {
  100. if (defaultParams.startTime && defaultParams.endTime) {
  101. return defaultParams.startTime + ' to ' + defaultParams.endTime;
  102. } else {
  103. return '';
  104. }
  105. },
  106. setValue: function (s, s1, s2) {
  107. defaultParams.startTime = s1;
  108. defaultParams.endTime = s2;
  109. $('#keyWordsTimeStart').val(s1);
  110. $('#keyWordsTimeEnd').val(s2);
  111. if (defaultParams.startTime && defaultParams.endTime) {
  112. $('#keyWordTabs').find('a').removeClass('active');
  113. getClubEacthsData(1,0)
  114. }
  115. }
  116. });
  117. }
  118. // 初始化咨询选择时间控件
  119. const getInfoServiceDate = function () {
  120. $('#serviceDate').dateRangePicker({
  121. language: 'cn',
  122. startDate: startDate,
  123. endDate: endDate,
  124. format: 'YYYY-MM-DD',
  125. showShortcuts: false,
  126. autoClose: isPC,
  127. isNowrap: false,
  128. getValue: function () {
  129. if (defaultParams.startTime && defaultParams.endTime) {
  130. return defaultParams.startTime + ' to ' + defaultParams.endTime;
  131. } else {
  132. return '';
  133. }
  134. },
  135. setValue: function (s, s1, s2) {
  136. defaultParams.startTime = s1;
  137. defaultParams.endTime = s2;
  138. $('#serviceTimeStart').val(s1);
  139. $('#serviceTimeEnd').val(s2);
  140. if (defaultParams.startTime && defaultParams.endTime) {
  141. $('#serviceTabs').find('a').removeClass('active');
  142. getClubEacthsData(2,0)
  143. }
  144. }
  145. });
  146. }
  147. // 初始化访问记录选择时间控件
  148. const getInfoVisitDate = function () {
  149. $('#visitDate').dateRangePicker({
  150. language: 'cn',
  151. startDate: startDate,
  152. endDate: endDate,
  153. format: 'YYYY-MM-DD',
  154. showShortcuts: false,
  155. autoClose: isPC,
  156. isNowrap: false,
  157. getValue: function () {
  158. if (defaultParams.startTime && defaultParams.endTime) {
  159. return defaultParams.startTime + ' to ' + defaultParams.endTime;
  160. } else {
  161. return '';
  162. }
  163. },
  164. setValue: function (s, s1, s2) {
  165. defaultParams.startTime = s1;
  166. defaultParams.endTime = s2;
  167. $('#visitTimeStart').val(s1);
  168. $('#visitTimeEnd').val(s2);
  169. if (defaultParams.startTime && defaultParams.endTime) {
  170. $('#visitTabs').find('a').removeClass('active');
  171. getClubEacthsData(3,0)
  172. }
  173. }
  174. });
  175. }
  176. const getDemandData = function (dateType) {
  177. console.log('客户客户');
  178. console.log('url', $('#demandUrl').val(),);
  179. defaultDemand.dateType = dateType;
  180. $.ajax({
  181. url: $('#demandUrl').val(),
  182. type: "GET",
  183. data: defaultDemand,
  184. contentType : 'application/json;charset=UTF-8',
  185. success: function (data) {
  186. $('#demandStart').val(data.startTime);
  187. $('#demandEnd').val(data.endTime);
  188. if (data.demandList.length > 0) {
  189. $('#demandEnd').val(data.endTime);
  190. $('#demandStart').val(data.startTime);
  191. $('#demand').empty();
  192. data.demandList.forEach((item) => {
  193. console.log(item)
  194. $('#demand').append('<span class="span_tab">'+ item +'</span>')
  195. // $('.span_tab').append(item)
  196. // $('#demand').append(text)
  197. })
  198. } else {
  199. $('#demand').html('<div class="empty">暂无数据</div>')
  200. }
  201. }
  202. })
  203. }
  204. // 数据接口请求
  205. const getClubEacthsData = function (type,dateType) {
  206. defaultParams.type = type;
  207. defaultParams.dateType = dateType;
  208. $.ajax({
  209. url: $('#eachtsAjaxUrl').val(),
  210. type: "GET",
  211. data: defaultParams,
  212. contentType : 'application/json;charset=UTF-8', //contentType很重要
  213. success: function (data) {
  214. if (data.code === 0) {
  215. switch (type) {
  216. case 0:
  217. if(!data.order){
  218. $('#orderEacthsNone').show();
  219. $('#orderEacths').hide();
  220. $('.eachts-total').hide();
  221. $('#orderTimeEnd').val(data.portrait.endTime);
  222. $('#orderTimeStart').val(data.portrait.startTime);
  223. $('#orderScopeNum').text('¥0 (0个)');
  224. }else{
  225. setOrderData(type,data)
  226. }
  227. break;
  228. case 1:
  229. if(!data.behavior){
  230. $('#keyWordsEacthsNone').show();
  231. $('#keyWordsEacths').hide();
  232. $('#keyWordsTimeEnd').val(data.portrait.endTime);
  233. $('#keyWordsTimeStart').val(data.portrait.startTime);
  234. $('#keyWordsScopeNum').text(`0(个)`);
  235. }else{
  236. setOtherData(type,data)
  237. }
  238. break;
  239. case 2:
  240. if(!data.remarks){
  241. $('#serviceEacthsNone').show();
  242. $('#serviceEacths').hide();
  243. $('#serviceTimeEnd').val(data.portrait.endTime);
  244. $('#serviceTimeStart').val(data.portrait.startTime);
  245. $('#remarksScopeNum').text(`0(个)`);
  246. }else{
  247. setOtherData(type,data)
  248. }
  249. break;
  250. case 3:
  251. if(!data.pageType){
  252. $('#visitEacthsNone').show();
  253. $('#visitEacths').hide();
  254. $('#visitTimeEnd').val(data.portrait.endTime);
  255. $('#visitTimeStart').val(data.portrait.startTime);
  256. $('#visitNum').text(`0(个)`);
  257. }else{
  258. setOtherData(type,data)
  259. }
  260. break;
  261. }
  262. defaultParams.startTime = '';
  263. defaultParams.endTime = '';
  264. } else {
  265. console.log('机构订单图表数据异常')
  266. }
  267. }
  268. });
  269. }
  270. // 设置订单数据
  271. const setOrderData = function (type,data) {
  272. const orderMap = {
  273. 0:{ // 订单
  274. fn:function () {
  275. $('.eachts-total').show();
  276. $('#orderEacths').show();
  277. $('#orderEacthsNone').hide();
  278. $('#orderTimeEnd').val(data.order.endTime);
  279. $('#orderTimeStart').val(data.order.startTime);
  280. $('#orderTotalNum').text(`${data.order.orderTotalNum}个`);
  281. $('#orderScopeNum').text(`¥${data.portrait.orderScopeTotalFee} (${data.portrait.orderScopeNum}个)`);
  282. },
  283. id:'orderEacths',
  284. series:{
  285. name:'订单总量',
  286. color:['#3aa0ff','#36cbcb','#fad337','#4dcb73','#f2637b','#975fe4'],
  287. seriesData:data.order.orderList
  288. },
  289. }
  290. }
  291. getOrderEacths(orderMap[type].fn,orderMap[type].id,orderMap[type].series);
  292. }
  293. // 基于准备好的dom,初始化echarts实例
  294. const getOrderEacths = function (handleFn,id,data) {
  295. // 基于准备好的dom,初始化echarts实例
  296. handleFn();
  297. const myChart = echarts.init(document.getElementById(id));
  298. const option = {
  299. tooltip: {
  300. trigger: 'item'
  301. },
  302. legend: {
  303. orient: 'vertical',
  304. right: '2%',
  305. top:'20%',
  306. textStyle: {
  307. fontSize: 14,
  308. color:'#FFFFFF'
  309. },
  310. },
  311. color:data.color,
  312. series: [
  313. {
  314. name: data.name,
  315. type: 'pie',
  316. radius: '55%',
  317. center: ['25%', '50%'],
  318. avoidLabelOverlap: false,
  319. emphasis: {
  320. itemStyle: {
  321. shadowBlur: 10,
  322. shadowOffsetX: 0,
  323. shadowColor: 'rgba(0, 0, 0, 0.5)'
  324. }
  325. },
  326. label: {
  327. show: false,
  328. position: 'center'
  329. },
  330. data:data.seriesData
  331. }
  332. ]
  333. };
  334. // 使用刚指定的配置项和数据显示图表。
  335. myChart.setOption(option);
  336. window.onresize = myChart.resize;//移动适配
  337. };
  338. // 其他三个图表
  339. const setOtherData = function (type,data) {
  340. const dataMap = {
  341. 1:{// 关键词
  342. fn:function () {
  343. $('#keyWordsEacths').show();
  344. $('#keyWordsEacthsNone').hide();
  345. $('#keyWordsTimeEnd').val(data.behavior.endTime);
  346. $('#keyWordsTimeStart').val(data.behavior.startTime);
  347. $('#keyWordsScopeNum').text(`${data.portrait.keyWordsScopeNum}(个)`);
  348. },
  349. id:'keyWordsEacths',
  350. series:{
  351. name:'搜索关键词',
  352. yAxisData:data.behavior.name,
  353. seriesData:data.behavior.value,
  354. color:new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
  355. offset: 0,
  356. color: "#B0C4DE" // 0% 处的颜色
  357. }, {
  358. offset: 0.6,
  359. color: "#9370DB" // 60% 处的颜色
  360. }, {
  361. offset: 1,
  362. color: "#7B68EE" // 100% 处的颜色
  363. }], false)
  364. },
  365. },
  366. 2:{// 咨询记录
  367. fn:function () {
  368. $('#serviceEacths').show();
  369. $('#serviceEacthsNone').hide();
  370. $('#serviceTimeEnd').val(data.remarks.endTime);
  371. $('#serviceTimeStart').val(data.remarks.startTime);
  372. $('#remarksScopeNum').text(`${data.portrait.remarksScopeNum}(个)`);
  373. },
  374. id:'serviceEacths',
  375. series:{
  376. name:'咨询记录',
  377. yAxisData:data.remarks.name,
  378. seriesData:data.remarks.value,
  379. color:new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
  380. offset: 0,
  381. color: "#AFEEEE" // 0% 处的颜色
  382. }, {
  383. offset: 0.6,
  384. color: "#48D1CC" // 60% 处的颜色
  385. }, {
  386. offset: 1,
  387. color: "#20B2AA" // 100% 处的颜色
  388. }], false)
  389. },
  390. },
  391. 3:{// 访问记录
  392. fn:function () {
  393. $('#visitEacths').show();
  394. $('#visitEacthsNone').hide();
  395. $('#visitTimeEnd').val(data.pageType.endTime);
  396. $('#visitTimeStart').val(data.pageType.startTime);
  397. $('#visitNum').text(`${data.portrait.visitNum}(个)`);
  398. },
  399. id:'visitEacths',
  400. series:{
  401. name:'访问记录',
  402. yAxisData:data.pageType.name,
  403. seriesData:data.pageType.value,
  404. color:new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
  405. offset: 0,
  406. color: "#B0C4DE" // 0% 处的颜色
  407. }, {
  408. offset: 0.6,
  409. color: "#87CEFA" // 60% 处的颜色
  410. }, {
  411. offset: 1,
  412. color: "#1E90FF" // 100% 处的颜色
  413. }], false)
  414. },
  415. }
  416. }
  417. getOtherEacths(dataMap[type].fn,dataMap[type].id,dataMap[type].series);
  418. }
  419. // 其他三个图表
  420. const getOtherEacths = function (handleFn,id,data) {
  421. // 基于准备好的dom,初始化echarts实例
  422. handleFn();
  423. const myChart = echarts.init(document.getElementById(id));
  424. const option = {
  425. title: {
  426. show:false
  427. },
  428. tooltip: {
  429. trigger: 'axis',
  430. axisPointer: {
  431. type: 'shadow'
  432. }
  433. },
  434. legend: {
  435. show:false,
  436. },
  437. grid: {
  438. left: '3%',
  439. right: '4%',
  440. bottom: '3%',
  441. containLabel: true
  442. },
  443. xAxis: {
  444. type: 'value',
  445. splitLine:{
  446. show: true,
  447. lineStyle:{
  448. opacity:0.2,
  449. color:'#DCDCDC',
  450. }
  451. },
  452. boundaryGap: [0, 0.01],
  453. axisLabel:{
  454. show: true,
  455. textStyle:{
  456. color: '#DCDCDC', //更改坐标轴文字颜色
  457. fontSize : 12, //更改坐标轴文字大小
  458. }
  459. },
  460. axisTick: {//轴网格,在xAxis或yAxis根下
  461. lineStyle:{
  462. width:1,
  463. color:'#DCDCDC',
  464. type:'solid'
  465. }
  466. }
  467. },
  468. yAxis: {
  469. type: 'category',
  470. splitLine:{
  471. show: false,
  472. },
  473. axisLabel:{
  474. show: true,
  475. textStyle:{
  476. color: '#FFFFFF', //更改坐标轴文字颜色
  477. fontSize : 12 //更改坐标轴文字大小
  478. }
  479. },
  480. axisTick: {//轴网格,在xAxis或yAxis根下
  481. show:false,
  482. lineStyle:{
  483. width:1,
  484. color:'#DCDCDC',
  485. type:'solid'
  486. }
  487. },
  488. data: data.yAxisData
  489. },
  490. series: [
  491. {
  492. type: 'bar',
  493. name: data.name,
  494. data: data.seriesData,
  495. itemStyle:{
  496. fontSize: 14,
  497. color:data.color
  498. }
  499. }
  500. ]
  501. };
  502. // 使用刚指定的配置项和数据显示图表。
  503. myChart.setOption(option);
  504. window.onresize = myChart.resize;//移动适配
  505. };