Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
MCMS
Commits
818f5552
Commit
818f5552
authored
Aug 14, 2019
by
sgjj
Browse files
更新
parent
0fd4a57a
Changes
26
Show whitespace changes
Inline
Side-by-side
pom.xml
View file @
818f5552
...
@@ -3,10 +3,9 @@
...
@@ -3,10 +3,9 @@
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
net.mingsoft
</groupId>
<groupId>
net.mingsoft
</groupId>
<artifactId>
mcms
</artifactId>
<artifactId>
mcms
</artifactId>
<version>
4.7.
0-SNAPSHOT
</version>
<version>
4.7.
1
</version>
<name>
ms-mcms
</name>
<name>
ms-mcms
</name>
<properties>
<properties>
<java.version>
1.8
</java.version>
<java.version>
1.8
</java.version>
...
@@ -38,24 +37,19 @@
...
@@ -38,24 +37,19 @@
<dependencies>
<dependencies>
<dependency>
<dependency>
<groupId>
net.mingsoft
</groupId>
<groupId>
net.mingsoft
</groupId>
<artifactId>
ms-
mpeople
</artifactId>
<artifactId>
ms-
basic
</artifactId>
<version>
1.0.
7
</version>
<version>
1.0.
11
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
net.mingsoft
</groupId>
<groupId>
net.mingsoft
</groupId>
<artifactId>
ms-upgrader
</artifactId>
<artifactId>
ms-mpeople
</artifactId>
<version>
1.0.5-SNAPSHOT
</version>
<version>
1.0.8
</version>
</dependency>
<dependency>
<groupId>
javax.servlet
</groupId>
<artifactId>
javax.servlet-api
</artifactId>
<version>
3.1.0
</version>
<scope>
test
</scope>
</dependency>
</dependency>
<!-- 此部分是铭飞平台MStroe的客户端(MStore不在铭飞开源产品范围),如果不需要使用MStore可以删除掉 -->
<dependency>
<dependency>
<groupId>
org.apache.tomcat.embed
</groupId>
<groupId>
net.mingsoft
</groupId>
<artifactId>
tomcat-embed-jasp
er
</artifactId>
<artifactId>
ms-upgrad
er
</artifactId>
<version>
9
.0.
16
</version>
<version>
1
.0.
8
</version>
</dependency>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
src/main/java/net/mingsoft/cms/action/ColumnAction.java
View file @
818f5552
...
@@ -9,6 +9,8 @@ import java.util.List;
...
@@ -9,6 +9,8 @@ import java.util.List;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
net.mingsoft.basic.util.ArrysUtil
;
import
net.mingsoft.mdiy.util.DictUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -84,6 +86,8 @@ public class ColumnAction extends BaseAction{
...
@@ -84,6 +86,8 @@ public class ColumnAction extends BaseAction{
int
appId
=
BasicUtil
.
getAppId
();
int
appId
=
BasicUtil
.
getAppId
();
List
<
ColumnEntity
>
list
=
columnBiz
.
queryAll
(
appId
,
BasicUtil
.
getModelCodeId
(
net
.
mingsoft
.
cms
.
constant
.
ModelCode
.
CMS_COLUMN
.
toString
()));
List
<
ColumnEntity
>
list
=
columnBiz
.
queryAll
(
appId
,
BasicUtil
.
getModelCodeId
(
net
.
mingsoft
.
cms
.
constant
.
ModelCode
.
CMS_COLUMN
.
toString
()));
ColumnEntity
columnSuper
=
new
ColumnEntity
();
ColumnEntity
columnSuper
=
new
ColumnEntity
();
// 栏目属性
model
.
addAttribute
(
"columnFlag"
,
DictUtil
.
list
(
"栏目属性"
));
model
.
addAttribute
(
"appId"
,
appId
);
model
.
addAttribute
(
"appId"
,
appId
);
model
.
addAttribute
(
"columnSuper"
,
columnSuper
);
model
.
addAttribute
(
"columnSuper"
,
columnSuper
);
model
.
addAttribute
(
"column"
,
new
ColumnEntity
());
model
.
addAttribute
(
"column"
,
new
ColumnEntity
());
...
@@ -199,6 +203,8 @@ public class ColumnAction extends BaseAction{
...
@@ -199,6 +203,8 @@ public class ColumnAction extends BaseAction{
list
=
columnBiz
.
queryAll
(
appId
,
BasicUtil
.
getModelCodeId
(
net
.
mingsoft
.
cms
.
constant
.
ModelCode
.
CMS_COLUMN
.
toString
()));
list
=
columnBiz
.
queryAll
(
appId
,
BasicUtil
.
getModelCodeId
(
net
.
mingsoft
.
cms
.
constant
.
ModelCode
.
CMS_COLUMN
.
toString
()));
//查询当前栏目实体
//查询当前栏目实体
ColumnEntity
column
=
(
ColumnEntity
)
columnBiz
.
getEntity
(
columnId
);
ColumnEntity
column
=
(
ColumnEntity
)
columnBiz
.
getEntity
(
columnId
);
// 栏目属性
model
.
addAttribute
(
"columnFlag"
,
DictUtil
.
list
(
"栏目属性"
));
model
.
addAttribute
(
"appId"
,
appId
);
model
.
addAttribute
(
"appId"
,
appId
);
model
.
addAttribute
(
"column"
,
column
);
model
.
addAttribute
(
"column"
,
column
);
model
.
addAttribute
(
"columnc"
,
column
.
getCategoryId
());
model
.
addAttribute
(
"columnc"
,
column
.
getCategoryId
());
...
@@ -245,6 +251,13 @@ public class ColumnAction extends BaseAction{
...
@@ -245,6 +251,13 @@ public class ColumnAction extends BaseAction{
column
.
setCategoryManagerId
(
getManagerBySession
(
request
).
getManagerId
());
column
.
setCategoryManagerId
(
getManagerBySession
(
request
).
getManagerId
());
column
.
setCategoryDateTime
(
new
Timestamp
(
System
.
currentTimeMillis
()));
column
.
setCategoryDateTime
(
new
Timestamp
(
System
.
currentTimeMillis
()));
column
.
setCategoryModelId
(
BasicUtil
.
getModelCodeId
(
net
.
mingsoft
.
cms
.
constant
.
ModelCode
.
CMS_COLUMN
.
toString
()));
column
.
setCategoryModelId
(
BasicUtil
.
getModelCodeId
(
net
.
mingsoft
.
cms
.
constant
.
ModelCode
.
CMS_COLUMN
.
toString
()));
String
checkboxType
=
BasicUtil
.
getString
(
"checkboxType"
);
//如果选择一个属性不做排序操作
if
(!
StringUtils
.
isEmpty
(
checkboxType
)
&&
checkboxType
.
length
()>
2
){
column
.
setColumnFlag
(
ArrysUtil
.
sort
(
checkboxType
,
","
)+
","
);
}
else
{
column
.
setColumnFlag
(
checkboxType
);
}
if
(
column
.
getColumnType
()==
ColumnEntity
.
ColumnTypeEnum
.
COLUMN_TYPE_COVER
.
toInt
()){
if
(
column
.
getColumnType
()==
ColumnEntity
.
ColumnTypeEnum
.
COLUMN_TYPE_COVER
.
toInt
()){
column
.
setColumnListUrl
(
null
);
column
.
setColumnListUrl
(
null
);
}
}
...
@@ -274,6 +287,13 @@ public class ColumnAction extends BaseAction{
...
@@ -274,6 +287,13 @@ public class ColumnAction extends BaseAction{
}
}
column
.
setCategoryManagerId
(
getManagerBySession
(
request
).
getManagerId
());
column
.
setCategoryManagerId
(
getManagerBySession
(
request
).
getManagerId
());
column
.
setAppId
(
websiteId
);
column
.
setAppId
(
websiteId
);
String
checkboxType
=
BasicUtil
.
getString
(
"checkboxType"
);
//如果选择一个属性不做排序操作
if
(!
StringUtils
.
isEmpty
(
checkboxType
)
&&
checkboxType
.
length
()>
2
){
column
.
setColumnFlag
(
ArrysUtil
.
sort
(
checkboxType
,
","
)+
","
);
}
else
{
column
.
setColumnFlag
(
checkboxType
);
}
columnBiz
.
updateCategory
(
column
);
columnBiz
.
updateCategory
(
column
);
this
.
columnPath
(
request
,
column
);
this
.
columnPath
(
request
,
column
);
//查询当前栏目是否有子栏目,
//查询当前栏目是否有子栏目,
...
...
src/main/java/net/mingsoft/cms/action/GeneraterAction.java
View file @
818f5552
...
@@ -30,6 +30,8 @@ import java.util.List;
...
@@ -30,6 +30,8 @@ import java.util.List;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
...
@@ -194,8 +196,17 @@ public class GeneraterAction extends BaseAction {
...
@@ -194,8 +196,17 @@ public class GeneraterAction extends BaseAction {
CmsParserUtil
.
generateList
(
column
,
articleIdList
.
size
());
CmsParserUtil
.
generateList
(
column
,
articleIdList
.
size
());
break
;
break
;
case
ColumnEntity
.
COLUMN_TYPE_COVER
:
// 单页
case
ColumnEntity
.
COLUMN_TYPE_COVER
:
// 单页
if
(
articleIdList
.
size
()==
0
){
ColumnArticleIdBean
columnArticleIdBean
=
new
ColumnArticleIdBean
();
CopyOptions
copyOptions
=
CopyOptions
.
create
();
copyOptions
.
setIgnoreError
(
true
);
BeanUtil
.
copyProperties
(
column
,
columnArticleIdBean
,
copyOptions
);
articleIdList
.
add
(
columnArticleIdBean
);
}
CmsParserUtil
.
generateBasic
(
articleIdList
);
CmsParserUtil
.
generateBasic
(
articleIdList
);
break
;
break
;
default
:
throw
new
IllegalStateException
(
"Unexpected value: "
+
column
.
getColumnType
());
}
}
}
}
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
...
...
src/main/java/net/mingsoft/cms/action/web/MCmsAction.java
View file @
818f5552
/**
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* this software and associated documentation files (the "Software"), to deal in
...
@@ -21,13 +21,23 @@ The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
...
@@ -21,13 +21,23 @@ The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
package
net.mingsoft.cms.action.web
;
package
net.mingsoft.cms.action.web
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
cn.hutool.core.io.FileUtil
;
import
com.github.pagehelper.PageHelper
;
import
net.mingsoft.base.constant.Const
;
import
net.mingsoft.basic.util.SpringUtil
;
import
net.mingsoft.cms.constant.e.ColumnTypeEnum
;
import
net.mingsoft.mdiy.biz.IContentModelBiz
;
import
net.mingsoft.mdiy.entity.ContentModelEntity
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
...
@@ -60,7 +70,7 @@ import net.mingsoft.mdiy.util.ParserUtil;
...
@@ -60,7 +70,7 @@ import net.mingsoft.mdiy.util.ParserUtil;
*/
*/
@Controller
(
"dynamicPageAction"
)
@Controller
(
"dynamicPageAction"
)
@RequestMapping
(
"/mcms"
)
@RequestMapping
(
"/mcms"
)
public
class
MCmsAction
extends
net
.
mingsoft
.
mdiy
.
action
.
BaseAction
{
public
class
MCmsAction
extends
net
.
mingsoft
.
cms
.
action
.
BaseAction
{
/**
/**
* 自定义页面业务层
* 自定义页面业务层
...
@@ -204,13 +214,21 @@ public class MCmsAction extends net.mingsoft.mdiy.action.BaseAction {
...
@@ -204,13 +214,21 @@ public class MCmsAction extends net.mingsoft.mdiy.action.BaseAction {
* @param id 文章编号
* @param id 文章编号
*/
*/
@GetMapping
(
"/view.do"
)
@GetMapping
(
"/view.do"
)
public
void
view
(
HttpServletRequest
req
,
HttpServletResponse
resp
)
{
public
void
view
(
String
orderby
,
String
order
,
HttpServletRequest
req
,
HttpServletResponse
resp
)
{
//参数文章编号
//参数文章编号
ArticleEntity
article
=
(
ArticleEntity
)
articleBiz
.
getEntity
(
BasicUtil
.
getInt
(
ParserUtil
.
ID
));
ArticleEntity
article
=
(
ArticleEntity
)
articleBiz
.
getEntity
(
BasicUtil
.
getInt
(
ParserUtil
.
ID
));
if
(
ObjectUtil
.
isNull
(
article
)){
if
(
ObjectUtil
.
isNull
(
article
)){
this
.
outJson
(
resp
,
null
,
false
,
getResString
(
"err.empty"
,
this
.
getResString
(
"id"
)));
this
.
outJson
(
resp
,
null
,
false
,
getResString
(
"err.empty"
,
this
.
getResString
(
"id"
)));
return
;
return
;
}
}
if
(
StringUtils
.
isNotBlank
(
order
)){
//防注入
if
(!
order
.
toLowerCase
().
equals
(
"asc"
)&&!
order
.
toLowerCase
().
equals
(
"desc"
)){
this
.
outJson
(
resp
,
null
,
false
,
getResString
(
"err.error"
,
this
.
getResString
(
"order"
)));
return
;
}
}
PageBean
page
=
new
PageBean
();
//根据文章编号查询栏目详情模版
//根据文章编号查询栏目详情模版
ColumnEntity
column
=
(
ColumnEntity
)
columnBiz
.
getEntity
(
article
.
getBasicCategoryId
());
ColumnEntity
column
=
(
ColumnEntity
)
columnBiz
.
getEntity
(
article
.
getBasicCategoryId
());
//解析后的内容
//解析后的内容
...
@@ -221,6 +239,55 @@ public class MCmsAction extends net.mingsoft.mdiy.action.BaseAction {
...
@@ -221,6 +239,55 @@ public class MCmsAction extends net.mingsoft.mdiy.action.BaseAction {
//设置动态请求的模块路径
//设置动态请求的模块路径
map
.
put
(
ParserUtil
.
MODEL_NAME
,
"mcms"
);
map
.
put
(
ParserUtil
.
MODEL_NAME
,
"mcms"
);
map
.
put
(
ParserUtil
.
URL
,
BasicUtil
.
getUrl
());
map
.
put
(
ParserUtil
.
URL
,
BasicUtil
.
getUrl
());
map
.
put
(
ParserUtil
.
PAGE
,
page
);
map
.
put
(
ParserUtil
.
ID
,
article
.
getArticleID
());
List
<
ColumnArticleIdBean
>
articleIdList
=
articleBiz
.
queryIdsByCategoryIdForParser
(
column
.
getCategoryCategoryId
(),
null
,
null
,
orderby
,
order
);
Map
<
Object
,
Object
>
contentModelMap
=
new
HashMap
<
Object
,
Object
>();
ContentModelEntity
contentModel
=
null
;
for
(
int
artId
=
0
;
artId
<
articleIdList
.
size
();)
{
//如果不是当前文章则跳过
if
(
articleIdList
.
get
(
artId
).
getArticleId
()
!=
article
.
getArticleID
()){
artId
++;
continue
;
}
// 文章的栏目路径
String
articleColumnPath
=
articleIdList
.
get
(
artId
).
getColumnPath
();
// 文章的栏目模型编号
int
columnContentModelId
=
articleIdList
.
get
(
artId
).
getColumnContentModelId
();
Map
<
String
,
Object
>
parserParams
=
new
HashMap
<
String
,
Object
>();
parserParams
.
put
(
ParserUtil
.
COLUMN
,
articleIdList
.
get
(
artId
));
// 判断当前栏目是否有自定义模型
if
(
columnContentModelId
>
0
)
{
// 通过当前栏目的模型编号获取,自定义模型表名
if
(
contentModelMap
.
containsKey
(
columnContentModelId
))
{
parserParams
.
put
(
ParserUtil
.
TABLE_NAME
,
contentModel
.
getCmTableName
());
}
else
{
// 通过栏目模型编号获取自定义模型实体
contentModel
=
(
ContentModelEntity
)
SpringUtil
.
getBean
(
IContentModelBiz
.
class
)
.
getEntity
(
columnContentModelId
);
// 将自定义模型编号设置为key值
contentModelMap
.
put
(
columnContentModelId
,
contentModel
.
getCmTableName
());
parserParams
.
put
(
ParserUtil
.
TABLE_NAME
,
contentModel
.
getCmTableName
());
}
}
// 第一篇文章没有上一篇
if
(
artId
>
0
)
{
ColumnArticleIdBean
preCaBean
=
articleIdList
.
get
(
artId
-
1
);
//判断当前文档是否与上一页文章在同一栏目下,并且不能使用父栏目字符串,因为父栏目中没有所属栏目编号
if
(
articleColumnPath
.
contains
(
preCaBean
.
getCategoryId
()+
""
)){
page
.
setPreId
(
preCaBean
.
getArticleId
());
}
}
// 最后一篇文章没有下一篇
if
(
artId
+
1
<
articleIdList
.
size
())
{
ColumnArticleIdBean
nextCaBean
=
articleIdList
.
get
(
artId
+
1
);
//判断当前文档是否与下一页文章在同一栏目下并且不能使用父栏目字符串,因为父栏目中没有所属栏目编号
if
(
articleColumnPath
.
contains
(
nextCaBean
.
getCategoryId
()+
""
)){
page
.
setNextId
(
nextCaBean
.
getArticleId
());
}
}
break
;
}
try
{
try
{
//根据模板路径,参数生成
//根据模板路径,参数生成
content
=
CmsParserUtil
.
generate
(
column
.
getColumnUrl
(),
map
,
isMobileDevice
(
req
));
content
=
CmsParserUtil
.
generate
(
column
.
getColumnUrl
(),
map
,
isMobileDevice
(
req
));
...
...
src/main/java/net/mingsoft/cms/biz/IArticleBiz.java
View file @
818f5552
/**
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* this software and associated documentation files (the "Software"), to deal in
...
@@ -147,7 +147,16 @@ public interface IArticleBiz extends IBasicBiz {
...
@@ -147,7 +147,16 @@ public interface IArticleBiz extends IBasicBiz {
* @return
* @return
*/
*/
public
List
<
ColumnArticleIdBean
>
queryIdsByCategoryIdForParser
(
int
categoryId
,
String
beginTime
,
String
endTime
);
public
List
<
ColumnArticleIdBean
>
queryIdsByCategoryIdForParser
(
int
categoryId
,
String
beginTime
,
String
endTime
);
/**
* 查询文章编号集合
* @param categoryId 栏目编号
* @param beginTime 开始时间
* @param endTime 结束时间
* @param orderBy 排序字段
* @param order 排序方式
* @return
*/
public
List
<
ColumnArticleIdBean
>
queryIdsByCategoryIdForParser
(
int
categoryId
,
String
beginTime
,
String
endTime
,
String
orderBy
,
String
order
);
/**
/**
* 根据页面栏目的id获取与其绑定的文章实体
* 根据页面栏目的id获取与其绑定的文章实体
*
*
...
...
src/main/java/net/mingsoft/cms/biz/impl/ArticleBizImpl.java
View file @
818f5552
/**
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* this software and associated documentation files (the "Software"), to deal in
...
@@ -25,6 +25,7 @@ import java.util.ArrayList;
...
@@ -25,6 +25,7 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
com.github.pagehelper.PageHelper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -212,6 +213,10 @@ public class ArticleBizImpl extends BasicBizImpl implements IArticleBiz {
...
@@ -212,6 +213,10 @@ public class ArticleBizImpl extends BasicBizImpl implements IArticleBiz {
@Override
@Override
public
List
<
ColumnArticleIdBean
>
queryIdsByCategoryIdForParser
(
int
categoryId
,
String
beginTime
,
String
endTime
)
{
public
List
<
ColumnArticleIdBean
>
queryIdsByCategoryIdForParser
(
int
categoryId
,
String
beginTime
,
String
endTime
)
{
return
this
.
articleDao
.
queryIdsByCategoryIdForParser
(
categoryId
,
BasicUtil
.
getAppId
(),
beginTime
,
endTime
);
return
this
.
articleDao
.
queryIdsByCategoryIdForParser
(
categoryId
,
BasicUtil
.
getAppId
(),
beginTime
,
endTime
,
null
,
null
);
}
@Override
public
List
<
ColumnArticleIdBean
>
queryIdsByCategoryIdForParser
(
int
categoryId
,
String
beginTime
,
String
endTime
,
String
orderBy
,
String
order
)
{
return
this
.
articleDao
.
queryIdsByCategoryIdForParser
(
categoryId
,
BasicUtil
.
getAppId
(),
beginTime
,
endTime
,
orderBy
,
order
);
}
}
}
}
\ No newline at end of file
src/main/java/net/mingsoft/cms/dao/IArticleDao.java
View file @
818f5552
/**
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* this software and associated documentation files (the "Software"), to deal in
...
@@ -163,5 +163,7 @@ public interface IArticleDao extends IBaseDao {
...
@@ -163,5 +163,7 @@ public interface IArticleDao extends IBaseDao {
* @param endTime 结束时间
* @param endTime 结束时间
* @return
* @return
*/
*/
public
List
<
ColumnArticleIdBean
>
queryIdsByCategoryIdForParser
(
@Param
(
"categoryId"
)
int
categoryId
,
@Param
(
"appId"
)
int
appId
,
@Param
(
"beginTime"
)
String
beginTime
,
@Param
(
"endTime"
)
String
endTime
);
public
List
<
ColumnArticleIdBean
>
queryIdsByCategoryIdForParser
(
@Param
(
"categoryId"
)
int
categoryId
,
@Param
(
"appId"
)
int
appId
,
@Param
(
"beginTime"
)
String
beginTime
,
@Param
(
"endTime"
)
String
endTime
,
@Param
(
"orderBy"
)
String
orderBy
,
@Param
(
"order"
)
String
order
);
}
}
\ No newline at end of file
src/main/java/net/mingsoft/cms/dao/IArticleDao.xml
View file @
818f5552
...
@@ -50,6 +50,7 @@
...
@@ -50,6 +50,7 @@
<result
column=
"ARTICLE_BASICID"
property=
"articleId"
/>
<result
column=
"ARTICLE_BASICID"
property=
"articleId"
/>
<result
column=
"column_path"
property=
"columnPath"
/>
<result
column=
"column_path"
property=
"columnPath"
/>
<result
column=
"column_url"
property=
"columnUrl"
/>
<result
column=
"column_url"
property=
"columnUrl"
/>
<result
column=
"column_listurl"
property=
"columnListUrl"
/>
<result
column=
"category_title"
property=
"categoryTitle"
/>
<result
column=
"category_title"
property=
"categoryTitle"
/>
<result
column=
"category_id"
property=
"categoryId"
/>
<result
column=
"category_id"
property=
"categoryId"
/>
<result
column=
"COLUMN_CM_ID"
property=
"columnContentModelId"
/>
<result
column=
"COLUMN_CM_ID"
property=
"columnContentModelId"
/>
...
@@ -321,8 +322,8 @@
...
@@ -321,8 +322,8 @@
<select
id=
"queryIdsByCategoryIdForParser"
resultMap=
"resultMapBean"
>
<select
id=
"queryIdsByCategoryIdForParser"
resultMap=
"resultMapBean"
>
select
select
ARTICLE_BASICID,cl.*,c.*
ARTICLE_BASICID,cl.*,c.*
FROM cms_article a LEFT JOIN basic
b
ON a.ARTICLE_BASICID = b.BASIC_ID
FROM cms_article a LEFT JOIN basic ON a.ARTICLE_BASICID = b
asic
.BASIC_ID
LEFT JOIN basic_column cl ON b.BASIC_CATEGORYID = cl.COLUMN_CATEGORY_ID
LEFT JOIN basic_column cl ON b
asic
.BASIC_CATEGORYID = cl.COLUMN_CATEGORY_ID
JOIN category c ON c.CATEGORY_ID = cl.COLUMN_CATEGORY_ID
JOIN category c ON c.CATEGORY_ID = cl.COLUMN_CATEGORY_ID
where
where
<if
test=
"appId > 0"
>
<if
test=
"appId > 0"
>
...
@@ -330,14 +331,17 @@
...
@@ -330,14 +331,17 @@
</if>
</if>
<!-- 查询子栏目数据 -->
<!-- 查询子栏目数据 -->
<if
test=
"categoryId > 0"
>
<if
test=
"categoryId > 0"
>
and (b.basic_categoryid=#{categoryId} or b.basic_categoryid in
and (b
asic
.basic_categoryid=#{categoryId} or b
asic
.basic_categoryid in
(select category_id FROM category where
<include
refid=
"queryWhereCategoryId"
></include>
))
(select category_id FROM category where
<include
refid=
"queryWhereCategoryId"
></include>
))
</if>
</if>
<if
test=
"beginTime!=null and beginTime!=''"
>
<if
test=
"beginTime!=null and beginTime!=''"
>
and b.basic_updatetime
>
= #{beginTime}
and b
asic
.basic_updatetime
>
= #{beginTime}
</if>
</if>
<if
test=
"endTime!=null and endTime!=''"
>
<if
test=
"endTime!=null and endTime!=''"
>
and b.basic_updatetime
>
= #{endTime}
and basic.basic_updatetime
>
= #{endTime}
</if>
<if
test=
"orderBy!=null and order!=null and orderBy!='' and order!=''"
>
ORDER BY `${orderBy}` ${order}
</if>
</if>
</select>
</select>
...
...
src/main/java/net/mingsoft/cms/resources/resources_zh_CN.properties
View file @
818f5552
#mcms\u7248\u672
c
#mcms\u7248\u672
C
version
=
d3a98fefcb242db78da5fc31608ff247
version
=
d3a98fefcb242db78da5fc31608ff247
templet.file
=
\u
6a21
\u
677f
\u6587\u
4ef6
\u
4e0d
\u
5b58
\u5728
templet.file
=
\u
6A21
\u
677F
\u6587\u
4EF6
\u
4E0D
\u
5B58
\u5728
id
=
\u6587\u
7ae0
\u
7f16
\u
53f7
id
=
\u6587\u
7AE0
\u
7F16
\u
53F7
typeid
=
\u
680f
\u
76ee
\u
7f16
\u
53f7
typeid
=
\u
680F
\u
76EE
\u
7F16
\u
53F7
order
=
\u6392\u
5E8F
src/main/java/net/mingsoft/config/WebConfig.java
View file @
818f5552
package
net.mingsoft.config
;
package
net.mingsoft.config
;
import
java.io.File
;
import
java.util.Arrays
;
import
net.mingsoft.basic.filter.XSSEscapeFilter
;
import
org.springframework.aop.Advisor
;
import
org.springframework.aop.Advisor
;
import
org.springframework.aop.support.DefaultPointcutAdvisor
;
import
org.springframework.aop.support.DefaultPointcutAdvisor
;
import
org.springframework.aop.support.JdkRegexpMethodPointcut
;
import
org.springframework.aop.support.JdkRegexpMethodPointcut
;
...
@@ -23,6 +27,7 @@ import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator;
...
@@ -23,6 +27,7 @@ import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator;
import
com.alibaba.druid.support.spring.stat.DruidStatInterceptor
;
import
com.alibaba.druid.support.spring.stat.DruidStatInterceptor
;
import
net.mingsoft.basic.interceptor.ActionInterceptor
;
import
net.mingsoft.basic.interceptor.ActionInterceptor
;
import
net.mingsoft.basic.util.BasicUtil
;
@Configuration
@Configuration
public
class
WebConfig
implements
WebMvcConfigurer
{
public
class
WebConfig
implements
WebMvcConfigurer
{
...
@@ -50,12 +55,20 @@ public class WebConfig implements WebMvcConfigurer {
...
@@ -50,12 +55,20 @@ public class WebConfig implements WebMvcConfigurer {
@Override
@Override
public
void
addResourceHandlers
(
ResourceHandlerRegistry
registry
)
{
public
void
addResourceHandlers
(
ResourceHandlerRegistry
registry
)
{
//jar包方式映射处理
String
classPath
=
BasicUtil
.
getClassPath
(
""
);
if
(
classPath
.
startsWith
(
"file"
))
{
registry
.
addResourceHandler
(
"/upload/**"
).
addResourceLocations
(
"file:"
+
BasicUtil
.
getRealPath
(
"upload"
)
+
File
.
separator
);
registry
.
addResourceHandler
(
"/html/**"
).
addResourceLocations
(
"file:"
+
BasicUtil
.
getRealPath
(
"html"
)
+
File
.
separator
);
registry
.
addResourceHandler
(
"/templets/**"
).
addResourceLocations
(
"file:"
+
BasicUtil
.
getRealPath
(
"templets"
)
+
File
.
separator
);
}
else
{
//必须做判断,不然jar运行的html路径会被覆盖掉
registry
.
addResourceHandler
(
"/html/**"
).
addResourceLocations
(
"/html/"
);
registry
.
addResourceHandler
(
"/html/**"
).
addResourceLocations
(
"/html/"
);
registry
.
addResourceHandler
(
"/app/**"
).
addResourceLocations
(
"classpath:/app/"
);
registry
.
addResourceHandler
(
"/static/**"
).
addResourceLocations
(
"classpath:/static/"
);
registry
.
addResourceHandler
(
"/api/**"
).
addResourceLocations
(
"classpath:/api/"
);
}
}
registry
.
addResourceHandler
(
"/app/**"
).
addResourceLocations
(
"/app/"
,
"classpath:/app/"
);
registry
.
addResourceHandler
(
"/static/**"
).
addResourceLocations
(
"/static/"
,
"classpath:/static/"
);
registry
.
addResourceHandler
(
"/api/**"
).
addResourceLocations
(
"/api/"
,
"classpath:/api/"
);
}
/**
/**
* druidServlet注册
* druidServlet注册
*/
*/
...
@@ -120,18 +133,16 @@ public class WebConfig implements WebMvcConfigurer {
...
@@ -120,18 +133,16 @@ public class WebConfig implements WebMvcConfigurer {
return
new
DefaultPointcutAdvisor
(
druidStatPointcut
(),
druidStatInterceptor
());
return
new
DefaultPointcutAdvisor
(
druidStatPointcut
(),
druidStatInterceptor
());
}
}
// /**
/**
// * xssFilter注册
* xssFilter注册
// */
*/
// @Bean
@Bean
// public FilterRegistrationBean xssFilterRegistration() {
public
FilterRegistrationBean
xssFilterRegistration
()
{
// XssFilter xssFilter = new XssFilter();
XSSEscapeFilter
xssFilter
=
new
XSSEscapeFilter
();
// xssFilter.setUrlExclusion(Arrays.asList("/static/"));
FilterRegistrationBean
registration
=
new
FilterRegistrationBean
(
xssFilter
);
// FilterRegistrationBean registration = new
registration
.
addUrlPatterns
(
"/*"
);
// FilterRegistrationBean(xssFilter);
return
registration
;
// registration.addUrlPatterns("/*");
}
// return registration;
// }
/**
/**
* RequestContextListener注册
* RequestContextListener注册
...
...
src/main/resources/application.yml
View file @
818f5552
...
@@ -13,7 +13,7 @@ ms:
...
@@ -13,7 +13,7 @@ ms:
upload
:
upload
:
path
:
/upload
path
:
/upload
denied
:
exe
denied
:
.
exe
,.jsp
allowed
:
jpg
allowed
:
jpg
max-size
:
1
max-size
:
1
memory-size
:
4096
memory-size
:
4096
...
...
src/main/webapp/WEB-INF/manager/cms/article/article_main.ftl
View file @
818f5552
...
@@ -87,7 +87,7 @@
...
@@ -87,7 +87,7 @@
field
:
'
basicDateTime
'
,
field
:
'
basicDateTime
'
,
title
:
'发布时间'
,
title
:
'发布时间'
,
align
:
'
center
'
,
align
:
'
center
'
,
width
:
9
0
width
:
15
0
}
]
}
]
})
;
})
;
//查询文章标题
//查询文章标题
...
...
src/main/webapp/WEB-INF/manager/login.ftl
0 → 100644
View file @
818f5552
<!
DOCTYPE
html>
<
html
lang="zh">
<head>
<title>$
{
app
.appName
}
</title>
<#include "/include/head-file.ftl"/>
<script src="$
{
base
}
/static/plugins/jquery/3.2.1/jquery.min.js"></script>
<script src="$
{
base
}
/static/plugins/jquery.cookie/1.4.1/jquery.cookie.min.js"></script>
<link rel="stylesheet" href="$
{
base
}
/static/ms-admin/4.7.0/css/login.css">
</head>
<body>
<div id="login" class="login">
<el-container class="ms-admin-login-container">
<el-main class="ms-admin-login-main">
<div class="ms-admin-login-warp" @keydown.13='checkLogin'>
<img style="height: 360px" :src="ms.base+'/static/ms-admin/4.7.0/images/login-slogn.png'">
<el-form :model="loginForm" status-icon :rules="loginFormRule" style="height: 360px" ref="loginForm" label-width="100px" class="ms-admin-login-form">
<el-alert
style="margin-bottom: 10px;"
title="演示版部分删除功能已去除"
type="warning"
center
:closable="false"
show-icon>
</el-alert>
<h1>
<span>账户登录 / </span>User login</h1>
<el-form-item class="ms-admin-form-item" prop="managerName">
<el-input type="text" placeholder='用户名/admin' v-model="loginForm.managerName" ></el-input>
</el-form-item>
<el-form-item class="ms-admin-form-item" prop="managerPassword">
<el-input type="password" placeholder='密码/123456' v-model="loginForm.managerPassword"></el-input>
</el-form-item>
<el-form-item class="ms-admin-form-item ms-admin-form-item-code" prop="rand_code">
<el-input type="text" placeholder='验证码' v-model="loginForm.rand_code" autocomplete="off"></el-input>
<img :src="verifCode" class="code-img" @click="code" />
<p>
<span>看不清?</span>
<span @click="code">换一张</span>
</p>
</el-form-item>
<el-form-item class="ms-admin-form-item ms-admin-form-item-checkout">
<el-checkbox v-model="rememberPass">记住密码</el-checkbox>
</el-form-item>
<el-form-item class="ms-admin-form-item">
<el-button type="primary" @click="checkLogin" class="ms-admin-login-btn">登录</el-button>
</el-form-item>
</el-form>
</div>
</el-main>
</el-container>
</div>
</body>
</
html
>
<
script
>
var loginVue = new Vue(
{
el
:
'#
login
'
,
data
:
{
loginForm
:
{
managerName
:
'
admin
'
,
managerPassword
:
"123456"
,
rand_code
:
''
},
verifCode
:
ms
.manager
+
"/code?t="
+
new
D
ate
()
.getTime
(),
rememberPass
:
''
,
loginFormRule
:
{
managerName
:
[
{
required
:
true
,
message
:
'请输入用户名'
,
trigger
:
'
blur
'
},
{
min
:
1
,
max
:
30
,
message
:
'长度在
1
到
30
个字符'
,
trigger
:
'
blur
'
}
]
,
managerPassword
:
[
{
required
:
true
,
message
:
'请输入密码'
,
trigger
:
'
blur
'
},
{
min
:
1
,
max
:
30
,
message
:
'长度在
1
到
30
个字符'
,
trigger
:
'
blur
'
}
]
,
rand_code
:
[
{
required
:
true
,
message
:
'请填写验证码'
,
trigger
:
'
blur
'
},
{
min
:
1
,
max
:
4
,
message
:
'长度在
1
到
4
个字符'
,
trigger
:
'
blur
'
}
]
,
}
},
methods
:
{
//
登录
checkLogin
:
function
()
{
var
that
=
this
;
this
.
$refs
['
loginForm
']
.validate
((
valid
)
=>
{
if
(
valid
)
{
ms
.http.post
(
ms
.manager
+
"/checkLogin.do"
,
that
.loginForm
)
.then
(
function
(
data
)
{
if
(
data
.result
)
{
if
(
that
.rememberPass
)
{
$
.cookie
(
'
managerName
'
,
that
.loginForm.managerName
,
{
expires
:
365
})
;
$
.cookie
(
'
managerPassword
'
,
that
.loginForm.managerPassword
,
{
expires
:
365
})
;
}
else
{
$
.cookie
(
'
managerName
'
,
""
)
;
$
.cookie
(
'
managerPassword
'
,
""
)
;
}
that
.
$notify
({
title
:
'成功'
,
message
:
'登录成功'
,
type
:
'
success
'
})
;
location
.href
=
ms
.manager
+
"/index.do"
;
}
else
{
that
.
$notify
({
title
:
'失败'
,
message
:
data
.resultMsg
,
type
:
'
warning
'
})
;
that
.code
()
;
}
},
(
err
)
=>
{
that
.
$message
.error
(
data
.resultMsg
)
;
})
}
})
;
},
code
:
function
()
{
this
.verifCode
=
ms
.web
+
"/code?t="
+
new
D
ate
()
.getTime
()
;
},
},
mounted
:
function
()
{
this
.verifCode
=
ms
.web
+
"/code?t="
+
new
D
ate
()
.getTime
()
;
if
(
$
.cookie
(
'
managerName
'
)){
this
.loginForm.managerName
=
$
.cookie
(
'
managerName
'
)
;
this
.loginForm.managerPassword
=
$
.cookie
(
'
managerPassword
'
)
;
}
if
(
top
.location
!=
self
.location
){
top
.location
=
self
.location
;
}
}
}
)
</
script
>
\ No newline at end of file
src/main/webapp/WEB-INF/manager/main.ftl
View file @
818f5552
...
@@ -4,23 +4,603 @@
...
@@ -4,23 +4,603 @@
<
head
>
<
head
>
<title>铭飞CMS</title>
<title>铭飞CMS</title>
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
<link rel="icon" href="http://cdn.mingsoft.net/global/images/ms.ico" type="x-icon">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<script src="$
{
base
}
/static/plugins/echarts.4.2.1/echarts.min.js"></script>
<#include "../../include/head-file.ftl">
<
style
>
<
style
>
body
{
height: 100%;
}
body
{
height: 100%;
}
[v-cloak]
{
display
:
none
;
}
</
style
>
</
style
>
</
head
>
</
head
>
<
body
>
<
body
>
<
div
style="
<
div
id="main" v-cloak>
text-align: center;
<el-main class="ms-container">
color: #555;
<!-- 右侧头部 -->
background: #FCFCFC;
<div class="left">
height: 300px;
<div class="real-time-data">
padding-top: 200px;
<el-header class="header" style="height: 35px;">
vertical-align: middle;
<div> <i class="iconfont icon-shugang"></i>实时数据</div>
"><
h2
>欢迎使用铭飞产品</
h2
><
p
>技术交流加群:①242805203
②231212174(满) ③221335098(满) 或到<a href="http://ms.mingsoft.net/mbbs/main.do" target="_blank" style="
</el-header>
text-decoration: none;
<div class="box">
">官方论坛进行技术交流</
a
></
p
></
div
>
<el-row :gutter="20" class="box-detail" justify="center" style="text-align: center">
<el-col :span="8">在售</el-col>
<el-col :span="8">断货</el-col>
<el-col :span="8">停售</el-col>
</el-row>
<el-row :gutter="20" class="box-number" >
<el-col :span="8">1204</el-col>
<el-col :span="8">23</el-col>
<el-col :span="8">2</el-col>
</el-row>
<el-row :gutter="20" class="box-percentage" >
<el-col :span="8">99%</el-col>
<el-col :span="8">5%</el-col>
<el-col :span="8">0.1%</el-col>
</el-row>
</div>
</div>
<div class="real-time-data">
<el-header class="header" style="height: 35px;">
<i class="iconfont icon-shugang"></i>计划目标
</el-header>
<div class="box">
<el-row :gutter="20" class="box-detail" >
<el-col :span="12">生产中</el-col>
<el-col :span="12">已完成</el-col>
</el-row>
<el-row :gutter="20" class="box-number" >
<el-col :span="12">104</el-col>
<el-col :span="12">230</el-col>
</el-row>
<el-row :gutter="20" class="box-percentage" >
<el-col :span="12">28%</el-col>
<el-col :span="12">62%</el-col>
</el-row>
</div>
</div>
<div class="real-time-data" style="flex: 3;">
<el-header class="header" style="height: 35px;">
<i class="iconfont icon-shugang"></i>财务状况
<div style="float: right;">
五月<i class="el-icon-arrow-down"></i>
</div>
</el-header>
<div class="box">
<el-row :gutter="20" class="box-detail" >
<el-col :span="12">当前余额</el-col>
<el-col :span="12">待收货款</el-col>
</el-row>
<el-row :gutter="20" class="box-number" >
<el-col :span="12"><div class="money"><span class="font">¥</span>120400.<span class="font">00</span></div></el-col>
<el-col :span="12"><span class="font">¥</span>5111.<span class="font">99</span></el-col>
</el-row>
</div>
<#--统计图-->
<div id="chartFinance" style="width: 100%;height: 180px"></div>
</div>
</div>
<div class="right">
<div class="right-top">
<div class="right-top-box real-time-data" style="width: 40%">
<el-header class="header" style="height: 35px;">
<i class="iconfont icon-shugang"></i>广告收支对比
</el-header>
<#--统计图-->
<div id="chartAdvertising" style="width: 100%;height: 240px"></div>
</div>
<div class="right-top-box real-time-data">
<el-header class="header">
<i class="iconfont icon-shugang"></i>生命周期
</el-header>
<#--统计图-->
<div id="chartLife" style="width: 100%;height: 210px"></div>
</div>
<div class="right-top-box real-time-data">
<el-header class="header">
<i class="iconfont icon-shugang"></i>销售物流
</el-header>
<div id="chartSales" style="width: 100%;height: 210px"></div>
<#--统计图-->
</div>
</div>
<div class="real-time-data" style="flex: 5;margin: 9px;">
<el-header class="header" style="height: 35px;">
<i class="iconfont icon-shugang"></i>团队业绩
<div style="float: right;">
本周<i class="el-icon-arrow-down"></i>
</div>
</el-header>
<div class="backgroundImage">
<div id="chartTeam" style="width: 100%;height: 400px"></div>
</div>
<#--统计图-->
</div>
</div>
</el-main>
</
div
>
<
div
id="custom">
<el-dialog title="收货地址" :visible.sync="dialogFormVisible">
<el-form :model="form">
<el-form-item label="活动名称" :label-width="150">
<el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="活动区域" :label-width="150">
<el-select v-model="form.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogFormVisible = false">确 定</el-button>
</div>
</el-dialog>
</
div
>
</
body
>
</
body
>
</
html
>
</
html
>
<
script
>
function cs()
{
var
data
=
{
data
(){
return
{
dialogFormVisible
:
true
,
form
:
{
region
:
"111"
,
formLabelWidth
:
150
,
name
:
"测试弹框"
},
}}
,
mounted
:
function
()
{
console
.log
(
2222
)
}
}
;
custom
(
'
custom
'
,
data
)
;
}
function custom(id,obj)
{
var
dom
=
parent
.document.getElementById
(
"id"
)
;
if
(
!
dom
)
{
dom
=
parent
.document.createElement
(
'
div
'
)
;
dom
.id
=
id
;
parent
.document.body.appendChild
(
dom
)
;
}
dom
.innerHTML
=
document
.querySelector
(
'#'+
id
)
.innerHTML
;
if
(
obj
.data
&&
(
typeof
obj
.data
)
===
"object"
){
obj
.data
=
function
()
{
return
obj
.data
}
}
var
ctor
=
parent
.Vue.extend
(
obj
)
;
return
new
ctor
()
.
$mount
(
'#'+
id
)
;
}
</
script
>
<
script
>
var mainVue = new Vue(
{
el
:
'#
main
'
,
data
:{
chartFinance
:
''
,
chartAdvertising
:
''
,
chartLife
:
''
,
chartSales
:
''
,
chartTeam
:
''
,
},
methods
:
{
list
:
function
()
{
this
.finance
()
;
this
.advertising
()
;
this
.life
()
;
this
.sales
()
;
this
.team
()
;
},
finance
:
function
()
{
this
.chartFinance
=
echarts
.init
(
document
.getElementById
(
"chartFinance"
))
;
var
option
=
{
tooltip
:
{
trigger
:
'
none
'
,
},
grid
:{
x
:
5
,
y
:
30
,
x2
:
5
,
y2
:
30
,
},
xAxis
:
{
type
:
'
category
'
,
silent
:
false
,
splitLine
:
{
show
:
false
},
axisLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
data
:
['
01
'
,
'
02
'
,
'
03
'
,
'
04
'
,
'
05
'
,
'
06
'
,
'
07
']
},
yAxis
:
{
show
:
false
,
minInterval
:
8
,
},
series
:
[
{
type
:
'
line
'
,
smooth
:
true
,
data
:
[
{
value
:
7
,
symbol
:
'
none
'
},
{
value
:
4.5
,
symbol
:
'
circle
'
,
symbolSize
:
9
,
itemStyle
:{
borderColor
:
'#
069
bff
'
,
color
:
'#
ffe
'
}},
{
value
:
3.5
,
symbol
:
'
none
'
},
{
value
:
2.5
,
symbol
:
'
none
'
},
{
value
:
2
,
symbol
:
'
none
'
},
{
value
:
1.5
,
symbol
:
'
none
'
},
{
value
:
2
,
symbol
:
'
none
'
}
]
,
lineStyle
:{
color
:
'#
069
bff
'
,
width
:
2
,
},
areaStyle
:
{
normal
:
{
color
:
new
echarts
.graphic.LinearGradient
(
0
,
0
,
0
,
1
,
[
{
offset
:
0
,
color
:
'#
cfebfd
'
},
{
offset
:
1
,
color
:
'#
ffe
'
}
]
)
}
},
itemStyle
:{
color
:
'#
069
bff
'
,
borderWidth
:
4
,
}
},
{
type
:
'
line
'
,
smooth
:
true
,
data
:
[
{
value
:
2
,
symbol
:
'
none
'
},
{
value
:
1
,
symbol
:
'
none
'
},
{
value
:
2
,
symbol
:
'
none
'
},
{
value
:
3
,
symbol
:
'
none
'
},
{
value
:
5
,
symbol
:
'
circle
'
,
symbolSize
:
9
,
itemStyle
:{
borderColor
:
'#
feb23a
'
,
color
:
'#
ffe
'
}},
{
value
:
4
,
symbol
:
'
none
'
},
{
value
:
6
,
symbol
:
'
none
'
}
]
,
lineStyle
:{
color
:
'#
feb23a
'
,
width
:
2
,
},
areaStyle
:
{
normal
:
{
color
:
new
echarts
.graphic.LinearGradient
(
0
,
0
,
0
,
1
,
[
{
offset
:
0
,
color
:
'#
fedba3
'
},
{
offset
:
1
,
color
:
'#
ffe
'
}
]
)
}
},
itemStyle
:{
color
:
'#
feb23a
'
,
borderWidth
:
4
,
}
}
]
}
;
this
.chartFinance.setOption
(
option
)
;
},
advertising
:
function
(){
this
.chartAdvertising
=
echarts
.init
(
document
.getElementById
(
"chartAdvertising"
))
;
var
option
=
{
tooltip
:
{
trigger
:
'
none
'
,
},
legend
:
{
itemWidth
:
10
,
itemHeight
:
10
,
right
:
'
10
%'
,
top
:
0
,
data
:
['支出'
,
'收入']
},
grid
:{
x
:
25
,
y
:
10
,
x2
:
25
,
y2
:
25
,
},
xAxis
:
{
type
:
'
category
'
,
silent
:
false
,
splitLine
:
{
show
:
false
},
axisLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
data
:
['
01
'
,
'
02
'
,
'
03
'
,
'
04
'
,
'
05
'
,
'
06
'
,
'
07
']
},
yAxis
:
{
splitLine
:{
show
:
true
,
lineStyle
:{
color
:
'#
f6f6f6
'
,
},
},
axisLine
:{
show
:
false
,
},
axisTick
:{
show
:
false
,
},
axisLabel
:{
show
:
false
,
},
},
series
:
[
{
name
:
'支出'
,
type
:
'
bar
'
,
barWidth
:
'
15
%'
,
itemStyle
:{
color
:
'#
feb23a
'
,
},
data
:
[
7
,
7
,
7
,
4
,
5
,
7.5
,
7.5
]
},
{
name
:
'收入'
,
type
:
'
bar
'
,
barWidth
:
'
15
%'
,
itemStyle
:{
color
:
'#
069
bff
'
,
},
data
:
[
8
,
8
,
5
,
3.5
,
8
,
9
,
9
]
}
]
}
;
this
.chartAdvertising.setOption
(
option
)
;
},
life
:
function
(){
this
.chartLife
=
echarts
.init
(
document
.getElementById
(
"chartLife"
))
;
var
option
=
{
tooltip
:
{
trigger
:
'
none
'
,
},
legend
:
{
itemWidth
:
10
,
itemHeight
:
10
,
itemGap
:
20
,
x
:
'
center
'
,
y
:
'
bottom
'
,
data
:
['热销期'
,
'复购率'
,
'平销期'
,
'旺销期'
,
'滞销期']
},
calculable
:
true
,
series
:
[
{
type
:
'
pie
'
,
radius
:
[
20
,
40
]
,
center
:
['
50
%'
,
'
40
%']
,
roseType
:
'
radius
'
,
data
:
[
{
value
:
150
,
name
:
'热销期'
,
itemStyle
:{
color
:
'#
2
e65fd
'
}},
{
value
:
100
,
name
:
'复购率'
,
itemStyle
:{
color
:
'#
8
abe78
'
}},
{
value
:
60
,
name
:
'平销期'
,
itemStyle
:{
color
:
'#
feb23a
'
}},
{
value
:
100
,
name
:
'旺销期'
,
itemStyle
:{
color
:
'#
69
c0fe
'
}},
{
value
:
40
,
name
:
'滞销期'
,
itemStyle
:{
color
:
'#
d0e3fe
'
}},
]
}
]
}
;
this
.chartLife.setOption
(
option
)
;
},
sales
:
function
(){
this
.chartSales
=
echarts
.init
(
document
.getElementById
(
"chartSales"
))
;
var
option
=
{
tooltip
:
{
trigger
:
'
none
'
,
},
legend
:
{
itemWidth
:
10
,
itemHeight
:
10
,
itemGap
:
20
,
x
:
'
center
'
,
y
:
'
bottom
'
,
data
:
['
0-2
天'
,
'
2-5
天'
,
'
5-8
天'
,
'
8
天以上']
},
calculable
:
true
,
series
:
[
{
type
:
'
pie
'
,
radius
:
[
20
,
40
]
,
center
:
['
50
%'
,
'
40
%']
,
roseType
:
'
radius
'
,
data
:
[
{
value
:
130
,
name
:
'
0-2
天'
,
itemStyle
:{
color
:
'#
2
e65fd
'
}},
{
value
:
30
,
name
:
'
2-5
天'
,
itemStyle
:{
color
:
'#
d0e3fe
'
}},
{
value
:
80
,
name
:
'
5-8
天'
,
itemStyle
:{
color
:
'#
feb23a
'
}},
{
value
:
100
,
name
:
'
8
天以上'
,
itemStyle
:{
color
:
'#
8
abe78
'
}},
]
}
]
}
;
this
.chartSales.setOption
(
option
)
;
},
team
:
function
(){
this
.chartTeam
=
echarts
.init
(
document
.getElementById
(
"chartTeam"
))
;
var
option
=
{
grid
:{
x
:
40
,
y
:
40
,
x2
:
20
,
y2
:
40
,
},
xAxis
:
{
type
:
'
category
'
,
boundaryGap
:
false
,
silent
:
false
,
splitLine
:
{
show
:
false
},
axisLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
data
:
['
30.0
5
'
,
'
31.0
5
'
,
'
01.0
6
'
,
'
02.0
6
'
,
'
03.0
6
'
,
'
04.0
6
'
,
'
05.0
6
'
,
'
06.0
6
'
,
'
07.0
6
'
,
'
08.0
6
'
,
'
09.0
6
']
},
yAxis
:
{
type
:
'
value
'
,
boundaryGap
:
true
,
axisLine
:{
show
:
false
,
},
axisTick
:{
show
:
false
,
},
splitLine
:{
show
:
true
,
},
},
series
:
[
{
data
:
[
{
value
:
42.5
,
symbol
:
'
none
'
},
{
value
:
39
,
symbol
:
'
none
'
},
{
value
:
45
,
symbol
:
'
none
'
},
{
value
:
30
,
symbol
:
'
none
'
},
{
value
:
38
,
symbol
:
'
none
'
},
{
value
:
45
,
symbol
:
'
none
'
},
{
value
:
30
,
symbol
:
'
none
'
},
{
value
:
36
,
symbol
:
'
none
'
},
{
value
:
46
,
symbol
:
'
circle
'
,
symbolSize
:
10
,
itemStyle
:{
borderColor
:
'#
0099
ff
'
,
color
:
'#
ffe
'
,
borderWidth
:
4
}},
{
value
:
28
,
symbol
:
'
none
'
},
{
value
:
45
,
symbol
:
'
none
'
}
]
,
type
:
'
line
'
,
markPoint
:
{
data
:
[
{
type
:
'
max
'
,
name
:
'最大值'
},
]
},
smooth
:
0.5
,
lineStyle
:{
color
:
'#
0099
ff
'
,
width
:
6
,
},
itemStyle
:{
color
:
'#
0099
ff
'
,
width
:
5
,
},
}
]
}
;
this
.chartTeam.setOption
(
option
)
;
},
},
mounted
(){
var
that
=
this
;
that
.
$nextTick
(
function
()
{
that
.list
()
;
})
;
},
}
)
window.addEventListener("resize", function ()
{
mainVue
.chartTeam.resize
()
;
mainVue
.chartFinance.resize
()
;
mainVue
.chartAdvertising.resize
()
;
mainVue
.chartLife.resize
()
;
mainVue
.chartSales.resize
()
;
}
);
window.onload = function ()
{
mainVue
.chartAdvertising.resize
()
;
mainVue
.chartLife.resize
()
;
mainVue
.chartSales.resize
()
;
mainVue
.chartTeam.resize
()
;
mainVue
.chartFinance.resize
()
;
mainVue
.chartAdvertising.resize
()
;
mainVue
.chartLife.resize
()
;
}
</
script
>
<
style
>
html
{
overflow
:
hidden
;
}
#main .ms-container
{
display
:
flex
;
flex-direction
:
row
;
height
:
100
vh
;
margin
:
0
px
!
important
;
}
#main
{
min-width
:
1200
px
;
}
#main .left
{
display
:
flex
;
flex-direction
:
column
;
width
:
25
%;
}
#main .left .real-time-data
{
flex
:
2
;
margin
:
9
px
;
}
#main .right-top .right-top-box
{
width
:
30
%;
margin
:
9
px
;
}
#main .right
{
width
:
75
%;
display
:
flex
;
flex-direction
:
column
;
}
#main .right-top
{
display
:
flex
;
flex-direction
:
row
;
flex
:
4
;
}
#main .real-time-data
{
box-shadow
:
0
2
px
4
px
rgba
(
0
,
0
,
0
,
.
12
),
0
0
6
px
rgba
(
0
,
0
,
0
,
.
04
)
;
}
#main .iconfont
{
padding-top
:
5
px
;
font-size
:
20
px
;
color
:
#
0099
ff
;
}
#main .header
{
font-size
:
16
px
;
color
:
#
333
;
padding-top
:
10
px
;
}
#main .box
{
padding
:
0
10
px
;
text-align
:
center
;
padding-bottom
:
17
px
;
}
#main .box-detail
{
color
:
#
3
c5175
;
padding-top
:
24
px
;
font-size
:
14
px
;
}
#main .box-number
{
color
:
#
0099
ff
;
padding-top
:
24
px
;
font-size
:
19
px
;
font-weight
:
bolder
;
}
#main .box-percentage
{
color
:
#
3
c5175
;
padding-top
:
24
px
;
font-size
:
14
px
;
}
#main .box-number .money
{
color
:
#
feb23a
;
}
#main .font
{
font-size
:
16
px
;
}
#main .backgroundImage
{
background
:
url
(
'../
images
/
background
.png
'
)
no-repeat
center
!
important
;
background-size
:
132
%
80
%!
important
;
}
</
style
>
src/main/webapp/templets/1/default/about.htm
View file @
818f5552
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<body>
<body>
<
#include
"
head.htm
"
/>
<
#include
"
head.htm
"
/>
<div
class=
"ms-banner"
style=
"background:url({ms:global.host/}/{ms:global.style/}images/about_us.jpg) no-repeat center;"
>
<div
class=
"ms-banner"
style=
"background:url({ms:global.host/}/{ms:global.style/}
/
images/about_us.jpg) no-repeat center;"
>
<p
class=
"banner_tit_about animated fadeInLeft"
>
关于我们
</p>
<p
class=
"banner_tit_about animated fadeInLeft"
>
关于我们
</p>
<p
class=
"banner_tit_about_des animated fadeInRight"
>
About us
</p>
<p
class=
"banner_tit_about_des animated fadeInRight"
>
About us
</p>
</div>
</div>
...
...
src/main/webapp/templets/1/default/advice.htm
View file @
818f5552
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
</head>
</head>
<body>
<body>
<
#include
"
head.htm
"
/>
<
#include
"
head.htm
"
/>
<div
class=
"ms-banner"
style=
"background:url({ms:global.host/}/{ms:global.style/}images/talk_online.jpeg) no-repeat center;"
>
<div
class=
"ms-banner"
style=
"background:url({ms:global.host/}/{ms:global.style/}
/
images/talk_online.jpeg) no-repeat center;"
>
<p
class=
"banner_tit_other animated fadeInLeft"
>
在线留言
</p>
<p
class=
"banner_tit_other animated fadeInLeft"
>
在线留言
</p>
<p
class=
"banner_tit_other_des animated fadeInRight"
>
Talk online
</p>
<p
class=
"banner_tit_other_des animated fadeInRight"
>
Talk online
</p>
</div>
</div>
...
...
src/main/webapp/templets/1/default/case-list.htm
View file @
818f5552
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<body>
<body>
<
#include
"
head.htm
"
/>
<
#include
"
head.htm
"
/>
<div
class=
"ms-banner"
style=
"background:url({ms:global.host/}/{ms:global.style/}images/00.png) no-repeat center;"
>
<div
class=
"ms-banner"
style=
"background:url({ms:global.host/}/{ms:global.style/}
/
images/00.png) no-repeat center;"
>
<p
class=
"banner_tit_other animated fadeInLeft"
>
案
例
</p>
<p
class=
"banner_tit_other animated fadeInLeft"
>
案
例
</p>
<p
class=
"banner_tit_other_des animated fadeInRight"
>
Case list
</p>
<p
class=
"banner_tit_other_des animated fadeInRight"
>
Case list
</p>
</div>
</div>
...
...
src/main/webapp/templets/1/default/head-file.htm
View file @
818f5552
<title>
{ms:global.name/}
</title>
<title>
{ms:global.name/}
</title>
<meta
charset=
"utf-8"
>
<meta
charset=
"utf-8"
>
<link
rel=
"icon"
href=
"http://cdn.mingsoft.net/global/images/ms.ico"
type=
"x-icon"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"{ms:global.host/}/plugins/iconfont/1.0.0/iconfont.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"{ms:global.host/}/plugins/iconfont/1.0.0/iconfont.css"
/>
<link
rel=
"stylesheet/less"
type=
"text/css"
href=
"{ms:global.host/}/{ms:global.style/}/less/base.less"
>
<link
rel=
"stylesheet/less"
type=
"text/css"
href=
"{ms:global.host/}/{ms:global.style/}/less/base.less"
>
<link
rel=
"stylesheet/less"
type=
"text/css"
href=
"{ms:global.host/}/{ms:global.style/}/less/index.less"
>
<link
rel=
"stylesheet/less"
type=
"text/css"
href=
"{ms:global.host/}/{ms:global.style/}/less/index.less"
>
...
...
src/main/webapp/templets/1/default/m/about.htm
View file @
818f5552
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<
#include
"
m
/
head-file.htm
"
/>
<
#include
"
/
m
/
head-file.htm
"
/>
<body>
<body>
<
#include
"
m
/
head.htm
"
/>
<
#include
"
/
m
/
head.htm
"
/>
<div
class=
"ms-banner"
>
<div
class=
"ms-banner"
>
<img
src=
"{ms:global.host/}/{ms:global.style/}/images/about.png"
class=
"am-img-responsive"
alt=
""
/>
<img
src=
"{ms:global.host/}/{ms:global.style/}/images/about.png"
class=
"am-img-responsive"
alt=
""
/>
</div>
</div>
...
@@ -30,6 +30,6 @@
...
@@ -30,6 +30,6 @@
</div>
</div>
</div>
</div>
</div>
</div>
<
#include
"
m
/
footer.htm
"
/>
<
#include
"
/
m
/
footer.htm
"
/>
</body>
</body>
</html>
</html>
\ No newline at end of file
src/main/webapp/templets/1/default/m/advice.htm
View file @
818f5552
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<
#include
"
m
/
head-file.htm
"
/>
<
#include
"
/
m
/
head-file.htm
"
/>
<body>
<body>
<
#include
"
m
/
head.htm
"
/>
<
#include
"
/
m
/
head.htm
"
/>
<div
class=
"ms-banner"
>
<div
class=
"ms-banner"
>
<img
src=
"{ms:global.host/}/{ms:global.style/}/images/message.png"
alt=
""
width=
"100%"
/>
<img
src=
"{ms:global.host/}/{ms:global.style/}/images/message.png"
alt=
""
width=
"100%"
/>
</div>
</div>
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
<button
type=
"button"
class=
"am-btn am-btn-primary ms-content-button"
>
提交
</button>
<button
type=
"button"
class=
"am-btn am-btn-primary ms-content-button"
>
提交
</button>
</form>
</form>
</div>
</div>
<
#include
"
m
/
footer.htm
"
/>
<
#include
"
/
m
/
footer.htm
"
/>
</body>
</body>
</html>
</html>
<script>
<script>
...
...
Prev
1
2
Next
Write
Preview
Supports
Markdown
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