monthlyCustomers2.js 15 KB

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