Bladeren bron

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

gez 1 jaar geleden
bovenliggende
commit
f113f6cc18

+ 12 - 0
src/api/business/videoMonitor.js

@@ -0,0 +1,12 @@
+import { request } from "@/utils/request";
+
+// 视频列表查询
+export function pageQuery(param) {
+    return request({
+        url: "/service-iot/dmpDeviceInfo/page",
+        method: "POST",
+        data: param,
+    });
+}
+
+

+ 47 - 0
src/api/business/zhxf/fireInspect/index.js

@@ -0,0 +1,47 @@
+import { request } from "@/utils/request";
+
+/**
+ * @电子督察单查询
+ */
+export function eleInspectList(param) {
+  return request({
+    url: "/service-fire/dataJinganAnalysis/analysisList",
+    method: "GET",
+    data: param,
+  });
+}
+
+/**
+ * @人工督察单查询
+ */
+export function persInspectList(param) {
+  return request({
+    url: "/service-fire/dataJinganPerson/personList",
+    method: "GET",
+    data: param,
+  });
+}
+
+/**
+ * @电子督查单未处理-提交
+ */
+export function dealPutEle(param) {
+  return request({
+      url: "/service-fire/dataJinganAnalysis",
+      method: "PUT",
+      data: param,
+  });
+}
+
+/**
+ * @人工督查单未处理-提交
+ */
+export function dealPutPer(param) {
+  return request({
+      url: "/service-fire/dataJinganPerson",
+      method: "PUT",
+      data: param,
+  });
+}
+
+

+ 1 - 1
src/config.js

@@ -1,7 +1,7 @@
 // 应用全局配置
 export default {
   //#ifdef APP-PLUS || MP-WEIXIN
-  baseUrl: "https://gateway.usky.cn/prod-api",
+  baseUrl: "http://manager.usky.cn/prod-api",
   //#endif
 
   //#ifdef H5

+ 1 - 1
src/manifest.json

@@ -2,7 +2,7 @@
     "name" : "综合智慧云",
     "appid" : "__UNI__36DE3A0",
     "description" : "综合智慧云app,助力企业数字化转型升级",
-    "versionName" : "2.1.3",
+    "versionName" : "2.1.4",
     "versionCode" : 12,
     "transformPx" : false,
     /* 5+App特有相关 */

+ 35 - 0
src/pages.json

@@ -497,6 +497,27 @@
             "enablePullDownRefresh": false
           }
         },
