operationData.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478
  1. <template>
  2. <view style="padding-bottom: 30rpx;">
  3. <!-- tab -->
  4. <view class="tab-box ddflex">
  5. <view :class="'tab-item fflex '+(queryType==1?'tab-item-active':'')" @click="queryTypeChange(1)">
  6. <view>我的收益</view>
  7. <image class="tab-active-icon" src="../../static/images/tab_cur.png"></image>
  8. </view>
  9. <view :class="'tab-item fflex '+(queryType==2?'tab-item-active':'')" @click="queryTypeChange(2)">
  10. <view>商家营业额</view>
  11. <image class="tab-active-icon" src="../../static/images/tab_cur.png"></image>
  12. </view>
  13. <view :class="'tab-item fflex '+(queryType==3?'tab-item-active':'')" @click="queryTypeChange(3)">
  14. <view>门店营业额</view>
  15. <image class="tab-active-icon" src="../../static/images/tab_cur.png"></image>
  16. </view>
  17. </view>
  18. <view style="height: 110rpx;"></view>
  19. <!-- 我的收益 -->
  20. <block v-if="queryType==1">
  21. <!-- 图表统计 -->
  22. <view class="echart-box">
  23. <view class="echart-box-header ddflex">
  24. <view class="echart-box-title">收益走势图</view>
  25. <view class="echart-box-timeType ddflex">
  26. <view :class="'echart-box-timeType-item '+(timeType==1?'echart-box-timeType-item-acitve':'')"
  27. @click="timeTypeChange(1)">按日</view>
  28. <view :class="'echart-box-timeType-item '+(timeType==2?'echart-box-timeType-item-acitve':'')"
  29. @click="timeTypeChange(2)">按月</view>
  30. <view :class="'echart-box-timeType-item '+(timeType==3?'echart-box-timeType-item-acitve':'')"
  31. @click="timeTypeChange(3)">季度</view>
  32. </view>
  33. </view>
  34. <view style="margin-top: 30rpx;height:500rpx">
  35. <l-echart ref="chart" @finished="init"></l-echart>
  36. </view>
  37. </view>
  38. <!-- 图表统计 -->
  39. <view class="echart-box">
  40. <view class="echart-box-header ddflex">
  41. <view class="echart-box-title">实时设备数据</view>
  42. </view>
  43. <view class="sssb-box ddflex">
  44. <view class="sssb-item">
  45. <view class="sssb-label">总数</view>
  46. <view class="sssb-data">421台</view>
  47. </view>
  48. <view class="sssb-line"></view>
  49. <view class="sssb-item">
  50. <view class="sssb-label">使用总次数</view>
  51. <view class="sssb-data">63889次</view>
  52. </view>
  53. </view>
  54. <view class="sssb-box ddflex">
  55. <view class="sssb-item">
  56. <view class="sssb-label">已下发</view>
  57. <view class="sssb-data">509台</view>
  58. </view>
  59. <view class="sssb-line"></view>
  60. <view class="sssb-item">
  61. <view class="sssb-label">总收益</view>
  62. <view class="sssb-data sssb-color">92516元</view>
  63. </view>
  64. </view>
  65. </view>
  66. <!-- 图表统计 -->
  67. <view class="echart-box">
  68. <view class="echart-box-header ddflex">
  69. <view class="echart-box-title">我的运营情况</view>
  70. </view>
  71. <view class="sssb-box ddflex">
  72. <view class="sssb-item">
  73. <view class="sssb-label">营业总额</view>
  74. <view class="sssb-data sssb-color">867.00</view>
  75. </view>
  76. <view class="sssb-line"></view>
  77. <view class="sssb-item">
  78. <view class="sssb-label">收益总额</view>
  79. <view class="sssb-data sssb-color">1915.00</view>
  80. </view>
  81. </view>
  82. <view style="margin-top: 30rpx;height:500rpx">
  83. <view class="echart-title">近一周营业额度(元)图表数据</view>
  84. <l-echart ref="chart2" @finished="init"></l-echart>
  85. </view>
  86. <view style="margin-top: 30rpx;height:500rpx">
  87. <view class="echart-title">近一周收益额度(元)</view>
  88. <l-echart ref="chart3" @finished="init"></l-echart>
  89. </view>
  90. </view>
  91. </block>
  92. <!-- 商家营业额 -->
  93. <block v-if="queryType==2">
  94. <!-- 搜索 -->
  95. <view>
  96. <view class="search-box ddflex">
  97. <image class="search-icon" src="../../static/images/ssico.png"></image>
  98. <input class="fflex" placeholder="请输入商家名称或电话"/>
  99. <view class="search-btn">搜索</view>
  100. </view>
  101. </view>
  102. <!-- 数据 -->
  103. <view>
  104. <view class="sjyy-item" v-for="item,index in 10">
  105. <view class="ddflex">
  106. <view class="sjyy-header">
  107. <image src="../../static/pages/images/wdsj.png"></image>
  108. </view>
  109. <view class="fflex">
  110. <view class="sjyy-name">宋秀兰</view>
  111. <view class="sjyy-phone">13815141671</view>
  112. </view>
  113. <view class="sjyy-btn" @click="jumpUrl('/pages/operationDataPersonal/operationDataPersonal')">运营情况</view>
  114. </view>
  115. <view class="sjyy-data ddflex">
  116. <view class="sjyy-data-item fflex">
  117. <view class="sssb-data sssb-color">10242.00</view>
  118. <view class="sssb-label">营业总额</view>
  119. </view>
  120. <view class="sjyy-data-item fflex">
  121. <view class="sssb-data sssb-color">1915.00</view>
  122. <view class="sssb-label">收益总额</view>
  123. </view>
  124. </view>
  125. </view>
  126. </view>
  127. </block>
  128. <!-- 门店营业额 -->
  129. <block v-if="queryType==3">
  130. <!-- 搜索 -->
  131. <view>
  132. <view class="search-box ddflex">
  133. <image class="search-icon" src="../../static/images/ssico.png"></image>
  134. <input class="fflex" placeholder="请输入门店名称或电话"/>
  135. <view class="search-btn">搜索</view>
  136. </view>
  137. </view>
  138. <!-- 数据 -->
  139. <view>
  140. <view class="sjyy-item" v-for="item,index in 10">
  141. <view class="ddflex">
  142. <view class="sjyy-header">
  143. <image src="../../static/pages/images/wdmd.png"></image>
  144. </view>
  145. <view class="fflex">
  146. <view class="sjyy-name">白云科技门店</view>
  147. <view class="sjyy-phone">顾勇(13815141671)</view>
  148. </view>
  149. <view class="sjyy-btn" @click="jumpUrl('/pages/operationDataPersonal/operationDataPersonal')">运营情况</view>
  150. </view>
  151. <view class="sjyy-data ddflex">
  152. <image style="width: 19rpx;height: 25rpx;margin-right: 10rpx;" src="../../static/pages/images/dwico1.png"></image>
  153. <view class="tover fflex" style="font-size: 24rpx;line-height: 36rpx;">朝阳区金台路道家园1号</view>
  154. </view>
  155. <view class="sjyy-data ddflex">
  156. <view class="sjyy-data-item fflex">
  157. <view class="sssb-data sssb-color">10242.00</view>
  158. <view class="sssb-label">营业总额</view>
  159. </view>
  160. <view class="sjyy-data-item fflex">
  161. <view class="sssb-data sssb-color">1915.00</view>
  162. <view class="sssb-label">收益总额</view>
  163. </view>
  164. </view>
  165. </view>
  166. </view>
  167. </block>
  168. </view>
  169. </template>
  170. <script>
  171. const app = getApp();
  172. const req = require("../../utils/request.js");
  173. import LEchart from '../../components/l-echart/l-echart.vue';
  174. import * as echarts from '../../utils/echarts.min.js'
  175. export default {
  176. components: {
  177. LEchart
  178. },
  179. props: {},
  180. data() {
  181. return {
  182. systems: {},
  183. isTop: 0,
  184. pxToRpxScale: 0,
  185. rpxTopxScale: 0,
  186. queryType: 1,
  187. timeType: 1, //统计时间 1.按日 2.按月 3.按季度
  188. // 交易趋势图表数据
  189. option: {
  190. tooltip: {
  191. trigger: 'axis',
  192. axisPointer: {
  193. type: 'shadow'
  194. },
  195. confine: true
  196. },
  197. grid: {
  198. left: 0,
  199. right: 8,
  200. bottom: 10,
  201. top: 10,
  202. containLabel: true
  203. },
  204. xAxis: [{
  205. type: 'category',
  206. data: [],
  207. axisLine: {
  208. lineStyle: {
  209. color: '#999999'
  210. }
  211. },
  212. axisLabel: {
  213. color: '#666666',
  214. // interval: 0,
  215. }
  216. }],
  217. yAxis: [{
  218. type: 'value',
  219. axisTick: {
  220. show: false
  221. },
  222. axisLine: {
  223. lineStyle: {
  224. color: '#999999'
  225. }
  226. },
  227. axisLabel: {
  228. color: '#666666'
  229. }
  230. }],
  231. series: [{
  232. name: '订单',
  233. type: 'line',
  234. data: [],
  235. barWidth: 10,
  236. itemStyle: {
  237. // 颜色
  238. color: '#FF7D00',
  239. // 给bar设置倒角
  240. barBorderRadius: [15, 15, 0, 0]
  241. }
  242. }]
  243. },
  244. // 近一周营业额度(元)图表数据
  245. option2: {
  246. tooltip: {
  247. trigger: 'axis',
  248. axisPointer: {
  249. type: 'shadow'
  250. },
  251. confine: true
  252. },
  253. grid: {
  254. left: 0,
  255. right: 8,
  256. bottom: 20,
  257. top: 30,
  258. containLabel: true
  259. },
  260. xAxis: [{
  261. type: 'category',
  262. data: [],
  263. axisLine: {
  264. lineStyle: {
  265. color: '#999999'
  266. }
  267. },
  268. axisLabel: {
  269. color: '#666666',
  270. // interval: 0,
  271. }
  272. }],
  273. yAxis: [{
  274. type: 'value',
  275. axisTick: {
  276. show: false
  277. },
  278. axisLine: {
  279. lineStyle: {
  280. color: '#999999'
  281. }
  282. },
  283. axisLabel: {
  284. color: '#666666'
  285. }
  286. }],
  287. series: [{
  288. name: '订单',
  289. type: 'bar',
  290. label: {
  291. normal: {
  292. show: true,
  293. position: 'top',
  294. color: '#FF770F',
  295. formatter: '¥{c}',
  296. },
  297. },
  298. data: [285, 200, 285, 300, 285, 285, 320],
  299. barWidth: 15,
  300. itemStyle: {
  301. // 颜色
  302. color: '#FF770F',
  303. // 给bar设置倒角
  304. barBorderRadius: [0, 0, 0, 0]
  305. }
  306. }]
  307. },
  308. // 近一周收益额度(元)
  309. option3: {
  310. tooltip: {
  311. trigger: 'axis',
  312. axisPointer: {
  313. type: 'shadow'
  314. },
  315. confine: true
  316. },
  317. grid: {
  318. left: 0,
  319. right: 8,
  320. bottom: 20,
  321. top: 30,
  322. containLabel: true
  323. },
  324. xAxis: [{
  325. type: 'category',
  326. data: [],
  327. axisLine: {
  328. lineStyle: {
  329. color: '#999999'
  330. }
  331. },
  332. axisLabel: {
  333. color: '#666666',
  334. // interval: 0,
  335. }
  336. }],
  337. yAxis: [{
  338. type: 'value',
  339. axisTick: {
  340. show: false
  341. },
  342. axisLine: {
  343. lineStyle: {
  344. color: '#999999'
  345. }
  346. },
  347. axisLabel: {
  348. color: '#666666'
  349. }
  350. }],
  351. series: [{
  352. name: '订单',
  353. type: 'bar',
  354. label: {
  355. normal: {
  356. show: true,
  357. position: 'top',
  358. color: '#FF770F',
  359. formatter: '¥{c}',
  360. },
  361. },
  362. data: [285, 200, 285, 300, 285, 285, 320],
  363. barWidth: 15,
  364. itemStyle: {
  365. // 颜色
  366. color: '#FF770F',
  367. // 给bar设置倒角
  368. barBorderRadius: [0, 0, 0, 0]
  369. }
  370. }]
  371. }
  372. }
  373. },
  374. onLoad(options) {
  375. },
  376. onShow() {
  377. },
  378. methods: {
  379. jumpUrl(url) {
  380. if (req.isLogins(true)) {
  381. uni.navigateTo({
  382. url: url
  383. })
  384. }
  385. },
  386. queryTypeChange(val) {
  387. if (this.queryType == val) return false
  388. this.queryType = val
  389. },
  390. // 统计时间切换
  391. timeTypeChange(val) {
  392. if (this.timeType == val) return false
  393. this.timeType = val
  394. },
  395. init() {
  396. this.$refs.chart.init(echarts, async chart => {
  397. // let echartData = await this.getEchartData()
  398. this.option.xAxis[0].data = ['04-04', '04-05', '04-06', '04-07', '04-08', '04-09', '04-10']
  399. this.option.yAxis[0].axisLabel.fontSize = 13 * this.rpxTopxScale
  400. this.option.xAxis[0].axisLabel.fontSize = 13 * this.rpxTopxScale
  401. this.option.series[0].data = [100, 270, 340, 344, 300, 320, 310]
  402. chart.setOption(this.option);
  403. });
  404. if (this.$refs.chart2) {
  405. this.$refs.chart2.init(echarts, async chart => {
  406. // let echartData = await this.getEchartData()
  407. this.option2.xAxis[0].data = ['04-04', '04-05', '04-06', '04-07', '04-08', '04-09',
  408. '04-10'
  409. ]
  410. this.option2.yAxis[0].axisLabel.fontSize = 13 * this.rpxTopxScale
  411. this.option2.xAxis[0].axisLabel.fontSize = 13 * this.rpxTopxScale
  412. this.option2.series[0].data = [300, 270, 340, 344, 300, 320, 310]
  413. this.option2.series[0].label.normal.fontSize = 13 * this.rpxTopxScale
  414. chart.setOption(this.option2);
  415. });
  416. }
  417. if (this.$refs.chart3) {
  418. this.$refs.chart3.init(echarts, async chart => {
  419. // let echartData = await this.getEchartData()
  420. this.option3.xAxis[0].data = ['04-04', '04-05', '04-06', '04-07', '04-08', '04-09',
  421. '04-10'
  422. ]
  423. this.option3.yAxis[0].axisLabel.fontSize = 13 * this.rpxTopxScale
  424. this.option3.xAxis[0].axisLabel.fontSize = 13 * this.rpxTopxScale
  425. this.option3.series[0].data = [300, 270, 340, 344, 300, 320, 310]
  426. this.option3.series[0].label.normal.fontSize = 13 * this.rpxTopxScale
  427. chart.setOption(this.option3);
  428. });
  429. }
  430. }
  431. },
  432. mounted() {
  433. const systemInfo = uni.getSystemInfoSync();
  434. // px转换到rpx的比例
  435. let pxToRpxScale = 750 / systemInfo.windowWidth;
  436. this.pxToRpxScale = pxToRpxScale
  437. this.rpxTopxScale = systemInfo.windowWidth / 750
  438. let systems = {
  439. ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
  440. navigationHeight: 44 * pxToRpxScale // 导航栏的高度
  441. };
  442. systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
  443. this.systems = systems;
  444. },
  445. onPageScroll: function(e) {
  446. if (e.scrollTop > this.systems.barHeight) {
  447. this.isTop = 1;
  448. } else {
  449. this.isTop = 0;
  450. }
  451. }
  452. }
  453. </script>
  454. <style>
  455. @import "./operationData.css";
  456. </style>