asd123a20 2 years ago
parent
commit
d7c51b3c56
64 changed files with 282 additions and 400 deletions
  1. 1 0
      package.json
  2. 0 1
      public/RuoYi-v3.8.0-brightgreen.svg
  3. 0 1
      public/apistatus.svg
  4. 0 0
      public/docs/.nojekyll
  5. 0 25
      public/docs/README.md
  6. 0 13
      public/docs/_coverpage.md
  7. 0 30
      public/docs/_media/icon.svg
  8. 0 8
      public/docs/_navbar.md
  9. 0 10
      public/docs/_sidebar.md
  10. 0 91
      public/docs/index.html
  11. 0 1
      public/docs/zh-cn/README.md
  12. 0 8
      public/docs/zh-cn/_navbar.md
  13. 0 3
      public/docs/zh-cn/_sidebar.md
  14. 0 22
      public/docs/内置功能.md
  15. 0 10
      public/docs/快速了解.md
  16. 0 25
      public/docs/技术选型.md
  17. 0 10
      public/docs/新增功能.md
  18. 0 9
      public/docs/系统需求.md
  19. BIN
      public/errorImg.jpg
  20. BIN
      public/favicon1.ico
  21. 0 2
      public/robots.txt
  22. BIN
      public/systemImg/分类管理.png
  23. BIN
      public/systemImg/博客详情.png
  24. BIN
      public/systemImg/后台首页1.png
  25. BIN
      public/systemImg/后台首页2.png
  26. BIN
      public/systemImg/图片预览.png
  27. BIN
      public/systemImg/文件管理.png
  28. BIN
      public/systemImg/文档详情.png
  29. BIN
      public/systemImg/文档首页.png
  30. BIN
      public/systemImg/文章新增修改.png
  31. BIN
      public/systemImg/文章管理.png
  32. BIN
      public/systemImg/标签管理.png
  33. BIN
      public/systemImg/留言.jpg
  34. BIN
      public/systemImg/留言管理.png
  35. BIN
      public/systemImg/移动端个人中心.png
  36. BIN
      public/systemImg/移动端个人资料.png
  37. BIN
      public/systemImg/移动端修改密码.png
  38. BIN
      public/systemImg/移动端留言.png
  39. BIN
      public/systemImg/移动端登录.png
  40. BIN
      public/systemImg/移动端详情文章.png
  41. BIN
      public/systemImg/移动端详情评论.png
  42. BIN
      public/systemImg/移动端随笔.png
  43. BIN
      public/systemImg/移动端首页.png
  44. BIN
      public/systemImg/评论.png
  45. BIN
      public/systemImg/评论管理.png
  46. BIN
      public/systemImg/资源列表.png
  47. BIN
      public/systemImg/随笔.png
  48. BIN
      public/systemImg/首页.png
  49. 0 1
      public/博客园-SmileToCode-brightgreen.svg
  50. BIN
      src/assets/images/profile.jpg
  51. BIN
      src/assets/images/wallhaven-dgojvj.webp
  52. BIN
      src/assets/images/wallhaven-j5y525.webp
  53. BIN
      src/assets/images/wallhaven-k9p8l6.webp
  54. 6 2
      src/components/cmsEditor/editoritem.vue
  55. 99 0
      src/components/cmsEditor/editoritem5.vue
  56. 2 0
      src/main.js
  57. 19 1
      src/views/activity/activitylog.vue
  58. 20 3
      src/views/activity/index.vue
  59. 8 8
      src/views/cms/backgroundImages.js
  60. 8 46
      src/views/cms/blog/index.vue
  61. 16 0
      src/views/community/dangyuan/index.vue
  62. 95 67
      src/views/community/log/index.vue
  63. 0 3
      src/views/community/realtime/index.vue
  64. 8 0
      src/views/community/xiachenganbu/index.vue

+ 1 - 0
package.json

