Explorar el Código

事件总览,综合查询变更

lyq hace 1 año
padre
commit
a38ca2c04e

+ 11 - 0
event-ui/src/api/event/eventtypemonitor/eventtypemonitor.js

@@ -42,6 +42,7 @@ export function delMonitor(id) {
     method: 'delete'
   })
 }
+
 // 查询部门
 export function deptTreeSelect() {
   return request({
@@ -49,6 +50,7 @@ export function deptTreeSelect() {
     method: 'get'
   })
 }
+
 export function addEventtyepLx(data) {
   return request({
     url: '/center-event/eventtypemonitor/saveTypelx',
@@ -56,3 +58,12 @@ export function addEventtyepLx(data) {
     data: JSON.stringify(data)
   })
 }
+
+// 查询事件模版类型列表
+export function listByParentId(query) {
+  return request({
+    url: '/center-event/eventtypemonitor/listByParentId',
+    method: 'get',
+    params: query
+  })
+}

+ 73 - 83
event-ui/src/views/event/eventcatalogue/index.vue

@@ -1,10 +1,6 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="96px">
-      <!--<el-form-item label="事件编号" prop="eventCode">
-        <el-input v-model="queryParams.eventCode" placeholder="请输入事件编号" clearable style="width: 240px"
-                  @keyup.enter.native="handleQuery"/>
-      </el-form-item>-->
       <el-form-item label="事件名称" prop="eventName">
         <el-input v-model="queryParams.eventName" placeholder="请输入事件名称" clearable style="width: 240px"
                   @keyup.enter.native="handleQuery"/>
@@ -26,18 +22,25 @@
                         type="daterange" range-separator="-" value-format="yyyy-MM-dd" style="width: 240px"
                         @keyup.enter.native="handleQuery"></el-date-picker>
       </el-form-item>
-      <el-form-item label="事件状态" prop="eventStatusValue" v-if="statusSearch">
+      <el-form-item label="是否催办" prop="isUrged">
+        <el-select v-model="queryParams.isUrged" placeholder="请选择是否催办" clearable style="width: 240px"
+                   @keyup.enter.native="handleQuery">
+          <el-option v-for="dict in dict.type.sys_isurge" :key="dict.value" :label="dict.label"
+                     :value="dict.value"/>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="事件状态" prop="eventStatusValue">
         <el-select v-model="queryParams.eventStatusValue" placeholder="请选择事件状态" clearable style="width: 240px"
                    @keyup.enter.native="handleQuery">
           <el-option v-for="dict in dict.type.forest_event_status" :key="dict.value" :label="dict.label"
                      :value="dict.value"/>
         </el-select>
       </el-form-item>
-      <el-form-item label="事件一类" prop="eventType" v-if="typeSearch">
-        <el-select v-model="queryParams.eventType" placeholder="请选择事件一类" clearable style="width: 240px"
-                   @keyup.enter.native="handleQuery">
-          <el-option v-for="item in eventTypeList" :key="item.id" :label="item.eventTypeName"
-                     :value="item.id"/>
+      <el-form-item label="事件分类" prop="eventTypeXls">
+        <el-select v-model="queryParams.eventTypeXls" placeholder="请选择事件分类" clearable filterable style="width: 480px"
+                   multiple @keyup.enter.native="handleQuery">
+          <el-option v-for="item in defaultTypeXl" :key="item.id" :label="item.eventTypeName"
+                     :value="item.typeXlId"/>
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -78,12 +81,6 @@
       <el-table-column label="事件状态" align="center" prop="eventStatus"/>
       <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-edit" @click="handleUpdate(scope.row)"
-                     v-hasPermi="['eventcatalogue:eventcatalogue:edit']">修改
-          </el-button>-->
-<!--          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"-->
-<!--                     v-hasPermi="['eventcatalogue:eventcatalogue:remove']">删除-->
-<!--          </el-button>-->
           <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)"
                      v-hasPermi="['eventcatalogue:eventcatalogue:edit']">详情
           </el-button>
@@ -110,7 +107,7 @@
         <el-row>
           <el-col :span="24">
             <el-form-item label="事件描述" prop="eventDescription">
-              <el-input v-model="form.eventDescription" placeholder="请输入事件描述" type="textarea"  maxlength="512"/>
+              <el-input v-model="form.eventDescription" placeholder="请输入事件描述" type="textarea" maxlength="512"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -149,7 +146,8 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="火灾半径" prop="fireRadius">
-              <el-input v-model="form.fireRadius" placeholder="请输入火灾半径" maxlength="10" type="number" oninput="if(value.length>4)value=value.slice(0,10)" />
+              <el-input v-model="form.fireRadius" placeholder="请输入火灾半径" maxlength="10" type="number"
+                        oninput="if(value.length>4)value=value.slice(0,10)"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -179,7 +177,7 @@
         <el-row>
           <el-col :span="24">
             <el-form-item label="上报具体位置" prop="address">
-              <el-input v-model="form.address" placeholder="请输入上报具体位置"  maxlength="255"/>
+              <el-input v-model="form.address" placeholder="请输入上报具体位置" maxlength="255"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -198,9 +196,9 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+
     <!-- 事件日志列表 -->
     <el-dialog :title="title" :visible.sync="openLogSee" width="900px" append-to-body>
-
       <div class="block">
         <el-timeline :reverse="reverse">
           <el-timeline-item
@@ -238,6 +236,7 @@
         </el-timeline>
       </div>
     </el-dialog>
+
     <!-- 事件详情对话框 -->
     <el-dialog :title="title" :visible.sync="openSee" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="106px">
@@ -326,7 +325,7 @@
         </el-row>
         <el-row>
           <el-col :span="24">
-            <ImageUpload ref="ImageUpload"  :limit="1" :fileType="['png', 'jpg', 'jpeg']" :isShowTip="false"
+            <ImageUpload ref="ImageUpload" :limit="1" :fileType="['png', 'jpg', 'jpeg']" :isShowTip="false"
                          :value="form.attachId"
                          @input="getUrl"></ImageUpload>
             <div>
@@ -335,7 +334,6 @@
                   <a :href="item.attachPath" target="blank">{{item.fileName}}</a>
                 </li>
               </ol>
-
             </div>
           </el-col>
         </el-row>
@@ -344,10 +342,12 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+
     <!-- 图片,视频预览 -->
     <el-dialog title="视频预览" :visible.sync="showTcPlayer" width="40%" customClass="customWidthMp4">
       <TcPlayer ref="TcPlayer" :playVideo="playVideo" :widthHeigt="[100,100]"></TcPlayer>
     </el-dialog>
+
     <el-dialog title="" :visible.sync="showLongitude" append-to-body>
       <el-input v-show="false" v-model="form.longitude"/>
       <el-input v-show="false" v-model="form.latitude"/>
@@ -362,35 +362,32 @@
   import {
     addEventcatalogue,
     delEventcatalogue,
+    eventhandleDownload,
     getEventcatalogue,
-    listcentereventtfirelog,
     listByPc,
+    listcentereventtfirelog,
     listHgjXl,
     listSJfl,
-    listYuAn,
-    eventhandleDownload
+    listYuAn
   } from "@/api/event/eventcatalogue/eventcatalogue";
-  import { getConfigKey } from "@/api/system/config";
+  import {getConfigKey} from "@/api/system/config";
+  import {listByParentId} from "@/api/event/eventtypemonitor/eventtypemonitor";
   import Deptselector from '@/views/components/deptselector';
   import FileUpload from '@/views/components/FileUpload/index';
   import Supermap from '@/views/components/supermap';
-  import {checkLon, checkLat, validPhoneMobile,checkNonnegativeInteger} from "@/api/rules/rules";
-  import TcPlayer from '@/components/TcPlayer';// 视频预览
+  import {checkLat, checkLon} from "@/api/rules/rules";
+  import TcPlayer from '@/components/TcPlayer'; // 视频预览
 
   export default {
     name: "Eventcatalogue",
-    components: {Deptselector, FileUpload, Supermap,TcPlayer},
-    dicts: ['reporting_source', 'forest_event_status'],
+    components: {Deptselector, FileUpload, Supermap, TcPlayer},
+    dicts: ['reporting_source', 'forest_event_status', 'sys_isurge'],
     data() {
       return {
         // 遮罩层
         loading: true,
         // 显示搜索条件
         showSearch: true,
-        // 显示事件一类检索条件
-        typeSearch: false,
-        // 显示事件状态检索条件
-        statusSearch: false,
         // 显示新增按钮
         addBtn: false,
         // 总条数
@@ -420,7 +417,7 @@
         findView: false,
         showLongitude: false,
         fileList: [],
-        filevedioList:[],
+        filevedioList: [],
         // 表单参数
         form: {},
         fileNames: [],
@@ -433,14 +430,14 @@
         queryParams: {
           pageNum: 1,
           pageSize: 10,
-          eventType: this.$route.query.eventType,
-          isUrged: this.$route.query.isUrged,
-          eventStatusValue: this.$route.query.eventStatusValue,
-          eventCode: undefined,
+          defaultTypeXl: [],
           eventName: undefined,
           reportSource: undefined,
           reportor: undefined,
-          reportTimeRange: this.getNowTime()
+          reportTimeRange: this.getNowTime(),
+          isUrged: undefined,
+          eventStatusValue: undefined,
+          eventTypeXls: []
         },
         // 表单校验
         rules: {
@@ -460,39 +457,42 @@
             {required: true, message: '所属部门不能为空', trigger: 'change'}
           ],
           longitude: [
-            {required: true, message: '经度不能为空', trigger: ['blur','change']},
+            {required: true, message: '经度不能为空', trigger: ['blur', 'change']},
             {validator: checkLon, trigger: 'blur'}
           ],
           latitude: [
-            {required: true, message: '纬度不能为空', trigger: ['blur','change']},
+            {required: true, message: '纬度不能为空', trigger: ['blur', 'change']},
             {validator: checkLat, trigger: 'blur'}
           ],
-          address:[
+          address: [
             {required: true, message: '上报具体位置不能为空', trigger: 'change'}
           ],
         },
-        esflag: false
+        esflag: false,
+        defaultTypeXl: []
       };
     },
     created() {
-      if (this.$route.query.eventType == '') {
-        this.typeSearch = true;
-        listSJfl({parentId: 0}).then(response => {
-          this.eventTypeList = response.data;
-        });
-      }
-      if (this.$route.query.eventStatusValue == '') {
-        this.statusSearch = true;
-      }
-      if (this.$route.query.eventStatusValue == 'forest_event_status_1' && this.$route.query.eventType == '') {
+      if (this.$route.query.pid == '') {
         this.addBtn = true;
       }
-      getConfigKey('esflag').then(response => {
-        this.esflag = response.msg;
-        this.getList();
-      });
-      listYuAn().then(response => {
-        this.reserveList = response.data;
+      listByParentId({parentId: this.$route.query.pid}).then(response => {
+        let obj = {};
+        let reduce = response.data.reduce((curr, next) => {
+          /*判断对象中是否已经有该属性  没有的话 push 到 curr数组*/
+          obj[next.eventTypeName] ? '' : obj[next.eventTypeName] = curr.push(next);
+          return curr;
+        }, []);// 去重
+        this.defaultTypeXl = reduce.filter(item => {
+          return item.parentId != 0;
+        });
+        this.queryParams.defaultTypeXl = this.defaultTypeXl.map(item => {
+          return item.typeXlId;
+        })
+        getConfigKey('esflag').then(response => {
+          this.esflag = response.msg;
+          this.getList();
+        });
       });
     },
     methods: {
@@ -567,6 +567,7 @@
       /** 查询事件目录列表 */
       getList() {
         this.loading = true;
+        console.log(this.queryParams)
         listByPc(this.queryParams, this.esflag).then(response => {
           this.eventcatalogueList = response.rows;
           this.total = response.total;
@@ -603,7 +604,7 @@
         };
         this.fileNames = [];
         this.fileList = [];
-        this.filevedioList =[];
+        this.filevedioList = [];
         this.resetForm("form");
       },
       /** 搜索按钮操作 */
@@ -615,9 +616,6 @@
       resetQuery() {
         this.queryParams.reportTimeRange = this.getNowTime();
         this.resetForm("queryForm");
-        this.queryParams.eventType = this.$route.query.eventType;
-        this.queryParams.isUrged = this.$route.query.isUrged;
-        this.queryParams.eventStatusValue = this.$route.query.eventStatusValue;
         this.handleQuery();
       },
       /** 新增按钮操作 */
@@ -632,22 +630,14 @@
           this.eventTypeRlList = [];
           this.hgjList = [];
         });
+        listYuAn().then(response => {
+          this.reserveList = response.data;
+        });
       },
       /** 提交按钮 */
       submitForm() {
         this.$refs["form"].validate(valid => {
           if (valid) {
-            // if (!this.xsd(this.form.longitude)) {
-            //   this.$modal.msgError("请输入正确的经度");
-            //   this.form.longitude = '';
-            //   return;
-            // }
-            // if (!this.xsd(this.form.latitude)) {
-            //   this.$modal.msgError("请输入正确的维度");
-            //   this.form.latitude = '';
-            //   return;
-            // }
-
             if (undefined != this.form.fileUrl) {
               var array = this.form.fileUrl.split(",");
               for (var i = 0; i < array.length; i++) {
@@ -684,7 +674,7 @@
         }, `eventcatalogue_${new Date().getTime()}.xlsx`)
       },
       handleDownload(row) {
-        if(this.reportSources != 'reporting_source_1'){
+        if (this.reportSources != 'reporting_source_1') {
           this.$modal.alertWarning("只允许摄像头上报的可以下载!")
           return;
         }
@@ -784,13 +774,13 @@
         getEventcatalogue(id).then(response => {
           this.form = response.data;
           const list = response.data.attach;
-          for(let i=0; i<list.length; i++){
-            this.$set(list[i],"url",list[i].attachPath)
+          for (let i = 0; i < list.length; i++) {
+            this.$set(list[i], "url", list[i].attachPath)
           }
           list.forEach(e => {
-            if(e.fileType == 'video'){
+            if (e.fileType == 'video') {
               this.filevedioList.push(e);
-            }else{
+            } else {
               this.fileList.push(e);
 
             }
@@ -802,9 +792,9 @@
           this.title = "事件详情";
         });
       },
-      load () {
+      load() {
         this.reset();
-        listcentereventtfirelog({ eventCode: this.eventCode }).then(response => {
+        listcentereventtfirelog({eventCode: this.eventCode}).then(response => {
           this.openLogSee = true;
           this.title = "事件日志列表";
           that.eventfireLogList = res.data.eventlog
@@ -815,7 +805,7 @@
       handleEventLog(row) {
         this.reset();
         this.eventCode = row.eventCode;
-        listcentereventtfirelog({ eventCode: this.eventCode }).then(res => {
+        listcentereventtfirelog({eventCode: this.eventCode}).then(res => {
           this.openLogSee = true;
           this.title = "事件日志列表";
           this.activities = res.data.eventlog;

+ 6 - 4
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/controller/CentereventTEventcatalogueController.java

@@ -17,8 +17,6 @@ import com.ruoyi.system.api.RemoteConfigService;
 import com.ruoyi.system.api.RemoteDeptService;
 import com.ruoyi.system.api.RemoteUserService;
 import com.ruoyi.system.api.domain.SysUser;
-import com.sooka.sponest.event.remoteapi.RemoteDataService;
-import com.sooka.sponest.event.remoteapi.domain.CenterdataTAttach;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.CentereventTEventcatalogue;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.bo.CentereventtDeptEventBO;
 import com.sooka.sponest.event.centereventteventcatalogue.service.ICentereventTEventcatalogueService;
@@ -26,6 +24,8 @@ import com.sooka.sponest.event.centereventteventtype.domain.CentereventTEventtyp
 import com.sooka.sponest.event.centereventteventtype.service.ICentereventTEventtypeService;
 import com.sooka.sponest.event.centereventtfirelog.domain.CentereventTFireLog;
 import com.sooka.sponest.event.centereventtfirelog.service.ICentereventTFireLogService;
+import com.sooka.sponest.event.remoteapi.RemoteDataService;
+import com.sooka.sponest.event.remoteapi.domain.CenterdataTAttach;
 import com.sooka.sponest.event.utils.EventProducerUtil;
 import com.sooka.sponest.event.utils.ExcelUtil;
 import com.sooka.sponest.event.utils.RemoteApiUtil;
@@ -78,8 +78,10 @@ public class CentereventTEventcatalogueController extends BaseController {
     @GetMapping("/listByPc")
     public TableDataInfo listByPc(CentereventTEventcatalogue centereventTEventcatalogue) {
         startPage();
-        if (StringUtils.isNotBlank(centereventTEventcatalogue.getEventType())) {
-            centereventTEventcatalogue.setEventTypes(centereventTEventcatalogue.getEventType().split(","));
+        if (StringUtils.isEmpty(centereventTEventcatalogue.getEventTypeXls()) && centereventTEventcatalogue.getDefaultTypeXl().contains("1")) {
+            centereventTEventcatalogue.setEventType("1");
+        } else if (StringUtils.isNotEmpty(centereventTEventcatalogue.getEventTypeXls()) && centereventTEventcatalogue.getEventTypeXls().contains("1")) {
+            centereventTEventcatalogue.setEventType("1");
         }
         return getDataTable(centereventTEventcatalogueService.listByPc(centereventTEventcatalogue));
     }

+ 18 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/CentereventTEventcatalogue.java

@@ -74,6 +74,8 @@ public class CentereventTEventcatalogue extends BaseBusinessEntity {
      */
     @NotBlank(message = "事件分类小类不能为空")
     private String eventTypeXl;
+    private List<String> eventTypeXls;// 选中分类
+    private List<String> defaultTypeXl;// 默认分类
 
     /**
      * 事件小类名称
@@ -265,6 +267,22 @@ public class CentereventTEventcatalogue extends BaseBusinessEntity {
         this.eventTypeXl = eventTypeXl;
     }
 
+    public List<String> getEventTypeXls() {
+        return eventTypeXls;
+    }
+
+    public void setEventTypeXls(List<String> eventTypeXls) {
+        this.eventTypeXls = eventTypeXls;
+    }
+
+    public List<String> getDefaultTypeXl() {
+        return defaultTypeXl;
+    }
+
+    public void setDefaultTypeXl(List<String> defaultTypeXl) {
+        this.defaultTypeXl = defaultTypeXl;
+    }
+
     public String getEventTypeXlName() {
         return eventTypeXlName;
     }

+ 5 - 0
src/main/java/com/sooka/sponest/event/centereventteventtypemonitor/controller/CentereventTEventtypeMonitorController.java

@@ -45,6 +45,11 @@ public class CentereventTEventtypeMonitorController extends BaseController {
         return getDataTable(list);
     }
 
+    @GetMapping("/listByParentId")
+    public R listByParentId(CentereventTEventtypeMonitor centereventTEventtypeMonitor) {
+        return R.ok(centereventTEventtypemonitorService.selectCentereventTEventtypeMonitorList(centereventTEventtypeMonitor));
+    }
+
     /**
      * 导出事件模版类型列表
      */

+ 42 - 15
src/main/resources/mapper/centereventteventcatalogue/CentereventTEventcatalogueMapper.xml

@@ -53,21 +53,6 @@
         left join centerevent_t_dept_event d on d.event_code = a.event_code
         left join ${database_system}.sys_dept c on c.dept_id = d.dept_id
         <where>
-            <if test="eventTypes != null and eventTypes.length > 0">
-                and event_type in
-                <foreach item="eventType" collection="eventTypes" open="(" separator="," close=")">
-                    #{eventType}
-                </foreach>
-            </if>
-            <if test="isUrged != null and isUrged != ''">
-                and a.is_urged = #{isUrged}
-            </if>
-            <if test="eventStatusValue != null and eventStatusValue != ''">
-                and a.event_status_value = #{eventStatusValue}
-            </if>
-            <if test="eventCode != null and eventCode != ''">
-                and a.event_code = #{eventCode}
-            </if>
             <if test="eventName != null and eventName != ''">
                 and event_name like concat('%', #{eventName}, '%')
             </if>
@@ -83,6 +68,48 @@
                     <if test="index == 1">and concat(#{item}, ' 23:59:59')</if>
                 </foreach>
             </if>
+            <if test="isUrged != null and isUrged != ''">
+                and a.is_urged = #{isUrged}
+            </if>
+            <if test="eventStatusValue != null and eventStatusValue != ''">
+                and a.event_status_value = #{eventStatusValue}
+            </if>
+            <choose>
+                <when test="eventTypeXls != null and eventTypeXls.size > 0">
+                    <choose>
+                        <when test="eventType != null">
+                            and ( ( a.event_type = '1' and a.event_status_value in
+                            ( 'forest_event_status_1', 'forest_event_status_7' ) ) or a.event_type_xl in
+                            <foreach item="eventTypeXl" collection="eventTypeXls" open="(" separator="," close=")">
+                                #{eventTypeXl}
+                            </foreach>)
+                        </when>
+                        <otherwise>
+                            and a.event_type_xl in
+                            <foreach item="eventTypeXl" collection="eventTypeXls" open="(" separator="," close=")">
+                                #{eventTypeXl}
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </when>
+                <otherwise>
+                    <choose>
+                        <when test="eventType != null">
+                            and ( ( a.event_type = '1' and a.event_status_value in
+                            ( 'forest_event_status_1', 'forest_event_status_7' ) ) or a.event_type_xl in
+                            <foreach item="eventTypeXl" collection="defaultTypeXl" open="(" separator="," close=")">
+                                #{eventTypeXl}
+                            </foreach>)
+                        </when>
+                        <otherwise>
+                            and a.event_type_xl in
+                            <foreach item="eventTypeXl" collection="defaultTypeXl" open="(" separator="," close=")">
+                                #{eventTypeXl}
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </otherwise>
+            </choose>
             ${params.dataScope}
         </where>
         group by a.event_code