monthlyCategory.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516
  1. $(function () {
  2. var data = {
  3. "echatX": [
  4. "2019-07-02",
  5. "2019-07-03",
  6. "2019-07-04",
  7. "2019-07-05",
  8. "2019-07-06",
  9. "2019-07-07",
  10. "2019-07-08",
  11. "2019-07-09",
  12. "2019-07-10",
  13. "2019-07-11",
  14. "2019-07-12",
  15. "2019-07-13",
  16. "2019-07-14",
  17. "2019-07-15"
  18. ],
  19. "echatY": [
  20. 501,210,123,333,445,157,151,369,101,101,350,435,153,100
  21. ],
  22. "echatY2": [
  23. 80,40,13,36,57,77,41,39,61,31,60,73,33,50
  24. ],
  25. "echatY3": [
  26. 5091,2210,1233,3133,4415,1517,1511,3619,1101,1011,3510,4315,1513,1100
  27. ],
  28. "echatY4": [
  29. 501,210,123,333,445,157,151,369,101,101,350,435,153,100
  30. ],
  31. "peopleTotal":15,"peopleOnline":4,"peopleOutline":12,"ranges":[]
  32. };
  33. dFun(data.echatX, data.echatY, data.echatY2,data.echatY3,data.echatY4);
  34. });
  35. var myChart;
  36. // 基于准备好的dom,初始化echarts实例
  37. var dChart = echarts.init(document.getElementById('main3'));
  38. // 指定图表的配置项和数据
  39. // 品牌类型,月份数量,月份数量
  40. function dFun(dateList, totalNumberList, totalSalesList,taotalCustomersList,avgBasketSaleList) {
  41. dChart.setOption({
  42. // title: {
  43. // left: 'left',
  44. // text: '概率',
  45. // show: false
  46. // },
  47. tooltip: {
  48. trigger: 'axis',
  49. // formatter: '{a}:{c}',
  50. axisPointer: {
  51. type: 'shadow',
  52. crossStyle: {
  53. color: '#999'
  54. }
  55. }
  56. },
  57. grid: {
  58. show: false,
  59. left: '3%',
  60. right: '4%',
  61. bottom: '10%'
  62. },
  63. // legend: {
  64. // show: true,
  65. // selectedMode: 'single', // 设置显示单一图例的图形,点击可切换
  66. // bottom: 10,
  67. // left: 50,
  68. // textStyle: {
  69. // color: '#666',
  70. // fontSize: 12
  71. // },
  72. // itemGap: 20,
  73. // inactiveColor: '#ccc'
  74. // },
  75. xAxis: {
  76. // splitLine: {     show: false   },
  77. type: 'category',
  78. data: dateList,
  79. axisPointer: {
  80. type: 'shadow'
  81. },
  82. // 改变x轴颜色
  83. axisLine: {
  84. lineStyle: {
  85. color: '#00a2e2',
  86. width: 1, // 这里是为了突出显示加上的
  87. }
  88. },
  89. axisTick: {
  90. show: true,
  91. interval: 0
  92. },
  93. },
  94. // 设置两个y轴,左边显示数量,右边显示概率
  95. yAxis: [{
  96. splitLine: {     show: false   },
  97. type: 'value',
  98. name: '',
  99. // max: 10000,
  100. // min: 0,
  101. // show: true,
  102. // interval: 1000,
  103. // 改变y轴颜色
  104. axisLine: {
  105. lineStyle: {
  106. color: '#00a2e2',
  107. width: 1, // 这里是为了突出显示加上的
  108. }
  109. },
  110. }, // 右边显示概率
  111. {
  112. splitLine: {     show: false   },
  113. type: 'value',
  114. name: '客单价',
  115. // min: 0,
  116. // max: 100,
  117. // interval: 10,
  118. // 改变y轴颜色
  119. axisLine: {
  120. lineStyle: {
  121. color: '#00a2e2',
  122. width: 1, // 这里是为了突出显示加上的
  123. }
  124. }
  125. }],
  126. // 每个设备分数量、概率2个指标,只要让他们的name一致,即可通过,legeng进行统一的切换
  127. series: [{
  128. name: 'Units Sold',
  129. type: 'bar',
  130. symbol: 'circle', // 折线点设置为实心点
  131. symbolSize: 4, // 折线点的大小
  132. data: totalNumberList,
  133. barWidth: '20%',
  134. },{
  135. name: 'Sales',
  136. type: 'bar',
  137. symbol: 'circle', // 折线点设置为实心点
  138. symbolSize: 4, // 折线点的大小
  139. data: totalSalesList,
  140. barWidth: '20%',
  141. },{
  142. name: 'Customers',
  143. type: 'bar',
  144. symbol: 'circle', // 折线点设置为实心点
  145. symbolSize: 4, // 折线点的大小
  146. data: taotalCustomersList,
  147. barWidth: '20%',
  148. },
  149. {
  150. //折线
  151. name: 'Average Basket Sale213213211',
  152. type: 'line',
  153. symbol: 'circle', // 折线点设置为实心点
  154. symbolSize: 6, // 折线点的大小
  155. yAxisIndex: 1, // 这里要设置哪个y轴,默认是最左边的是0,然后1,2顺序来。
  156. data: avgBasketSaleList,
  157. symbolSize: 10,
  158. itemStyle: {
  159. normal: {
  160. color: "#DDA0DD"
  161. }
  162. }
  163. },
  164. {
  165. //折线
  166. name: 'Average Basket Sale1',
  167. type: 'line',
  168. symbol: 'circle', // 折线点设置为实心点
  169. symbolSize: 6, // 折线点的大小
  170. yAxisIndex: 1, // 这里要设置哪个y轴,默认是最左边的是0,然后1,2顺序来。
  171. data: avgBasketSaleList,
  172. symbolSize: 10,
  173. itemStyle: {
  174. normal: {
  175. color: "#DDC0BD"
  176. }
  177. }
  178. },
  179. {
  180. //折线
  181. name: 'Average Basket Sale2',
  182. type: 'line',
  183. symbol: 'circle', // 折线点设置为实心点
  184. symbolSize: 6, // 折线点的大小
  185. yAxisIndex: 1, // 这里要设置哪个y轴,默认是最左边的是0,然后1,2顺序来。
  186. data: avgBasketSaleList,
  187. symbolSize: 10,
  188. itemStyle: {
  189. normal: {
  190. color: "#DDB0AD"
  191. }
  192. }
  193. },
  194. ]
  195. });
  196. }
  197. function queryMonthly(){
  198. var startMonth = document.getElementById("startMonth").value;
  199. var endMonth = document.getElementById("endMonth").value;
  200. var param = {
  201. startMonth:startMonth,
  202. endMonth:endMonth
  203. };
  204. console.log(param);
  205. // 折线图
  206. $.ajax({
  207. url: "../monthly/monthlyCategory",
  208. data: param,
  209. contentType:"application/x-www-form-urlencoded",
  210. type: 'POST',
  211. success: function(data) {
  212. console.log(JSON.stringify(data))
  213. // dFun(data.dateList, data.totalNumberList, data.totalSalesList,data.taotalCustomersList,data.avgBasketSaleList);
  214. },
  215. });
  216. }
  217. function exportMonthly(){
  218. var startMonth = document.getElementById("startMonth").value;
  219. var endMonth = document.getElementById("endMonth").value;
  220. var params = {
  221. startMonth:startMonth,
  222. endMonth:endMonth
  223. };
  224. console.log(params);
  225. exportFile('#rrapp', '../monthly/monthlySalesGrowthExport2', params);
  226. }
  227. let vm = new Vue({
  228. el: '#rrapp',
  229. data: {
  230. date: '',
  231. refreshTime: 10,
  232. type: 'store',
  233. refreshCount:0,
  234. storeId: '',
  235. merchSn: '',
  236. merchName: '',
  237. storeName: '',
  238. salesDate: '',
  239. totalSales: '',
  240. actualSales: '',
  241. preferentialLoss: '',
  242. totalCost: '',
  243. grossProfit: '',
  244. grossProfitRatio: '',
  245. proportion: '',
  246. guestNumber: '',
  247. guestUnitPrice: '',
  248. lastSalesTime: '',
  249. categoryId: '',
  250. categoryName: '',
  251. showList: false,
  252. compareDate: '',//比较日期
  253. storeId2: '',
  254. merchSn2: '',
  255. merchName2: '',
  256. storeName2: '',
  257. salesDate2: '',
  258. totalSales2: '',
  259. actualSales2: '',
  260. preferentialLoss2: '',
  261. totalCost2: '',
  262. grossProfit2: '',
  263. grossProfitRatio2: '',
  264. proportion2: '',
  265. guestNumber2: '',
  266. guestUnitPrice2: '',
  267. lastSalesTime2: '',
  268. intervalId: 0,
  269. isCompare: false,
  270. compare2: '',
  271. temp: {
  272. date: '',
  273. refreshTime: 10,
  274. type: '',
  275. storeId: '',
  276. merchSn: '',
  277. salesDate: '',
  278. categoryId: ''
  279. },
  280. rateList: [
  281. {
  282. id: '0',
  283. name: '含税'
  284. },
  285. {
  286. id: '1',
  287. name: '不含税'
  288. }
  289. ],
  290. projectList: [
  291. {
  292. id: '0',
  293. name: '销售总额'
  294. },
  295. {
  296. id: '1',
  297. name: '客单价'
  298. }
  299. ],
  300. seriesTypeList: [
  301. {
  302. id: 'bar',
  303. name: '垂直柱状图'
  304. },
  305. {
  306. id: 'line',
  307. name: '折线图'
  308. },
  309. {
  310. id: 'pie',
  311. name: '饼图'
  312. }
  313. ],
  314. formatsList: [
  315. {
  316. id: '0',
  317. name: '<全部>'
  318. },
  319. {
  320. id: '1',
  321. name: '<非全部>'
  322. }
  323. ],
  324. salesList: [
  325. {
  326. store: {storeId: '11106', storeName: '前海店'},
  327. totalSales: 43046.18,
  328. actualSales: 35593.46
  329. }
  330. ],
  331. dept: {
  332. deptId: '',
  333. deptName: ''
  334. },
  335. category: {
  336. categoryId: '',
  337. categoryName: ''
  338. },
  339. seriesList: [], //保存饼图数据
  340. seriesList2: [],
  341. xAxisList: { //主要用于保存 启动刷新时的条件和数据
  342. storeId: '',
  343. storeName: '',
  344. merchSn: '',
  345. merchName: '',
  346. totalSales: '',
  347. actualSales: '',
  348. preferentialLoss: '',
  349. totalCost: '',
  350. grossProfit: '',
  351. grossProfitRatio: '',
  352. proportion: '',
  353. guestNumber: '',
  354. guestUnitPrice: '',
  355. lastSalesTime: '',
  356. salesDate: '0',
  357. projectSelect: '0',
  358. type:''
  359. },
  360. dataList: [],
  361. tooltip: {},
  362. today:''
  363. },
  364. created() {
  365. this.rateSelect = this.rateList[0].id;
  366. this.projectSelect = this.projectList[0].id;
  367. this.seriesTypeSelect = this.seriesTypeList[0].id;
  368. this.formatsSelect = this.formatsList[0].id;
  369. },
  370. methods: {
  371. seriesTypeSwitch: function () {
  372. console.log(vm.seriesTypeSelect);
  373. },
  374. showEcharts: function () {
  375. // 基于准备好的dom,初始化echarts实例
  376. myChart = echarts.init(document.getElementById('main'));
  377. myChart.clear();
  378. //加载动画
  379. myChart.showLoading();
  380. //项目下拉框判断 6-19,饼图设置 vm.xAxisList
  381. var temp = '';
  382. if (vm.xAxisList.projectSelect == '0') {
  383. if (vm.xAxisList.type == 'dept') {
  384. temp = '[' + vm.xAxisList.merchSn + ']' + vm.xAxisList.merchName + '/销售总额:' + vm.xAxisList.totalSales + '元(' + vm.xAxisList.salesDate + ')';
  385. } else {
  386. temp = '[' + vm.xAxisList.storeId + ']' + vm.xAxisList.storeName + '/销售总额:' + vm.xAxisList.totalSales + '元(' + vm.xAxisList.salesDate + ')';
  387. }
  388. vm.seriesList2.push(vm.xAxisList.totalSales);
  389. vm.seriesList.push({value: vm.xAxisList.totalSales, name: temp});
  390. } else if (vm.xAxisList.projectSelect == '1') {
  391. if (vm.xAxisList.type == 'dept') {
  392. temp = '[' + vm.xAxisList.merchSn + ']' + vm.xAxisList.merchName + '/客单价:' + vm.xAxisList.guestUnitPrice + '元(' + vm.xAxisList.salesDate + ')';
  393. } else {
  394. temp = '[' + vm.xAxisList.storeId + ']' + vm.xAxisList.storeName + '/客单价:' + vm.xAxisList.guestUnitPrice + '元(' + vm.xAxisList.salesDate + ')';
  395. }
  396. vm.seriesList2.push(vm.xAxisList.guestUnitPrice);
  397. vm.seriesList.push({value: vm.xAxisList.guestUnitPrice, name: temp});
  398. }
  399. vm.dataList = [temp];
  400. if (vm.seriesTypeSelect == "pie") {
  401. vm.seriesList2 = vm.seriesList.concat();
  402. }
  403. // console.log('vm.seriesList2');
  404. // console.log(vm.seriesList2);
  405. // 指定图表的配置项和数据
  406. //销售量
  407. var option = {
  408. title: {
  409. // textAlign: 'right',
  410. text: 'Monthly Customers & Avg Basket',
  411. x: 'center',
  412. textStyle: {
  413. //文字颜色
  414. color: '#17233d',
  415. //字体风格,'normal','italic','oblique'
  416. fontStyle: 'normal',
  417. //字体粗细 'normal','bold','bolder','lighter',100 | 200 | 300 | 400...
  418. fontWeight: 'bold',
  419. //字体系列
  420. fontFamily: 'sans-serif',
  421. //字体大小
  422. fontSize: 28
  423. }
  424. },
  425. tooltip: {
  426. formatter: function (params) {
  427. return params.name;
  428. }
  429. },
  430. legend: {
  431. data: ['/销售总额']
  432. },
  433. xAxis: {
  434. data: vm.dataList,
  435. axisLabel: {
  436. interval: 0
  437. }
  438. },
  439. yAxis: {},
  440. series: [{
  441. barMaxWidth: '20%',
  442. barWidth: '50%',
  443. radius: '55%',
  444. roseType: 'angle',
  445. type: vm.seriesTypeSelect,
  446. color: ['#dd6b66', '#759aa0'],
  447. data: vm.seriesList2
  448. }]
  449. };
  450. //隐藏
  451. myChart.hideLoading();
  452. // 使用刚指定的配置项和数据显示图表。
  453. myChart.setOption(option);
  454. },
  455. tooltipFormatter: function () {
  456. if (vm.type == 'dept') {
  457. return '[' + vm.merchSn + ']' + vm.merchName + '/销售总额:' + vm.totalSales + '元(' + vm.salesDate + ')';
  458. }
  459. return '[' + vm.storeId + ']' + vm.storeName + '/销售总额:' + vm.totalSales + '元(' + vm.salesDate + ')';
  460. },
  461. showTable: function (postParam) {
  462. console.log(postParam);
  463. $("#jqGrid").jqGrid('setGridParam', {
  464. postData: postParam
  465. }).trigger("reloadGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "scroll"});
  466. },
  467. switchProjectView: function () {
  468. console.log(vm.projectSelect);
  469. }
  470. }
  471. });