Browse Source

Merge branch 'fanghuisheng' of uskycloud/usky-web-mobile into master

xf15575941817 2 years ago
parent
commit
24784f5d34

+ 7 - 0
src/pages.json

@@ -281,6 +281,13 @@
         "enablePullDownRefresh": false
       }
     },
+    {
+      "path": "pages/business/mhxf/fireReport/components/detailed",
+      "style": {
+        "navigationBarTitleText": "消防报告",
+        "enablePullDownRefresh": false
+      }
+    },
     //消防报告 结束
 
     //待办事项 开始

+ 555 - 0
src/pages/business/mhxf/fireReport/components/detailed.vue

@@ -0,0 +1,555 @@
+<template>
+  <view class="detailed" style="font-size: 30upx">
+    <view class="detailedContent">
+      <view class="header">
+        <view class="title">2023年1月份上海XX公司消防报告</view>
+        <view class="date">2023-01-01 00:00:00 ~ 2023-01-31 23:59:59</view>
+      </view>
+
+      <view class="content1">
+        <uni-section title="消防安全风险提示" type="line" titleFontSize="15px"> </uni-section>
+        <view class="price1">
+          <view>
+            上海XX公司:
+            <br />
+            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过对你单位1月份的建筑情况、消防自主管理情况、物联通过对你单位1月份的建筑情况、消防自主管理情况、物联网设备运行状况、监督执法情况、
+            火灾发生情况等各项消防安全管理情况,做如下风险
+            <br />
+            提示:
+          </view>
+        </view>
+
+        <view class="price1">
+          <view>
+            一、整体建筑
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)建筑结构{{ "木质结构" }} ,耐火等级较低,建筑防 火需重点关注; </view>
+            <view>
+              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)建筑总建筑总层数为{{ 40 }}层,建筑楼层较高应 该加强防火巡查,地下空间面积{{ 20000 }}平方米,地下 空间较大应加强防火巡查按标准配备相应灭火器材;
+            </view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)使用性质{{ "生产、存储、经营与居住一体" }},需 停业整改;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(4)建筑使用年限{{ 20 }}年,应加密消防设备设施巡 检巡查,保证配套设备齐全。</view>
+          </view>
+          <view>
+            二、设施状况
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)火灾报警系统:在线率低于95%,故障率高于5%,需加强设备管理维护;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)消防水系统:在线率低于95%,故障率高于5%,需加强设备管理维护;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)防排烟系统:在线率低于95%,故障率高于5%,需加强设备管理维护;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(4)维保单位:无维保单位,建议配置维保单位。</view>
+          </view>
+          <view>
+            三、自主管理
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)组织制度:缺少{{ "消防安全制度、灭火和应急疏散预案、员工消防安全培训、消防安全管理人消防档案、消防重点部位" }},相关制度不完善,需完善;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)日常值班巡检:消控室持证数较少{{ 1 }},缺少{{ "防火检查记录、消防设施、器材保养记录" }} ,相关制度不完善,需完善;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)预案、培训:缺少{{ "应急演练记录、宣传培训记录" }},相关制度不完善,需完善;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(4)微站实体化运行:缺少{{ "微站制度和人员落实、日程训练记录" }},相关制度不完善,需完善;</view>
+          </view>
+          <view>
+            四、监督执法
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)双随机检查:近 2 年检查隐患数 {{ 7 }},需加强隐患整改落实;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)处罚情况:近 3 年处罚次数 {{ 4 }},需加强隐患整改落实;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)举报投诉:近 2 年举报投诉核实数 {{ 4 }},需加强隐患整改落实;</view>
+            <view>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(4)重大隐患挂牌:你单位被列入重大火灾隐患挂牌督改需要进行全面的消防整改落实。</view>
+          </view>
+        </view>
+      </view>
+
+      <view class="content2">
+        <uni-section title="基本情况" type="line" titleFontSize="15px"></uni-section>
+        <view class="tableType2 price2">
+          <u-row>
+            <u-col span="3">
+              <view>单位名称</view>
+            </u-col>
+            <u-col span="3">
+              <view>上海XXX公司</view>
+            </u-col>
+            <u-col span="3">
+              <view>整体风险</view>
+            </u-col>
+            <u-col span="3">
+              <view>一般风险</view>
+            </u-col>
+          </u-row>
+        </view>
+        <view class="price2">
+          <view style="color: #666666">注:整体风险:高风险、较高风险、一般风险、低风险。</view>
+        </view>
+      </view>
+
+      <view class="content2">
+        <uni-section title="存在问题" type="line" titleFontSize="15px">
+          <template v-slot:right>
+            <view style="color: #666666; font-size: 14px">整改期限:2023-02-02</view>
+          </template>
+        </uni-section>
+        <view class="tableType1 price2">
+          <u-row>
+            <u-col span="2">
+              <view>序号</view>
+            </u-col>
+            <u-col span="5">
+              <view>整改项</view>
+            </u-col>
+            <u-col span="5">
+              <view>原因</view>
+            </u-col>
+          </u-row>
+          <u-row v-for="(co, index) in content3" :key="index">
+            <u-col span="2">
+              <view>{{ co.value }}</view>
+            </u-col>
+            <u-col span="5">
+              <view>{{ co.name1 }}</view>
+            </u-col>
+            <u-col span="5">
+              <view>{{ co.name2 }}</view>
+            </u-col>
+          </u-row>
+        </view>
+      </view>
+
+      <view class="content2">
+        <uni-section title="整体指数分析" type="line" titleFontSize="15px"> </uni-section>
+        <view class="tableType1 price2">
+          <u-row>
+            <u-col span="4">
+              <view>指数</view>
+            </u-col>
+            <u-col span="2.5">
+              <view>得分</view>
+            </u-col>
+            <u-col span="2.5">
+              <view>排名</view>
+            </u-col>
+            <u-col span="3">
+              <view>得分同比</view>
+            </u-col>
+          </u-row>
+          <u-row v-for="(co, index) in content4" :key="index">
+            <u-col span="4">
+              <view>{{ co.name1 }}</view>
+            </u-col>
+            <u-col span="2.5">
+              <view>{{ co.name2 }}</view>
+            </u-col>
+            <u-col span="2.5">
+              <view>{{ co.name3 }}</view>
+            </u-col>
+            <u-col span="3">
+              <view>{{ co.name4 }}</view>
+            </u-col>
+          </u-row>
+        </view>
+        <view class="price2" style="display: flex; line-height: 22px; text-align: justify; color: #666666">
+          <view>注:</view>
+          <view>
+            <view>1、建筑整体指数:根据被测评主体建筑的结构、体 量、性质、使用年限等维度评估;</view>
+            <view>2、火灾风险指数:根据被评测主体当年度火灾情况、上年度火灾情况、近三年火灾情况等维度评估;</view>
+            <view>3、监督执法指数:根据被评测主体近2年双随机检查情况、近3年处罚情况、近2年投诉情况以及重大隐患挂牌情况等进行评估;</view>
+            <view>4、自主管理指数:根据被评测主体组织制度相关的文件、巡检、值班、预案、培训、微站运行等进行评估;</view>
+            <view>5、设施状况指数:根据被评测主体物联网设备运行状况,告警处置情况、故障率修复周期等进行评估。</view>
+          </view>
+        </view>
+      </view>
+
+      <view class="content2">
+        <uni-section title="整体指数分析" type="line" titleFontSize="15px"> </uni-section>
+        <view>
+          <line-echarts :xAxisDataList="['1月', '2月', '3月', '4月', '5月', '6月']" :seriesDataList="[50, 20, 30, 10, 80, 80]"></line-echarts>
+        </view>
+      </view>
+
+      <view class="content2">
+        <uni-section title="设备设施状况" type="line" titleFontSize="15px"> </uni-section>
+        <view>
+          <view style="color: #666666; text-align: center; font-size: 14px">近一周设备在线率</view>
+          <line-echarts :xAxisDataList="['周一', '周二', '周三', '周四', '周五', '周六', '周日']" :seriesDataList="[50, 20, 30, 10, 80, 80, 20]"></line-echarts>
+        </view>
+
+        <view class="price2" style="margin-top: 10px">
+          <view>6.1设备统计报表</view>
+        </view>
+
+        <view class="tableType1 price2">
+          <u-row>
+            <u-col span="2.4">
+              <view>报告分类</view>
+            </u-col>
+            <u-col span="2.4">
+              <view>报告属性</view>
+            </u-col>
+            <u-col span="2.4">
+              <view>报告总数</view>
+            </u-col>
+            <u-col span="1.6">
+              <view>已处理</view>
+            </u-col>
+            <u-col span="1.6">
+              <view>未处理</view>
+            </u-col>
+            <u-col span="1.6">
+              <view>处置率</view>
+            </u-col>
+          </u-row>
+          <u-row v-for="(co, index) in content5" :key="index">
+            <u-col span="2.4">
+              <view>{{ co.name1 }}</view>
+            </u-col>
+            <u-col span="2.4">
+              <view>{{ co.name2 }}</view>
+            </u-col>
+            <u-col span="2.4">
+              <view>{{ co.name3 }}</view>
+            </u-col>
+            <u-col span="1.6">
+              <view>{{ co.name4 }}</view>
+            </u-col>
+            <u-col span="1.6">
+              <view>{{ co.name5 }}</view>
+            </u-col>
+            <u-col span="1.6">
+              <view>{{ co.name6 }}</view>
+            </u-col>
+          </u-row>
+        </view>
+        <view class="price2" style="display: flex; line-height: 22px; text-align: justify; color: #666666">
+          <view>注:</view>
+          <view>
+            <view>1、报告总数:根据设备报告分类统计设备上报的总数;</view>
+            <view>2、已处理:根据设备报告问题已进行处置的数量;</view>
+            <view>3、未处理:根据设备报告问题还未进行处置的数量;</view>
+            <view>4、处置率:根据对应类型的报告已处理数/报告总数=处置率</view>
+          </view>
+        </view>
+      </view>
+
+      <view class="content2">
+        <uni-section title="监督执法情况" type="line" titleFontSize="15px"> </uni-section>
+
+        <view class="tableType2 price2">
+          <u-row>
+            <u-col span="3">
+              <view>检查名称</view>
+            </u-col>
+            <u-col span="3">
+              <view>消防检查抽查</view>
+            </u-col>
+            <u-col span="3">
+              <view>检查时间</view>
+            </u-col>
+            <u-col span="3">
+              <view>2023-02-05</view>
+            </u-col>
+          </u-row>
+          <u-row>
+            <u-col span="3">
+              <view>消防监督检查</view>
+            </u-col>
+            <u-col span="3">
+              <view>刘军、张磊</view>
+            </u-col>
+            <u-col span="3">
+              <view>是否合格</view>
+            </u-col>
+            <u-col span="3">
+              <view>不合格</view>
+            </u-col>
+          </u-row>
+          <u-row>
+            <u-col span="3">
+              <view>问题描述</view>
+            </u-col>
+            <u-col span="9">
+              <view>消防通道不同,机房堆有可燃物</view>
+            </u-col>
+          </u-row>
+          <u-row>
+            <u-col span="3">
+              <view>建议</view>
+            </u-col>
+            <u-col span="9">
+              <view>清理消防通道,机房可燃物清理恢复</view>
+            </u-col>
+          </u-row>
+        </view>
+
+        <view class="tableType2 price2">
+          <u-row>
+            <u-col span="3">
+              <view>检查名称</view>
+            </u-col>
+            <u-col span="3">
+              <view>消防检查抽查</view>
+            </u-col>
+            <u-col span="3">
+              <view>检查时间</view>
+            </u-col>
+            <u-col span="3">
+              <view>2023-02-05</view>
+            </u-col>
+          </u-row>
+          <u-row>
+            <u-col span="3">
+              <view>消防监督检查</view>
+            </u-col>
+            <u-col span="3">
+              <view>刘军、张磊</view>
+            </u-col>
+            <u-col span="3">
+              <view>是否合格</view>
+            </u-col>
+            <u-col span="3">
+              <view>不合格</view>
+            </u-col>
+          </u-row>
+          <u-row>
+            <u-col span="3">
+              <view>问题描述</view>
+            </u-col>
+            <u-col span="9">
+              <view>消防通道不同,机房堆有可燃物</view>
+            </u-col>
+          </u-row>
+          <u-row>
+            <u-col span="3">
+              <view>建议</view>
+            </u-col>
+            <u-col span="9">
+              <view>清理消防通道,机房可燃物清理恢复</view>
+            </u-col>
+          </u-row>
+        </view>
+      </view>
+
+      <view class="content2">
+        <uni-section title="火灾情况分析" type="line" titleFontSize="15px"> </uni-section>
+
+        <view class="tableType2 price2">
+          <u-row>
+            <u-col span="3">
+              <view>火灾原因</view>
+            </u-col>
+            <u-col span="3">
+              <view>电气火灾</view>
+            </u-col>
+            <u-col span="3">
+              <view>发生时间</view>
+            </u-col>
+            <u-col span="3">
+              <view>2023-02-05</view>
+            </u-col>
+          </u-row>
+          <u-row>
+            <u-col span="3">
+              <view>起火场所</view>
+            </u-col>
+            <u-col span="3">
+              <view>厂房</view>
+            </u-col>
+            <u-col span="3">
+              <view>火灾等级</view>
+            </u-col>
+            <u-col span="3">
+              <view>1</view>
+            </u-col>
+          </u-row>
+          <u-row>
+            <u-col span="3">
+              <view>火灾描述</view>
+            </u-col>
+            <u-col span="9">
+              <view>厂房电缆线路老化,使用功率较大电器引发火灾</view>
+            </u-col>
+          </u-row>
+          <u-row>
+            <u-col span="3">
+              <view>建议</view>
+            </u-col>
+            <u-col span="9">
+              <view>定期检查线路,做好消防安全教育,不违规使 用大功率电器</view>
+            </u-col>
+          </u-row>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script setup>
+import { onReady, onLoad, onShow, onNavigationBarButtonTap } from "@dcloudio/uni-app";
+import { ref, onMounted, inject, shallowRef, reactive, watchEffect, getCurrentInstance, toRefs } from "vue";
+import publicStore from "@/store/modules/public";
+
+import lineEcharts from "./echarts.vue";
+
+import {} from "@/api/business/mhxf/informationSelect";
+
+const { proxy } = getCurrentInstance();
+
+const publicStores = publicStore(); //全局公共Store
+
+const dataList = reactive({
+  content1: [],
+  content2: [],
+  content3: [
+    {
+      value: 1,
+      name1: "火灾报警系统",
+      name2: "存在报警未处置",
+    },
+    {
+      value: 2,
+      name1: "消防水系统",
+      name2: "存在报警未处置",
+    },
+    {
+      value: 3,
+      name1: "燃气、电气系统监测",
+      name2: "存在报警未处置",
+    },
+    {
+      value: 4,
+      name1: "组织制度情况",
+      name2: "制度不完善",
+    },
+    {
+      value: 5,
+      name1: "日常值班情况",
+      name2: "值班落实不到位",
+    },
+    {
+      value: 6,
+      name1: "预案、培训落地情况",
+      name2: "培训不到位",
+    },
+    {
+      value: 7,
+      name1: "微站实体化运行",
+      name2: "制度人员不到位",
+    },
+  ],
+
+  content4: [
+    {
+      name1: "建筑整体指数",
+      name2: 10,
+      name3: 6,
+      name4: "-1",
+    },
+    {
+      name1: "火灾风险指数",
+      name2: 14,
+      name3: 5,
+      name4: "+5",
+    },
+    {
+      name1: "监督执法指数",
+      name2: 25,
+      name3: 1,
+      name4: "+2",
+    },
+    {
+      name1: "自主管理指数",
+      name2: 20,
+      name3: 3,
+      name4: "-1",
+    },
+    {
+      name1: "设施状况指数",
+      name2: 25,
+      name3: 8,
+      name4: "+3",
+    },
+  ],
+
+  content5: [
+    {
+      name1: "火灾监测",
+      name2: "报警",
+      name3: 5,
+      name4: 2,
+      name5: 3,
+      name6: "40%",
+    },
+    {
+      name1: "消防水系统",
+      name2: "设备离线",
+      name3: 7,
+      name4: 3,
+      name5: 4,
+      name6: "42%",
+    },
+  ],
+});
+
+const { content1, content2, content3, content4, content5 } = toRefs(dataList);
+
+watchEffect(() => {});
+
+// 自定义导航事件
+onNavigationBarButtonTap((e) => {
+  if (e.float == "right") {
+    uni.navigateTo({
+      url: "/pages/business/mhxf/xunJian/collect/components/collectRecord",
+    });
+  } else {
+  }
+});
+
+onLoad((options) => {});
+
+onReady(() => {});
+
+onMounted(() => {});
+</script>
+
+<style lang="scss">
+.detailed {
+  height: calc(100vh - 44px);
+  .detailedContent {
+    > uni-view {
+      background-color: #ffffff;
+    }
+
+    .header {
+      text-align: center;
+      .title {
+        padding: 15px 0;
+      }
+      .date {
+        font-size: 24upx;
+        color: #666666;
+      }
+    }
+
+    .content1,
+    .content2,
+    .content3,
+    .content4 {
+      margin-bottom: 15px;
+    }
+
+    .content1 {
+      > .price1 {
+        padding: 0 10px 10px 10px;
+        line-height: 30px;
+        text-align: justify;
+      }
+    }
+
+    .content2 {
+      .price2 {
+        padding: 0 10px 10px 10px;
+        font-size: 14px;
+      }
+    }
+  }
+}
+</style>
+
+<style scoped>
+uni-page-body,
+uni-page-refresh {
+  background-color: #f5f6f7;
+}
+</style>

