77681 пре 1 дан
родитељ
комит
5b085db782
22 измењених фајлова са 298 додато и 56 уклоњено
  1. 1 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hazard/controller/ObjHachController.java
  2. 10 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hazard/controller/ObjHazController.java
  3. 8 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hazard/controller/TBusiHazCountController.java
  4. 2 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hazard/mapper/ObjHazMapper.java
  5. 2 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hazard/mapper/TBusiHazCountMapper.java
  6. 2 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hazard/service/IObjHazService.java
  7. 2 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hazard/service/ITBusiHazCountService.java
  8. 5 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hazard/service/impl/ObjHazServiceImpl.java
  9. 5 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hazard/service/impl/TBusiHazCountServiceImpl.java
  10. 2 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/BisOrgMonRepPeriController.java
  11. 58 6
      gw-slaj/src/main/resources/mapper/slaj/hazard/ObjHazMapper.xml
  12. 25 0
      gw-slaj/src/main/resources/mapper/slaj/hazard/TBusiHazCountMapper.xml
  13. 47 7
      gw-slaj/src/main/resources/mapper/slaj/hidd/BisOrgMonRepPeriMapper.xml
  14. 40 5
      gw-slaj/src/main/resources/mapper/slaj/hidd/TBusiHiddCountMapper.xml
  15. 18 0
      gw-ui/src/api/slaj/hazard.js
  16. 1 1
      gw-ui/src/views/slaj/hazard/chemList.vue
  17. 18 13
      gw-ui/src/views/slaj/hazard/engQuery.vue
  18. 12 6
      gw-ui/src/views/slaj/hazard/manage.vue
  19. 22 12
      gw-ui/src/views/slaj/hazard/stat.vue
  20. 3 3
      gw-ui/src/views/slaj/hazard/supervise.vue
  21. 1 1
      gw-ui/src/views/slaj/hidd/month.vue
  22. 14 2
      gw-ui/src/views/slaj/hidd/orgEngQuery.vue

+ 1 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hazard/controller/ObjHachController.java

