Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
B
biz.qingxiao.com
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
wangxuelai
biz.qingxiao.com
Commits
d45aa43a
Commit
d45aa43a
authored
Nov 05, 2019
by
baixian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
数据中心
parent
1df4cab2
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
445 additions
and
1 deletion
+445
-1
datacenter.png
image/menu/datacenter.png
+0
-0
datacenteractive.png
image/menu/datacenteractive.png
+0
-0
menuconfig.js
src/common/menuconfig.js
+13
-0
datacenter.js
src/models/datacenter.js
+48
-0
index.js
src/pages/datacenter/index.js
+282
-0
index.less
src/pages/datacenter/index.less
+96
-0
router.js
src/router.js
+6
-1
No files found.
image/menu/datacenter.png
0 → 100644
View file @
d45aa43a
1.36 KB
image/menu/datacenteractive.png
0 → 100644
View file @
d45aa43a
1.37 KB
src/common/menuconfig.js
View file @
d45aa43a
...
...
@@ -104,6 +104,19 @@ export default {
path
:
'/sjd/integralmanage'
,
relativePath
:
[
'/sjd/integralmanage'
,
'/sjd/integralmanage'
],
},
{
id
:
'11'
,
name
:
'数据中心'
,
isFather
:
false
,
style
:
{
width
:
'20px'
,
height
:
'20px'
,
},
activeurl
:
`
${
__IMGCDN__
}
menu/datacenteractive.png`
,
notactiveurl
:
`
${
__IMGCDN__
}
menu/datacenter.png`
,
path
:
'/sjd/datacenter'
,
relativePath
:
[
'/sjd/datacenter'
],
},
// {
// id: '2',
// name: '小程序管理',
...
...
src/models/datacenter.js
0 → 100644
View file @
d45aa43a
import
{
routerRedux
}
from
'dva/router'
;
import
{
message
}
from
'antd'
;
import
{
LocalStorage
,
SessionStorage
,
isExpired
,
}
from
'../utils/index'
;
import
errorcode
from
'../common/errorcode'
;
import
*
as
courseAjax
from
'../services/course'
;
export
default
{
namespace
:
'datacenter'
,
state
:
{
},
subscriptions
:
{
setup
({
dispatch
,
history
})
{
// eslint-disable-line
},
},
effects
:
{
*
chooseColor
({
payload
},
{
call
,
put
,
select
})
{
const
{
color
}
=
payload
;
const
{
editCourseInfo
}
=
yield
select
(
state
=>
state
.
course
);
editCourseInfo
.
color
=
color
.
value
;
yield
put
({
type
:
'updateState'
,
payload
:
{
editCourseInfo
:
{
...
editCourseInfo
},
},
});
},
*
pageInit
({
payload
},
{
call
,
put
,
select
})
{
yield
put
({
type
:
'updateState'
,
payload
:
{
},
});
},
},
reducers
:
{
save
(
state
,
action
)
{
return
{
...
state
,
...
action
.
payload
};
},
updateState
(
state
,
action
)
{
return
{
...
state
,
...
action
.
payload
};
},
},
};
src/pages/datacenter/index.js
0 → 100644
View file @
d45aa43a
import
{
connect
}
from
'dva'
;
import
React
from
'react'
;
import
{
Icon
,
Button
,
message
,
Row
,
Col
,
Input
,
Select
,
Checkbox
,
Table
,
Modal
,
Form
,
Radio
,
RadioGroup
,
Alert
,
Tooltip
,
Card
,
DatePicker
,
Avatar
,
}
from
'antd'
;
import
moment
from
'moment'
;
import
pageStyle
from
'./index.less'
;
import
{
pageIn
,
hasBtnPower
}
from
'../../utils/index'
;
const
{
RangePicker
}
=
DatePicker
;
const
{
Option
}
=
Select
;
const
{
TextArea
}
=
Input
;
class
DataCenterForm
extends
React
.
Component
{
componentDidMount
()
{
// 挂载
pageIn
(
'数据中心'
);
}
componentWillUnmount
()
{
// 卸载
}
render
()
{
const
{
colorList
,
}
=
this
.
props
;
const
dataSource
=
[
];
const
studentClueColumns
=
[
{
title
:
'头像'
,
dataIndex
:
'sort'
,
render
:
(
text
)
=>
{
return
(
<
div
>
{
text
}
<
Avatar
size
=
{
44
}
icon
=
"user"
/>
<
/div>
)
;
},
},
{
title
:
'微信昵称'
,
},
{
title
:
'电话号码'
,
},
{
title
:
'留下线索时间'
,
},
];
const
studentUpColumns
=
[
{
title
:
'头像'
,
dataIndex
:
'sort'
,
render
:
(
text
)
=>
{
return
(
<
div
>
{
text
}
<
Avatar
size
=
{
44
}
icon
=
"user"
/>
<
/div>
)
;
},
},
{
title
:
'姓名'
,
},
{
title
:
'电话号码'
,
},
{
title
:
'线索贡献'
,
},
];
const
teacherUpColumns
=
[
{
title
:
'昵称'
,
dataIndex
:
'sort'
,
render
:
(
text
)
=>
{
return
(
<
div
>
{
text
}
<
Avatar
size
=
{
44
}
icon
=
"user"
/>
<
/div>
)
;
},
},
{
title
:
'姓名'
,
},
{
title
:
'电话号码'
,
},
{
title
:
'潜在学员线索贡献'
,
},
];
const
classUpColumns
=
[
{
title
:
'昵称'
,
dataIndex
:
'sort'
,
render
:
(
text
)
=>
{
return
(
<
div
>
{
text
}
<
Avatar
size
=
{
44
}
icon
=
"user"
/>
<
/div>
)
;
},
},
{
title
:
'姓名'
,
},
{
title
:
'电话号码'
,
},
{
title
:
'潜在学员线索贡献'
,
},
];
return
(
<
div
className
=
{
pageStyle
.
container
}
>
<
div
className
=
{
pageStyle
.
head
}
>
<
Row
>
<
Col
>
<
div
className
=
{
pageStyle
.
timebox
}
>
<
span
className
=
{
pageStyle
.
timeTip
}
>
创建时间:
<
/span
>
<
RangePicker
disabledDate
=
{
this
.
disabledDate
}
onChange
=
{
this
.
onRangePickerChange
}
allowClear
=
{
false
}
className
=
{
pageStyle
.
rangePicker
}
/
>
<
Button
style
=
{{
marginRight
:
30
}}
>
近七天
<
/Button
>
<
Button
style
=
{{
marginRight
:
30
}}
>
近
30
天
<
/Button
>
<
Button
type
=
"primary"
>
筛选
<
/Button
>
<
/div
>
<
/Col
>
<
/Row
>
<
/div
>
<
div
className
=
{
pageStyle
.
middleBox
}
>
<
Row
gutter
=
{
30
}
>
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
8
}}
lg
=
{{
span
:
8
}}
md
=
{{
span
:
8
}}
>
<
div
className
=
{
pageStyle
.
staticLeft
}
>
<
div
className
=
{
pageStyle
.
staticItem
}
>
<
div
className
=
{
pageStyle
.
staticTitle
}
>
<
span
>
访客数
<
/span
>
<
Tooltip
placement
=
"top"
title
=
"筛选时间内,店铺所有页面(包括店铺主页、习作广场、个人中心等)被访问的人数,日去重多天累加。一个人在同一天内访问多次只记为一人。"
>
<
Icon
style
=
{{
cursor
:
'pointer'
}}
type
=
"question-circle"
/>
<
/Tooltip
>
<
/div
>
<
div
className
=
{
pageStyle
.
staticNum
}
>
<
span
>
5
<
/span>
人
<
/div
>
<
/div
>
<
div
className
=
{
pageStyle
.
staticItem
}
>
<
div
className
=
{
pageStyle
.
staticTitle
}
>
<
span
>
浏览量
<
/span
>
<
Tooltip
placement
=
"top"
title
=
"筛选时间内,店铺所有页面(包括店铺主页、打卡详情、个人中心等)被访问的次数,一个人在筛选时间内访问多次记为多次。"
>
<
Icon
style
=
{{
cursor
:
'pointer'
}}
type
=
"question-circle"
/>
<
/Tooltip
>
<
/div
>
<
div
className
=
{
pageStyle
.
staticNum
}
>
<
span
>
5
<
/span>
次
<
/div
>
<
/div
>
<
/div
>
<
/Col
>
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
16
}}
lg
=
{{
span
:
16
}}
md
=
{{
span
:
16
}}
>
<
div
className
=
{
pageStyle
.
staticRight
}
>
<
div
className
=
{
pageStyle
.
staticItem
}
>
<
div
className
=
{
pageStyle
.
staticTitle
}
>
<
span
>
分享访问人数
<
/span
>
<
Tooltip
placement
=
"top"
title
=
"筛选时间内,通过他人分享链接访问产生的访客数,日去重多天累加。一个人在同一天内访问多次只记为一人。"
>
<
Icon
style
=
{{
cursor
:
'pointer'
}}
type
=
"question-circle"
/>
<
/Tooltip
>
<
/div
>
<
div
className
=
{
pageStyle
.
staticNum
}
>
<
span
>
5
<
/span>
人
<
/div
>
<
/div
>
<
div
className
=
{
pageStyle
.
staticItem
}
>
<
div
className
=
{
pageStyle
.
staticTitle
}
>
<
span
>
微官网曝光次数
<
/span
>
<
Tooltip
placement
=
"top"
title
=
"通过分享链接以及老学员进入主页,微官网的展示次数"
>
<
Icon
style
=
{{
cursor
:
'pointer'
}}
type
=
"question-circle"
/>
<
/Tooltip
>
<
/div
>
<
div
className
=
{
pageStyle
.
staticNum
}
>
<
span
>
5
<
/span>
次
<
/div
>
<
/div
>
<
div
className
=
{
pageStyle
.
staticItem
}
>
<
div
className
=
{
pageStyle
.
staticTitle
}
>
<
span
>
分享访问次数
<
/span
>
<
Tooltip
placement
=
"top"
title
=
"筛选时间内,通过他人分享链接访问被分享页面的浏览量。"
>
<
Icon
style
=
{{
cursor
:
'pointer'
}}
type
=
"question-circle"
/>
<
/Tooltip
>
<
/div
>
<
div
className
=
{
pageStyle
.
staticNum
}
>
<
span
>
5
<
/span>
次
<
/div
>
<
/div
>
<
/div
>
<
/Col
>
<
/Row
>
<
/div
>
<
div
className
=
{
pageStyle
.
footer
}
>
<
Row
gutter
=
{
30
}
>
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
12
}}
lg
=
{{
span
:
12
}}
md
=
{{
span
:
12
}}
>
<
div
className
=
{
pageStyle
.
commonTable
}
>
<
div
className
=
{
pageStyle
.
commonTitle
}
><
span
className
=
{
pageStyle
.
line
}
><
/span>潜在学员线索</
div
>
<
Table
size
=
"small"
dataSource
=
{
dataSource
}
columns
=
{
studentClueColumns
}
/
>
<
/div
>
<
/Col
>
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
12
}}
lg
=
{{
span
:
12
}}
md
=
{{
span
:
12
}}
>
<
div
className
=
{
pageStyle
.
commonTable
}
>
<
div
className
=
{
pageStyle
.
commonTitle
}
><
span
className
=
{
pageStyle
.
line
}
><
/span>学员贡献排行</
div
>
<
Table
size
=
"small"
dataSource
=
{
dataSource
}
columns
=
{
studentUpColumns
}
/
>
<
/div
>
<
/Col
>
<
/Row
>
<
/div
>
<
div
className
=
{
pageStyle
.
footer
}
>
<
Row
gutter
=
{
30
}
>
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
12
}}
lg
=
{{
span
:
12
}}
md
=
{{
span
:
12
}}
>
<
div
className
=
{
pageStyle
.
commonTable
}
>
<
div
className
=
{
pageStyle
.
commonTitle
}
><
span
className
=
{
pageStyle
.
line
}
><
/span>老师贡献排行</
div
>
<
Table
size
=
"small"
dataSource
=
{
dataSource
}
columns
=
{
teacherUpColumns
}
/
>
<
/div
>
<
/Col
>
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
12
}}
lg
=
{{
span
:
12
}}
md
=
{{
span
:
12
}}
>
<
div
className
=
{
pageStyle
.
commonTable
}
>
<
div
className
=
{
pageStyle
.
commonTitle
}
><
span
className
=
{
pageStyle
.
line
}
><
/span>班级贡献排行</
div
>
<
Table
size
=
"small"
dataSource
=
{
dataSource
}
columns
=
{
classUpColumns
}
/
>
<
/div
>
<
/Col
>
<
/Row
>
<
/div
>
<
/div
>
);
}
}
DataCenterForm
.
propTypes
=
{
};
const
DataCenter
=
Form
.
create
()(
DataCenterForm
);
function
mapStateToProps
(
state
)
{
const
{
colorList
,
}
=
state
.
course
;
return
{
colorList
,
};
}
export
default
connect
(
mapStateToProps
)(
DataCenter
);
src/pages/datacenter/index.less
0 → 100644
View file @
d45aa43a
.head {
padding: 20px 28px;
background-color: #fff;
.timeTip {
font-size:14px;
font-weight:400;
color:rgba(0,0,0,0.85);
}
.rangePicker {
margin-right: 30px;
margin-left: 5px;
}
}
.middleBox {
margin-top: 25px;
.staticItem {
background-color: #fff;
padding: 15px 30px;
height: 90px;
}
.staticLeft {
display: flex;
.staticItem {
width: 50%;
}
.staticItem:first-child {
border-right: 1px solid #E9E9E9;
}
}
.staticRight {
display: flex;
.staticItem {
width: 33.33%;
}
.staticItem:not(:last-child) {
border-right: 1px solid #E9E9E9;
}
}
.staticTitle {
span {
font-size:14px;
font-weight:400;
color:rgba(0,0,0,0.45);
display: inline-block;
margin-right: 5px;
}
}
.staticNum {
margin-top: 10px;
span {
font-size:24px;
font-family:HelveticaNeue;
color:rgba(0,0,0,0.85);
}
}
}
.footer {
margin-top: 25px;
.commonTable {
background-color: #fff;
.commonTitle {
font-size:16px;
font-family:PingFangSC-Medium,PingFang SC;
font-weight:600;
line-height: 24px;
padding: 15px 0 15px 10px;
color:rgba(0,0,0,0.85);
border-bottom: 1px solid #E8E8E8;
.line {
width: 3px;
height: 19px;
background-color: #1890FF;
display: inline-block;
vertical-align: -10%;
margin-right: 6px;
}
}
:global {
.ant-table-placeholder {
border-top: none;
}
.ant-table-small {
border: none;
}
.ant-table-thead > tr > th {
border-bottom: none;
font-size: 14px;
font-weight: 600;
}
.ant-table-tbody > tr > td {
border-bottom: none;
}
}
}
}
src/router.js
View file @
d45aa43a
...
...
@@ -185,6 +185,11 @@ const CalendarClock = props => (
{
CalendarClock
=>
(
<
CalendarClock
{...
props
}
/>
)
}
<
/Bundle
>
);
const
DataCenter
=
props
=>
(
<
Bundle
load
=
{()
=>
import
(
/* webpackChunkName:"DataCenter" */
'./pages/datacenter/index'
)}
>
{
DataCenter
=>
(
<
DataCenter
{...
props
}
/>
)
}
<
/Bundle
>
);
function
RouterConfig
({
history
})
{
return
(
<
ConfigProvider
locale
=
{
zhCN
}
>
...
...
@@ -194,7 +199,6 @@ function RouterConfig({ history }) {
path
=
"/sjd"
render
=
{()
=>
(
<
SjdIndex
>
<
Route
path
=
"/sjd/storesetting"
exact
component
=
{
Storesetting
}
/
>
<
Route
path
=
"/sjd/newtheme"
config
=
{{
needAuth
:
true
}}
exact
component
=
{
NewTheme
}
/
>
<
Route
path
=
"/sjd/integralmanage"
config
=
{{
needAuth
:
true
}}
exact
component
=
{
Integralmanage
}
/
>
<
Route
path
=
"/sjd/officialweb"
config
=
{{
needAuth
:
true
}}
exact
component
=
{
Officialweb
}
/
>
...
...
@@ -219,6 +223,7 @@ function RouterConfig({ history }) {
<
Route
path
=
"/sjd/newtheme/jobclock/:id/:isCopy"
exact
component
=
{
JobClock
}
/
>
<
Route
path
=
"/sjd/newtheme/calendarclock/:id"
exact
component
=
{
CalendarClock
}
/
>
<
Route
path
=
"/sjd/newtheme/calendarclock/:id/:isCopy"
exact
component
=
{
CalendarClock
}
/
>
<
Route
path
=
"/sjd/datacenter"
exact
component
=
{
DataCenter
}
/
>
<
/SjdIndex
>
)}
/
>
...
...
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