+ 117 - 0
src/pages/business/mhxf/fireReport/components/echarts.vue

@@ -0,0 +1,117 @@
+<template>
+  <view style="height: 350upx">
+    <l-echart ref="detailedChart"></l-echart>
+  </view>
+</template>
+
+<script setup>
+import * as echarts from "echarts";
+import { onLoad, onShow, onHide, onLaunch, onResize } from "@dcloudio/uni-app";
+import { defineComponent, ref, onMounted, nextTick } from "vue";
+
+const props = defineProps({
+  xAxisDataList: {
+    type: Object,
+    default: null,
+  },
+  seriesDataList: {
+    type: Object,
+    default: null,
+  },
+});
+
+let myChart;
+const detailedChart = ref(null);
+
+let option = {
+  tooltip: {
+    trigger: "axis",
+  },
+  legend: {
+    show: false,
+    // data: ["邮件营销"],
+  },
+  grid: {
+    top: "8%",
+    left: "3%",
+    right: "4%",
+    bottom: "3%",
+    containLabel: true,
+  },
+  xAxis: {
+    type: "category",
+    boundaryGap: false,
+    axisLabel: {
+      color: "rgba(0,0,0,0.2)",
+    },
+    axisLine: {
+      show: true,
+      lineStyle: {
+        color: "rgba(0,0,0,0.1)",
+      },
+    },
+    axisTick: {
+      show: false,
+    },
+    data: props.xAxisDataList,
+  },
+  yAxis: {
+    type: "value",
+    axisLabel: {
+      color: "rgba(0,0,0,0.2)",
+    },
+    axisLine: {
+      show: true,
+      lineStyle: {
+        color: "rgba(0,0,0,0.1)",
+      },
+    },
+    splitLine: {
+      lineStyle: {
+        color: "rgba(0,0,0,0.1)",
+      },
+    },
+  },
+  series: [
+    {
+      name: "指数",
+      type: "line",
+      stack: "总量",
+      smooth: true,
+      itemStyle: {
+        color: "rgba(73, 185, 245, 1)",
+      },
+      areaStyle: {
+        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+          {
+            offset: 0,
+            color: "rgba(73, 185, 245, 1)",
+          },
+          {
+            offset: 1,
+            color: "rgba(73, 185, 245, 0.3)",
+          },
+        ]),
+      },
+      data: props.seriesDataList,
+    },
+  ],
+};
+
+function initEcharts() {
+  myChart = detailedChart.value;
+  myChart.init(echarts, (myChart) => {
+    myChart.setOption(option);
+  });
+}
+
+onLoad(() => {
+  nextTick(() => {
+    initEcharts();
+  });
+});
+
+onResize(() => {
+  myChart.resize();
+});
+</script>

