1
0

realtimeSales.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. $(function () {
  2. vm.showEcharts();
  3. console.log(1);
  4. $("#jqGrid").jqGrid({
  5. url:'../realtimeSalesDetection/query',
  6. datatype: "json",
  7. colModel: [
  8. {label: '门店编码', name: 'storeId', index: 'storeId', width: 120},
  9. {label: '门店名称', name: 'storeName', index: 'storeName', width: 180},
  10. {label: '商户编码', name: 'merchSn', index: 'storeId', width: 220},
  11. {label: '商户名称', name: 'merchName', index: 'storeName', width: 180},
  12. {label: '售价总额', name: 'totalSales', index: 'totalSales',align: 'right',width: 140},
  13. {label: '实际销售额', name: 'actualSales', index: 'actualSales',align: 'right',width: 140},
  14. {label: '占比 %', name: 'proportion', index: 'proportion',align: 'right',width: 140},
  15. {label: '优惠损失', name: 'preferentialLoss', index: 'preferentialLoss',align: 'right',width: 140},
  16. {label: '成本总额', name: 'totalCost', index: 'totalCost',align: 'right',width: 140},
  17. {label: '毛利', name: 'grossProfit', index: 'grossProfit',align: 'right',width: 140},
  18. {label: '毛利率', name: 'grossProfitRatio', index: 'grossProfitRatio',align: 'right',width: 140},
  19. {label: '来客数', name: 'guestNumber', index: 'guestNumber',align: 'right',width: 100},
  20. {label: '客单价', name: 'guestUnitPrice', index: 'guestUnitPrice',align: 'right',width: 140},
  21. {label: '最后销售时间', name: 'lastSalesTime', index: 'lastSalesTime', align: 'center',width: 180,formatter: function (value) {
  22. return transDate(value,'yyyy-MM-dd hh:mm:ss');
  23. }}
  24. ],
  25. viewrecords: true,
  26. height: 200,
  27. rowNum: 10,
  28. rowList: [10, 30, 50],
  29. rownumbers: true,
  30. rownumWidth: 25,
  31. autowidth: true,
  32. shrinkToFit: false,
  33. autoScroll: true, //开启水平滚动条
  34. width: 1500,
  35. multiselect: true,
  36. pager: "#jqGridPager",
  37. jsonReader: {
  38. root: "page.list",
  39. page: "page.currPage",
  40. total: "page.totalPage",
  41. records: "page.totalCount"
  42. },
  43. prmNames: {
  44. page: "page",
  45. rows: "limit",
  46. order: "order"
  47. },
  48. gridComplete: function () {
  49. $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "scroll"});
  50. }
  51. });
  52. });
  53. var myChart ;
  54. let vm = new Vue({
  55. el: '#rrapp',
  56. data: {
  57. date: '',
  58. refreshTime: 10,
  59. type: 'store',
  60. // sales : [{
  61. storeId: '',
  62. merchSn: '',
  63. merchName: '',
  64. storeName: '',
  65. salesDate: '',
  66. totalSales: '',
  67. actualSales: '',
  68. preferentialLoss: '',
  69. totalCost: '',
  70. grossProfit: '',
  71. grossProfitRatio: '',
  72. proportion: '',
  73. guestNumber: '',
  74. guestUnitPrice: '',
  75. lastSalesTime: '',
  76. showList:false
  77. // }]
  78. ,
  79. compareDate: '',//比较日期
  80. storeId2: '',
  81. merchSn2: '',
  82. merchName2: '',
  83. storeName2: '',
  84. salesDate2: '',
  85. totalSales2: '',
  86. actualSales2: '',
  87. preferentialLoss2: '',
  88. totalCost2: '',
  89. grossProfit2: '',
  90. grossProfitRatio2: '',
  91. proportion2: '',
  92. guestNumber2: '',
  93. guestUnitPrice2: '',
  94. lastSalesTime2: '',
  95. rateList: [
  96. {
  97. id: '0',
  98. name: '含税'
  99. },
  100. {
  101. id: '1',
  102. name: '不含税'
  103. }
  104. ],
  105. projectList: [
  106. {
  107. id: '0',
  108. name: '销售额'
  109. },
  110. {
  111. id: '1',
  112. name: '客单价'
  113. }
  114. ],
  115. seriesTypeList: [
  116. {
  117. id: 'bar',
  118. name: '垂直柱状图'
  119. },
  120. {
  121. id: 'line',
  122. name: '折线图'
  123. },
  124. {
  125. id: 'pie',
  126. name: '饼图'
  127. }
  128. ],
  129. formatsList: [
  130. {
  131. id: '0',
  132. name: '<全部>'
  133. },
  134. {
  135. id: '1',
  136. name: '<非全部>'
  137. }
  138. ],
  139. salesList: [
  140. {
  141. store: {storeId: '11106', storeName: '前海店'},
  142. totalSales: 43046.18,
  143. actualSales: 35593.46
  144. }
  145. ],
  146. dept: {
  147. deptId:'',
  148. deptName:''
  149. },
  150. category: {
  151. categoryId:'',
  152. categoryName: ''
  153. },
  154. seriesList:[],
  155. seriesList2:[],
  156. xAxisList:[],
  157. dataList: []
  158. },
  159. created() {
  160. this.rateSelect = this.rateList[0].id;
  161. this.projectSelect = this.projectList[0].id;
  162. this.seriesTypeSelect = this.seriesTypeList[0].id;
  163. this.formatsSelect = this.formatsList[0].id;
  164. },
  165. methods: {
  166. refresh: function () {
  167. vm.showList = true;
  168. var postParam = {"salesDate":(vm.salesDate==''||vm.salesDate==null)?vm.salesDate='2020-06-02':vm.salesDate, "storeId":vm.storeId==''?'10':vm.storeId}
  169. $.ajax({
  170. url:'../realtimeSalesDetection/query',
  171. type:"POST",
  172. data:postParam,
  173. dataType:'json',
  174. success:function(r){
  175. r = r.page.list[0];
  176. console.log(r);
  177. vm.storeId = r.storeId;
  178. vm.merchSn = r.merchSn;
  179. vm.merchName = r.merchName;
  180. vm.storeName = r.storeName;
  181. vm.totalSales = r.totalSales;
  182. vm.actualSales = r.actualSales;
  183. vm.preferentialLoss = r.preferentialLoss;
  184. vm.totalCost = r.totalCost;
  185. vm.grossProfit = r.grossProfit;
  186. vm.grossProfitRatio = r.grossProfitRatio;
  187. vm.proportion = r.proportion;
  188. vm.guestNumber = r.guestNumber;
  189. vm.guestUnitPrice = r.guestUnitPrice;
  190. vm.lastSalesTime = r.lastSalesTime;
  191. vm.seriesList =[];
  192. vm.seriesList2 =[];
  193. vm.seriesList.push(
  194. {
  195. // name: '销售额',
  196. type: vm.seriesTypeSelect,
  197. color: ['#dd6b66','#759aa0'],
  198. data: [vm.totalSales]
  199. })
  200. ;
  201. vm.seriesList2.push( vm.totalSales);
  202. console.log(vm.seriesList2);
  203. console.log('vm.seriesList2');
  204. vm.showEcharts();
  205. vm.showTable(postParam);
  206. }
  207. });
  208. },
  209. refresh2: function () {
  210. var postParam = {"salesDate":vm.compareDate==''?vm.compareDate='2020-06-17':vm.compareDate, "storeId":vm.storeId==''?'10':vm.storeId}
  211. $.ajax({
  212. url:'../realtimeSalesDetection/query',
  213. type:"POST",
  214. data:postParam,
  215. dataType:'json',
  216. success:function(r){
  217. console.log(r);
  218. r = r.page.list[0];
  219. console.log(r);
  220. vm.storeId2 = r.storeId;
  221. vm.merchSn2 = r.merchSn;
  222. vm.merchName2 = r.merchName;
  223. vm.storeName2 = r.storeName;
  224. vm.salesDate2 = vm.compareDate;
  225. vm.totalSales2 = r.totalSales;
  226. vm.actualSales2 = r.actualSales;
  227. vm.preferentialLoss2 = r.preferentialLoss;
  228. vm.totalCost2 = r.totalCost;
  229. vm.grossProfit2 = r.grossProfit;
  230. vm.grossProfitRatio2 = r.grossProfitRatio;
  231. vm.proportion2 = r.proportion;
  232. vm.guestNumber2 = r.guestNumber;
  233. vm.guestUnitPrice2 = r.guestUnitPrice;
  234. vm.lastSalesTime2 = r.lastSalesTime;
  235. vm.seriesList.push({
  236. // name: '销售额',
  237. type: vm.seriesTypeSelect,
  238. color: ['#dd6b66','#759aa0'],
  239. data: [vm.totalSales2]
  240. });
  241. vm.seriesList2.push(vm.totalSales2);
  242. vm.dataList.push(
  243. '['+vm.storeId2+']'+vm.storeName2+'总销售额('+vm.salesDate2+')'
  244. );
  245. console.log(vm.dataList);
  246. myChart.setOption({
  247. xAxis: {
  248. data: vm.dataList
  249. },
  250. series:[{
  251. type: vm.seriesTypeSelect,
  252. color: ['#dd6b66','#759aa0'],
  253. data: vm.seriesList2
  254. }]
  255. });
  256. }
  257. });
  258. },
  259. seriesTypeSwitch: function(){
  260. console.log('vm.seriesTypeSelect');
  261. console.log(vm.seriesTypeSelect);
  262. },
  263. showEcharts: function () {
  264. // 基于准备好的dom,初始化echarts实例
  265. myChart = echarts.init(document.getElementById('main'));
  266. myChart.clear();
  267. //加载动画
  268. myChart.showLoading();
  269. var seriesList = vm.seriesList;
  270. vm.dataList=['['+vm.storeId+']'+vm.storeName+'总销售额('+vm.salesDate+')'];
  271. // 指定图表的配置项和数据
  272. //销售量
  273. var option = {
  274. title: {
  275. text: '分店实时销售统计图'
  276. },
  277. tooltip: {},
  278. legend: {
  279. data:['销量']
  280. },
  281. xAxis: {
  282. data: vm.dataList
  283. },
  284. yAxis: {},
  285. // series: seriesList
  286. series:[{
  287. type: vm.seriesTypeSelect,
  288. color: ['#dd6b66','#759aa0'],
  289. data: vm.seriesList2
  290. }]
  291. };
  292. //隐藏
  293. myChart.hideLoading();
  294. // 使用刚指定的配置项和数据显示图表。
  295. myChart.setOption(option);
  296. },
  297. showTable: function (postParam) {
  298. console.log(postParam);
  299. $("#jqGrid").jqGrid('setGridParam', {
  300. postData: postParam
  301. }).trigger("reloadGrid");
  302. /*$("#jqGrid").jqGrid('setGridParam', {
  303. dataType:'json',
  304. postData: postParam,
  305. }).trigger("reloadGrid");*/
  306. }
  307. }
  308. });
  309. // //客单价
  310. // var option2 = {
  311. // title: {
  312. // text: '分店实时销售统计图'
  313. // },
  314. // tooltip: {},
  315. // legend: {
  316. // data:['客单价']
  317. // },
  318. // xAxis: [{
  319. // // data: ['['+vm.salesList[0].store.storeId+']'+vm.salesList[0].store.storeName+'总销售额','['+vm.salesList[0].store.storeId+']'+vm.salesList[0].store.storeName+'实际销售额']
  320. // data: ['['+vm.storeId+']'+vm.storeName+'总销售额','['+vm.storeId+']'+vm.storeName+'实际销售额']
  321. // }],
  322. // yAxis: {},
  323. // series: [
  324. // {
  325. // // name: '销售额',
  326. // type: vm.seriesTypeSelect,
  327. // color: ['#dd6b66','#759aa0'],
  328. // data: vm.guestUnitPrice
  329. // }
  330. // ]
  331. // };