@@ -38,6 +38,7 @@
   },
   "dependencies": {
     "@riophae/vue-treeselect": "0.4.0",
+    "@wangeditor/editor": "^5.1.22",
     "axios": "0.24.0",
     "clipboard": "2.0.8",
     "core-js": "3.19.1",

File diff suppressed because it is too large
+ 0 - 1
public/RuoYi-v3.8.0-brightgreen.svg


File diff suppressed because it is too large
+ 0 - 1
public/apistatus.svg


+ 0 - 0
public/docs/.nojekyll


+ 0 - 25
public/docs/README.md

@@ -1,25 +0,0 @@
-<p align="center">
-	<img alt="logo" src="../favicon.ico">
-</p>
-<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Blog</h1>
-<h4 align="center">基于RuoYi-Vue平台开发的博客网站</h4>
-<p align="center">
-<a target="_blank" href="https://www.cnblogs.com/Ning-Blog/">
-<img src="../博客园-SmileToCode-brightgreen.svg" ></img>
-</a>
-<a target="_blank" href="https://gitee.com/Ning310975876/ruo-yi-vue-blog/blob/master/LICENSE">
-<img src="../apistatus.svg"></img>
-</a>
-</p>
-
-
-# 介绍
-
-基于**RuoYi-Vue**前后端分离基础平台开发的**博客网站**。
-
-👍👍 感谢若依提供如此优秀的框架❤️❤️ 
-
-**RuoYi-Vue** 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。。
-
-
-

+ 0 - 13
public/docs/_coverpage.md

@@ -1,13 +0,0 @@
-<!-- _coverpage.md -->
-
-![logo](_media/icon.svg)
-
-# Blog <small>1.0</small>
-
-> 一个简单的博客网站。
-
-- 简单、轻便 (感谢 ruoyi 平台)
-
-[Gitee](https://gitee.com/Ning310975876/ruo-yi-vue-blog)
-[Get Started](#介绍)
-

File diff suppressed because it is too large
+ 0 - 30
public/docs/_media/icon.svg


+ 0 - 8
public/docs/_navbar.md

@@ -1,8 +0,0 @@
-<!-- _navbar.md -->
-
-* [🐮🐮 Ning's Blog](https://www.cnblogs.com/Ning-Blog/)
-* [❤️❤️ Ning专栏](https://gitee.com/Ning310975876)
-* Translations
-
-  * [:cn:  中文](/)
-  * [:us:  英文](/zh-cn/)

+ 0 - 10
public/docs/_sidebar.md

@@ -1,10 +0,0 @@
-<!-- docs/_sidebar.md -->
-
-
-* [介绍](README)
-* [快速了解](快速了解)
-* [系统需求](系统需求)
-* [技术选型](技术选型)
-* [内置功能](内置功能)
-* [新增功能](新增功能)
-

+ 0 - 91
public/docs/index.html

@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-  <meta charset="UTF-8">
-  <title>Document</title>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
-  <!-- 设置浏览器图标 -->
-  <link rel="icon" href="/favicon.ico" type="image/x-icon" />
-  <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-  <meta name="description" content="Description">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
-  <!-- 默认主题 -->
-  <!-- <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css"> -->
-  <link rel="stylesheet" href="//unpkg.com/docsify@4/lib/themes/vue.css">
-</head>
-
-<body>
-  <div id="app"></div>
-  <script>
-    window.$docsify = {
-      // 项目名称
-      name: 'Blog 文档',
-      // 仓库地址,点击右上角的Github章鱼猫头像会跳转到此地址
-      repo: 'https://gitee.com/Ning310975876/ruo-yi-vue-blog',
-      // 侧边栏支持,默认加载的是项目根目录下的_sidebar.md文件
-      loadSidebar: true,
-      // 导航栏支持,默认加载的是项目根目录下的_navbar.md文件
-      loadNavbar: true,
-      // 封面支持,默认加载的是项目根目录下的_coverpage.md文件
-      coverpage: true,
-      // 最大支持渲染的标题层级
-      maxLevel: 4,
-      // 自定义侧边栏后默认不会再生成目录,设置生成目录的最大层级,建议配置为1或者2
-      subMaxLevel: 2,
-      // 小屏设备下合并导航栏到侧边栏
-      mergeNavbar: true,
-      // 搜索配置
-      search: {
-        maxAge: 86400000,// 过期时间,单位毫秒,默认一天
-        // paths: auto,// 注意:仅适用于 paths: 'auto' 模式
-        placeholder: {
-          '/zh-cn/': 'Type to search',
-          '/': '搜索文档'
-        },
-        noData: '找不到结果',
-        depth: 4,
-        hideOtherSidebarContent: false,
-        namespace: 'docsify-demo',
-      },
-      //字数统计
-      count: {
-        countable: true,
-        fontsize: '0.9em',
-        color: 'rgb(90,90,90)',
-        language: 'chinese'
-      },
-      // 避免不必要的回退过程
-      // alias: {
-      //   '/.*/_sidebar.md': '/_sidebar.md'
-      // },
-    }
-  </script>
-  <!-- docsify的js依赖 -->
-  <!-- <script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script> -->
-  <script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
-  <!-- emoji表情支持 -->
-  <!-- <script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.min.js"></script> -->
-  <script src="//unpkg.com/docsify/lib/plugins/emoji.min.js"></script>
-  <!-- 图片放大缩小支持 -->
-  <!-- <script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.min.js"></script> -->
-  <script src="//unpkg.com/docsify/lib/plugins/zoom-image.min.js"></script>
-  <!-- 搜索功能支持 -->
-  <!-- <script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script> -->
-  <script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
-  <!-- 复制到剪贴板 -->
-  <!-- <script src="//cdn.jsdelivr.net/npm/docsify-copy-code"></script> -->
-  <script src="//unpkg.com/docsify-copy-code"></script>
-  <!-- 字数统计 -->
-  <script src="//unpkg.com/docsify-count/dist/countable.js"></script>
-  <!-- java语法高亮 -->
-  <!-- <script src="https://cdn.jsdelivr.net/npm/prismjs@1.22.0/components/prism-java.min.js"></script> -->
-  <script src="https://unpkg.com/prismjs@1.22.0/components/prism-java.min.js"></script>
-  <!-- emoji 插件 -->
-  <!-- <script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.min.js"></script> -->
-  <script src="//unpkg.com/docsify/lib/plugins/emoji.min.js"></script>
-  <!-- Docsify v4 -->
-  <!-- <script src="//cdn.jsdelivr.net/npm/docsify@4"></script> -->
-</body>
-
-</html>

+ 0 - 1
public/docs/zh-cn/README.md

@@ -1 +0,0 @@
-> Self translation.

+ 0 - 8
public/docs/zh-cn/_navbar.md

@@ -1,8 +0,0 @@
-<!-- _navbar.md -->
-
-* [🐮🐮 Ning's Blog](https://www.cnblogs.com/Ning-Blog/)
-* [❤️❤️ Ning专栏](https://gitee.com/Ning310975876)
-* Translations
-
-  * [:cn:  中文](/)
-  * [:us:  英文](/zh-cn/)

+ 0 - 3
public/docs/zh-cn/_sidebar.md

@@ -1,3 +0,0 @@
-<!-- docs/_sidebar.md -->
-
-* [one](zh-cn/)

+ 0 - 22
public/docs/内置功能.md

@@ -1,22 +0,0 @@
-<font size=8>**内置功能**</font>
-
-
-
-1.  用户管理:用户是系统操作者,该功能主要完成系统用户配置。
-2.  部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
-3.  岗位管理:配置系统用户所属担任职务。
-4.  菜单管理:配置系统菜单,操作权限,按钮权限标识等。
-5.  角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
-6.  字典管理:对系统中经常使用的一些较为固定的数据进行维护。
-7.  参数管理:对系统动态配置常用参数。
-8.  通知公告:系统通知公告信息发布维护。
-9.  操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
-10. 登录日志:系统登录日志记录查询包含登录异常。
-11. 在线用户:当前系统中活跃用户状态监控。
-12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
-13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
-14. 系统接口:根据业务代码自动生成相关的api接口文档。
-15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
-16. 缓存监控:对系统的缓存查询,删除、清空等操作。
-17. 在线构建器:拖动表单元素生成相应的HTML代码。
-18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

+ 0 - 10
public/docs/快速了解.md

@@ -1,10 +0,0 @@
-<font size=8>**快速了解**</font>
-
-RuoYi-Vue-Blog是基于RuoYi-Vue平台开发  
-RuoYi-Vue是一款基于SpringBoot+Vue的前后端分离极速后台开发框架。
-
-- RuoYi 官网地址:http://ruoyi.vip(opens new window)
-- RuoYi 在线文档:http://doc.ruoyi.vip/ruoyi-vue(opens new window)
-- RuoYi 源码下载:https://gitee.com/y_project/RuoYi-Vue(opens new window)
-- RuoYi 在线提问:https://gitee.com/y_project/RuoYi-Vue/issues(opens new window)
-- RuoYi 博客:https://www.oschina.net/p/ruoyi

+ 0 - 25
public/docs/技术选型.md

@@ -1,25 +0,0 @@
-<font size=8>**技术选型**</font>
-
-1、系统环境
-
-- Java EE 8
-- Servlet 3.0
-- Apache Maven 3
-
-2、主框架
-
-- Spring Boot 2.2.x
-- Spring Framework 5.2.x
-- Spring Security 5.2.x
-
-3、持久层
-
-- Apache MyBatis 3.5.x
-- Hibernate Validation 6.0.x
-- Alibaba Druid 1.2.x
-
-4、视图层
-
-- Vue 2.6.x
-- Axios 0.21.x
-- Element 2.15.x

+ 0 - 10
public/docs/新增功能.md

@@ -1,10 +0,0 @@
-<font size=8>**新增功能**</font>
-
-1.  内容管理:管理博客网站所有内容。
-2.  文章管理:管理博客文章内容。
-3.  随笔管理:管理博客随笔内容。
-4.  分类管理:对博客分类的管理。
-5.  标签管理:对博客标签的管理。
-6.  留言管理:管理博客网站留言信息。
-7.  评论管理:管理博客评论信息。
-8.  文件管理:管理博客网站所有上传文件信息。

+ 0 - 9
public/docs/系统需求.md

@@ -1,9 +0,0 @@
-<font size=8>**系统需求**</font>
-
-
-
-- JDK >= 1.8
-- MySQL >= 5.7
-- Maven >= 3.0
-- Node >= 12
-

BIN
public/errorImg.jpg


BIN
public/favicon1.ico


+ 0 - 2
public/robots.txt

@@ -1,2 +0,0 @@
-User-agent: *
-Disallow: /

BIN
public/systemImg/分类管理.png


BIN
public/systemImg/博客详情.png


BIN
public/systemImg/后台首页1.png


BIN
public/systemImg/后台首页2.png


BIN
public/systemImg/图片预览.png


BIN
public/systemImg/文件管理.png


BIN
public/systemImg/文档详情.png


BIN
public/systemImg/文档首页.png


BIN
public/systemImg/文章新增修改.png


BIN
public/systemImg/文章管理.png


BIN
public/systemImg/标签管理.png


BIN
public/systemImg/留言.jpg


BIN
public/systemImg/留言管理.png


BIN
public/systemImg/移动端个人中心.png


BIN
public/systemImg/移动端个人资料.png


BIN
public/systemImg/移动端修改密码.png


BIN
public/systemImg/移动端留言.png


BIN
public/systemImg/移动端登录.png


BIN
public/systemImg/移动端详情文章.png


BIN
public/systemImg/移动端详情评论.png


BIN
public/systemImg/移动端随笔.png


BIN
public/systemImg/移动端首页.png


BIN
public/systemImg/评论.png


BIN
public/systemImg/评论管理.png


BIN
public/systemImg/资源列表.png


BIN
public/systemImg/随笔.png


BIN
public/systemImg/首页.png


File diff suppressed because it is too large
+ 0 - 1
public/博客园-SmileToCode-brightgreen.svg


BIN
src/assets/images/profile.jpg


BIN
src/assets/images/wallhaven-dgojvj.webp


BIN
src/assets/images/wallhaven-j5y525.webp


BIN
src/assets/images/wallhaven-k9p8l6.webp


+ 6 - 2
src/components/cmsEditor/editoritem.vue

@@ -41,8 +41,12 @@ export default {
       }
     },
     value: function (value) {
+      if (!value) {
+        this.editor.txt.clear();
+        return;
+      }
       if (value !== this.editor.txt.html()) {
-        this.editor.txt.html(this.value);
+        this.editor.txt.html(value);
       }
     }
     // value为编辑框输入的内容,这里我监听了一下值,当父组件调用得时候,如果给value赋值了,子组件将会显示父组件赋给的值
@@ -117,6 +121,6 @@ export default {
   }
   .text {
     border: 1px solid #ccc;
-    min-height: 300px;
+    min-height: 400px;
   }
 </style>

+ 99 - 0
src/components/cmsEditor/editoritem5.vue

@@ -0,0 +1,99 @@
+<template lang="html">
+  <div class="editor">
+    <div ref="toolbar" class="toolbar" id="toolbar-container">
+    </div>
+    <div ref="editor" class="text" id="editor-container">
+    </div>
+  </div>
+</template>
+
+<script>
+import '@wangeditor/editor/dist/css/style.css';
+import { createEditor, createToolbar } from '@wangeditor/editor';
+import { upload } from "../../api/files/upload";
+// toolbar
+let editor;
+export default {
+  name: 'editoritem',
+  data () {
+    return {
+      info_: null,
+      editorConfig: {
+        MENU_CONF: {}
+      }
+    };
+  },
+  props: {
+    value: {
+      type: String,
+      default: ''
+    }
+  },
+  mounted () {
+    this.seteditor();
+  },
+  methods: {
+    seteditor () {
+      // 创建编辑器
+      editor = createEditor({
+        selector: '#editor-container',
+        config: {
+          onChange: (editor) => {
+            this.info_ = editor.getHtml(); // 绑定当前改变地值
+            this.$emit('change', this.info_); // 将内容同步到父组件中
+          },
+          customPaste: (editor, event) => {
+            const text = event.clipboardData.getData('text/plain');
+          },
+          MENU_CONF: {
+            uploadImage: {
+              async customUpload(file, insertFn) {
+                var data = new FormData();
+                data.append('file', file);
+                const res = await upload(data);
+                const url = res.url;
+                const alt = res.newFileName;
+                const href = res.url;
+                // 上传图片,返回结果,将图片插入到编辑器中
+                insertFn(url, alt, href);
+              }
+            }
+          }
+        }
+      });
+      // 创建工具栏
+      createToolbar({
+        editor,
+        selector: '#toolbar-container'
+      });
+      editor.setHtml((this.value));
+    }
+  },
+  beforeDestroy() {
+    if (editor == null) return;
+    editor.destroy(); // 组件销毁时,及时销毁编辑器
+  }
+};
+</script>
+
+<style lang="scss">
+  .editor {
+    width: 100%;
+    margin: 0 auto;
+    position: relative;
+    z-index: 0;
+    p {
+      line-height: 2em;
+      font-size: 16px;
+      text-align: justify;
+    }
+  }
+  .toolbar {
+    border: 1px solid #ccc;
+  }
+  .text {
+    border: 1px solid #ccc;
+    min-height: 300px;
+    height: 500px;
+  }
+</style>

+ 2 - 0
src/main.js

@@ -27,6 +27,7 @@ import RightToolbar from "@/components/RightToolbar"
 import Editor from "@/components/Editor"
 import cmsEditor from "@/components/cmsEditor"
 import editoritem from "@/components/cmsEditor/editoritem"
+import editoritem5 from "@/components/cmsEditor/editoritem5"
 
 // 文件上传组件
 import FileUpload from "@/components/FileUpload"
@@ -59,6 +60,7 @@ Vue.component('RightToolbar', RightToolbar)
 Vue.component('Editor', Editor)
 Vue.component('cmsEditor', cmsEditor)
 Vue.component('editoritem', editoritem)
+Vue.component('editoritem5', editoritem5)
 Vue.component('FileUpload', FileUpload)
 Vue.component('ImageUpload', ImageUpload)
 Vue.component('ImagePreview', ImagePreview)

+ 19 - 1
src/views/activity/activitylog.vue

@@ -9,6 +9,16 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="活动类型" prop="type">
+        <el-select v-model="queryParams['activity.type']" placeholder="请选择活动类型">
+          <el-option
+            v-for="item in typeOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="用户名称">
         <el-input
           v-model="queryParams['user.name']"
@@ -56,6 +66,7 @@
 
     <el-table v-loading="loading" :data="activitylogList">
       <el-table-column label="活动名称" align="center" prop="activity.topic" />
+      <el-table-column label="活动类比" align="center" prop="activity.typeText" />
       <el-table-column label="用户名称" align="center" prop="user.name" />
       <el-table-column label="联系电话" align="center" prop="user.phone" />
       <el-table-column label="签到状态" align="center" prop="checkinStatus" />
@@ -148,7 +159,13 @@ export default {
         userId: [
           { required: true, message: "用户Id不能为空", trigger: "blur" }
         ],
-      }
+      },
+      typeOptions: [
+        { value: 'wt', label: '文体' },
+        { value: 'zb', label: '直播' },
+        { value: 'ms', label: '民生' },
+        { value: 'zy', label: '志愿' }
+      ]
     };
   },
   created() {
@@ -162,6 +179,7 @@ export default {
         this.activitylogList = response.rows.map(e => {
           e.pointStatus = e.pointStatus == 0 ? '未发放' : '已发放';
           e.checkinStatus = e.checkinStatus == 0 ? '报名' : '签到';
+          e.activity.typeText = this.typeOptions.find(j => j.value == e.activity.type)?.label;
           return e;
         });
         this.total = response.total;

+ 20 - 3
src/views/activity/index.vue

@@ -9,6 +9,16 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="活动类型" prop="type">
+        <el-select v-model="queryParams.type" placeholder="请选择活动类型">
+          <el-option
+            v-for="item in typeOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="活动开始时间" prop="startTime">
         <el-date-picker clearable
           v-model="queryParams.startTime"
@@ -47,6 +57,7 @@
     <el-table v-loading="loading" :data="activityList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="主题" align="center" prop="topic" />
+       <el-table-column label="活动类别" align="center" prop="typeText" />
       <el-table-column label="活动开始时间" align="center" prop="startTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
@@ -165,7 +176,8 @@
         </el-form-item>
         <el-form-item label="活动简介" prop="description">
           <!-- <el-input v-model="form.description" type="textarea" placeholder="请输入内容" /> -->
-          <cmsEditor v-model="form.description" @getFileId="getFileId" type="base64" :min-height="192" />
+          <!-- <cmsEditor v-model="form.description" @getFileId="getFileId" type="base64" :min-height="192" /> -->
+          <editoritem :value="form.content" @change="getFileId"></editoritem>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -230,9 +242,13 @@ export default {
     this.getList();
   },
   methods: {
+    // getFileId(data) {
+    //     this.fileIds.push(data);
+    //   },
     getFileId(data) {
-        this.fileIds.push(data);
-      },
+      this.$set(this.form, 'description', data);
+      // this.fileIds.push(data);
+    },
     /** 查询活动管理列表 */
     getList() {
       this.loading = true;
@@ -249,6 +265,7 @@ export default {
           }else{
             e.statusText = '已结束';
           }
+           e.typeText = this.typeOptions.find(j => j.value == e.type)?.label;
           return e;
         });
         this.total = response.total;

+ 8 - 8
src/views/cms/backgroundImages.js

@@ -1,9 +1,9 @@
 // 背景图片随机生成
-import bg1 from '../../assets/images/wallhaven-dgojvj.webp'
-import bg2 from '../../assets/images/wallhaven-j5y525.webp'
-import bg3 from '../../assets/images/wallhaven-k9p8l6.webp'
-export default[
-	bg1,
-	bg2,
-	bg3,
-]
+// import bg1 from '../../assets/images/wallhaven-dgojvj.webp'
+// import bg2 from '../../assets/images/wallhaven-j5y525.webp'
+// import bg3 from '../../assets/images/wallhaven-k9p8l6.webp'
+// export default[
+// 	bg1,
+// 	bg2,
+// 	bg3,
+// ]

+ 8 - 46
src/views/cms/blog/index.vue

@@ -93,8 +93,6 @@
             v-hasPermi="['cms:blog:edit']">修改</el-button>
           <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
             v-hasPermi="['cms:blog:remove']">删除</el-button>
-          <el-button size="mini" type="text" icon="el-icon-folder-opened" @click="fileList(scope.row)"
-            v-hasPermi="['cms:blog:edit']">资源列表</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -123,7 +121,7 @@
         <el-form-item label="内容">
           <!-- 图片用base64存储,url方式移动端会显示异常 -->
           <!-- <cmsEditor v-model="form.content" @getFileId="getFileId" :min-height="192" /> -->
-          <editoritem :value="form.content" @change="getFileId"></editoritem>
+          <editoritem5 v-if="open" :value="form.content || ''" @change="getFileId"></editoritem5>
         </el-form-item>
         <el-form-item label="标签">
           <el-checkbox-group v-model="form.tagIds">
@@ -135,10 +133,6 @@
         <el-row>
           <el-col :span="7">
             <el-form-item label="分类">
-              <!-- <el-select v-model="form.typeIds" multiple placeholder="请选择" filterable clearable>
-                <el-option v-for="item in typeOptions" :key="item.typeId" :label="item.typeName" :value="item.typeId">
-                </el-option>
-              </el-select> -->
               <el-cascader
                 :options="treeOptions"
                 placeholder="请选择分类" 
@@ -163,36 +157,6 @@
       </div>
     </el-dialog>
 
-    <!-- 资源列表对话框 -->
-    <el-dialog :title="title" :visible.sync="fileListOpen" width="1000px" append-to-body>
-      <el-table class="file-list" :data="fileInfoList">
-        <el-table-column type="selection" width="55" align="center" />
-        <!-- <el-table-column label="文件主键id" align="center" prop="fileId" /> -->
-        <el-table-column label="图片预览" align="center" prop="pic">
-          <template slot-scope="scope">
-            <el-image style="width: 120px;height: 60px;" :src="scope.row.pic" lazy :preview-src-list="[scope.row.pic]">
-            </el-image>
-          </template>
-        </el-table-column>
-        <el-table-column label="文件名称" align="center" prop="fileOriginName" />
-        <el-table-column label="文件类型" align="center" prop="fileSuffix" />
-        <el-table-column label="文件大小" align="center" prop="fileSizeInfo" />
-        <!-- <el-table-column label="存储文件名称" align="center" prop="fileObjectName" /> -->
-        <!-- <el-table-column label="存储路径" align="center" prop="filePath" /> -->
-        <!-- <el-table-column label="创建者" align="center" prop="createBy" /> -->
-        <!-- <el-table-column label="创建时间" align="center" prop="createTime" width="100">
-          <template slot-scope="scope">
-            <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
-          </template>
-        </el-table-column> -->
-        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-          <template slot-scope="scope">
-            <el-button size="mini" type="text" icon="el-icon-download" @click="handleDownload(scope.row)">下载</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </el-dialog>
-
   </div>
 </template>
 
@@ -313,10 +277,10 @@
           cancelButtonText: '取消',
           type: 'warning'
         }).then(() => {
-          let fileids = this.fileIds;
-          if (fileids.length > 0) {
-            delFileInfo(fileids);
-          };
+          // let fileids = this.fileIds;
+          // if (fileids.length > 0) {
+          //   delFileInfo(fileids);
+          // };
           this.fileIds.length = 0;
           cancelBlog(this.form).then(response => {});
           this.top = false;
@@ -408,7 +372,7 @@
                     blogId: response.data,
                     fileIds: this.fileIds
                   };
-                  addFileBlogInfo(fileBlogInfo).then(response => {});
+                  // addFileBlogInfo(fileBlogInfo).then(response => {});
                 }
                 this.$modal.msgSuccess("新增成功");
                 this.fileIds.length = 0;
@@ -437,7 +401,7 @@
                     blogId: this.form.id,
                     fileIds: this.fileIds
                   };
-                  addFileBlogInfo(fileBlogInfo).then(response => {});
+                  // addFileBlogInfo(fileBlogInfo).then(response => {});
                 }
                 this.$modal.msgSuccess("修改成功");
                 this.fileIds.length = 0;
