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
0e0b887a
Commit
0e0b887a
authored
Sep 10, 2019
by
wangxuelai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'wxl-develop'
parents
71f228ee
b16b1666
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
326 additions
and
95 deletions
+326
-95
.webpackrc.js
.webpackrc.js
+18
-2
package.json
package.json
+1
-1
api.js
src/common/api.js
+6
-2
classdetail.js
src/models/classdetail.js
+1
-1
classmgt.js
src/models/classmgt.js
+5
-0
indexstaic.js
src/models/indexstaic.js
+34
-0
officialweb.js
src/models/officialweb.js
+1
-1
usersetting.js
src/models/usersetting.js
+7
-0
webapp.js
src/models/webapp.js
+5
-36
SjdIndex.js
src/pages/SjdIndex.js
+0
-14
index.js
src/pages/classdetail/index.js
+2
-2
index.js
src/pages/index/index.js
+10
-0
index.js
src/pages/institutions/index.js
+2
-2
index.less
src/pages/institutions/index.less
+3
-0
GoodsAddModal.js
src/pages/integralmanage/storesetting/GoodsAddModal.js
+1
-1
GoodsAddModal.less
src/pages/integralmanage/storesetting/GoodsAddModal.less
+6
-4
index.js
src/pages/joinschooladd/index.js
+34
-2
editor.js
src/pages/officialweb/editor.js
+25
-7
Course.js
src/pages/officialweb/pagecomponent/Course.js
+16
-3
Course.less
src/pages/officialweb/pagecomponent/Course.less
+3
-3
index.js
src/pages/schooladd/index.js
+32
-1
index.less
src/pages/schooledit/index.less
+1
-0
index.js
src/pages/schoollist/index.js
+41
-1
StudentAdd.js
src/pages/student/StudentAdd.js
+1
-1
StudentAdd.less
src/pages/student/StudentAdd.less
+1
-1
StudentEdit.js
src/pages/studentinfo/StudentEdit.js
+1
-1
index.js
src/pages/thememgt/index.js
+1
-1
index.js
src/pages/usersetting/index.js
+32
-1
indexstaic.js
src/services/indexstaic.js
+7
-0
webpack.config.js
webpack.config.js
+29
-7
No files found.
.webpackrc.js
View file @
0e0b887a
const
path
=
require
(
'path'
);
let
imagePath
=
''
;
if
(
process
.
env
.
NODE_ENV
==
'development'
)
{
imagePath
=
"'/image/'"
;
}
else
if
(
process
.
env
.
NODE_ENV
==
'testenv'
)
{
imagePath
=
"'/image/'"
;
}
else
if
(
process
.
env
.
NODE_ENV
==
'production'
)
{
imagePath
=
"'https://cdn.img.shangjiadao.cn/qingxiao/biz/image/'"
;
}
export
default
{
"env"
:
{
"development"
:
{
...
...
@@ -6,7 +14,15 @@ export default {
'_CDN_'
:
''
,
'ENVIRONMENT'
:
'dev'
,
// '__IMGCDN__': 'http://wxloss.oss-cn-hangzhou.aliyuncs.com/qingxiaobiz/'
'__IMGCDN__'
:
'https://cdn.img.shangjiadao.cn/qingxiao/biz/image/'
'__IMGCDN__'
:
'/image/'
}
},
"testenv"
:
{
define
:
{
'_CDN_'
:
''
,
'ENVIRONMENT'
:
'testenv'
,
// '__IMGCDN__': 'http://wxloss.oss-cn-hangzhou.aliyuncs.com/qingxiaobiz/'
'__IMGCDN__'
:
'/image/'
}
},
"production"
:
{
...
...
@@ -22,7 +38,7 @@ export default {
],
"theme"
:
{
"primary-color"
:
"#1890FF"
,
"imagepath"
:
process
.
env
.
NODE_ENV
==
'production'
?
"'https://cdn.img.shangjiadao.cn/qingxiao/biz/image/'"
:
"'http://localhost:80/image/'"
,
"imagepath"
:
imagePath
,
},
es5ImcompatibleVersions
:
true
,
"proxy"
:
{
...
...
package.json
View file @
0e0b887a
...
...
@@ -3,7 +3,7 @@
"scripts"
:
{
"start"
:
"set NODE_ENV=development&&set PORT=80 && roadhog server"
,
"build"
:
"set NODE_ENV=production&&roadhog build"
,
"test-build"
:
"set NODE_ENV=
development
&&roadhog build"
,
"test-build"
:
"set NODE_ENV=
testenv
&&roadhog build"
,
"lint"
:
"eslint --ext .js src test"
,
"precommit"
:
"npm run lint"
,
"lib"
:
"webpack --config webpackconfig/webpack.dll.config.js"
...
...
src/common/api.js
View file @
0e0b887a
...
...
@@ -9,8 +9,11 @@ if (ENVIRONMENT == 'pro') {
api
=
'https://wx.m.shangjiadao.cn/v2/api/'
;
dakaapi
=
'https://qxapi.qingxiao.online/daka/v3/'
;
}
else
if
(
ENVIRONMENT
==
'dev'
)
{
// api = 'https://wx.m.shangjiadao.cn/v2/api/';
// dakaapi = 'https://qxapi.qingxiao.online/daka/v3/';
api
=
'https://wx.m.shangjiadao.cn/v2/api/'
;
dakaapi
=
'https://qxapi.qingxiao.online/daka/v3/'
;
// api = 'https://test.wp53.cn/v2/api/';
// dakaapi = 'https:clock.wp53.cn/v3/';
}
else
if
(
ENVIRONMENT
==
'testenv'
)
{
api
=
'https://test.wp53.cn/v2/api/'
;
dakaapi
=
'https:clock.wp53.cn/v3/'
;
}
...
...
@@ -124,6 +127,7 @@ export default {
birthday
:
`
${
dakaapi
}
member/erp/todo/birthday`
,
call
:
`
${
dakaapi
}
member/erp/todo/call`
,
assign
:
`
${
dakaapi
}
member/erp/todo/assign`
,
todoSchedule
:
`
${
dakaapi
}
member/erp/todo/schedule`
,
},
thememgt
:
{
themeList
:
`
${
dakaapi
}
member/subject/mixed`
,
...
...
src/models/classdetail.js
View file @
0e0b887a
...
...
@@ -1151,7 +1151,7 @@ export default {
});
if
(
classDetailData
.
code
==
200
)
{
classDetail
=
classDetailData
.
data
;
classDetail
.
teacher_id
=
classDetailData
.
data
.
school_teachers
.
map
(
ele
=>
ele
.
id
)
||
[];
classDetail
.
teacher_id
=
(
classDetailData
.
data
.
school_teachers
&&
classDetailData
.
data
.
school_teachers
.
map
(
ele
=>
ele
.
id
)
)
||
[];
yield
put
({
type
:
'updateState'
,
payload
:
{
...
...
src/models/classmgt.js
View file @
0e0b887a
...
...
@@ -64,6 +64,7 @@ export default {
student_id
:
''
,
my
:
''
,
miss_call_day
:
''
,
schedule_count
:
''
,
},
classListQueryParamsB
:
{
school_id
:
0
,
...
...
@@ -443,6 +444,7 @@ export default {
student_id
:
''
,
my
:
''
,
miss_call_day
:
''
,
schedule_count
:
''
,
},
},
});
...
...
@@ -463,6 +465,7 @@ export default {
student_id
:
''
,
my
:
''
,
miss_call_day
:
''
,
schedule_count
:
''
,
}),
},
},
...
...
@@ -776,6 +779,7 @@ export default {
extra
:
'course,class_room'
,
student_id
:
''
,
my
:
''
,
schedule_count
:
''
,
},
copyClassListQueryParams
:
{
school_id
:
0
,
...
...
@@ -791,6 +795,7 @@ export default {
student_id
:
''
,
my
:
''
,
miss_call_day
:
''
,
schedule_count
:
''
,
},
classListQueryParamsB
:
{
school_id
:
0
,
...
...
src/models/indexstaic.js
View file @
0e0b887a
...
...
@@ -50,6 +50,7 @@ export default {
assign
:
{
total
:
0
,
},
scheduleCount
:
0
,
teacherList
:
[],
courseList
:
[],
classroomList
:
[],
...
...
@@ -182,6 +183,17 @@ export default {
});
yield
put
(
routerRedux
.
push
(
'/sjd/classmgt'
));
},
*
goPlanClass
({
payload
},
{
call
,
put
,
select
})
{
const
{
classListQueryParams
}
=
yield
select
(
state
=>
state
.
classmgt
);
classListQueryParams
.
schedule_count
=
3
;
yield
put
({
type
:
'updateState'
,
payload
:
{
classListQueryParams
:
{
...
classListQueryParams
},
},
});
yield
put
(
routerRedux
.
push
(
'/sjd/classmgt'
));
},
*
goPlanStudent
({
payload
},
{
call
,
put
,
select
})
{
const
{
studentListQueryParams
,
searchstudentListQueryParams
}
=
yield
select
(
state
=>
state
.
students
);
const
{
dateTime
}
=
yield
select
(
state
=>
state
.
indexstaic
);
...
...
@@ -428,6 +440,27 @@ export default {
// message.error(callData.msg, 1);
}
},
*
todoSchedule
({
payload
},
{
call
,
put
,
select
})
{
const
{
sid
}
=
yield
select
(
state
=>
state
.
webapp
);
const
callData
=
yield
call
(
indexstaticajax
.
todoSchedule
,
{
school_id
:
sid
,
my
:
LocalStorage
.
getItem
(
'role'
)
==
1
?
1
:
''
});
if
(
callData
.
code
==
200
)
{
yield
put
({
type
:
'updateState'
,
payload
:
{
sid
,
scheduleCount
:
callData
.
data
.
total
,
},
});
}
else
{
yield
put
({
type
:
'webapp/errorrequestresolve'
,
payload
:
{
data
:
callData
,
},
});
// message.error(callData.msg, 1);
}
},
*
queryinfo
({
payload
},
{
call
,
put
,
select
})
{
const
{
sid
}
=
yield
select
(
state
=>
state
.
webapp
);
if
(
!
sid
)
{
...
...
@@ -577,6 +610,7 @@ export default {
assign
:
{
total
:
0
,
},
scheduleCount
:
0
,
teacherList
:
[],
courseList
:
[],
classroomList
:
[],
...
...
src/models/officialweb.js
View file @
0e0b887a
...
...
@@ -540,7 +540,7 @@ export default {
});
}
if
(
data
.
code
==
200
)
{
message
.
success
(
'保存成功'
,
1
);
message
.
success
(
`
${
values
.
switch
==
1
?
'开启'
:
'关闭'
}
成功`
,
1
);
course
.
id
=
data
.
data
.
id
;
newpageInfo
.
forEach
((
ele
)
=>
{
const
element
=
ele
;
...
...
src/models/usersetting.js
View file @
0e0b887a
...
...
@@ -58,6 +58,13 @@ export default {
businessIsBind
:
businessInfoData
.
data
.
consumer_id
!=
0
,
},
});
}
else
{
yield
put
({
type
:
'webapp/errorrequestresolve'
,
payload
:
{
data
:
businessInfoData
,
},
});
}
},
*
getverifycode
({
payload
},
{
call
,
put
,
select
})
{
...
...
src/models/webapp.js
View file @
0e0b887a
...
...
@@ -193,6 +193,9 @@ export default {
dispatch
({
type
:
'indexstaic/assign'
,
});
dispatch
({
type
:
'indexstaic/todoSchedule'
,
});
dispatch
({
type
:
'webapp/updateState'
,
payload
:
{
...
...
@@ -654,42 +657,8 @@ export default {
type
:
'updateState'
,
});
},
*
judgeexpire
({
payload
},
{
put
,
call
,
select
})
{
// const webapp = yield select(state => state.webapp);
// const { userInfo } = webapp;
// const { isLogin, isSchoolAdd } = payload;
// if ((LocalStorage.getItem('user') && LocalStorage.getItem('user').token && LocalStorage.getItem('dakarole') == 1) || (LocalStorage.getItem('teacher') && LocalStorage.getItem('teacher').token && LocalStorage.getItem('dakarole') == 2)) {
// const memberSchools = yield call(users.memberSchools);
// if (memberSchools.data.list.length > 0) {
// LocalStorage.setItem('sid', memberSchools.data.list[0].id);
// yield put({
// type: 'webapp/updateState',
// payload: {
// sid: memberSchools.data.list[0].id,
// },
// });
// yield put(routerRedux.push({
// pathname: '/sjd/indexstaic',
// }));
// } else {
// if (isSchoolAdd) {
// return;
// }
// yield put(routerRedux.push({
// pathname: '/schooladd',
// }));
// }
// } else {
// LocalStorage.removeItem('user');
// LocalStorage.removeItem('dakarole');
// LocalStorage.removeItem('teacher');
// if (isSchoolAdd) {
// yield put(routerRedux.push({
// pathname: '/login',
// }));
// }
// }
},
// * judgeexpire({ payload }, { put, call, select }) {
// },
*
shiftSchool
({
payload
},
{
put
,
select
})
{
yield
put
(
routerRedux
.
replace
({
pathname
:
'/schoollist'
,
...
...
src/pages/SjdIndex.js
View file @
0e0b887a
...
...
@@ -103,20 +103,6 @@ class SjdIndex extends React.Component {
<
/Content
>
<
/Layout
>
<
/Layout
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
visible
=
{
globalErrorType
==
2
}
maskStyle
=
{{
zIndex
:
1003
}}
zIndex
=
{
1004
}
closable
=
{
false
}
footer
=
{
<
div
><
Button
onClick
=
{
this
.
goSchoollist
}
>
确定
<
/Button></
div
>
}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
Icon
type
=
"info-circle"
style
=
{{
color
:
'#faad14'
,
fontSize
:
'30px'
,
marginRight
:
'10px'
}}
/
>
<
span
>
暂无权限
<
/span
>
<
/div
>
<
/Modal
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
...
...
src/pages/classdetail/index.js
View file @
0e0b887a
...
...
@@ -958,7 +958,7 @@ class ClassDetailForm extends React.Component {
{
record
.
rule
.
type
==
1
&&
<
div
>
<
div
>
{
record
.
rule
.
start_date
}
开始
<
/div
>
<
div
>
({
record
.
rule
.
week_day
.
map
(
ele
=>
(
<
div
>
({
record
.
rule
.
week_day
&&
record
.
rule
.
week_day
.
map
(
ele
=>
(
`
${
record
.
rule
.
is_repeat
==
1
?
'每周'
:
'隔周'
}${[
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
,
'日'
][
ele
-
1
]}
`
)).
join
(
'/'
)})
<
/div
>
...
...
@@ -1418,7 +1418,7 @@ class ClassDetailForm extends React.Component {
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
12
}}
md
=
{{
span
:
12
}}
lg
=
{{
span
:
6
}}
>
<
span
className
=
{
pageStyle
.
detailtitle
}
>
班级老师:
<
/span
>
{
classDetail
.
school_teachers
&&
classDetail
.
school_teachers
.
length
>
0
&&
<
span
className
=
{
pageStyle
.
detaildesc
}
>
{
classDetail
.
school_teachers
.
map
(
ele
=>
ele
.
nickname
).
join
(
','
)}
<
/span
>
<
span
className
=
{
pageStyle
.
detaildesc
}
>
{
classDetail
.
school_teachers
&&
classDetail
.
school_teachers
.
map
(
ele
=>
ele
.
nickname
).
join
(
','
)}
<
/span
>
}
{(
!
classDetail
.
school_teachers
||
classDetail
.
school_teachers
.
length
==
0
)
&&
<
span
className
=
{
pageStyle
.
detaildesc
}
>
未绑定
<
/span
>
...
...
src/pages/index/index.js
View file @
0e0b887a
...
...
@@ -107,6 +107,12 @@ class StaticCenter extends React.Component {
type
:
'indexstaic/goCallStudent'
,
});
}
goPlanClass
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'indexstaic/goPlanClass'
,
});
}
goPlanStudent
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
...
...
@@ -248,6 +254,7 @@ class StaticCenter extends React.Component {
addTimeSubmitting
,
chartEndDate
,
chartStartDate
,
scheduleCount
,
}
=
this
.
props
;
const
dataArray
=
clockCharts
;
const
month
=
dataArray
.
dates
;
...
...
@@ -520,6 +527,7 @@ class StaticCenter extends React.Component {
{
birthday
.
total
>
0
&&
<
div
className
=
{
pageStyle
.
birthday
}
onClick
=
{
this
.
goBirthStudent
}
><
span
>
生日
<
/span>本日有{birthday.total || 0}名学员生日待祝福</
div
>
}
{
callData
.
total
>
0
&&
<
div
className
=
{
pageStyle
.
birthday
}
onClick
=
{
this
.
goCallStudent
}
><
span
>
点名
<
/span>本周有{callData.total || 0}个课时尚未点名</
div
>
}
{
assign
.
total
>
0
&&
<
div
className
=
{
pageStyle
.
birthday
}
onClick
=
{
this
.
goPlanStudent
}
><
span
>
分配
<
/span>有{assign.total || 0}名学员未安排班级</
div
>
}
{
scheduleCount
>
0
&&
<
div
className
=
{
pageStyle
.
birthday
}
onClick
=
{
this
.
goPlanClass
}
><
span
>
排课
<
/span>有{scheduleCount}个班级课表即将结束</
div
>
}
<
/div
>
<
/div
>
<
/div
>
...
...
@@ -574,6 +582,7 @@ function mapStateToProps(state) {
addTimeSubmitting
,
chartEndDate
,
chartStartDate
,
scheduleCount
,
}
=
state
.
indexstaic
;
return
{
staticcenter
,
...
...
@@ -595,6 +604,7 @@ function mapStateToProps(state) {
addTimeSubmitting
,
chartEndDate
,
chartStartDate
,
scheduleCount
,
};
}
export
default
connect
(
mapStateToProps
)(
StaticCenter
);
...
...
src/pages/institutions/index.js
View file @
0e0b887a
...
...
@@ -34,13 +34,13 @@ class Institutions extends React.Component {
<
div
className
=
{
pageStyles
.
rowinfo
}
span
=
{
20
}
>
{
schoolDetail
.
title
}
<
/div
>
<
/div
>
{
schoolDetail
.
contact_people
&&
<
div
className
=
{
pageStyles
.
rowline
}
gutter
=
"32"
>
<
div
className
=
{
`
${
pageStyles
.
rowline
}
${
pageStyles
.
contactpeople
}
`
}
gutter
=
"32"
>
<
div
className
=
{
pageStyles
.
rowinfotitle
}
>
联
&
nbsp
;
&
nbsp
;
系
&
nbsp
;
&
nbsp
;
人:
<
/div
>
<
div
className
=
{
pageStyles
.
rowinfo
}
>
{
schoolDetail
.
contact_people
}
<
/div
>
<
/div
>
}
{
schoolDetail
.
tel_phone
&&
<
div
className
=
{
pageStyles
.
rowline
}
gutter
=
"32"
>
<
div
className
=
{
`
${
pageStyles
.
rowline
}
${
pageStyles
.
contactpeople
}
`
}
gutter
=
"32"
>
<
div
className
=
{
pageStyles
.
rowinfotitle
}
>
联系方式:
<
/div
>
<
div
className
=
{
pageStyles
.
rowinfo
}
>
{
schoolDetail
.
tel_phone
.
join
(
','
)}
<
/div
>
<
/div
>
...
...
src/pages/institutions/index.less
View file @
0e0b887a
...
...
@@ -21,6 +21,9 @@
display: flex;
align-items: center;
flex-flow:row wrap;
&.contactpeople {
align-items: flex-start;
}
}
.rowinfotitle {
color: rgba(0,0,0,0.65);
...
...
src/pages/integralmanage/storesetting/GoodsAddModal.js
View file @
0e0b887a
...
...
@@ -157,7 +157,7 @@ class GoodsAddModal extends React.Component {
onCancel
=
{
this
.
close
}
confirmLoading
=
{
submitting
}
onOk
=
{
this
.
save
}
className
=
"
modifyclass
Modal"
className
=
"
goodsadd
Modal"
maskClosable
=
{
false
}
zIndex
=
{
110
}
>
...
...
src/pages/integralmanage/storesetting/GoodsAddModal.less
View file @
0e0b887a
...
...
@@ -404,10 +404,12 @@
cursor: pointer;
}
:global {
.ant-form-item {
margin-bottom: 0;
.ant-form-item-children {
padding-left: 0;
.goodsaddModal {
.ant-form-item {
margin-bottom: 0;
.ant-form-item-children {
padding-left: 0;
}
}
}
}
...
...
src/pages/joinschooladd/index.js
View file @
0e0b887a
import
React
from
'react'
;
import
{
connect
}
from
'dva'
;
import
{
Row
,
Col
,
Form
,
Input
,
Button
}
from
'antd'
;
import
{
Row
,
Col
,
Form
,
Input
,
Button
,
Modal
,
Icon
}
from
'antd'
;
import
pageStyles
from
'./index.less'
;
import
{
pageIn
}
from
'../../utils/index'
;
const
{
Search
}
=
Input
;
...
...
@@ -74,7 +74,9 @@ class JoinSchoolAddForm extends React.Component {
}
render
()
{
const
{
getFieldDecorator
,
getFieldValue
}
=
this
.
props
.
form
;
const
{
codeArr
,
title
,
schoolSubmiting
}
=
this
.
props
;
const
{
codeArr
,
title
,
schoolSubmiting
,
globalErrorType
,
}
=
this
.
props
;
const
{
pwdvisible
,
thistitle
}
=
this
.
state
;
const
formItemLayout
=
{
labelCol
:
{
...
...
@@ -178,6 +180,34 @@ class JoinSchoolAddForm extends React.Component {
<
/Row
>
<
/Form
>
<
/div
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
visible
=
{
globalErrorType
==
1
}
maskStyle
=
{{
zIndex
:
1003
}}
zIndex
=
{
1004
}
closable
=
{
false
}
footer
=
{
<
div
><
Button
onClick
=
{
this
.
signout
}
>
重新登录
<
/Button></
div
>
}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
Icon
type
=
"info-circle"
style
=
{{
color
:
'#faad14'
,
fontSize
:
'30px'
,
marginRight
:
'10px'
}}
/
>
<
span
>
登录信息过期,请重新登录
<
/span
>
<
/div
>
<
/Modal
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
visible
=
{
globalErrorType
==
3
}
maskStyle
=
{{
zIndex
:
1003
}}
zIndex
=
{
1004
}
closable
=
{
false
}
footer
=
{
<
div
><
Button
onClick
=
{
this
.
signout
}
>
退出
<
/Button></
div
>
}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
Icon
type
=
"info-circle"
style
=
{{
color
:
'#faad14'
,
fontSize
:
'30px'
,
marginRight
:
'10px'
}}
/
>
<
span
>
账号已关闭
<
/span
>
<
/div
>
<
/Modal
>
<
/div
>
);
}
...
...
@@ -193,10 +223,12 @@ function mapStateToProps(state) {
title
,
schoolSubmiting
,
}
=
state
.
joinschooladd
;
const
{
globalErrorType
}
=
state
.
webapp
;
return
{
codeArr
,
title
,
schoolSubmiting
,
globalErrorType
,
};
}
export
default
connect
(
mapStateToProps
)(
JoinSchoolAdd
);
src/pages/officialweb/editor.js
View file @
0e0b887a
...
...
@@ -84,6 +84,17 @@ class Officialweb extends React.Component {
type
:
'officialweb/previewofficialweb'
,
});
}
courseSwitch
=
(
e
)
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'officialweb/courseinfopost'
,
payload
:
{
values
:
{
switch
:
e
?
1
:
2
,
},
},
});
}
render
()
{
const
{
pageInfo
,
...
...
@@ -94,6 +105,7 @@ class Officialweb extends React.Component {
previewQrcodeShow
,
previewQrcode
,
course
,
coursePostStatus
,
}
=
this
.
props
;
let
renderDom
;
const
newPageInfo
=
pageInfo
;
...
...
@@ -105,11 +117,13 @@ class Officialweb extends React.Component {
return
(
<
div
className
=
{
pageStyle
.
container
}
>
<
div
className
=
{
pageStyle
.
mobilecontainer
}
>
<
div
className
=
{
pageStyle
.
floatcoursebox
}
>
{
/*
<div className={pageStyle.floatcoursebox}>
<Course
course={course}
/>
</div>
*/
}
{
newPageInfo
.
map
((
ele
,
index
)
=>
{
switch
(
ele
.
type
)
{
...
...
@@ -182,6 +196,8 @@ class Officialweb extends React.Component {
<
Course
course
=
{
ele
.
data
}
showStatus
courseSwitch
=
{
this
.
courseSwitch
}
coursePostStatus
=
{
coursePostStatus
}
/
>
{
dragoverindex
==
index
&&
<
div
className
=
{
pageStyle
.
dropendbox
}
>
松开鼠标,模块会放在这里
<
/div>
}
<
/div
>
...
...
@@ -193,11 +209,11 @@ class Officialweb extends React.Component {
{index == (newPageInfo.length - 1) && <div className={`${pageStyle.blockOperateItem} ${pageStyle.blockOperateItemGrey}`}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-down" /></div>}
</div>
*/
}
{
moduleSelect
==
index
&&
{
/*
moduleSelect == index &&
<div className={pageStyle.editbox}>
<CourseEditor />
</div>
}
*/
}
<
/div
>
);
break
;
...
...
@@ -216,8 +232,8 @@ class Officialweb extends React.Component {
<
/div
>
{
moduleSelect
==
index
&&
<
div
className
=
{
pageStyle
.
blockOperateBox
}
>
{
index
==
2
&&
<
div
className
=
{
`
${
pageStyle
.
blockOperateItem
}
${
pageStyle
.
blockOperateItemGrey
}
`
}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-up"
/><
/div>
}
{
index
>
2
&&
<
div
className
=
{
pageStyle
.
blockOperateItem
}
onClick
=
{()
=>
this
.
pageBlockMove
(
index
,
'up'
)}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-up"
/><
/div>
}
{
index
==
3
&&
<
div
className
=
{
`
${
pageStyle
.
blockOperateItem
}
${
pageStyle
.
blockOperateItemGrey
}
`
}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-up"
/><
/div>
}
{
index
>
3
&&
<
div
className
=
{
pageStyle
.
blockOperateItem
}
onClick
=
{()
=>
this
.
pageBlockMove
(
index
,
'up'
)}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-up"
/><
/div>
}
{
index
<
(
newPageInfo
.
length
-
1
)
&&
<
div
className
=
{
pageStyle
.
blockOperateItem
}
onClick
=
{()
=>
this
.
pageBlockMove
(
index
,
'down'
)}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-down"
/><
/div>
}
{
index
==
(
newPageInfo
.
length
-
1
)
&&
<
div
className
=
{
`
${
pageStyle
.
blockOperateItem
}
${
pageStyle
.
blockOperateItemGrey
}
`
}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-down"
/><
/div>
}
<
/div
>
...
...
@@ -240,8 +256,8 @@ class Officialweb extends React.Component {
<
/div
>
{
moduleSelect
==
index
&&
<
div
className
=
{
pageStyle
.
blockOperateBox
}
>
{
index
==
2
&&
<
div
className
=
{
`
${
pageStyle
.
blockOperateItem
}
${
pageStyle
.
blockOperateItemGrey
}
`
}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-up"
/><
/div>
}
{
index
>
2
&&
<
div
className
=
{
pageStyle
.
blockOperateItem
}
onClick
=
{()
=>
this
.
pageBlockMove
(
index
,
'up'
)}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-up"
/><
/div>
}
{
index
==
3
&&
<
div
className
=
{
`
${
pageStyle
.
blockOperateItem
}
${
pageStyle
.
blockOperateItemGrey
}
`
}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-up"
/><
/div>
}
{
index
>
3
&&
<
div
className
=
{
pageStyle
.
blockOperateItem
}
onClick
=
{()
=>
this
.
pageBlockMove
(
index
,
'up'
)}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-up"
/><
/div>
}
{
index
<
(
newPageInfo
.
length
-
1
)
&&
<
div
className
=
{
pageStyle
.
blockOperateItem
}
onClick
=
{()
=>
this
.
pageBlockMove
(
index
,
'down'
)}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-down"
/><
/div>
}
{
index
==
(
newPageInfo
.
length
-
1
)
&&
<
div
className
=
{
`
${
pageStyle
.
blockOperateItem
}
${
pageStyle
.
blockOperateItemGrey
}
`
}
><
Icon
className
=
{
pageStyle
.
blockOperateItemIcon
}
type
=
"arrow-down"
/><
/div>
}
<
/div
>
...
...
@@ -289,6 +305,7 @@ function mapStateToProps(state) {
previewQrcodeShow
,
previewQrcode
,
course
,
coursePostStatus
,
}
=
state
.
officialweb
;
const
{
cropperboxShow
,
...
...
@@ -305,6 +322,7 @@ function mapStateToProps(state) {
previewQrcodeShow
,
previewQrcode
,
course
,
coursePostStatus
,
};
}
export
default
connect
(
mapStateToProps
)(
Officialweb
);
...
...
src/pages/officialweb/pagecomponent/Course.js
View file @
0e0b887a
import
React
from
'react'
;
import
{
connect
}
from
'dva'
;
import
{
Carousel
}
from
'antd'
;
import
{
Carousel
,
Switch
}
from
'antd'
;
import
PageStyle
from
'./Course.less'
;
import
{
imagify
}
from
'../../../utils'
;
function
Course
(
props
)
{
const
{
course
,
showStatus
}
=
props
;
const
{
course
,
showStatus
,
courseSwitch
,
coursePostStatus
,
}
=
props
;
// {showStatus && <div className={`${PageStyle.courseStatue} ${course.switch == 1 ? PageStyle.courseopen : PageStyle.courseclose}`}>{course.switch == 1 && '开启'}{course.switch == 2 && '关闭'}</div>}
return
(
<
div
className
=
{
PageStyle
.
Coursecontainer
}
>
{
showStatus
&&
<
div
className
=
{
`
${
PageStyle
.
courseStatue
}
${
course
.
switch
==
1
?
PageStyle
.
courseopen
:
PageStyle
.
courseclose
}
`
}
>
{
course
.
switch
==
1
&&
'开启'
}{
course
.
switch
==
2
&&
'关闭'
}
<
/div>
}
{
showStatus
&&
<
div
className
=
{
PageStyle
.
courseStatue
}
>
<
Switch
onChange
=
{
courseSwitch
}
checked
=
{
course
.
switch
==
1
}
checkedChildren
=
"开"
unCheckedChildren
=
"关"
loading
=
{
coursePostStatus
}
/
>
<
/div
>
}
<
div
className
=
{
PageStyle
.
Coursebox
}
>
<
img
className
=
{
PageStyle
.
clockicon
}
src
=
{
`
${
__IMGCDN__
}
floatclockicon.png`
}
alt
=
""
/>
<
span
>
立即预约,免费领取试听课
<
/span
>
...
...
src/pages/officialweb/pagecomponent/Course.less
View file @
0e0b887a
...
...
@@ -42,9 +42,9 @@
}
.courseStatue {
position: absolute;
top:
50%
;
transform: translateY(-50%);
righ
t: 4px;
top:
4px
;
//
transform: translateY(-50%);
lef
t: 4px;
width: 40px;
height: 24px;
font-size: 12px;
...
...
src/pages/schooladd/index.js
View file @
0e0b887a
import
fetchJsonp
from
'fetch-jsonp'
;
import
React
from
'react'
;
import
{
connect
}
from
'dva'
;
import
{
Row
,
Col
,
Form
,
Input
,
Button
,
Checkbox
,
message
,
Modal
,
Cascader
}
from
'antd'
;
import
{
Row
,
Col
,
Form
,
Input
,
Button
,
Checkbox
,
message
,
Modal
,
Cascader
,
Icon
}
from
'antd'
;
import
pageStyles
from
'./index.less'
;
import
{
LocalStorage
,
SessionStorage
,
pageIn
,
getRandomString
}
from
'../../utils/index'
;
import
disData
from
'../../common/dis.data'
;
...
...
@@ -380,6 +380,7 @@ class SchoolAddForm extends React.Component {
locationAddress
,
mobile
,
form
,
globalErrorType
,
}
=
this
.
props
;
const
{
location
,
...
...
@@ -584,6 +585,34 @@ class SchoolAddForm extends React.Component {
<
/div
>
<
/Form
>
<
/Modal
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
visible
=
{
globalErrorType
==
1
}
maskStyle
=
{{
zIndex
:
1003
}}
zIndex
=
{
1004
}
closable
=
{
false
}
footer
=
{
<
div
><
Button
onClick
=
{
this
.
signout
}
>
重新登录
<
/Button></
div
>
}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
Icon
type
=
"info-circle"
style
=
{{
color
:
'#faad14'
,
fontSize
:
'30px'
,
marginRight
:
'10px'
}}
/
>
<
span
>
登录信息过期,请重新登录
<
/span
>
<
/div
>
<
/Modal
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
visible
=
{
globalErrorType
==
3
}
maskStyle
=
{{
zIndex
:
1003
}}
zIndex
=
{
1004
}
closable
=
{
false
}
footer
=
{
<
div
><
Button
onClick
=
{
this
.
signout
}
>
退出
<
/Button></
div
>
}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
Icon
type
=
"info-circle"
style
=
{{
color
:
'#faad14'
,
fontSize
:
'30px'
,
marginRight
:
'10px'
}}
/
>
<
span
>
账号已关闭
<
/span
>
<
/div
>
<
/Modal
>
<
/div
>
);
}
...
...
@@ -602,6 +631,7 @@ function mapStateToProps(state) {
latitude
,
mobile
,
}
=
state
.
schooladd
;
const
{
globalErrorType
}
=
state
.
webapp
;
return
{
categorys
,
selectcategorys
,
...
...
@@ -609,6 +639,7 @@ function mapStateToProps(state) {
longitude
,
latitude
,
mobile
,
globalErrorType
,
};
}
export
default
connect
(
mapStateToProps
)(
SchoolAdd
);
src/pages/schooledit/index.less
View file @
0e0b887a
...
...
@@ -10,6 +10,7 @@
.container {
min-height: 100vh;
background-color: #fff;
padding-left: 24px;
}
.content {
padding: 23px 25px 27px;
...
...
src/pages/schoollist/index.js
View file @
0e0b887a
import
React
from
'react'
;
import
{
connect
}
from
'dva'
;
import
{
Row
,
Col
,
Form
,
Input
,
Button
,
Modal
}
from
'antd'
;
import
{
Row
,
Col
,
Form
,
Input
,
Button
,
Modal
,
Icon
}
from
'antd'
;
import
pageStyles
from
'./index.less'
;
import
{
pageIn
,
imagify
}
from
'../../utils/index'
;
const
{
Search
}
=
Input
;
...
...
@@ -101,6 +101,15 @@ class JoinSchoolAddForm extends React.Component {
},
});
}
signout
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'webapp/signout'
,
payload
:
{
dispatch
,
},
});
}
render
()
{
const
{
schoolList
,
...
...
@@ -108,6 +117,7 @@ class JoinSchoolAddForm extends React.Component {
inviateTeacherList
,
userInfo
,
stronghold
,
globalErrorType
,
}
=
this
.
props
;
return
(
<
Row
className
=
{
`
${
pageStyles
.
container
}
schoollistcontainer`
}
>
...
...
@@ -211,6 +221,34 @@ class JoinSchoolAddForm extends React.Component {
<
/Row
>
<
/Row
>
<
/Row
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
visible
=
{
globalErrorType
==
1
}
maskStyle
=
{{
zIndex
:
1003
}}
zIndex
=
{
1004
}
closable
=
{
false
}
footer
=
{
<
div
><
Button
onClick
=
{
this
.
signout
}
>
重新登录
<
/Button></
div
>
}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
Icon
type
=
"info-circle"
style
=
{{
color
:
'#faad14'
,
fontSize
:
'30px'
,
marginRight
:
'10px'
}}
/
>
<
span
>
登录信息过期,请重新登录
<
/span
>
<
/div
>
<
/Modal
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
visible
=
{
globalErrorType
==
3
}
maskStyle
=
{{
zIndex
:
1003
}}
zIndex
=
{
1004
}
closable
=
{
false
}
footer
=
{
<
div
><
Button
onClick
=
{
this
.
signout
}
>
退出
<
/Button></
div
>
}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
Icon
type
=
"info-circle"
style
=
{{
color
:
'#faad14'
,
fontSize
:
'30px'
,
marginRight
:
'10px'
}}
/
>
<
span
>
账号已关闭
<
/span
>
<
/div
>
<
/Modal
>
<
/Row
>
);
}
...
...
@@ -229,6 +267,7 @@ function mapStateToProps(state) {
}
=
state
.
schoollist
;
const
{
userInfo
,
globalErrorType
,
}
=
state
.
webapp
;
return
{
schoolList
,
...
...
@@ -236,6 +275,7 @@ function mapStateToProps(state) {
inviateTeacherList
,
userInfo
,
stronghold
,
globalErrorType
,
};
}
export
default
connect
(
mapStateToProps
)(
JoinSchoolAdd
);
src/pages/student/StudentAdd.js
View file @
0e0b887a
...
...
@@ -220,7 +220,7 @@ class StudentAddForm extends React.Component {
<
/Col
>
<
Col
sm
=
{{
span
:
8
}}
style
=
{{
textAlign
:
'center'
}}
>
<
img
className
=
{
pageStyle
.
avatar
}
src
=
{
imagify
(
studentAvator
)
||
`
${
__IMGCDN__
}
defaultavatar.png`
}
alt
=
"1"
/>
<
span
style
=
{{
position
:
'relative'
}}
>
<
span
style
=
{{
position
:
'relative'
,
color
:
'#1890FF'
}}
>
<
input
type
=
"file"
id
=
"uploadinput"
className
=
{
pageStyle
.
fileuploadinput
}
onChange
=
{(
e
)
=>
{
this
.
uploadAvator
(
e
);
}}
accept
=
"image/*"
/>
上传头像
<
/span
>
...
...
src/pages/student/StudentAdd.less
View file @
0e0b887a
...
...
@@ -23,7 +23,7 @@
:global {
.addstudentcontent {
.ant-form-item {
margin-bottom: 20px;
//
margin-bottom: 20px;
}
}
}
\ No newline at end of file
src/pages/studentinfo/StudentEdit.js
View file @
0e0b887a
...
...
@@ -178,7 +178,7 @@ class StudentAddForm extends React.Component {
<
/Col
>
<
Col
sm
=
{{
span
:
8
}}
style
=
{{
textAlign
:
'center'
}}
>
<
img
className
=
{
pageStyle
.
avatar
}
src
=
{
imagify
(
studentAvator
)
||
`
${
__IMGCDN__
}
defaultavatar.png`
}
alt
=
""
/>
<
span
style
=
{{
position
:
'relative'
}}
>
<
span
style
=
{{
position
:
'relative'
,
color
:
'#1890FF'
}}
>
<
input
type
=
"file"
id
=
"uploadinput"
className
=
{
pageStyle
.
fileuploadinput
}
onChange
=
{(
e
)
=>
{
this
.
uploadAvator
(
e
);
}}
accept
=
"image/*"
/>
上传头像
<
/span
>
...
...
src/pages/thememgt/index.js
View file @
0e0b887a
...
...
@@ -197,7 +197,7 @@ class ThemeMgt extends React.Component {
<
div
className
=
{
pageStyle
.
tablecell
}
>
{
record
.
subject_type
==
1
&&
record
.
clock_record_count
}
{
record
.
subject_type
==
2
&&
record
.
clock_record_count
}
{
record
.
subject_type
==
3
&&
record
.
clock_
people
}
{
record
.
subject_type
==
3
&&
record
.
clock_
record_count
}
<
/div
>
),
},
...
...
src/pages/usersetting/index.js
View file @
0e0b887a
import
React
from
'react'
;
import
{
connect
}
from
'dva'
;
import
{
Row
,
Col
,
Modal
,
Form
,
Input
,
Button
,
message
}
from
'antd'
;
import
{
Row
,
Col
,
Modal
,
Form
,
Input
,
Button
,
message
,
Icon
}
from
'antd'
;
import
pageStyles
from
'./index.less'
;
import
BindWx
from
'./BindWx'
;
import
UpdateNickname
from
'./UpdateNickname'
;
...
...
@@ -240,6 +240,7 @@ class UserSettingForm extends React.Component {
checkoutVerifyCode
,
nicknameChangeShow
,
nicknameSubmitting
,
globalErrorType
,
}
=
this
.
props
;
const
{
getFieldDecorator
}
=
this
.
props
.
form
;
return
(
...
...
@@ -411,6 +412,34 @@ class UserSettingForm extends React.Component {
onCancel
=
{()
=>
this
.
toupdateNickanem
(
false
)}
nicknameSubmitting
=
{
nicknameSubmitting
}
/
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
visible
=
{
globalErrorType
==
1
}
maskStyle
=
{{
zIndex
:
1003
}}
zIndex
=
{
1004
}
closable
=
{
false
}
footer
=
{
<
div
><
Button
onClick
=
{
this
.
signout
}
>
重新登录
<
/Button></
div
>
}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
Icon
type
=
"info-circle"
style
=
{{
color
:
'#faad14'
,
fontSize
:
'30px'
,
marginRight
:
'10px'
}}
/
>
<
span
>
登录信息过期,请重新登录
<
/span
>
<
/div
>
<
/Modal
>
<
Modal
title
=
"温馨提示"
style
=
{{
top
:
20
}}
visible
=
{
globalErrorType
==
3
}
maskStyle
=
{{
zIndex
:
1003
}}
zIndex
=
{
1004
}
closable
=
{
false
}
footer
=
{
<
div
><
Button
onClick
=
{
this
.
signout
}
>
退出
<
/Button></
div
>
}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
Icon
type
=
"info-circle"
style
=
{{
color
:
'#faad14'
,
fontSize
:
'30px'
,
marginRight
:
'10px'
}}
/
>
<
span
>
账号已关闭
<
/span
>
<
/div
>
<
/Modal
>
<
/Row
>
);
}
...
...
@@ -429,6 +458,7 @@ function mapStateToProps(state) {
}
=
state
.
uploader
;
const
{
userInfo
,
globalErrorType
,
}
=
state
.
webapp
;
const
{
counting
,
...
...
@@ -467,6 +497,7 @@ function mapStateToProps(state) {
checkoutVerifyCode
,
nicknameChangeShow
,
nicknameSubmitting
,
globalErrorType
,
};
}
export
default
connect
(
mapStateToProps
)(
UserSetting
);
src/services/indexstaic.js
View file @
0e0b887a
...
...
@@ -25,6 +25,13 @@ export function birthday({ schoolId }) {
method
:
'GET'
,
});
}
export
function
todoSchedule
(
params
)
{
const
data
=
qs
.
stringify
(
params
);
return
request
({
url
:
`
${
api
.
todo
.
todoSchedule
}
?
${
data
}
`
,
method
:
'GET'
,
});
}
export
function
call
(
params
)
{
const
data
=
qs
.
stringify
(
params
);
return
request
({
...
...
webpack.config.js
View file @
0e0b887a
...
...
@@ -31,6 +31,23 @@ const proFile = {
}
}
};
const
testFile
=
{
title
:
'轻校'
,
template
:
'./public/index.ejs'
,
filename
:
'../index.html'
,
inject
:
false
,
// hash: true,
files
:
{
CDN
:
''
,
header
:
{
js
:
[
"lib/vendor.dll.js"
],
css
:
[
"dist/index.css"
]
},
footer
:
{
js
:
[
"dist/index.js"
]
}
}
};
const
devFile
=
{
title
:
'轻校'
,
template
:
'./public/index.ejs'
,
...
...
@@ -49,13 +66,20 @@ const devFile ={
};
module
.
exports
=
function
(
config
,
env
)
{
const
newConfig
=
config
;
const
production
=
process
.
env
.
NODE_ENV
==
'production'
;
if
(
!
production
)
{
// 线下环境
// newConfig.output.filename = "[name].js";
// newConfig.output.path = path.resolve(__dirname, './dist');
// newConfig.output.publicPath = "dist/";
// const production = process.env.NODE_ENV == 'production';
const
NODE_ENV
=
process
.
env
.
NODE_ENV
;
let
htmlOption
;
if
(
NODE_ENV
==
'development'
)
{
// 线下环境
newConfig
.
output
.
chunkFilename
=
"[name].js?[chunkhash:4]"
;
htmlOption
=
devFile
;
}
else
if
(
NODE_ENV
==
'testenv'
)
{
newConfig
.
output
.
filename
=
"[name].js"
;
newConfig
.
output
.
path
=
path
.
resolve
(
__dirname
,
'./dist'
);
newConfig
.
output
.
publicPath
=
"/dist/"
;
newConfig
.
output
.
chunkFilename
=
"[name].js?[chunkhash:6]"
;
htmlOption
=
testFile
;
}
else
{
// 线上环境
htmlOption
=
proFile
;
newConfig
.
plugins
.
push
(
new
webpack
.
optimize
.
UglifyJsPlugin
({
compress
:
{
warnings
:
false
,
...
...
@@ -67,8 +91,6 @@ module.exports = function (config, env) {
newConfig
.
output
.
publicPath
=
"https://cdn.img.shangjiadao.cn/qingxiao/biz/dist/"
;
newConfig
.
output
.
chunkFilename
=
"[name].js?[chunkhash:6]"
;
}
let
htmlOption
;
production
?
htmlOption
=
proFile
:
htmlOption
=
devFile
;
newConfig
.
plugins
.
push
(
new
HtmlWebpackPlugin
(
htmlOption
));
newConfig
.
plugins
.
push
(
new
webpack
.
DllReferencePlugin
({
context
:
__dirname
,
...
...
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