Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
N
national_museum_vod-H5
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fubaole
national_museum_vod-H5
Commits
b94f9aa7
Commit
b94f9aa7
authored
Apr 07, 2021
by
xulili
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
大屏
parent
35d58fdb
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1395 additions
and
1205 deletions
+1395
-1205
package-lock.json
package-lock.json
+79
-81
MDialog.vue
src/components/MDialog.vue
+156
-161
areas.vue
src/components/areas.vue
+100
-84
borderNums.vue
src/components/borderNums.vue
+116
-74
demand.vue
src/components/demand.vue
+158
-142
bar.vue
src/components/echarts/bar.vue
+8
-7
line.vue
src/components/echarts/line.vue
+94
-86
interaction.vue
src/components/interaction.vue
+91
-78
maps.vue
src/components/maps.vue
+121
-160
top10.vue
src/components/top10.vue
+109
-95
util.time.js
src/components/util.time.js
+14
-0
index.js
src/router/index.js
+35
-30
screen.vue
src/views/screen.vue
+314
-207
No files found.
package-lock.json
View file @
b94f9aa7
...
...
@@ -1726,6 +1726,16 @@
"integrity"
:
"sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
,
"dev"
:
true
},
"ansi-styles"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
,
"integrity"
:
"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-convert"
:
"^2.0.1"
}
},
"cacache"
:
{
"version"
:
"13.0.1"
,
"resolved"
:
"https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz"
,
...
...
@@ -1752,6 +1762,53 @@
"unique-filename"
:
"^1.1.1"
}
},
"chalk"
:
{
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz"
,
"integrity"
:
"sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"ansi-styles"
:
"^4.1.0"
,
"supports-color"
:
"^7.1.0"
}
},
"color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
"integrity"
:
"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-name"
:
"~1.1.4"
}
},
"color-name"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
,
"integrity"
:
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
,
"dev"
:
true
,
"optional"
:
true
},
"has-flag"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
,
"dev"
:
true
,
"optional"
:
true
},
"loader-utils"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz"
,
"integrity"
:
"sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"big.js"
:
"^5.2.2"
,
"emojis-list"
:
"^3.0.0"
,
"json5"
:
"^2.1.2"
}
},
"source-map"
:
{
"version"
:
"0.6.1"
,
"resolved"
:
"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
,
...
...
@@ -1768,6 +1825,16 @@
"minipass"
:
"^3.1.1"
}
},
"supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"integrity"
:
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"has-flag"
:
"^4.0.0"
}
},
"terser-webpack-plugin"
:
{
"version"
:
"2.3.8"
,
"resolved"
:
"https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz"
,
...
...
@@ -1784,6 +1851,18 @@
"terser"
:
"^4.6.12"
,
"webpack-sources"
:
"^1.4.3"
}
},
"vue-loader-v16"
:
{
"version"
:
"npm:vue-loader@16.2.0"
,
"resolved"
:
"https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz"
,
"integrity"
:
"sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"chalk"
:
"^4.1.0"
,
"hash-sum"
:
"^2.0.0"
,
"loader-utils"
:
"^2.0.0"
}
}
}
},
...
...
@@ -11857,87 +11936,6 @@
}
}
},
"vue-loader-v16"
:
{
"version"
:
"npm:vue-loader@16.1.2"
,
"resolved"
:
"https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz"
,
"integrity"
:
"sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"chalk"
:
"^4.1.0"
,
"hash-sum"
:
"^2.0.0"
,
"loader-utils"
:
"^2.0.0"
},
"dependencies"
:
{
"ansi-styles"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
,
"integrity"
:
"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-convert"
:
"^2.0.1"
}
},
"chalk"
:
{
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz"
,
"integrity"
:
"sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"ansi-styles"
:
"^4.1.0"
,
"supports-color"
:
"^7.1.0"
}
},
"color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
"integrity"
:
"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-name"
:
"~1.1.4"
}
},
"color-name"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
,
"integrity"
:
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
,
"dev"
:
true
,
"optional"
:
true
},
"has-flag"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
,
"dev"
:
true
,
"optional"
:
true
},
"loader-utils"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz"
,
"integrity"
:
"sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"big.js"
:
"^5.2.2"
,
"emojis-list"
:
"^3.0.0"
,
"json5"
:
"^2.1.2"
}
},
"supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"integrity"
:
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"has-flag"
:
"^4.0.0"
}
}
}
},
"vue-router"
:
{
"version"
:
"3.5.1"
,
"resolved"
:
"https://registry.npmjs.org/vue-router/-/vue-router-3.5.1.tgz"
,
...
...
src/components/MDialog.vue
View file @
b94f9aa7
This diff is collapsed.
Click to expand it.
src/components/areas.vue
View file @
b94f9aa7
<
template
>
<div
class=
"list-of-area"
>
<triangle>
<slot>
<div
class=
"list-of-area-title common-title"
>
<img
class=
"icon-title"
src=
"/images/screen/boardsDemand.png"
alt=
""
>
<span
class=
"title"
>
{{
title
}}
</span>
<img
class=
"bg"
src=
"/images/screen/title00_bg.png"
alt=
""
>
</div>
<div
class=
"list-of-body"
>
<ul
class=
"body-title"
>
<li
class=
"f5"
>
地区名称
</li>
<li
class=
"f3"
>
播放量(次)
</li>
<li
class=
"f2"
>
展板数量
</li>
</ul>
<div
class=
"body-content"
id=
"areaContent"
>
<div
id=
"area1"
>
<ul
class=
"body-item"
v-for=
"(item,index) in list"
:key=
"index"
>
<li
class=
"f5"
>
{{
item
.
city
}}
</li>
<li
class=
"f3"
>
{{
item
.
play
}}
</li>
<li
class=
"f2"
>
{{
item
.
num
}}
</li>
</ul>
</div>
<div
id=
"area2"
></div>
<div
id=
"area3"
>
>
</div>
</div>
</div>
</slot>
</triangle>
</div>
<div
class=
"list-of-area"
>
<triangle>
<slot>
<div
class=
"list-of-area-title common-title"
>
<img
class=
"icon-title"
src=
"/images/screen/boardsDemand.png"
alt=
""
/>
<span
class=
"title"
>
{{
title
}}
</span>
<img
class=
"bg"
src=
"/images/screen/title00_bg.png"
alt=
""
/>
</div>
<div
class=
"list-of-body"
>
<ul
class=
"body-title"
>
<li
class=
"f5"
>
地区名称
</li>
<li
class=
"f3"
>
播放量(次)
</li>
<li
class=
"f2"
>
展板数量
</li>
</ul>
<div
class=
"body-content"
id=
"areaContent"
>
<div
id=
"area1"
>
<ul
class=
"body-item"
v-for=
"(item, index) in list"
:key=
"index"
>
<li
class=
"f5"
>
{{
item
.
areaName
}}
</li>
<li
class=
"f3"
>
{{
item
.
playNumber
}}
</li>
<li
class=
"f2"
>
{{
item
.
boardCnt
}}
</li>
</ul>
</div>
<div
id=
"area2"
></div>
<div
id=
"area3"
></div>
<div
id=
"area4"
></div>
</div>
</div>
</slot>
</triangle>
</div>
</
template
>
<
script
>
import
triangle
from
'../components/slot/triangle'
export
default
{
name
:
'areas'
,
data
()
{
return
{
title
:
'地区展板播放统计'
,
timer
:
null
,
speed
:
50
,
box
:
null
,
area1
:
null
,
list
:[
{
city
:
'山西省'
,
play
:
'10000'
,
num
:
'24'
},
{
city
:
'湖南省'
,
play
:
'8878'
,
num
:
'22'
},
{
city
:
'海南省'
,
play
:
'5934'
,
num
:
'21'
},
{
city
:
'贵州省'
,
play
:
'5899'
,
num
:
'18'
},
{
city
:
'云南省'
,
play
:
'5523'
,
num
:
'16'
},
{
city
:
'甘肃省'
,
play
:
'4678'
,
num
:
'12'
},
{
city
:
'四川省'
,
play
:
'4224'
,
num
:
'6'
},
{
city
:
'湖南省'
,
play
:
'3023'
,
num
:
'4'
},
{
city
:
'江西省'
,
play
:
'2412'
,
num
:
'2'
},
{
city
:
'黑龙江省'
,
play
:
'2258'
,
num
:
'2'
},
{
city
:
'湖北省'
,
play
:
'2198'
,
num
:
'2'
},
{
city
:
'安徽省'
,
play
:
'2158'
,
num
:
'2'
},
{
city
:
'新疆维吾尔自治区'
,
play
:
'2258'
,
num
:
'2'
},
{
city
:
'广西壮族自治区'
,
play
:
'1588'
,
num
:
'2'
},
{
city
:
'西藏自治区'
,
play
:
'1258'
,
num
:
'2'
},
]
import
triangle
from
"../components/slot/triangle"
;
export
default
{
name
:
"areas"
,
data
()
{
return
{
title
:
"地区展板播放统计"
,
timer
:
null
,
speed
:
50
,
box
:
null
,
area1
:
null
,
list
:
[],
};
},
components
:
{
triangle
},
mounted
()
{
this
.
getList
();
},
methods
:
{
initScroll
()
{
let
_this
=
this
;
this
.
box
=
document
.
getElementById
(
"areaContent"
);
this
.
con1
=
document
.
getElementById
(
"area1"
);
let
con2
=
document
.
getElementById
(
"area2"
);
let
con3
=
document
.
getElementById
(
"area3"
);
let
con4
=
document
.
getElementById
(
"area4"
);
con2
.
innerHTML
=
this
.
con1
.
innerHTML
;
con3
.
innerHTML
=
this
.
con1
.
innerHTML
;
con4
.
innerHTML
=
this
.
con1
.
innerHTML
;
this
.
timer
=
setInterval
(
_this
.
scrollUp
,
_this
.
speed
);
},
scrollUp
()
{
if
(
this
.
box
.
scrollTop
>=
this
.
con1
.
scrollHeight
)
{
this
.
box
.
scrollTop
=
0
;
}
else
{
this
.
box
.
scrollTop
++
;
}
},
components
:{
triangle
},
mounted
()
{
setTimeout
(()
=>
{
this
.
initScroll
()
},
1000
)
getList
()
{
let
_this
=
this
;
let
requestparams
=
{};
requestparams
.
_index
=
1
;
requestparams
.
_size
=
10
;
this
.
$https
(
{
method
:
"post"
,
url
:
"tBoardStatistic/getBoardDistrictPageList"
,
},
requestparams
)
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
res
.
data
.
resultCode
==
200
)
{
this
.
list
=
res
.
data
.
data
.
records
;
this
.
$nextTick
(()
=>
{
_this
.
initScroll
();
})
}
else
{
this
.
list
=
[];
}
}
else
{
this
.
list
=
[];
}
})
.
catch
((
err
)
=>
{
this
.
$message
.
error
(
err
.
message
);
});
},
methods
:
{
initScroll
()
{
let
_this
=
this
this
.
box
=
document
.
getElementById
(
"areaContent"
);
this
.
con1
=
document
.
getElementById
(
"area1"
);
let
con2
=
document
.
getElementById
(
"area2"
);
let
con3
=
document
.
getElementById
(
"area3"
);
con2
.
innerHTML
=
this
.
con1
.
innerHTML
;
con3
.
innerHTML
=
this
.
con1
.
innerHTML
;
this
.
timer
=
setInterval
(
_this
.
scrollUp
,
_this
.
speed
);
},
scrollUp
()
{
if
(
this
.
box
.
scrollTop
>=
this
.
con1
.
scrollHeight
)
{
this
.
box
.
scrollTop
=
0
;
}
else
{
this
.
box
.
scrollTop
++
;
}
},
}
}
},
};
</
script
>
<
style
lang=
scss
>
</
style
>
src/components/borderNums.vue
View file @
b94f9aa7
<
template
>
<div
class=
"dashbord-list"
>
<ul>
<li
v-for=
"(item, index) in list
"
>
<img
:src=
"'/images/screen/'+ item.urlName+ '.png'"
alt=
""
>
<div
class=
"title"
>
<div
class=
"title-name"
>
{{
item
.
label
}}
</div>
<span>
<a
class=
"num"
>
{{
item
.
num
}}
</a>
<a
class=
"unit"
>
{{
item
.
unit
}}
</a>
</span>
</div>
</li>
</ul>
</div>
<div
class=
"dashbord-list"
>
<ul>
<li
v-for=
"(item, index) in list"
:key=
"index
"
>
<img
:src=
"'/images/screen/' + item.urlName + '.png'"
alt=
""
/
>
<div
class=
"title"
>
<div
class=
"title-name"
>
{{
item
.
label
}}
</div>
<span>
<a
class=
"num"
>
{{
item
.
num
}}
</a>
<a
class=
"unit"
>
{{
item
.
unit
}}
</a>
</span>
</div>
</li>
</ul>
</div>
</
template
>
<
script
>
export
default
{
name
:
'nums'
,
data
()
{
return
{
list
:[
{
label
:
'总播放量'
,
num
:
1000
,
unit
:
'次'
,
urlName
:
'play'
},
{
label
:
'单位组织'
,
num
:
688
,
unit
:
'家'
,
urlName
:
'org'
},
{
label
:
'展板总量'
,
num
:
20
,
unit
:
'个'
,
urlName
:
'boardsTotal'
},
{
label
:
'互动总量'
,
num
:
899
,
unit
:
'次'
,
urlName
:
'interaction'
},
]
}
},
mounted
()
{
this
.
initData
()
export
default
{
name
:
"nums"
,
data
()
{
return
{
data
:
[
{
label
:
"总播放量"
,
num
:
0
,
unit
:
"次"
,
urlName
:
"play"
,
feild
:
"playCnt"
,
},
{
label
:
"单位组织"
,
num
:
0
,
unit
:
"家"
,
urlName
:
"org"
,
feild
:
"orgCnt"
,
},
{
label
:
"展板总量"
,
num
:
0
,
unit
:
"个"
,
urlName
:
"boardsTotal"
,
feild
:
"boardCnt"
,
},
{
label
:
"互动总量"
,
num
:
0
,
unit
:
"次"
,
urlName
:
"interaction"
,
feild
:
"interactionCnt"
,
},
],
list
:
[]
};
},
mounted
()
{
this
.
getList
();
},
methods
:
{
getList
()
{
this
.
$https
({
method
:
"post"
,
url
:
"tBoardStatistic/getBoardSurvey"
,
authType
:
this
.
backToken
,
})
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
res
.
data
.
resultCode
==
200
)
{
let
resData
=
res
.
data
.
data
;
this
.
list
=
[...
this
.
data
].
map
((
v
)
=>
{
v
[
"num"
]
=
resData
[
v
[
"feild"
]];
return
v
;
});
}
else
{
this
.
list
=
[...
this
.
data
];
}
}
else
{
this
.
list
=
[...
this
.
data
];
}
})
.
catch
((
err
)
=>
{
this
.
$message
.
error
(
err
.
message
);
});
},
methods
:
{
initData
(){
const
_this
=
this
setInterval
(()
=>
{
let
num
=
Math
.
floor
(
Math
.
random
()
*
4
)
num
=
num
>
2
?
3
:
0
_this
.
$set
(
_this
.
list
[
num
],
'num'
,
++
_this
.
list
[
num
][
'num'
]
)
},
3000
)
}
}
}
},
};
</
script
>
<
style
lang=
scss
>
.dashbord-list
{
width
:
100%
;
position
:
absolute
;
top
:
-0
.3rem
;
ul
{
display
:
flex
;
font-size
:
0
;
justify-content
:
space-around
;
li
{
position
:
relative
;
}
img
{
width
:
1
.76rem
;
}
.title
{
position
:
absolute
;
right
:
0
.2rem
;
bottom
:
0
;
color
:
rgba
(
78
,
255
,
253
,
1
);
p
{
margin
:
0
;
padding
:
0
;
}
.title-name
{
font-size
:
0
.18rem
;
margin-bottom
:
0
.13rem
;
}
.num
{
font-size
:
0
.28rem
;
}
.unit
{
font-size
:
0
.16rem
;
margin-left
:
0
.05rem
;
}
}
.dashbord-list
{
width
:
100%
;
position
:
absolute
;
top
:
-0
.3rem
;
ul
{
display
:
flex
;
font-size
:
0
;
justify-content
:
space-around
;
li
{
position
:
relative
;
}
img
{
width
:
1
.76rem
;
}
.title
{
position
:
absolute
;
right
:
0
.2rem
;
bottom
:
0
;
color
:
rgba
(
78
,
255
,
253
,
1
);
p
{
margin
:
0
;
padding
:
0
;
}
.title-name
{
font-size
:
0
.18rem
;
margin-bottom
:
0
.13rem
;
}
.num
{
font-size
:
0
.28rem
;
}
.unit
{
font-size
:
0
.16rem
;
margin-left
:
0
.05rem
;
}
}
}
}
</
style
>
src/components/demand.vue
View file @
b94f9aa7
<
template
>
<div
class=
"demand "
>
<triangle>
<slot>
<div
class=
"common-title"
>
<img
class=
"icon-title"
src=
"/images/screen/boardsDemand.png"
alt=
""
>
<span
class=
"title"
>
{{
title
}}
</span>
<img
class=
"bg"
src=
"/images/screen/title02_bg.png"
alt=
""
>
</div>
<div
id=
"barDemand"
@
click=
"echartsClick"
></div>
</slot>
</triangle>
</div>
<div
class=
"demand"
>
<triangle>
<slot>
<div
class=
"common-title"
>
<img
class=
"icon-title"
src=
"/images/screen/boardsDemand.png"
alt=
""
/>
<span
class=
"title"
>
{{
title
}}
</span>
<img
class=
"bg"
src=
"/images/screen/title02_bg.png"
alt=
""
/>
</div>
<div
id=
"barDemand"
@
click=
"echartsClick"
></div>
</slot>
</triangle>
</div>
</
template
>
<
script
>
import
triangle
from
'../components/slot/triangle'
export
default
{
name
:
'demand'
,
data
()
{
return
{
title
:
'互动频次'
}
},
components
:{
triangle
},
mounted
()
{
setTimeout
(()
=>
{
this
.
init
()
},
100
)
import
triangle
from
"../components/slot/triangle"
;
export
default
{
name
:
"demand"
,
data
()
{
return
{
title
:
"互动频次"
,
};
},
components
:
{
triangle
},
props
:
{
data
:
{
type
:
Object
,
default
:
()
=>
{
return
{};
},
},
methods
:
{
init
(){
let
option
=
{
tooltip
:
{
trigger
:
'axis'
},
mounted
()
{
},
methods
:
{
init
()
{
let
option
=
{
tooltip
:
{
trigger
:
"axis"
,
},
grid
:
{
top
:
20
,
left
:
"0%"
,
right
:
"2%"
,
bottom
:
"15%"
,
containLabel
:
true
,
},
// dataZoom: [{
// type: "slider",
// show: true,
// bottom: '20',
// start: 0,
// end: 100,
// height: 18,
// handleStyle: {
// color: "#d3dee5",
// },
// textStyle: {
// color: "#fff",
// fontSize: "10px"
// },
// }
// ],
xAxis
:
{
type
:
"category"
,
boundaryGap
:
true
,
//坐标轴两边留白
data
:
this
.
data
.
xAxisData
,
axisLabel
:
{
//坐标轴刻度标签的相关设置。
interval
:
0
,
textStyle
:
{
color
:
"#FFFFFF"
,
fontStyle
:
"normal"
,
fontFamily
:
"微软雅黑"
,
fontSize
:
14
,
},
formatter
:
function
(
value
,
index
)
{
if
(
value
.
length
>
4
)
{
return
value
.
slice
(
0
,
4
)
+
"..."
;
}
else
{
return
value
;
}
},
},
axisTick
:
{
//坐标轴刻度相关设置。
show
:
false
,
},
grid
:
{
top
:
20
,
l
eft
:
'0%'
,
right
:
'2%'
,
bottom
:
'15%'
,
containLabel
:
true
axisLine
:
{
//坐标轴轴线相关设置
l
ineStyle
:
{
color
:
"rgba(98,186,255,0.6)"
,
type
:
"solid"
,
},
},
// dataZoom: [{
// type: "slider",
// show: true,
// bottom: '20',
// start: 0,
// end: 100,
// height: 18,
// handleStyle: {
// color: "#d3dee5",
// },
// textStyle: {
// color: "#fff",
// fontSize: "10px"
// },
// }
// ],
xAxis
:
{
type
:
'category'
,
boundaryGap
:
true
,
//坐标轴两边留白
data
:
[
'北京市政府'
,
'天津市政府'
,
'呼和浩特市政府'
,
'石家庄市政府'
,
'合肥市政府'
,
'哈尔滨市政府'
,
'廊坊市政府'
,
'临沂市政府'
,
'忻州市政府'
,
'黑龙江市政府'
,
],
axisLabel
:
{
//坐标轴刻度标签的相关设置。
interval
:
0
,
splitLine
:
{
//坐标轴在 grid 区域中的分隔线。
show
:
false
,
},
},
yAxis
:
[
{
type
:
"value"
,
name
:
"单位/次"
,
splitNumber
:
5
,
max
:
100
,
axisLabel
:
{
textStyle
:
{
color
:
'#FFFFFF'
,
fontStyle
:
'normal'
,
fontFamily
:
'微软雅黑'
,
fontSize
:
1
4
,
color
:
"#FFFFFFFF"
,
fontStyle
:
"normal"
,
fontFamily
:
"微软雅黑"
,
fontSize
:
1
2
,
},
formatter
:
function
(
value
,
index
)
{
if
(
value
.
length
>
4
){
return
value
.
slice
(
0
,
4
)
+
'...'
}
else
{
return
value
}
}
interval
:
"auto"
,
},
axis
Tick
:{
//坐标轴刻度相关设置。
axis
Line
:
{
show
:
false
,
},
axisLine
:{
//坐标轴轴线相关设置
lineStyle
:{
color
:
'rgba(98,186,255,0.6)'
,
type
:
'solid'
}
},
splitLine
:
{
//坐标轴在 grid 区域中的分隔线。
axisTick
:
{
show
:
false
,
}
},
yAxis
:
[
{
type
:
'value'
,
name
:
'单位/次'
,
splitNumber
:
5
,
max
:
100
,
axisLabel
:
{
textStyle
:
{
color
:
'#FFFFFFFF'
,
fontStyle
:
'normal'
,
fontFamily
:
'微软雅黑'
,
fontSize
:
12
,
},
interval
:
'auto'
},
axisLine
:{
show
:
false
},
axisTick
:{
show
:
false
},
splitLine
:
{
show
:
true
,
lineStyle
:
{
color
:
'rgba(98,186,255,0.6)'
,
type
:
'dashed'
}
}
}
],
series
:
[
{
type
:
'bar'
,
barWidth
:
16
,
// 柱子宽度
itemStyle
:{
barBorderRadius
:
120
,
// 圆角(左上、右上、右下、左下)
},
splitLine
:
{
show
:
true
,
lineStyle
:
{
color
:
"rgba(98,186,255,0.6)"
,
type
:
"dashed"
,
},
},
},
],
series
:
[
{
type
:
"bar"
,
barWidth
:
16
,
// 柱子宽度
itemStyle
:
{
barBorderRadius
:
120
,
// 圆角(左上、右上、右下、左下)
},
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[
'rgba(78,255,253,1)'
,
'rgba(255,74,83,1)'
].
map
((
color
,
offset
)
=>
({
color
,
offset
}))),
// 渐变
data
:
[
25
,
30
,
40
,
52
,
56
,
63
,
73
,
75
,
83
,
85
,
90
].
reverse
()
}
]
};
let
echartsDiv
=
this
.
$echarts
.
init
(
document
.
getElementById
(
'barDemand'
))
echartsDiv
.
setOption
(
option
)
},
// 点击事件
echartsClick
(){
this
.
$emit
(
'itemClick'
,{
type
:
1
,
title
:
this
.
title
})
}
}
}
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[
"rgba(78,255,253,1)"
,
"rgba(255,74,83,1)"
].
map
(
(
color
,
offset
)
=>
({
color
,
offset
,
})
)
),
// 渐变
data
:
this
.
data
.
yAxisData
,
},
],
};
let
echartsDiv
=
this
.
$echarts
.
init
(
document
.
getElementById
(
"barDemand"
));
echartsDiv
.
setOption
(
option
);
},
// 点击事件
echartsClick
()
{
this
.
$emit
(
"itemClick"
,
{
type
:
1
,
title
:
this
.
title
});
},
},
};
</
script
>
<
style
lang=
scss
>
#barDemand
{
width
:
100%
;
height
:
calc
(
100%
-
0
.6rem
);
margin-top
:
0
.6rem
;
}
#barDemand
{
width
:
100%
;
height
:
calc
(
100%
-
0
.6rem
);
margin-top
:
0
.6rem
;
}
</
style
>
src/components/echarts/bar.vue
View file @
b94f9aa7
...
...
@@ -10,10 +10,13 @@
title
:
'互动频次'
}
},
props
:{
data
:{
type
:
Object
,
default
:()
=>
{
return
{}}
}
},
mounted
()
{
setTimeout
(()
=>
{
this
.
init
()
},
100
)
},
methods
:
{
init
(){
...
...
@@ -31,9 +34,7 @@
xAxis
:
{
type
:
'category'
,
boundaryGap
:
true
,
//坐标轴两边留白
data
:
[
'北京市政府'
,
'天津市政府'
,
'呼和浩特市政府'
,
'石家庄市政府'
,
'合肥市政府'
,
'哈尔滨市政府'
,
'廊坊市政府'
,
'临沂市政府'
,
'忻州市政府'
,
'黑龙江市政府'
,
],
data
:
this
.
data
.
xAxisData
,
axisLabel
:
{
//坐标轴刻度标签的相关设置。
interval
:
0
,
textStyle
:
{
...
...
@@ -108,7 +109,7 @@
color
,
offset
}))),
// 渐变
data
:
[
25
,
30
,
40
,
52
,
56
,
63
,
73
,
75
,
83
,
85
,
90
].
reverse
()
data
:
this
.
data
.
yAxisData
}
]
};
...
...
src/components/echarts/line.vue
View file @
b94f9aa7
<
template
>
<div
id=
"dialogTends"
></div>
<div
id=
"dialogTends"
></div>
</
template
>
<
script
>
export
default
{
name
:
'interaction'
,
name
:
"interaction"
,
data
()
{
return
{
title
:
'展板点播趋势图'
}
title
:
"展板点播趋势图"
,
};
},
props
:
{
data
:
{
type
:
Object
,
default
:
()
=>
{
return
{};
},
},
},
mounted
()
{
setTimeout
(()
=>
{
this
.
init
()
},
100
)
},
methods
:
{
init
(){
init
()
{
let
option
=
{
tooltip
:
{
trigger
:
'axis'
trigger
:
"axis"
,
},
grid
:
{
top
:
20
,
left
:
'2%'
,
top
:
20
,
left
:
"2%"
,
right
:
20
,
bottom
:
'15%'
,
containLabel
:
true
bottom
:
"15%"
,
containLabel
:
true
,
},
dataZoom
:
[{
type
:
"slider"
,
show
:
true
,
bottom
:
'0'
,
start
:
0
,
end
:
100
,
height
:
18
,
handleStyle
:
{
color
:
"#d3dee5"
,
},
textStyle
:
{
color
:
"#fff"
,
fontSize
:
"10px"
dataZoom
:
[
{
type
:
"slider"
,
show
:
true
,
bottom
:
"0"
,
start
:
0
,
end
:
100
,
height
:
18
,
handleStyle
:
{
color
:
"#d3dee5"
,
},
textStyle
:
{
color
:
"#fff"
,
fontSize
:
"10px"
,
},
},
}
],
],
xAxis
:
{
type
:
'category'
,
boundaryGap
:
false
,
//坐标轴两边留白
data
:
[
'2021/01/01'
,
'2021/01/02'
,
'2021/01/03'
,
'2021/01/04'
,
'2021/01/05'
,
'2021/01/06'
,
'2021/01/07'
,
'2021/01/08'
,
'2021/01/09'
,
'2021/01/10'
,
'2021/01/11'
,
'2021/01/12'
,
'2021/01/13'
,
'2021/01/14'
,
'2021/01/15'
,
'2021/01/16'
,
'2021/01/17'
,
'2021/01/18'
,
'2021/01/19'
,
'2021/01/20'
,
'2021/01/21'
,
'2021/01/22'
,
'2021/01/23'
,
'2021/01/24'
,
'2021/01/25'
,
'2021/01/26'
,
'2021/01/27'
,
'2021/01/28'
,
'2021/01/29'
,
'2021/01/30'
,
'2021/01/31'
],
axisLabel
:
{
//坐标轴刻度标签的相关设置。
type
:
"category"
,
boundaryGap
:
false
,
//坐标轴两边留白
data
:
this
.
data
.
xAxisData
,
axisLabel
:
{
//坐标轴刻度标签的相关设置。
textStyle
:
{
color
:
'#FFFFFF'
,
fontStyle
:
'normal'
,
fontFamily
:
'微软雅黑'
,
color
:
"#FFFFFF"
,
fontStyle
:
"normal"
,
fontFamily
:
"微软雅黑"
,
fontSize
:
14
,
},
},
axisTick
:{
//坐标轴刻度相关设置。
axisTick
:
{
//坐标轴刻度相关设置。
show
:
false
,
},
axisLine
:{
//坐标轴轴线相关设置
lineStyle
:{
color
:
'rgba(98,186,255,0.6)'
,
type
:
'solid'
}
axisLine
:
{
//坐标轴轴线相关设置
lineStyle
:
{
color
:
"rgba(98,186,255,0.6)"
,
type
:
"solid"
,
},
},
splitLine
:
{
//坐标轴在 grid 区域中的分隔线。
splitLine
:
{
//坐标轴在 grid 区域中的分隔线。
show
:
false
,
}
}
,
},
yAxis
:
[
{
type
:
'value'
,
type
:
"value"
,
splitNumber
:
5
,
max
:
100
,
max
:
100
,
axisLabel
:
{
textStyle
:
{
color
:
'#FFFFFFFF'
,
fontStyle
:
'normal'
,
fontFamily
:
'微软雅黑'
,
color
:
"#FFFFFFFF"
,
fontStyle
:
"normal"
,
fontFamily
:
"微软雅黑"
,
fontSize
:
12
,
},
interval
:
'auto'
interval
:
"auto"
,
},
axisLine
:{
show
:
false
axisLine
:
{
show
:
false
,
},
axisTick
:{
show
:
false
axisTick
:
{
show
:
false
,
},
splitLine
:
{
show
:
true
,
lineStyle
:
{
color
:
'rgba(98,186,255,0.6)'
,
type
:
'dashed'
}
}
}
color
:
"rgba(98,186,255,0.6)"
,
type
:
"dashed"
,
},
},
},
],
series
:
[
{
type
:
'line'
,
smooth
:
true
,
type
:
"line"
,
smooth
:
true
,
itemStyle
:
{
normal
:
{
color
:
'rgba(255,74,83,1)'
,
color
:
"rgba(255,74,83,1)"
,
lineStyle
:
{
color
:
"rgba(78,255,253,1)"
,
width
:
1
width
:
1
,
},
areaStyle
:
{
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
0
,
1
,
0
,
0
,
[{
offset
:
0
,
color
:
'rgba(255,74,83,0.4)'
},
{
offset
:
1
,
color
:
'rgba(78,255,253,0.4)'
}]),
}
}
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
0
,
1
,
0
,
0
,
[
{
offset
:
0
,
color
:
"rgba(255,74,83,0.4)"
,
},
{
offset
:
1
,
color
:
"rgba(78,255,253,0.4)"
,
},
]),
},
},
},
data
:
[
18
,
19
,
22
,
23
,
25
,
26
,
28
,
30
,
36
,
38
,
40
,
42
,
45
,
44
,
46
,
47
,
49
,
52
,
56
,
59
,
63
,
66
,
68
,
69
,
73
,
75
,
78
,
80
,
83
,
85
,
90
]
}
]
data
:
this
.
data
.
yAxisData
},
],
};
let
echartsDiv
=
this
.
$echarts
.
init
(
document
.
getElementById
(
'dialogTends'
))
echartsDiv
.
setOption
(
option
)
let
echartsDiv
=
this
.
$echarts
.
init
(
document
.
getElementById
(
"dialogTends"
)
);
echartsDiv
.
setOption
(
option
);
},
}
}
}
,
}
;
</
script
>
<
style
lang=
"scss"
>
#dialogTends
{
#dialogTends
{
width
:
100%
;
height
:
16vh
;
margin-top
:
0
.6rem
;
...
...
src/components/interaction.vue
View file @
b94f9aa7
...
...
@@ -3,9 +3,13 @@
<triangle>
<slot>
<div
class=
"common-title"
>
<img
class=
"icon-title"
src=
"/images/screen/boardsDemand.png"
alt=
""
>
<span
class=
"title"
>
{{
title
}}
</span>
<img
class=
"bg"
src=
"/images/screen/title02_bg.png"
alt=
""
>
<img
class=
"icon-title"
src=
"/images/screen/boardsDemand.png"
alt=
""
/>
<span
class=
"title"
>
{{
title
}}
</span>
<img
class=
"bg"
src=
"/images/screen/title02_bg.png"
alt=
""
/>
</div>
<div
id=
"tends"
@
click=
"echartsClick"
></div>
</slot>
...
...
@@ -14,33 +18,42 @@
</
template
>
<
script
>
import
triangle
from
'../components/slot/triangle'
import
triangle
from
"../components/slot/triangle"
;
export
default
{
name
:
'interaction'
,
name
:
"interaction"
,
data
()
{
return
{
title
:
'展板点播趋势图'
}
title
:
"展板点播趋势图"
,
};
},
components
:
{
triangle
},
props
:
{
data
:
{
type
:
Object
,
default
:
()
=>
{
return
{};
},
},
},
components
:{
triangle
},
mounted
()
{
setTimeout
(()
=>
{
this
.
init
()
},
100
)
// setTimeout(() => {
// this.init();
// }, 100);
},
methods
:
{
init
(){
init
()
{
let
option
=
{
tooltip
:
{
trigger
:
'axis'
trigger
:
"axis"
,
},
grid
:
{
top
:
20
,
left
:
'2%'
,
top
:
20
,
left
:
"2%"
,
right
:
20
,
bottom
:
'15%'
,
containLabel
:
true
bottom
:
"15%"
,
containLabel
:
true
,
},
// dataZoom: [{
// type: "slider",
...
...
@@ -59,105 +72,105 @@ export default {
// }
// ],
xAxis
:
{
type
:
'category'
,
boundaryGap
:
false
,
//坐标轴两边留白
data
:
[
'2021/01/01'
,
'2021/01/02'
,
'2021/01/03'
,
'2021/01/04'
,
'2021/01/05'
,
'2021/01/06'
,
'2021/01/07'
,
'2021/01/08'
,
'2021/01/09'
,
'2021/01/10'
,
'2021/01/11'
,
'2021/01/12'
,
'2021/01/13'
,
'2021/01/14'
,
'2021/01/15'
,
'2021/01/16'
,
'2021/01/17'
,
'2021/01/18'
,
'2021/01/19'
,
'2021/01/20'
,
'2021/01/21'
,
'2021/01/22'
,
'2021/01/23'
,
'2021/01/24'
,
'2021/01/25'
,
'2021/01/26'
,
'2021/01/27'
,
'2021/01/28'
,
'2021/01/29'
,
'2021/01/30'
,
'2021/01/31'
],
axisLabel
:
{
//坐标轴刻度标签的相关设置。
type
:
"category"
,
boundaryGap
:
false
,
//坐标轴两边留白
data
:
this
.
data
.
xAxisData
,
axisLabel
:
{
//坐标轴刻度标签的相关设置。
textStyle
:
{
color
:
'#FFFFFF'
,
fontStyle
:
'normal'
,
fontFamily
:
'微软雅黑'
,
color
:
"#FFFFFF"
,
fontStyle
:
"normal"
,
fontFamily
:
"微软雅黑"
,
fontSize
:
14
,
},
},
axisTick
:{
//坐标轴刻度相关设置。
axisTick
:
{
//坐标轴刻度相关设置。
show
:
false
,
},
axisLine
:{
//坐标轴轴线相关设置
lineStyle
:{
color
:
'rgba(98,186,255,0.6)'
,
type
:
'solid'
}
axisLine
:
{
//坐标轴轴线相关设置
lineStyle
:
{
color
:
"rgba(98,186,255,0.6)"
,
type
:
"solid"
,
},
},
splitLine
:
{
//坐标轴在 grid 区域中的分隔线。
splitLine
:
{
//坐标轴在 grid 区域中的分隔线。
show
:
false
,
}
}
,
},
yAxis
:
[
{
type
:
'value'
,
type
:
"value"
,
splitNumber
:
5
,
max
:
100
,
max
:
100
,
axisLabel
:
{
textStyle
:
{
color
:
'#FFFFFFFF'
,
fontStyle
:
'normal'
,
fontFamily
:
'微软雅黑'
,
color
:
"#FFFFFFFF"
,
fontStyle
:
"normal"
,
fontFamily
:
"微软雅黑"
,
fontSize
:
12
,
},
interval
:
'auto'
interval
:
"auto"
,
},
axisLine
:{
show
:
false
axisLine
:
{
show
:
false
,
},
axisTick
:{
show
:
false
axisTick
:
{
show
:
false
,
},
splitLine
:
{
show
:
true
,
lineStyle
:
{
color
:
'rgba(98,186,255,0.6)'
,
type
:
'dashed'
}
}
}
color
:
"rgba(98,186,255,0.6)"
,
type
:
"dashed"
,
},
},
},
],
series
:
[
{
type
:
'line'
,
smooth
:
true
,
type
:
"line"
,
smooth
:
true
,
itemStyle
:
{
normal
:
{
color
:
'rgba(255,74,83,1)'
,
color
:
"rgba(255,74,83,1)"
,
lineStyle
:
{
color
:
"rgba(78,255,253,1)"
,
width
:
1
width
:
1
,
},
areaStyle
:
{
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
0
,
1
,
0
,
0
,
[{
offset
:
0
,
color
:
'rgba(255,74,83,0.4)'
},
{
offset
:
1
,
color
:
'rgba(78,255,253,0.4)'
}]),
}
}
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
0
,
1
,
0
,
0
,
[
{
offset
:
0
,
color
:
"rgba(255,74,83,0.4)"
,
},
{
offset
:
1
,
color
:
"rgba(78,255,253,0.4)"
,
},
]),
},
},
},
data
:
[
18
,
19
,
22
,
23
,
25
,
26
,
28
,
30
,
36
,
38
,
40
,
42
,
45
,
44
,
46
,
47
,
49
,
52
,
56
,
59
,
63
,
66
,
68
,
69
,
73
,
75
,
78
,
80
,
83
,
85
,
90
]
}
]
data
:
this
.
data
.
yAxisData
},
],
};
let
echartsDiv
=
this
.
$echarts
.
init
(
document
.
getElementById
(
'tends'
))
echartsDiv
.
setOption
(
option
)
let
echartsDiv
=
this
.
$echarts
.
init
(
document
.
getElementById
(
"tends"
));
echartsDiv
.
setOption
(
option
)
;
},
// 点击事件
echartsClick
(){
this
.
$emit
(
'itemClick'
,{
type
:
2
,
title
:
this
.
title
})
}
}
}
echartsClick
()
{
this
.
$emit
(
"itemClick"
,
{
type
:
2
,
title
:
this
.
title
});
}
,
}
,
}
;
</
script
>
<
style
lang=
"scss"
>
#tends
{
#tends
{
width
:
100%
;
height
:
calc
(
100%
-
0
.6rem
);
margin-top
:
0
.6rem
;
...
...
src/components/maps.vue
View file @
b94f9aa7
<
template
>
<div
id=
"mapDiv"
>
</div>
<div
id=
"mapDiv"
></div>
</
template
>
<
script
>
import
'echarts/map/js/china'
var
dataList
=
[{
name
:
'安徽'
,
value
:
5498
},
{
name
:
'澳门'
,
value
:
0
},
{
name
:
'北京'
,
value
:
0
},
{
name
:
'福建'
,
value
:
4111
},
{
name
:
'甘肃'
,
value
:
59
},
{
name
:
'广东'
,
value
:
1928
},
{
name
:
'广西'
,
value
:
4
},
{
name
:
'贵州'
,
value
:
52
},
{
name
:
'海南'
,
value
:
1284
},
{
name
:
'河北'
,
value
:
3151
},
{
name
:
'河南'
,
value
:
3814
},
{
name
:
'黑龙江'
,
value
:
316
},
{
name
:
'湖北'
,
value
:
1724
},
{
name
:
'湖南'
,
value
:
33378
},
{
name
:
'吉林'
,
value
:
520
},
{
name
:
'江苏'
,
value
:
113
},
{
name
:
'江西'
,
value
:
961
},
{
name
:
'辽宁'
,
value
:
139
},
{
name
:
'内蒙古'
,
value
:
0
},
{
name
:
'宁夏'
,
value
:
60
},
{
name
:
'青海'
,
value
:
0
},
{
name
:
'山东'
,
value
:
106
},
{
name
:
'山西'
,
value
:
0
},
{
name
:
'陕西'
,
value
:
114
},
{
name
:
'上海'
,
value
:
1321
},
{
name
:
'四川'
,
value
:
7867
},
{
name
:
'台湾'
,
value
:
0
},
{
name
:
'天津'
,
value
:
1157
},
{
name
:
'西藏'
,
value
:
14
},
{
name
:
'香港'
,
value
:
0
},
{
name
:
'新疆'
,
value
:
115
},
{
name
:
'云南'
,
value
:
3811
},
{
name
:
'浙江'
,
value
:
0
},
{
name
:
'重庆'
,
value
:
886
}
];
export
default
{
name
:
'maps'
,
data
()
{
return
{
}
},
mounted
()
{
setTimeout
(()
=>
{
this
.
init
()
},
100
)
},
methods
:
{
init
(){
let
option
=
{
tooltip
:
{
triggerOn
:
"click"
,
formatter
:
function
(
e
,
t
,
n
)
{
return
.
5
==
e
.
value
?
e
.
name
+
":播放量"
:
e
.
seriesName
+
"<br />"
+
e
.
name
+
":"
+
e
.
value
import
"echarts/map/js/china"
;
export
default
{
name
:
"maps"
,
data
()
{
return
{
dataList
:
[],
};
},
mounted
()
{
this
.
getList
();
},
methods
:
{
getList
()
{
this
.
$https
({
method
:
"post"
,
url
:
"tBoardStatistic/getBoardProvincePlayTotalList"
,
authType
:
this
.
backToken
,
})
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
res
.
data
.
resultCode
==
200
)
{
this
.
dataList
=
res
.
data
.
data
;
}
else
{
this
.
dataList
=
[];
}
}
else
{
this
.
dataList
=
[];
}
this
.
init
();
})
.
catch
((
err
)
=>
{
this
.
$message
.
error
(
err
.
message
);
this
.
init
();
});
},
init
()
{
let
option
=
{
tooltip
:
{
triggerOn
:
"click"
,
formatter
:
function
(
e
,
t
,
n
)
{
return
0.5
==
e
.
value
?
e
.
name
+
":播放量"
:
e
.
seriesName
+
"<br />"
+
e
.
name
+
":"
+
e
.
value
;
},
visualMap
:
[{
},
visualMap
:
[
{
dimension
:
0
,
left
:
'8%'
,
bottom
:
20
,
left
:
"8%"
,
bottom
:
20
,
itemWidth
:
16
,
orient
:
'horizontal'
,
text
:
[
'播放量'
,
'由低到高'
],
backgroundColor
:
'rgba(0,19,45,0.4)'
,
padding
:
16
,
orient
:
"horizontal"
,
text
:
[
"播放量"
,
"由低到高"
],
backgroundColor
:
"rgba(0,19,45,0.4)"
,
padding
:
16
,
textStyle
:
{
color
:
'gba(255,255,255,1)'
color
:
"gba(255,255,255,1)"
,
},
inRange
:
{
color
:
[
'rgba(161,255,255,1)'
,
'rgba(91,214,255,1)'
,
'rgba(38,157,255,1)'
,
'rgba(0,72,149,1)'
]
}
}],
geo
:
{
map
:
"china"
,
roam
:
!
1
,
scaleLimit
:
{
min
:
1
,
max
:
2
color
:
[
"rgba(161,255,255,1)"
,
"rgba(91,214,255,1)"
,
"rgba(38,157,255,1)"
,
"rgba(0,72,149,1)"
,
],
},
},
],
geo
:
{
map
:
"china"
,
roam
:
!
1
,
scaleLimit
:
{
min
:
1
,
max
:
2
,
},
roam
:
true
,
//是否开启平游或缩放
scaleLimit
:
{
//滚轮缩放的极限控制
min
:
1
,
max
:
2
},
roam
:
true
,
//是否开启平游或缩放
scaleLimit
:
{
//滚轮缩放的极限控制
min
:
1
,
max
:
2
,
},
zoom
:
1.2
,
top
:
51
,
label
:
{
normal
:
{
show
:
!
0
,
fontSize
:
"12"
,
color
:
"#fff"
}
zoom
:
1.2
,
top
:
51
,
label
:
{
normal
:
{
show
:
!
0
,
fontSize
:
"12"
,
color
:
"#fff"
,
},
itemStyle
:
{
normal
:
{
borderColor
:
"rgba(0, 0, 0, 0.2)"
}
,
emphasis
:
{
areaColor
:
"#f2d5ad"
,
shadowOffsetX
:
0
,
shadowOffsetY
:
0
,
borderWidth
:
0
}
},
itemStyle
:
{
normal
:
{
borderColor
:
"rgba(0, 0, 0, 0.2)"
,
},
emphasis
:
{
areaColor
:
"#f2d5ad"
,
shadowOffsetX
:
0
,
shadowOffsetY
:
0
,
borderWidth
:
0
,
},
regions
:
[
{
name
:
"南海诸岛"
,
itemStyle
:
{
// 隐藏地图
normal
:
{
opacity
:
0
,
// 为 0 时不绘制该图形
}
},
label
:
{
show
:
false
// 隐藏文字
}
}
]
},
series
:
[{
regions
:
[
{
name
:
"南海诸岛"
,
itemStyle
:
{
// 隐藏地图
normal
:
{
opacity
:
0
,
// 为 0 时不绘制该图形
},
},
label
:
{
show
:
false
,
// 隐藏文字
},
},
],
},
series
:
[
{
name
:
"播放量"
,
type
:
"map"
,
geoIndex
:
0
,
data
:
dataList
}]
};
let
echartsDiv
=
this
.
$echarts
.
init
(
document
.
getElementById
(
'mapDiv'
))
echartsDiv
.
setOption
(
option
)
}
}
}
data
:
this
.
dataList
,
},
],
};
let
echartsDiv
=
this
.
$echarts
.
init
(
document
.
getElementById
(
"mapDiv"
));
echartsDiv
.
setOption
(
option
);
},
},
};
</
script
>
<
style
lang=
scss
>
#mapDiv
{
width
:
100%
;
height
:
100%
;
}
#mapDiv
{
width
:
100%
;
height
:
100%
;
}
</
style
>
src/components/top10.vue
View file @
b94f9aa7
<
template
>
<div
class=
"list-of-top10"
>
<triangle>
<slot>
<div
class=
"list-of-top10-title common-title"
>
<img
class=
"icon-title"
src=
"/images/screen/boardsDemand.png"
alt=
""
>
<span
class=
"title"
>
{{
title
}}
</span>
<img
class=
"bg"
src=
"/images/screen/title01_bg.png"
alt=
""
>
</div>
<div
class=
"list-of-body"
>
<ul
class=
"body-title"
>
<li
class=
"f1"
>
排名
</li>
<li
class=
"f7"
>
展板名称
</li>
<li
class=
"f2"
>
播放量
</li>
</ul>
<div
class=
"body-content"
id=
"bodyContent"
>
<div
id=
"con1"
>
<ul
class=
"body-item"
v-for=
"(item,index) in list"
>
<li
class=
"f1"
>
{{
index
%
10
+
1
}}
</li>
<li
class=
"f7"
>
<div
class=
"title"
:title=
"item.name"
>
{{
item
.
name
}}
</div>
</li>
<li
class=
"f2"
>
{{
item
.
num
}}
</li>
</ul>
</div>
<div
id=
"con2"
></div>
</div>
</div>
</slot>
</triangle>
</div>
<div
class=
"list-of-top10"
>
<triangle>
<slot>
<div
class=
"list-of-top10-title common-title"
>
<img
class=
"icon-title"
src=
"/images/screen/boardsDemand.png"
alt=
""
/>
<span
class=
"title"
>
{{
title
}}
</span>
<img
class=
"bg"
src=
"/images/screen/title01_bg.png"
alt=
""
/>
</div>
<div
class=
"list-of-body"
>
<ul
class=
"body-title"
>
<li
class=
"f1"
>
排名
</li>
<li
class=
"f7"
>
展板名称
</li>
<li
class=
"f2"
>
播放量
</li>
</ul>
<div
class=
"body-content"
id=
"bodyContent"
>
<div
id=
"con1"
>
<ul
class=
"body-item"
v-for=
"(item, index) in list"
:key=
"index"
>
<li
class=
"f1"
>
{{
(
index
%
10
)
+
1
}}
</li>
<li
class=
"f7"
>
<div
class=
"title"
:title=
"item.boardName"
>
{{
item
.
boardName
}}
</div>
</li>
<li
class=
"f2"
>
{{
item
.
playNumber
}}
</li>
</ul>
</div>
<div
id=
"con2"
></div>
</div>
</div>
</slot>
</triangle>
</div>
</
template
>
<
script
>
import
triangle
from
'../components/slot/triangle'
export
default
{
name
:
'top10'
,
data
()
{
return
{
title
:
'全国2021年3月展板点播TOP10'
,
timer
:
null
,
speed
:
50
,
box
:
null
,
con1
:
null
,
list
:[
{
name
:
'中国沦为半殖民地半封建社会'
,
num
:
'11902'
},
{
name
:
'抗日战争取得伟大胜利'
,
num
:
'59876'
},
{
name
:
'筹建新中国'
,
num
:
'68902'
},
{
name
:
'中华人民共和国成立'
,
num
:
'368902'
},
{
name
:
'伟大成就'
,
num
:
'78902'
},
{
name
:
'完善和落实中国特色社会主义事业总体布局'
,
num
:
'58902'
},
{
name
:
'中国特色社会主义进入新时代'
,
num
:
'88902'
},
{
name
:
'开创中国特色社会主义新局面'
,
num
:
'78902'
},
{
name
:
'社会主义文化强国建设迈出坚实步伐'
,
num
:
'108902'
},
{
name
:
'坚决打赢脱贫攻坚战'
,
num
:
'188902'
},
// { name:'蒋介石背叛革命 建立独裁统治', num:'20300' },
// { name:'开辟农村包围城市武装夺取政权道路', num:'50780' },
// { name:'坚持党的基本路线不动摇', num:'68902' },
// { name:'港澳回归', num:'68902' },
// { name:'让人民群众共享改革发展成果', num:'48902'},
// { name:'“一带一路”倡议推进对外开放向纵深拓展', num:'8902'},
// { name:'生态保护与修复力度持续加大', num:'7902'},
// { name:'大力践行外交为民', num:'9902'},
]
}
import
triangle
from
"../components/slot/triangle"
;
import
{
getCurDate
}
from
'./util.time.js'
export
default
{
name
:
"top10"
,
data
()
{
return
{
title
:
"全国2021年3月展板点播TOP10"
,
timer
:
null
,
speed
:
50
,
box
:
null
,
con1
:
null
,
list
:
[],
};
},
components
:
{
triangle
},
mounted
()
{
this
.
title
=
this
.
getTitle
();
this
.
getList
()
},
methods
:
{
getTitle
()
{
let
curTime
=
getCurDate
();
return
`全国
${
curTime
.
year
}
年
${
curTime
.
month
}
月展板点播TOP10`
;
},
components
:{
triangle
},
mounted
()
{
this
.
list
.
sort
((
a
,
b
)
=>
{
return
b
.
num
-
a
.
num
})
this
.
list
=
[...
this
.
list
,...
this
.
list
]
setTimeout
(()
=>
{
this
.
initScroll
()
},
1000
)
initScroll
()
{
let
_this
=
this
;
this
.
box
=
document
.
getElementById
(
"bodyContent"
);
this
.
con1
=
document
.
getElementById
(
"con1"
);
let
con2
=
document
.
getElementById
(
"con2"
);
con2
.
innerHTML
=
this
.
con1
.
innerHTML
;
this
.
timer
=
setInterval
(
_this
.
scrollUp
,
_this
.
speed
);
},
methods
:
{
initScroll
()
{
let
_this
=
this
this
.
box
=
document
.
getElementById
(
"bodyContent"
);
this
.
con1
=
document
.
getElementById
(
"con1"
);
let
con2
=
document
.
getElementById
(
"con2"
);
con2
.
innerHTML
=
this
.
con1
.
innerHTML
;
this
.
timer
=
setInterval
(
_this
.
scrollUp
,
_this
.
speed
);
},
scrollUp
()
{
if
(
this
.
box
.
scrollTop
>=
this
.
con1
.
scrollHeight
)
{
this
.
box
.
scrollTop
=
0
;
}
else
{
this
.
box
.
scrollTop
++
;
}
},
Ups
()
{
let
_this
=
this
this
.
timer
=
setInterval
(
_this
.
scrollUp
,
_this
.
speed
);
},
Stops
()
{
clearInterval
(
this
.
timer
);
scrollUp
()
{
if
(
this
.
box
.
scrollTop
>=
this
.
con1
.
scrollHeight
)
{
this
.
box
.
scrollTop
=
0
;
}
else
{
this
.
box
.
scrollTop
++
;
}
},
Ups
()
{
let
_this
=
this
;
this
.
timer
=
setInterval
(
_this
.
scrollUp
,
_this
.
speed
);
},
Stops
()
{
clearInterval
(
this
.
timer
);
},
getList
()
{
let
_this
=
this
let
requestparams
=
{};
requestparams
.
_index
=
1
;
requestparams
.
_size
=
10
;
this
.
$https
(
{
method
:
"post"
,
url
:
"tBoardStatistic/getBoardRankPageList"
,
authType
:
this
.
backToken
,
},
requestparams
)
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
res
.
data
.
resultCode
==
200
)
{
this
.
list
=
res
.
data
.
data
.
records
;
this
.
$nextTick
(()
=>
{
_this
.
initScroll
();
})
}
else
{
this
.
list
=
[];
}
}
else
{
this
.
list
=
[];
}
})
.
catch
((
err
)
=>
{
this
.
$message
.
error
(
err
.
message
);
});
}
}
},
};
</
script
>
<
style
lang=
scss
>
</
style
>
src/components/util.time.js
0 → 100644
View file @
b94f9aa7
export
function
getCurDate
()
{
let
date
=
new
Date
()
let
year
=
date
.
getFullYear
();
let
month
=
date
.
getMonth
()
+
1
;
let
dates
=
date
.
getDate
()
return
{
year
:
year
,
month
:
month
>
9
?
month
:
`0
${
month
}
`
,
date
:
dates
>
9
?
dates
:
`0
${
dates
}
`
};
}
\ No newline at end of file
src/router/index.js
View file @
b94f9aa7
import
Vue
from
'vue'
import
VueRouter
from
'vue-router'
Vue
.
use
(
VueRouter
)
const
routes
=
[
const
routes
=
[
{
path
:
'/'
,
redirect
:
'/commit'
,
...
...
@@ -41,38 +41,38 @@ const routes= [
{
path
:
'/commit'
,
name
:
'commit'
,
component
:()
=>
import
(
'@/views/user/commit.vue'
)
},
{
component
:
()
=>
import
(
'@/views/user/commit.vue'
)
},
{
path
:
'/learn'
,
name
:
'learn'
,
component
:
()
=>
import
(
'@/views/user/learn.vue'
)
},
{
},
{
path
:
'/admin'
,
name
:
'admin'
,
component
:
()
=>
import
(
'@/views/user/admin.vue'
)
},
{
},
{
path
:
'/editPsd'
,
name
:
'editPsd'
,
component
:
()
=>
import
(
'@/views/user/editPsd.vue'
)
},
{
path
:
'/learnContent'
,
name
:
'learnContent'
,
component
:
()
=>
import
(
'@/views/user/components/learnContent.vue'
)
},
{
path
:
'/learnDetail'
,
name
:
'learnDetail'
,
component
:
()
=>
import
(
'@/views/user/components/learnDetail.vue'
)
},
{
path
:
'/adminInfo'
,
name
:
'adminInfo'
,
component
:
()
=>
import
(
'@/views/user/components/adminInfo.vue'
)
},
},
{
path
:
'/learnContent'
,
name
:
'learnContent'
,
component
:
()
=>
import
(
'@/views/user/components/learnContent.vue'
)
},
{
path
:
'/learnDetail'
,
name
:
'learnDetail'
,
component
:
()
=>
import
(
'@/views/user/components/learnDetail.vue'
)
},
{
path
:
'/adminInfo'
,
name
:
'adminInfo'
,
component
:
()
=>
import
(
'@/views/user/components/adminInfo.vue'
)
},
]
const
router
=
new
VueRouter
({
...
...
@@ -81,12 +81,17 @@ const router = new VueRouter({
})
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
let
user
=
localStorage
.
getItem
(
"token"
);
if
(
!
user
&&
to
.
path
!==
'/login'
&&
to
.
path
!==
'/success'
)
{
// 通过vuex state获取当前的token是否存在
next
({
path
:
'/login'
,
})
}
else
{
if
(
to
.
path
!==
'/screen'
)
{
if
(
!
user
&&
to
.
path
!==
'/login'
&&
to
.
path
!==
'/success'
)
{
// 通过vuex state获取当前的token是否存在
next
({
path
:
'/login'
,
})
}
else
{
next
();
}
}
else
{
next
();
}
})
export
default
router
export
default
router
src/views/screen.vue
View file @
b94f9aa7
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment