Compare commits

...

5 Commits

Author SHA1 Message Date
sunjianxi 818bfd7095 项目初始化 2 years ago
msgroup e51f91b2a4 up:5.3.6 sql优化 2 years ago
msgroup dac82de576 up:5.3.6 2 years ago
msgroup add5c1e421 up:5.3.6 2 years ago
msgroup 080e53d575 up:5.3.6 2 years ago
  1. 11
      doc/5.3.5-up-5.3.6.sql
  2. 60
      doc/mcms-5.3.6.sql
  3. 6
      pom.xml
  4. 2
      src/main/java/net/mingsoft/MSApplication.java
  5. 2
      src/main/java/net/mingsoft/MSServletInitializer.java
  6. 2
      src/main/java/net/mingsoft/cms/action/BaseAction.java
  7. 6
      src/main/java/net/mingsoft/cms/action/CategoryAction.java
  8. 2
      src/main/java/net/mingsoft/cms/action/ContentAction.java
  9. 2
      src/main/java/net/mingsoft/cms/action/GeneraterAction.java
  10. 55
      src/main/java/net/mingsoft/cms/action/web/CategoryAction.java
  11. 65
      src/main/java/net/mingsoft/cms/action/web/ContentAction.java
  12. 2
      src/main/java/net/mingsoft/cms/action/web/MCmsAction.java
  13. 1
      src/main/java/net/mingsoft/cms/aop/CategoryAop.java
  14. 6
      src/main/java/net/mingsoft/cms/aop/ContentAop.java
  15. 2
      src/main/java/net/mingsoft/cms/bean/CategoryBean.java
  16. 42
      src/main/java/net/mingsoft/cms/bean/ContentBean.java
  17. 2
      src/main/java/net/mingsoft/cms/biz/ICategoryBiz.java
  18. 2
      src/main/java/net/mingsoft/cms/biz/IContentBiz.java
  19. 2
      src/main/java/net/mingsoft/cms/biz/IHistoryLogBiz.java
  20. 2
      src/main/java/net/mingsoft/cms/biz/impl/CategoryBizImpl.java
  21. 2
      src/main/java/net/mingsoft/cms/biz/impl/ContentBizImpl.java
  22. 42
      src/main/java/net/mingsoft/cms/biz/impl/HistoryLogBizImpl.java
  23. 2
      src/main/java/net/mingsoft/cms/constant/Const.java
  24. 2
      src/main/java/net/mingsoft/cms/constant/e/CategoryDisplayEnum.java
  25. 1
      src/main/java/net/mingsoft/cms/constant/e/CategoryIsSearchEnum.java
  26. 2
      src/main/java/net/mingsoft/cms/constant/e/CategoryTypeEnum.java
  27. 1
      src/main/java/net/mingsoft/cms/constant/e/ContentEnum.java
  28. 2
      src/main/java/net/mingsoft/cms/dao/ICategoryDao.java
  29. 2
      src/main/java/net/mingsoft/cms/dao/ICmsHistoryLogDao.java
  30. 2
      src/main/java/net/mingsoft/cms/dao/IContentDao.java
  31. 13
      src/main/java/net/mingsoft/cms/entity/CategoryEntity.java
  32. 42
      src/main/java/net/mingsoft/cms/entity/ContentEntity.java
  33. 38
      src/main/java/net/mingsoft/cms/entity/HistoryLogEntity.java
  34. 1
      src/main/java/net/mingsoft/cms/resources/resources_en_US.properties
  35. 1
      src/main/java/net/mingsoft/cms/resources/resources_zh_CN.properties
  36. 2
      src/main/java/net/mingsoft/cms/util/CmsParserUtil.java
  37. 2
      src/main/java/net/mingsoft/config/WebConfig.java
  38. 62
      src/main/java/net/mingsoft/excel/listener/DataListener.java
  39. 113
      src/main/java/net/mingsoft/excel/listener/ImportListener.java
  40. 9
      src/main/java/net/mingsoft/excel/support/ExcelException.java
  41. 7
      src/main/java/net/mingsoft/excel/support/ExcelImporter.java
  42. 99
      src/main/java/net/mingsoft/excel/util/ExcelUtil.java
  43. 43
      src/main/java/net/mingsoft/statistics/action/BaseAction.java
  44. 180
      src/main/java/net/mingsoft/statistics/action/PublishListAction.java
  45. 16
      src/main/java/net/mingsoft/statistics/biz/IPublishListBiz.java
  46. 34
      src/main/java/net/mingsoft/statistics/biz/impl/PublishListBizImpl.java
  47. 18
      src/main/java/net/mingsoft/statistics/constant/Const.java
  48. 14
      src/main/java/net/mingsoft/statistics/dao/IPublishListDao.java
  49. 18
      src/main/java/net/mingsoft/statistics/dao/IPublishListDao.xml
  50. 55
      src/main/java/net/mingsoft/statistics/entity/PublishListEntity.java
  51. 1
      src/main/java/net/mingsoft/statistics/resources/resources_en_US.properties
  52. 1
      src/main/java/net/mingsoft/statistics/resources/resources_zh_CN.properties
  53. 4
      src/main/resources/application-dev.yml
  54. 8
      src/main/resources/application.yml
  55. 64
      src/main/webapp/WEB-INF/manager/cms/category/form.ftl
  56. 2
      src/main/webapp/WEB-INF/manager/cms/category/index.ftl
  57. 34
      src/main/webapp/WEB-INF/manager/cms/content/form.ftl
  58. 8
      src/main/webapp/WEB-INF/manager/cms/content/index.ftl
  59. 6
      src/main/webapp/WEB-INF/manager/cms/content/main.ftl
  60. 4
      src/main/webapp/WEB-INF/manager/cms/generate/index.ftl
  61. 128
      src/main/webapp/WEB-INF/manager/cms/statistic/index.ftl
  62. 143
      src/main/webapp/WEB-INF/manager/statistics/publish-list/form.ftl
  63. 128
      src/main/webapp/WEB-INF/manager/statistics/publish-list/index.ftl
  64. BIN
      src/main/webapp/static/images/login-banner.png
  65. BIN
      src/main/webapp/static/images/yanhua.png
  66. 9
      src/main/webapp/static/locale/lang/publish-list/en_US.js
  67. 10
      src/main/webapp/static/locale/lang/publish-list/zh_CN.js
  68. 2
      src/main/webapp/template/1/default/css/css.css
  69. 79
      src/main/webapp/template/1/default/css/header.css
  70. 413
      src/main/webapp/template/1/default/css/index.css
  71. 77
      src/main/webapp/template/1/default/css/public.css
  72. 46
      src/main/webapp/template/1/default/css/style.css
  73. 12
      src/main/webapp/template/1/default/css/swiper.min.css
  74. 16
      src/main/webapp/template/1/default/footer.htm
  75. 171
      src/main/webapp/template/1/default/header.htm
  76. BIN
      src/main/webapp/template/1/default/images/logo.jpg
  77. BIN
      src/main/webapp/template/1/default/images/notice.png
  78. 359
      src/main/webapp/template/1/default/index.htm
  79. 5688
      src/main/webapp/template/1/default/js/moment.js
  80. 1
      src/main/webapp/template/1/default/js/public.js
  81. 6427
      src/main/webapp/template/1/default/js/swiper.min.js
  82. 11914
      src/main/webapp/template/1/default/js/vue.js
  83. 29
      src/main/webapp/template/1/default/news-detail.htm
  84. 7
      src/main/webapp/template/1/default/product-detail.htm

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -114,6 +114,12 @@
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.7</version>
</dependency>
</dependencies>
<build>

@ -19,8 +19,6 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft;
import org.mybatis.spring.annotation.MapperScan;

@ -19,8 +19,6 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.action;
import java.util.MissingResourceException;

@ -7,10 +7,10 @@
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* <p>
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* <p>
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.action;
import cn.hutool.core.io.file.FileNameUtil;

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.action;
import io.swagger.annotations.Api;

@ -22,8 +22,6 @@
package net.mingsoft.cms.action;
import cn.hutool.core.bean.BeanUtil;

@ -1,25 +1,23 @@
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action.web;
@ -63,7 +61,24 @@ public class CategoryAction extends net.mingsoft.cms.action.BaseAction{
*/
@ApiOperation(value = "查询分类列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "栏目管理ID", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryShortTitle", value = "栏目管理副标题", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryPinyin", value = "栏目管理别名", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryId", value = "所属栏目id", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryType", value = "栏目管理属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryListUrl", value = "列表模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryUrl", value = "内容模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryKeyword", value = "栏目管理关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDescrip", value = "栏目管理描述", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDiyUrl", value = "自定义链接", required =false,paramType="query"),
@ApiImplicitParam(name = "mdiyModelId", value = "文章管理的内容模型id", required =false,paramType="query"),
@ApiImplicitParam(name = "dictId", value = "字典对应编号", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryFlag", value = "栏目属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryPath", value = "栏目路径", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryParentIds", value = "父类型编号", required =false,paramType="query"),
@ApiImplicitParam(name = "leaf", value = "叶子节点", required =false,paramType="query"),
@ApiImplicitParam(name = "topId", value = "顶级id", required =false,paramType="query"),
})
@PostMapping(value="/list")
@ResponseBody

