master
sgjj 6 years ago
parent 0fd4a57ae1
commit 818f555288
  1. 24
      pom.xml
  2. 22
      src/main/java/net/mingsoft/cms/action/ColumnAction.java
  3. 11
      src/main/java/net/mingsoft/cms/action/GeneraterAction.java
  4. 73
      src/main/java/net/mingsoft/cms/action/web/MCmsAction.java
  5. 17
      src/main/java/net/mingsoft/cms/biz/IArticleBiz.java
  6. 11
      src/main/java/net/mingsoft/cms/biz/impl/ArticleBizImpl.java
  7. 22
      src/main/java/net/mingsoft/cms/dao/IArticleDao.java
  8. 76
      src/main/java/net/mingsoft/cms/dao/IArticleDao.xml
  9. 9
      src/main/java/net/mingsoft/cms/resources/resources_zh_CN.properties
  10. 51
      src/main/java/net/mingsoft/config/WebConfig.java
  11. 2
      src/main/resources/application.yml
  12. 2
      src/main/webapp/WEB-INF/manager/cms/article/article_main.ftl
  13. 164
      src/main/webapp/WEB-INF/manager/login.ftl
  14. 600
      src/main/webapp/WEB-INF/manager/main.ftl
  15. 2
      src/main/webapp/templets/1/default/about.htm
  16. 2
      src/main/webapp/templets/1/default/advice.htm
  17. 2
      src/main/webapp/templets/1/default/case-list.htm
  18. 1
      src/main/webapp/templets/1/default/head-file.htm
  19. 6
      src/main/webapp/templets/1/default/m/about.htm
  20. 6
      src/main/webapp/templets/1/default/m/advice.htm
  21. 6
      src/main/webapp/templets/1/default/m/case-list.htm
  22. 6
      src/main/webapp/templets/1/default/m/contact.htm
  23. 6
      src/main/webapp/templets/1/default/m/news-list.htm
  24. 6
      src/main/webapp/templets/1/default/m/news-show.htm
  25. 2
      src/main/webapp/templets/1/default/news-show.htm
  26. 8
      src/main/webapp/templets/1/default/search.htm

@ -3,10 +3,9 @@
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">
<modelVersion>4.0.0</modelVersion>
<groupId>net.mingsoft</groupId>
<artifactId>mcms</artifactId>
<version>4.7.0-SNAPSHOT</version>
<version>4.7.1</version>
<name>ms-mcms</name>
<properties>
<java.version>1.8</java.version>
@ -38,24 +37,19 @@
<dependencies>
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-mpeople</artifactId>
<version>1.0.7</version>
<artifactId>ms-basic</artifactId>
<version>1.0.11</version>
</dependency>
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-upgrader</artifactId>
<version>1.0.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>test</scope>
<artifactId>ms-mpeople</artifactId>
<version>1.0.8</version>
</dependency>
<!-- 此部分是铭飞平台MStroe的客户端(MStore不在铭飞开源产品范围),如果不需要使用MStore可以删除掉 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>9.0.16</version>
<groupId>net.mingsoft</groupId>
<artifactId>ms-upgrader</artifactId>
<version>1.0.8</version>
</dependency>
</dependencies>
<build>