@@ -451,7 +415,7 @@
                     blogId: response.data,
                     fileIds: this.fileIds
                   };
-                  addFileBlogInfo(fileBlogInfo).then(response => {});
+                  // addFileBlogInfo(fileBlogInfo).then(response => {});
                 }
                 this.$modal.msgSuccess("新增成功");
                 this.fileIds.length = 0;
@@ -538,13 +502,11 @@
     },
     computed: {
       treeOptions() {
-        console.log('typeOptions:', this.typeOptions);
         this.typeOptions?.forEach((p, _, a) => { 
           p.children = a?.filter(c => c.parentId == p.typeId);
           if (p.children?.length == 0) p.children = null;
         })
         const ret = this.typeOptions?.filter(p => p.parentId == 0);
-        console.log(ret);
         return ret;
       }
     }

+ 16 - 0
src/views/community/dangyuan/index.vue

@@ -17,6 +17,22 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="工作单位" prop="workUnit">
+        <el-input
+          v-model="queryParams.workUnit"
+          placeholder="请输入工作单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="报道位置" prop="reportLocation">
+        <el-input
+          v-model="queryParams.reportLocation"
+          placeholder="请输入工作单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>

+ 95 - 67
src/views/community/log/index.vue

@@ -1,7 +1,8 @@
 <template>
