Browse Source

自助查询机效果/其他修改

master
xuhuajiao 2 years ago
parent
commit
ae0f4f337c
  1. 54
      src/assets/iconfont/demo_index.html
  2. 16
      src/assets/iconfont/iconfont.css
  3. 2
      src/assets/iconfont/iconfont.js
  4. 16
      src/assets/iconfont/iconfont.json
  5. 4
      src/assets/iconfont/iconfont.svg
  6. BIN
      src/assets/iconfont/iconfont.ttf
  7. BIN
      src/assets/iconfont/iconfont.woff
  8. BIN
      src/assets/iconfont/iconfont.woff2
  9. BIN
      src/assets/images/default-img.png
  10. BIN
      src/assets/images/num-img.png
  11. BIN
      src/assets/images/star-1.png
  12. BIN
      src/assets/images/star-2.png
  13. BIN
      src/assets/images/star-3.png
  14. BIN
      src/assets/images/title.png
  15. 97
      src/assets/styles/_variables.scss
  16. 46
      src/assets/styles/font-some.css
  17. 236
      src/assets/styles/index.scss
  18. 1
      src/assets/styles/style.scss
  19. 185
      src/components/echart/lineChart.vue
  20. 2
      src/router/index.js
  21. 48
      src/views/accessToLibrary.vue
  22. 76
      src/views/digitalResource.vue
  23. 28
      src/views/digitalResourceJson.json
  24. 56
      src/views/header/index.vue
  25. 69
      src/views/lengingRanking.vue
  26. 181
      src/views/newBookRecommend.vue
  27. 52
      src/views/notice.vue
  28. 65
      src/views/readStar.vue
  29. 80
      src/views/totalLending.vue
  30. 2
      vue.config.js

54
src/assets/iconfont/demo_index.html

@ -54,6 +54,18 @@
<div class="content unicode" style="display: block;"> <div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe635;</span>
<div class="name">右滑</div>
<div class="code-name">&amp;#xe635;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe638;</span>
<div class="name">左滑</div>
<div class="code-name">&amp;#xe638;</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont">&#xe636;</span> <span class="icon iconfont">&#xe636;</span>
<div class="name">no.2</div> <div class="name">no.2</div>
@ -150,10 +162,10 @@
<pre><code class="language-css" <pre><code class="language-css"
>@font-face { >@font-face {
font-family: 'iconfont'; font-family: 'iconfont';
src: url('iconfont.woff2?t=1663379994606') format('woff2'),
url('iconfont.woff?t=1663379994606') format('woff'),
url('iconfont.ttf?t=1663379994606') format('truetype'),
url('iconfont.svg?t=1663379994606#iconfont') format('svg');
src: url('iconfont.woff2?t=1663843773274') format('woff2'),
url('iconfont.woff?t=1663843773274') format('woff'),
url('iconfont.ttf?t=1663843773274') format('truetype'),
url('iconfont.svg?t=1663843773274#iconfont') format('svg');
} }
</code></pre> </code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3> <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -179,6 +191,24 @@
<div class="content font-class"> <div class="content font-class">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-youhua"></span>
<div class="name">
右滑
</div>
<div class="code-name">.icon-youhua
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zuohua"></span>
<div class="name">
左滑
</div>
<div class="code-name">.icon-zuohua
</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont icon-a-no21"></span> <span class="icon iconfont icon-a-no21"></span>
<div class="name"> <div class="name">
@ -323,6 +353,22 @@
<div class="content symbol"> <div class="content symbol">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-youhua"></use>
</svg>
<div class="name">右滑</div>
<div class="code-name">#icon-youhua</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zuohua"></use>
</svg>
<div class="name">左滑</div>
<div class="code-name">#icon-zuohua</div>
</li>
<li class="dib"> <li class="dib">
<svg class="icon svg-icon" aria-hidden="true"> <svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-a-no21"></use> <use xlink:href="#icon-a-no21"></use>

16
src/assets/iconfont/iconfont.css