+        {
+          "path": "fireInspect/index",
+          "style": {
+            "navigationBarTitleText": "消防督察单",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "fireInspect/inspectDetailsList/index",
+          "style": {
+            "navigationBarTitleText": "",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "fireInspect/inspectDetails/index",
+          "style": {
+            "navigationBarTitleText": "消防督察单处理",
+            "enablePullDownRefresh": false
+          }
+        },
         {
           "path": "funReport/index",
           "style": {
@@ -628,6 +649,20 @@
             "navigationBarTitleText": "我的快递",
             "enablePullDownRefresh": false
           }
+        },
+        {
+          "path": "videoMonitor/videoList",
+          "style": {
+            "navigationBarTitleText": "视频监测列表",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "videoMonitor/videoDetail",
+          "style": {
+            "navigationBarTitleText": "实时监控",
+            "enablePullDownRefresh": false
+          }
         }
       ]
     }

+ 95 - 0
src/pages/business/videoMonitor/index.vue

@@ -0,0 +1,95 @@
+<template>
+  <oa-scroll
+    customClass="bg-white scroll-height"
+    :pageSize="pageSize"
+    :total="total"
+    :refresherLoad="true"
+    :refresherLoadTitle="false"
+    :refresherEnabled="true"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    @load="load"
+    @refresh="refresh"
+    :data-theme="'theme-' + proxy.$settingStore.themeColor.type"
+  >
+    <template #default>
+      <view class="alarmManage">
+        <u-grid :border="true">
+          <u-grid-item v-for="(base, index) in dataList" :key="index" @click="handleToDetails(base.productCode, base.productName)">
+            <u-badge type="primary" max="9999" :value="base.total" :showZero="true" :absolute="true" :offset="[10, 10, 0, 0]"></u-badge>
+            <image class="mb15" style="width: 40px; height: 40px; margin-top: 35px" :src="base.typeImg" mode="aspectFill"></image>
+            <text class="mb15 grid-text text-ellipsis">{{ base.productName }}</text>
+          </u-grid-item>
+        </u-grid>
+      </view>
+    </template>
+  </oa-scroll>
+</template>
+
+<script setup>
+import { onReady, onLoad, onShow, onNavigationBarButtonTap, onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app";
+import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance } from "vue";
+import { useStores, commonStores } from "@/store/modules/index";
+
+import { dmpProductInfo, baseAlarmTypeList } from "@/api/business/fireIot/alarmManage.js";
+
+const { proxy } = getCurrentInstance();
+
+const dataList = ref([]);
+const pageSize = ref(20);
+const current = ref(1);
+const total = ref(0);
+
+/**
+ * @页面初始化
+ */
+function init() {
+  baseAlarmTypeList({ productName: "", current: current.value, size: pageSize.value }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      dmpProductInfo({ current: current.value, size: 2000 }).then((requset1) => {
+        if (requset1.status === "SUCCESS") {
+          requset.data.records.forEach((e) => {
+            requset1.data.records.forEach((el) => {
+              if (e.productCode === el.productCode) {
+                e.typeImg = el.typeImg ? el.typeImg : "/static/images/404.png";
+              }
+            });
+          });
+
+          dataList.value = requset.data.records;
+          total.value = requset.data.total;
+        }
+      });
+    }
+  });
+}
+
+function handleToDetails(productCode, productName) {
+  proxy.$tab.navigateTo(`/pages/business/videoMonitor/videoList?productCode=${productCode}&productName=${productName}`);
+}
+
+/**
+ * @scrollView加载数据
+ */
+function load() {
+  pageSize.value += 10;
+  init();
+}
+
+/**
+ * @scrollView刷新数据
+ */
+function refresh() {
+  pageSize.value = 20;
+  total.value = 0;
+  init();
+}
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+
+  init();
+});
+</script>

+ 165 - 0
src/pages/business/videoMonitor/videoDetail.vue

@@ -0,0 +1,165 @@
+<template>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view class="alarmDetails-container">
+ 
+
+      <view class="bg-white p15 mb15">
+        <uni-section class="block mb10" :title="'设备名称:'+deviceName" type="line"></uni-section>
+        <!-- <view class="mb15">{{ deviceName}}</view> -->
+        <view class="tableType3 padding-0">
+          
+
+          <video id="myVideo" :src="videoUrl" style="width:100%" loop="loop" autoplay="autoplay"></video>
+
+        </view>
+      </view>
+
+     
+    </view>
+  </scroll-view>
+</template>
+
+<script setup>
+import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
+import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
+import { useStores, commonStores } from "@/store/modules/index";
+
+import { page, fill } from "@/api/business/fireIot/repairManage.js";
+
+const { proxy } = getCurrentInstance();
+const useStore = useStores();
+const commonStore = commonStores();
+
+
+const dataArray = ref({});
+const dataList = ref([
+  {
+    title: "报修日期",
+    value: "",
+  },
+  {
+    title: "项目名称",
+    value: "",
+  },
+  {
+    title: "报修人",
+    value: "",
+  },
+  {
+    title: "报修电话",
+    value: "",
+  },
+  {
+    title: "问题描述",
+    value: "",
+  },
+  {
+    title: "报修地址",
+    value: "",
+  },
+]);
+
+const deviceName = ref("");
+const pageSize = ref(20);
+const current = ref(1);
+const total = ref(0);
+const videoUrl=ref('http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8');
+
+/**
+ * @页面初始化
+ */
+function init() {
+  selectListApi();
+}
+
+/**
+ * @列表查询
+ * @api接口查询
+ */
+function selectListApi() {
+  page({
+    repairCode: repairCode.value,
+    current: current.value,
+    size: pageSize.value,
+  }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      dataArray.value = requset.data.records[0];
+      dataArray.value.handleName = requset.data.records[0].handleName ? requset.data.records[0].handleName : useStore.nickName ? useStore.nickName : "";
+      dataArray.value.handleContent = requset.data.records[0].handleContent ? requset.data.records[0].handleContent : "";
+
+      dataList.value[0].value = requset.data.records[0].createTime ? requset.data.records[0].createTime.replace("T", " ") : requset.data[0].createTime;
+      dataList.value[1].value = requset.data.records[0].projectName;
+      dataList.value[2].value = requset.data.records[0].reflectName;
+      dataList.value[3].value = requset.data.records[0].reflectPhone;
+      dataList.value[4].value = requset.data.records[0].repairContent;
+      dataList.value[5].value = requset.data.records[0].projectAddress;
+
+      if (requset.data.records[0].repairStatus === 2) {
+        dataList.value.push(
+          {
+            title: "评分",
+            value: 0,
+          },
+          {
+            title: "评分内容",
+            value: "",
+          }
+        );
+        dataList.value[6].value = requset.data.records[0].score ? requset.data.records[0].score : 0;
+        dataList.value[7].value = requset.data.records[0].appraiseContent;
+      }
+
+      total.value = requset.data.total;
+    }
+  });
+}
+
+/**
+ * @提交
+ */
+function handleSubmit(type) {
+  if (type == 1) {
+    proxy.$tab.navigateBack(1);
+  } else {
+    if (!dataArray.value.handleName) {
+      proxy.$modal.msg("请输入报修人");
+      return;
+    }
+
+    fill({
+      id: dataArray.value.id,
+      handleName: dataArray.value.handleName,
+      handleContent: dataArray.value.handleContent,
+    }).then((res) => {
+      if (requset.status === "SUCCESS") {
+        proxy.$tab.navigateTo(`/pages/common/success/index?codeName=提交成功`);
+      }
+    });
+  }
+}
+
+onReady(() => {});
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+
+onLoad((options) => {
+  if ("deviceName" in options) {
+    deviceName.value = options.deviceName;
+  }
+
+  // init();
+});
+</script>
+
+<style lang="scss" scoped>
+:deep(.u-input__content__field-wrapper__field) {
+  font-size: 13px !important;
+}
+
+:deep(.u-textarea__field) {
+  font-size: 13px;
+}
+</style>

