Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
N
national_museum_vod
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
qzhxx
national_museum_vod
Commits
246ba8e1
Commit
246ba8e1
authored
Apr 01, 2021
by
xulili
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
登录
parent
3cb268bd
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
1233 additions
and
624 deletions
+1233
-624
index.js
config/index.js
+2
-1
login.vue
src/components/end/login.vue
+16
-12
topbar.vue
src/components/topbar.vue
+7
-7
loginout.js
src/config/loginout.js
+5
-0
menu.js
src/config/menu.js
+4
-4
china.js
src/map/china.js
+1
-0
auditInfo.vue
src/page/accounts/auditInfo.vue
+125
-0
reject.vue
src/page/accounts/checkDialog/reject.vue
+15
-5
accountTable.vue
src/page/accounts/components/accountTable.vue
+139
-129
recheck.vue
src/page/accounts/recheck.vue
+9
-1
statistical.vue
src/page/accounts/statistical.vue
+20
-7
add.vue
src/page/accounts/statisticalDialog/add.vue
+171
-0
edit.vue
src/page/accounts/statisticalDialog/edit.vue
+209
-0
index.js
src/page/accounts/statisticalDialog/index.js
+6
-0
stbAdmin.vue
src/page/accounts/stbAdmin.vue
+3
-2
unitAdmin.vue
src/page/accounts/unitAdmin.vue
+1
-1
edit.vue
src/page/accounts/unitAdminDialog/edit.vue
+0
-1
users.vue
src/page/accounts/users.vue
+1
-1
index.vue
src/page/index/index.vue
+3
-3
areas.vue
src/page/statistics/components/areas.vue
+88
-78
borderNums.vue
src/page/statistics/components/borderNums.vue
+131
-88
maps.vue
src/page/statistics/components/maps.vue
+119
-160
top10.vue
src/page/statistics/components/top10.vue
+108
-90
accout.js
src/router/accout.js
+1
-1
dialog.less
src/style/dialog.less
+49
-33
No files found.
config/index.js
View file @
246ba8e1
...
...
@@ -21,7 +21,8 @@ module.exports = {
},
// Various Dev Server settings
host
:
'localhost'
,
// can be overwritten by process.env.HOST
//host: 'localhost', // can be overwritten by process.env.HOST
host
:
'0.0.0.0'
,
// can be overwritten by process.env.HOST
port
:
3000
,
// can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser
:
false
,
errorOverlay
:
true
,
...
...
src/components/end/login.vue
View file @
246ba8e1
...
...
@@ -44,9 +44,7 @@
</
template
>
<
script
>
import
{
baseUrl
}
from
"@/config/env"
;
import
axios
from
"axios"
;
let
i
=
0
;
import
{
loginOut
}
from
"@/config/loginOut"
;
export
default
{
data
()
{
return
{
...
...
@@ -65,7 +63,9 @@ export default {
flag
:
false
,
};
},
mounted
()
{},
mounted
()
{
loginOut
();
},
methods
:
{
submitForm
()
{
let
_this
=
this
;
...
...
@@ -95,6 +95,10 @@ export default {
});
localStorage
.
setItem
(
"user"
,
resData
.
user
.
userName
);
localStorage
.
setItem
(
"backToken"
,
resData
.
token
);
localStorage
.
setItem
(
"menuList"
,
JSON
.
stringify
(
resData
.
menuList
)
);
_this
.
$router
.
push
(
"index"
);
}
else
{
_this
.
$message
.
error
(
res
.
data
.
message
);
...
...
@@ -122,7 +126,8 @@ export default {
top: 0;
width: 100vw;
height: 100vh;
background: url("~@/assets/login/login_bg.png") no-repeat center/ 100% 100%;
background: #9b1f23 url("~@/assets/login/login_bg.png") no-repeat center/ 100%
100%;
.content {
width: 33.33%;
height: 100vh;
...
...
@@ -176,8 +181,13 @@ export default {
background: url("~@/assets/login/pwd.png") no-repeat center/ 100%;
}
/deep/.el-form {
margin-top: 120px;
//
margin-top: 120px;
text-align: center;
z-index: 99;
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 150px;
.el-form-item {
margin-bottom: 60px;
}
...
...
@@ -223,9 +233,6 @@ export default {
font-size: 30px;
}
}
.el-form {
margin-top: 50px;
}
}
}
@media screen and (max-width: 1300px) {
...
...
@@ -236,9 +243,6 @@ export default {
font-size: 24px;
}
}
.el-form {
margin-top: 50px;
}
}
}
</
style
>
src/components/topbar.vue
View file @
246ba8e1
...
...
@@ -13,6 +13,7 @@
</div>
</
template
>
<
script
>
import
{
loginOut
}
from
"@/config/loginOut"
;
export
default
{
data
()
{
return
{
...
...
@@ -31,11 +32,11 @@ export default {
handleLogout
()
{
let
_this
=
this
;
_this
.
$https
(
{
method
:
"get"
,
url
:
"logout"
,
authType
:
'back'
}
)
.
$https
({
method
:
"get"
,
url
:
"logout"
,
authType
:
"back"
,
}
)
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
let
resData
=
res
.
data
;
...
...
@@ -44,8 +45,7 @@ export default {
type
:
"success"
,
message
:
resData
.
message
,
});
localStorage
.
removeItem
(
"user"
);
localStorage
.
removeItem
(
"backToken"
);
loginOut
();
_this
.
$router
.
push
(
"login"
);
}
else
{
_this
.
$message
.
error
(
res
.
data
.
message
);
...
...
src/config/loginout.js
0 → 100644
View file @
246ba8e1
export
function
loginOut
(){
localStorage
.
removeItem
(
"user"
)
localStorage
.
removeItem
(
"backToken"
)
localStorage
.
removeItem
(
"menuList"
)
}
\ No newline at end of file
src/config/menu.js
View file @
246ba8e1
...
...
@@ -63,7 +63,7 @@ export const menuList = [
{
name
:
'视频审核'
,
icon
:
'icon-video'
,
color
:
'index-blue'
,
url
:
'/checkVideo'
},
{
name
:
'展板审核'
,
icon
:
'icon-screen'
,
color
:
'index-green'
,
url
:
'/checkDisplay'
},
{
name
:
'学习内容审核'
,
icon
:
'icon-magnifier'
,
color
:
'index-pink'
,
url
:
'/checkLearn'
},
{
name
:
'账号禁用审核'
,
icon
:
'icon-disable'
,
color
:
'index-red'
,
url
:
'/
checkLearn
'
}
{
name
:
'账号禁用审核'
,
icon
:
'icon-disable'
,
color
:
'index-red'
,
url
:
'/
recheck
'
}
]
}
]
...
...
@@ -82,7 +82,7 @@ export const menuList = [
color
:
''
,
url
:
''
,
children
:
[
{
name
:
'互动
管理
'
,
icon
:
'icon-interaction'
,
color
:
'index-purple'
,
url
:
'/interactive'
}
{
name
:
'互动
内容
'
,
icon
:
'icon-interaction'
,
color
:
'index-purple'
,
url
:
'/interactive'
}
]
},
{
...
...
@@ -144,8 +144,8 @@ export const menuList = [
url
:
''
,
children
:
[
{
name
:
'统计概览'
,
icon
:
'icon-overview'
,
color
:
'index-purple'
,
url
:
'/overview'
},
{
name
:
'互动统计'
,
icon
:
'icon-interaction'
,
color
:
'index-green'
,
url
:
''
},
{
name
:
'趋势分析'
,
icon
:
'icon-tend'
,
color
:
'index-pink'
,
url
:
''
}
{
name
:
'互动统计'
,
icon
:
'icon-interaction'
,
color
:
'index-green'
,
url
:
'
/interaction
'
},
{
name
:
'趋势分析'
,
icon
:
'icon-tend'
,
color
:
'index-pink'
,
url
:
'
/tend
'
}
]
},
{
...
...
src/map/china.js
0 → 100644
View file @
246ba8e1
This diff is collapsed.
Click to expand it.
src/page/accounts/auditInfo.vue
0 → 100644
View file @
246ba8e1
<
template
>
<el-dialog
custom-class=
"party-dialog"
title=
"审核详情"
:visible
.
sync=
"dialogVisible"
width=
"468px"
:before-close=
"handleClose"
>
<div
class=
"dialog-content"
>
<p
class=
"isNoData"
v-if=
"isNoData"
>
暂无数据
</p>
<el-form
v-else
ref=
"form"
:model=
"form"
label-width=
"80px"
label-position=
"top"
class=
"party-form"
>
<el-form-item
label=
"审核层级"
>
{{
form
.
level
|
levelFilter
}}
</el-form-item>
<el-form-item
label=
"审核时间"
>
{{
form
.
level
===
"TBCA"
?
form
.
secondTime
:
form
.
firstTime
}}
</el-form-item>
<el-form-item
label=
"审核结果"
>
{{
form
.
status
|
statusFilter
}}
</el-form-item>
<el-form-item
label=
"驳回原因"
v-if=
"form.status === 'REFUSED'"
>
{{
form
.
level
===
"TBCA"
?
form
.
secondRemarks
:
form
.
firstRemarks
}}
</el-form-item>
</el-form>
</div>
</el-dialog>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
dialogVisible
:
false
,
id
:
""
,
form
:
{},
isNoData
:
false
,
};
},
filters
:
{
levelFilter
(
level
)
{
switch
(
level
)
{
case
"TBCA"
:
return
"复审"
;
break
;
case
"TBC"
:
return
"初审"
;
break
;
default
:
return
"暂无数据"
;
break
;
}
},
statusFilter
(
status
)
{
switch
(
status
)
{
case
"TBC"
:
return
"待初审"
;
break
;
case
"TBCA"
:
return
"待复审"
;
break
;
case
"REFUSED"
:
return
"驳回"
;
break
;
case
"APPROVED_FINAL"
:
return
"通过"
;
break
;
default
:
return
"暂无数据"
;
break
;
}
},
},
methods
:
{
// 根据id获取获取详情内容
getDetailById
()
{
let
_this
=
this
;
this
.
$https
(
{
method
:
"get"
,
url
:
"audit/getById"
,
type
:
"ACCOUNT"
,
authType
:
this
.
backToken
,
},
{
id
:
_this
.
id
}
)
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
res
.
data
.
resultCode
==
200
)
{
if
(
res
.
data
.
data
)
{
this
.
isNoData
=
false
;
this
.
form
=
res
.
data
.
data
;
}
else
{
this
.
isNoData
=
true
;
this
.
form
=
{};
}
}
else
{
_this
.
$message
.
error
(
res
.
data
.
message
);
}
}
else
{
_this
.
$message
.
error
(
res
.
data
);
}
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
},
// 弹窗关闭
handleClose
()
{
this
.
handleReset
();
},
handleReset
()
{
this
.
dialogVisible
=
false
;
this
.
form
=
{};
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
</
style
>
\ No newline at end of file
src/page/accounts/checkDialog/reject.vue
View file @
246ba8e1
...
...
@@ -36,12 +36,13 @@ export default {
return
{
dialogVisible
:
false
,
form
:
{
status
:
2
,
content
:
""
,
type
:
3
,
//0,看板;1 视频;2 学习内容;3 账号禁用
status
:
"REFUSED"
,
remarks
:
""
,
type
:
"ACCOUNT"
,
},
activeRow
:{},
rules
:
{
content
:
[
remarks
:
[
{
required
:
true
,
message
:
"请填写驳回原因"
,
trigger
:
"change"
},
],
},
...
...
@@ -69,6 +70,14 @@ export default {
handleSubmit
()
{
// 校验用户输入值
let
_this
=
this
;
let
params
=
{};
params
.
id
=
this
.
activeRow
.
id
;
params
.
refItemId
=
this
.
activeRow
.
refItemId
;
params
.
status
=
this
.
form
.
status
;
params
.
type
=
this
.
form
.
type
;
let
times
=
this
.
activeRow
.
level
==
"TBC"
?
"first"
:
"second"
;
params
.
level
=
this
.
activeRow
.
status
;
params
[
`
${
times
}
Remarks`
]
=
this
.
form
.
remarks
;
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
valid
)
{
this
.
$https
(
...
...
@@ -77,7 +86,8 @@ export default {
url
:
"audit/update"
,
authType
:
this
.
backToken
,
},
_this
.
form
// _this.$qs.stringify(params)
params
)
.
then
((
res
)
=>
{
this
.
handleReset
();
...
...
src/page/accounts/components/accountTable.vue
View file @
246ba8e1
<
template
>
<div
class=
"party-table"
>
<el-table
border
:data=
"list"
style=
"width: 100%;height:100%"
height=
"100%"
>
<el-table-column
label=
"序号"
align=
"center"
width=
"100"
>
<template
slot-scope=
"scope"
>
<span>
{{
(
currentPage
-
1
)
*
10
+
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
align=
"center"
v-for=
"(item,index) in feildList"
:key=
"index"
:prop=
"item.prop"
:label=
"item.label"
:width=
"item.width"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"item.isEdit"
class=
"table-btn-group"
>
<el-tooltip
content=
"修改"
placement=
"top"
>
<el-button
circle
@
click=
"handleOperate(scope.row,'edit')"
>
<i
class=
"icon-table icon-edit"
></i>
</el-button>
</el-tooltip>
<el-tooltip
content=
"重置密码"
placement=
"top"
>
<el-button
circle
@
click=
"handleOperate(scope.row,'reset')"
>
<i
class=
"icon-table icon-reset"
></i>
</el-button>
</el-tooltip>
<el-tooltip
content=
"禁用"
placement=
"top"
>
<el-button
circle
:disabled=
"scope.row.status == 2 || scope.row.statusName == '待审核' "
@
click=
"handleOperate(scope.row,'disable')"
>
<i
class=
"icon-table icon-disable"
></i>
</el-button>
</el-tooltip>
<el-tooltip
content=
"激活"
placement=
"top"
>
<el-button
circle
:disabled=
"scope.row.status == 1"
@
click=
"handleOperate(scope.row,'enable')"
>
<i
class=
"icon-table icon-enable"
></i>
</el-button>
</el-tooltip>
<el-tooltip
content=
"审核详情"
placement=
"top"
>
<el-button
circle
@
click=
"handleOperate(scope.row,'examine')"
>
<i
class=
"icon-table icon-detail"
></i>
</el-button>
</el-tooltip>
</div>
<div
v-else
>
<span
v-if=
"item.prop==='type'"
>
{{
scope
.
row
[
item
.
prop
]
|
accoutType
}}
</span>
<span
v-else
>
{{
scope
.
row
[
item
.
prop
]
}}
</span>
</div>
</
template
>
</el-table-column>
<div
class=
"party-table"
>
<el-table
border
:data=
"list"
style=
"width: 100%; height: 100%"
height=
"100%"
>
<el-table-column
label=
"序号"
align=
"center"
width=
"100"
>
<template
slot-scope=
"scope"
>
<span>
{{
(
currentPage
-
1
)
*
10
+
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
align=
"center"
v-for=
"(item, index) in feildList"
:key=
"index"
:prop=
"item.prop"
:label=
"item.label"
:width=
"item.width"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"item.isEdit"
class=
"table-btn-group"
>
<el-tooltip
content=
"修改"
placement=
"top"
>
<el-button
circle
@
click=
"handleOperate(scope.row, 'edit')"
>
<i
class=
"icon-table icon-edit"
></i>
</el-button>
</el-tooltip>
<el-tooltip
content=
"重置密码"
placement=
"top"
>
<el-button
circle
@
click=
"handleOperate(scope.row, 'reset')"
>
<i
class=
"icon-table icon-reset"
></i>
</el-button>
</el-tooltip>
<el-tooltip
content=
"禁用"
placement=
"top"
>
<el-button
circle
:disabled=
"scope.row.statusName !== '活跃'"
@
click=
"handleOperate(scope.row, 'disable')"
>
<i
class=
"icon-table icon-disable"
></i>
</el-button>
</el-tooltip>
<el-tooltip
content=
"激活"
placement=
"top"
>
<el-button
circle
:disabled=
"scope.row.statusName !== '禁用'"
@
click=
"handleOperate(scope.row, 'enable')"
>
<i
class=
"icon-table icon-enable"
></i>
</el-button>
</el-tooltip>
<el-tooltip
content=
"审核详情"
placement=
"top"
>
<el-button
circle
:disabled=
"scope.row.statusName == '活跃'"
@
click=
"handleOperate(scope.row, 'examine')"
>
<i
class=
"icon-table icon-detail"
></i>
</el-button>
</el-tooltip>
</div>
<div
v-else
>
<span
v-if=
"item.prop === 'type'"
>
{{
scope
.
row
[
item
.
prop
]
|
accoutType
}}
</span>
<span
v-else
>
{{
scope
.
row
[
item
.
prop
]
}}
</span>
</div>
</
template
>
</el-table-column>
</el-table>
</div>
<audit-info
ref=
"audit"
/>
</div>
</template>
<
script
>
// status 1 启用 2 禁用
import
auditInfo
from
"../auditInfo.vue"
;
export
default
{
data
(){
return
{
}
data
()
{
return
{};
},
props
:
{
currentPage
:
{
type
:
Number
,
default
:
1
,
},
props
:{
currentPage
:{
type
:
Number
,
default
:
1
},
list
:{
type
:
Array
,
default
:()
=>
{
return
[]}
},
feildList
:{
type
:
Array
,
default
:()
=>
{
return
[]}
}
list
:
{
type
:
Array
,
default
:
()
=>
{
return
[];
},
},
filters
:{
accoutType
(
type
){
switch
(
type
){
case
"1"
:
return
"平台账号"
break
;
case
"2"
:
return
"用户账号"
break
;
case
"3"
:
return
"机顶盒账号"
break
;
case
"4"
:
return
"运维账号"
break
;
default
:
return
""
}
}
feildList
:
{
type
:
Array
,
default
:
()
=>
{
return
[];
},
},
methods
:{
handleOperate
(
row
,
type
){
if
(
type
!=
'edit'
){
this
.
$confirm
(
'确认进行此操作?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
handlEmitMsg
(
row
,
type
)
}).
catch
(()
=>
{
});
}
else
{
this
.
handlEmitMsg
(
row
,
type
)
}
},
handlEmitMsg
(
row
,
type
){
this
.
$emit
(
"action"
,
{
row
:
row
,
type
:
type
}
)
}
}
}
},
filters
:
{
accoutType
(
type
)
{
switch
(
type
)
{
case
"1"
:
return
"平台账号"
;
break
;
case
"2"
:
return
"用户账号"
;
break
;
case
"3"
:
return
"机顶盒账号"
;
break
;
case
"4"
:
return
"运维账号"
;
break
;
default
:
return
""
;
}
},
},
components
:
{
auditInfo
},
methods
:
{
handleOperate
(
row
,
type
)
{
if
(
type
!=
"edit"
&&
type
!=
"examine"
)
{
this
.
$confirm
(
"确认进行此操作?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
})
.
then
(()
=>
{
this
.
handlEmitMsg
(
row
,
type
);
})
.
catch
(()
=>
{});
}
else
if
(
type
==
"examine"
)
{
this
.
$refs
.
audit
.
id
=
row
.
id
;
this
.
$refs
.
audit
.
getDetailById
();
this
.
$refs
.
audit
.
dialogVisible
=
true
;
}
else
{
this
.
handlEmitMsg
(
row
,
type
);
}
},
handlEmitMsg
(
row
,
type
)
{
this
.
$emit
(
"action"
,
{
row
:
row
,
type
:
type
,
});
},
},
};
</
script
>
<
style
lang=
"less"
>
@import '../../../style/table.less';
@import "../../../style/table.less";
</
style
>
\ No newline at end of file
src/page/accounts/recheck.vue
View file @
246ba8e1
...
...
@@ -85,6 +85,8 @@ export default {
total
:
0
,
},
type
:
'ACCOUNT'
,
passStatus
:
'APPROVED_FINAL'
//待初审 TBC, 驳回 REFUSED, 待复审 TBCA, 通过APPROVED_FINAL
};
},
components
:
{
partyPagination
,
checkTable
,
rejectDialog
},
...
...
@@ -162,20 +164,26 @@ export default {
},
// 驳回
handleRject
()
{
this
.
$refs
.
rejectDialog
.
activeRow
=
this
.
activeRow
;
this
.
$refs
.
rejectDialog
.
dialogVisible
=
true
;
},
// 通过
handlePass
()
{
let
params
=
{};
let
_this
=
this
params
.
id
=
this
.
activeRow
.
id
;
params
.
status
=
4
;
params
.
status
=
this
.
passStatus
;
params
.
type
=
this
.
type
params
.
refItemId
=
this
.
activeRow
.
refItemId
params
.
level
=
this
.
activeRow
.
status
this
.
$https
(
{
method
:
"put"
,
url
:
"audit/update"
,
authType
:
this
.
backToken
,
},
// _this.$qs.stringify(params)
params
)
.
then
((
res
)
=>
{
...
...
src/page/accounts/statistical.vue
View file @
246ba8e1
...
...
@@ -40,7 +40,7 @@
</div>
<div
class=
"table-content"
>
<div
class=
"btn-group"
>
<el-button
type=
"primary"
>
新建统计账户
</el-button>
<el-button
type=
"primary"
@
click=
"handleAdd"
>
新建统计账户
</el-button>
</div>
<account-table
:feildList=
"feildList"
...
...
@@ -49,11 +49,15 @@
/>
<party-pagination
:page=
"page"
@
changePage=
"handleChangeCurrent"
/>
</div>
<add-dialog
ref=
"addDialog"
@
success=
"getPageList()"
/>
<edit-dialog
ref=
"editDialog"
@
success=
"getPageList()"
/>
<msg-dialog
ref=
"msgDilaog"
:msgInfo=
"msgInfo"
/>
</div>
</
template
>
<
script
>
import
{
partyPagination
}
from
"@/components/index"
;
import
accountTable
from
"./components/accountTable"
;
import
{
addDialog
,
editDialog
}
from
"./statisticalDialog/index"
;
import
msgDialog
from
"./msgDialog.vue"
;
export
default
{
data
()
{
...
...
@@ -69,8 +73,8 @@ export default {
{
label
:
"待审核"
,
value
:
3
},
],
feildList
:
[
{
prop
:
"user
n
ame"
,
label
:
"统计用户名"
},
{
prop
:
"org"
,
label
:
"所属单位"
},
{
prop
:
"user
N
ame"
,
label
:
"统计用户名"
},
{
prop
:
"org
Name
"
,
label
:
"所属单位"
},
{
prop
:
"exiredDate"
,
label
:
"到期时间"
},
{
prop
:
"statusName"
,
label
:
"账号状态"
},
{
prop
:
""
,
label
:
"操作"
,
isEdit
:
true
,
width
:
280
},
...
...
@@ -88,8 +92,8 @@ export default {
components
:
{
partyPagination
,
accountTable
,
//
addDialog,
//
editDialog,
addDialog
,
editDialog
,
msgDialog
,
},
mounted
()
{
...
...
@@ -97,7 +101,7 @@ export default {
},
methods
:
{
handleSubmit
()
{
this
.
getFirstPageList
();
this
.
getFirstPageList
();
},
handleReset
()
{
this
.
form
.
userName
=
""
;
...
...
@@ -144,6 +148,15 @@ export default {
console
.
log
(
err
);
});
},
// 页面返回值为空
getResWithOutData
()
{
this
.
list
=
[];
this
.
page
=
{
_index
:
1
,
_size
:
10
,
total
:
0
,
};
},
// 新增账号
handleAdd
()
{
this
.
$refs
.
addDialog
.
dialogVisible
=
true
;
...
...
@@ -214,7 +227,7 @@ export default {
let
_this
=
this
;
this
.
$https
({
method
:
"put"
,
url
:
`tUser/
dis
able?userId=
${
this
.
activeRow
.
id
}
`
,
url
:
`tUser/
en
able?userId=
${
this
.
activeRow
.
id
}
`
,
authType
:
this
.
backToken
,
})
.
then
((
res
)
=>
{
...
...
src/page/accounts/statisticalDialog/add.vue
0 → 100644
View file @
246ba8e1
<
template
>
<el-dialog
custom-class=
"party-dialog"
title=
"编辑统计账号"
:visible
.
sync=
"dialogVisible"
width=
"468px"
:before-close=
"handleClose"
>
<div
class=
"dialog-content"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
label-position=
"top"
class=
"party-form"
>
<el-form-item
label=
"用户名"
prop=
"userName"
>
<el-input
v-model=
"form.userName"
placeholder=
"请输入用户名"
></el-input>
</el-form-item>
<el-form-item
label=
"所在机构"
prop=
"orgId"
>
<el-select
v-model=
"form.orgId"
filterable
placeholder=
"请选择"
>
<el-option
v-for=
"item in organList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"账号有效期"
prop=
"permanent"
>
<el-radio-group
v-model=
"form.permanent"
>
<el-radio
:label=
"true"
>
永久有效
</el-radio>
<el-radio
:label=
"false"
>
设置有效期
</el-radio>
</el-radio-group>
<div
v-if=
"!form.permanent"
>
<el-date-picker
class=
"mt16"
v-model=
"form.date"
type=
"daterange"
value-format=
"yyyy-MM-dd"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
</el-date-picker>
</div>
</el-form-item>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer btn-group"
>
<el-button
@
click=
"handleClose()"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit()"
>
确 定
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
{
getOrgListWithOutPage
}
from
"@/config/organ"
;
export
default
{
data
()
{
return
{
dialogVisible
:
false
,
organList
:
[],
form
:
{
userName
:
""
,
orgId
:
""
,
permanent
:
true
,
date
:
""
,
},
rules
:
{
userName
:
[
{
required
:
true
,
message
:
"请填写管理员姓名"
,
trigger
:
"change"
},
],
orgId
:
[
{
required
:
true
,
message
:
"请输入所在机构"
,
trigger
:
"change"
},
],
permanent
:
[
{
required
:
true
,
message
:
"请选择账号有效期"
,
trigger
:
"change"
},
],
},
};
},
mounted
()
{
this
.
getOrgList
();
},
methods
:
{
// 获取机构列表
getOrgList
()
{
getOrgListWithOutPage
().
then
((
res
)
=>
{
this
.
organList
=
res
;
});
},
// 弹窗关闭
handleClose
()
{
this
.
$confirm
(
"确认关闭?"
)
.
then
((
_
)
=>
{
this
.
handleReset
();
})
.
catch
((
_
)
=>
{});
},
handleReset
()
{
this
.
dialogVisible
=
false
;
this
.
$refs
.
form
.
resetFields
();
this
.
form
=
{
userName
:
""
,
orgId
:
""
,
permanent
:
true
,
date
:
""
,
};
},
// 提交
handleSubmit
()
{
// 校验用户输入值
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
valid
)
{
let
user
=
{};
if
(
!
this
.
form
.
permanent
&&
!
this
.
form
.
date
)
{
this
.
$message
.
error
(
"请选择有效期"
);
return
false
;
}
if
(
!
this
.
form
.
permanent
)
{
user
.
effectiveDate
=
this
.
form
.
date
[
0
];
user
.
exiredDate
=
this
.
form
.
date
[
1
];
}
user
.
permanent
=
this
.
form
.
permanent
;
user
.
userName
=
this
.
form
.
userName
;
user
.
orgId
=
this
.
form
.
orgId
;
let
requetsparams
=
this
.
$qs
.
stringify
(
user
)
this
.
$https
(
{
method
:
"post"
,
url
:
"tUser/statisticsAdd"
,
authType
:
this
.
backToken
,
},
requetsparams
)
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
res
.
data
.
resultCode
==
200
)
{
this
.
$message
({
type
:
"success"
,
message
:
res
.
data
.
message
,
});
this
.
handleReset
();
this
.
$emit
(
"success"
,
true
);
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
}
else
{
this
.
$message
.
error
(
res
.
data
);
}
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
}
else
{
console
.
log
(
"error submit!!"
);
return
false
;
}
});
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
</
style
>
\ No newline at end of file
src/page/accounts/statisticalDialog/edit.vue
0 → 100644
View file @
246ba8e1
<
template
>
<el-dialog
custom-class=
"party-dialog"
title=
"新建统计账号"
:visible
.
sync=
"dialogVisible"
width=
"468px"
:before-close=
"handleClose"
>
<div
class=
"dialog-content"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
label-position=
"top"
class=
"party-form"
>
<el-form-item
label=
"用户名"
prop=
"userName"
>
<el-input
v-model=
"form.userName"
placeholder=
"请输入用户名"
></el-input>
</el-form-item>
<el-form-item
label=
"所在机构"
prop=
"orgId"
>
<el-select
v-model=
"form.orgId"
filterable
placeholder=
"请选择"
>
<el-option
v-for=
"item in organList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"账号有效期"
prop=
"permanent"
>
<el-radio-group
v-model=
"form.permanent"
>
<el-radio
:label=
"true"
>
永久有效
</el-radio>
<el-radio
:label=
"false"
>
设置有效期
</el-radio>
</el-radio-group>
<div
v-if=
"!form.permanent"
>
<el-date-picker
class=
"mt16"
v-model=
"form.date"
type=
"daterange"
value-format=
"yyyy-MM-dd"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
</el-date-picker>
</div>
</el-form-item>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer btn-group"
>
<el-button
@
click=
"handleClose()"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit()"
>
确 定
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
{
getOrgListWithOutPage
}
from
"@/config/organ"
;
export
default
{
data
()
{
return
{
dialogVisible
:
false
,
organList
:
[],
id
:
''
,
form
:
{
userName
:
""
,
orgId
:
""
,
permanent
:
true
,
date
:
""
,
},
rules
:
{
userName
:
[
{
required
:
true
,
message
:
"请填写管理员姓名"
,
trigger
:
"change"
},
],
orgId
:
[
{
required
:
true
,
message
:
"请输入所在机构"
,
trigger
:
"change"
},
],
permanent
:
[
{
required
:
true
,
message
:
"请选择账号有效期"
,
trigger
:
"change"
},
],
},
};
},
mounted
()
{
this
.
getOrgList
();
},
methods
:
{
// 获取机构列表
getOrgList
()
{
getOrgListWithOutPage
().
then
((
res
)
=>
{
this
.
organList
=
res
;
});
},
// 根据id获取获取详情内容
getDetailById
(){
let
_this
=
this
this
.
$https
(
{
method
:
"get"
,
url
:
"tUser/getById"
,
authType
:
this
.
backToken
,
},
{
id
:
_this
.
id
}
)
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
){
if
(
res
.
data
.
resultCode
==
200
)
{
let
resData
=
res
.
data
.
data
for
(
let
key
in
_this
.
form
){
this
.
form
[
key
]
=
resData
[
key
]
}
if
(
!
this
.
form
.
permanent
){
this
.
form
.
date
=
[
resData
.
effectiveDate
,
resData
.
exiredDate
]
}
}
else
{
_this
.
$message
.
error
(
res
.
data
.
message
);
}
}
else
{
_this
.
$message
.
error
(
res
.
data
);
}
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
},
// 弹窗关闭
handleClose
()
{
this
.
$confirm
(
"确认关闭?"
)
.
then
((
_
)
=>
{
this
.
handleReset
();
})
.
catch
((
_
)
=>
{});
},
handleReset
()
{
this
.
dialogVisible
=
false
;
this
.
$refs
.
form
.
resetFields
();
this
.
form
=
{
userName
:
""
,
orgId
:
""
,
permanent
:
true
,
date
:
""
,
};
},
// 提交
handleSubmit
()
{
// 校验用户输入值
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
valid
)
{
let
user
=
{};
if
(
!
this
.
form
.
permanent
&&
!
this
.
form
.
date
)
{
this
.
$message
.
error
(
"请选择有效期"
);
return
false
;
}
if
(
!
this
.
form
.
permanent
)
{
user
.
effectiveDate
=
this
.
form
.
date
[
0
];
user
.
exiredDate
=
this
.
form
.
date
[
1
];
}
user
.
permanent
=
this
.
form
.
permanent
;
user
.
userName
=
this
.
form
.
userName
;
user
.
orgId
=
this
.
form
.
orgId
;
user
.
id
=
this
.
id
user
.
type
=
5
this
.
$https
(
{
method
:
"put"
,
url
:
"tUser/update"
,
authType
:
this
.
backToken
,
},
user
)
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
res
.
data
.
resultCode
==
200
)
{
this
.
$message
({
type
:
"success"
,
message
:
res
.
data
.
message
,
});
this
.
handleReset
();
this
.
$emit
(
"success"
,
true
);
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
}
else
{
this
.
$message
.
error
(
res
.
data
);
}
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
}
else
{
console
.
log
(
"error submit!!"
);
return
false
;
}
});
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
</
style
>
\ No newline at end of file
src/page/accounts/statisticalDialog/index.js
0 → 100644
View file @
246ba8e1
import
addDialog
from
'./add'
import
editDialog
from
'./edit'
export
{
addDialog
,
editDialog
}
\ No newline at end of file
src/page/accounts/stbAdmin.vue
View file @
246ba8e1
...
...
@@ -74,6 +74,7 @@ export default {
{
prop
:
"orgName"
,
label
:
"运维区域"
},
{
prop
:
"exiredDate"
,
label
:
"到期时间"
},
{
prop
:
"type"
,
label
:
"账号类型"
},
{
prop
:
"statusName"
,
label
:
"账号状态"
},
{
prop
:
""
,
label
:
"操作"
,
isEdit
:
true
,
width
:
280
},
],
list
:
[],
...
...
@@ -150,7 +151,7 @@ export default {
},
// 编辑
handleEdit
()
{
this
.
$refs
.
editDialog
.
id
=
this
.
activeRow
.
id
;
this
.
$refs
.
editDialog
.
id
=
this
.
activeRow
.
id
;
this
.
$refs
.
editDialog
.
getDetailById
();
this
.
$refs
.
editDialog
.
dialogVisible
=
true
;
},
...
...
@@ -214,7 +215,7 @@ export default {
let
_this
=
this
;
this
.
$https
({
method
:
"put"
,
url
:
`tUser/
dis
able?userId=
${
this
.
activeRow
.
id
}
`
,
url
:
`tUser/
en
able?userId=
${
this
.
activeRow
.
id
}
`
,
authType
:
this
.
backToken
,
})
.
then
((
res
)
=>
{
...
...
src/page/accounts/unitAdmin.vue
View file @
246ba8e1
...
...
@@ -272,7 +272,7 @@ export default {
let
_this
=
this
;
this
.
$https
({
method
:
"put"
,
url
:
`tUser/
dis
able?userId=
${
this
.
activeRow
.
id
}
`
,
url
:
`tUser/
en
able?userId=
${
this
.
activeRow
.
id
}
`
,
authType
:
this
.
backToken
,
})
.
then
((
res
)
=>
{
...
...
src/page/accounts/unitAdminDialog/edit.vue
View file @
246ba8e1
...
...
@@ -90,7 +90,6 @@
</
template
>
<
script
>
import
{
getOrgListWithOutPage
}
from
"@/config/organ"
;
import
{
getRoles
}
from
"@/config/roles"
;
export
default
{
data
()
{
var
validateMobilePhone
=
(
rule
,
value
,
callback
)
=>
{
...
...
src/page/accounts/users.vue
View file @
246ba8e1
...
...
@@ -195,7 +195,7 @@ export default {
let
_this
=
this
;
this
.
$https
({
method
:
"put"
,
url
:
`tUser/
dis
able?userId=
${
this
.
activeRow
.
id
}
`
,
url
:
`tUser/
en
able?userId=
${
this
.
activeRow
.
id
}
`
,
authType
:
this
.
backToken
,
})
.
then
((
res
)
=>
{
...
...
src/page/index/index.vue
View file @
246ba8e1
...
...
@@ -30,15 +30,15 @@
</div>
</
template
>
<
script
>
import
{
menuList
}
from
'@/config/menu'
//
import { menuList } from '@/config/menu'
export
default
{
data
()
{
return
{
menuList
:
menuList
menuList
:
[]
}
},
mounted
(){
this
.
menuList
=
JSON
.
parse
(
localStorage
.
getItem
(
'menuList'
)
||
[])
},
methods
:{
goPage
(
path
){
...
...
src/page/statistics/components/areas.vue
View file @
246ba8e1
<
template
>
<div
class=
"list-of-area"
>
<div
class=
"list-of-area-title common-title"
>
<div
class=
"icon-and-title"
>
<img
class=
"icon-title"
src=
"@/assets/overview/s-play.png"
alt=
""
>
<span
class=
"title"
>
{{
title
}}
</span>
</div>
<img
class=
"bg"
src=
"@/assets/overview/bg_title.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>
<div
class=
"list-of-area"
>
<div
class=
"list-of-area-title common-title"
>
<div
class=
"icon-and-title"
>
<img
class=
"icon-title"
src=
"@/assets/overview/s-play.png"
alt=
""
/>
<span
class=
"title"
>
{{
title
}}
</span>
</div>
<img
class=
"bg"
src=
"@/assets/overview/bg_title.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>
</div>
</div>
</
template
>
<
script
>
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'
},
]
export
default
{
name
:
"areas"
,
data
()
{
return
{
title
:
"地区展板播放统计"
,
timer
:
null
,
speed
:
50
,
box
:
null
,
area1
:
null
,
list
:
[],
};
},
mounted
()
{
this
.
getList
();
this
.
$nextTick
((
v
)
=>
{
this
.
initScroll
();
});
},
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
++
;
}
},
mounted
()
{
setTimeout
(()
=>
{
this
.
initScroll
()
},
1000
)
getList
()
{
let
requestparams
=
{};
requestparams
.
_index
=
1
;
requestparams
.
_size
=
10
;
this
.
$https
(
{
method
:
"post"
,
url
:
"tBoardStatistic/getBoardDistrictPageList"
,
authType
:
this
.
backToken
,
},
requestparams
)
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
res
.
data
.
resultCode
==
200
)
{
this
.
list
=
res
.
data
.
data
.
records
;
}
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=
"less"
>
</
style
>
src/page/statistics/components/borderNums.vue
View file @
246ba8e1
<
template
>
<div
class=
"dashbord-list"
>
<p
class=
"tip"
>
<span
class=
"tip-title"
>
页面说明:
</span>
<span>
可查看当前系统各项数据统计情况。互动频次及点播趋势图展示部分数据,可进入互动统计及趋势分析详情页查看全部数据。
</span>
</p>
<ul>
<li
v-for=
"(item, index) in list"
:key=
"index"
>
<div
class=
"title-name"
>
{{
item
.
label
}}
</div>
<img
:src=
"getImg(item.urlName)"
alt=
""
>
<!--
<img
src=
"@/assets/overview/play.png"
alt=
""
>
-->
<div
class=
"title"
>
<span>
<a
class=
"num"
>
{{
item
.
num
}}
</a>
<a
class=
"unit"
>
{{
item
.
unit
}}
</a>
</span>
</div>
</li>
</ul>
</div>
<div
class=
"dashbord-list"
>
<p
class=
"tip"
>
<span
class=
"tip-title"
>
页面说明:
</span>
<span
>
可查看当前系统各项数据统计情况。互动频次及点播趋势图展示部分数据,可进入互动统计及趋势分析详情页查看全部数据。
</span
>
</p>
<ul>
<li
v-for=
"(item, index) in list"
:key=
"index"
>
<div
class=
"title-name"
>
{{
item
.
label
}}
</div>
<img
:src=
"getImg(item.urlName)"
alt=
""
/>
<div
class=
"title"
>
<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'
},
]
}
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
:
{
getImg
(
imgUrl
)
{
return
require
(
"@/assets/overview/"
+
imgUrl
+
".png"
);
},
mounted
()
{
// this.initData()
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
:
{
getImg
(
imgUrl
){
return
require
(
'@/assets/overview/'
+
imgUrl
+
'.png'
)
},
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=
"less"
>
.dashbord-list{
width: 100%;
position: absolute;
padding: 0 10px;
z-index: 100;
.tip{
.dashbord-list {
width: 100%;
position: absolute;
padding: 0 10px;
z-index: 100;
.tip {
color: @font-color;
.tip-title {
font-weight: bold;
padding-right: 10px;
}
}
ul {
display: flex;
font-size: 0;
justify-content: space-around;
li {
position: relative;
width: 9vw;
margin-top: 15px;
}
img {
width: 100%;
}
.title-name {
font-size: 18px;
color: @font-color;
.tip-title{
font-weight: bold;
padding-right: 10px;
}
position: absolute;
top: -8px;
right: 0;
}
ul{
display: flex;
font-size: 0;
justify-content: space-around;
li{
position: relative;
width: 9vw;
margin-top: 15px;
}
img{
width: 100%;
}
.title-name{
font-size: 18px;
color: @font-color;
position: absolute;
top: -8px;
right: 0;
}
.title{
position: absolute;
right: 0.2rem;
bottom: 5px;
color: @party-white;
.num{
font-size: 28px;
}
.unit{
font-size:16px;
margin-left: 5px;
}
}
.title {
position: absolute;
right: 0.2rem;
bottom: 5px;
color: @party-white;
.num {
font-size: 28px;
}
.unit {
font-size: 16px;
margin-left: 5px;
}
}
}
}
</
style
>
src/page/statistics/components/maps.vue
View file @
246ba8e1
<
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";
import
echarts
from
'echarts'
import
{
chinaJson
}
from
"@/map/china"
;
echarts
.
registerMap
(
"china"
,
chinaJson
);
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
,
right
:
20
,
bottom
:
20
,
itemWidth
:
16
,
itemHeight
:
'200px'
,
orient
:
'horizontal'
,
text
:
[
'由高到低'
,
'播放量'
],
backgroundColor
:
'rgba(0,28,66,0.6)'
,
padding
:
[
15
,
10
],
itemHeight
:
"200px"
,
orient
:
"horizontal"
,
text
:
[
"由高到低"
,
"播放量"
],
backgroundColor
:
"rgba(0,28,66,0.6)"
,
padding
:
[
15
,
10
],
textStyle
:
{
color
:
'rgba(255,255,255,1)'
color
:
"rgba(255,255,255,1)"
,
},
inRange
:
{
color
:
[
'#9B1E23'
,
'#E72128'
,
'#FB8D1F'
,
'#FFCF4E'
]
}
}],
geo
:
{
map
:
"china"
,
roam
:
!
1
,
scaleLimit
:
{
min
:
1
,
max
:
2
color
:
[
"#9B1E23"
,
"#E72128"
,
"#FB8D1F"
,
"#FFCF4E"
],
},
},
],
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
,
top
:
100
,
left
:
'10%'
,
label
:
{
normal
:
{
show
:
!
0
,
fontSize
:
"12"
,
color
:
"#fff"
}
zoom
:
1
,
top
:
100
,
left
:
"10%"
,
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=
"less"
>
#mapDiv
{
width: 100%;
height: 100%;
}
#mapDiv
{
width: 100%;
height: 100%;
}
</
style
>
src/page/statistics/components/top10.vue
View file @
246ba8e1
<
template
>
<div
class=
"list-of-top10"
>
<div
class=
"list-of-top10-title common-title"
>
<div
class=
"icon-and-title"
>
<img
class=
"icon-title"
src=
"@/assets/overview/board.png"
alt=
""
>
<span
class=
"title"
>
{{
title
}}
</span>
</div>
<img
class=
"bg"
src=
"@/assets/overview/bg_title.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.name"
>
{{
item
.
name
}}
</div>
</li>
<li
class=
"f2"
>
{{
item
.
num
}}
</li>
</ul>
</div>
<div
id=
"con2"
></div>
</div>
</div>
<div
class=
"list-of-top10"
>
<div
class=
"list-of-top10-title common-title"
>
<div
class=
"icon-and-title"
>
<img
class=
"icon-title"
src=
"@/assets/overview/board.png"
alt=
""
/>
<span
class=
"title"
>
{{
title
}}
</span>
</div>
<img
class=
"bg"
src=
"@/assets/overview/bg_title.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>
</div>
</
template
>
<
script
>
export
default
{
name
:
'top10'
,
data
()
{
export
default
{
name
:
"top10"
,
data
()
{
return
{
title
:
""
,
timer
:
null
,
speed
:
50
,
box
:
null
,
con1
:
null
,
list
:
[],
};
},
components
:
{},
mounted
()
{
this
.
title
=
this
.
getTitle
();
this
.
getList
()
setTimeout
(()
=>
{
this
.
initScroll
();
},
1000
);
},
methods
:
{
getTitle
(){
let
curTime
=
this
.
getCurrentTime
()
return
`全国
${
curTime
.
yyyy
}
年
${
curTime
.
MM
}
月展板点播TOP10`
},
getCurrentTime
()
{
let
year
=
new
Date
().
getFullYear
();
let
month
=
new
Date
().
getMonth
()
+
1
;
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'},
]
yyyy
:
year
,
MM
:
month
>
9
?
month
:
`0
${
month
}
`
,
};
},
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
++
;
}
},
components
:{},
mounted
()
{
this
.
list
.
sort
((
a
,
b
)
=>
{
return
b
.
num
-
a
.
num
Ups
()
{
let
_this
=
this
;
this
.
timer
=
setInterval
(
_this
.
scrollUp
,
_this
.
speed
);
},
Stops
()
{
clearInterval
(
this
.
timer
);
},
getList
()
{
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
;
}
else
{
this
.
list
=
[];
}
}
else
{
this
.
list
=
[];
}
})
this
.
list
=
[...
this
.
list
,...
this
.
list
]
setTimeout
(()
=>
{
this
.
initScroll
()
},
1000
)
.
catch
((
err
)
=>
{
this
.
$message
.
error
(
err
.
message
);
});
},
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
);
}
}
}
},
};
</
script
>
<
style
lang=
"less"
>
</
style
>
src/router/accout.js
View file @
246ba8e1
...
...
@@ -57,7 +57,7 @@ export let accoutsRoute = [
component
:
()
=>
import
(
'@/page/accounts/recheck'
),
meta
:{
showBreadcrumb
:
true
,
title
:
'账号禁用审核
(复审)
'
,
title
:
'账号禁用审核'
,
}
}
]
\ No newline at end of file
src/style/dialog.less
View file @
246ba8e1
.party-dialog{
background:
@party-white;
box-shadow: 0 4px 8px 0 rgba(221,221,221,
0.40);
border-radius: 8px;
padding: 20px 20px 0 20px;
&.noHeader{
.el-dialog__header
{
display: none;
}
.party-dialog
{
background:
@party-white;
box-shadow: 0 4px 8px 0 rgba(221, 221, 221,
0.40);
border-radius: 8px;
padding: 20px 20px 0 20px;
&.noHeader
{
.el-dialog__header {
display: none;
}
.el-dialog__header{
padding: 0;
border-bottom: 1px solid @party-border-color;
height: 40px;
text-align: center;
.el-dialog__title{
font-size: 18px;
font-weight: bold;
color: @font-color;
}
.el-dialog__close{
font-size: 20px;
&:hover{
color: @party-btn-color;
}
}
}
.el-dialog__header {
padding: 0;
border-bottom: 1px solid @party-border-color;
height: 40px;
text-align: center;
.el-dialog__title {
font-size: 18px;
font-weight: bold;
color: @font-color;
}
.el-dialog__footer{
padding-top: 20px;
border-top: 1px solid @party-border-color
;
text-align: center;
.el-button
{
width: 160px
;
}
.el-dialog__close {
font-size: 20px
;
&:hover
{
color: @party-btn-color
;
}
}
}
\ No newline at end of file
}
.dialog-content {
min-height: 150px;
.isNoData {
text-align: center;
line-height: 100px;
}
}
.el-dialog__footer {
padding-top: 20px;
border-top: 1px solid @party-border-color;
text-align: center;
.el-button {
width: 160px;
}
}
}
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