@ -1,9 +1,9 @@
@font-face { @font-face {
font-family: "iconfont"; /* Project id 3646564 */ font-family: "iconfont"; /* Project id 3646564 */
src: url('iconfont.woff2?t=1663379994606') format('woff2'),
url('iconfont.woff?t=1663379994606') format('woff'),
url('iconfont.ttf?t=1663379994606') format('truetype'),
url('iconfont.svg?t=1663379994606#iconfont') format('svg');
src: url('iconfont.woff2?t=1663843773274') format('woff2'),
url('iconfont.woff?t=1663843773274') format('woff'),
url('iconfont.ttf?t=1663843773274') format('truetype'),
url('iconfont.svg?t=1663843773274#iconfont') format('svg');
} }
.iconfont { .iconfont {
@ -14,6 +14,14 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-youhua:before {
content: "\e635";
}
.icon-zuohua:before {
content: "\e638";
}
.icon-a-no21:before { .icon-a-no21:before {
content: "\e636"; content: "\e636";
} }

2
src/assets/iconfont/iconfont.js
File diff suppressed because it is too large
View File

16
src/assets/iconfont/iconfont.json

@ -1,10 +1,24 @@
{ {
"id": "3646564", "id": "3646564",
"name": "智慧屏",
"name": "东西湖图书馆",
"font_family": "iconfont", "font_family": "iconfont",
"css_prefix_text": "icon-", "css_prefix_text": "icon-",
"description": "", "description": "",
"glyphs": [ "glyphs": [
{
"icon_id": "31966175",
"name": "右滑",
"font_class": "youhua",
"unicode": "e635",
"unicode_decimal": 58933
},
{
"icon_id": "31966176",
"name": "左滑",
"font_class": "zuohua",
"unicode": "e638",
"unicode_decimal": 58936
},
{ {
"icon_id": "31879702", "icon_id": "31879702",
"name": "no.2", "name": "no.2",

4
src/assets/iconfont/iconfont.svg
File diff suppressed because it is too large
View File

BIN
src/assets/iconfont/iconfont.ttf

BIN
src/assets/iconfont/iconfont.woff

BIN
src/assets/iconfont/iconfont.woff2

BIN
src/assets/images/default-img.png

After

Width: 66  |  Height: 83  |  Size: 6.8 KiB

BIN
src/assets/images/num-img.png

Before

Width: 220  |  Height: 68  |  Size: 6.1 KiB

BIN
src/assets/images/star-1.png

Before

Width: 700  |  Height: 40  |  Size: 6.4 KiB

BIN
src/assets/images/star-2.png

Before

Width: 700  |  Height: 40  |  Size: 5.5 KiB

BIN
src/assets/images/star-3.png

Before

Width: 700  |  Height: 40  |  Size: 6.7 KiB

BIN
src/assets/images/title.png

Before

Width: 510  |  Height: 38  |  Size: 4.2 KiB

97
src/assets/styles/_variables.scss

@ -1,97 +0,0 @@
// 颜色
$colors: (
"primary": #db9e3f,
"info-1": #4394e4,
"info": #4b67af,
"white": #ffffff,
"light": #f9f9f9,
"grey-1": #999999,
"grey": #666666,
"dark-1": #5f5f5f,
"dark": #222222,
"black-1": #171823,
"black": #000000,
);
// 字体大小
$base-font-size: 0.2rem;
$font-sizes: (
xxs: 0.1,
//8px
xs: 0.125,
//10px
sm: 0.2875,
//12px
md: 0.1625,
//13px
lg: 0.175,
//14px
xl: 0.2,
//16px
xxl: 0.225,
//18px
xxxl: 0.25
);
// 宽高
.w-100 {
width: 100%;
}
.h-100 {
height: 100%;
}
//flex
.d-flex {
display: flex;
}
.flex-column {
flex-direction: column;
}
.flex-wrap {
flex-wrap: wrap;
}
.flex-nowrap {
flex-wrap: nowrap;
}
$flex-jc: (
start: flex-start,
end: flex-end,
center: center,
between: space-between,
around: space-around,
evenly: space-evenly,
);
$flex-ai: (
start: flex-start,
end: flex-end,
center: center,
stretch: stretch,
);
.flex-1 {
flex: 1;
}
//.mt-1 => margin top
//spacing
$spacing-types: (
m: margin,
p: padding,
);
$spacing-directions: (
t: top,
r: right,
b: bottom,
l: left,
);
$spacing-base-size: 0.2rem;
$spacing-sizes: (
0: 0,
1: 0.25,
2: 0.5,
3: 1,
4: 1.5,
5: 3,
);

46
src/assets/styles/font-some.css

@ -1,46 +0,0 @@
.chartNum{
display: flex;
justify-content: center;
margin-top: 0.25rem;
}
.box-items {
position: relative;
display: flex;
height: 0.6rem;
text-align: center;
}
/*滚动数字设置*/
.number-item {
display: flex;
justify-content: center;
text-align: center;
width: 0.45rem;
height: 0.6rem;
line-height: 0.6rem;
margin-right: 0.125rem;
border: 1px solid #2C75E0;
}
.number-item span{
position: relative;
display: inline-block;
width: 100%;
height: 100%;
writing-mode: vertical-rl;
text-orientation: upright;
overflow: hidden;
}
.number-item span i{
font-style: normal;
position: absolute;
top: 0.1rem;
left: 50%;
font-size: 0.325rem;
font-weight: bold;
color: #1AC9FF;
transform: translate(-50%,0);
transition: transform 1s ease-in-out;
letter-spacing: 10px;
}
.number-item:last-child {
margin-right: 0;
}

236
src/assets/styles/index.scss

@ -169,247 +169,15 @@
} }
} }
} }
.tac{ .tac{
text-align: center; text-align: center;
} }
// 头部主题标题
.header-container{
position: relative;
font-size: 0.3rem;
color: #fff;
.header-title{
width: 100%;
height: 1.125rem;
background: url('~@/assets/images/top.png') no-repeat center -5px;
background-size: cover;
h2{
font-size: 0.6rem;
font-family: "ZhenyanGB";
font-weight: normal;
line-height: 1.125rem;
text-align: center;
letter-spacing: 0.2rem;
background: linear-gradient(180deg, #FFFFFF 0%, #1AC9FF 100%);
background-clip: text;
color: transparent;
}
}
.header-text{
position: absolute;
top: 0.65rem;
}
.header-weather {
left: 1rem;
// top: 0.32rem;
}
.header-date {
right: 0.375rem;
}
}
// 主题内部部分
.screen-main{
display: flex;
justify-content: space-between;
height: calc(100% - 155px);
margin: 0.0625rem 0 0.5rem 0;
padding: 0 0.325rem;
.screen-left,
.screen-right{
width: 6.375rem;
}
.screen-middle{
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
margin: 0 0.5rem;
}
.screen-item{
margin-top: 0.25rem;
}
.common-title{
width: 100%;
height: 0.475rem;
line-height: 0.475rem;
padding-left: 0.525rem;
font-size: 0.325rem;
background: url('~@/assets/images/title.png') no-repeat center center;
background-size: cover;
font-family: 'YouSheBiaoTiHei';
letter-spacing: 0.1rem;
}
.module-content{
border: 1px solid #2C75E0;
box-shadow: inset 0px 0px 38px 1px rgba(44,117,224,0.5);
}
.small-module{
height: 3.75rem;
}
.medium-module{
height: 4.125rem;
}
.big-module{
height: 6.675rem;
}
//排行榜-推荐 - list
.lending-ranking{
.module-content{
padding: 0.1625rem 0.25rem;
overflow: hidden;
}
}
.book-list-item{
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.1rem 0.25rem;
// background-color: #09194B;
.book-img{
display: block;
width: 0.825rem;
height: 1.075rem;
margin-right: 0.35rem;
}
.book-info{
flex: 1;
margin-right: 0.35rem;
h4{
font-size: 0.25rem;
font-weight: normal;
}
p{
font-size: 0.2rem;
}
}
.ranking-num{
display: flex;
justify-content: space-between;
align-items: center;
.icon{
width: 0.5625rem;
height: 0.5625rem;
margin-right: 0.175rem;
}
}
}
// 进出馆人数
.accessToLib-container{
display: flex;
justify-content: space-between;
text-align: center;
align-items: center;
margin: 0.375rem 0 .25rem 0;
.accessToLib-item{
width: 2.75rem;
p{
height: 0.85rem;
margin-top: 0.125rem;
line-height: 0.85rem;
font-size: 0.325rem;
font-weight: bold;
text-align: center;
color: #1AC9FF;
background: url('~@/assets/images/num-img.png') no-repeat center center;
background-size: cover;
}
}
}
// 视频
.video-box{
width: 100%;
height: 5.075rem;
}
// 阅读之星
.read-star{
.module-content{
padding: .25rem;
overflow: hidden;
.readstart-item{
display: flex;
justify-content: space-between;
align-items: center;
height: 0.5rem;
padding: 0 0.25rem;
font-size: 0.2rem;
margin-bottom: 0.125rem;
background: linear-gradient(90deg, #0C2157 0%, rgba(44,117,224,0) 51%, #0C2157 100%);
.icon-star-1{
width: 0.35rem;
height: 0.3rem;
margin-left: -0.05rem;
margin-right: 0.2rem;
}
.icon-star-2{
width: 0.375rem;
height: 0.3rem;
margin-left: -0.0625rem;
margin-right: 0.2rem;
}
.icon-star-3{
width: 0.275rem;
height: 0.3rem;
margin-right: 0.25rem;
}
.star-num{
display: block;
width: 0.25rem;
height: 0.25rem;
margin-right: 0.25rem;
font-size: 0.2rem;
line-height: 0.25rem;
text-align: center;
border-radius: 50%;
color: #1AC9FF;
border: 1px solid #1AC9FF;
}
.star-info{
flex: 1;
margin-right: 0.25rem;
}
&.star1-bg{
background: url('~@/assets/images/star-1.png') no-repeat left top;
background-size: contain;
}
&.star2-bg{
background: url('~@/assets/images/star-2.png') no-repeat left top;
background-size: contain;
}
&.star3-bg{
background: url('~@/assets/images/star-3.png') no-repeat left top;
background-size: contain;
}
}
}
}
// 通知公告
.notice{
.module-content{
display: flex;
justify-content: space-between;
padding: 0.25rem 0.375rem 0.5rem 0.375rem;
.icon-tongzhi{
margin-right: 0.15rem;
font-size: 0.325rem;
color: #1AC9FF;
}
p{
height: 3.1rem;
overflow: hidden;
// overflow-y: auto;
}
}
}
}
.content-main{ .content-main{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
height: 880px; height: 880px;
background: #F4F4F4; background: #F4F4F4;
overflow: hidden;
} }

1
src/assets/styles/style.scss

@ -1,4 +1,3 @@
@import "./variables";
@import '~@/assets/iconfont/iconfont.css'; @import '~@/assets/iconfont/iconfont.css';
// 全局样式 // 全局样式

185
src/components/echart/lineChart.vue

@ -1,185 +0,0 @@
<template>
<div id="main" :style="{height:height,width:width}" />
</template>
<script>
import echarts from 'echarts'
import resize from '@/utils/resizeMixins.js'
export default {
name: 'AcrossEcharts',
mixins: [resize],
props: {
addArcivesData: {
type: Object,
require: true,
default: function() {
return {}
}
},
width: {
type: String,
default: '100%'
},
height: {
type: String,
default: '100%'
}
},
data() {
return {
chart: null
}
},
watch: {
'addArcivesData': {
handler(val) {
setTimeout(() => {
this.drawChart()
}, 100)
},
immediate: true,
deep: true
}
},
mounted() {
this.drawChart()
window.addEventListener('resize', this.__resizeHandler)
},
methods: {
drawChart() {
const chartDom = document.getElementById('main')
this.chart = echarts.init(chartDom)
let option = null
option = {
grid: { //
left: '2%',
right: '2%',
bottom: '5%',
top: '8%',
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#339cff'
}
}
// formatter: function(params) {
// var res = "<div style='width:100%;height:24px;margin-bottom:5px;padding:0 12px;line-height:24px;'><p>" + echarts.format.formatTime('yyyyM', new Date(params[0].name)) + ' </p></div>'
// for (var i = 0; i < params.length; i++) {
// res += `<div style="color: #fff;font-size: 14px; padding:0 12px;line-height: 24px">
// <span style="display:inline-block;margin-right:5px;border-radius:2px;width:10px;height:10px;background-color:${[params[i].color]};"></span>
// ${params[i].seriesName}
// ${params[i].data}
// </div>`
// }
// return res
// }
},
xAxis: {
type: 'category',
// data: this.addArcivesData.addArcivesMonth,
data: ['2022-01', '2022-02', '2022-03', '2022-04', '2022-05', '2022-06'],
axisLine: { // 线
lineStyle: {
color: 'rgba(17, 61, 114,0.5)'
}
},
axisTick: { show: false },
axisLabel: { // x
show: true,
textStyle: {
color: '#fff'
}
// formatter: function(value) {
// return echarts.format.formatTime('M', new Date(value))
// }
}
},
yAxis: {
type: 'value',
min: 0,
max: 1000,
splitNumber: 5,
axisLine: { // 线
// lineStyle: {
// color: '#113D72'
// }
show: false
},
axisLabel: { // x
show: true,
textStyle: {
color: '#fff'
}
},
axisTick: { // 线
show: false
},
splitLine: { // 线
lineStyle: {
color: 'rgba(17, 61, 114,0.5)',
type: 'solid'
}
}
},
series: [
{
name: '新增档案',
// data: this.addArcivesData.addArcivesNum,
data: [100, 200, 300, 500, 600, 800],
type: 'line',
areaStyle: {
normal: {
color: {
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0.1,
color: 'rgba(26, 201, 255, 0.5)' // 0%
},
{
offset: 0.5,
color: 'rgba(26, 201, 255, 0.3)' // 0%
},
{
offset: 0.7,
color: 'rgba(26, 201, 255, 0.2)' // 0%
},
{
offset: 0.9,
color: 'rgba(26, 201, 255, 0.1)' // 100%
}
]
// globalCoord: false // false
}
}
},
itemStyle: {
normal: {
color: '#339CFF', // 线
lineStyle: {
color: 'rgba(26, 201, 255,0.5)' // 线
}
}
}
}
]
}
option && this.chart.setOption(option)
}
}
}
</script>
<style lang="scss" scoped>
.h{
color: rgb(26, 201, 255);
}
</style>