+ 209 - 0
src/pages/business/videoMonitor/videoList.vue

@@ -0,0 +1,209 @@
+<template>
+  <!-- <u-sticky class="shadow-default" bgColor="#fff" style="top: 0">
+    <u-tabs :list="tabsList" :current="tabsCurrent" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }" :scrollable="false"></u-tabs>
+  </u-sticky> -->
+
+  <oa-scroll
+    customClass="repairManage-container scroll-height"
+    :pageSize="pageSize"
+    :total="total"
+    :refresherLoad="true"
+    :refresherEnabled="true"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :lowerThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    @load="load"
+    @refresh="refresh"
+    :data-theme="'theme-' + proxy.$settingStore.themeColor.name"
+  >
+    <template #default>
+      <view class="menu-list m0">
+        <view class="list-cell list-cell-arrow" style=" line-height: 25px" v-for="(base, index) in dataList" :key="index" @click="handleToDetails(base)">
+          <view class="menu-item">
+              <image  v-if="base.deviceStatus == 1" class="image-bg" style="width: 80rpx; height: 80rpx; margin: auto 10px auto 0" src="@/static/images/videoMonitor/video-icon-on.png"></image>
+              <image  v-if="base.deviceStatus == 2" class="image-bg" style="width: 80rpx; height: 80rpx; margin: auto 10px auto 0" src="@/static/images/videoMonitor/video-icon-off.png"></image>
+              <view style="width: calc(100% - 51px); display: flex; justify-content: space-between; padding-right: 10px">
+                <view class="deviceHeader">
+                  <view class="deviceName text-ellipsis">{{ base.deviceName }}</view>
+
+                </view>
+                <view class="" v-if="base.deviceStatus == 1" style="color: #16bf00;margin-right:10px"> 在线 </view>
+                  <view class="" v-if="base.deviceStatus == 2" style="color: #333;margin-right:10px"> 离线 </view>
+               
+              </view>
+
+              <view>
+               
+              </view>
+            </view>
+          
+          
+          <!-- <view class="content-area-top menu-item">
+       
+            <view class="content-area-top-status" v-if="base.deviceStatus == 1" style="background-color: #23dedc"> 在线 </view>
+            <view class="content-area-top-status" v-if="base.deviceStatus == 2" style="background-color: #16bf00"> 离线 </view>
+          </view>
+          <view class="content-area-row_wrap menu-item">
+           
+            <view class="content-area-row_wrap-view"> {{ base.reflectPhone }} </view>
+          </view> -->
+        </view>
+      </view>
+    </template>
+  </oa-scroll>
+</template>
+
+<script setup>
+import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
+import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
+import { useStores, commonStores } from "@/store/modules/index";
+
+import { pageQuery } from "@/api/business/videoMonitor.js";
+
+const { proxy } = getCurrentInstance();
+const commonStore = commonStores();
+
+const tabsList = ref([
+  {
+    name: "全部",
+    value: "",
+  },
+  {
+    name: "受理中",
+    value: 1,
+  },
+  {
+    name: "处理完成",
+    value: 2,
+  },
+]);
+const tabsCurrent = ref(1);
+
+const dataList = ref([]);
+const pageSize = ref(20);
+const current = ref(1);
+const total = ref(0);
+
+/**
+ * @页面初始化
+ */
+function init() {
+  selectListApi();
+}
+
+/**
+ * @列表查询
+ * @api接口查询
+ */
+function selectListApi() {
+  pageQuery({
+    // deviceStatus: tabsList.value[tabsCurrent.value].value,
+    current: current.value,
+    size: pageSize.value,
+  }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      dataList.value = requset.data.records;
+      total.value = requset.data.total;
+    }
+  });
+}
+
+/**
+ * @跳转详情事件
+ */
+function handleToDetails(e) {
+  proxy.$tab.navigateTo(`/pages/business/videoMonitor/videoDetail?deviceName=${e.deviceName}`);
+  if(e.deviceStatus==1){
+   
+  }
+  
+}
+
+/**
+ * @scrollView加载数据
+ */
+function load() {
+  pageSize.value += 10;
+  init();
+}
+
+/**
+ * @scrollView刷新数据
+ */
+function refresh() {
+  pageSize.value = 20;
+  total.value = 0;
+  init();
+}
+
+/**
+ * @tabs点击事件
+ */
+function tabsClick(e) {
+  tabsCurrent.value = e.index;
+  init();
+}
+
+onReady(() => {});
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+
+onLoad((options) => {
+  init();
+});
+</script>
+
+<style lang="scss" scoped>
+.repairManage-container {
+  .content-area {
+    &-top {
+      padding-right: 10px;
+      font-size: 16px;
+      font-weight: 600;
+      color: #000000;
+
+      &-time {
+        max-width: 70%;
+        margin: auto 0;
+        font-size: 14px;
+        color: rgb(102, 102, 102);
+      }
+
+      &-name {
+        max-width: 70%;
+        color: #000;
+      }
+
+      &-status {
+        max-width: 30%;
+        margin: auto 0 auto auto;
+        font-size: 12px;
+        color: #ffffff;
+        padding: 0 5px;
+        border-radius: 20px;
+        line-height: 20px;
+      }
+    }
+
+    &-row_wrap {
+      padding-right: 10px;
+      font-size: 13px;
+      flex-flow: row wrap;
+
+      &-view {
+        display: flex;
+        min-width: 50%;
+        > .iconfont {
+          font-size: 14px;
+          color: #909399;
+          margin-left: 5px;
+        }
+      }
+    }
+  }
+}
+</style>

