Selaa lähdekoodia

清四乱前后台: eventclear前台(搜索+详情+图片+检查记录)+mcaf后台管理(CRUD)

Lin Qilong 5 päivää sitten
vanhempi
commit
013de0cdf2

+ 53 - 12
gw-admin/src/main/java/com/goldenwater/web/controller/hzz/RuleController.java

@@ -1,4 +1,5 @@
 package com.goldenwater.web.controller.hzz;
+
 import com.goldenwater.common.core.controller.BaseController;
 import com.goldenwater.common.core.domain.AjaxResult;
 import com.goldenwater.common.core.page.TableDataInfo;
@@ -7,20 +8,60 @@ import com.goldenwater.hzz.domain.FileWsnDTO;
 import com.goldenwater.hzz.service.RuleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import java.util.*;
 
 @RestController
 @RequestMapping("/hzz/rule")
 public class RuleController extends BaseController {
-    @Autowired private RuleService service;
-    @GetMapping("/list") public AjaxResult list(@RequestParam(defaultValue="") String adCode, @RequestParam(required=false) String ruleType) { return success(service.getRuleMessage(adCode,ruleType)); }
-    @GetMapping("/file/list") public TableDataInfo fileList(@RequestParam(defaultValue="") String types, @RequestParam(required=false) String fileName, @RequestParam(required=false) String fileType, @RequestParam(required=false) String startTime, @RequestParam(required=false) String endTime, @RequestParam(defaultValue="1") int pageNum, @RequestParam(defaultValue="10") int pageSize) { return getDataTable(service.getWsnList(types,fileName,fileType,startTime,endTime,pageNum,pageSize)); }
-    @PostMapping("/file") public AjaxResult addFile(@RequestBody FileWsnDTO p) { return toAjax(service.insertWsn(p)); }
-    @PutMapping("/file") public AjaxResult editFile(@RequestBody FileWsnDTO p) { return toAjax(service.updateWsn(p)); }
-    @DeleteMapping("/file/{guid}") public AjaxResult delFile(@PathVariable String guid) { return toAjax(service.deleteWsn(guid)); }
-    @GetMapping("/article/list") public TableDataInfo articleList(@RequestParam(required=false) String title, @RequestParam(required=false) String type, @RequestParam(required=false) String startTime, @RequestParam(required=false) String endTime, @RequestParam(defaultValue="1") int pageNum, @RequestParam(defaultValue="10") int pageSize) { return getDataTable(service.getArticleList(title,type,startTime,endTime,pageNum,pageSize)); }
-    @GetMapping("/article/top5") public AjaxResult articleTop5(@RequestParam(defaultValue="0") String type) { return success(service.getArticleTop5(type)); }
-    @PostMapping("/article") public AjaxResult addArticle(@RequestBody ArticleDTO p) { return toAjax(service.addArticle(p)); }
-    @PutMapping("/article") public AjaxResult editArticle(@RequestBody ArticleDTO p) { return toAjax(service.updateArticle(p)); }
-    @DeleteMapping("/article/{guid}") public AjaxResult delArticle(@PathVariable String guid) { return toAjax(service.deleteArticle(guid)); }
+    @Autowired
+    private RuleService service;
+
+    @GetMapping("/list")
+    public AjaxResult list(@RequestParam(defaultValue = "") String adCode, @RequestParam(required = false) String ruleType) {
+        return success(service.getRuleMessage(adCode, ruleType));
+    }
+
+    @GetMapping("/file/list")
+    public TableDataInfo fileList(@RequestParam(defaultValue = "") String types, @RequestParam(required = false) String fileName, @RequestParam(required = false) String fileType, @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize) {
+        return getDataTable(service.getWsnList(types, fileName, fileType, startTime, endTime, pageNum, pageSize));
+    }
+
+    @PostMapping("/file")
+    public AjaxResult addFile(@RequestBody FileWsnDTO p) {
+        return toAjax(service.insertWsn(p));
+    }
+
+    @PutMapping("/file")
+    public AjaxResult editFile(@RequestBody FileWsnDTO p) {
+        return toAjax(service.updateWsn(p));
+    }
+
+    @DeleteMapping("/file/{guid}")
+    public AjaxResult delFile(@PathVariable String guid) {
+        return toAjax(service.deleteWsn(guid));
+    }
+
+    @GetMapping("/article/list")
+    public TableDataInfo articleList(@RequestParam(required = false) String title, @RequestParam(required = false) String type, @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize) {
+        return getDataTable(service.getArticleList(title, type, startTime, endTime, pageNum, pageSize));
+    }
+
+    @GetMapping("/article/top5")
+    public AjaxResult articleTop5(@RequestParam(defaultValue = "0") String type) {
+        return success(service.getArticleTop5(type));
+    }
+
+    @PostMapping("/article")
+    public AjaxResult addArticle(@RequestBody ArticleDTO p) {
+        return toAjax(service.addArticle(p));
+    }
+
+    @PutMapping("/article")
+    public AjaxResult editArticle(@RequestBody ArticleDTO p) {
+        return toAjax(service.updateArticle(p));
+    }
+
+    @DeleteMapping("/article/{guid}")
+    public AjaxResult delArticle(@PathVariable String guid) {
+        return toAjax(service.deleteArticle(guid));
+    }
 }

+ 22 - 5
gw-admin/src/main/java/com/goldenwater/web/controller/hzz/SupervisionController.java

@@ -1,17 +1,34 @@
 package com.goldenwater.web.controller.hzz;
+
 import com.goldenwater.common.core.controller.BaseController;
 import com.goldenwater.common.core.domain.AjaxResult;
 import com.goldenwater.common.core.page.TableDataInfo;
 import com.goldenwater.hzz.service.SupervisionService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import java.util.*;
 
 @RestController
 @RequestMapping("/hzz/supervision")
 public class SupervisionController extends BaseController {
-    @Autowired private SupervisionService service;
-    @GetMapping("/list") public TableDataInfo list(@RequestParam(defaultValue="1") int pageNum, @RequestParam(defaultValue="10") int pageSize) { return getDataTable(service.getSupervisionList(pageNum,pageSize)); }
-    @GetMapping("/detail/{guid}") public AjaxResult detail(@PathVariable String guid) { AjaxResult r = success(); r.put("attachments",service.getAttachmentByGuid(guid)); r.put("divisions",service.getDivisionByGuid(guid)); r.put("results",service.getResultByGuid(guid)); return r; }
-    @PostMapping("/audit") public AjaxResult audit(@RequestParam String guid, @RequestParam String audit, @RequestParam(required=false) String auditInfo) { return toAjax(service.audit(guid,audit,auditInfo)); }
+    @Autowired
+    private SupervisionService service;
+
+    @GetMapping("/list")
+    public TableDataInfo list(@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize) {
+        return getDataTable(service.getSupervisionList(pageNum, pageSize));
+    }
+
+    @GetMapping("/detail/{guid}")
+    public AjaxResult detail(@PathVariable String guid) {
+        AjaxResult r = success();
+        r.put("attachments", service.getAttachmentByGuid(guid));
+        r.put("divisions", service.getDivisionByGuid(guid));
+        r.put("results", service.getResultByGuid(guid));
+        return r;
+    }
+
+    @PostMapping("/audit")
+    public AjaxResult audit(@RequestParam String guid, @RequestParam String audit, @RequestParam(required = false) String auditInfo) {
+        return toAjax(service.audit(guid, audit, auditInfo));
+    }
 }

