salesByCategory.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. var myChart;
  2. // 基于准备好的dom,初始化echarts实例
  3. var dChart = echarts.init(document.getElementById('main3'));
  4. // 指定图表的配置项和数据
  5. function dFun(dateList) {
  6. dChart.setOption({
  7. title: {
  8. text: 'SALES BY CATEGORY',
  9. left: 'center'
  10. },
  11. tooltip: {
  12. trigger: 'item',
  13. formatter: '{a} <br/>{b} : {c} ({d}%)'
  14. },
  15. // legend: {
  16. // orient: 'vertical',
  17. // left: 'left',
  18. // data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']
  19. // },
  20. series: [
  21. {
  22. name: '类目',
  23. type: 'pie',
  24. radius: '55%',
  25. center: ['50%', '60%'],
  26. data: dateList,
  27. emphasis: {
  28. itemStyle: {
  29. shadowBlur: 10,
  30. shadowOffsetX: 0,
  31. shadowColor: 'rgba(0, 0, 0, 0.5)'
  32. }
  33. }
  34. }
  35. ]
  36. });
  37. }
  38. function queryMonthly(){
  39. var startDate = document.getElementById("startDate").value;
  40. var endDate = document.getElementById("endDate").value;
  41. var param = {
  42. startDate:startDate,
  43. endDate:endDate
  44. };
  45. // 折线图
  46. $.ajax({
  47. url: "../monthly/salesByCategory",
  48. data: param,
  49. contentType:"application/x-www-form-urlencoded",
  50. type: 'POST',
  51. success: function(data) {
  52. console.log(JSON.stringify(data.list))
  53. dFun(data.list);
  54. },
  55. });
  56. }
  57. let vm = new Vue({
  58. el: '#rrapp',
  59. data: {
  60. date: '',
  61. refreshTime: 10,
  62. type: 'store',
  63. refreshCount:0,
  64. storeId: '',
  65. merchSn: '',
  66. merchName: '',
  67. storeName: '',
  68. salesDate: '',
  69. totalSales: '',
  70. actualSales: '',
  71. preferentialLoss: '',
  72. totalCost: '',
  73. grossProfit: '',
  74. grossProfitRatio: '',
  75. proportion: '',
  76. guestNumber: '',
  77. guestUnitPrice: '',
  78. lastSalesTime: '',
  79. categoryId: '',
  80. categoryName: '',
  81. showList: false,
  82. compareDate: '',//比较日期
  83. storeId2: '',
  84. merchSn2: '',
  85. merchName2: '',
  86. storeName2: '',
  87. salesDate2: '',
  88. totalSales2: '',
  89. actualSales2: '',
  90. preferentialLoss2: '',
  91. totalCost2: '',
  92. grossProfit2: '',
  93. grossProfitRatio2: '',
  94. proportion2: '',
  95. guestNumber2: '',
  96. guestUnitPrice2: '',
  97. lastSalesTime2: '',
  98. intervalId: 0,
  99. isCompare: false,
  100. compare2: '',
  101. temp: {
  102. date: '',
  103. refreshTime: 10,
  104. type: '',
  105. storeId: '',
  106. merchSn: '',
  107. salesDate: '',
  108. categoryId: ''
  109. },
  110. rateList: [
  111. {
  112. id: '0',
  113. name: '含税'
  114. },
  115. {
  116. id: '1',
  117. name: '不含税'
  118. }
  119. ],
  120. projectList: [
  121. {
  122. id: '0',
  123. name: '销售总额'
  124. },
  125. {
  126. id: '1',
  127. name: '客单价'
  128. }
  129. ],
  130. seriesTypeList: [
  131. {
  132. id: 'bar',
  133. name: '垂直柱状图'
  134. },
  135. {
  136. id: 'line',
  137. name: '折线图'
  138. },
  139. {
  140. id: 'pie',
  141. name: '饼图'
  142. }
  143. ],
  144. formatsList: [
  145. {
  146. id: '0',
  147. name: '<全部>'
  148. },
  149. {
  150. id: '1',
  151. name: '<非全部>'
  152. }
  153. ],
  154. salesList: [
  155. {
  156. store: {storeId: '11106', storeName: '前海店'},
  157. totalSales: 43046.18,
  158. actualSales: 35593.46
  159. }
  160. ],
  161. dept: {
  162. deptId: '',
  163. deptName: ''
  164. },
  165. category: {
  166. categoryId: '',
  167. categoryName: ''
  168. },
  169. seriesList: [], //保存饼图数据
  170. seriesList2: [],
  171. xAxisList: { //主要用于保存 启动刷新时的条件和数据
  172. storeId: '',
  173. storeName: '',
  174. merchSn: '',
  175. merchName: '',
  176. totalSales: '',
  177. actualSales: '',
  178. preferentialLoss: '',
  179. totalCost: '',
  180. grossProfit: '',
  181. grossProfitRatio: '',
  182. proportion: '',
  183. guestNumber: '',
  184. guestUnitPrice: '',
  185. lastSalesTime: '',
  186. salesDate: '0',
  187. projectSelect: '0',
  188. type:''
  189. },
  190. dataList: [],
  191. tooltip: {},
  192. today:''
  193. },
  194. created() {
  195. this.rateSelect = this.rateList[0].id;
  196. this.projectSelect = this.projectList[0].id;
  197. this.seriesTypeSelect = this.seriesTypeList[0].id;
  198. this.formatsSelect = this.formatsList[0].id;
  199. },
  200. methods: {
  201. seriesTypeSwitch: function () {
  202. console.log(vm.seriesTypeSelect);
  203. },
  204. showEcharts: function () {
  205. // 基于准备好的dom,初始化echarts实例
  206. myChart = echarts.init(document.getElementById('main'));
  207. myChart.clear();
  208. //加载动画
  209. myChart.showLoading();
  210. //项目下拉框判断 6-19,饼图设置 vm.xAxisList
  211. var temp = '';
  212. if (vm.xAxisList.projectSelect == '0') {
  213. if (vm.xAxisList.type == 'dept') {
  214. temp = '[' + vm.xAxisList.merchSn + ']' + vm.xAxisList.merchName + '/销售总额:' + vm.xAxisList.totalSales + '元(' + vm.xAxisList.salesDate + ')';
  215. } else {
  216. temp = '[' + vm.xAxisList.storeId + ']' + vm.xAxisList.storeName + '/销售总额:' + vm.xAxisList.totalSales + '元(' + vm.xAxisList.salesDate + ')';
  217. }
  218. vm.seriesList2.push(vm.xAxisList.totalSales);
  219. vm.seriesList.push({value: vm.xAxisList.totalSales, name: temp});
  220. } else if (vm.xAxisList.projectSelect == '1') {
  221. if (vm.xAxisList.type == 'dept') {
  222. temp = '[' + vm.xAxisList.merchSn + ']' + vm.xAxisList.merchName + '/客单价:' + vm.xAxisList.guestUnitPrice + '元(' + vm.xAxisList.salesDate + ')';
  223. } else {
  224. temp = '[' + vm.xAxisList.storeId + ']' + vm.xAxisList.storeName + '/客单价:' + vm.xAxisList.guestUnitPrice + '元(' + vm.xAxisList.salesDate + ')';
  225. }
  226. vm.seriesList2.push(vm.xAxisList.guestUnitPrice);
  227. vm.seriesList.push({value: vm.xAxisList.guestUnitPrice, name: temp});
  228. }
  229. vm.dataList = [temp];
  230. if (vm.seriesTypeSelect == "pie") {
  231. vm.seriesList2 = vm.seriesList.concat();
  232. }
  233. // console.log('vm.seriesList2');
  234. // console.log(vm.seriesList2);
  235. // 指定图表的配置项和数据
  236. //销售量
  237. var option = {
  238. title: {
  239. // textAlign: 'right',
  240. text: 'Monthly Customers & Avg Basket',
  241. x: 'center',
  242. textStyle: {
  243. //文字颜色
  244. color: '#17233d',
  245. //字体风格,'normal','italic','oblique'
  246. fontStyle: 'normal',
  247. //字体粗细 'normal','bold','bolder','lighter',100 | 200 | 300 | 400...
  248. fontWeight: 'bold',
  249. //字体系列
  250. fontFamily: 'sans-serif',
  251. //字体大小
  252. fontSize: 28
  253. }
  254. },
  255. tooltip: {
  256. formatter: function (params) {
  257. return params.name;
  258. }
  259. },
  260. legend: {
  261. data: ['/销售总额']
  262. },
  263. xAxis: {
  264. data: vm.dataList,
  265. axisLabel: {
  266. interval: 0
  267. }
  268. },
  269. yAxis: {},
  270. series: [{
  271. barMaxWidth: '20%',
  272. barWidth: '50%',
  273. radius: '55%',
  274. roseType: 'angle',
  275. type: vm.seriesTypeSelect,
  276. color: ['#dd6b66', '#759aa0'],
  277. data: vm.seriesList2
  278. }]
  279. };
  280. //隐藏
  281. myChart.hideLoading();
  282. // 使用刚指定的配置项和数据显示图表。
  283. myChart.setOption(option);
  284. },
  285. tooltipFormatter: function () {
  286. if (vm.type == 'dept') {
  287. return '[' + vm.merchSn + ']' + vm.merchName + '/销售总额:' + vm.totalSales + '元(' + vm.salesDate + ')';
  288. }
  289. return '[' + vm.storeId + ']' + vm.storeName + '/销售总额:' + vm.totalSales + '元(' + vm.salesDate + ')';
  290. },
  291. showTable: function (postParam) {
  292. console.log(postParam);
  293. $("#jqGrid").jqGrid('setGridParam', {
  294. postData: postParam
  295. }).trigger("reloadGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "scroll"});
  296. },
  297. switchProjectView: function () {
  298. console.log(vm.projectSelect);
  299. }
  300. }
  301. });