+ 1 - 2
src/pages/business/zhaf/signIn/index.vue

@@ -80,7 +80,7 @@ function handleInsert() {
  */
 function getStatusApi() {
   getStatus().then((res) => {
-    if (res.status == "SUCCESS") {
+    if (res.status == "SUCCESS" && res.data != null) {
       state.signInType = res.data.operateType;
     }
   });
@@ -92,7 +92,6 @@ function getLocation() {
     geocode: true,
     highAccuracyExpireTime: 5000,
     success: function (res) {
-      console.log(res);
       state.longitude = res.longitude;
       state.latitude = res.latitude;
       state.address = res.address.city + res.address.district + res.address.street + res.address.streetNum + res.address.poiName;

+ 98 - 0
src/pages/business/zhxf/fireInspect/index.vue

@@ -0,0 +1,98 @@
+<template>
+  <oa-scroll
+    customClass="bg-white scroll-height"
+    :pageSize="pageSize"
+    :total="total"
+    :refresherLoad="true"
+    :refresherLoadTitle="false"
+    :refresherEnabled="true"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    @load="load"
+    @refresh="refresh"
+    :data-theme="'theme-' + proxy.$settingStore.themeColor.type"
+  >
+    <template #default>
+      <view class="menu-list m0">
+        <view class="list-cell list-cell-arrow" style="line-height: 25px" v-for="(base, index) in dataList" :key="index" @click="handleToDetails(base.productCode, base.productName)">
+          <view class="menu-item">
+            <image class="image-bg" style="width: 80rpx; height: 80rpx; margin: auto 10px auto 0" :src="base.typeImg"> </image>
+            <view style="width: calc(100% - 51px); display: flex; justify-content: space-between; padding-right: 10px">
+              <view class="deviceHeader">
+                <view class="deviceName text-ellipsis">{{ base.productName }}</view>
+              </view>
+            </view>
+          </view>
+        </view>
+      </view>
+    </template>
+  </oa-scroll>
+</template>
+
+<script setup>
+import { onReady, onLoad, onShow, onNavigationBarButtonTap, onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app";
+import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance } from "vue";
+import { dmpProductInfo, baseAlarmTypeList } from "@/api/business/fireIot/alarmManage.js";
+
+const { proxy } = getCurrentInstance();
+
+const dataList = ref([
+  {
+    productName: "人工督察单",
+    productCode: "501_JK",
+    deviceType: 501,
+    total: 819,
+    untreated: 26,
+    processed: 793,
+    processRate: 96.82539,
+    deviceCount: 661,
+    offLineUntreated: 0,
+    offLineProcessed: 0,
+    offLineProcessRate: 0,
+    typeImg: "/static/images/fireInspect/rg.png",
+  },
+  {
+    productName: "电子督察单",
+    productCode: "509_HJ",
+    deviceType: 509,
+    total: 3,
+    untreated: 0,
+    processed: 3,
+    processRate: 100,
+    deviceCount: 1,
+    offLineUntreated: 0,
+    offLineProcessed: 0,
+    offLineProcessRate: 0,
+    typeImg: "/static/images/fireInspect/dz.png",
+  },
+]);
+const pageSize = ref(20);
+const total = ref(2);
+
+
+
+function handleToDetails(productCode, productName) {
+  proxy.$tab.navigateTo(`/pages/business/zhxf/fireInspect/inspectDetailsList/index?productCode=${productCode}&productName=${productName}`);
+}
+
+/**
+ * @scrollView加载数据
+ */
+function load() {
+  pageSize.value += 10;
+}
+
+/**
+ * @scrollView刷新数据
+ */
+function refresh() {
+  pageSize.value = 20;
+}
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+
+});
+</script>

+ 266 - 0
src/pages/business/zhxf/fireInspect/inspectDetails/index.vue

@@ -0,0 +1,266 @@
+<template>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view class="alarmDetails-container">
+      <view class="flex bg-white p15 mb15">
+        <image style="width: 40px; height: 40px; margin: auto 15px auto 0" :src="dataArray.typeImg ? dataArray.typeImg : '/static/images/404.png'" mode="aspectFill"></image>
+
+        <view style="margin: auto auto auto 0">
+          <view style="font-size: 15px"> {{ dataArray.timestamp ? dataArray.timestamp.replace("T", " ") : "" }} </view>
+        </view>
+
+        <view style="margin: auto 0 auto 0">
+          <view style="font-size: 15px" :style="`color:${dataArray.handleStatus == 1 ? '#16bf00' : 'red'}`">
+            {{ dataArray.handleStatus == 1 ? "已处理" : dataArray.handleStatus == 0 ? "未处理" : "" }}
+          </view>
+        </view>
+      </view>
+
+      <view class="bg-white p15 mb15">
+        <uni-section class="block mb10" title="基本信息" type="line"></uni-section>
+        <view class="tableType3 padding-0">
+          <u-row v-for="da in dataList" :key="da">
+            <u-col span="4">
+              <view style="text-align: right; padding: 0px 5px 0px 5px">{{ da.title }}</view>
+            </u-col>
+            <u-col span="8">
+              <view style="text-align: left; padding: 0px 5px 0px 5px">{{ da.value }}</view>
+            </u-col>
+          </u-row>
+        </view>
+      </view>
+
+      <view class="bg-white p15 mb15" v-if="dataArray.handleStatus == 1">
+        <uni-section class="block mb10" title="处理信息" type="line"></uni-section>
+        <view class="tableType3 padding-0">
+          <u-row v-for="da in dataList2" :key="da">
+            <u-col span="4">
+              <view style="text-align: right; padding: 0px 5px 0px 5px">{{ da.title }}</view>
+            </u-col>
+            <u-col span="8">
+              <view style="text-align: left; padding: 0px 5px 0px 5px">{{ da.value }}</view>
+            </u-col>
+          </u-row>
+        </view>
+      </view>
+
+      <view class="bg-white p15 mb15">
+        <uni-section class="block mb10" title="处理内容" type="line"></uni-section>
+
+        <view>
+          <u-radio-group v-model="handleRange" placement="row" v-if="dataArray.handleStatus != 1">
+            <u-radio
+              v-for="han in handleRangeList"
+              :key="han"
+              :activeColor="proxy.$settingStore.themeColor.color"
+              :label="han.label"
+              :name="han.value"
+              style="margin: 0 15px 15px 0"
+              :labelSize="13"
+              :iconSize="10"
+            ></u-radio>
+          </u-radio-group>
+
+          <u--textarea
+            v-model="dataArray.handleContent"
+            placeholder="备注信息,最多可输入50个字"
+            :count="true"
+            maxlength="50"
+            style="margin: 0 0 15px 0"
+            :disabled="dataArray.handleStatus == 1"
+          ></u--textarea>
+        </view>
+
+        <view class="flex" v-if="dataArray.handleStatus != 1">
+          <u-button
+            type="primary"
+            text="提交"
+            shape="circle"
+            :customStyle="{
+              width: '80px',
+              height: '30px',
+              marginRight: '15px',
+            }"
+            @click="handleSubmit(1)"
+          ></u-button>
+        </view>
+      </view>
+    </view>
+  </scroll-view>
+</template>
+
+<script setup>
+import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
+import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
+import { eleInspectList, dealPutEle, persInspectList, dealPutPer } from "@/api/business/zhxf/fireInspect/index.js";
+
+const { proxy } = getCurrentInstance();
+
+const dataArray = ref({});
+const dataList = ref([
+  {
+    title: "督察单编号",
+    value: "",
+  },
+  {
+    title: "督察单内容",
+    value: "",
+  },
+]);
+const dataList2 = ref([
+  {
+    title: "处理账号/电话",
+    value: "",
+  },
+  {
+    title: "处理时间",
+    value: "",
+  },
+  // {
+  //   title: "处理内容",
+  //   value: "",
+  // },
+]);
+
+const deviceName = ref("");
+const alarmTime = ref("");
+const id = ref("");
+const productName = ref("");
+const pageSize = ref(20);
+const current = ref(1);
+const total = ref(0);
+const handleRange = ref(1);
+const handleRangeList = ref([
+  {
+    label: "单个处理",
+    value: 1,
+  },
+  {
+    label: "批量处理",
+    value: 0,
+  },
+]);
+
+/**
+ * @页面初始化
+ */
+function init() {
+  selectListApi();
+}
+
+/**
+ * @列表查询
+ * @api接口查询
+ */
+function selectListApi() {
+
+  if (productName.value == "电子督察单") {
+
+    getDetail(eleInspectList,'电子')
+    // eleInspectList({
+    //   id: id.value,
+    //   pageNum: current.value,
+    //   pageSize: pageSize.value,
+    // }).then((requset) => {
+    //   if (requset.status === "SUCCESS") {
+    //     dataArray.value = requset.data.records[0];
+    //     dataList.value[0].value = requset.data.records[0].superviseCode;
+    //     dataList.value[1].value = requset.data.records[0].content;
+    //     dataList2.value[0].value = requset.data.records[0].handlePhone;
+    //     dataList2.value[1].value = requset.data.records[0].handleTime;
+    //     total.value = requset.data.total;
+    //   }
+    // });
+  } else {
+    getDetail(persInspectList,'人工')
+    // persInspectList({
+    //   id: id.value,
+    //   pageNum: current.value,
+    //   pageSize: pageSize.value,
+    // }).then((requset) => {
+    //   if (requset.status === "SUCCESS") {
+    //     dataArray.value = requset.data.records[0];
+    //     dataList.value[0].value = requset.data.records[0].artificialCode;
+    //     dataList.value[1].value = requset.data.records[0].content;
+    //     dataList2.value[0].value = requset.data.records[0].handlePhone;
+    //     dataList2.value[1].value = requset.data.records[0].handleTime;
+    //     total.value = requset.data.total;
+    //   }
+    // });
+  }
+
+  function getDetail(param,param2){
+    param({
+      id: id.value,
+      pageNum: current.value,
+      pageSize: pageSize.value,
+    }).then((requset) => {
+      if (requset.status === "SUCCESS") {
+        dataArray.value = requset.data.records[0];
+        dataList.value[0].value = param2=='电子'?requset.data.records[0].superviseCode:requset.data.records[0].artificialCode;
+        dataList.value[1].value = requset.data.records[0].content;
+        dataList2.value[0].value = requset.data.records[0].handlePhone;
+        dataList2.value[1].value = requset.data.records[0].handleTime;
+        total.value = requset.data.total;
+      }
+    });
+  }
+}
+
+/**
+ * @提交
+ */
+function handleSubmit() {
+ 
+  if (productName.value == "电子督察单") {
+    dealPutEle({
+      id: dataArray.value.id,
+      handleContent: dataArray.value.handleContent,
+      handleRange: handleRange.value,
+    }).then((requset) => {
+      if (requset.status === "SUCCESS") {
+        proxy.$tab.navigateTo(`/pages/common/success/index?codeName=提交成功`);
+      }
+    });
+  } else {
+    dealPutPer({
+      id: dataArray.value.id,
+      handleContent: dataArray.value.handleContent,
+      handleRange: handleRange.value,
+    }).then((requset) => {
+      if (requset.status === "SUCCESS") {
+        proxy.$tab.navigateTo(`/pages/common/success/index?codeName=提交成功`);
+      }
+    });
+  }
+}
+
+onReady(() => {});
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+
+onLoad((options) => {
+  if ("deviceName" in options) {
+    deviceName.value = options.deviceName;
+  }
+
+  if ("alarmTime" in options) {
+    alarmTime.value = options.alarmTime;
+  }
+  if ("id" in options) {
+    id.value = options.id;
+  }
+  if ("productName" in options) {
+    productName.value = options.productName;
+  }
+  init();
+});
+</script>
+
+<style lang="scss" scoped>
+:deep(.u-textarea__field) {
+  font-size: 13px;
+}
+</style>

+ 166 - 0
src/pages/business/zhxf/fireInspect/inspectDetailsList/index.vue

@@ -0,0 +1,166 @@
+<template>
+  <u-sticky class="shadow-default" bgColor="#fff" style="top: 0">
+    <u-tabs :list="tabsList" :current="tabsCurrent" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }" :scrollable="false"></u-tabs>
+  </u-sticky>
+
+  <oa-scroll
+    customClass="scroll-height"
+    :pageSize="pageSize"
+    :total="total"
+    :refresherLoad="true"
+    :refresherEnabled="true"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :lowerThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    @load="load"
+    @refresh="refresh"
+    :data-theme="'theme-' + proxy.$settingStore.themeColor.name"
+  >
+    <template #default>
+      <view class="menu-list m0">
+        <view class="list-cell list-cell-arrow" style="line-height: 25px" v-for="(base, index) in dataList" :key="index" @click="handleToDetails(base)">
+          <view class="menu-item">
+            <image
+              class="image-bg"
+              style="width: 80rpx; height: 80rpx; margin: auto 10px auto 0"
+              :src="base.handleStatus == 1 ? '/static/images/fireInspect/processed-icon.png' : '/static/images/fireInspect/process-icon.png'"
+            >
+            </image>
+            <view style="width: calc(100% - 51px); display: flex; justify-content: space-between; align-items: center; padding-right: 10px">
+              <view class="deviceHeader">
+                <view class="deviceName text-ellipsis">{{ base.superviseCode }}</view>
+                <view class="deviceName text-ellipsis"> {{ base.content }}</view>
+                <view class="deviceName text-ellipsis">{{ base.timestamp ? base.timestamp.replace("T", " ") : "" }}</view>
+              </view>
+              <view class="" v-if="base.handleStatus == 1" style="color: #16bf00; margin-right: 10px"> 已处理 </view>
+              <view class="" v-if="base.handleStatus == 0" style="color: red; margin-right: 10px"> 未处理 </view>
+            </view>
+          </view>
+        </view>
+      </view>
+    </template>
+  </oa-scroll>
+</template>
+
+<script setup>
+import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
+import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
+import { eleInspectList, persInspectList } from "@/api/business/zhxf/fireInspect/index.js";
+
+const { proxy } = getCurrentInstance();
+
+const tabsList = ref([
+  {
+    name: "全部",
+    value: "",
+  },
+  {
+    name: "未处理",
+    value: 0,
+  },
+  {
+    name: "已处理",
+    value: 1,
+  },
+]);
+const tabsCurrent = ref(0);
+const dataList = ref([]);
+const productCode = ref("");
+const productName = ref("");
+const pageSize = ref(20);
+const current = ref(1);
+const total = ref(0);
+
+/**
+ * @页面初始化
+ */
+function init() {
+  selectListApi();
+}
+
+/**
+ * @列表查询
+ * @api接口查询
+ */
+function selectListApi() {
+  if (productName.value == "电子督察单") {
+    getList(eleInspectList)
+  } else {
+    getList(persInspectList)
+  }
+
+
+  function getList(param){
+    param({
+      handleStatus: tabsList.value[tabsCurrent.value].value,
+      pageNum: current.value,
+      pageSize: pageSize.value,
+    }).then((requset) => {
+      if (requset.status === "SUCCESS") {
+        dataList.value = requset.data.records;
+        total.value = requset.data.total;
+        uni.setNavigationBarTitle({
+          title: `${productName.value}(${total.value})`,
+        });
+      }
+    });
+  }
+}
+
+/**
+ * @跳转详情事件
+ */
+function handleToDetails(e) {
+  console.log(e);
+  proxy.$tab.navigateTo(`/pages/business/zhxf/fireInspect/inspectDetails/index?id=${e.id}&productName=${productName.value}`);
+}
+
+/**
+ * @scrollView加载数据
+ */
+function load() {
+  pageSize.value += 10;
+  init();
+}
+
+/**
+ * @scrollView刷新数据
+ */
+function refresh() {
+  pageSize.value = 20;
+  total.value = 0;
+  init();
+}
+
+/**
+ * @tabs点击事件
+ */
+function tabsClick(e) {
+  tabsCurrent.value = e.index;
+  init();
+}
+
+onReady(() => {});
+
+onShow(() => {
+  init();
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+
+onLoad((options) => {
+  if ("productName" in options) {
+    productName.value = options.productName;
+  }
+  if ("productCode" in options) {
+    productCode.value = options.productCode;
+    init();
+  }
+});
+</script>
+
+<style lang="scss" scoped>
+.alarmDetailsList-container {
+}
+</style>

+ 1 - 2
src/pages/mine.vue

@@ -202,9 +202,8 @@ function handleToUpgrade() {
 
   let data = {
     _api_key: "fba7440cd37400b6ff46e303896af4df",
-    appKey: "705a19c80c291a47067103824330eb66",
+    appKey: "cbd3508235d03365f4253f6aae6b68ab",
     buildVersion: config.appInfo.version,
-    // buildVersion: "2.1.0",
   };
   checkUpdates(data).then((res) => {
     if (res.code == 0) {

+ 1 - 0
src/permission.js

@@ -43,6 +43,7 @@ list.forEach((item) => {
         }
         return true;
       } else {
+
         if (checkWhite(to.url)) {
           return true;
         }

BIN
src/static/images/fireInspect/dz.png


BIN
src/static/images/fireInspect/process-icon.png


BIN
src/static/images/fireInspect/processed-icon.png


BIN
src/static/images/fireInspect/rg.png


BIN
src/static/images/videoMonitor/video-icon-off.png


BIN
src/static/images/videoMonitor/video-icon-on.png