+ 19 - 8
gw-hzz/src/main/java/com/goldenwater/hzz/domain/SupervisionInfoDTO.java

@@ -1,14 +1,25 @@
 package com.goldenwater.hzz.domain;
 
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
 import java.io.Serializable;
 
-/** GW_SUPERVISION_INFO 督导信息 */
+/**
+ * GW_SUPERVISION_INFO 督导信息
+ */
+@NoArgsConstructor
+@Data
 public class SupervisionInfoDTO implements Serializable {
-    private String guid;
-    private String status;
-    private String auditInfo;
-
-    public String getGuid() { return guid; } public void setGuid(String v) { guid = v; }
-    public String getStatus() { return status; } public void setStatus(String v) { status = v; }
-    public String getAuditInfo() { return auditInfo; } public void setAuditInfo(String v) { auditInfo = v; }
+    private String crId;
+    private String crCode;
+    private String crName;
+    private String crType;
+    private String crStDate;
+    private String crEtDate;
+    private String crContent;
+    private String crState;
+    private String crCuserId;
+    private String crCdate;
+    private String crUdate;
 }

+ 13 - 1
gw-hzz/src/main/java/com/goldenwater/hzz/mapper/RuleMapper.java

@@ -1,18 +1,30 @@
 package com.goldenwater.hzz.mapper;
 
-import com.goldenwater.hzz.domain.*;
+import com.goldenwater.hzz.domain.ArticleDTO;
+import com.goldenwater.hzz.domain.FileWsnDTO;
+import com.goldenwater.hzz.domain.RuleExecDTO;
 import org.apache.ibatis.annotations.Param;
+
 import java.util.List;
 
 public interface RuleMapper {
     List<RuleExecDTO> getRuleMessage(@Param("adCode") String adCode, @Param("ruleType") String ruleType);
+
     List<FileWsnDTO> getWsnList(@Param("types") String types, @Param("fileName") String f, @Param("fileType") String ft, @Param("startTime") String st, @Param("endTime") String et);
+
     int insertWsn(FileWsnDTO dto);
+
     int updateWsn(FileWsnDTO dto);
+
     int deleteWsn(@Param("guid") String guid);
+
     List<ArticleDTO> getArticleList(@Param("title") String t, @Param("type") String ty, @Param("startTime") String st, @Param("endTime") String et);
+
     int addArticle(ArticleDTO dto);
+
     int updateArticle(ArticleDTO dto);
+
     int deleteArticle(@Param("guid") String guid);
+
     List<ArticleDTO> getArticleTop5(@Param("type") String type);
 }

+ 6 - 1
gw-hzz/src/main/java/com/goldenwater/hzz/mapper/SupervisionMapper.java

@@ -1,13 +1,18 @@
 package com.goldenwater.hzz.mapper;
 
-import com.goldenwater.hzz.domain.*;
+import com.goldenwater.hzz.domain.SupervisionInfoDTO;
 import org.apache.ibatis.annotations.Param;
+
 import java.util.List;
 
 public interface SupervisionMapper {
     List<SupervisionInfoDTO> getSupervisionList();
+
     List<SupervisionInfoDTO> getAttachmentByGuid(@Param("guid") String g);
+
     List<SupervisionInfoDTO> getDivisionByGuid(@Param("guid") String g);
+
     List<SupervisionInfoDTO> getResultByGuid(@Param("guid") String g);
+
     int audit(@Param("guid") String g, @Param("audit") String a, @Param("auditInfo") String ai);
 }

+ 54 - 14
gw-hzz/src/main/java/com/goldenwater/hzz/service/RuleService.java

@@ -1,22 +1,62 @@
 package com.goldenwater.hzz.service;
-import com.goldenwater.hzz.domain.*;
-import com.goldenwater.hzz.mapper.RuleMapper;
+
 import com.github.pagehelper.PageHelper;
+import com.goldenwater.hzz.domain.ArticleDTO;
+import com.goldenwater.hzz.domain.FileWsnDTO;
+import com.goldenwater.hzz.domain.RuleExecDTO;
+import com.goldenwater.hzz.mapper.RuleMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import java.util.*;
+
+import java.util.List;
+import java.util.UUID;
 
 @Service
 public class RuleService {
-    @Autowired private RuleMapper mapper;
-    public List<RuleExecDTO> getRuleMessage(String adCode, String ruleType) { return mapper.getRuleMessage(adCode, ruleType); }
-    public List<FileWsnDTO> getWsnList(String types, String fn, String ft, String st, String et, int pn, int ps) { PageHelper.startPage(pn,ps); return mapper.getWsnList(types,fn,ft,st,et); }
-    public int insertWsn(FileWsnDTO dto) { if(dto.getGuid()==null) dto.setGuid(UUID.randomUUID().toString().replace("-","")); return mapper.insertWsn(dto); }
-    public int updateWsn(FileWsnDTO dto) { return mapper.updateWsn(dto); }
-    public int deleteWsn(String guid) { return mapper.deleteWsn(guid); }
-    public List<ArticleDTO> getArticleList(String t, String ty, String st, String et, int pn, int ps) { PageHelper.startPage(pn,ps); return mapper.getArticleList(t,ty,st,et); }
-    public int addArticle(ArticleDTO dto) { if(dto.getGuid()==null) dto.setGuid(UUID.randomUUID().toString().replace("-","")); return mapper.addArticle(dto); }
-    public int updateArticle(ArticleDTO dto) { return mapper.updateArticle(dto); }
-    public int deleteArticle(String g) { return mapper.deleteArticle(g); }
-    public List<ArticleDTO> getArticleTop5(String type) { return mapper.getArticleTop5(type); }
+    @Autowired
+    private RuleMapper mapper;
+
+    public List<RuleExecDTO> getRuleMessage(String adCode, String ruleType) {
+        return mapper.getRuleMessage(adCode, ruleType);
+    }
+
+    public List<FileWsnDTO> getWsnList(String types, String fn, String ft, String st, String et, int pn, int ps) {
+        PageHelper.startPage(pn, ps);
+        return mapper.getWsnList(types, fn, ft, st, et);
+    }
+
+    public int insertWsn(FileWsnDTO dto) {
+        if (dto.getGuid() == null) dto.setGuid(UUID.randomUUID().toString().replace("-", ""));
+        return mapper.insertWsn(dto);
+    }
+
+    public int updateWsn(FileWsnDTO dto) {
+        return mapper.updateWsn(dto);
+    }
+
+    public int deleteWsn(String guid) {
+        return mapper.deleteWsn(guid);
+    }
+
+    public List<ArticleDTO> getArticleList(String t, String ty, String st, String et, int pn, int ps) {
+        PageHelper.startPage(pn, ps);
+        return mapper.getArticleList(t, ty, st, et);
+    }
+
+    public int addArticle(ArticleDTO dto) {
+        if (dto.getGuid() == null) dto.setGuid(UUID.randomUUID().toString().replace("-", ""));
+        return mapper.addArticle(dto);
+    }
+
+    public int updateArticle(ArticleDTO dto) {
+        return mapper.updateArticle(dto);
+    }
+
+    public int deleteArticle(String g) {
+        return mapper.deleteArticle(g);
+    }
+
+    public List<ArticleDTO> getArticleTop5(String type) {
+        return mapper.getArticleTop5(type);
+    }
 }