@@ -26,6 +26,7 @@ public class ObjHachController extends BaseController {
 
     @GetMapping("/list")
     public TableDataInfo list(ObjHachVo objHachVo) {
+        objHachVo.setOrgGuid(getDeptId());
         startPage();
         List<ObjHachVo> list = objHachService.selectObjHachList(objHachVo);
         return getDataTable(list);

+ 10 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hazard/controller/ObjHazController.java

@@ -27,11 +27,20 @@ public class ObjHazController extends BaseController {
 
     @GetMapping("/list")
     public TableDataInfo list(ObjHazVo objHazVo) {
+        objHazVo.setOrgGuid(getDeptId());
         startPage();
         List<ObjHazVo> list = objHazService.selectObjHazList(objHazVo);
         return getDataTable(list);
     }
 
+    @GetMapping("/listWithScope")
+    public TableDataInfo listWithScope(ObjHazVo objHazVo) {
+        objHazVo.setOrgGuid(getDeptId());
+        startPage();
+        List<ObjHazVo> list = objHazService.selectObjHazListWithScope(objHazVo);
+        return getDataTable(list);
+    }
+
     @GetMapping("/{guid}")
     public AjaxResult getInfo(@PathVariable String guid) {
         return AjaxResult.success(objHazService.selectObjHazByGuid(guid));
@@ -69,6 +78,7 @@ public class ObjHazController extends BaseController {
         params.put("hazSort", hazSort);
         params.put("engName", engName);
         params.put("orgName", orgName);
+        params.put("orgGuid", getDeptId());
         startPage();
         List<Map<String, Object>> list = objHazService.selectHazGroupBy(params);
         return getDataTable(list);

+ 8 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hazard/controller/TBusiHazCountController.java

@@ -32,6 +32,14 @@ public class TBusiHazCountController extends BaseController {
         return getDataTable(list);
     }
 
+    @GetMapping("/listWithScope")
+    public TableDataInfo listWithScope(TBusiHazCount tBusiHazCount) {
+        tBusiHazCount.setOrgGuid(getDeptId());
+        startPage();
+        List<TBusiHazCount> list = tBusiHazCountService.selectTBusiHazCountListWithScope(tBusiHazCount);
+        return getDataTable(list);
+    }
+
     @GetMapping("/{guid}")
     public AjaxResult getInfo(@PathVariable String guid) {
         return AjaxResult.success(tBusiHazCountService.selectTBusiHazCountByGuid(guid));

+ 2 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hazard/mapper/ObjHazMapper.java

@@ -55,4 +55,6 @@ public interface ObjHazMapper {
     int deleteObjHazByGuids(String[] guids);
 
     List<java.util.Map<String, Object>> selectHazGroupBy(java.util.Map<String, Object> params);
+
+    List<ObjHazVo> selectObjHazListWithScope(ObjHazVo objHazVo);
 }

+ 2 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hazard/mapper/TBusiHazCountMapper.java

@@ -51,4 +51,6 @@ public interface TBusiHazCountMapper {
      * @return 影响行数
      */
     int deleteTBusiHazCountByGuids(String[] guids);
+
+    List<TBusiHazCount> selectTBusiHazCountListWithScope(TBusiHazCount tBusiHazCount);
 }

+ 2 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hazard/service/IObjHazService.java

@@ -53,4 +53,6 @@ public interface IObjHazService {
     int deleteObjHazByGuids(String[] guids);
 
     List<Map<String, Object>> selectHazGroupBy(Map<String, Object> params);
+
+    List<ObjHazVo> selectObjHazListWithScope(ObjHazVo objHazVo);
 }

+ 2 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hazard/service/ITBusiHazCountService.java

@@ -49,4 +49,6 @@ public interface ITBusiHazCountService {
      * @return 影响行数
      */
     int deleteTBusiHazCountByGuids(String[] guids);
+
+    List<TBusiHazCount> selectTBusiHazCountListWithScope(TBusiHazCount tBusiHazCount);
 }

+ 5 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hazard/service/impl/ObjHazServiceImpl.java

@@ -82,4 +82,9 @@ public class ObjHazServiceImpl implements IObjHazService {
     public List<Map<String, Object>> selectHazGroupBy(Map<String, Object> params) {
         return objHazMapper.selectHazGroupBy(params);
     }
+
+    @Override
+    public List<ObjHazVo> selectObjHazListWithScope(ObjHazVo objHazVo) {
+        return objHazMapper.selectObjHazListWithScope(objHazVo);
+    }
 }

+ 5 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hazard/service/impl/TBusiHazCountServiceImpl.java

@@ -75,4 +75,9 @@ public class TBusiHazCountServiceImpl implements ITBusiHazCountService {
     public int deleteTBusiHazCountByGuids(String[] guids) {
         return tBusiHazCountMapper.deleteTBusiHazCountByGuids(guids);
     }
+
+    @Override
+    public List<TBusiHazCount> selectTBusiHazCountListWithScope(TBusiHazCount tBusiHazCount) {
+        return tBusiHazCountMapper.selectTBusiHazCountListWithScope(tBusiHazCount);
+    }
 }

+ 2 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/BisOrgMonRepPeriController.java

@@ -62,6 +62,7 @@ public class BisOrgMonRepPeriController extends BaseController {
     public AjaxResult monthTotalList(@RequestParam(required = false) String repTime) {
         Map<String, Object> params = new java.util.HashMap<>();
         params.put("repTime", repTime);
+        params.put("orgGuid", getDeptId());
         List<Map<String, Object>> list = bisOrgMonRepPeriService.selectMonthTotalList(params);
         return AjaxResult.success(list);
     }
@@ -74,6 +75,7 @@ public class BisOrgMonRepPeriController extends BaseController {
         params.put("repTime", repTime);
         params.put("unitType", unitType);
         params.put("repOrgGuid", orgGuid);
+        params.put("orgGuid", getDeptId());
         List<Map<String, Object>> list = bisOrgMonRepPeriService.selectMonthListStats(params);
         return AjaxResult.success(list);
     }

+ 58 - 6
gw-slaj/src/main/resources/mapper/slaj/hazard/ObjHazMapper.xml

@@ -177,18 +177,28 @@
     </delete>
 
     <select id="selectHazGroupBy" parameterType="java.util.Map" resultType="java.util.LinkedHashMap">
+        WITH RECURSIVE subOrgs AS (
+            SELECT guid, org_name FROM att_org_base WHERE guid = #{orgGuid}
+            UNION ALL
+            SELECT e.org_guid, o.org_name FROM att_org_ext e
+            LEFT JOIN att_org_base o ON o.guid = e.org_guid
+            WHERE e.admin_wiun_guid = #{orgGuid}
+            UNION ALL
+            SELECT b.guid, b.org_name FROM att_org_base b
+            INNER JOIN subOrgs s ON b.pguid = s.guid
+        )
         SELECT
             e.eng_name AS engName,
-            o.org_name AS orgName,
+            s.org_name AS orgName,
             t.tend_name AS tendName,
             count(h.guid) AS totalCount,
             coalesce(sum(case when h.hidd_grad = '1' then 1 else 0 end), 0) AS normalCount,
             coalesce(sum(case when h.hidd_grad = '2' then 1 else 0 end), 0) AS majorCount,
             coalesce(sum(case when h.if_control = 'Y' then 1 else 0 end), 0) AS controlledCount,
             coalesce(sum(case when (h.if_control is null or h.if_control != 'Y') then 1 else 0 end), 0) AS uncontrolledCount
-        FROM obj_haz h
+        FROM subOrgs s
+        LEFT JOIN obj_haz h ON h.org_guid = s.guid
         LEFT JOIN obj_eng e ON h.eng_guid = e.guid
-        LEFT JOIN att_org_base o ON h.org_guid = o.guid
         LEFT JOIN obj_tend t ON h.tend_guid = t.guid
         <where>
             <if test="hazSort != null and hazSort != ''">
@@ -198,11 +208,53 @@
                 </choose>
             </if>
             <if test="engName != null and engName != ''">AND e.eng_name like '%' || #{engName} || '%'</if>
-            <if test="orgName != null and orgName != ''">AND o.org_name like '%' || #{orgName} || '%'</if>
+            <if test="orgName != null and orgName != ''">AND s.org_name like '%' || #{orgName} || '%'</if>
         </where>
-        GROUP BY                e.eng_name,
+        GROUP BY e.eng_name,
                t.tend_name,
-               o.org_name
+               s.org_name
         ORDER BY totalCount DESC
     </select>
+
+    <select id="selectObjHazListWithScope" parameterType="com.goldenwater.slaj.hazard.domain.ObjHazVo" resultMap="ObjHazResult">
+        WITH RECURSIVE subOrgs AS (
+            SELECT guid, org_name FROM att_org_base WHERE guid = #{orgGuid}
+            UNION ALL
+            SELECT e.org_guid, o.org_name FROM att_org_ext e
+            LEFT JOIN att_org_base o ON o.guid = e.org_guid
+            WHERE e.admin_wiun_guid = #{orgGuid}
+            UNION ALL
+            SELECT b.guid, b.org_name FROM att_org_base b
+            INNER JOIN subOrgs s ON b.pguid = s.guid
+        )
+        SELECT h.guid, h.haz_code, h.haz_name, h.org_guid, h.eng_guid, h.tend_guid, h.hidd_grad,
+               h.pro_part, h.part_long, h.part_lat, h.harm_risk, h.moni_prec, h.offi_tel,
+               h.pat_pers, h.sup_pers, h.if_lice_noti, h.note, h.coll_time, h.upd_time, h.rec_pers,
+               h.sup_pers_dept, h.safe_prec, h.emer_prec, h.risk_grad, h.monitor_means,
+               h.monitor_measure, h.risk_guid, h.organizing_prec, h.technique_prec, h.system_prec,
+               h.to_date, h.otlcol_qgw_nbokgir, h.writ_coll_time,
+               h.org_pers, h.orgpers_tel, h.onsite_pers, h.onsitepers_tel,
+               h.haz_stat, h.sup_time, h.sup_org, h.reg_time,
+               h.if_control, h.major, h.project, h.type, h.reg_org_guid,
+               s.org_name,
+               e.eng_name,
+               t.tend_name
+        FROM subOrgs s
+        LEFT JOIN obj_haz h ON h.org_guid = s.guid
+        LEFT JOIN att_eng_base e ON h.eng_guid = e.guid
+        LEFT JOIN obj_tend t ON h.tend_guid = t.guid
+        <where>
+            <if test="hazName != null and hazName != ''">AND h.haz_name like '%' || #{hazName} || '%'</if>
+            <if test="hiddGrad != null and hiddGrad != ''">AND h.hidd_grad = #{hiddGrad}</if>
+            <if test="hazStat != null and hazStat != ''">AND h.haz_stat = #{hazStat}</if>
+            <if test="riskGrad != null and riskGrad != ''">AND h.risk_grad = #{riskGrad}</if>
+            <if test="type != null and type != ''">AND h.type = #{type}</if>
+            <if test="ifControl != null and ifControl != ''">AND h.if_control = #{ifControl}</if>
+            <if test="engName != null and engName != ''">AND e.eng_name like '%' || #{engName} || '%'</if>
+            <if test="orgName != null and orgName != ''">AND s.org_name like '%' || #{orgName} || '%'</if>
+            <if test="beginSupTime != null and beginSupTime != ''">AND h.sup_time >= #{beginSupTime}</if>
+            <if test="endSupTime != null and endSupTime != ''">AND h.sup_time &lt;= #{endSupTime}</if>
+        </where>
+        ORDER BY h.coll_time DESC
+    </select>
 </mapper>

+ 25 - 0
gw-slaj/src/main/resources/mapper/slaj/hazard/TBusiHazCountMapper.xml

@@ -90,4 +90,29 @@
             #{guid}
         </foreach>
     </delete>
+
+    <select id="selectTBusiHazCountListWithScope" parameterType="com.goldenwater.slaj.hazard.domain.TBusiHazCount" resultMap="TBusiHazCountResult">
+        WITH RECURSIVE subOrgs AS (
+            SELECT guid, org_name FROM att_org_base WHERE guid = #{orgGuid}
+            UNION ALL
+            SELECT e.org_guid, o.org_name FROM att_org_ext e
+            LEFT JOIN att_org_base o ON o.guid = e.org_guid
+            WHERE e.admin_wiun_guid = #{orgGuid}
+            UNION ALL
+            SELECT b.guid, b.org_name FROM att_org_base b
+            INNER JOIN subOrgs s ON b.pguid = s.guid
+        )
+        SELECT c.guid, c.org_guid, c.create_time, c.yb_ybs, c.yx_yb_haz, c.zd_ybs, c.yx_zd_haz,
+               c.ybs_num, c.alrhaz, c.haz_bsl, c.eng_num, c.haz_yb_gkl, c.yb_gk_haz, c.yb_haz,
+               c.haz_zd_gkl, c.zd_gk_haz, c.zd_haz, c.tot_gkl, c.alr_eng_num,
+               s.org_name
+        FROM subOrgs s
+        LEFT JOIN t_busi_haz_count c ON c.org_guid = s.guid
+        <where>
+            <if test="orgName != null and orgName != ''">AND s.org_name like '%' || #{orgName} || '%'</if>
+            <if test="wiunProp != null and wiunProp != ''">AND EXISTS (SELECT 1 FROM att_org_ext ext WHERE ext.org_guid = c.org_guid AND ext.wiun_prop = #{wiunProp})</if>
+            <if test="createTime != null and createTime != ''">AND c.create_time &gt;= CAST(#{createTime} AS date) AND c.create_time &lt; CAST(#{createTime} AS date) + INTERVAL '1 day'</if>
+        </where>
+        ORDER BY c.create_time DESC
+    </select>
 </mapper>

+ 47 - 7
gw-slaj/src/main/resources/mapper/slaj/hidd/BisOrgMonRepPeriMapper.xml

@@ -86,6 +86,19 @@
             and a.rep_type = '0'
             and a.rep_act = '1'
             <if test="repTime != null and repTime != ''">and a.rep_time = #{repTime}</if>
+            <if test="orgGuid != null and orgGuid != ''">
+                and a.rep_org_guid in (
+                    WITH RECURSIVE subOrgs AS (
+                        select guid from att_org_base where guid = #{orgGuid}
+                        union all
+                        select e.org_guid from att_org_ext e where e.admin_wiun_guid = #{orgGuid}
+                        union all
+                        select b.guid from att_org_base b
+                        inner join subOrgs s on b.pguid = s.guid
+                    )
+                    select guid from subOrgs
+                )
+            </if>
         </where>
         group by c.hidd_clas
         order by c.hidd_clas
@@ -165,15 +178,42 @@
         <where>
             <if test="repTime != null and repTime != ''">AND a.rep_time LIKE #{repTime} || '%'</if>
             <if test="repOrgGuid != null and repOrgGuid != ''">AND a.rep_org_guid = #{repOrgGuid}</if>
-            <if test="unitType != null and unitType != ''">
+            <if test="orgGuid != null and orgGuid != ''">
                 AND a.rep_org_guid in (
-                    select org_guid from att_org_ext where wiun_code like '%' || (
-                        case #{unitType}
-                            when '1' then '000000'
-                            when '2' then '000'
-                            when '3' then '0000'
-                        end
+                    -- 当前用户范围: 本单位 + ADMIN_WIUN_GUID直属 + pguid递归下级
+                    WITH RECURSIVE subOrgs AS (
+                        select guid from att_org_base where guid = #{orgGuid}
+                        union all
+                        select e.org_guid from att_org_ext e where e.admin_wiun_guid = #{orgGuid}
+                        union all
+                        select b.guid from att_org_base b
+                        inner join subOrgs s on b.pguid = s.guid
                     )
+                    select guid from subOrgs
+                )
+            </if>
+            <if test="unitType != null and unitType != ''">
+                AND a.rep_org_guid in (
+                    <choose>
+                        <when test="unitType == '0'.toString()">
+                            select #{orgGuid}
+                        </when>
+                        <when test="unitType == '1'.toString()">
+                            select org_guid from att_org_ext where admin_wiun_guid = #{orgGuid}
+                        </when>
+                        <when test="unitType == '2'.toString()">
+                            select f.guid from att_org_base f
+                            left join att_org_ext k on f.guid = k.org_guid
+                            where f.pguid = #{orgGuid} and k.wiun_prop in ('7','8') and f.area_type != '4'
+                        </when>
+                        <when test="unitType == '3'.toString()">
+                            select base.guid from att_org_base base
+                            where base.pguid = #{orgGuid} and base.area_type = '4'
+                        </when>
+                        <otherwise>
+                            select guid from att_org_base where 1=0
+                        </otherwise>
+                    </choose>
                 )
             </if>
         </where>

+ 40 - 5
gw-slaj/src/main/resources/mapper/slaj/hidd/TBusiHiddCountMapper.xml

@@ -62,11 +62,46 @@
         where guid = #{guid}
     </select>
     <select id="selectTBusiHiddCountList" parameterType="com.goldenwater.slaj.hidd.domain.TBusiHiddCount" resultMap="TBusiHiddCountResult">
-        <include refid="selectTBusiHiddCountVo"/>
-        <where>
-            <if test="orgGuid != null and orgGuid != ''">AND org_guid = #{orgGuid}</if>
-            <if test="createTime != null and createTime != ''">AND create_time = #{createTime}</if>
-        </where>
+        SELECT c.guid, c.org_guid, c.create_time,
+               o.org_name, c.pcl, c.oeng_org, c.hidd_org,
+               c.eng_num, c.hidd_eng, c.hidd_zgl,
+               c.yb_zgl, c.yb_hidd, c.zg_yb_hidd,
+               c.zd_zgl, c.zd_hidd, c.zg_zd_hidd
+        FROM t_busi_hidd_count c
+        LEFT JOIN att_org_base o ON o.guid = c.org_guid
+        WHERE 1=1
+            AND c.org_guid IN (
+                WITH RECURSIVE subOrgs AS (
+                    select guid from att_org_base where guid = #{orgGuid}
+                    union all
+                    select e.org_guid from att_org_ext e where e.admin_wiun_guid = #{orgGuid}
+                    union all
+                    select b.guid from att_org_base b
+                    inner join subOrgs s on b.pguid = s.guid
+                )
+                select guid from subOrgs
+            )
+            <if test="orgName != null and orgName != ''">AND o.org_name like concat('%', #{orgName}, '%')</if>
+            <if test="createTime != null and createTime != ''">AND c.create_time = #{createTime}::date</if>
+            <if test="unitType != null and unitType != ''">
+                AND c.org_guid in (
+                    <choose>
+                        <when test="unitType == '1'.toString()">
+                            select org_guid from att_org_ext where admin_wiun_guid = #{orgGuid}
+                        </when>
+                        <when test="unitType == '2'.toString()">
+                            select f.guid from att_org_base f
+                            left join att_org_ext k on f.guid = k.org_guid
+                            where f.pguid = #{orgGuid} and k.wiun_prop in ('7','8') and f.area_type != '4'
+                        </when>
+                        <when test="unitType == '3'.toString()">
+                            select base.guid from att_org_base base
+                            where base.pguid = #{orgGuid} and base.area_type = '4'
+                        </when>
+                    </choose>
+                )
+            </if>
+        ORDER BY c.create_time DESC, o.org_name
     </select>
     <insert id="insertTBusiHiddCount" parameterType="com.goldenwater.slaj.hidd.domain.TBusiHiddCount">
         insert into t_busi_hidd_count (guid, org_guid, create_time, pcl, oeng_org, hidd_org, eng_num, hidd_eng, hidd_zgl, yb_zgl, yb_hidd, zg_yb_hidd, zd_zgl, zd_hidd, zg_zd_hidd)

+ 18 - 0
gw-ui/src/api/slaj/hazard.js

@@ -11,6 +11,15 @@ export function listObjHaz(query) {
   })
 }
 
+// 查询危险源对象列表(带数据范围:当前单位及下级)
+export function listObjHazWithScope(query) {
+  return request({
+    url: '/hazard/objhaz/listWithScope',
+    method: 'get',
+    params: query
+  })
+}
+
 // 查询危险源对象详细
 export function getObjHaz(guid) {
   return request({
@@ -1403,6 +1412,15 @@ export function listTBusiHazCount(query) {
   })
 }
 
+// 查询危险源统计列表(带数据范围:当前单位及下级)
+export function listTBusiHazCountWithScope(query) {
+  return request({
+    url: '/hazard/tbusihazcount/listWithScope',
+    method: 'get',
+    params: query
+  })
+}
+
 // 危险源聚合查询(按工程/单位分组)
 export function getHazGroupBy(query) {
   return request({

+ 1 - 1
gw-ui/src/views/slaj/hazard/chemList.vue

@@ -8,7 +8,7 @@
             <span class="page-title">危险物品</span>
           </div>
           <div class="search-right">
-            <el-button type="warning" plain @click="handleExport">
+            <el-button type="warning" plain v-hasPermi="['hazard:objhach:export']" @click="handleExport">
               <el-icon><Download /></el-icon> 导出
             </el-button>
           </div>

+ 18 - 13
gw-ui/src/views/slaj/hazard/engQuery.vue

@@ -35,13 +35,13 @@
 
           <el-table v-loading="loading" :data="list" border style="width:100%" :header-cell-style="{ 'text-align': 'center' }">
             <el-table-column label="序号" align="center" type="index" width="60" />
-            <el-table-column label="工程名称" align="center" prop="engName" min-width="150" :show-overflow-tooltip="true" />
-            <el-table-column label="管理单位" align="center" prop="orgName" min-width="140" :show-overflow-tooltip="true" />
-            <el-table-column label="总数" align="center" prop="totalCount" width="80" />
-            <el-table-column label="一般危险源" align="center" prop="normalCount" width="100" />
-            <el-table-column label="重大危险源" align="center" prop="majorCount" width="100" />
-            <el-table-column label="已管控危险源" align="center" prop="controlledCount" width="110" />
-            <el-table-column label="未管控危险源" align="center" prop="uncontrolledCount" width="110" />
+            <el-table-column label="工程名称" align="center" prop="engname" min-width="150" :show-overflow-tooltip="true" />
+            <el-table-column label="管理单位" align="center" prop="orgname" min-width="140" :show-overflow-tooltip="true" />
+            <el-table-column label="总数" align="center" prop="totalcount" width="80" />
+            <el-table-column label="一般危险源" align="center" prop="normalcount" width="100" />
+            <el-table-column label="重大危险源" align="center" prop="majorcount" width="100" />
+            <el-table-column label="已管控危险源" align="center" prop="controlledcount" width="110" />
+            <el-table-column label="未管控危险源" align="center" prop="uncontrolledcount" width="110" />
           </el-table>
           <div class="pagination">
             <el-pagination v-model:current-page="queryParams.pageNum" v-model:page-size="queryParams.pageSize" :total="total" :page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next, jumper" @size-change="getList" @current-change="getList" />
@@ -59,17 +59,22 @@
                   <el-icon><Search /></el-icon> 搜索
                 </el-button>
               </el-form-item>
+              <el-form-item>
+                <el-button type="warning" plain v-hasPermi="['hazar:query:export']" @click="handleExport2">
+                  <el-icon><Download /></el-icon> 导出
+                </el-button>
+              </el-form-item>
             </el-form>
           </div>
 
           <el-table v-loading="loading2" :data="list2" border style="width:100%" :header-cell-style="{ 'text-align': 'center' }">
             <el-table-column label="序号" align="center" type="index" width="60" />
-            <el-table-column label="管理单位" align="center" prop="orgName" min-width="200" :show-overflow-tooltip="true" />
-            <el-table-column label="总数" align="center" prop="totalCount" width="80" />
-            <el-table-column label="一般危险源" align="center" prop="normalCount" width="100" />
-            <el-table-column label="重大危险源" align="center" prop="majorCount" width="100" />
-            <el-table-column label="已管控危险源" align="center" prop="controlledCount" width="110" />
-            <el-table-column label="未管控危险源" align="center" prop="uncontrolledCount" width="110" />
+            <el-table-column label="管理单位" align="center" prop="orgname" min-width="200" :show-overflow-tooltip="true" />
+            <el-table-column label="总数" align="center" prop="totalcount" width="80" />
+            <el-table-column label="一般危险源" align="center" prop="normalcount" width="100" />
+            <el-table-column label="重大危险源" align="center" prop="majorcount" width="100" />
+            <el-table-column label="已管控危险源" align="center" prop="controlledcount" width="110" />
+            <el-table-column label="未管控危险源" align="center" prop="uncontrolledcount" width="110" />
           </el-table>
           <div class="pagination">
             <el-pagination v-model:current-page="queryParams2.pageNum" v-model:page-size="queryParams2.pageSize" :total="total2" :page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next, jumper" @size-change="getList2" @current-change="getList2" />

+ 12 - 6
gw-ui/src/views/slaj/hazard/manage.vue

@@ -494,8 +494,12 @@ function hasTabPermi2(name) {
 const activeTab = ref(Object.keys(tabPermiMap2).find(k => hasTabPermi2(k)) || 'eng')
 
 function canDelete(row) {
-  if (proxy.$auth.hasPermi('hazar:objhaz:remove')) return true
-  if (proxy.$auth.hasPermi('hazar:objhaz:removeDraft') && row.hazStat === '0') return true
+  if (activeTab.value === 'tend') {
+    if (proxy.$auth.hasPermi('hazar:tend:remove')) return true
+  } else {
+    if (proxy.$auth.hasPermi('hazar:eng:remove')) return true
+    if (proxy.$auth.hasPermi('hazar:eng:removeDraft') && row.hazStat === '0') return true
+  }
   return false
 }
 const list = ref([]); const loading = ref(false); const total = ref(0)
@@ -682,10 +686,12 @@ function submitRecForm() {
 }
 function handleSubmit(row) {
   proxy.$confirm('确认将该危险源报送至水行政主管部门?', '提示', { type: 'warning' }).then(() => {
-    row.hazStat = '1'
-    proxy.$modal.msgSuccess('报送成功')
-    if (activeTab.value === 'tend') getList2()
-    else getList()
+    updateObjHaz({ guid: row.guid, hazStat: '1' }).then(() => {
+      row.hazStat = '1'
+      proxy.$modal.msgSuccess('报送成功')
+      if (activeTab.value === 'tend') getList2()
+      else getList()
+    })
   }).catch(() => {})
 }
 function handleDelete(row) {

+ 22 - 12
gw-ui/src/views/slaj/hazard/stat.vue

@@ -1,5 +1,8 @@
 <template>
-  <div class="system-page config-page">
+  <div v-if="!$auth.hasPermi('hazard:tbusihazcount:list')" class="no-permission">
+    <el-empty description="您没有访问该页面的权限,请联系管理员" />
+  </div>
+  <div v-else class="system-page config-page">
     <el-card class="page-card">
       <template #header>
         <div class="card-header">
@@ -22,7 +25,7 @@
             <el-input v-model="queryParams.orgName" placeholder="请输入单位名称" clearable style="width: 180px" @keyup.enter="handleQuery" />
           </el-form-item>
           <el-form-item label="统计时间" prop="createTime">
-            <el-date-picker v-model="dateRange" type="daterange" range-separator="至" start-placeholder="开始" end-placeholder="结束" value-format="YYYY-MM-DD" style="width: 250px" />
+            <el-date-picker v-model="queryParams.createTime" type="date" placeholder="选择日期" value-format="YYYY-MM-DD" clearable style="width: 160px" />
           </el-form-item>
           <el-form-item>
             <el-button type="primary" @click="handleQuery">
@@ -46,10 +49,23 @@
           </el-table-column>
           <el-table-column label="应辨识总数" align="center" width="100" prop="ybsNum" />
           <el-table-column label="已辨识总数" align="center" width="100" prop="alrhaz" />
-          <el-table-column label="辨识率(%)" align="center" width="90" prop="hazBsl" />
+          <el-table-column label="辨识率" align="center" width="90" prop="hazBsl" />
           <el-table-column label="应辨识工程" align="center" width="100" prop="engNum" />
           <el-table-column label="已辨识工程" align="center" width="100" prop="alrEngNum" />
         </el-table-column>
+        <el-table-column label="实际辨识管控情况" align="center">
+          <el-table-column label="一般危险源" align="center">
+            <el-table-column label="管控率" align="center" width="90" prop="hazYbGkl" />
+            <el-table-column label="已管控" align="center" width="80" prop="ybGkHaz" />
+            <el-table-column label="已辨识" align="center" width="80" prop="ybHaz" />
+          </el-table-column>
+          <el-table-column label="重大危险源" align="center">
+            <el-table-column label="管控率" align="center" width="90" prop="hazZdGkl" />
+            <el-table-column label="已管控" align="center" width="80" prop="zdGkHaz" />
+            <el-table-column label="已辨识" align="center" width="80" prop="zdHaz" />
+          </el-table-column>
+          <el-table-column label="综合管控率" align="center" width="100" prop="totGkl" />
+        </el-table-column>
       </el-table>
 
       <div class="pagination">
@@ -60,28 +76,22 @@
 </template>
 
 <script setup name="HazardStat">
-import { listTBusiHazCount } from "@/api/slaj/hazard"
+import { listTBusiHazCountWithScope } from "@/api/slaj/hazard"
 import { Search, DataAnalysis } from '@element-plus/icons-vue'
 
 const { proxy } = getCurrentInstance()
 
 const loading = ref(false); const list = ref([]); const total = ref(0)
-const dateRange = ref([])
 const queryFormRef = ref(null)
 
 const queryParams = reactive({
   pageNum: 1, pageSize: 10,
-  wiunProp: undefined, orgName: undefined
+  wiunProp: undefined, orgName: undefined, createTime: undefined
 })
 
 function getList() {
   loading.value = true
-  const params = { ...queryParams }
-  if (dateRange.value && dateRange.value.length === 2) {
-    params.beginCreateTime = dateRange.value[0]
-    params.endCreateTime = dateRange.value[1]
-  }
-  listTBusiHazCount(params).then(res => {
+  listTBusiHazCountWithScope({ ...queryParams }).then(res => {
     list.value = res.rows || []
     total.value = res.total || 0
     loading.value = false

+ 3 - 3
gw-ui/src/views/slaj/hazard/supervise.vue

@@ -65,7 +65,7 @@
         <el-table-column label="监管日期" align="center" prop="supTime" width="110" />
         <el-table-column label="操作" align="center" width="120" fixed="right">
           <template #default="scope">
-            <el-button v-if="scope.row.hazStat !== '2'" link type="primary" icon="Edit" @click="handleSupervise(scope.row)">监管</el-button>
+            <el-button v-if="scope.row.hazStat !== '2'" link type="primary" icon="Edit" v-hasPermi="['hazar:objhaz:supervise']" @click="handleSupervise(scope.row)">监管</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -139,7 +139,7 @@
 </template>
 
 <script setup name="HazardSupervise">
-import { listObjHaz, updateObjHaz } from "@/api/slaj/hazard"
+import { listObjHazWithScope, updateObjHaz } from "@/api/slaj/hazard"
 import { Search, Download, Document } from '@element-plus/icons-vue'
 
 const { proxy } = getCurrentInstance()
@@ -166,7 +166,7 @@ function getList() {
     params.beginSupTime = dateRange.value[0]
     params.endSupTime = dateRange.value[1]
   }
-  listObjHaz(params).then(res => {
+  listObjHazWithScope(params).then(res => {
     hazList.value = res.rows || []
     total.value = res.total || 0
     loading.value = false

+ 1 - 1
gw-ui/src/views/slaj/hidd/month.vue

@@ -53,7 +53,7 @@
               待审批<el-badge v-if="pendingCount > 0" :value="pendingCount" :max="99" style="margin-left:4px;" />
             </el-button>
             <el-button size="small" type="primary" @click="handleReport" v-hasPermi="['hidd:month:report']">上报</el-button>
-            <el-button size="small" @click="handleBatchRevoke" v-hasPermi="['hidd:month:report']">撤销</el-button>
+            <el-button size="small" @click="handleBatchRevoke" v-hasPermi="['hidd:month:revoke']">撤销</el-button>
           </div>
           <div class="action-bar">
             <span class="filter-label">选择月份:</span>

+ 14 - 2
gw-ui/src/views/slaj/hidd/orgEngQuery.vue

@@ -600,7 +600,7 @@
             <td class="label-cell">所属标段</td>
             <td class="value-cell" colspan="3">
               <el-select v-model="form.tendGuid" placeholder="请选择" size="small" style="width:100%"
-                @change="val => { form.tendName = (filteredTendList.find(e => e.value === val) || {}).label || '' }">
+                @change="val => { const t = tendList.find(t => t.value === val); form.tendName = t ? t.label : ''; if (t && t.engGuid) { form.engGuid = t.engGuid; form.engName = (engList.find(e => e.value === t.engGuid) || {}).label || '' } }">
                 <el-option v-for="item in filteredTendList" :key="item.value" :label="item.label" :value="item.value" />
               </el-select>
             </td>
@@ -754,6 +754,7 @@
 <script setup name="OrgEngQuery">
 import { listObjHidd, delObjHidd, addObjHidd, updateObjHidd, compoundSaveHidd, getHiddGroupBy, getObjHiddMedList, listBisHiddRectImpl, addBisHiddRectImpl, updateBisHiddRectImpl, listBisHiddRectAcce, addBisHiddRectAcce, updateBisHiddRectAcce, listBisHiddRectProg, addBisHiddRectProg, listNextDepHidd, writeOffBisMajHiddSup, getHiddListByName, listAttOrgBase, reportHidd, returnHidd, addBisMajHiddSup } from "@/api/slaj/hidd"
 import { listObjEng } from "@/api/slaj/eng"
+import { listObjTend } from "@/api/slaj/obj"
 import { getToken } from "@/utils/auth"
 import useUserStore from '@/store/modules/user'
 import { Search, Plus, Download, Delete, Upload, Edit, Position, Back } from '@element-plus/icons-vue'
@@ -809,6 +810,11 @@ const engList = ref([])
 
 const tendList = ref([])
 const consOrgList = ref([])
+function loadTendList() {
+  listObjTend({ pageNum: 1, pageSize: 999 }).then(res => {
+    tendList.value = (res.rows || []).map(t => ({ value: t.guid, label: t.tendName, engGuid: t.engGuid }))
+  })
+}
 const orgOptions = ref([])
 function loadOrgOptions() {
   listAttOrgBase({}).then(res => {
@@ -858,6 +864,7 @@ function handleAdd() {
   formTitle.value = '本级单位工程隐患新增'
   form.value = { hiddGrad: '1', hiddStat: '0', inspDate: '', inspLeader: '', inspLeaderPost: '', proPart: '', hiddDesc: '', engGuid: '', tendGuid: '', engName: '', tendName: '', orgGuid: userStore.orgGuid || '' }
   listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  loadTendList()
   fileAttachList.value = []
   uploadFileList.value = []
   formDrawer.value = true
@@ -870,6 +877,7 @@ function handleUpdate(row) {
   if (data) {
     form.value = { ...data, engGuid: data.engGuid || '', tendGuid: data.tendGuid || '' }
     listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+    loadTendList()
     formTitle.value = '本级单位工程隐患修改'
     loadHiddMedList(data.guid)
     formDrawer.value = true
@@ -1067,9 +1075,10 @@ function handleAdd4() {
   formTitle.value = '施工单位隐患新增'
   form.value = { hiddGrad: '1', hiddStat: '0', hiddSour: '1', inspDate: '', inspLeader: '', inspLeaderPost: '', proPart: '', hiddDesc: '', engGuid: '', tendGuid: '', engName: '', tendName: '', orgName: '', orgGuid: userStore.orgGuid || '' }
   listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
-  listAttOrgBase({ orgNature: '7' }).then(res => {
+  listAttOrgBase({ wiunProp: '7' }).then(res => {
     consOrgList.value = (res.rows || []).map(o => ({ value: o.guid, label: o.orgName }))
   })
+  loadTendList()
   fileAttachList.value = []
   uploadFileList.value = []
   formDrawer.value = true
@@ -1079,6 +1088,7 @@ function handleUpdate4(row) {
   if (!data) { proxy.$modal.msgWarning('请先选择一条数据'); return }
   form.value = { ...data, engGuid: data.engGuid || '', tendGuid: data.tendGuid || '' }
   listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  loadTendList()
   formTitle.value = '施工单位隐患修改'
   loadHiddMedList(data.guid)
   formDrawer.value = true
@@ -1124,6 +1134,7 @@ function handleAdd5() {
   formTitle.value = '参建单位隐患新增'
   form.value = { hiddGrad: '1', hiddStat: '0', inspDate: '', inspLeader: '', inspLeaderPost: '', proPart: '', hiddDesc: '', engGuid: '', tendGuid: '', engName: '', tendName: '', orgGuid: userStore.orgGuid || '' }
   listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  loadTendList()
   fileAttachList.value = []
   uploadFileList.value = []
   formDrawer.value = true
@@ -1133,6 +1144,7 @@ function handleUpdate5(row) {
   if (!data) { proxy.$modal.msgWarning('请先选择一条数据'); return }
   form.value = { ...data, engGuid: data.engGuid || '', tendGuid: data.tendGuid || '' }
   listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  loadTendList()
   formTitle.value = '参建单位隐患修改'
   loadHiddMedList(data.guid)
   formDrawer.value = true