-  <div class="app-container"><el-row :gutter="20">
+  <div class="app-container">
+    <el-row :gutter="20">
       <!--地址数据-->
-      <el-col :span="4" :xs="24">
+      <el-col :span="4" :xs="24" class="treeBox">
         <div class="head-container">
           <el-input
             v-model="addrName"
@@ -19,7 +20,7 @@
             :expand-on-click-node="false"
             :filter-node-method="filterNode"
             ref="tree"
-            default-expand-all
+            :accordion="true"
             highlight-current
             @node-click="handleNodeClick"
           />
@@ -27,34 +28,60 @@
       </el-col>
 
       <el-col :span="20" :xs="24">
-    <el-table v-loading="loading" :data="logList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="任务名称" align="center" prop="name" />
-      <el-table-column label="应检" align="center" prop="buildingNumber" />
-      <el-table-column label="已检" align="center" prop="buildingNumber" />
-      <el-table-column label="未检" align="center" prop="buildingNumber" />
-    </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-    </el-col>
+        <div>
+          <el-select v-model="queryParams.natTaskId" @change="getList" placeholder="请选择任务">
+            <el-option
+              v-for="item in taskList"
+              :key="item.natTaskId"
+              :label="item.name"
+              :value="item.natTaskId">
+            </el-option>
+          </el-select>
+          <el-tag style="margin: 0 0 20px 20px">应检:{{ num && num.totalCount }}</el-tag>
+          <el-tag style="margin: 0 20px 20px 20px" type="success">已检:{{ num && num.detectedCount }}</el-tag>
+          <el-tag type="danger">未检: {{ num && num.undetectedCount }}</el-tag>
+        </div>
+        <el-tabs type="card" @tab-click="tabClick" v-model="isName">
+          <el-tab-pane label="已检" name="1"></el-tab-pane>
+          <el-tab-pane label="未检" name="0"></el-tab-pane>
+        </el-tabs>
+        <el-table
+          v-loading="loading"
+          :data="logList"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column label="姓名" align="center" prop="name" />
+          <el-table-column label="手机号" align="center" prop="phone" />
+          <el-table-column label="是否代领" align="center" prop="entrusted" />
+          <el-table-column label="小区" align="center" prop="estateName" />
+          <el-table-column label="楼栋" align="center" prop="buildingNumber" />
+          <el-table-column label="单元" align="center" prop="unit" />
+          <el-table-column label="楼层" align="center" prop="floor" />
+          <el-table-column label="门牌" align="center" prop="number" />
+          <el-table-column label="备注" align="center" prop="remark" />
+        </el-table>
+
+        <pagination
+          v-show="total > 0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
+      </el-col>
     </el-row>
   </div>
 </template>
 
 <script>