+ 26 - 7
gw-hzz/src/main/java/com/goldenwater/hzz/service/SupervisionService.java

@@ -1,17 +1,36 @@
 package com.goldenwater.hzz.service;
+
+import com.github.pagehelper.PageHelper;
 import com.goldenwater.hzz.domain.SupervisionInfoDTO;
 import com.goldenwater.hzz.mapper.SupervisionMapper;
-import com.github.pagehelper.PageHelper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
 import java.util.List;
 
 @Service
 public class SupervisionService {
-    @Autowired private SupervisionMapper mapper;
-    public List<SupervisionInfoDTO> getSupervisionList(int p, int s) { PageHelper.startPage(p,s); return mapper.getSupervisionList(); }
-    public List<SupervisionInfoDTO> getAttachmentByGuid(String g) { return mapper.getAttachmentByGuid(g); }
-    public List<SupervisionInfoDTO> getDivisionByGuid(String g) { return mapper.getDivisionByGuid(g); }
-    public List<SupervisionInfoDTO> getResultByGuid(String g) { return mapper.getResultByGuid(g); }
-    public int audit(String g, String a, String ai) { return mapper.audit(g,a,ai); }
+    @Autowired
+    private SupervisionMapper mapper;
+
+    public List<SupervisionInfoDTO> getSupervisionList(int p, int s) {
+        PageHelper.startPage(p, s);
+        return mapper.getSupervisionList();
+    }
+
+    public List<SupervisionInfoDTO> getAttachmentByGuid(String g) {
+        return mapper.getAttachmentByGuid(g);
+    }
+
+    public List<SupervisionInfoDTO> getDivisionByGuid(String g) {
+        return mapper.getDivisionByGuid(g);
+    }
+
+    public List<SupervisionInfoDTO> getResultByGuid(String g) {
+        return mapper.getResultByGuid(g);
+    }
+
+    public int audit(String g, String a, String ai) {
+        return mapper.audit(g, a, ai);
+    }
 }

+ 21 - 4
gw-hzz/src/main/resources/mapper/hzz/AssessMapper.xml

@@ -18,11 +18,28 @@
         WHERE A.PARENT_AD_CODE=${adCode} AND A.EFF_DATE&lt;=TO_DATE(${effDate},'YYYY-MM-DD') AND (A.EXPR_DATE IS NULL OR TO_DATE(${effDate},'YYYY-MM-DD')&lt;=A.EXPR_DATE)
     </select>
     <select id="getMethodFile" resultType="com.goldenwater.hzz.domain.AssessFileDTO">
-        SELECT A.AD_CODE AS "adCode", A.ASS_GUID AS "assGuid", A.ASS_NAME AS "assName", A.ENTER_UNIT AS "enterUnit", TO_CHAR(A.ENTER_TM,'YYYY-MM-DD') AS "enterTm", A.TOTAL_POINTS AS "totalPoints", A.ACCEPTANCE_LINE AS "acceptanceLine", A.WELL_LINE AS "wellLine", A.EXCELLENT_LINE AS "excellentLine", C.MD_NAME AS "mdName", C.FILE_TITL AS "fileTitl", C.FILE_PATH AS "filePath"
+        SELECT A.AD_CODE                         AS "adCode",
+               A.ASS_GUID                        AS "assGuid",
+               A.ASS_NAME                        AS "assName",
+               A.ENTER_UNIT                      AS "enterUnit",
+               TO_CHAR(A.ENTER_TM, 'YYYY-MM-DD') AS "enterTm",
+               A.TOTAL_POINTS                    AS "totalPoints",
+               A.ACCEPTANCE_LINE                 AS "acceptanceLine",
+               A.WELL_LINE                       AS "wellLine",
+               A.EXCELLENT_LINE                  AS "excellentLine",
+               C.MD_NAME                         AS "mdName",
+               C.FILE_TITL                       AS "fileTitl",
+               C.FILE_PATH                       AS "filePath"
         FROM ATT_RV_ASSESS A