+ 181 - 0
src/pages/business/mhxf/fireReport/index.vue

@@ -0,0 +1,181 @@
+<template>
+  <view class="fireReport" style="background-color: #f7f7f7">
+    <u-empty v-if="!dataRes" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
+    <view class="reportContent" v-else>
+      <view class="contentDom" v-for="(li, index) in dataList" :key="index">
+        <view style="margin: auto 10px auto 0" @click="handleSelect()">
+          <u-image src="@/static/images/fireReport/icon1.png" width="13px" height="13px"></u-image>
+        </view>
+        <view style="margin: 0 auto 0 0" @click="handleSelect()">
+          <view>{{ li.title }}</view>
+        </view>
+        <view>
+          <view style="color: #3c9cff; cursor: pointer" @click="handleDownload">下载报告</view>
+        </view>
+      </view>
+      <u-loadmore :status="status" />
+    </view>
+  </view>
+</template>
+
+<script setup>
+import { onReady, onLoad, onShow, onReachBottom, onNavigationBarButtonTap } from "@dcloudio/uni-app";
+import { ref, onMounted, inject, shallowRef, reactive, watchEffect, getCurrentInstance } from "vue";
+import publicStore from "@/store/modules/public";
+
+import {} from "@/api/business/mhxf/informationSelect";
+
+const { proxy } = getCurrentInstance();
+
+const publicStores = publicStore(); //全局公共Store
+
+const dataRes = ref(true);
+const dataList = ref([
+  {
+    value: 1,
+    title: "2023年1月份单位消防报告",
+  },
+  {
+    value: 2,
+    title: "2023年2月份单位消防报告",
+  },
+  {
+    value: 3,
+    title: "2023年3月份单位消防报告",
+  },
+  {
+    value: 4,
+    title: "2023年4月份单位消防报告",
+  },
+  {
+    value: 5,
+    title: "2023年5月份单位消防报告",
+  },
+  {
+    value: 6,
+    title: "2023年6月份单位消防报告",
+  },
+  {
+    value: 7,
+    title: "2023年7月份单位消防报告",
+  },
+  {
+    value: 8,
+    title: "2023年8月份单位消防报告",
+  },
+  {
+    value: 9,
+    title: "2023年9月份单位消防报告",
+  },
+  {
+    value: 10,
+    title: "2023年10月份单位消防报告",
+  },
+  {
+    value: 11,
+    title: "2023年11月份单位消防报告",
+  },
+  {
+    value: 11,
+    title: "2023年11月份单位消防报告",
+  },
+  {
+    value: 11,
+    title: "2023年11月份单位消防报告",
+  },
+  {
+    value: 11,
+    title: "2023年11月份单位消防报告",
+  },
+  {
+    value: 11,
+    title: "2023年11月份单位消防报告",
+  },
+  {
+    value: 11,
+    title: "2023年11月份单位消防报告",
+  },
+]);
+const status = ref("loadmore");
+const list = ref(15);
+const page = ref(0);
+
+/**
+ * @列表点击事件
+ */
+function handleSelect() {
+  proxy.$tab.navigateTo("/pages/business/mhxf/fireReport/components/detailed");
+
+  // uni.navigateBack({
+  //   delta: 1,
+  // });
+}
+
+function handleDownload() {
+  proxy.$modal.loading("报告下载中,请耐心等待...");
+
+  setTimeout(() => {
+    proxy.$modal.closeLoading();
+  }, 2000);
+}
+
+watchEffect(() => {});
+
+onReachBottom(() => {
+  if (page.value >= 3) return;
+  status.value = "loading";
+  page.value = ++page.value;
+  setTimeout(() => {
+    list.value += 10;
+    if (page.value >= 3) status.value = "nomore";
+    else status.value = "loading";
+  }, 2000);
+});
+
+// 自定义导航事件
+onNavigationBarButtonTap((e) => {
+  if (e.float == "right") {
+    uni.navigateTo({
+      url: "/pages/business/mhxf/xunJian/collect/components/collectRecord",
+    });
+  } else {
+  }
+});
+
+onLoad((options) => {});
+
+onReady(() => {});
+
+onMounted(() => {});
+</script>
+
+<style lang="scss">
+.fireReport {
+  height: calc(100vh - 44px);
+  background-color: #ffffff;
+  .reportContent {
+    .contentDom {
+      display: flex;
+      height: 45px;
+      line-height: 45px;
+      background: #fff;
+      padding: 0 10px;
+    }
+
+    > uni-view {
+      margin-bottom: 10px;
+    }
+
+    > uni-view:last-child {
+      margin-bottom: 0px;
+    }
+  }
+}
+</style>
+
+<style scoped>
+uni-page-body,
+uni-page-refresh {
+  background-color: #f5f6f7;
+}
+</style>

