20 changed files with 482 additions and 94 deletions
			
			
		- 
					10.env.development
- 
					2package.json
- 
					25src/api/library.js
- 
					6src/assets/styles/index.scss
- 
					32src/components/echart/lineChart.vue
- 
					202src/components/echart/lineChartService.vue
- 
					10src/main.js
- 
					24src/router/index.js
- 
					12src/utils/request.js
- 
					0src/views/accessToLibrary/index.vue
- 
					14src/views/header/index.vue
- 
					20src/views/index.vue
- 
					63src/views/indexSelfService.vue
- 
					28src/views/lengingRanking/index.vue
- 
					2src/views/newBookRecommend/index.vue
- 
					0src/views/notice/index.vue
- 
					2src/views/readStar/index.vue
- 
					61src/views/todayBorrowed/index.vue
- 
					55src/views/totalLending/index.vue
- 
					8vue.config.js
| @ -0,0 +1,25 @@ | |||||
|  | import request from '@/utils/request' | ||||
|  | // import qs from 'qs'
 | ||||
|  | 
 | ||||
|  | // 总借阅量
 | ||||
|  | export function FetchHalfYearBorrowNum(params) { | ||||
|  |   return request({ | ||||
|  |     url: '/txhtsg/getHalfYearBorrowNum', | ||||
|  |     method: 'get', | ||||
|  |     params: params | ||||
|  |   }) | ||||
|  | } | ||||
|  | 
 | ||||
|  | // 借阅排行榜
 | ||||
|  | export function FetchBorrowRank(params) { | ||||
|  |   return request({ | ||||
|  |     url: '/txhtsg/borrowRank', | ||||
|  |     method: 'get', | ||||
|  |     params: params | ||||
|  |   }) | ||||
|  | } | ||||
|  | 
 | ||||