-import {  addrTreeSelect } from "@/api/community/addr";
-import { listLog, getLog, delLog, addLog, updateLog } from "@/api/community/log";
+import { addrTreeSelect } from "@/api/community/addr";
+import { getrealtime, getrealtimenum, listTask } from "@/api/community/task";
 
 export default {
   name: "Log",
   data() {
     return {
+      num: {},
       defaultProps: {},
       // 地址树选项
       addrOptions: undefined,
@@ -70,39 +97,39 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        natTaskId: null,
-        residentId: null,
-        name: null,
-        houseId: null,
-        buildingNumber: null,
-        estateName: null,
-        gridName: null,
-        communityName: null,
-        phone: null,
-        status: null,
       },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-      }
+      isName: '1',
+      loading: false,
+      taskList: []
     };
   },
-  created() {
-    this.getList();
-    this.getAddrTree();
+  async created() {
+    const res = await listTask();
+    this.taskList = res.rows;
+    await this.getAddrTree();
   },
   watch: {
     // 根据名称筛选地址树
     addrName(val) {
       this.$refs.tree.filter(val);
-    }
+    },
   },
   methods: {
-     /** 查询地址下拉树结构 */
+    init() {
+      this.queryParams.detectStatus = 1;
+      this.queryParams.natTaskId = this.taskList[0]?.natTaskId;
+      this.handleNodeClick(this.addrOptions[0]);
+    },
+    // 点击标签
+    tabClick(e) {
+      this.queryParams.detectStatus = e.name;
+      this.getList();
+    },
+    /** 查询地址下拉树结构 */
     getAddrTree() {
-      addrTreeSelect(this.queryParams).then(response => {
+      addrTreeSelect().then((response) => {
         this.addrOptions = response.data;
+        this.init()
       });
     },
     // 节点单击事件
@@ -120,37 +147,38 @@ export default {
     /** 查询检测日志管理列表 */
     getList() {
       this.loading = true;
-      listLog(this.queryParams).then(response => {
-        this.logList = response.rows;
+      const { addrType, addrInterId, natTaskId } = this.queryParams;
+      getrealtimenum({ addrType, addrInterId, natTaskId }).then((response) => {
+        this.num = response.data;
+      });
+      getrealtime(this.queryParams).then((response) => {
+        this.logList = response.rows.map(e => {
+          e.entrusted = e.entrusted == 0 ? '否' : '是'
+          return e;
+        });
         this.total = response.total;
         this.loading = false;
       });
     },
-    // 表单重置
-    reset() {
-      this.form = {
-        natLogId: null,
-        natTaskId: null,
-        residentId: null,
-        name: null,
-        houseId: null,
-        buildingNumber: null,
-        estateName: null,
-        gridName: null,
-        communityName: null,
-        phone: null,
-        createTime: null,
-        status: "0",
-        remark: null
-      };
-      this.resetForm("form");
-    },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.natLogId)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
+      this.ids = selection.map((item) => item.natLogId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
     },
-  }
+  },
 };
 </script>
+<style scoped>
+.treeBox {
+  height: 80vh;
+  overflow-y: auto;
+}
+::-webkit-scrollbar {
+  width: 1px;
+  background-color: skyblue;
+}
+::-webkit-scrollbar-thumb {
+    background-color: orange;
+}
+</style>

+ 0 - 3
src/views/community/realtime/index.vue

@@ -45,9 +45,6 @@
           <el-table-column label="姓名" align="center" prop="name" />
           <el-table-column label="手机号" align="center" prop="phone" />
           <el-table-column label="是否代领" align="center" prop="entrusted" />
-          <!-- <el-table-column label="街道" align="center" prop="streetName" /> -->
-          <!-- <el-table-column label="社区" align="center" prop="communityName" />
-          <el-table-column label="小区" align="center" prop="estateName" /> -->
           <el-table-column label="小区" align="center" prop="estateName" />
           <el-table-column label="楼栋" align="center" prop="buildingNumber" />
           <el-table-column label="单元" align="center" prop="unit" />

+ 8 - 0
src/views/community/xiachenganbu/index.vue

@@ -18,6 +18,14 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="工作单位" prop="workUnit">
+        <el-input
+          v-model="queryParams.workUnit"
+          placeholder="请输入工作单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>