@ -1,25 +1,23 @@
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action.web;
@ -73,15 +71,26 @@ public class ContentAction extends net.mingsoft.cms.action.BaseAction{
*/
@ApiOperation(value = "查询文章列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "文章id", required =false,paramType="query"),
@ApiImplicitParam(name = "contentTitle", value = "文章标题", required =false,paramType="query"),
@ApiImplicitParam(name = "contentShortTitle", value = "文章副标题", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "flag", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "contentTags", value = "文章标签", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDescription", value = "描述", required =false,paramType="query"),
@ApiImplicitParam(name = "contentKeyword", value = "关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDetails", value = "文章内容", required =false,paramType="query"),
@ApiImplicitParam(name = "contentOutLink", value = "文章跳转链接地址", required =false,paramType="query"),
@ApiImplicitParam(name = "contentHit", value = "点击次数", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryType", value = "栏目类型", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryFlag", value = "栏目属性", required =false,paramType="query"),
@ApiImplicitParam(name = "flag", value = "属性标记", required =false,paramType="query"),
@ApiImplicitParam(name = "noflag", value = "排除文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDisplay", value = "是否显示", required =false,paramType="query"),
@ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "hasDetailHtml", value = "文章是否被静态化", required =false,paramType="query"),
@ApiImplicitParam(name = "hasListHtml", value = "栏目是否被静态化", required =false,paramType="query"),
})
@RequestMapping(value = "/list",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody

@ -19,8 +19,6 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action.web;
import cn.hutool.core.util.ObjectUtil;

@ -20,7 +20,6 @@
*/
package net.mingsoft.cms.aop;
import cn.hutool.core.collection.CollectionUtil;

@ -7,10 +7,10 @@
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* <p>
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* <p>
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.aop;
import cn.hutool.core.io.FileUtil;

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.bean;
import com.fasterxml.jackson.annotation.JsonFormat;

@ -1,25 +1,23 @@
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.bean;

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.biz;
import net.mingsoft.base.biz.IBaseBiz;

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.biz;
import net.mingsoft.base.biz.IBaseBiz;

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.biz;
import net.mingsoft.base.biz.IBaseBiz;

@ -22,8 +22,6 @@
package net.mingsoft.cms.biz.impl;
import cn.hutool.core.collection.CollUtil;

@ -22,8 +22,6 @@
package net.mingsoft.cms.biz.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

@ -1,25 +1,23 @@
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.constant;
/**

@ -19,8 +19,6 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.constant.e;
import net.mingsoft.base.constant.e.BaseEnum;

@ -20,7 +20,6 @@
*/
package net.mingsoft.cms.constant.e;
import net.mingsoft.base.constant.e.BaseEnum;

@ -21,8 +21,6 @@
package net.mingsoft.cms.constant.e;
import net.mingsoft.base.constant.e.BaseEnum;

@ -19,6 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.constant.e;
import net.mingsoft.base.constant.e.BaseEnum;

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.dao;
import net.mingsoft.base.dao.IBaseDao;

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.dao;
import net.mingsoft.base.dao.IBaseDao;

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.dao;
import net.mingsoft.base.dao.IBaseDao;

@ -7,10 +7,10 @@
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* <p>
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* <p>
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.entity;
import cn.hutool.core.util.BooleanUtil;
@ -534,6 +532,13 @@ public class CategoryEntity extends BaseEntity {
return this.categoryType;
}
/**
* 获取栏目副标题 (标签使用)
*/
public String getTypeshorttitle(){
return this.categoryShortTitle;
}
/**
* 获取子分类数量 (标签使用
*/

@ -1,25 +1,23 @@
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.entity;

@ -1,25 +1,23 @@
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* The MIT License (MIT)
* Copyright (c) 2012-present 铭软科技(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
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.entity;

@ -36,3 +36,4 @@ content.keyword=keyword
template.file=template file not found
category.pinyin=pinyin
datetime.format=datatime format
cannot.select.child=cannot select child node

@ -36,4 +36,5 @@ content.keyword=\u5173\u952E\u5B57
template.file=\u672A\u627E\u5230\u6A21\u677F\u6587\u4EF6
category.pinyin=\u62FC\u97F3
datetime.format=\u65F6\u95F4\u683C\u5F0F
cannot.select.child=\u65e0\u6cd5\u9009\u62e9\u5b50\u8282\u70b9

@ -20,8 +20,6 @@
*/
package net.mingsoft.cms.util;
import cn.hutool.core.io.FileUtil;

@ -19,8 +19,6 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.config;
import cn.hutool.core.util.StrUtil;

@ -0,0 +1,62 @@
package net.mingsoft.excel.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.ArrayList;
import java.util.List;
public class DataListener<T> extends AnalysisEventListener<T> {
private final List<T> dataList = new ArrayList();
public DataListener() {
}
public void invoke(T data, AnalysisContext analysisContext) {
this.dataList.add(data);
}
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
public List<T> getDataList() {
return this.dataList;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
} else if (!(o instanceof DataListener)) {
return false;
} else {
DataListener<?> other = (DataListener)o;
if (!other.canEqual(this)) {
return false;
} else if (!super.equals(o)) {
return false;
} else {
Object this$dataList = this.getDataList();
Object other$dataList = other.getDataList();
if (this$dataList == null) {
if (other$dataList != null) {
return false;
}
} else if (!this$dataList.equals(other$dataList)) {
return false;
}
return true;
}
}
}
protected boolean canEqual(final Object other) {
return other instanceof DataListener;
}
public int hashCode() {
int result = super.hashCode();
Object $dataList = this.getDataList();
result = result * 59 + ($dataList == null ? 43 : $dataList.hashCode());
return result;
}
}

@ -0,0 +1,113 @@
package net.mingsoft.excel.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import net.mingsoft.excel.support.ExcelImporter;
import java.util.ArrayList;
import java.util.List;
public class ImportListener<T> extends AnalysisEventListener<T> {
private int batchCount = 3000;
private List<T> list = new ArrayList();
private final ExcelImporter<T> importer;
public void invoke(T data, AnalysisContext analysisContext) {
this.list.add(data);
if (this.list.size() >= this.batchCount) {
this.importer.save(this.list);
this.list.clear();
}
}
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
this.importer.save(this.list);
this.list.clear();
}
public int getBatchCount() {
return this.batchCount;
}
public List<T> getList() {
return this.list;
}
public ExcelImporter<T> getImporter() {
return this.importer;
}
public void setBatchCount(final int batchCount) {
this.batchCount = batchCount;
}
public void setList(final List<T> list) {
this.list = list;
}
public String toString() {
return "ImportListener(batchCount=" + this.getBatchCount() + ", list=" + this.getList() + ", importer=" + this.getImporter() + ")";
}
public ImportListener(final ExcelImporter<T> importer) {
this.importer = importer;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
} else if (!(o instanceof ImportListener)) {
return false;
} else {
ImportListener<?> other = (ImportListener)o;
if (!other.canEqual(this)) {
return false;
} else if (!super.equals(o)) {
return false;
} else if (this.getBatchCount() != other.getBatchCount()) {
return false;
} else {
label40: {
Object this$list = this.getList();
Object other$list = other.getList();
if (this$list == null) {
if (other$list == null) {
break label40;
}
} else if (this$list.equals(other$list)) {
break label40;
}
return false;
}
Object this$importer = this.getImporter();
Object other$importer = other.getImporter();
if (this$importer == null) {
if (other$importer != null) {
return false;
}
} else if (!this$importer.equals(other$importer)) {
return false;
}
return true;
}
}
}
protected boolean canEqual(final Object other) {
return other instanceof ImportListener;
}
public int hashCode() {
int result = super.hashCode();
result = result * 59 + this.getBatchCount();
Object $list = this.getList();
result = result * 59 + ($list == null ? 43 : $list.hashCode());
Object $importer = this.getImporter();
result = result * 59 + ($importer == null ? 43 : $importer.hashCode());
return result;
}
}

@ -0,0 +1,9 @@
package net.mingsoft.excel.support;
public class ExcelException extends RuntimeException {
private static final long serialVersionUID = 1L;
public ExcelException(String message) {
super(message);
}
}

@ -0,0 +1,7 @@
package net.mingsoft.excel.support;
import java.util.List;
public interface ExcelImporter<T> {
void save(List<T> data);
}

@ -0,0 +1,99 @@
package net.mingsoft.excel.util;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.alibaba.excel.read.builder.ExcelReaderSheetBuilder;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.util.DateUtils;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import net.mingsoft.excel.listener.DataListener;
import net.mingsoft.excel.listener.ImportListener;
import net.mingsoft.excel.support.ExcelException;
import net.mingsoft.excel.support.ExcelImporter;
import org.apache.commons.codec.Charsets;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
public class ExcelUtil {
public ExcelUtil() {
}
public static <T> List<T> read(MultipartFile excel, Class<T> clazz) {
DataListener<T> dataListener = new DataListener();
ExcelReaderBuilder builder = getReaderBuilder(excel, dataListener, clazz);
if (builder == null) {
return null;
} else {
builder.doReadAll();
return dataListener.getDataList();
}
}
public static <T> List<T> read(MultipartFile excel, int sheetNo, Class<T> clazz) {
return read(excel, sheetNo, 1, clazz);
}
public static <T> List<T> read(MultipartFile excel, int sheetNo, int headRowNumber, Class<T> clazz) {
DataListener<T> dataListener = new DataListener();
ExcelReaderBuilder builder = getReaderBuilder(excel, dataListener, clazz);
if (builder == null) {
return null;
} else {
((ExcelReaderSheetBuilder)builder.sheet(sheetNo).headRowNumber(headRowNumber)).doRead();
return dataListener.getDataList();
}
}
public static <T> void save(MultipartFile excel, ExcelImporter<T> importer, Class<T> clazz) {
ImportListener<T> importListener = new ImportListener(importer);
ExcelReaderBuilder builder = getReaderBuilder(excel, importListener, clazz);
if (builder != null) {
builder.doReadAll();
}
}
public static <T> void export(HttpServletResponse response, List<T> dataList, Class<T> clazz) throws IOException {
try {
export(response, DateUtils.format(new Date(), "yyyyMMddHHmmss"), "导出数据", dataList, clazz);
} catch (Throwable var4) {
throw var4;
}
}
public static <T> void export(HttpServletResponse response, String fileName, String sheetName, List<T> dataList, Class<T> clazz) throws IOException {
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding(Charsets.UTF_8.name());
fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name());
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(dataList);
} catch (Throwable var6) {
throw var6;
}
}
public static <T> ExcelReaderBuilder getReaderBuilder(MultipartFile excel, ReadListener<T> readListener, Class<T> clazz) {
String filename = excel.getOriginalFilename();
if (StringUtils.isEmpty(filename)) {
throw new ExcelException("请上传文件!");
} else if (!StringUtils.endsWithIgnoreCase(filename, ".xls") && !StringUtils.endsWithIgnoreCase(filename, ".xlsx")) {
throw new ExcelException("请上传正确的excel文件!");
} else {
try {
InputStream inputStream = new BufferedInputStream(excel.getInputStream());
return EasyExcel.read(inputStream, clazz, readListener);
} catch (IOException var6) {
var6.printStackTrace();
return null;
}
}
}
}

@ -0,0 +1,43 @@
package net.mingsoft.statistics.action;
import java.util.MissingResourceException;
import net.mingsoft.base.util.BundleUtil;
/**
* statistics基础控制层
* @author 凉寂
* 创建日期2024-3-19 9:38:54<br/>
* 历史修订<br/>
*/
public class BaseAction extends net.mingsoft.basic.action.BaseAction{
/**
* 读取国际化资源文件(没有占位符号的)优先模块对应的资源文件如果模块资源文件找不到就会优先基础层
* @param key 国际化文件key
* @return 国际化字符串
*/
protected String getResString(String key) {
return this.getResString(key,"");
}
/**
* 读取国际化资源文件优先模块对应的资源文件如果模块资源文件找不到就会优先基础层
* @param key 国际化文件key
* @param params 拼接值
* @return 国际化字符串
*/
protected String getResString(String key,String... params) {
String str = "";
try {
str = super.getResString(key);
//替换占位
for (int i = 0; i < params.length; i++) {
str = str.replace("{" + i + "}", params[i]);
}
} catch (MissingResourceException e) {
str = BundleUtil.getString(net.mingsoft.statistics.constant.Const.RESOURCES,key,params);
}
return str;
}
}