@ -9,6 +9,8 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
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.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
@ -84,6 +86,8 @@ public class ColumnAction extends BaseAction{
int appId =BasicUtil.getAppId();
List<ColumnEntity> list = columnBiz.queryAll(appId, BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
ColumnEntity columnSuper = new ColumnEntity();
// 栏目属性
model.addAttribute("columnFlag", DictUtil.list("栏目属性"));
model.addAttribute("appId",appId);
model.addAttribute("columnSuper", columnSuper);
model.addAttribute("column",new ColumnEntity());
@ -154,7 +158,7 @@ public class ColumnAction extends BaseAction{
columnBiz.updateEntity(column);
//生成文件夹
File fileName = new File(file);
fileName.mkdir();
fileName.mkdir();
}
/**
@ -199,6 +203,8 @@ public class ColumnAction extends BaseAction{
list = columnBiz.queryAll(appId, BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
//查询当前栏目实体
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(columnId);
// 栏目属性
model.addAttribute("columnFlag", DictUtil.list("栏目属性"));
model.addAttribute("appId",appId);
model.addAttribute("column", column);
model.addAttribute("columnc", column.getCategoryId());
@ -245,6 +251,13 @@ public class ColumnAction extends BaseAction{
column.setCategoryManagerId(getManagerBySession(request).getManagerId());
column.setCategoryDateTime(new Timestamp(System.currentTimeMillis()));
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()){
column.setColumnListUrl(null);
}
@ -274,6 +287,13 @@ public class ColumnAction extends BaseAction{
}
column.setCategoryManagerId(getManagerBySession(request).getManagerId());
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);
this.columnPath(request,column);
//查询当前栏目是否有子栏目,

@ -30,6 +30,8 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -194,8 +196,17 @@ public class GeneraterAction extends BaseAction {
CmsParserUtil.generateList(column, articleIdList.size());
break;
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);
break;
default:
throw new IllegalStateException("Unexpected value: " + column.getColumnType());
}
}
} catch (IOException e) {

@ -1,5 +1,5 @@
/**
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
* this software and associated documentation files (the "Software"), to deal in
@ -21,13 +21,23 @@ The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
package net.mingsoft.cms.action.web;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
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.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
@ -60,7 +70,7 @@ import net.mingsoft.mdiy.util.ParserUtil;
*/
@Controller("dynamicPageAction")
@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 {
* @param id 文章编号
*/
@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));
if(ObjectUtil.isNull(article)){
this.outJson(resp, null,false,getResString("err.empty", this.getResString("id")));
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());
//解析后的内容
@ -221,6 +239,55 @@ public class MCmsAction extends net.mingsoft.mdiy.action.BaseAction {
//设置动态请求的模块路径
map.put(ParserUtil.MODEL_NAME, "mcms");
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 {
//根据模板路径,参数生成
content = CmsParserUtil.generate(column.getColumnUrl(), map, isMobileDevice(req));

@ -1,5 +1,5 @@
/**
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
* this software and associated documentation files (the "Software"), to deal in
@ -137,7 +137,7 @@ public interface IArticleBiz extends IBasicBiz {
* @return 文章集合
*/
List<ArticleEntity> query(int webId, int[] basicCategoryIds, String flag, String noFlag, String orderBy,
boolean order, String beginTime,String endTime, ArticleEntity article);
boolean order, String beginTime,String endTime, ArticleEntity article);
/**
* 查询文章编号集合
@ -147,7 +147,16 @@ public interface IArticleBiz extends IBasicBiz {
* @return
*/
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获取与其绑定的文章实体
*
@ -177,6 +186,6 @@ public interface IArticleBiz extends IBasicBiz {
*/
@Deprecated
public List<ArticleEntity> queryListForSearch(ContentModelEntity conntentModel, Map whereMap,
int appId, List ids, Map orders);
int appId, List ids, Map orders);
}

@ -1,5 +1,5 @@
/**
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
* this software and associated documentation files (the "Software"), to deal in
@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -165,7 +166,7 @@ public class ArticleBizImpl extends BasicBizImpl implements IArticleBiz {
@Override
public List<ArticleEntity> query(int webId, int[] basicCategoryIds, String flag, String noFlag, String orderBy,
boolean order,String beginTime,String endTime, ArticleEntity article) {
boolean order,String beginTime,String endTime, ArticleEntity article) {
// TODO Auto-generated method stub
if(article == null) {
article = new ArticleEntity();
@ -212,6 +213,10 @@ public class ArticleBizImpl extends BasicBizImpl implements IArticleBiz {
@Override
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);
}
}

@ -1,5 +1,5 @@
/**
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
* this software and associated documentation files (the "Software"), to deal in
@ -57,7 +57,7 @@ public interface IArticleDao extends IBaseDao {
*/
@Deprecated
int count(@Param("webId") int webId, @Param("basicCategoryIds") int[] basicCategoryIds, @Param("flag") String flag,
@Param("noFlag") String noFlag, @Param("article") ArticleEntity article);
@Param("noFlag") String noFlag, @Param("article") ArticleEntity article);
/**
* 通过分类id获取文章内容
@ -91,7 +91,7 @@ public interface IArticleDao extends IBaseDao {
* @return
*/
ArticleEntity getNextOrPrevious(@Param("appId") int appId, @Param("basicId") int basicId,
@Param("flag") boolean flag, @Param("categoryId") Integer categoryId);
@Param("flag") boolean flag, @Param("categoryId") Integer categoryId);
/**
* 根据查询文章实体总数
@ -104,7 +104,7 @@ public interface IArticleDao extends IBaseDao {
* @return 文章实体总数
*/
int getSearchCount(@Param("tableName") String tableName, @Param("map") Map<String, List> map,
@Param("websiteId") int websiteId, @Param("ids") String ids);
@Param("websiteId") int websiteId, @Param("ids") String ids);
/**
* 文章查询
@ -127,9 +127,9 @@ public interface IArticleDao extends IBaseDao {
* @return 文章集合
*/
List<ArticleEntity> query(@Param("webId") int webId, @Param("basicCategoryIds") int[] basicCategoryIds,
@Param("flag") String flag, @Param("noFlag") String noFlag, @Param("orderBy") String orderBy,
@Param("order") boolean order, @Param("beginTime") String beginTime,@Param("endTime") String endTime,
@Param("article") ArticleEntity article);
@Param("flag") String flag, @Param("noFlag") String noFlag, @Param("orderBy") String orderBy,
@Param("order") boolean order, @Param("beginTime") String beginTime,@Param("endTime") String endTime,
@Param("article") ArticleEntity article);
/**
* 根据页面栏目的id获取与其绑定的文章实体
@ -152,8 +152,8 @@ public interface IArticleDao extends IBaseDao {
*/
@Deprecated
List<ArticleEntity> queryListForSearch(@Param("tableName") String tableName, @Param("map") Map<String, List> map,
@Param("websiteId") int websiteId, @Param("ids") List ids,
@Param("sortMap") Map sortMap);
@Param("websiteId") int websiteId, @Param("ids") List ids,
@Param("sortMap") Map sortMap);
/**
* 查询文章编号集合
@ -163,5 +163,7 @@ public interface IArticleDao extends IBaseDao {
* @param endTime 结束时间
* @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);
}

@ -36,7 +36,7 @@
<result column="BASIC_DISPLAY" property="basicDisplay" />
<!-- 一对一关联栏目 -->
<association property="column" column="COLUMN_CATEGORY_ID"
javaType="net.mingsoft.basic.entity.ColumnEntity">
javaType="net.mingsoft.basic.entity.ColumnEntity">
<result property="columnPath" column="column_path" />
<result property="categoryTitle" column="category_title" />
<result property="categoryId" column="category_id" />
@ -50,6 +50,7 @@
<result column="ARTICLE_BASICID" property="articleId" />
<result column="column_path" property="columnPath"/>
<result column="column_url" property="columnUrl" />
<result column="column_listurl" property="columnListUrl" />
<result column="category_title" property="categoryTitle" />
<result column="category_id" property="categoryId" />
<result column="COLUMN_CM_ID" property="columnContentModelId" />
@ -85,7 +86,7 @@
<result column="BASIC_DISPLAY" property="basicDisplay" />
<!-- 一对一关联栏目 -->
<association property="column"
javaType="net.mingsoft.basic.entity.ColumnEntity">
javaType="net.mingsoft.basic.entity.ColumnEntity">
<result property="columnPath" column="column_path" />
<result property="categoryTitle" column="category_title" />
<result property="categoryId" column="category_id" />
@ -237,7 +238,7 @@
<if test="basicCategoryIds != null">
and b.BASIC_CATEGORYID in
<foreach collection="basicCategoryIds" index="index" item="categoryId"
open="(" separator="," close=")">
open="(" separator="," close=")">
#{categoryId}
</foreach>
</if>
@ -270,7 +271,7 @@
<if test="basicCategoryIds != null">
and b.BASIC_CATEGORYID in
<foreach collection="basicCategoryIds" index="index" item="categoryId"
open="(" separator="," close=")">
open="(" separator="," close=")">
#{categoryId}
</foreach>
</if>
@ -321,8 +322,8 @@
<select id="queryIdsByCategoryIdForParser" resultMap="resultMapBean" >
select
ARTICLE_BASICID,cl.*,c.*
FROM cms_article a LEFT JOIN basic b ON a.ARTICLE_BASICID = b.BASIC_ID
LEFT JOIN basic_column cl ON b.BASIC_CATEGORYID = cl.COLUMN_CATEGORY_ID
FROM cms_article a LEFT JOIN basic ON a.ARTICLE_BASICID = basic.BASIC_ID
LEFT JOIN basic_column cl ON basic.BASIC_CATEGORYID = cl.COLUMN_CATEGORY_ID
JOIN category c ON c.CATEGORY_ID = cl.COLUMN_CATEGORY_ID
where
<if test="appId &gt; 0">
@ -330,14 +331,17 @@
</if>
<!-- 查询子栏目数据 -->
<if test="categoryId &gt; 0">
and (b.basic_categoryid=#{categoryId} or b.basic_categoryid in
(select category_id FROM category where <include refid="queryWhereCategoryId"></include>))
and (basic.basic_categoryid=#{categoryId} or basic.basic_categoryid in
(select category_id FROM category where <include refid="queryWhereCategoryId"></include>))
</if>
<if test="beginTime!=null and beginTime!=''">
and b.basic_updatetime &gt;= #{beginTime}
and basic.basic_updatetime &gt;= #{beginTime}
</if>
<if test="endTime!=null and endTime!=''">
and b.basic_updatetime &gt;= #{endTime}
and basic.basic_updatetime &gt;= #{endTime}
</if>
<if test="orderBy!=null and order!=null and orderBy!='' and order!=''">
ORDER BY `${orderBy}` ${order}
</if>
</select>
@ -359,24 +363,24 @@
<!-- 根据字段条件查找文章实体开始 -->
<sql id="queryLike" databaseId="mysql">
like CONCAT("%",
<foreach item="val" index="index" collection="item[3]">
<if test="index==0">#{val}</if>
</foreach>
,"%")
<foreach item="val" index="index" collection="item[3]">
<if test="index==0">#{val}</if>
</foreach>
,"%")
</sql>
<sql id="queryLike" databaseId="oracle">
like '%'||
<foreach item="val" index="index" collection="item[3]">
<if test="index==0">#{val}</if>
</foreach>
||'%'
<foreach item="val" index="index" collection="item[3]">
<if test="index==0">#{val}</if>
</foreach>
||'%'
</sql>
<sql id="queryLike" databaseId="sqlServer">
like '%'+
<foreach item="val" index="index" collection="item[3]">
<if test="index==0">#{val}</if>
</foreach>
+'%'
<foreach item="val" index="index" collection="item[3]">
<if test="index==0">#{val}</if>
</foreach>
+'%'
</sql>
<!-- 已过期 -->
<select id="queryListForSearch" resultMap="resultMap">
@ -398,12 +402,12 @@
and
b.BASIC_CATEGORYID in
<foreach item="id" index="key" collection="ids" open="("
separator="," close=")">
separator="," close=")">
#{id.categoryId}
</foreach>
</if>
<foreach item="item" index="key" collection="map" open=""
separator="" close="">
separator="" close="">
<if test=" item[0] == false">
and ${key}
</if>
@ -421,7 +425,7 @@
<if test="item[2] == false">
between
<foreach item="val" index="index" collection="item[3]"
separator="and">
separator="and">
#{val}
</foreach>
</if>
@ -465,7 +469,7 @@
and FIND_IN_SET(category_categoryid,'${ids}')
</if>
<foreach item="item" index="key" collection="map" open=""
separator="" close="">
separator="" close="">
<if test=" item[0] == false">
and ${key}
</if>
@ -483,7 +487,7 @@
<if test="item[2] == false">
between
<foreach item="val" index="index" collection="item[3]"
separator="and">
separator="and">
#{val}
</foreach>
</if>
@ -509,8 +513,8 @@
<include refid="basic_data_list" />
from
(((basic JOIN cms_article ON (BASIC_ID = ARTICLE_BASICID))
JOIN basic_column ON (BASIC_CATEGORYID = COLUMN_CATEGORY_ID))
JOIN category ON (COLUMN_CATEGORY_ID = CATEGORY_ID))
JOIN basic_column ON (BASIC_CATEGORYID = COLUMN_CATEGORY_ID))
JOIN category ON (COLUMN_CATEGORY_ID = CATEGORY_ID))
<if test="contentModelTableName!=null">
left join ${contentModelTableName} cmt on
cmt.basicid=basic_id
@ -533,10 +537,10 @@
<sql id="selectOne">
from
(((basic JOIN cms_article ON (BASIC_ID = ARTICLE_BASICID))
JOIN basic_column ON (BASIC_CATEGORYID = COLUMN_CATEGORY_ID))
JOIN category ON (COLUMN_CATEGORY_ID = CATEGORY_ID))
JOIN basic_column ON (BASIC_CATEGORYID = COLUMN_CATEGORY_ID))
JOIN category ON (COLUMN_CATEGORY_ID = CATEGORY_ID))
where category_appid=#{appId}
where category_appid=#{appId}
<if test="flag==false">
and basic_id &lt; ${basicId}
@ -600,10 +604,10 @@
<select id="getByCategoryId" resultMap="resultMap">
select
<include refid="basic_data_list" />
from
from
(((basic JOIN cms_article ON (BASIC_ID = ARTICLE_BASICID))
JOIN basic_column ON (BASIC_CATEGORYID = COLUMN_CATEGORY_ID))
JOIN category ON (COLUMN_CATEGORY_ID = CATEGORY_ID))
JOIN basic_column ON (BASIC_CATEGORYID = COLUMN_CATEGORY_ID))
JOIN category ON (COLUMN_CATEGORY_ID = CATEGORY_ID))
where basic_categoryId=#{categoryId} order by basic_id desc
</select>
@ -613,7 +617,7 @@
<where>
ARTICLE_BASICID in
<foreach collection="ids" item="item" index="index" open="("
separator="," close=")">#{item}</foreach>
separator="," close=")">#{item}</foreach>
</where>
</delete>

@ -1,5 +1,6 @@
#mcms\u7248\u672c
#mcms\u7248\u672C
version=d3a98fefcb242db78da5fc31608ff247
templet.file=\u6a21\u677f\u6587\u4ef6\u4e0d\u5b58\u5728
id=\u6587\u7ae0\u7f16\u53f7
typeid=\u680f\u76ee\u7f16\u53f7
templet.file=\u6A21\u677F\u6587\u4EF6\u4E0D\u5B58\u5728
id=\u6587\u7AE0\u7F16\u53F7
typeid=\u680F\u76EE\u7F16\u53F7
order=\u6392\u5E8F

@ -1,5 +1,9 @@
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.support.DefaultPointcutAdvisor;
import org.springframework.aop.support.JdkRegexpMethodPointcut;
@ -23,6 +27,7 @@ import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator;
import com.alibaba.druid.support.spring.stat.DruidStatInterceptor;
import net.mingsoft.basic.interceptor.ActionInterceptor;
import net.mingsoft.basic.util.BasicUtil;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@ -50,15 +55,23 @@ public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/html/**").addResourceLocations("/html/");
registry.addResourceHandler("/app/**").addResourceLocations("classpath:/app/");
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("/api/**").addResourceLocations("classpath:/api/");
//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("/app/**").addResourceLocations("/app/", "classpath:/app/");
registry.addResourceHandler("/static/**").addResourceLocations("/static/", "classpath:/static/");
registry.addResourceHandler("/api/**").addResourceLocations("/api/", "classpath:/api/");
}
/**
* druidServlet注册
*/
/**
* druidServlet注册
*/
@Bean
public ServletRegistrationBean druidServletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet());
@ -120,18 +133,16 @@ public class WebConfig implements WebMvcConfigurer {
return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor());
}
// /**
// * xssFilter注册
// */
// @Bean
// public FilterRegistrationBean xssFilterRegistration() {
// XssFilter xssFilter = new XssFilter();
// xssFilter.setUrlExclusion(Arrays.asList("/static/"));
// FilterRegistrationBean registration = new
// FilterRegistrationBean(xssFilter);
// registration.addUrlPatterns("/*");
// return registration;
// }
/**
* xssFilter注册
*/
@Bean
public FilterRegistrationBean xssFilterRegistration() {
XSSEscapeFilter xssFilter = new XSSEscapeFilter();
FilterRegistrationBean registration = new FilterRegistrationBean(xssFilter);
registration.addUrlPatterns("/*");
return registration;
}
/**
* RequestContextListener注册

@ -13,7 +13,7 @@ ms:
upload:
path: /upload
denied: exe
denied: .exe,.jsp
allowed: jpg
max-size: 1
memory-size: 4096

@ -87,7 +87,7 @@
field: 'basicDateTime',
title: '发布时间',
align: 'center',
width: 90
width: 150
}]
});
//查询文章标题

@ -0,0 +1,164 @@
<!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 Date().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 Date().getTime();
},
},
mounted: function() {
this.verifCode = ms.web + "/code?t=" + new Date().getTime();
if($.cookie('managerName')){
this.loginForm.managerName = $.cookie('managerName');
this.loginForm.managerPassword = $.cookie('managerPassword');
}
if (top.location != self.location){
top.location = self.location;
}
}
})
</script>

@ -4,23 +4,603 @@
<head>
<title>铭飞CMS</title>
<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, maximum-scale=1.0, user-scalable=no" />
<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>
body{ height: 100%;}
[v-cloak] {
display: none;
}
</style>
</head>
<body>
<div style="
text-align: center;
color: #555;
background: #FCFCFC;
height: 300px;
padding-top: 200px;
vertical-align: middle;
"><h2>欢迎使用铭飞产品</h2><p>技术交流加群:①242805203 ②231212174(满) ③221335098(满) 或到<a href="http://ms.mingsoft.net/mbbs/main.do" target="_blank" style="
text-decoration: none;
">官方论坛进行技术交流</a></p></div>
<div id="main" v-cloak>
<el-main class="ms-container">
<!-- 右侧头部 -->
<div class="left">
<div class="real-time-data">
<el-header class="header" style="height: 35px;">
<div> <i class="iconfont icon-shugang"></i>实时数据</div>
</el-header>
<div class="box">
<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>
</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:'#069bff',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:'#069bff',
width: 2,
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#cfebfd'
}, {
offset: 1,
color: '#ffe'
}])
}
},
itemStyle:{
color:'#069bff',
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: '#069bff',
},
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: '#2e65fd'}},
{value:100, name:'复购率',itemStyle:{color: '#8abe78'}},
{value:60, name:'平销期',itemStyle:{color: '#feb23a'}},
{value:100, name:'旺销期',itemStyle:{color: '#69c0fe'}},
{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: '#2e65fd'}},
{value:30, name:'2-5天',itemStyle:{color: '#d0e3fe'}},
{value:80, name:'5-8天',itemStyle:{color: '#feb23a'}},
{value:100, name:'8天以上',itemStyle:{color: '#8abe78'}},
]
}
]
};
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.05', '31.05', '01.06', '02.06', '03.06', '04.06', '05.06','06.06','07.06','08.06','09.06']
},
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:'#0099ff',color:'#ffe',borderWidth:4}},
{value:28,symbol:'none'},
{value:45,symbol:'none'}],
type: 'line',
markPoint : {
data : [
{type : 'max', name: '最大值'},
]
},
smooth: 0.5,
lineStyle:{
color: '#0099ff',
width: 6,
},
itemStyle:{
color: '#0099ff',
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: 100vh;
margin: 0px !important;
}
#main{
min-width: 1200px;
}
#main .left{
display: flex;
flex-direction: column;
width: 25%;
}
#main .left .real-time-data{
flex: 2;
margin: 9px;
}
#main .right-top .right-top-box{
width: 30%;
margin: 9px;
}
#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 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);
}
#main .iconfont{
padding-top: 5px;
font-size: 20px;
color: #0099ff;
}
#main .header{
font-size: 16px;
color: #333;
padding-top: 10px;
}
#main .box{
padding: 0 10px;
text-align: center;
padding-bottom: 17px;
}
#main .box-detail{
color: #3c5175;
padding-top: 24px;
font-size: 14px;
}
#main .box-number{
color: #0099ff;
padding-top: 24px;
font-size: 19px;
font-weight: bolder;
}
#main .box-percentage{
color: #3c5175;
padding-top: 24px;
font-size: 14px;
}
#main .box-number .money{
color: #feb23a;
}
#main .font{
font-size: 16px;
}
#main .backgroundImage{
background: url('../images/background.png') no-repeat center!important;
background-size: 132% 80%!important;
}
</style>

@ -6,7 +6,7 @@
<body>
<#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_des animated fadeInRight">About us</p>
</div>

@ -5,7 +5,7 @@
</head>
<body>
<#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_des animated fadeInRight">Talk online</p>
</div>

@ -6,7 +6,7 @@
<body>
<#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">&nbsp;&nbsp;&nbsp;</p>
<p class="banner_tit_other_des animated fadeInRight">Case list</p>
</div>

@ -1,5 +1,6 @@
<title>{ms:global.name/}</title>
<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/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">

@ -1,8 +1,8 @@
<!DOCTYPE html>
<html>
<#include "m/head-file.htm"/>
<#include "/m/head-file.htm"/>
<body>
<#include "m/head.htm"/>
<#include "/m/head.htm"/>
<div class="ms-banner">
<img src="{ms:global.host/}/{ms:global.style/}/images/about.png" class="am-img-responsive" alt=""/>
</div>
@ -30,6 +30,6 @@
</div>
</div>
</div>
<#include "m/footer.htm"/>
<#include "/m/footer.htm"/>
</body>
</html>

@ -1,8 +1,8 @@
<!DOCTYPE html>
<html>
<#include "m/head-file.htm"/>
<#include "/m/head-file.htm"/>
<body>
<#include "m/head.htm"/>
<#include "/m/head.htm"/>
<div class="ms-banner">
<img src="{ms:global.host/}/{ms:global.style/}/images/message.png" alt="" width="100%" />
</div>
@ -20,7 +20,7 @@
<button type="button" class="am-btn am-btn-primary ms-content-button">提交</button>
</form>
</div>
<#include "m/footer.htm"/>
<#include "/m/footer.htm"/>
</body>
</html>
<script>

@ -1,8 +1,8 @@
<!DOCTYPE html>
<html>
<#include "m/head-file.htm"/>
<#include "/m/head-file.htm"/>
<body>
<#include "m/head.htm"/>
<#include "/m/head.htm"/>
<div class="ms-banner">
<img src="{ms:global.host/}/{ms:global.style/}/images/mo.png" class="am-img-responsive" alt=""/>
</div>
@ -17,7 +17,7 @@
{/ms:arclist}
</ul>
</div>
<#include "m/footer.htm"/>
<#include "/m/footer.htm"/>
</body>
</html>
<script>

@ -1,8 +1,8 @@
<!DOCTYPE html>
<html>
<#include "m/head-file.htm"/>
<#include "/m/head-file.htm"/>
<body>
<#include "m/head.htm"/>
<#include "/m/head.htm"/>
<div class="ms-banner">
<img src="{ms:global.host/}/{ms:global.style/}/images/about.png" class="am-img-responsive" alt=""/>
</div>
@ -30,6 +30,6 @@
</div>
</div>
</div>
<#include "m/footer.htm"/>
<#include "/m/footer.htm"/>
</body>
</html>

@ -1,8 +1,8 @@
<!DOCTYPE html>
<html>
<#include "m/head-file.htm"/>
<#include "/m/head-file.htm"/>
<body>
<#include "m/head.htm"/>
<#include "/m/head.htm"/>
<div class="ms-banner">
<img src="{ms:global.host/}/{ms:global.style/}/images/case.png" class="am-img-responsive" alt=""/>
</div>
@ -20,6 +20,6 @@
</div>
</div>
</div>
<#include "m/footer.htm"/>
<#include "/m/footer.htm"/>
</body>
</html>

@ -1,12 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<#include "m/head-file.htm"/>
<#include "/m/head-file.htm"/>
<link rel="stylesheet" type="text/css" href="{ms:global.host/}/{ms:global.style/}/css/jquery.sinaemotion.css" />
<script type="text/javascript" src="{ms:global.host/}/{ms:global.style/}/js/jquery.sinaEmotion.js"></script>
</head>
<body>
<#include "m/head.htm"/>
<#include "/m/head.htm"/>
<div class="ms-banner">
<img src="{ms:global.host/}/{ms:global.style/}/images/case.png" class="am-img-responsive" alt="" />
</div>
@ -81,7 +81,7 @@
</div>
</div>
</div>
<#include "m/footer.htm"/>
<#include "/m/footer.htm"/>
</body>
<script>
var newsShowVue = new Vue({

@ -8,7 +8,7 @@
<body>
<#include "head.htm">
<div class="ms-banner" style="background:url({ms:global.host/}/{ms:global.style/}images/news2.png) no-repeat center;">
<div class="ms-banner" style="background:url({ms:global.host/}/{ms:global.style/}/images/news2.png) no-repeat center;">
<p class="banner_tit_other animated fadeInLeft">公司动态</p>
<p class="banner_tit_other_des animated fadeInRight">Our company</p>

@ -27,10 +27,10 @@
</ul>
</div>
<div class="ms-content-main-page">
<a class="ms-content-main-page-first" href="{ms:global.url/}{ms:page.index/}">首页</a>
<a class="ms-content-main-page-upper" href="{ms:global.url/}{ms:page.pre/}">上一页</a>
<a class="ms-content-main-page-next" href="{ms:global.url/}{ms:page.next/}">下一页</a>
<a class="ms-content-main-page-last" href="{ms:global.url/}{ms:page.last/}">末页</a>
<a class="ms-content-main-page-first" href="{ms:page.index/}">首页</a>
<a class="ms-content-main-page-upper" href="{ms:page.pre/}">上一页</a>
<a class="ms-content-main-page-next" href="{ms:page.next/}">下一页</a>
<a class="ms-content-main-page-last" href="{ms:page.last/}">末页</a>
</div>
</div>
</div>

Loading…
Cancel
Save