+ 529 - 0
src/pages/business/mhxf/needMatter/index.vue

@@ -0,0 +1,529 @@
+<template>
+  <u-sticky bgColor="#fff" style="box-shadow: 1px 1px 4px rgb(26 26 26 / 10%)">
+    <u-tabs :list="list" @click="tabsClick" :current="current" :scrollable="false"></u-tabs>
+  </u-sticky>
+
+  <view class="needMatter" @touchstart="fingerstart" @touchend="fingerend" style="background-color: #f7f7f7">
+    <view class="content">
+      <!-- <view style="text-align: center; color: rgb(189, 189, 189); font-size: 14px" v-if="!dataRes">暂无数据</view>
+      <view v-else>
+        <u-row v-for="po in classifyData" :key="po">
+          <u-col span="4">
+            <view style="text-align: right; padding: 0px 5px 0px 5px">{{ po.title }}</view>
+          </u-col>
+          <u-col span="8">
+            <view style="text-align: left; padding: 0px 5px 0px 5px">{{ po.value }}</view>
+          </u-col>
+        </u-row>
+      </view> -->
+    </view>
+  </view>
+</template>
+
+<script setup>
+import { onReady, onLoad, onShow, onNavigationBarButtonTap } from "@dcloudio/uni-app";
+import { ref, onMounted, inject, shallowRef, reactive, watchEffect, getCurrentInstance } from "vue";
+import publicStore from "@/store/modules/public";
+
+import { dataList } from "@/api/business/mhxf/informationSelect";
+
+const { proxy } = getCurrentInstance();
+
+const publicStores = publicStore(); //全局公共Store
+
+const current = ref(0);
+const classifyUrl = ref("");
+const dataRes = ref(1);
+
+const list = ref([
+  {
+    id: 1,
+    name: "全部",
+  },
+  {
+    id: 2,
+    name: "已接收",
+  },
+  {
+    id: 3,
+    name: "整改中",
+    badge: {
+      // isDot: true,
+      // value: 5,
+    },
+  },
+  {
+    id: 4,
+    name: "已提交",
+    badge: {
+      // value: 5,
+    },
+  },
+  {
+    id: 5,
+    name: "审核",
+    badge: {
+      // value: 5,
+    },
+  },
+]);
+
+const startData = ref({
+  clientX: "",
+  clientY: "",
+});
+const updDistance = ref(100);
+const lrDistance = ref(50);
+const topMed = ref("");
+const bottomMed = ref("");
+const leftMed = ref("");
+const rightMed = ref("");
+const classifyData = ref([]); //警情查询数据存储
+
+/**
+ * @当按下去的时候
+ */
+function fingerstart(e) {
+  // 记录 距离可视区域左上角 左边距 和 上边距
+  startData.value.clientX = e.changedTouches[0].clientX;
+  startData.value.clientY = e.changedTouches[0].clientY;
+}
+
+/**
+ * @当抬起来的时候
+ */
+function fingerend(e) {
+  // 当前位置 减去 按下位置 计算 距离
+  const subX = e.changedTouches[0].clientX - startData.value.clientX;
+  const subY = e.changedTouches[0].clientY - startData.value.clientY;
+  if (subY > updDistance.value || subY < -updDistance.value) {
+    if (subY > updDistance.value) {
+      bottomscroll(subY);
+    } else if (subY < -updDistance.value) {
+      topscroll(subY);
+    }
+  } else {
+    if (subX > lrDistance.value) {
+      rightscroll(subX);
+    } else if (subX < -lrDistance.value) {
+      leftscroll(subX);
+    } else {
+      console.log("无效操作");
+    }
+  }
+}
+/**
+ * @上滑触发
+ */
+function topscroll(dista) {
+  topMed.value ? (topMed.value = dista) : (topMed.value = null);
+  console.log("触发了上滑方法!");
+}
+/**
+ * @下滑触发
+ */
+function bottomscroll(dista) {
+  bottomMed.value ? (bottomMed.value = dista) : (bottomMed.value = null);
+  console.log("触发了下滑方法!");
+}
+/**
+ * @右滑触发
+ */
+function rightscroll(dista) {
+  rightMed.value ? (rightMed.value = dista) : (rightMed.value = null);
+  console.log("触发了右滑方法!");
+  if (current.value >= 1) {
+    current.value--;
+  } else {
+    current.value = list.value.length - 1;
+  }
+}
+/**
+ * @左滑触发
+ */
+function leftscroll(dista) {
+  leftMed.value ? (leftMed.value = dista) : (leftMed.value = null);
+  console.log("触发了左滑方法!");
+  if (current.value < list.value.length - 1) {
+    current.value++;
+  } else {
+    current.value = 0;
+  }
+}
+
+/**
+ * @tabs点击事件
+ */
+function tabsClick(e) {
+  current.value = e.index;
+  console.log(current.value);
+  dataRes.value = 1;
+}
+
+function goSearch() {
+  if (current.value == 0) {
+    //警情查询
+    classifyUrl.value = "/service-fire/demPoliceInfo/page";
+    classifySearch(classifyUrl.value, {
+      caseCode: "",
+    });
+  } else if (current.value == 1) {
+    //火灾查询
+    classifyUrl.value = "/service-fire/demFireStatisticsAttach/page";
+    classifySearch(classifyUrl.value, {
+      address: "",
+    });
+  } else if (current.value == 2) {
+    //人员查询
+    classifyUrl.value = "/service-fire/unitBeOnDuty/list";
+    classifySearch(classifyUrl.value, {
+      name: "",
+    });
+  } else if (current.value == 3) {
+    //车辆信息
+    classifyUrl.value = "/service-fire/unitBeOnDuty/vehiclelist";
+    classifySearch(classifyUrl.value, {
+      licensePlate: "",
+    });
+  } else if (current.value == 4) {
+    //站点查询
+    classifyUrl.value = "/service-fire/unitBeOnDuty/page";
+    classifySearch(classifyUrl.value, {
+      stationName: "",
+    });
+  }
+}
+
+//分类信息查询 start
+async function classifySearch(URL, params) {
+  proxy.$modal.loading("加载中");
+  classifyData.value = [];
+  dataList(URL, params).then((res) => {
+    proxy.$modal.closeLoading();
+    if (res.status == "SUCCESS") {
+      if (current.value == 2) {
+        if (res.data.length) {
+          dataRes.value = 1;
+        } else {
+          dataRes.value = 0;
+        }
+        var records = res.data[0][0];
+      } else if (current.value == 3) {
+        if (res.data.length) {
+          dataRes.value = 1;
+        } else {
+          dataRes.value = 0;
+        }
+
+        var records = res.data[0];
+      } else {
+        //  console.log('111111111')
+        // console.log(res.data.records.length)
+        //  console.log('111222')
+        if (res.data.total) {
+          dataRes.value = 1;
+        } else {
+          dataRes.value = 0;
+        }
+        var records = res.data.records[0];
+      }
+
+      console.log(dataRes.value + "------1");
+
+      switch (current.value) {
+        case 0: //警情查询
+          var classifyTitle = [
+            "案件编号",
+            "主管支队",
+            "案件时间段",
+            "通知到场时间",
+            "通知出水时间",
+            "通知控制时间",
+            "通知熄火时间",
+            "通知返队时间",
+            "区域",
+            "案件类型",
+            "案发地址",
+            "立案时间",
+            "立案日期",
+            "处置对象",
+            "案件等级",
+            "主管中队",
+            "区县",
+            "案件状态",
+            "案件性质",
+            "填表时间",
+            "街镇",
+            "创建时间",
+          ];
+          var classifyValue = [
+            records.caseCode,
+            records.branch,
+            records.timeSlot,
+            records.noticeArrivalTime,
+            records.noticeEffluentTime,
+            records.controlTime,
+            records.quenchTime,
+            records.returnTime,
+            records.caseArea,
+            records.caseTypeCode,
+            records.address,
+            records.filingTime,
+            records.filingDate,
+            records.handleObject,
+            records.caseLevel,
+            records.squadron,
+            records.district,
+            records.caseStatus,
+            records.caseNature,
+            records.bdpAudit,
+            records.streetTown,
+            records.createTime,
+          ];
+          break;
+        case 1: //火灾查询
+          var classifyTitle = [
+            "地区",
+            "街镇",
+            "经度",
+            "维度",
+            "平台ID",
+            "火灾地址",
+            "过火面积",
+            "直接财产损失",
+            "死亡人数",
+            "受伤人数",
+            "受灾户数",
+            "火灾原因",
+            "火灾等级",
+            "场所一级",
+            "场所二级",
+            "起火物一级",
+            "起火物二级",
+            "性质",
+          ];
+          var classifyValue = [
+            records.district,
+            records.street,
+            records.longitude,
+            records.latitude,
+            records.id,
+            records.address,
+            records.burnedArea,
+            records.propertyLoss,
+            records.deathToll,
+            records.nonFatal,
+            records.disasterHome,
+            records.fireCause,
+            records.fireLevel,
+            records.placeOne,
+            records.placeTwo,
+            records.fireGoodsOne,
+            records.fireGoodsTwo,
+            records.nature,
+          ];
+          break;
+        case 2: //人员查询
+          var classifyTitle = ["值班人员信息", "岗位名称", "机构名称", "机构简称", "机构地址", "值班日期"];
+          var classifyValue = [records.name, records.postName, records.organizationName, records.organizationShort, records.organizationAddress, records.time];
+          break;
+        case 3: //车辆查询
+          var classifyTitle = [
+            "车辆信息",
+            "单件装备编码",
+            "装备名称",
+            "装备编码",
+            "上级装备编码",
+            "所属消防机构",
+            "车牌号码",
+            "资产编号",
+            "商标",
+            "颜色",
+            "生产厂家名称",
+            "有效期至",
+            "车架号",
+            "发动机编号",
+            "批次号",
+            "电台呼号",
+            "车辆简称",
+            "电台频道",
+            "指挥员姓名",
+            "驾驶员",
+          ];
+          var classifyValue = [
+            records.vehicleId,
+            records.singleEquipCode,
+            records.equipName,
+            records.equipCode,
+            records.superiorEquipCode,
+            records.fireOrga,
+            records.licensePlate,
+            records.assetCode,
+            records.assetCode,
+            records.colour,
+            records.productName,
+            records.validityTime,
+            records.frameCode,
+            records.engineCode,
+            records.batchCode,
+            records.radioCallSign,
+            records.vehicleAbbreviat,
+            records.radioChannel,
+            records.commanderName,
+            records.driver,
+          ];
+          break;
+        case 4: //站点查询
+          var classifyTitle = [
+            "平台ID",
+            "支队名称",
+            "所属辖区中队",
+            "消防站名称",
+            "单位性质",
+            "地址",
+            "所在位置",
+            "联动固定电话",
+            "负责人姓名",
+            "负责人手机号码",
+            "备注",
+            "消防站类型",
+            "经度",
+            "维度",
+            "创建时间",
+            "更新时间",
+            "支队id",
+            "中队id",
+            "编号",
+            "原单位性质",
+          ];
+          var classifyValue = [
+            records.id,
+            records.branchName,
+            records.squadron,
+            records.stationName,
+            records.companyNature,
+            records.address,
+            records.location,
+            records.fixedPhone,
+            records.chargeName,
+            records.chargePhone,
+            records.remark,
+            records.stationType,
+            records.longitude,
+            records.dimension,
+            records.createTime,
+            records.updateTime,
+            records.branchId,
+            records.squadronId,
+            records.number,
+            records.primaryCompanyNature,
+          ];
+          break;
+        // default:
+        //    默认代码块
+      }
+
+      for (var i = 0; i < classifyTitle.length; i++) {
+        var obj = {};
+        obj.title = classifyTitle[i];
+        obj.value = classifyValue[i];
+        classifyData.value.push(obj);
+
+        // console.log(classifyData.value);
+      }
+    } else {
+    }
+  });
+}
+// end
+
+watchEffect(() => {
+  goSearch();
+});
+
+// 自定义导航事件
+onNavigationBarButtonTap((e) => {
+  if (e.float == "right") {
+    uni.navigateTo({
+      url: "/pages/business/mhxf/xunJian/collect/components/collectRecord",
+    });
+  } else {
+  }
+});
+
+onLoad((options) => {});
+
+onReady(() => {});
+
+onMounted(() => {});
+</script>
+
+<style lang="scss">
+.uni-swipe {
+  overflow: visible;
+}
+.is-selected {
+  color: #1989fa;
+}
+
+.needMatter {
+  height: calc(100vh - 88px);
+  background-color: #ffffff;
+  .content {
+    padding: 10px;
+    .u-row {
+      height: 36px;
+      line-height: 36px;
+      .u-col {
+        border: 1px #e4e3e3 solid;
+        border-right: 0px;
+        border-bottom: 0px;
+        text-align: center;
+
+        view {
+          padding: 0 10px;
+          min-height: 36px;
+          overflow: hidden; //超出的文本隐藏
+          // text-overflow: ellipsis; //溢出用省略号显示
+          overflow: auto;
+          white-space: nowrap; // 默认不换行;
+          font-size: 14px;
+        }
+      }
+
+      .u-col:last-child {
+        border-right: 1px #e4e3e3 solid;
+      }
+    }
+
+    .u-row:last-child {
+      .u-col {
+        border-bottom: 1px #e4e3e3 solid;
+      }
+    }
+  }
+}
+</style>
+
+<style scoped>
+uni-page-body,
+uni-page-refresh {
+  background-color: #f5f6f7;
+}
+
+.time {
+  position: absolute;
+  z-index: 99999;
+  top: 3px;
+  left: 3px;
+  display: inline-block;
+  color: #fff;
+}
+.con {
+  text-align: center;
+  position: relative;
+}
+.whiteBackgroundColor {
+  background-color: #ffffff;
+}
+</style>

+ 1 - 1
src/permission.js

@@ -4,7 +4,7 @@ import { getToken } from "@/utils/auth";
 const loginPage = "/pages/login";
 
 // 页面白名单
-const whiteList = ["/pages/login", "/pages/common/webview/index", "/pages/business/mhxf/unitInfoCollection/index"];
+const whiteList = ["/pages/login", "/pages/serveConfig", "/pages/common/webview/index", "/pages/business/mhxf/unitInfoCollection/index"];
 
 // 检查地址白名单
 function checkWhite(url) {

BIN
src/static/images/fireReport/icon1.png


BIN
src/static/images/needMatter/icon1.png


BIN
src/static/images/needMatter/icon2.png


BIN
src/static/images/needMatter/pdf.png


BIN
src/static/images/needMatter/word.png