@ -0,0 +1,180 @@
package net.mingsoft.statistics.action;
import java.util.List;
import java.io.File;
import java.util.ArrayList;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.ObjectUtil;
import java.util.*;
import net.mingsoft.base.entity.ResultData;
import org.apache.commons.lang3.StringUtils;
import org.springframework.validation.BindingResult;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.ui.ModelMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.stream.Collectors;
import org.springframework.web.bind.annotation.*;
import net.mingsoft.statistics.biz.IPublishListBiz;
import net.mingsoft.statistics.entity.PublishListEntity;
import net.mingsoft.base.entity.BaseEntity;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.annotation.LogAnn;
import net.mingsoft.basic.constant.e.BusinessTypeEnum;
import org.apache.commons.lang3.StringUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.annotations.ApiIgnore;
/**
* 发布量统计管理控制层
* @author 凉寂
* 创建日期2024-3-19 9:38:54<br/>
* 历史修订<br/>
*/
@Api(tags = "后台-发布量统计接口")
@Controller("statisticsPublishListAction")
@RequestMapping("/${ms.manager.path}/statistics/publishList")
public class PublishListAction extends BaseAction{
/**
* 注入发布量统计业务层
*/
@Autowired
private IPublishListBiz publishListBiz;
/**
* 返回主界面index
*/
@GetMapping("/index")
public String index(HttpServletResponse response,HttpServletRequest request) {
return "/statistics/publish-list/index";
}
/**
* 查询发布量统计列表
* @param publishList 发布量统计实体
*/
@ApiOperation(value = "查询发布量统计列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "perYear", value = "按年份查询", paramType = "query"),
})
@RequestMapping(value ="/list",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public ResultData list(@ModelAttribute @ApiIgnore PublishListEntity publishList,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model,BindingResult result) {
BasicUtil.startPage();
List publishListList = null;
if ( publishList.getSqlWhere() != null){
publishListList = publishListBiz.query(publishList);
} else {
LambdaQueryWrapper<PublishListEntity> wrapper = new LambdaQueryWrapper<>(publishList).orderByDesc(PublishListEntity::getCreateDate);
publishListList = publishListBiz.list(wrapper);
}
return ResultData.build().success(new EUListBean(publishListList,(int)BasicUtil.endPage(publishListList).getTotal()));
}
/**
* 返回编辑界面publishList的form
*/
@GetMapping("/form")
public String form(@ModelAttribute PublishListEntity publishList,HttpServletResponse response,HttpServletRequest request,ModelMap model) {
return "/statistics/publish-list/form";
}
/**
* 获取发布量统计
* @param publishList 发布量统计实体
*/
@ApiOperation(value = "获取发布量统计列表接口")
@ApiImplicitParam(name = "id", value = "主键ID", required =true,paramType="query")
@GetMapping("/get")
@ResponseBody
public ResultData get(@ModelAttribute @ApiIgnore PublishListEntity publishList,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model) {
if (publishList.getId()==null) {
return ResultData.build().error();
}
PublishListEntity _publishList = (PublishListEntity)publishListBiz.getById(publishList.getId());
return ResultData.build().success(_publishList);
}
/**
* 保存发布量统计
* @param publishList 发布量统计实体
*/
@ApiOperation(value = "保存发布量统计列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "perYear", value = "按年份查询", required =true, paramType = "query"),
})
@PostMapping("/save")
@ResponseBody
@LogAnn(title = "保存发布量统计", businessType = BusinessTypeEnum.INSERT)
@RequiresPermissions("statistics:publishList:save")
public ResultData save(@ModelAttribute @ApiIgnore PublishListEntity publishList, HttpServletResponse response, HttpServletRequest request) {
publishListBiz.save(publishList);
return ResultData.build().success(publishList);
}
/**
* 删除发布量统计
*
* @param publishLists 发布量统计实体
*/
@ApiOperation(value = "批量删除发布量统计列表接口")
@PostMapping("/delete")
@ResponseBody
@LogAnn(title = "删除发布量统计", businessType = BusinessTypeEnum.DELETE)
@RequiresPermissions("statistics:publishList:del")
public ResultData delete(@RequestBody List<PublishListEntity> publishLists,HttpServletResponse response, HttpServletRequest request) {
List<String> ids = (List)publishLists.stream().map((p) -> {return p.getId();}).collect(Collectors.toList());
return this.publishListBiz.removeByIds(ids) ? ResultData.build().success() : ResultData.build().error(this.getResString("err.error", new String[]{this.getResString("id")}));
}
/**
* 更新发布量统计列表
*
* @param publishList 发布量统计实体
*/
@ApiOperation(value = "更新发布量统计列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "perYear", value = "按年份查询", required =true, paramType = "query"),
})
@PostMapping("/update")
@ResponseBody
@LogAnn(title = "更新发布量统计", businessType = BusinessTypeEnum.UPDATE)
@RequiresPermissions("statistics:publishList:update")
public ResultData update(@ModelAttribute @ApiIgnore PublishListEntity publishList, HttpServletResponse response,
HttpServletRequest request) {
//先查询数据是否存在
PublishListEntity _publishList = (PublishListEntity)publishListBiz.getById(publishList.getId());
if(_publishList == null) {
return ResultData.build().error(getResString("err.not.exist",publishList.getId() ));
}
publishListBiz.updateById(publishList);
return ResultData.build().success(publishList);
}
}

@ -0,0 +1,16 @@
package net.mingsoft.statistics.biz;
import net.mingsoft.base.biz.IBaseBiz;
import net.mingsoft.statistics.entity.PublishListEntity;
/**
* 发布量统计业务
* @author 凉寂
* 创建日期2024-3-19 9:38:54<br/>
* 历史修订<br/>
*/
public interface IPublishListBiz extends IBaseBiz<PublishListEntity> {
}

@ -0,0 +1,34 @@
package net.mingsoft.statistics.biz.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import net.mingsoft.base.biz.impl.BaseBizImpl;
import net.mingsoft.base.dao.IBaseDao;
import java.util.*;
import net.mingsoft.statistics.entity.PublishListEntity;
import net.mingsoft.statistics.biz.IPublishListBiz;
import net.mingsoft.statistics.dao.IPublishListDao;
/**
* 发布量统计管理持久化层
* @author 凉寂
* 创建日期2024-3-19 9:38:54<br/>
* 历史修订<br/>
*/
@Service("statisticspublishListBizImpl")
public class PublishListBizImpl extends BaseBizImpl<IPublishListDao,PublishListEntity> implements IPublishListBiz {
@Autowired
private IPublishListDao publishListDao;
@Override
protected IBaseDao getDao() {
// TODO Auto-generated method stub
return publishListDao;
}
}

@ -0,0 +1,18 @@
package net.mingsoft.statistics.constant;
import java.util.ResourceBundle;
/**
* statistics定义
* @author 凉寂
* 创建日期2024-3-19 9:38:54<br/>
* 历史修订<br/>
*/
public final class Const {
/**
* 资源文件
*/
public final static String RESOURCES = "net.mingsoft.statistics.resources.resources";
}

@ -0,0 +1,14 @@
package net.mingsoft.statistics.dao;
import net.mingsoft.base.dao.IBaseDao;
import java.util.*;
import net.mingsoft.statistics.entity.PublishListEntity;
/**
* 发布量统计持久层
* @author 凉寂
* 创建日期2024-3-19 9:38:54<br/>
* 历史修订<br/>
*/
public interface IPublishListDao extends IBaseDao<PublishListEntity> {
}

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="net.mingsoft.statistics.dao.IPublishListDao">
<resultMap id="resultMap" type="net.mingsoft.statistics.entity.PublishListEntity">
<result column="PER_YEAR" property="perYear" /><!--按年份查询 -->
</resultMap>
<select id="query" resultMap="resultMap">
SELECT * FROM STATISTICS_PUBLISHPUBLISH_LIST
<where>
DEL=0
<include refid="net.mingsoft.base.dao.IBaseDao.sqlWhere"></include>
</where>
ORDER BY ID DESC
</select>
</mapper>

@ -0,0 +1,55 @@
package net.mingsoft.statistics.entity;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import net.mingsoft.base.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.SqlCondition;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.util.Date;
/**
* 发布量统计实体
* @author 凉寂
* 创建日期2024-3-19 9:38:54<br/>
* 历史修订<br/>
*/
@TableName("STATISTICS_PUBLISHPUBLISH_LIST")
public class PublishListEntity extends BaseEntity {
private static final long serialVersionUID = 1710812334454L;
/**
* 按年份查询
*/
@DateTimeFormat(pattern = "yyyy")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy")
private Date perYear;
/**
* 设置按年份查询
*/
public void setPerYear(Date perYear) {
this.perYear = perYear;
}
/**
* 获取按年份查询
*/
public Date getPerYear() {
return this.perYear;
}
}

@ -1,7 +1,7 @@
spring:
datasource:
url: jdbc:mysql://localhost:3306/mcms?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&allowMultiQueries=true&useSSL=true
url: jdbc:mysql://localhost:3306/mcms?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&allowMultiQueries=true&useSSL=false
username: root
password: root
password: 123456
filters: wall,mergeStat
type: com.alibaba.druid.pool.DruidDataSource