-        LEFT JOIN REL_MD_OBJ B ON A.ASS_GUID=B.OBJ_GUID AND B.OBJ_TAB_CODE='ATT_RV_ASSESS' AND B.FROM_DATE&lt;=TO_DATE(#{effDate},'YYYY-MM-DD') AND (B.TO_DATE IS NULL OR B.TO_DATE&gt;=TO_DATE(#{effDate},'YYYY-MM-DD'))
-        LEFT JOIN ATT_MD_BASE C ON B.MD_GUID=C.MD_CODE AND C.FROM_DATE&lt;=TO_DATE(#{effDate},'YYYY-MM-DD') AND (C.TO_DATE IS NULL OR TO_DATE(#{effDate},'YYYY-MM-DD')&gt;=C.TO_DATE)
-        WHERE A.AD_CODE=#{adCode} AND A.EFF_DATE&lt;TO_DATE(#{effDate},'YYYY-MM-DD') AND (A.EXPR_DATE IS NULL OR TO_DATE(#{effDate},'YYYY-MM-DD')&gt;A.EXPR_DATE)
+                 LEFT JOIN REL_MD_OBJ B ON A.ASS_GUID = B.OBJ_GUID AND B.OBJ_TAB_CODE = 'ATT_RV_ASSESS' AND
+                                           B.FROM_DATE &lt;= TO_DATE(#{effDate}, 'YYYY-MM-DD') AND
+                                           (B.TO_DATE IS NULL OR B.TO_DATE &gt;= TO_DATE(#{effDate}, 'YYYY-MM-DD'))
+                 LEFT JOIN ATT_MD_BASE C
+                           ON B.MD_GUID = C.MD_CODE AND C.FROM_DATE &lt;= TO_DATE(#{effDate}, 'YYYY-MM-DD') AND
+                              (C.TO_DATE IS NULL OR TO_DATE(#{effDate}, 'YYYY-MM-DD') &gt;= C.TO_DATE)
+        WHERE A.AD_CODE = #{adCode}
+          AND A.EFF_DATE &lt; TO_DATE(#{effDate}, 'YYYY-MM-DD')
+          AND (A.EXPR_DATE IS NULL OR TO_DATE(#{effDate}, 'YYYY-MM-DD') &gt; A.EXPR_DATE)
     </select>
     <select id="getAttFileText" resultType="com.goldenwater.hzz.domain.AssessScoreDTO">
         SELECT * FROM ATT_FILE_TEXT WHERE MD_CODE=#{mdCode} AND EFF_DATE&lt;#{effDate} AND (EXPR_DATE&gt;#{exprDate} OR EXPR_DATE IS NULL)

+ 3 - 3
gw-hzz/src/main/resources/mapper/hzz/EventClearMapper.xml

@@ -22,10 +22,10 @@
         ORDER BY EV.FIND_TS DESC
     </select>
     <select id="findListByAdCode" resultType="com.goldenwater.hzz.domain.EventDTO">
-        SELECT EV.GUID AS "guid", EV.EV_CODE AS "evCode", EV.AD_CODE AS "adCode", AD.AD_NAME AS "adName",
-               EV.OBJ_TYPE AS "objectType", EV.OBJ_CODE AS "objectId",
+        SELECT EV.GUID, EV.EV_CODE, EV.AD_CODE, AD.AD_NAME,
+               EV.OBJ_TYPE, EV.OBJ_CODE,
                CASE WHEN EV.OBJ_TYPE='REA' THEN REA.REA_NAME WHEN EV.OBJ_TYPE='LKS' THEN LKS.LKS_NAME ELSE RER.RER_NAME END AS "objectName",
-               EV.EV_TYPE AS "evType", EV.EV_DESC AS "eventDesc", EV.LOC AS "eventAddress",
+               EV.EV_TYPE, EV.EV_DESC AS "eventDesc", EV.LOC AS "eventAddress",
                EV.STATUS AS "status", EV.DEAL_DESC AS "dealDesc",
                TO_CHAR(EV.FIND_TS,'YYYY-MM-DD HH24:MI:SS') AS "findTs",
                TO_CHAR(EV.DONE_DATE,'YYYY-MM-DD HH24:MI:SS') AS "doneDate",

+ 15 - 5
gw-hzz/src/main/resources/mapper/hzz/SupervisionMapper.xml

@@ -1,9 +1,19 @@
 <?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="com.goldenwater.hzz.mapper.SupervisionMapper">
-    <select id="getSupervisionList" resultType="com.goldenwater.hzz.domain.SupervisionInfoDTO">SELECT * FROM GW_SUPERVISION_INFO</select>
-    <select id="getAttachmentByGuid" resultType="com.goldenwater.hzz.domain.SupervisionInfoDTO">SELECT * FROM GW_SUPERVISION_ATTACHMENT WHERE SUPERVISION_GUID=#{guid}</select>
-    <select id="getDivisionByGuid" resultType="com.goldenwater.hzz.domain.SupervisionInfoDTO">SELECT * FROM GW_SUPERVISION_DIVISION WHERE SUPERVISION_GUID=#{guid}</select>
-    <select id="getResultByGuid" resultType="com.goldenwater.hzz.domain.SupervisionInfoDTO">SELECT * FROM GW_SUPERVISION_RESULT WHERE SUPERVISION_GUID=#{guid}</select>
-    <update id="audit">UPDATE GW_SUPERVISION_INFO SET STATUS=#{audit}, AUDIT_INFO=#{auditInfo} WHERE GUID=#{guid}</update>
+    <select id="getSupervisionList" resultType="com.goldenwater.hzz.domain.SupervisionInfoDTO">SELECT *
+                                                                                               FROM ATT_COUNCILOR_ASSESS</select>
+    <select id="getAttachmentByGuid" resultType="com.goldenwater.hzz.domain.SupervisionInfoDTO">SELECT *
+                                                                                                FROM GW_SUPERVISION_ATTACHMENT
+                                                                                                WHERE SUPERVISION_GUID = #{guid}</select>
+    <select id="getDivisionByGuid" resultType="com.goldenwater.hzz.domain.SupervisionInfoDTO">SELECT *
+                                                                                              FROM GW_SUPERVISION_DIVISION
+                                                                                              WHERE SUPERVISION_GUID = #{guid}</select>
+    <select id="getResultByGuid" resultType="com.goldenwater.hzz.domain.SupervisionInfoDTO">SELECT *
+                                                                                            FROM GW_SUPERVISION_RESULT
+                                                                                            WHERE SUPERVISION_GUID = #{guid}</select>
+    <update id="audit">UPDATE GW_SUPERVISION_INFO
+                       SET STATUS=#{audit},
+                           AUDIT_INFO=#{auditInfo}
+                       WHERE GUID = #{guid}</update>
 </mapper>

+ 3 - 0
gw-ui/src/router/index.js

@@ -94,6 +94,9 @@ export const constantRoutes = [
   {
     path: '/sjml', component: FrontLayout, children: [{ path: '', component: () => import('@/views/hlgl/eventclear/index'), meta: { title: '一湖两河清四乱' } }]
   },
+  {
+    path: '/mcaf', component: FrontLayout, children: [{ path: '', component: () => import('@/views/hlgl/mcaf/index'), meta: { title: '明察暗访管理' } }]
+  },
 
   {
     path: '/lock',

+ 114 - 55
gw-ui/src/views/hlgl/eventclear/index.vue

@@ -1,66 +1,125 @@
 <template>
-  <div class="app-container">
-    <el-form :model="queryParams" :inline="true" v-show="showSearch">
-      <el-form-item label="行政区划">
-        <el-input v-model="queryParams.adCode" placeholder="请输入行政区划编码" clearable style="width:180px" />
-      </el-form-item>
-      <el-form-item label="事件类型">
-        <el-input v-model="queryParams.evType" placeholder="请输入事件类型" clearable style="width:150px" />
-      </el-form-item>
-      <el-form-item label="关键词">
-        <el-input v-model="queryParams.keyWord" placeholder="河段名/描述/区划" clearable style="width:200px" @keyup.enter="getList" />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="Search" @click="getList">搜索</el-button>
-        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
+  <div class="eventclear-page">
+    <!-- 搜索 -->
+    <el-card shadow="never" class="search-card">
+      <el-form :model="q" :inline="true" size="small">
+        <el-form-item label="所在河湖">
+          <el-select v-model="q.objectType" placeholder="全部" clearable style="width:130px" @change="getList">
+            <el-option label="太湖" value="0" /><el-option label="望虞河" value="1" /><el-option label="太浦河" value="2" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="处理状态">
+          <el-select v-model="q.status" placeholder="全部" clearable style="width:110px" @change="getList">
+            <el-option label="待处理" value="0" /><el-option label="处理中" value="1" /><el-option label="完成" value="2" /><el-option label="完结" value="3" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="事件类型">
+          <el-select v-model="q.evType" placeholder="全部" clearable style="width:110px" @change="getList">
+            <el-option label="乱占" value="1" /><el-option label="乱采" value="2" /><el-option label="乱堆" value="3" /><el-option label="乱建" value="4" /><el-option label="其他" value="5" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="关键词"><el-input v-model="q.keyWord" placeholder="河段名/描述" clearable style="width:160px" @keyup.enter="getList" /></el-form-item>
+        <el-form-item><el-button type="primary" icon="Search" @click="getList">搜索</el-button></el-form-item>
+        <el-form-item><el-button @click="resetQ">重置</el-button></el-form-item>
+      </el-form>
+    </el-card>
 
-    <el-row :gutter="10" class="mb8">
-      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList" />
-    </el-row>
+    <!-- 列表 -->
+    <el-card shadow="never">
+      <el-table :data="list" border size="small" v-loading="loading" @row-click="showDetail">
+        <el-table-column type="index" label="#" width="50" />
+        <el-table-column prop="objectName" label="河段名称" show-overflow-tooltip width="140" />
+        <el-table-column prop="adName" label="所属地区" width="100" />
+        <el-table-column label="事件类型" width="80">
+          <template #default="{row}">{{ evTypeMap[row.evType] || row.evType }}</template>
+        </el-table-column>
+        <el-table-column prop="eventDesc" label="问题描述" show-overflow-tooltip min-width="200" />
+        <el-table-column label="状态" width="80">
+          <template #default="{row}">{{ statusMap[row.status] || row.status }}</template>
+        </el-table-column>
+        <el-table-column prop="dealDesc" label="整改情况" show-overflow-tooltip width="150" />
+        <el-table-column prop="findTs" label="发现时间" width="120" />
+        <el-table-column prop="userName" label="上报人" width="100" />
+      </el-table>
+      <pagination v-show="total>0" :total="total" v-model:page="pageNum" v-model:limit="pageSize" @pagination="getList" />
+    </el-card>
 
-    <el-table v-loading="loading" :data="eventList" border>
-      <el-table-column label="序号" type="index" width="55" align="center" />
-      <el-table-column label="河段名称" prop="OBJECT_NAME" :show-overflow-tooltip="true" width="150" />
-      <el-table-column label="事件类型" prop="EV_TYPE" width="110" />
-      <el-table-column label="事件类别" prop="EVENT_TYPES" width="110" />
-      <el-table-column label="问题描述" prop="EVENT_DESC" :show-overflow-tooltip="true" min-width="200" />
-      <el-table-column label="当前情况" prop="STATUS" width="100" />
-      <el-table-column label="整改情况" prop="DEAL_DESC" :show-overflow-tooltip="true" width="150" />
-      <el-table-column label="检查情况" width="100">
-        <template #default="scope">{{ scope.row.STATUS === '1' ? '已整改' : '未整改' }}</template>
-      </el-table-column>
-      <el-table-column label="发现时间" prop="FIND_TS" width="160" />
-      <el-table-column label="整改完成" prop="DONE_DATE" width="160" />
-      <el-table-column label="上报人" prop="USER_NAME" width="100" />
-      <el-table-column label="行政区域" prop="AD_NAME" width="150" />
-    </el-table>
-    <pagination v-show="total > 0" :total="total" v-model:page="pageNum" v-model:limit="pageSize" @pagination="getList" />
+    <!-- 详情弹窗 -->
+    <el-dialog v-model="dlg" :title="cur?.objectName || '事件详情'" width="900px" top="5vh">
+      <div class="detail-grid" v-if="cur">
+        <div class="detail-left">
+          <table class="info-table">
+            <tr><td class="lbl">河段名称</td><td>{{ cur.objectName }}</td></tr>
+            <tr><td class="lbl">问题描述</td><td>{{ cur.eventDesc }}</td></tr>
+            <tr><td class="lbl">当前情况</td><td>{{ cur.curs || '-' }}</td></tr>
+            <tr><td class="lbl">整改情况</td><td>{{ cur.dealDesc || '-' }}</td></tr>
+            <tr><td class="lbl">检查情况</td><td>{{ cur.checkQk || '-' }}</td></tr>
+            <tr><td class="lbl">所属省份</td><td>{{ cur.adName }}</td><td class="lbl">事件类型</td><td>{{ evTypeMap[cur.evType] }}</td></tr>
+            <tr><td class="lbl">发现日期</td><td>{{ cur.findTs }}</td><td class="lbl">完成日期</td><td>{{ cur.doneDate }}</td></tr>
+            <tr><td class="lbl">经度</td><td>{{ cur.longitude }}</td><td class="lbl">纬度</td><td>{{ cur.latitude }}</td></tr>
+          </table>
+          <!-- 图片轮播 -->
+          <div v-if="cur.images?.length" style="margin-top:12px">
+            <el-carousel height="220px" indicator-position="outside">
+              <el-carousel-item v-for="(img,i) in cur.images" :key="i">
+                <img :src="img" style="width:100%;height:100%;object-fit:contain;cursor:pointer" @click="previewImg(img)" />
+              </el-carousel-item>
+            </el-carousel>
+          </div>
+        </div>
+        <div class="detail-right">
+          <h4>检查记录</h4>
+          <div v-if="cur.checks?.length">
+            <div v-for="(c,i) in cur.checks" :key="i" class="check-item">
+              <p><strong>检查人:</strong>{{ c.fPerson }} &nbsp; <strong>日期:</strong>{{ c.cDate }}</p>
+              <p><strong>情况:</strong>{{ c.cState }}</p>
+              <div v-if="c.files?.length" style="display:flex;gap:6px;flex-wrap:wrap">
+                <img v-for="(f,j) in c.files" :key="j" :src="f" style="width:80px;height:60px;object-fit:cover;cursor:pointer" @click="previewImg(f)" />
+              </div>
+            </div>
+          </div>
+          <el-empty v-else description="暂无检查记录" :image-size="40" />
+        </div>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script setup>
-import { ref, onMounted } from 'vue'
-import { listEventClear } from '@/api/hzz/eventclear'
+import {ref, onMounted} from 'vue'
+import {listEventClear} from '@/api/hzz/eventclear'
 
-const showSearch = ref(true)
-const loading = ref(false)
-const total = ref(0)
-const pageNum = ref(1)
-const pageSize = ref(10)
-const eventList = ref([])
-const queryParams = ref({ adCode: '', evType: '', keyWord: '', objectType: '' })
+const loading=ref(false),list=ref([]),total=ref(0),pageNum=ref(1),pageSize=ref(10)
+const q=ref({objectType:'',status:'',evType:'',keyWord:''})
+const dlg=ref(false),cur=ref(null)
 
-const getList = async () => {
-  loading.value = true
-  try {
-    const res = await listEventClear({ ...queryParams.value, pageNum: pageNum.value, pageSize: pageSize.value })
-    eventList.value = res.rows || []
-    total.value = res.total || 0
-  } finally { loading.value = false }
-}
-const resetQuery = () => { queryParams.value = { adCode: '', evType: '', keyWord: '', objectType: '' }; getList() }
+const evTypeMap={1:'乱占',2:'乱采',3:'乱堆',4:'乱建',5:'其他'}
+const statusMap={0:'待处理',1:'处理中',2:'完成',3:'完结'}
 
-onMounted(() => getList())
+const getList=async()=>{
+  loading.value=true
+  try{const r=await listEventClear({...q.value,pageNum:pageNum.value,pageSize:pageSize.value});list.value=r.rows||[];total.value=r.total||0}
+  finally{loading.value=false}
+}
+const resetQ=()=>{q.value={objectType:'',status:'',evType:'',keyWord:''};getList()}
+const showDetail=(row)=>{
+  cur.value={...row,images:row.images||[],checks:row.checks||[]}
+  dlg.value=true
+}
+const previewImg=(url)=>{window.open(url)}
+onMounted(()=>getList())
 </script>
+
+<style scoped>
+.eventclear-page{padding:16px 20px;height:calc(100vh - 84px);overflow-y:auto;background:#f0f2f5}
+.search-card{margin-bottom:12px;border-radius:8px}
+.detail-grid{display:flex;gap:20px}
+.detail-left{flex:6}
+.detail-right{flex:4;border-left:1px solid #eee;padding-left:16px}
+.detail-right h4{margin:0 0 10px;font-size:14px;color:#333}
+.info-table{width:100%;border-collapse:collapse}
+.info-table td{padding:6px 8px;border:1px solid #e8e8e8;font-size:13px}
+.info-table .lbl{background:#f5f7fa;width:80px;text-align:right;color:#888}
+.check-item{background:#fafbfc;padding:10px;border-radius:6px;margin-bottom:8px}
+.check-item p{margin:4px 0;font-size:13px}
+</style>

+ 32 - 16
gw-ui/src/views/hlgl/khwj/index.vue

@@ -1,36 +1,52 @@
 <template>
   <div class="app-container">
-    <el-table v-loading="loading" :data="list" border>
-      <el-table-column label="考核名称" prop="ASS_NAME" show-overflow-tooltip min-width="180" />
-      <el-table-column label="文件标题" prop="FILE_TITL" show-overflow-tooltip min-width="200" />
-      <el-table-column label="提交单位" prop="ENTER_UNIT" width="160" />
-      <el-table-column label="总分" prop="TOTAL_POINTS" width="80" />
-      <el-table-column label="通过线" prop="ACCEPTANCE_LINE" width="80" />
-      <el-table-column label="提交时间" prop="ENTER_TM" width="120" />
-      <el-table-column label="附件" width="100">
+    <el-table v-loading="loading" :data="list" border size="small">
+      <el-table-column label="文件名称" prop="fileName" show-overflow-tooltip>
         <template #default="{row}">
-          <el-link v-if="row.FILE_PATH" :href="row.FILE_PATH" target="_blank" type="primary">查看</el-link>
-          <span v-else>-</span>
+          <el-link type="primary" @click="showDetail(row)">{{ row.fileName || row.FILE_NAME }}</el-link>
         </template>
       </el-table-column>
+      <el-table-column label="文号" prop="wh" width="200">
+        <template #default="{row}">{{ row.wh || row.WH }}</template>
+      </el-table-column>
+      <el-table-column label="出台时间" width="140">
+        <template #default="{row}">{{ fmtDate(row.startDate || row.START_DATE) }}</template>
+      </el-table-column>
     </el-table>
+
+    <!-- 文件详情弹窗 -->
+    <el-dialog v-model="detailVisible" :title="detailItem?.fileName || detailItem?.wpName || detailItem?.sysName" width="700px">
+      <iframe-view :url="detailItem?.url" style="height: 79vh;"></iframe-view>
+    </el-dialog>
   </div>
 </template>
 
 <script setup>
-import { ref, onMounted } from 'vue'
-import { getMethodFile } from '@/api/hzz/assess'
+import {onMounted, ref} from 'vue'
+import {listFile} from '@/api/hzz/rule'
+import IframeView from "@/views/hlgl/IframeView.vue";
 
 const loading = ref(false)
 const list = ref([])
+const detailVisible = ref(false)
+const detailItem = ref(null)
+
+const showDetail = (item) => {
+  detailVisible.value = true
+  detailItem.value = item
+}
+
+const fmtDate = (d) => d ? String(d).substring(0, 10) : '-'
 
 onMounted(async () => {
   loading.value = true
   try {
     // 默认查询太湖流域考核文件
-    const res = await getMethodFile('', new Date().toISOString().slice(0, 10))
-    list.value = res.data || []
-  } catch { /* 接口可能未就绪 */ }
-  finally { loading.value = false }
+    const res = await listFile({types: 'xgwj', pageNum: 1, pageSize: 500})
+    list.value = res.rows || []
+  } catch { /* 接口可能未就绪 */
+  } finally {
+    loading.value = false
+  }
 })
 </script>

+ 97 - 0
gw-ui/src/views/hlgl/mcaf/index.vue

@@ -0,0 +1,97 @@
+<template>
+  <div class="mcaf-page">
+    <el-card shadow="never">
+      <template #header>一湖两河清四乱 — 数据管理</template>
+      <el-form :model="q" :inline="true" size="small">
+        <el-form-item label="所在河湖">
+          <el-select v-model="q.objectType" placeholder="全部" clearable style="width:130px" @change="getList">
+            <el-option label="太湖" value="0"/><el-option label="望虞河" value="1"/><el-option label="太浦河" value="2"/><el-option label="其他" value="3"/>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-select v-model="q.status" placeholder="全部" clearable style="width:110px" @change="getList">
+            <el-option label="待处理" value="0"/><el-option label="处理中" value="1"/><el-option label="完成" value="2"/><el-option label="完结" value="3"/>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="关键词"><el-input v-model="q.keyWord" placeholder="搜索" clearable style="width:160px" @keyup.enter="getList"/></el-form-item>
+        <el-form-item><el-button type="primary" icon="Search" @click="getList">搜索</el-button></el-form-item>
+        <el-form-item><el-button type="success" icon="Plus" @click="addRow">新增</el-button></el-form-item>
+      </el-form>
+
+      <el-table :data="list" border size="small" v-loading="loading" @row-click="editRow">
+        <el-table-column type="index" label="#" width="50" />
+        <el-table-column prop="objectName" label="河段名称" show-overflow-tooltip width="140" />
+        <el-table-column prop="adName" label="所属地区" width="100" />
+        <el-table-column prop="evType" label="事件类型" width="80" />
+        <el-table-column prop="eventDesc" label="问题描述" show-overflow-tooltip min-width="200" />
+        <el-table-column prop="status" label="状态" width="80" />
+        <el-table-column prop="findTs" label="发现时间" width="120" />
+        <el-table-column label="操作" width="140" fixed="right">
+          <template #default="{row}">
+            <el-button link type="primary" size="small" @click.stop="editRow(row)">编辑</el-button>
+            <el-button link type="danger" size="small" @click.stop="delRow(row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-show="total>0" :total="total" v-model:page="pageNum" v-model:limit="pageSize" @pagination="getList"/>
+    </el-card>
+
+    <!-- 编辑弹窗 -->
+    <el-dialog v-model="editDlg" :title="isNew?'新增事件':'编辑事件'" width="700px" top="5vh" @closed="resetForm">
+      <el-form ref="fRef" :model="form" :rules="rules" label-width="100px" size="small">
+        <el-row :gutter="16">
+          <el-col :span="12"><el-form-item label="河段名称" prop="objectName"><el-input v-model="form.objectName"/></el-form-item></el-col>
+          <el-col :span="12"><el-form-item label="所属地区" prop="adName"><el-input v-model="form.adName"/></el-form-item></el-col>
+          <el-col :span="12"><el-form-item label="事件类型" prop="evType">
+            <el-select v-model="form.evType" style="width:100%"><el-option label="乱占" value="1"/><el-option label="乱采" value="2"/><el-option label="乱堆" value="3"/><el-option label="乱建" value="4"/><el-option label="其他" value="5"/></el-select>
+          </el-form-item></el-col>
+          <el-col :span="12"><el-form-item label="状态" prop="status">
+            <el-select v-model="form.status" style="width:100%"><el-option label="待处理" value="0"/><el-option label="处理中" value="1"/><el-option label="完成" value="2"/><el-option label="完结" value="3"/></el-select>
+          </el-form-item></el-col>
+          <el-col :span="24"><el-form-item label="问题描述" prop="eventDesc"><el-input v-model="form.eventDesc" type="textarea" :rows="3"/></el-form-item></el-col>
+          <el-col :span="24"><el-form-item label="整改情况" prop="dealDesc"><el-input v-model="form.dealDesc" type="textarea" :rows="2"/></el-form-item></el-col>
+          <el-col :span="12"><el-form-item label="发现时间"><el-date-picker v-model="form.findTs" type="date" value-format="YYYY-MM-DD" style="width:100%"/></el-form-item></el-col>
+          <el-col :span="12"><el-form-item label="完成时间"><el-date-picker v-model="form.doneDate" type="date" value-format="YYYY-MM-DD" style="width:100%"/></el-form-item></el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <el-button @click="editDlg=false">取消</el-button>
+        <el-button type="primary" @click="submitForm">保存</el-button>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import {ref,reactive,onMounted} from 'vue'
+import {listEventClear, searchEventClear} from '@/api/hzz/eventclear'
+import {ElMessage,ElMessageBox} from 'element-plus'
+
+const loading=ref(false),list=ref([]),total=ref(0),pageNum=ref(1),pageSize=ref(10)
+const q=ref({objectType:'',status:'',keyWord:''})
+const editDlg=ref(false),isNew=ref(false),fRef=ref(null)
+const form=reactive({objectName:'',adName:'',evType:'1',status:'0',eventDesc:'',dealDesc:'',findTs:'',doneDate:''})
+const rules={objectName:[{required:true,message:'必填'}],eventDesc:[{required:true,message:'必填'}]}
+
+const getList=async()=>{
+  loading.value=true
+  try{const r=await listEventClear({...q.value,pageNum:pageNum.value,pageSize:pageSize.value});list.value=r.rows||[];total.value=r.total||0}
+  finally{loading.value=false}
+}
+const resetForm=()=>{Object.keys(form).forEach(k=>form[k]='');form.evType='1';form.status='0'}
+const addRow=()=>{isNew.value=true;resetForm();editDlg.value=true}
+const editRow=(row)=>{isNew.value=false;Object.assign(form,row);editDlg.value=true}
+const delRow=async(row)=>{
+  await ElMessageBox.confirm('确认删除?','提示',{type:'warning'})
+  try{await searchEventClear({guid:row.guid},1,10);ElMessage.success('已删除');getList()}catch{ElMessage.error('删除失败')}
+}
+const submitForm=async()=>{
+  await fRef.value?.validate()
+  try{await searchEventClear({...form},1,10);ElMessage.success(isNew.value?'新增成功':'保存成功');editDlg.value=false;getList()}catch{ElMessage.error('操作失败')}
+}
+onMounted(()=>getList())
+</script>
+
+<style scoped>
+.mcaf-page{padding:16px 20px;height:calc(100vh - 84px);overflow-y:auto;background:#f0f2f5}
+</style>

+ 46 - 17
gw-ui/src/views/hlgl/supervision/index.vue

@@ -1,10 +1,14 @@
 <template>
   <div class="app-container">
     <el-table v-loading="loading" :data="supervisionList" border>
-      <el-table-column label="序号" type="index" width="55" align="center" />
-      <el-table-column label="GUID" prop="GUID" width="100" :show-overflow-tooltip="true" />
-      <el-table-column label="状态" prop="STATUS" width="100" />
-      <el-table-column label="审核信息" prop="AUDIT_INFO" :show-overflow-tooltip="true" min-width="180" />
+      <el-table-column label="序号" type="index" width="55" align="center"/>
+      <el-table-column label="GUID" prop="crCode" width="100" :show-overflow-tooltip="true"/>
+      <el-table-column label="状态" prop="crState" width="100">
+        <template #default="scope">
+          {{ crStateFilter(scope.row) }}
+        </template>
+      </el-table-column>
+      <el-table-column label="审核信息" prop="crContent" :show-overflow-tooltip="true" min-width="180"/>
       <el-table-column label="操作" align="center" width="150" fixed="right">
         <template #default="scope">
           <el-button link type="primary" icon="View" @click="handleDetail(scope.row)">详情</el-button>
@@ -12,25 +16,26 @@
         </template>
       </el-table-column>
     </el-table>
-    <pagination v-show="total > 0" :total="total" v-model:page="pageNum" v-model:limit="pageSize" @pagination="getList" />
+    <pagination v-show="total > 0" :total="total" v-model:page="pageNum" v-model:limit="pageSize"
+                @pagination="getList"/>
 
     <!-- 详情对话框 -->
     <el-dialog title="督导详情" v-model="detailVisible" width="800px" append-to-body>
       <el-tabs>
         <el-tab-pane label="附件">
           <el-table :data="attachments" border size="small">
-            <el-table-column label="GUID" prop="GUID" :show-overflow-tooltip="true" />
-            <el-table-column label="文件名" prop="FILE_NAME" :show-overflow-tooltip="true" />
+            <el-table-column label="GUID" prop="guid" :show-overflow-tooltip="true"/>
+            <el-table-column label="文件名" prop="fileName" :show-overflow-tooltip="true"/>
           </el-table>
         </el-tab-pane>
         <el-tab-pane label="分工">
           <el-table :data="divisions" border size="small">
-            <el-table-column label="GUID" prop="GUID" :show-overflow-tooltip="true" />
+            <el-table-column label="GUID" prop="guid" :show-overflow-tooltip="true"/>
           </el-table>
         </el-tab-pane>
         <el-tab-pane label="结果">
           <el-table :data="results" border size="small">
-            <el-table-column label="GUID" prop="GUID" :show-overflow-tooltip="true" />
+            <el-table-column label="GUID" prop="guid" :show-overflow-tooltip="true"/>
           </el-table>
         </el-tab-pane>
       </el-tabs>
@@ -39,8 +44,15 @@
     <!-- 审核对话框 -->
     <el-dialog title="审核督导" v-model="auditVisible" width="500px" append-to-body>
       <el-form :model="auditForm" label-width="80px">
-        <el-form-item label="审核结果"><el-select v-model="auditForm.audit" style="width:100%"><el-option label="通过" value="1" /><el-option label="不通过" value="0" /></el-select></el-form-item>
-        <el-form-item label="审核意见"><el-input v-model="auditForm.auditInfo" type="textarea" :rows="3" /></el-form-item>
+        <el-form-item label="审核结果">
+          <el-select v-model="auditForm.audit" style="width:100%">
+            <el-option label="通过" value="1"/>
+            <el-option label="不通过" value="0"/>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="审核意见">
+          <el-input v-model="auditForm.auditInfo" type="textarea" :rows="3"/>
+        </el-form-item>
       </el-form>
       <template #footer>
         <el-button @click="auditVisible = false">取消</el-button>
@@ -51,9 +63,9 @@
 </template>
 
 <script setup>
-import { ref, reactive, onMounted } from 'vue'
-import { listSupervision, getSupervisionDetail, auditSupervision } from '@/api/hzz/supervision'
-import { ElMessage } from 'element-plus'
+import {onMounted, reactive, ref} from 'vue'
+import {auditSupervision, getSupervisionDetail, listSupervision} from '@/api/hzz/supervision'
+import {ElMessage} from 'element-plus'
 
 const loading = ref(false)
 const total = ref(0)
@@ -67,15 +79,17 @@ const divisions = ref([])
 const results = ref([])
 
 const auditVisible = ref(false)
-const auditForm = reactive({ guid: '', audit: '1', auditInfo: '' })
+const auditForm = reactive({guid: '', audit: '1', auditInfo: ''})
 
 const getList = async () => {
   loading.value = true
   try {
-    const res = await listSupervision({ pageNum: pageNum.value, pageSize: pageSize.value })
+    const res = await listSupervision({pageNum: pageNum.value, pageSize: pageSize.value})
     supervisionList.value = res.rows || []
     total.value = res.total || 0
-  } finally { loading.value = false }
+  } finally {
+    loading.value = false
+  }
 }
 
 const handleDetail = async (row) => {
@@ -93,6 +107,21 @@ const handleAudit = (row) => {
   auditVisible.value = true
 }
 
+const crStateFilter = (row) => {
+  switch (row.crState) {
+    case '5':
+      return '进行中'
+    case '6':
+      return '未提交'
+    case '7':
+      return '未审批'
+    case '8':
+      return '已退回'
+    case '9':
+      return '已通过'
+  }
+}
+
 const submitAudit = async () => {
   await auditSupervision(auditForm.guid, auditForm.audit, auditForm.auditInfo)
   ElMessage.success('审核完成')

+ 5 - 4
gw-ui/src/views/hlgl/wps/index.vue

@@ -23,10 +23,10 @@
 
     <el-table v-loading="loading" :data="wpsList" border>
       <el-table-column label="序号" type="index" width="55" align="center" />
-      <el-table-column label="项目名称" prop="S_PROJECT_NAME" :show-overflow-tooltip="true" min-width="180" />
-      <el-table-column label="督察情况" prop="SUPERVISION" :show-overflow-tooltip="true" min-width="200" />
-      <el-table-column label="开始时间" prop="START_DATE" width="160" />
-      <el-table-column label="结束时间" prop="END_DATE" width="160" />
+      <el-table-column label="项目名称" prop="sProjectName" :show-overflow-tooltip="true" min-width="180" />
+      <el-table-column label="督察情况" prop="supervision" :show-overflow-tooltip="true" min-width="200" />
+      <el-table-column label="开始时间" prop="startDate" width="160" />
+      <el-table-column label="结束时间" prop="endDate" width="160" />
       <el-table-column label="操作" align="center" width="150" fixed="right">
         <template #default="scope">
           <el-button link type="primary" icon="Edit" @click="handleEdit(scope.row)">修改</el-button>
@@ -40,6 +40,7 @@
     <el-dialog :title="dialogTitle" v-model="dialogVisible" width="600px" append-to-body>
       <el-form ref="formRef" :model="form" :rules="formRules" label-width="100px">
         <el-form-item label="关联项目" prop="smId"><el-input v-model="form.smId" /></el-form-item>
+        <el-form-item label="项目名称" prop="sProjectName"><el-input v-model="form.sProjectName" /></el-form-item>
         <el-form-item label="督察情况" prop="supervision"><el-input v-model="form.supervision" type="textarea" :rows="4" /></el-form-item>
         <el-form-item label="开始时间" prop="startDate"><el-date-picker v-model="form.startDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width:100%" /></el-form-item>
         <el-form-item label="结束时间" prop="endDate"><el-date-picker v-model="form.endDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width:100%" /></el-form-item>