2
src/router/index.js

@ -9,7 +9,7 @@ const routes = [
name: 'index', name: 'index',
component: () => import('../views/index.vue'), component: () => import('../views/index.vue'),
meta: { meta: {
title: '自查询机'
title: '自查询机'
} }
}, },
{ {

48
src/views/accessToLibrary.vue

@ -1,48 +0,0 @@
<template>
<div class="accessToLib-container">
<div class="accessToLib-item">
<span>总进馆人数</span>
<p>2,125,462</p>
</div>
<div class="accessToLib-item">
<span>月进馆人数</span>
<p>10,062</p>
</div>
<div class="accessToLib-item">
<span>今日进馆人数</span>
<p>2,462</p>
</div>
</div>
</template>
<script>
export default {
name: 'AccessToLibrary',
data() {
return {
timer: null
}
},
created() {
//
},
mounted() {
// 15
this.timer = setInterval(() => {
//
}, 15000)
},
beforeDestroy() {
//
this.$once('hook:beforeDestroy', () => {
clearInterval(this.timer)
})
},
methods: {
}
}
</script>
<style lang="scss">
@import "~@/assets/styles/index.scss";
</style>

76
src/views/digitalResource.vue

@ -1,39 +1,25 @@
<template> <template>
<!-- 数字资源 --> <!-- 数字资源 -->
<div class="content-main"> <div class="content-main">
<!-- <div class="common-title">新书推荐</div> -->
<div class="img-module">
<div v-for="(item,index) in rankingList" :key="index" :class="{'item-big': index % 4 === 0 || index % 4 === 3, 'item-small': index % 4 === 1 || index % 4 === 2, 'main-item': true}">
<img :src="item.bgImg">
<div class="title">
{{ item.title }}
<div class="swiper mySwiper">
<div class="swiper-wrapper">
<div v-for="(item,index) in swiperListTemp" :key="index" class="swiper-slide img-module">
<div v-for="(cell,i) in item" :key="i" :class="{'item-big': i % 4 === 0 || i % 4 === 3, 'item-small': i % 4 === 1 || i % 4 === 2, 'main-item': true}">
<img :src="cell.bgImg">
<div class="title">
{{ cell.title }}
</div>
</div>
</div> </div>
</div> </div>
<!-- <div v-for="(item,index) in rankingList" :key="index" class="book-list-item">
<img class="book-img" :src="item.img">
<div class="book-info">
<h4 class="title-item">{{ item.title }}</h4>
<p>{{ item.author }}</p>
</div>
<div class="ranking-num">
<svg v-if="item.ranking === 1" class="icon" aria-hidden="true">
<use xlink:href="#icon-a-no1" />
</svg>
<svg v-if="item.ranking === 2" class="icon" aria-hidden="true">
<use xlink:href="#icon-a-no21" />
</svg>
<svg v-if="item.ranking === 3" class="icon" aria-hidden="true">
<use xlink:href="#icon-a-no3" />
</svg>
<p>NO.{{ item.ranking }}</p>
</div>
</div> -->
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import data from './digitalResourceJson' import data from './digitalResourceJson'
import { Swiper } from 'vue-awesome-swiper'
import 'swiper/swiper-bundle.css'
export default { export default {
name: 'DigitalResource', name: 'DigitalResource',
@ -42,39 +28,56 @@ export default {
rankingList: [] rankingList: []
} }
}, },
computed: {
//
swiperListTemp() {
let index = 0
const count = 4
const arrTemp = []
const experts = this.rankingList
for (let i = 0; i < this.rankingList.length; i++) {
index = parseInt(i / count)
if (arrTemp.length <= index) {
arrTemp.push([])
}
arrTemp[index].push(experts[i])
}
return arrTemp
}
},
created() { created() {
this.rankingList = data.srcList1 this.rankingList = data.srcList1
}, },
mounted() { mounted() {
},
destroyed() {
this.initSwiper()
}, },
methods: { methods: {
initSwiper() {
this.$nextTick(() => {
new Swiper('.swiper', {})
})
}
} }
} }
</script> </script>
<style lang="scss">
<style lang="scss">
@import "~@/assets/styles/index.scss"; @import "~@/assets/styles/index.scss";
.img-module { .img-module {
padding: 40px;
height: 100%;
width: 100%; width: 100%;
height: 100%;
padding: 40px;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
align-content: space-between; align-content: space-between;
.main-item { .main-item {
// height: 387px;
// margin-bottom: 40px;
// padding: 0 40px;
// overflow: hidden;
position: relative; position: relative;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
border-radius: 31px 31px 31px 31px;
border-radius: 30px;
} }
.title { .title {
position: absolute; position: absolute;
@ -99,6 +102,9 @@ export default {
.item-small { .item-small {
width: 800px; width: 800px;
height: 310px; height: 310px;
.title {
font-size: 64px;
}
} }
} }
</style> </style>

28
src/views/digitalResourceJson.json

@ -91,20 +91,20 @@
], ],
"srcList":[ "srcList":[
{ {
"title":"图书馆公开课",
"bgImg":"http://192.168.99.84:8080/numresurces/getImgFromByte.do?nrsId=4028e3d48354830301835a1bf2870003"
},
{
"title":"武汉微刊",
"bgImg":"http://192.168.99.84:8080/numresurces/getImgFromByte.do?nrsId=4028e3d48354830301835a1b1d9e0002"
"title":"武汉云阅读",
"bgImg":"http://192.168.99.84:8080/numresurces/getImgFromByte.do?nrsId=4028e3d48354830301835a16da710000"
}, },
{ {
"title":"在线书城", "title":"在线书城",
"bgImg":"http://192.168.99.84:8080/numresurces/getImgFromByte.do?nrsId=4028e3d48354830301835a1a50720001" "bgImg":"http://192.168.99.84:8080/numresurces/getImgFromByte.do?nrsId=4028e3d48354830301835a1a50720001"
}, },
{ {
"title":"武汉云阅读",
"bgImg":"http://192.168.99.84:8080/numresurces/getImgFromByte.do?nrsId=4028e3d48354830301835a16da710000"
"title":"武汉微刊",
"bgImg":"http://192.168.99.84:8080/numresurces/getImgFromByte.do?nrsId=4028e3d48354830301835a1b1d9e0002"
},
{
"title":"图书馆公开课",
"bgImg":"http://192.168.99.84:8080/numresurces/getImgFromByte.do?nrsId=4028e3d48354830301835a1bf2870003"
} }
], ],
"srcList1":[ "srcList1":[
@ -123,6 +123,18 @@
{ {
"title":"武汉云阅读", "title":"武汉云阅读",
"bgImg":"https://qiniu.aiyxlib.com/bg.png" "bgImg":"https://qiniu.aiyxlib.com/bg.png"
},
{
"title":"图书馆公开课2",
"bgImg":"https://qiniu.aiyxlib.com/bg.png"
},
{
"title":"武汉微刊2",
"bgImg":"https://qiniu.aiyxlib.com/bg.png"
},
{
"title":"在线书城2",
"bgImg":"https://qiniu.aiyxlib.com/bg.png"
} }
], ],
"authors":[ "authors":[

56
src/views/header/index.vue

@ -1,56 +0,0 @@
<template>
<div class="header-container">
<!-- <ul class="header-nav">
<li>
<img src="~@/assets/images/top.png">
<p>图书检索</p>
</li>
<li @click="toHotBook">
<img src="~@/assets/images/top.png">
<p>热门图书</p>
</li>
<li @click="toAuthor">
<img src="~@/assets/images/top.png">
<p>作者推荐</p>
</li>
<li @click="toDigital">
<img src="~@/assets/images/top.png">
<p>数字资源</p>
</li>
<li>
<img src="~@/assets/images/top.png">
<p>场馆导航</p>
</li>
</ul> -->
<div class="header-text header-date">{{ nowDate }}</div>
<!-- <div class="header-title"><h2>东西湖区图书馆</h2></div>
<div class="header-text header-weather">
天气api: https://www.tianqi.com/plugin -->
<!-- <iframe id="weather" width="210" scrolling="no" height="30" frameborder="0" allowtransparency="true" src="https://i.tianqi.com?c=code&id=34&color=%23FFFFFF&icon=1&py=wuhan&site=24" /> -->
<!-- </div> -->
</div>
</template>
<script>
import { getCurrentTime } from '@/utils/index'
export default {
name: 'Header',
data() {
return {
nowDate: ''
}
},
created() {
this.timer = setInterval(() => {
this.nowDate = getCurrentTime()
}, 1000)
},
mounted() {
},
methods: {
}
}
</script>
<style lang="scss">
</style>

69
src/views/lengingRanking.vue

@ -1,69 +0,0 @@
<template>
<!-- 借阅排行榜 -->
<div class="screen-item lending-ranking">
<div class="common-title">借阅排行榜</div>
<div ref="lendList" class="big-module module-content">
<div v-for="(item,index) in rankingList" :key="index" class="book-list-item">
<img class="book-img" :src="item.img">
<div class="book-info">
<h4 class="title-item">{{ item.title }}</h4>
<p>{{ item.author }}</p>
</div>
<div class="ranking-num">
<svg v-if="item.ranking === 1" class="icon" aria-hidden="true">
<use xlink:href="#icon-a-no1" />
</svg>
<svg v-if="item.ranking === 2" class="icon" aria-hidden="true">
<use xlink:href="#icon-a-no21" />
</svg>
<svg v-if="item.ranking === 3" class="icon" aria-hidden="true">
<use xlink:href="#icon-a-no3" />
</svg>
<p>NO.{{ item.ranking }}</p>
</div>
</div>
</div>
</div>
</template>
<script>
import data from './data'
import scrollMixins from '@/common/scrollMixins'
export default {
name: 'LengingRanking',
mixins: [scrollMixins],
data() {
return {
rankingList: []
}
},
created() {
this.rankingList = data.ranking
},
mounted() {
this.dataCompleteFun()
},
destroyed() {
//
clearTimeout(this.pauseTimer)
this.pauseTimer = null
clearInterval(this.scrollTimer)
this.scrollTimer = null
},
methods: {
dataCompleteFun() {
this.scrollDom = this.$refs.lendList
this.interval = 50
this.timeout = 2000
this.step = 1
//
this.autoScroll()
}
}
}
</script>
<style lang="scss">
@import "~@/assets/styles/index.scss";
</style>

181
src/views/newBookRecommend.vue

@ -1,40 +1,38 @@
<template> <template>
<!-- 新书推荐 --> <!-- 新书推荐 -->
<div class="screen-item lending-ranking">
<div class="common-title">新书推荐</div>
<div ref="newbook" class="big-module module-content">
<div v-for="(item,index) in rankingList" :key="index" class="book-list-item">
<img class="book-img" :src="item.img">
<div class="book-info">
<h4 class="title-item">{{ item.title }}</h4>
<p>{{ item.author }}</p>
</div>
<div class="ranking-num">
<svg v-if="item.ranking === 1" class="icon" aria-hidden="true">
<use xlink:href="#icon-a-no1" />
</svg>
<svg v-if="item.ranking === 2" class="icon" aria-hidden="true">
<use xlink:href="#icon-a-no21" />
</svg>
<svg v-if="item.ranking === 3" class="icon" aria-hidden="true">
<use xlink:href="#icon-a-no3" />
</svg>
<p>NO.{{ item.ranking }}</p>
<div class="content-main new-main">
<div class="swiper-container">
<div class="swiper-wrapper new-book-list">
<div v-for="(item,index) in rankingList" :key="index" class="swiper-slide">
<div class="book-list-item">
<div class="book-img">
<img :src="item.img" :onerror="defaultImg">
</div>
<div class="book-info">
<h4 class="title-item">{{ item.title }}</h4>
<p>作者{{ item.author }}</p>
<p>出版社教育出版社</p>
<p>出版日期2022-03-03</p>
</div>
</div>
</div> </div>
</div> </div>
<div class="icon iconfont prev-btn">&#xe638;</div>
<div class="icon iconfont next-btn">&#xe635;</div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import data from './data' import data from './data'
import scrollMixins from '@/common/scrollMixins'
import { Swiper } from 'vue-awesome-swiper'
import 'swiper/swiper-bundle.css'
export default { export default {
name: 'NewBookRecommend', name: 'NewBookRecommend',
mixins: [scrollMixins],
data() { data() {
return { return {
defaultImg: 'this.src="' + require('@/assets/images/default-img.png') + '"',
rankingList: [] rankingList: []
} }
}, },
@ -42,28 +40,131 @@ export default {
this.rankingList = data.ranking this.rankingList = data.ranking
}, },
mounted() { mounted() {
this.dataCompleteFun()
},
destroyed() {
//
clearTimeout(this.pauseTimer)
this.pauseTimer = null
clearInterval(this.scrollTimer)
this.scrollTimer = null
this.initSwiper()
}, },
methods: { methods: {
dataCompleteFun() {
this.scrollDom = this.$refs.newbook
this.interval = 50
this.timeout = 2000
this.step = 1
//
this.autoScroll()
initSwiper() {
this.$nextTick(() => {
new Swiper('.swiper-container', {
touchEventsTarget: '.swiper-container',
slidesPerView: 5,
spaceBetween: 20,
centeredSlides: true,
observer: true,
loop: true,
centeredSlidesBounds: true,
watchSlidesVisibility: true,
navigation: {
nextEl: '.next-btn',
prevEl: '.prev-btn'
}
})
})
} }
} }
} }
</script> </script>
<style lang="scss">
@import "~@/assets/styles/index.scss";
</style>
<style lang="scss">
@import "~@/assets/styles/index.scss";
.new-main{
position: relative;
padding: 0 50px;
}
.new-book-list{
color: #333;
.book-list-item{
width: 100%;
box-shadow: 0px 0px 20px 1px #D2D2D2;
border-radius: 2px 2px 2px 2px;
}
.book-img{
height: 6.575rem;
img{
display: block;
width: 100%;
height: 100%;
}
}
.book-info{
padding: 10px 20px;
h4{
font-weight: normal;
margin-bottom: 20px;
}
p{
margin-bottom: 10px;
}
}
}
.prev-btn,
.next-btn{
position: absolute;
bottom: 60px;
font-size: 60px;
color: #71C09E;
z-index: 999;
}
.prev-btn{
left: 100px;
}
.next-btn{
right: 100px;
}
.swiper-container {
width: 100%;
height: 100%;
overflow: hidden;
}
.swiper-slide {
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
transition: 300ms;
transform: scale(0.84);
.book-info{
line-height: 20px;
font-size: 16px;
h4{
font-size: 20px;
}
}
}
.swiper-slide.swiper-slide-prev,
.swiper-slide.swiper-slide-next {
font-size: 28px;
transform: scale(0.9);
.book-info{
line-height: 28px;
font-size: 22px;
h4{
font-size: 28px;
}
}
}
.swiper-slide-active,.swiper-slide-duplicate-active {
transform: scaleX(1);
.book-info{
line-height: 40px;
font-size: 28px;
h4{
font-size: 40px;
}
}
}
</style>

52
src/views/notice.vue

@ -1,52 +0,0 @@
<template>
<!-- 通知公告 -->
<div class="screen-item notice">
<div class="common-title">通知公告</div>
<div class="small-module module-content">
<i class="iconfont icon-tongzhi" />
<p ref="noticetxt">经区政府批准区人力资源和社会保障局人事工作综合事务中心协助组织符合政府安排工作条件退役士兵安排考试综合成绩由量化评分和笔试成绩合并计算量化评分占总成绩的60%笔试成绩占总成绩的40%服役期间量化评分由通州区退役军人事务局依据退役军人事务部中央军委政治工作部2018年12月14日下发的服役期间量化评分由通州区退役军人事务局依据退役军人事务部中央军委政治工作部2018年12月14日下发的</p>
</div>
</div>
</template>
<script>
import scrollMixins from '@/common/scrollMixins'
export default {
name: 'Notice',
mixins: [scrollMixins],
data() {
return {
// interval: 3000,
// scrollTimer: null, //
// pauseTimer: null //
}
},
created() {
},
mounted() {
this.dataCompleteFun()
},
destroyed() {
//
clearTimeout(this.pauseTimer)
this.pauseTimer = null
clearInterval(this.scrollTimer)
this.scrollTimer = null
},
methods: {
//
dataCompleteFun() {
this.scrollDom = this.$refs.noticetxt
this.interval = 150
this.timeout = 5000
this.step = 1
//
this.autoScroll()
}
}
}
</script>
<style lang="scss">
@import "~@/assets/styles/index.scss";
</style>

65
src/views/readStar.vue

@ -1,65 +0,0 @@
<template>
<!-- 新书推荐 -->
<div class="screen-item read-star">
<div class="common-title">阅读之星</div>
<div ref="starList" class="medium-module module-content">
<div v-for="(item,index) in readstarList" :key="index" :class="['readstart-item', {'star1-bg':item.ranking===1}, {'star2-bg':item.ranking===2}, {'star3-bg':item.ranking===3}]">
<svg v-if="item.ranking === 1" class="icon icon-star-1" aria-hidden="true">
<use xlink:href="#icon-a-1" />
</svg>
<svg v-else-if="item.ranking === 2" class="icon icon-star-2" aria-hidden="true">
<use xlink:href="#icon-a-21" />
</svg>
<svg v-else-if="item.ranking === 3" class="icon icon-star-3" aria-hidden="true">
<use xlink:href="#icon-a-3" />
</svg>
<span v-else class="star-num">{{ item.ranking }}</span>
<p class="star-info title-item">{{ item.des }}</p>
<p class="star-date">{{ item.date }}</p>
</div>
</div>
</div>
</template>
<script>
import scrollMixins from '@/common/scrollMixins'
import data from './data'
export default {
name: 'ReadStar',
mixins: [scrollMixins],
data() {
return {
readstarList: []
}
},
created() {
this.readstarList = data.readstar
},
mounted() {
this.dataCompleteFun()
},
destroyed() {
//
clearTimeout(this.pauseTimer)
this.pauseTimer = null
clearInterval(this.scrollTimer)
this.scrollTimer = null
},
methods: {
//
dataCompleteFun() {
this.scrollDom = this.$refs.starList
this.interval = 50
this.timeout = 2000
this.step = 1
//
// this.autoScroll()
}
}
}
</script>
<style lang="scss">
@import "~@/assets/styles/index.scss";
</style>

80
src/views/totalLending.vue

@ -1,80 +0,0 @@
<template>
<!-- 总借阅量 -->
<div class="screen-item total-lending">
<div class="common-title">总借阅量</div>
<div class="small-module module-content">
<div class="chartNum">
<div id="TNum" class="box-items">
<li class="number-item"><span><i ref="numberItem" class="item">0123456789</i></span></li>
</div>
</div>
<div class="chart-wrapper" style="height: calc(100% - 68px);">
<LineChart />
</div>
</div>
</div>
</template>
<script>
import LineChart from '@/components/echart/lineChart'
export default {
name: 'TotalLending',
components: {
LineChart
},
data() {
return {
chartNum: ['0', '0', '0', '0', '0', '0', '0', '0', '0']
}
},
created() {
},
mounted() {
this.$nextTick(() => {
this.start()
})
},
methods: {
start() {
var strHtml = ''
for (var i = 0; i < this.chartNum.length; i++) {
strHtml += '<li class="number-item">\n' +
' <span><i class="item" ref="numberItem">0123456789</i></span>\n' +
' </li>'
}
document.getElementById('TNum').innerHTML = strHtml
//
const _this = this
setInterval(() => {
_this.toOrderNum('123456')
_this.setNumberTransform()
}, 1000)
},
toOrderNum(num) {
num = num.toString() //
if (num.length < 9) { // "0"
num = '0' + num
this.toOrderNum(num) // "0"
} else if (num.length === 9) { //
this.chartNum = num.split('') // 便
} else {
alert('显示异常')
}
},
setNumberTransform() {
var numberItems = document.getElementsByClassName('item')
// console.log(numberItems)
const numberArr = this.chartNum.filter(item => !isNaN(item))
for (var index = 0; index < numberItems.length; index++) {
const elem = numberItems[index]
elem.style.transform = 'translate(-50%, -' + numberArr[index] * 10 + '%)'
}
}
}
}
</script>
<style lang="scss">
@import "~@/assets/styles/index.scss";
@import "~@/assets/styles/font-some.css";
</style>

2
vue.config.js

@ -54,7 +54,7 @@ module.exports = {
config.plugin('html') config.plugin('html')
.tap(args => { .tap(args => {
args[0].title = '自查询机'
args[0].title = '自查询机'
return args return args
}) })
} }

Loading…
Cancel
Save