@ -10,6 +10,7 @@ server:
error:
include-exception: true
include-message: always
# ssl: #https证书配置 配置了之后只能通过https访问应用
# key-store: xxx.pfx 证书文件,证书文件格式具体参考证书分发平台
# key-store-password: 1234 证书密码
@ -29,23 +30,24 @@ ms:
exclude-url: /ms/**,/static/**,/template/**,/file/upload.do,/static/plugins/ueditor/1.4.3.3/jsp/editor.do
#过滤的参数名,多个用逗号分开 默认排除菜单、自定模型JSON、模版内容、文章内容,具体根据需要配置其他字段
exclude-filed: menuStr,modelField,modelUrl,modelJson,fileContent,contentDetails
# shiro-key: #16位长度,不填写默认随机生成
diy:
html-dir: html
swagger:
enable: false #启用swagger文档,生产的时候务必关掉 访问地址:http://ip|域名/项目发布名/swagger-ui.html
enable: true #启用swagger文档,生产的时候务必关掉 访问地址:http://ip|域名/项目发布名/swagger-ui.html
manager:
path: /ms #后台访问的路径,如:http://项目/ms/login.do,生产的时候建议修改
check-code: true #默认开启验证码验证,false验证码不验证
check-code: false #默认开启验证码验证,false验证码不验证
upload:
enable-web: true #启用web层的上传
template: template #模板文件夹支持重命名,不支持路径
path: upload #文件上传路径,可以根据实际写绝对路径(绝对路径需要开发版以上才支持)
mapping: /upload/** #修改需要谨慎,系统第一次部署可以随意修改,如果已经有了上传数据,再次修改会导致之前上传的文件404
denied: exe,jsp,xml,sh,bat,py,ftl,jspx
denied: exe,jsp
back-up: /upload_back
multipart:
#最大上传文件大小 单位:KB

@ -8,10 +8,10 @@
<div id="form" v-cloak>
<el-header class="ms-header ms-tr" height="50px">
<@shiro.hasPermission name="cms:category:save">
<el-button type="primary" icon="iconfont icon-baocun" size="mini" @click="save()" :loading="saveDisabled">保存
<el-button type="primary" class="iconfont icon-baocun" size="mini" @click="save()" :loading="saveDisabled">保存
</el-button>
</@shiro.hasPermission>
<el-button size="mini" icon="iconfont icon-fanhui" plain onclick="javascript:history.go(-1)">返回</el-button>
<el-button size="mini" class="iconfont icon-fanhui" plain onclick="javascript:history.go(-1)">返回</el-button>
</el-header>
<el-main class="ms-container">
@ -41,10 +41,10 @@
<el-col :span=12>
<el-form-item label="所属栏目" prop="categoryId">
<ms-tree-select ref="tree"
:key="treeKey"
:props="{value: 'id',label: 'categoryTitle',children: 'children'}"
:options="treeList" :style="{width:'100%'}"
v-model="form.categoryId"></ms-tree-select>
:key="treeKey"
:props="{value: 'id',label: 'categoryTitle',children: 'children'}"
:options="treeList" :style="{width:'100%'}"
v-model:value="form.categoryId"></ms-tree-select>
<div class="ms-form-tip">
不能将父级别栏目移动到自身子级栏目
</div>
@ -84,7 +84,13 @@
可以在自定义字典中管理
</div>
</el-form-item>
<el-form-item label="自定义顺序" prop="categorySort">
<el-input-number
v-model="form.categorySort"
:disabled="false"
controls-position="">
</el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row
@ -245,13 +251,7 @@
</el-form-item>
</el-col>
<el-col :span=12>
<el-form-item label="自定义顺序" prop="categorySort">
<el-input-number
v-model="form.categorySort"
:disabled="false"
controls-position="">
</el-input-number>
</el-form-item>
</el-col>
@ -299,11 +299,13 @@
accept="image/*"
list-type="picture-card">
<i class="el-icon-plus"></i>
<div slot="tip" class="ms-form-tip">
只能上传1张图片
标签:<a href="http://doc.mingsoft.net/mcms/biao-qian/lan-mu-lie-biao-ms-channel.html"
target="_blank"><#noparse>{@ms:file field.typelitpic/}</#noparse></a><br/>
</div>
<template slot="tip">
<div class="ms-form-tip">
只能上传1张图片
标签:<a href="http://doc.mingsoft.net/mcms/biao-qian/lan-mu-lie-biao-ms-channel.html"
target="_blank"><#noparse>{@ms:file field.typelitpic/}</#noparse></a><br/>
</div>
</template>
</el-upload>
</el-form-item>
<el-form-item label="栏目小图" prop="categoryIco">
@ -321,15 +323,17 @@
accept="image/*"
list-type="picture-card">
<i class="el-icon-plus"></i>
<div slot="tip" class="ms-form-tip">
只能上传1张图片
标签:<a href="http://doc.mingsoft.net/mcms/biao-qian/lan-mu-lie-biao-ms-channel.html"
target="_blank"><#noparse>{@ms:file field.typeico/}</#noparse></a><br/>
</div>
<template slot="tip">
<div class="ms-form-tip">
只能上传1张图片
标签:<a href="http://doc.mingsoft.net/mcms/biao-qian/lan-mu-lie-biao-ms-channel.html"
target="_blank"><#noparse>{@ms:file field.typeico/}</#noparse></a><br/>
</div>
</template>
</el-upload>
</el-form-item>
</el-form>
<div :id="'model'+index" v-else></div>
</el-tab-pane>
</el-tabs>
</el-scrollbar>
@ -658,6 +662,7 @@
});
},
//获取当前分类
get: function (id) {
var that = this;
@ -828,10 +833,12 @@
title: '加载中...',
name: 'custom-name'
});
},
},
created: function () {
this.queryColumnContentModelList();
this.queryCategoryModelList();
this.getTree();
@ -840,6 +847,7 @@
this.categoryFlagOptionsGet();
this.form.id = ms.util.getParameter("id");
this.form.childId = ms.util.getParameter("childId");// 判断是否增加子栏目
this.form.categoryId = '0';
// 判断三种状态,默认为新增状态
this.categoryTypeDisabled = false;// 控制栏目分类是否可编辑
if (this.form.id != undefined && (this.form.childId == undefined || this.form.childId == "undefined")) {
@ -852,13 +860,11 @@
this.form.categoryId = this.form.childId;
}
}
});
</script>
<style>
.el-select {
width: 100%;
}
</style>
</style>

@ -124,7 +124,7 @@
"label": "列表"
}, {
"value": "2",
"label": "封面"
"label": "单篇"
}, {
"value": "3",
"label": "链接"

@ -13,14 +13,14 @@
<el-tooltip class="item" effect="dark" :content="form.id" placement="top-start">
<span v-if="form.id && categoryType=='2'" style="float: left; max-width:calc(30% - 40px);" class="header-info">编号:{{form.id}}</span>
</el-tooltip>
<el-button v-if="form.id && categoryType=='2'" type="text" style="float: left" icon="el-icon-document-copy" circle :data-clipboard-text="form.id" @click="copyString()" class="copyBtn"></el-button>
<el-button v-if="form.id && categoryType=='2'" type="text" link style="float: left" icon="el-icon-document-copy" circle :data-clipboard-text="form.id" @click="copyString()" class="copyBtn"></el-button>
</el-col>
<el-col :xs=12 :sm=10 :md=8 :lg=6 :xl=6 class="ms-tr">
<@shiro.hasPermission name="cms:content:save">
<el-button type="primary" icon="iconfont icon-baocun" size="mini" @click="save()" :loading="saveDisabled">保存
<el-button type="primary" class="iconfont icon-baocun" size="mini" @click="save()" :loading="saveDisabled">保存
</el-button>
</@shiro.hasPermission>
<el-button v-if="categoryType==1" size="mini" icon="iconfont icon-fanhui" plain onclick="javascript:history.go(-1)">返回
<el-button v-if="categoryType==1" size="mini" class="iconfont icon-fanhui" plain onclick="javascript:history.go(-1)">返回
</el-button>
<el-button v-if="categoryType==2" size="mini" type="danger" icon="el-icon-delete" @click="del()">删除
</el-button>
@ -225,14 +225,16 @@
accept="image/*"
list-type="picture-card">
<i class="el-icon-plus"></i>
<div slot="tip" class="ms-form-tip">
标签:<a href="http://doc.mingsoft.net/mcms/biao-qian/wen-zhang-lie-biao-ms-arclist.html" target="_blank">${'{@ms:file field.litpic/}'}</a><br/>
最多可上传10张图片,文章缩略图,支持jpg格式;多图情况下,{@ms:file field.litpic/}会只取第一张缩略图,其他用法参考文档arclist标签
</div>
<template slot="tip">
<div class="ms-form-tip">
标签:<a href="http://doc.mingsoft.net/mcms/biao-qian/wen-zhang-lie-biao-ms-arclist.html" target="_blank">${'{@ms:file field.litpic/}'}</a><br/>
最多可上传10张图片,文章缩略图,支持jpg格式;多图情况下,{@ms:file field.litpic/}会只取第一张缩略图,其他用法参考文档arclist标签
</div>
</template>
</el-upload>
</el-form-item>
</el-col>
<el-col span=12>
<el-col :span=12>
<el-form-item label="文章标签" prop="contentTags">
<el-select v-model="form.contentTags"
:style="{width: '100%'}"
@ -311,7 +313,19 @@
title: '文章编辑',
name: 'form'
}],
editorConfig: ms.editorConfig,
editorConfig: {
imageScaleEnabled :true,
autoHeightEnabled: true,
autoFloatEnabled: false,
scaleEnabled: true,
compressSide:0,
maxImageSideLength:1000,
maximumWords: 2000,
initialFrameWidth: '100%',
initialFrameHeight: 400,
serverUrl: ms.base + "/static/plugins/ueditor/1.4.3.3/jsp/editor.do?jsonConfig=%7BvideoUrlPrefix:\'\',fileManagerListPath:\'\',imageMaxSize:204800000,videoMaxSize:204800000,fileMaxSize:204800000,fileUrlPrefix:\'\',imageUrlPrefix:\'\',imagePathFormat:\'/${app.id}/editor/%7Btime%7D\',filePathFormat:\'/${app.id}/editor/%7Btime%7D\',videoPathFormat:\'/${app.id}/editor/%7Btime%7D\'%7D",
UEDITOR_HOME_URL: ms.base + '/static/plugins/ueditor/1.4.3.3/'
},
contentCategoryIdOptions: [],
returnIsShow: true,
type: '',
@ -675,7 +689,7 @@
}
});
},
//获取contentType数据源
//获取contentTag数据源
contentTagsOptionsGet: function () {
var that = this;
ms.http.get(ms.base + '/mdiy/dict/list.do', {

@ -22,9 +22,11 @@
:props="defaultProps"
@node-click="handleNodeClick"
style="padding: 10px;height: 100%;">
<span class="custom-tree-node" slot-scope="{ node, data }" >
<span :style="data.categoryType == '3' ? 'color: #dcdfe6' : ''" :title="data.categoryTitle">{{ data.categoryTitle }}</span>
</span>
<template slot-scope="{ node, data }" >
<span class="custom-tree-node" >
<span :style="data.categoryType == '3' ? 'color: #dcdfe6' : ''" :title="data.categoryTitle">{{ data.categoryTitle }}</span>
</span>
</template>
</el-tree>
</el-scrollbar>
</div>

@ -417,7 +417,11 @@
});
if (data && data.categoryPath) {
// row.url /html/web/categoryPath/文章id.html categoryPath做占位符
path = row.url.replace("categoryPath",data.categoryPath);
if (data.categoryType === "2"){
path = row.url.replace("categoryPath/"+row.id,data.categoryPinyin+"/index");
}else {
path = row.url.replace("categoryPath",data.categoryPath);
}
}else {
path = row.url;
}

@ -56,7 +56,7 @@
<div class="class-13 panel" >
<div class="class-14" >
<el-form-item label="文章栏目">
<ms-tree-select v-model="contentSection"
<ms-tree-select v-model:value="contentSection"
:props="{value: 'id',label: 'categoryTitle',children: 'children'}"
:options="treeList" :style="{width:'100%'}"
placeholder="请选择文章栏目">
@ -99,7 +99,7 @@
<div class="class-23 panel" >
<div class="class-24" >
<el-form-item label="生成栏目">
<ms-tree-select v-model="section"
<ms-tree-select v-model:value="section"
:props="{value: 'id',label: 'categoryTitle',children: 'children'}"
:options="treeList" :style="{width:'100%'}"
placeholder="请选择文章栏目">

@ -0,0 +1,128 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>发布量统计</title>
<#include "../../include/head-file.ftl">
</head>
<body style="overflow: hidden">
<div id="index" v-cloak>
<div class="index-menu">
<el-form :inline="true" :model="form" class="demo-form-inline">
<el-form-item label="按年份查询">
<el-date-picker
v-model="form.year"
type="year"
placeholder="选择年"
format="yyyy"
value-format="yyyy">
</el-date-picker>
</el-form-item>
<el-form-item label="按时间查询">
<el-date-picker
v-model="timeRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="handleReset">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" style="width: 100%" >
<el-table-column
align="center"
prop="dept"
label="科室部门"
>
</el-table-column>
<el-table-column
prop="num"
align="center"
label="发布量"
>
</el-table-column>
</el-table>
<div class="page_box">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageCurrent"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
</body>
</html>
<script>
var indexVue = new Vue({
el: '#index',
data() {
return {
form:{},
timeRange:[],
tableData:[],
total:0,
pageSize:10,
pageCurrent:1
}
},
created() {
this.getData()
},
methods: {
handleSearch(){
console.log('form ===>',this.form)
},
handleReset(){
this.form = {}
this.timeRange = []
},
getData(){
this.tableData = [
{dept:'秘书科',num:110},
{dept:'政工科',num:105},
];
this.total = this.tableData.length
},
handleSizeChange(val){
this.pageSize = val
this.getData()
},
handleCurrentChange(val){
this.pageCurrent = val
this.getData()
},
},
})
</script>
<style>
#index .index-menu {
height: 100vh;
min-height: 100vh;
min-width: 140px;
}
.page_box{
width: 100%;
padding: 30px 0;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
bottom: 0;
border-top: 1px solid #ccc;
}
</style>

@ -0,0 +1,143 @@
<!DOCTYPE html>
<html>
<head>
<title>发布量统计</title>
<#include "../../include/head-file.ftl">
</head>
<body>
<div id="form" v-loading="loading" v-cloak>
<el-header class="ms-header ms-tr" height="50px">
<el-button type="primary" class="iconfont icon-baocun" size="mini" @click="save()" :loading="saveDisabled">保存</el-button>
<el-button size="mini" class="iconfont icon-fanhui" plain onclick="javascript:history.go(-1)">返回</el-button>
</el-header>
<el-main class="ms-container">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="right" size="small">
<el-row
:gutter="0"
justify="start" align="top">
<el-col span="12">
<!--按年份查询-->
<el-form-item label="按年份查询" prop="perYear">
<el-date-picker
v-model="form.perYear"
placeholder="请选择按年份查询" :readonly="false"
:disabled="false"
:editable="true"
:clearable="true"
value-format="yyyy"
:style="{width:'100%'}"
type="date">
</el-date-picker>
</el-form-item>
</el-col>
<el-col span="12">
</el-col>
</el-row>
</el-form>
</el-main>
</div>
</body>
</html>
<script>
var formVue = new Vue({
el: '#form',
data:function() {
return {
loading:false,
saveDisabled: false,
//表单数据
form: {
//按年份查询
perYear:"",
},
rules:{
},
}
},
watch:{
},
components:{
},
computed:{
},
methods: {
save:function() {
var that = this;
var url = ms.manager + "/statistics/publishList/save.do"
if (that.form.id > 0) {
url = ms.manager + "/statistics/publishList/update.do";
}
this.$refs.form.validate(function(valid) {
if (valid) {
that.saveDisabled = true;
var form = JSON.parse(JSON.stringify(that.form));
ms.http.post(url, form).then(function (res) {
if (res.result) {
that.$notify({
title: "成功",
message: "保存成功",
type: 'success'
});
ms.util.openSystemUrl("/statistics/publishList/index.do");
} else {
that.$notify({
title: "错误",
message: res.msg,
type: 'warning'
});
}
that.saveDisabled = false;
}).catch(function (err) {
console.err(err);
that.saveDisabled = false;
});
} else {
return false;
}
})
},
//获取当前发布量统计
get:function(id) {
var that = this;
this.loading = true
ms.http.get(ms.manager + "/statistics/publishList/get.do", {"id":id}).then(function (res) {
that.loading = false
if(res.result&&res.data) {
that.form = res.data;
}
});
},
//按年份查询日期格式化
perYearFormat:function(row, column, cellValue, index){
return ms.util.date.fmt(new Date(row.PER_YEAR),'yyyy');
},
},
created:function() {
var that = this;
this.form.id = ms.util.getParameter("id");
if (this.form.id) {
this.get(this.form.id);
}
}
});
</script>
<style>
</style>

@ -0,0 +1,128 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>发布量统计</title>
<#include "../../include/head-file.ftl">
</head>
<body style="overflow: hidden">
<div id="index" v-cloak>
<div class="index-menu">
<el-form :inline="true" :model="form" class="demo-form-inline">
<el-form-item label="按年份查询">
<el-date-picker
v-model="form.year"
type="year"
placeholder="选择年"
format="yyyy"
value-format="yyyy">
</el-date-picker>
</el-form-item>
<el-form-item label="按时间查询">
<el-date-picker
v-model="timeRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="handleReset">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" style="width: 100%" >
<el-table-column
align="center"
prop="dept"
label="科室部门"
>
</el-table-column>
<el-table-column
prop="num"
align="center"
label="发布量"
>
</el-table-column>
</el-table>
<div class="page_box">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageCurrent"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
</body>
</html>
<script>
var indexVue = new Vue({
el: '#index',
data() {
return {
form:{},
timeRange:[],
tableData:[],
total:0,
pageSize:10,
pageCurrent:1
}
},
created() {
this.getData()
},
methods: {
handleSearch(){
console.log('form ===>',this.form)
},
handleReset(){
this.form = {}
this.timeRange = []
},
getData(){
this.tableData = [
{dept:'秘书科',num:110},
{dept:'政工科',num:105},
];
this.total = this.tableData.length
},
handleSizeChange(val){
this.pageSize = val
this.getData()
},
handleCurrentChange(val){
this.pageCurrent = val
this.getData()
},
},
})
</script>
<style>
#index .index-menu {
height: 100vh;
min-height: 100vh;
min-width: 140px;
}
.page_box{
width: 100%;
padding: 30px 0;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
bottom: 0;
border-top: 1px solid #ccc;
}
</style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 KiB

@ -0,0 +1,9 @@
var en_US ={
form:{
grid171081208000060549:{
text:'栅格布局',
placeholder:'',
help:'',
},
}
}

@ -0,0 +1,10 @@
var zh_CN ={
form:{
grid171081208000060549:{
text:'栅格布局',
placeholder:'',
help:'',
},
}
}

@ -282,7 +282,7 @@
.about_x img {
margin-bottom: 15px;
max-width: 100%;
height: auto !important;
height: auto;
}
.about_x .show_t {
line-height: 36px;

@ -0,0 +1,79 @@
.header_box{
height:500px;
background:#efefef;
padding-top: 15px;
}
.header_box .top_header{
width:100%;
height: 32px;
background-color: rgb(237, 238, 245);
}
.header_box .top_header .top_header_box{
width:96%;
height:100%;
max-width:1300px;
margin:0 auto;
display: flex;
justify-content: space-between;
}
.header_box .top_header .left_top{
width: 50%;
height: 100%;
font-size: 16px;
display: flex;
align-items: center;
}
.header_box .top_header .right{
justify-content: end;
}
.header_box .top_header .left_top .wea_box{
display: flex;
}
.header_box .top_header .login_box{
margin-left:10%;
}
.header_box .center_header{
height: 75%;
width: 96%;
margin: 0 auto;
max-width: 1300px;
}
.header_box .center_header .top_cen{
width: 100%;
height: 70%;
display: flex;
align-items: center;
}
.header_box .center_header .bot_cen{
width: 100%;
height: 30%;
}
.header_box .center_header .bot_cen .search_cen{
width: 100%;
height: 60%;
display: flex;
align-items: center;
}
.header_box .center_header .bot_cen .search_cen form{
width: 100%;
display: flex;
}
.header_box .center_header .bot_cen .search_cen form .input1{
width: 50%;
height: 45px;
padding: 0;
margin: 0;
border: none;
}
.header_box .center_header .bot_cen .search_cen form .bnts{
width: 100px;
height: 46px;
background: #15396d;
border: none;
color: #fff;
font-size: 16px;
}
.header_box .bottom_header{
height: 18.5%;
}

@ -397,3 +397,416 @@
}
@media screen and (max-width:360px) {
}
/*车管要闻*/
.cg_news{
width: 100%;
}
.cg_news .top_news{
width: 96%;
display: flex;
margin: 0 auto;
align-items: center;
max-width: 1300px;
}
.cg_news .top_news .new_tag{
width: 112px;
height: 45px;
display: flex;
align-items: center;
justify-content: center;
background-color: #a4adb3;
border-radius: 5px;
margin-right: 15px;
color: #ffffff;
font-size:20px;
}
.cg_news .top_news .new_tit{
font-size: 48px;
font-weight: 600;
line-height: 78px;
}
.cg_news .center_news{
width: 96%;
max-width: 1300px;
display: flex;
margin: 45px auto;
}
.cg_news .center_news .slider_news{
width: 55%;
height:335px;
}
.cg_news .center_news .slider_news .swiper-container {
width: 100%;
height: 100%;
}
.swiper-slide {
text-align: center;
font-size: 18px;
background: #fff;
/* Center slide text vertically */
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
}
.slider_news .swiper-slide img{width:770px;height:335px;}
.slider-img .swiper-slide img{width:390px;height:536px;}
.zwdttpxw .swiper-slide img{width:1064px;height:554px;}
.swiper-slide>span {
display: block;
position: absolute;
text-align: left;
width: 100%;
left: 0px;
bottom: 0px;
height: 35px;
line-height: 35px;
padding: 0px;
background: rgba(0,0,0,0.5);
COLOR: #fff;}
.swiper-slide>span a{ CURSOR: pointer;
padding-left:12px;
COLOR: #fff;}
.swiper-container-horizontal>.swiper-pagination-bullets{
width: auto;
left: auto;
right: 5px;
bottom: 3px;
}
.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{border-radius:0px;}
.swiper-container-horizontal>.swiper-pagination-bullets{text-align:right;right:10px;width:auto;}
.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{background:#fff;opacity: 1;width:10px;height:10px;}
.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet-active{background:#f00;}
.cg_news .center_news .right_news{
width: 40%;
padding:0 2.5%;
}
.cg_news .center_news .right_news .right_tit{
font-size: 28px;
font-family: PingFangSC;
font-weight: 600;
line-height: 39px;
margin-bottom:20px;
}
.cg_news .center_news .right_news .right_ul_news li{
list-style: none;
color: rgba(0,0,0,1);
font-size: 18px;
font-family: PingFangSC;
font-weight: 400;
/* line-height: 35px; */
margin: 10px 0;
display: flex;
align-items: center;
justify-content: space-between;
}
/*通知公告*/
.notice_box{
width: 96%;
height: 58px;
max-width: 1300px;
display: flex;
margin: 0 auto;
}
.notice_box .left_notice{
width: 180px;
height: 100%;
display: flex;
background-color: #e3e3e3;
align-items: center;
justify-content: center
}
.notice_box .left_notice .notice_img{
width: 32px;
height: 32px;
}
.notice_box .left_notice .notice_tit{
font-size: 20px;
margin-left: 15px;
}
.notice_box .right_notice{
flex: 1;
background: #f1f1f1;
}
.notice_box .right_notice .notice_ul{
width: 100%;
height: 100%;
display: flex;
align-items: center;
list-style: none;
}
.notice_box .right_notice .notice_ul li{
list-style: none;
width: 50%;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
font-size: 22px;
}
.notice_box .right_notice .notice_ul li:first-child{
border-right: 1px solid black;
}
.notice_box .right_notice .notice_ul li span{
display: inline-block;
width: 5px;
height: 5px;
background: black;
border-radius: 50%;
margin-right: 10px;
}
/*新闻公告文章*/
.article_box{
width: 96%;
max-width: 1300px;
margin: 0 auto;
display: flex;
padding: 50px 0;
}
.article_box .article_ul{
display: flex;
flex-wrap: wrap;
width: 100%;
list-style: none;
margin: 0;
padding: 0;
}
.article_box .article_ul .article_con{
width: 24%;
height: 400px;
margin-right: 1.3%;
margin-bottom: 2%;
}
.article_box .article_ul .article_con:nth-child(4n+0){
margin-right: 0;
}
.article_box .article_con .top_arti{
display: flex;
justify-content: space-between;
width: 100%;
height: 15%;
align-items: center;
}
.article_box .article_con .bottom_arti{
width: 100%;
height: 85%;
border: 1px solid #bbbbbb;
}
.article_box .article_con .bottom_arti .bot_arti_ul .bot_arti_li{
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 15px;
}
.article_box .article_con .bottom_arti .bot_arti_ul .bot_arti_li div{
display: flex;
width: 80%;
font-size: 18px;
align-items: center;
}
.article_box .article_con .bottom_arti .bot_arti_ul .bot_arti_li div span{
width: 5px;
height: 5px;
background: black;
border-radius: 50%;
margin: 0 5px;
}
.article_box .article_con .bottom_arti .bot_arti_ul .bot_arti_li div a{
display: inline-block;
width: 93%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.article_box .article_con .bottom_arti .bot_arti_ul .bot_arti_li .fr{
font-size: 18px;
color: #bebebe;
}
/*车管动态*/
.dt_search{
width: 96%;
max-width: 1300px;
margin: 0 auto;
margin-top: 20px;
display: flex;
}
.dt_search .dt_left{
width: 75%;
height: 100%;
}
.dt_search .dt_left .dt_tit{
height: 60px;
line-height: 60px;
font-size: 22px;
}
.dt_search .dt_left .dt_con{
width: 100%;
}
.dt_search .dt_left .dt_con ul{
width: 100%;
list-style: none;
margin: 0;
padding: 0;
display: flex;
justify-content: space-between;
}
.dt_search .dt_left .dt_con ul li{
width: 32%;
height: 240px;
}
.dt_search .dt_left .dt_con ul li img{
width: 100%;
height: 200px;
}
.dt_search .dt_left .dt_con ul li .img_txt{
height: 40px;
line-height: 40px;
font-size:16px;
}
.dt_search .search_right{
width: 24%;
margin-left: 1%;
}
.dt_search .search_right .search_tit{
height: 60px;
line-height: 60px;
font-size: 22px;
}
.dt_search .search_right .search_bot{
width: 100%;
height: 240px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.dt_search .search_right .search_bot div{
width: 100%;
height: 70px;
background: #cecece;
}
/*岗位之星*/
.star_box {
width: 96%;
max-width: 1300px;
margin: 30px auto;
display: flex;
}
.star_box .left_star {
width: 24%;
}
.star_box .left_star .left_top_star {
width: 100%;
height: 50px;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 22px;
color: #9a9a9a;
}
.star_box .left_star .left_top_star .hover{
color: #333;
}
.star_box .left_star .left_bot_star {
width: 100%;
height: 400px;
background: green;
}
.swiper-star {
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
display: none;
}
.star_box .left_star .left_bot_star .dis{
display: block;
}
.star_box .right_star{
width: 70%;
height: 450px;
margin-left: 6%;
display: flex;
flex-direction: column;
}
.star_box .right_star .right_star_top{
width: 100%;
height: 45%;
}
.star_box .right_star .bottom{
height: 55%;
}
.star_box .right_star .right_star_top .rigth_top_tit{
width: 100%;
height: 60px;
line-height: 60px;
font-size: 22px;
display: flex;
align-items: center;
justify-content: space-between;
}
.star_box .right_star .right_star_top .right_top_con{
width: 100%;
height: 143px;
background: #efefef;
}
.star_box .right_star .right_star_top .bottom_con{
height: 187px;
}
.slider_star {
width: 100%;
height: 100%;
font-size: 50px;
text-align: center;
color: white;
}
.star_mask{
width: 100%;
position: absolute;
bottom: 0;
height: 50px;
background: gray;
font-size: 22px;
display: flex;
align-items: center;
justify-content: space-around;
}
/*车管风采*/
.cgfc_box{
width: 96%;
max-width: 1300px;
margin: 30px auto;
}
.cgfc_box .top_cgfc{
width: 100%;
height: 70px;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 22px;
}
.cgfc_box .bot_cgfc{
width: 100%;
height: 225px;
display: flex;
align-items: center;
justify-content: space-between;
}
.cgfc_box .bot_cgfc .bot_cgfc_con{
width: 24%;
height: 100%;
}

@ -0,0 +1,77 @@
.header-nav{
width: 100%;
height: 100%;
background-color: #15396d;
}
.header-nav ul{
width:96%;
max-width:1300px;
height: 100%;
margin: 0 auto;
list-style: none;
position: relative;
}
.header-nav ul li {
height: 96%;
cursor: pointer;
line-height:92px;
/* text-align: center;
font-weight: normal;
position: relative; */
display: inline-block;
border-top: 0;
transition: all 0.5s;
border-bottom: 0; /*width:120px; *//* position:relative; */
margin-right: 30px;
}
.header-nav ul li a {
color: #fff;
display: flex;
align-items: center;
justify-content: center;
text-decoration: none;
font-size:18px;
margin:0 15px 0 0;
}
.header-nav ul li:hover {
border-bottom: 4px solid #fff;
}
.son-cont{
width: 100%;
overflow: hidden;
position: absolute;
top: 71px;
background: rgba(32, 31, 31, 0.4);
transition: all 0.5s;
line-height: 60px;
z-index:120;
}
.header-nav ul .son-none{
width: 100%;
height: 0px;
position: absolute;
top: 93px;
left: 0;
background: rgba(32, 31, 31, 0.4);
transition: all 0.5s;
line-height: 60px;
z-index: 110;
}
.header-nav ul .son-none div{
display: flex;
justify-content: center;
align-items: center;
}
.header-nav ul li:hover .son-none{
height: 60px;
}
.header-nav ul li:hover .nav-a{
height: 60px;
transition: all 0.5s;
}
.nav-a {
display: block;
overflow: hidden;
height: 0;
}

@ -42,6 +42,43 @@ em, cite, th {
zoom: 1;
overflow: hidden;
}
.wrap .left_wrap{
width: 30%;
align-items: center;
font-size: 22px;
line-height: 50px;
color:#9a9a9a;
}
.wrap .left_wrap .active_tit{
color:#333;
}
.wrap .yw_lmcon{
width:30%;
height:536px;
}
.wrap .yw_lmcon .bxslider_img {
width:100%;
height:100%;
}
.wrap .yw_lmcon .slider-img{
margin: 0 auto;
position: relative;
overflow: hidden;
list-style: none;
padding: 0;
z-index: 1;
}
.wrap .yw_lmcon .slider-img .slider-pagination{
margin: 0 auto;
position: relative;
overflow: hidden;
list-style: none;
padding: 0;
z-index: 1;
}
.wrap .yw_lmcon .dis{
display:block;
}
.wrap2 {
clear: both;
width: 96%;
@ -117,11 +154,17 @@ em, cite, th {
.header-v1 {
width: 100%;
position: fixed; /*overflow:hidden; */
height: 100px;
height: 600px;
z-index: 10;
background-color: #090a0c;
box-shadow: 0 1px 10px rgba(0, 0, 0, 0.15);
}
.header-v1 .top_con{
width: 100%;
height: 32px;
background: #e5e5e5;
margin-top: 15px;
}
.nav-hide .header-v1 {
height: 80px;
}
@ -654,7 +697,6 @@ em, cite, th {
color: #8f8f8f;
font-size: 12px;
clear: both;
padding-top: 2%;
padding-bottom: 2%;
}
.f_bg_div {

File diff suppressed because one or more lines are too long

@ -1,5 +1,21 @@
<!--尾部begin-->
<div class="f_bg">
<div style="width:100%;height:50px;background: #efefef;margin-bottom: 2%;">
{ms:channel type="self" typeid=1764843613554843650} <!--顶级栏目-->
{ms:channel} <!--二级栏目-->
<!--<div> ${field.title}</div><br>-->
<select name="country" onchange="javascript:if(this.options[this.selectedIndex].value!='#')window.open(this.options[this.selectedIndex].value);this.selectedIndex=0">
<option selected="selected">全国公安网站导航</option>
{ms:arclist typeid=1764843835752292354}<!--二级栏目下的文章 -->
<option value=${field.outlink}> ${field.title}</option>
{/ms:arclist}
</select>
{/ms:channel}
{/ms:channel}
</div>
<div class="f_bg_div">
{ms:channel type='nav' flag='n' size='4'}
<div class="links">

@ -1,76 +1,79 @@
<!--头部begin-->
<div class="header-v1">
<!-- S top-main -->
<div class="top-main">
<div class="logo1">
<a href="/"><img src="{@ms:file global.logo/}" alt="CMS,免费CMS,免费开源Java CMS,CMS系统,Java CMS,CMS内容管理系统,企业CMS,HTML网页模板,CMS模板,CMS源码,网站源码,信创系统软件,安可系统,网站建设,模板网站,建站模板,建站工具,建站平台,建站工具"/></a>
</div>
<div class="top_search"><em></em>
<div class="search_con">
<form name="formsearch" action="/mcms/search.do" method="post">
<input class="input1" type="text" name="content_title" id="p" placeholder="搜索" value="${search.content_title}">
<input type="submit" class="bnts">
</form>
<script src="/{ms:global.style/}js/vue.js"></script>
<script src="/{ms:global.style/}js/moment.js"></script>
<script src="https://unpkg.com/axios@1.1.2/dist/axios.min.js"></script>
<link rel="stylesheet" href="/{ms:global.style/}css/header.css">
<link rel="stylesheet" href="/{ms:global.style/}css/public.css">
<div id="header" class="header_box">
<div class="top_header">
<div class="top_header_box">
<div class="left_top">
<p>欢迎来到青岛市公安局交通警察支队车辆管理所!</p>
</div>
<div class="left_top right">
<div class="wea_box">
<div>{{time}}</div>
<div style="margin:0 5px 0 5px;">{{weather}}</div>
<div>{{temp}}℃</div>
</div>
<div class="login_box">登录个人中心</div>
</div>
</div>
</div>
</div>
<div class="top-main-content">
<!-- S nav -->
<div class="navBar">
<ul class="nav clearfix">
<li class="m <#assign typeid=field.typeid><#if typeid==''>on</#if>">
<h3><a href="/" title="首页"><span data-title="首页">首页</span></a></h3>
</li>
<!--定义变量typeid、ids,通过这两个变量判断是否选中-->
<#assign typeid=field.typeid>
<#assign ids=field.parentids>
{ms:channel type='nav' flag='n' orderby='sort'}
<#if field.childsize &gt; 0>
<li class="m <#if field.typeid == typeid || (ids?has_content && ids?split(",")?seq_contains(field.typeid.toString()))>on</#if>">
<h3>
<a href="<#if field.type==3>{ms:global.html/}${field.typeurl}<#else>{ms:global.html/}${field.typelink}</#if>">
<span data-title="${field.typetitle}">${field.typetitle}</span>
</a>
</h3>
<div class="sub">
<ul>
{ms:channel}
<li>
<a href="<#if field.type==3>${field.typeurl}<#else>{ms:global.html/}${field.typelink}</#if>" target="_blank">${field.typetitle}</a>
</li>
{/ms:channel}
</ul>
</div>
</li>
<#else>
<li class="m <#if field.typeid == typeid || (ids?has_content && ids?split(",")?seq_contains(field.typeid.toString()))>on</#if>">
<h3>
<a href="<#if field.type==3>{ms:global.html/}${field.typeurl}<#else>{ms:global.html/}${field.typelink}</#if>">
<span data-title="${field.typetitle}">${field.typetitle}</span>
</a>
</h3>
</li>
</#if>
{/ms:channel}
</ul>
<div class="center_header">
<div class="top_cen">
<div>
<img src="/{ms:global.style/}images/logo.jpg" alt="">
</div>
</div>
<div class="bot_cen">
<div class="search_cen">
<form name="formsearch" action="/mcms/search.do" method="post">
<input class="input1" type="text" name="content_title" id="p" placeholder="搜索" value="${search.content_title}">
<input type="submit" class="bnts">
</form>
</div>
</div>
</div>
<script type="text/javascript">
jQuery(".nav").slide({
type: "menu",
titCell: ".m",
targetCell: ".sub",
effect: "slideDown",
delayTime: 300,
triggerTime: 100,
returnDefault: true
});
</script>
<!-- E nav-->
</div>
<div class="bottom_header">
<div class="header-nav">
<ul>
<li>
<a href="/" title="门户首页">
<span class="b <#assign typeid=field.typeid><#if typeid==''>r</#if>">门户首页</span>
</a>
</li>
<!--定义变量typeid、ids,通过这两个变量判断是否选中-->
<#assign typeid=field.typeid>
<#assign parentid=field.parentid>
<#assign ids=field.parentids>
{ms:channel type='nav' flag='n' orderby='sort'}
<#assign typeleaf=field.typeleaf>
<li>
<a href="<#if typeleaf == 0><#else>{ms:global.html/}${field.typelink}</#if>">
<span data-title="${field.typetitle}"
class="b <#if field.typeid == typeid || field.typeid==parentid >r</#if>">${field.typetitle}</span>
<div class="son-none<#if typeleaf == 1>son-cont</#if> ">
<div>
{ms:channel type="son"}
<a class="nav-a" href="{ms:global.html/}${field.typelink}">
${field.typetitle}
</a>
{/ms:channel}
</div>
</div>
</a>
</li>
{/ms:channel}
</ul>
</div>
<!-- E top-main -->
<div class="c_l"></div>
</div>
<!-- S touch-top-wrapper -->
</div>
</div>
<!-- E touch-top-wrapper -->
<div class="touch-top">
<div class="touch-top-wrapper clearfix">
<div class="touch-logo" skinobjectzone="HtmlLogo_1514">
@ -156,7 +159,31 @@
<!-- E touch-top -->
</div>
<div class="touch_bg">&nbsp;</div>
<!-- E touch-top-wrapper -->
<div class="blank_h">&nbsp;</div>
<script src="/{ms:global.style/}js/public.js">//</script>
<!-- E touch-top-wrapper
<div class="blank_h">&nbsp;</div>-->
<script>
new Vue({
el:"#header",
data() {
return {
time:"",
weather:'',
temp:''
}
},
created() {
this.time= moment().format('yyyy-MM-DD')
this.getWeather()
},
methods: {
getWeather(){
axios.get('https://devapi.qweather.com/v7/weather/now?location=101120201&key=da5448d7e24e42659c86656047911980').then(res =>{
console.log('res ====>',res)
this.weather = res.data.now.text
this.temp = res.data.now.temp
})
}
},
})
</script>
<!--头部end-->

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

@ -13,6 +13,7 @@
<meta name="applicable-device" content="pc,mobile"/>
<link href="/favicon.ico" rel="shortcut icon"/>
<link href="/{ms:global.style/}css/style.css" rel="stylesheet"/>
<link href="/{ms:global.style/}css/swiper.min.css" rel="stylesheet"/>
<link href="/{ms:global.style/}css/index.css" rel="stylesheet"/>
<script src="/{ms:global.style/}js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="/{ms:global.style/}js/jquery.superslide.2.1.1.js">//pc</script>
@ -20,6 +21,7 @@
<script src="/{ms:global.style/}js/anim.js">//</script>
<script src="/{ms:global.style/}js/owl.carousel.js"></script>
<script type="text/javascript" src="/{ms:global.style/}js/basic.js"></script>
<script src="/{ms:global.style/}/js/swiper.min.js"></script>
</head>
<body>
<#include "header.htm" />
@ -27,8 +29,8 @@
<div id="slider">
<ul class="bxslider">
{ms:arclist typeid="1666653706550321162"}
<li style="background-color:#1b1b1b;">
<div class="carousel-img">
<li>
<div class="carousel-img" style="width: 96%;margin: 0 auto;max-width: 1300px;padding: 30px 0;">
<a href="<#if field.source!=''>${field.source}<#else>javascript:;</#if>" target="_blank">
<img src="{@ms:file field.litpic/}" width="100%" alt="CMS,免费CMS,免费开源Java CMS,CMS系统,Java CMS,CMS内容管理系统,企业CMS,HTML网页模板,CMS模板,CMS源码,网站源码,信创系统软件,安可系统,网站建设,模板网站,建站模板,建站工具,建站平台,建站工具" class="oimg"/>
</a>
@ -37,7 +39,7 @@
{/ms:arclist}
</ul>
</div>
<script>
<!--<script>
var slider = $('.bxslider').bxSlider({
mode: 'horizontal',/*fade,vertical*/
controls: true,
@ -49,10 +51,158 @@
$(window).resize(function () {
slider.reloadSlider();
});
</script>
</script>-->
<!--轮显end-->
<!-- 车管要闻-->
<div class="cg_news">
<div class="top_news">
<div class="swiper-news" style="width:100%;overflow:hidden;">
<div class="swiper-wrapper news-wrapper">
{ms:arclist typeid=1765306882908344322 flag="h"}
<div class="swiper-slide" style="justify-content: flex-start;">
<!--<a href="{ms:global.url/}${field.link}" target="_blank">
<img src='{@ms:file field.litpic/}' alt="" />
</a>
<span>${field.title}</span> -->
<div class="new_tag">头条</div>
<div class="new_tit">${field.title}</div>
</div>
{/ms:arclist}
</div>
</div>
<script>
var newswiper = new Swiper('.swiper-news', {
spaceBetween: 30,
centeredSlides: true,
loop:true,
autoplay: {
delay: 6000,
disableOnInteraction: false,
},
});
</script>
</div>
<div class="center_news">
<div class="slider_news">
<div class="swiper-container">
<div id="news_wrap" class="swiper-wrapper">
{ms:arclist typeid=1765306882908344322 orderby="date"}
<#if field.flag != 'h'>
<div class="swiper-slide">
<a href="{ms:global.url/}${field.link}" target="_blank">
<img src='{@ms:file field.litpic/}' alt="" />
</a>
<span>${field.title} ${field.flag}</span>
</div>
</#if>
{/ms:arclist}
</div>
<div class="swiper-pagination"></div>
</div>
</div>
<script>
var swiper = new Swiper('.swiper-container', {
spaceBetween: 30,
centeredSlides: true,
loop:true,
autoplay: {
delay: 6000,
disableOnInteraction: false,
},
pagination: {
el: '.swiper-pagination',
clickable: true,
},
});
var element = document.getElementById("news_wrap");
var childElementCount = element.children.length;
console.log("子元素数量:", childElementCount);
</script>
<div class="right_news">
{ms:channel typeid=1765306882908344322 type='self'}
<div class="right_tit"><a href="{ms:global.url/}${field.typelink}">${field.typetitle}</a></div>
{/ms:channel}
<ul class="right_ul_news">
{ms:arclist typeid=1765306882908344322}<li>
<a href="{ms:global.url/}${field.link}" target="_blank">${field.title}</a>
<span class="fr">${field.date?string("MM-dd")}</span>
</li>{/ms:arclist}
</ul>
</div>
</div>
</div>
<!--通知公告-->
<div class="notice_box">
<div class="left_notice">
<div class="notice_img"><img src="/{ms:global.style/}images/notice.png" alt=""></div>
<div class="notice_tit">通知公告</div>
</div>
<div class="right_notice">
<ul class="notice_ul">
{ms:arclist size=2 typeid="1767087429860007938"}
<li class="item">
<span></span>
<a href="{ms:global.url/}${field.link}" target="_blank">${field.title}</a>
</li>
{/ms:arclist}
</ul>
</div>
</div>
<!-- 新闻公告文章-->
<div class="article_box">
<ul class="article_ul">
{ms:channel flag='news'}
<li class="article_con">
<div class="top_arti">
<div style="font-size:26px;">${field.typetitle} </div>
<div>更多</div>
</div>
<div class="bottom_arti">
<ul class="bot_arti_ul">
{ms:arclist size=5 typeid=field.id}
<li class="bot_arti_li">
<div>
<span></span>
<a href="{ms:global.url/}${field.link}" target="_blank">${field.title}</a>
</div>
<span class="fr">${field.date?string("MM-dd")}</span>
</li>
{/ms:arclist}
<ul>
</div>
</li>
{/ms:channel}
</ul>
</div>
<!--车管动态-->
<div class="dt_search">
<div class="dt_left">
<div class="dt_tit">车管动态</div>
<div class="dt_con">
<ul>
{ms:arclist typeid="1767079741717553153"}
<li>
<img src="{@ms:file field.litpic/}" alt="">
<div class="img_txt">${field.title}</div>
</li>
{/ms:arclist}
</ul>
</div>
</div>
<div class="search_right">
<div class="search_tit">信息查询与应用</div>
<div class="search_bot">
<div></div>
</div>
</div>
</div>
<!--flash start-->
<div class="flash_div">
<!--<div class="flash_div">
<div id="owl-flash" class="owl-carousel">
{ms:arclist flag='f' size=5 typeid="1666653706550321162"}
<div class="item">
@ -62,9 +212,9 @@
</div>
{/ms:arclist}
</div>
</div>
</div>-->
<!--flash end-->
<div class="i_product_bg">
<!--<div class="i_product_bg">
<div class="wrap2">
{ms:channel type='self' typeid="1666653706550321152"}
<div class="i_title anim anim-1">
@ -88,8 +238,8 @@
</ul>
</div>
</div>
</div>
<div class="wrap2">
</div>-->
<!--<div class="wrap2">
{ms:channel type='self' typeid="1666653706550321163"}
<div class="i_title anim anim-1">
<h2 class="f41">${field.typetitle}</h2>
@ -113,8 +263,8 @@
{/ms:channel}
</ul>
</div>
</div>
<div class="i_case_bg">
</div>-->
<!--<div class="i_case_bg">
<div class="wrap2">
{ms:channel type='self' typeid="1666653706550321164"}
<div class="i_title anim anim-1">
@ -157,7 +307,192 @@
{/ms:arclist}
</ul>
</div>
</div>
</div>-->
<!--岗位之星-->
<div class="star_box">
<div class="left_star">
<div class="left_top_star">
<div class="hover">月度岗位之星</div>
<div>季度岗位之星</div>
</div>
<div class="left_bot_star">
<div class="swiper-star swiper swiperOne dis">
<!--自定义新增class:swiperOne js代码中使用类名-->
<div class="swiper-wrapper wrapper_star">
<!--<div class="swiper-slide slider_star blue-slide">
slider1
<div class="star_mask">
<div>张三</div>
<div>检验科</div>
</div>
</div>-->
{ms:arclist typeid=1764908960010031106}
<div class="swiper-slide slider_star blue-slide">
<div style="width:100%;height:100%;">
<img style="width:100%;height:100%;" src="{@ms:file field.litpic/}"/>
</div>
<div class="star_mask">
<div>${field.title}</div>
<div>${field.shorttitle}</div>
</div>
</div>
{/ms:arclist}
</div>
<!-- 如果需要导航按钮 -->
<div class="swiper-button-prev pre-btn"></div>
<div class="swiper-button-next next-btn"></div>
</div>
<!--自定义新增class:swiperTwo js代码中使用类名-->
<div class="swiper-star swiper swiperTwo">
<div class="swiper-wrapper wrapper_star">
{ms:arclist typeid=1764909059125628930}
<div class="swiper-slide slider_star blue-slide">
<div style="width:100%;height:100%;">
<img style="width:100%;height:100%;" src="{@ms:file field.litpic/}"/>
</div>
<div class="star_mask">
<div>${field.title}</div>
<div>${field.shorttitle}</div>
</div>
</div>
{/ms:arclist}
</div>
<!-- 如果需要导航按钮 -->
<div class="swiper-button-prev pre-btn-two"></div>
<div class="swiper-button-next next-btn-two"></div>
</div>
<!--自定义新增class:swpTwo js代码中使用类名-->
</div>
</div>
<div class="right_star">
<div class="right_star_top">
<div class="rigth_top_tit">
<div>今日值班</div>
<div style="color: #9a9a9a;font-size:16px;">更多</div>
</div>
<div class="right_top_con">
<div></div>
<div></div>
</div>
</div>
<div class="right_star_top bottom">
<div class="rigth_top_tit">
<div>发布量统计</div>
<div style="color: #9a9a9a;font-size:16px;">数据统计截止2024年3月12日</div>
</div>
<div class="right_top_con bottom_con"></div>
</div>
</div>
<!--<div id="bxslider_img" class="slider-img dis">
<ul class="bxslider_img">
{ms:arclist typeid="1764908960010031106"}
<li style="background-color:#1b1b1b;">
<img src="{@ms:file field.litpic/}" width="100%" alt="CMS,免费CMS,免费开源Java CMS,CMS系统,Java CMS,CMS内容管理系统,企业CMS,HTML网页模板,CMS模板,CMS源码,网站源码,信创系统软件,安可系统,网站建设,模板网站,建站模板,建站工具,建站平台,建站工具" class="oimg"/>
</li>
{/ms:arclist}
</ul>
</div>
<div id="bxslider_img1" class="slider-img dis">
<ul class="bxslider_img1">
{ms:arclist typeid="1764909059125628930"}
<li style="background-color:#1b1b1b;">
<img src="{@ms:file field.litpic/}" width="100%" alt="CMS,免费CMS,免费开源Java CMS,CMS系统,Java CMS,CMS内容管理系统,企业CMS,HTML网页模板,CMS模板,CMS源码,网站源码,信创系统软件,安可系统,网站建设,模板网站,建站模板,建站工具,建站平台,建站工具" class="oimg"/>
</li>
{/ms:arclist}
</ul>
</div>-->
</div>
</div>
<script>
$(function(){
$('.left_star .left_top_star div').click(function () {
$(this).addClass('hover').siblings().removeClass('hover');
$(this)
.parents('.left_star')
.children('.left_bot_star')
.find('.swiper')
.eq($(this).index())
.addClass('dis')
.siblings()
.removeClass('dis');
});
});
var swiper = new Swiper('.swiperOne', {
autoplay:true,
loop:true,
observer:true,observeParents:true,
navigation: {
nextEl: '.pre-btn',
prevEl: '.next-btn',
},
});
var swiper2 = new Swiper('.swiperTwo', {
autoplay:true,
loop:true,
observer:true,observeParents:true,
navigation: {
nextEl: '.pre-btn-two',
prevEl: '.next-btn-two',
},
})
</script>
<div class="cgfc_box">
<div class="top_cgfc">
<div>车管所风采</div>
<div>更多</div>
</div>
<div class="bot_cgfc">
<div class="bot_cgfc_con"></div>
</div>
</div>
<!--<div class="wrap">
<div class="left_wrap">
{ms:channel type='self' typeid="1764908091197706242"}
<div class="top_title" style="width: 100%;display: flex;justify-content: space-around;">
{ms:channel}
<div class="title_name">${field.typetitle}</div>
{/ms:channel}
</div>
{/ms:channel}
</div>
<div class="block">
<div id="img_slider" class="dis" style="width:32%;height:500px">
<ul class="bxslider_img">
{ms:arclist typeid="1764908960010031106"}
<li style="background-color:#1b1b1b;">
<div class="carousel-img">
<img src="{@ms:file field.litpic/}" width="100%" alt="CMS,免费CMS,免费开源Java CMS,CMS系统,Java CMS,CMS内容管理系统,企业CMS,HTML网页模板,CMS模板,CMS源码,网站源码,信创系统软件,安可系统,网站建设,模板网站,建站模板,建站工具,建站平台,建站工具" class="oimg"/>
</div>
</li>
{/ms:arclist}
</ul>
</div>
<div id="img_slider" style="width:32%;height:500px">
<ul class="bxslider_img">
{ms:arclist typeid="1764908960010031106"}
<li style="background-color:#1b1b1b;">
<div class="carousel-img">
<img src="{@ms:file field.litpic/}" width="100%" alt="CMS,免费CMS,免费开源Java CMS,CMS系统,Java CMS,CMS内容管理系统,企业CMS,HTML网页模板,CMS模板,CMS源码,网站源码,信创系统软件,安可系统,网站建设,模板网站,建站模板,建站工具,建站平台,建站工具" class="oimg"/>
</div>
</li>
{/ms:arclist}
</ul>
</div>
</div>
<script>
var img_slider = $('.bxslider_img').bxSlider({
mode: 'horizontal',/*fade,vertical*/
controls: true,
speed: 500,
hideControlOnEnd: false,
pager: true,
auto: false,
});
$(window).resize(function () {
slider.reloadSlider();
});
</script>
</div>-->
<#include "footer.htm" />
<script language="javascript" src="/{ms:global.style/}js/foot.js"></script><!--尾部end-->
<script>

File diff suppressed because it is too large Load Diff

@ -2,6 +2,7 @@
$(".touch-toggle a").click(function(event){
var className = $(this).attr("data-drawer");
console.log('className ====>',className)
if( $("."+className).css('display') == 'none' ){

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -37,6 +37,35 @@
<div class="con_id">
<div>${field.content}</div>
</div>
<div>
<#if field.litpic && field.litpic!=''>
<#list field.litpic?eval as img>
<!--<img src="${img.path}"></img> -->
</#list>
</#if>
</div>
{ms:arclist tableName="MDIY_MODEL_NEWS"}
<div id="myList"></div>
{/ms:arclist}
<script>
var images = ${field.IMGS};
// 遍历对象数组
for (var i = 0; i < images.length; i++) {
var imgElement = document.createElement("img"); // 创建新的<img>元素
// 设置图片路径为当前对象的属性值
imgElement.src = images[i].response.data;
imgElement.style.width="400px"
imgElement.style.height="400px"
imgElement.style.margin="0 10px 0 0"
// 将<img>元素添加到页面上的指定位置(此处假设目标容器id为"container")
document.getElementById("myList").appendChild(imgElement);
}
</script>
<div class="prenext">上一篇:<a href="<#if pre.link !=''>{ms:global.html/}${pre.link}<#else>javascript:;</#if>">${pre.title}</a></div>
<div class="prenext">下一篇:<a href="<#if next.link !=''>{ms:global.html/}${next.link}<#else>javascript:;</#if>">${next.title}</a></div>
</div>

@ -54,6 +54,13 @@
<div class="con_id">
<div>${field.content}</div>
</div>
<div>
<#if field.litpic && field.litpic!=''>
<#list field.litpic?eval as img>
<img src="${img.path}"></img>
</#list>
</#if>
</div>
<div class="prenext">上一篇:<a href="<#if pre.link !=''>{ms:global.html/}${pre.link}<#else>javascript:;</#if>">${pre.title}</a>
</div>
<div class="prenext">下一篇:<a href="<#if next.link !=''>{ms:global.html/}${next.link}<#else>javascript:;</#if>">${next.title}</a>

Loading…
Cancel
Save