|  | export default { | ||||
|  |   FetchHalfYearBorrowNum, | ||||
|  |   FetchBorrowRank | ||||
|  | } | ||||
| @ -0,0 +1,202 @@ | |||||
|  | <template> | ||||
|  |   <div id="main2" :style="{height:height,width:width}" /> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import echarts from 'echarts' | ||||
|  | import resize from '@/utils/resizeMixins.js' | ||||
|  | export default { | ||||
|  |   name: 'LineEcharts', | ||||
|  |   mixins: [resize], | ||||
|  |   props: { | ||||
|  |     className: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     }, | ||||
|  |     chartData: { | ||||
|  |       type: Object, | ||||
|  |       required: true | ||||
|  |     }, | ||||
|  |     width: { | ||||
|  |       type: String, | ||||
|  |       default: '100%' | ||||
|  |     }, | ||||
|  |     height: { | ||||
|  |       type: String, | ||||
|  |       default: 'calc(100% - 20px)' | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       chart: null | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   watch: { | ||||
|  |     chartData: { | ||||
|  |       deep: true, | ||||
|  |       handler(val) { | ||||
|  |         this.setOptions(val) | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   mounted() { | ||||
|  |     this.$nextTick(() => { | ||||
|  |       this.initChart() | ||||
|  |     }) | ||||
|  |   }, | ||||
|  |   beforeDestroy() { | ||||
|  |     if (!this.chart) { | ||||
|  |       return | ||||
|  |     } | ||||
|  |     this.chart.dispose() | ||||
|  |     this.chart = null | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     initChart() { | ||||
|  |       const dom = document.getElementById('main2') | ||||
|  |       this.chart = echarts.init(dom, 'dark') | ||||
|  |       this.setOptions(this.chartData) | ||||
|  |     }, | ||||
|  |     setOptions({ returnData, borrowedData } = {}) { | ||||
|  |       this.chart.setOption({ | ||||
|  |         backgroundColor: '#010326', | ||||
|  |         tooltip: { | ||||
|  |           trigger: 'axis', | ||||
|  |           axisPointer: { | ||||
|  |             type: 'cross', | ||||
|  |             label: { | ||||
|  |               backgroundColor: '#6a7985' | ||||
|  |             } | ||||
|  |           } | ||||
|  |         }, | ||||
|  |         legend: { | ||||
|  |           top: '4%', | ||||
|  |           right: '4%', | ||||
|  |           icon: 'rect', | ||||
|  |           itemHeight: 4, | ||||
|  |           itemWidth: 26, | ||||
|  |           textStyle: { | ||||
|  |             fontSize: '16px', | ||||
|  |             color: '#339CFF' | ||||
|  |           }, | ||||
|  |           data: ['借出', '归还'] | ||||
|  |         }, | ||||
|  |         grid: { | ||||
|  |           left: '2%', | ||||
|  |           right: '4%', | ||||
|  |           bottom: '0', | ||||
|  |           containLabel: true | ||||
|  |         }, | ||||
|  |         xAxis: [{ | ||||
|  |           type: 'category', | ||||
|  |           boundaryGap: false, | ||||
|  |           // 坐标轴轴线相关设置 | ||||
|  |           axisLine: { | ||||
|  |             show: true, | ||||
|  |             lineStyle: { | ||||
|  |               width: '1', | ||||
|  |               color: '#113D72', | ||||
|  |               type: 'solid' | ||||
|  |             } | ||||
|  |           }, | ||||
|  |           axisLabel: { | ||||
|  |             fontWeight: 'bold', | ||||
|  |             color: '#fff' | ||||
|  |           }, | ||||
|  |           data: ['04:00', '08:00', '12:00', '16:00', '20:00', '24:00'] | ||||
|  |         }], | ||||
|  |         yAxis: [ | ||||
|  |           { | ||||
|  |             type: 'value', | ||||
|  |             // 坐标轴最大值、最小值、强制设置数据的步长间隔 | ||||
|  |             max: 1000, | ||||
|  |             min: 0, | ||||
|  |             interval: 250, | ||||
|  |             axisLabel: { | ||||
|  |               textStyle: { | ||||
|  |                 color: '#fff', | ||||
|  |                 fontWeight: 'bold' | ||||
|  |               } | ||||
|  |             }, | ||||
|  |             // 轴线 | ||||
|  |             axisLine: { | ||||
|  |               show: true, | ||||
|  |               lineStyle: { | ||||
|  |                 color: '#113D72', | ||||
|  |                 width: '1', | ||||
|  |                 type: 'solid' | ||||
|  |               } | ||||
|  |             }, | ||||
|  |             // 坐标轴刻度相关设置。 | ||||
|  |             axisTick: { | ||||
|  |               show: false | ||||
|  |             }, | ||||
|  |             // 分割线 | ||||
|  |             splitLine: { | ||||
|  |               show: true, | ||||
|  |               lineStyle: { | ||||
|  |                 color: '#113D72', | ||||
|  |                 type: 'dashed', | ||||
|  |                 // 透明度 | ||||
|  |                 opacity: 1, | ||||
|  |                 width: 1 | ||||
|  |               } | ||||
|  |             } | ||||
|  |           } | ||||
|  |         ], | ||||
|  |         series: [ | ||||
|  |           { | ||||
|  |             name: '归还', | ||||
|  |             type: 'line', | ||||
|  |             smooth: 0.6, | ||||
|  |             lineStyle: { | ||||
|  |               width: 1, | ||||
|  |               color: '#18B08F' | ||||
|  |             }, | ||||
|  |             showSymbol: false, | ||||
|  |             areaStyle: { | ||||
|  |               opacity: 0.6, | ||||
|  |               color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ | ||||
|  | 
 | ||||
|  |                 { | ||||
|  |                   offset: 0, | ||||
|  |                   color: 'rgba(24, 176, 143, 0)' | ||||
|  |                 }, | ||||
|  |                 { | ||||
|  |                   offset: 1, | ||||
|  |                   color: 'rgba(23, 175, 142, 1)' | ||||
|  |                 } | ||||
|  |               ]) | ||||
|  |             }, | ||||
|  |             data: returnData | ||||
|  |           }, | ||||
|  |           { | ||||
|  |             name: '借出', | ||||
|  |             type: 'line', | ||||
|  |             smooth: 0.4, | ||||
|  |             lineStyle: { | ||||
|  |               width: 1, | ||||
|  |               color: '#FE8042' | ||||
|  |             }, | ||||
|  |             showSymbol: false, | ||||
|  |             areaStyle: { | ||||
|  |               opacity: 0.6, | ||||
|  |               color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ | ||||
|  |                 { | ||||
|  |                   offset: 0, | ||||
|  |                   color: 'rgba(254, 128, 66, 0)' | ||||
|  |                 }, | ||||
|  |                 { | ||||
|  |                   offset: 1, | ||||
|  |                   color: 'rgba(254, 128, 66, 1)' | ||||
|  |                 } | ||||
|  |               ]) | ||||
|  |             }, | ||||
|  |             data: borrowedData | ||||
|  |           } | ||||
|  |         ] | ||||
|  |       }) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
| @ -0,0 +1,63 @@ | |||||
|  | <template> | ||||
|  |   <div id="screen-container"> | ||||
|  |     <Header :header-title="headerTitle" /> | ||||
|  |     <div class="screen-main"> | ||||
|  |       <div class="screen-left"> | ||||
|  |         <TodayBorrowed :chart-data="chartData" /> | ||||
|  |         <LengingRanking /> | ||||
|  |       </div> | ||||
|  |       <div class="screen-middle"> | ||||
|  |         <AccessToLibrary /> | ||||
|  |         <div class="video-box"> | ||||
|  |           <video width="100%" height="100%" controls loop autoplay muted :poster="poster"> | ||||
|  |             <source :src="src" type="video/mp4"> | ||||
|  |           </video> | ||||
|  |         </div> | ||||
|  |         <ReadStar /> | ||||
|  |       </div> | ||||
|  |       <div class="screen-right"> | ||||
|  |         <Notice /> | ||||
|  |         <NewBookRecommend /> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import Header from '@/views/header/index.vue' | ||||
|  | import TodayBorrowed from '@/views/todayBorrowed/index.vue' | ||||
|  | import LengingRanking from '@/views/lengingRanking/index.vue' | ||||
|  | import AccessToLibrary from '@/views/accessToLibrary/index.vue' | ||||
|  | import Notice from '@/views/notice/index.vue' | ||||
|  | import NewBookRecommend from '@/views/newBookRecommend/index.vue' | ||||
|  | import ReadStar from '@/views/readStar/index.vue' | ||||
|  | export default { | ||||
|  |   name: 'Home', | ||||
|  |   components: { | ||||
|  |     Header, | ||||
|  |     TodayBorrowed, | ||||
|  |     LengingRanking, | ||||
|  |     AccessToLibrary, | ||||
|  |     ReadStar, | ||||
|  |     Notice, | ||||
|  |     NewBookRecommend | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       headerTitle: '24小时自助图书馆', | ||||
|  |       poster: 'https://qiniu.aiyxlib.com/1658104787005.jpg', | ||||
|  |       src: 'https://qiniu.aiyxlib.com/1658104739000.mp4' | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |   }, | ||||
|  |   mounted() { | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss"> | ||||
|  | @import "~@/assets/styles/index.scss"; | ||||
|  | </style> | ||||
| @ -0,0 +1,61 @@ | |||||
|  | <template> | ||||
|  |   <!-- 今日图书借还 --> | ||||
|  |   <div class="screen-item total-lending"> | ||||
|  |     <div class="common-title">今日图书借还</div> | ||||
|  |     <div class="small-module module-content"> | ||||
|  |       <div class="chart-wrapper" style="height: calc(100%);"> | ||||
|  |         <LineChartService :chart-data="chartData" /> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import LineChartService from '@/components/echart/lineChartService' | ||||
|  | import { FetchHalfYearBorrowNum } from '@/api/library' | ||||
|  | export default { | ||||
|  |   name: 'TodayBorrowed', | ||||
|  |   components: { | ||||
|  |     LineChartService | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       chartData: { | ||||
|  |         returnData: [0, 232, 101, 264, 90, 500, 250], | ||||
|  |         borrowedData: [130, 60, 400, 234, 120, 340, 600] | ||||
|  |       } | ||||
|  | 
 | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |   }, | ||||
|  |   mounted() { | ||||
|  |     // this.getHalfYearBorrowNum() | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     getHalfYearBorrowNum() { | ||||
|  |       const params = { | ||||
|  |         ip: '111' | ||||
|  |       } | ||||
|  |       FetchHalfYearBorrowNum(params).then(res => { | ||||
|  |         console.log(res) | ||||
|  |         if (res.errCode === 0) { | ||||
|  |           // this.totalLendData = res.data.total | ||||
|  |           // this.chartData.totalLendMonth = res.data.list.map(item => { | ||||
|  |           //   return item.date | ||||
|  |           // }) | ||||
|  |           // this.chartData.totalLendData = res.data.list.map(item => { | ||||
|  |           //   return item.total | ||||
|  |           // }) | ||||
|  |         } else { | ||||
|  |           this.$message.error('接口错误') | ||||
|  |         } | ||||
|  |       }) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss"> | ||||
|  | @import "~@/assets/styles/index.scss"; | ||||
|  | </style> | ||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue