浏览代码

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

xf15575941817 1 年之前
父节点
当前提交
67de575e04
共有 56 个文件被更改,包括 1987 次插入1156 次删除
  1. 3 0
      src/App.vue
  2. 47 0
      src/api/business/fireIot/facilitiesView/index.js
  3. 2 2
      src/api/mine/info.js
  4. 12 6
      src/components/oa-tabbar/index.vue
  5. 1 1
      src/config.js
  6. 2 2
      src/manifest.json
  7. 96 7
      src/pages.json
  8. 77 0
      src/pages/business/fireIot/facilitiesManage/index.vue
  9. 216 0
      src/pages/business/fireIot/facilitiesView/facilitiesDetails.vue
  10. 112 0
      src/pages/business/fireIot/facilitiesView/facilitiesDetailsList.vue
  11. 80 0
      src/pages/business/fireIot/facilitiesView/index.vue
  12. 0 14
      src/pages/business/mhxf/coordination/index.vue
  13. 63 81
      src/pages/business/mhxf/deviceManage/index.vue
  14. 16 14
      src/pages/business/mhxf/fireReport/index.vue
  15. 5 13
      src/pages/business/mhxf/informationSelect-test/index.vue
  16. 32 92
      src/pages/business/mhxf/informationSelect/index.vue
  17. 157 143
      src/pages/business/mhxf/needMatter/index.vue
  18. 276 279
      src/pages/business/mhxf/unitInfoCollection/index.vue
  19. 3 12
      src/pages/business/mhxf/xunJian/collect/components/collectDetail.vue
  20. 4 13
      src/pages/business/mhxf/xunJian/collect/components/collectRecord.vue
  21. 5 17
      src/pages/business/mhxf/xunJian/collect/index.vue
  22. 11 11
      src/pages/business/mhxf/xunJian/plan/components/content.vue
  23. 2 2
      src/pages/business/mhxf/xunJian/plan/components/drawer.vue
  24. 16 22
      src/pages/business/mhxf/xunJian/plan/components/report.vue
  25. 8 74
      src/pages/business/mhxf/xunJian/plan/components/siteDetails.vue
  26. 3 3
      src/pages/business/mhxf/xunJian/plan/index.vue
  27. 1 1
      src/pages/business/mhxf/xunJian/xunJian.vue
  28. 13 12
      src/pages/index.vue
  29. 9 7
      src/pages/info/fireBase/fireBase.vue
  30. 8 48
      src/pages/info/info.vue
  31. 4 3
      src/pages/login.vue
  32. 104 50
      src/pages/mine/avatar/index.vue
  33. 16 4
      src/pages/mine/index.vue
  34. 21 21
      src/pages/mine/info/index.vue
  35. 7 7
      src/pages/mine/secure/index.vue
  36. 2 2
      src/pages/mine/setting/index.vue
  37. 9 0
      src/static/icons/index/APP-sbcx.svg
  38. 二进制
      src/static/images/404.png
  39. 二进制
      src/static/images/wt/arrow.png
  40. 二进制
      src/static/images/wt/arrow2.png
  41. 2 1
      src/static/scss/colorui.css
  42. 89 11
      src/static/scss/index.scss
  43. 193 38
      src/static/scss/public.scss
  44. 21 15
      src/static/scss/sidebar.scss
  45. 28 15
      src/static/scss/themes.scss
  46. 0 1
      src/store/modules/setting.js
  47. 2 84
      src/uni_modules/uview-plus/changelog.md
  48. 1 1
      src/uni_modules/uview-plus/components/u-back-top/u-back-top.vue
  49. 2 2
      src/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue
  50. 2 2
      src/uni_modules/uview-plus/components/u-picker/u-picker.vue
  51. 22 21
      src/uni_modules/uview-plus/components/u-tabs/u-tabs.vue
  52. 32 0
      src/uni_modules/uview-plus/components/u-timeline/props.js
  53. 129 0
      src/uni_modules/uview-plus/components/u-timeline/u-drawer.vue
  54. 3 1
      src/uni_modules/uview-plus/libs/config/props.js
  55. 17 0
      src/uni_modules/uview-plus/libs/config/props/drawer.js
  56. 1 1
      src/uni_modules/uview-plus/package.json

+ 3 - 0
src/App.vue

@@ -41,7 +41,10 @@ watchEffect(() => {
 
 onLaunch(() => {
   console.log("App Launch");
+
+  // #ifdef APP-PLUS || H5
   uni.hideTabBar(); //隐藏自带tabbar
+  // #endif
 
   // #ifdef APP-PLUS
   plus.screen.lockOrientation("portrait-primary"); //设置不可横屏

+ 47 - 0
src/api/business/fireIot/facilitiesView/index.js

@@ -0,0 +1,47 @@
+import upload from "@/utils/upload";
+import request from "@/utils/request";
+
+// 设施查询列表请求
+export function baseFacilityType(param) {
+    return request({
+        url: "/service-iot/baseFacilityType/typeInfo",
+        method: "POST",
+        data: param,
+    });
+}
+
+// 设施详情列表接口请求
+export function baseGgpFacility(param) {
+    return request({
+        url: "/service-iot/baseGgpFacility/page",
+        method: "POST",
+        data: param,
+    });
+}
+
+// 设施详情接口请求
+export function facilityInfo(param) {
+    return request({
+        url: "/service-iot/baseGgpFacility/facilityInfo",
+        method: "GET",
+        data: param,
+    });
+}
+
+// 设施详情关联设备接口请求
+export function deviceInfo(param) {
+    return request({
+        url: "/service-iot/baseGgpFacility/deviceInfo",
+        method: "GET",
+        data: param,
+    });
+}
+
+// 设施详情关联建筑接口请求
+export function buildInfo(param) {
+    return request({
+        url: "/service-iot/baseGgpFacility/buildInfo",
+        method: "GET",
+        data: param,
+    });
+}

+ 2 - 2
src/api/mine/info.js

@@ -6,7 +6,7 @@ import request from "@/utils/request";
  */
 export function getKnowledgeBaseList(param) {
   return request({
-    url: "KnowledgeBase/getKnowledgeBaseList",
+    url: "/KnowledgeBase/getKnowledgeBaseList",
     method: "GET",
     data: param,
   });
@@ -17,7 +17,7 @@ export function getKnowledgeBaseList(param) {
  */
 export function getKnowledgeBaseDetails(param) {
   return request({
-    url: "KnowledgeBase/getKnowledgeBaseDetails",
+    url: "/KnowledgeBase/getKnowledgeBaseDetails",
     method: "GET",
     data: param,
   });

+ 12 - 6
src/components/oa-tabbar/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <u-tabbar :value="proxy.$settingStore.tabbarValue" @change="tabbarChange" :fixed="true" :placeholder="true" :safeAreaInsetBottom="true" :activeColor="proxy.$settingStore.themeColor.color">
-    <u-tabbar-item :text="tab.text" :name="tab.pagePath" v-for="(tab, index) in tabbarList" :key="index" :dot="tab.dot">
+  <u-tabbar :value="tabbarValue" @change="tabbarChange" :fixed="true" :placeholder="true" :safeAreaInsetBottom="true" :activeColor="proxy.$settingStore.themeColor.color">
+    <u-tabbar-item :text="tab.text" v-for="(tab, index) in tabbarList" :key="index" :dot="tab.dot">
       <template #active-icon>
         <image style="width: 24px; height: 24px" :src="proxy.$settingStore.themeColor.tabList[index]"></image>
       </template>
@@ -12,11 +12,18 @@
 </template>
 <script setup>
 import { onReady, onLoad, onShow, onNavigationBarButtonTap, onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app";
-import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance } from "vue";
+import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance, watchEffect, toRefs } from "vue";
 
 const { proxy } = getCurrentInstance();
 
-const props = defineProps({});
+const props = defineProps({
+  tabbarValue: {
+    type: Number,
+    default: 0,
+  },
+});
+
+const { tabbarValue } = toRefs(props);
 
 const tabbarList = ref([
   {
@@ -49,8 +56,7 @@ const tabbarList = ref([
 ]);
 
 function tabbarChange(e) {
-  proxy.$settingStore.tabbarValue = e;
-  proxy.$tab.switchTab(e);
+  proxy.$tab.switchTab(tabbarList.value[e].pagePath);
 }
 
 onLoad((option) => {});

+ 1 - 1
src/config.js

@@ -29,7 +29,7 @@ export default {
       {
         title: "用户服务协议",
         content: "暂无数据",
-        url: "https://ruoyi.vip/protocol.html",
+        url: "http://file.usky.cn/statics/protocol.html",
       },
       {
         title: "隐私政策",

+ 2 - 2
src/manifest.json

@@ -2,8 +2,8 @@
     "name" : "综合智慧云",
     "appid" : "__UNI__36DE3A0",
     "description" : "综合智慧云",
-    "versionName" : "2.0.2",
-    "versionCode" : 4,
+    "versionName" : "2.0.3",
+    "versionCode" : 5,
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {

+ 96 - 7
src/pages.json

@@ -4,7 +4,7 @@
       "path": "pages/index",
       "style": {
         "navigationStyle": "custom",
-        "navigationBarTitleText": "",
+        "navigationBarTitleText": "工作台",
         "app-plus": {
           "bounce": "none",
           "titleNView": false
@@ -144,12 +144,11 @@
         {
           "path": "/avatar/index",
           "style": {
-            "navigationBarTitleText": "修改头像",
-            "navigationStyle": "custom",
-            "app-plus": {
-              "bounce": "none",
-              "titleNView": false
-            }
+            "navigationBarTitleText": "修改头像"
+            // "app-plus": {
+            //   "bounce": "none",
+            //   "titleNView": false
+            // }
           }
         },
         {
@@ -432,6 +431,96 @@
           }
         }
       ]
+    },
+    // 消防物联网
+    {
+      "root": "pages/business/fireIot",
+      "pages": [
+        {
+          "path": "/deviceSelect/index",
+          "style": {
+            "navigationBarTitleText": "设备查询",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "/deviceSelect/components/deviceDetailsList",
+          "style": {
+            "navigationBarTitleText": "",
+            "enablePullDownRefresh": false,
+            "app-plus": {
+              "titleNView": {
+                "buttons": [
+                  {
+                    "text": "\ue7c7",
+                    "fontSize": "18px",
+                    // "redDot": true,
+                    "float": "right",
+                    "fontSrc": "/static/iconfont/iconfont.ttf",
+                    "width": "auto"
+                  }
+                ]
+              }
+            }
+          }
+        },
+        {
+          "path": "/deviceSelect/components/deviceDetails",
+          "style": {
+            "navigationBarTitleText": "设备详情",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "/facilitiesManage/index",
+          "style": {
+            "navigationBarTitleText": "设施管理",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "/facilitiesGather/index",
+          "style": {
+            "navigationBarTitleText": "设施采集",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "/facilitiesView/index",
+          "style": {
+            "navigationBarTitleText": "设施查看",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "/facilitiesView/facilitiesDetailsList",
+          "style": {
+            "navigationBarTitleText": "",
+            "enablePullDownRefresh": false,
+            "app-plus": {
+              "titleNView": {
+                "buttons": [
+                  {
+                    "text": "\ue7c7",
+                    "fontSize": "18px",
+                    // "redDot": true,
+                    "float": "right",
+                    "fontSrc": "/static/iconfont/iconfont.ttf",
+                    "width": "auto"
+                  }
+                ]
+              }
+            }
+          }
+        },
+        {
+          "path": "/facilitiesView/facilitiesDetails",
+          "style": {
+            "navigationBarTitleText": "设施详情",
+            "enablePullDownRefresh": false
+          }
+        }
+      ]
     }
   ],
   "globalStyle": {

+ 77 - 0
src/pages/business/fireIot/facilitiesManage/index.vue

@@ -0,0 +1,77 @@
+<template>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view class="padding-sm">
+      <!-- 宫格列表 -->
+      <view class="section2 section bg-white">
+        <view class="cu-list grid col-4 no-border" style="padding-top: 0.3125rem">
+          <view class="cu-item justify-center align-center" v-for="(item, index) in inspectList" :key="index" @tap="navItemClick(item.redirectUrl, item.id)">
+            <image :src="item.imgUrl" style="width: 40px; height: 40px"></image>
+            <view class="cu-tag badge" v-if="item.badge != 0">
+              <block v-if="item.badge != 0">{{ item.badge > 99 ? "99+" : item.badge }}</block>
+            </view>
+            <text style="font-size: 14px">{{ item.title }}</text>
+          </view>
+        </view>
+      </view>
+      <!-- 宫格列表 end -->
+    </view>
+  </scroll-view>
+</template>
+
+<script setup>
+import { onLoad, onShow, onHide, onLaunch } from "@dcloudio/uni-app";
+import { ref, reactive, computed, onMounted, getCurrentInstance, toRefs, inject } from "vue";
+import { xunJianStores, publicStores } from "@/store/modules/index";
+
+import json from "@/static/js/json.js";
+
+const publicStore = publicStores(); //全局公共Store
+const xunJianStore = xunJianStores(); //全局变量值Store
+
+const { proxy } = getCurrentInstance();
+
+const inspectList = [
+  {
+    id: 1,
+    title: "设施采集",
+    badge: "0",
+    imgUrl: "/static/images/xunjian/xunJian-icon1.png",
+    redirectUrl: "/pages/business/fireIot/facilitiesGather/index",
+  },
+  {
+    id: 2,
+    title: "设施查看",
+    badge: "0",
+    imgUrl: "/static/images/xunjian/xunJian-icon2.png",
+    redirectUrl: "/pages/business/fireIot/facilitiesView/index",
+  },
+]; //九宫格json数据
+
+function navItemClick(url, id) {
+  if (url) {
+    uni.navigateTo({
+      url: url,
+    });
+  } else {
+    uni.showModal({
+      title: "Tips",
+      content: "此模块开发中~",
+      showCancel: false,
+      success: function (res) {
+        if (res.confirm) {
+        } else if (res.cancel) {
+        }
+      },
+    });
+  }
+}
+
+onLoad(() => {});
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+</script>
+
+<style lang="scss"></style>

+ 216 - 0
src/pages/business/fireIot/facilitiesView/facilitiesDetails.vue

@@ -0,0 +1,216 @@
+<template>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view class="deviceDetails-container">
+      <view class="flex bg-white padding-15 margin-b-15">
+        <image style="width: 40px; height: 40px; margin: auto 15px auto 0" :src="dataArray.imagesUrl ? dataArray.imagesUrl : '/static/images/404.png'" mode="aspectFill"></image>
+
+        <view style="margin: auto auto auto 0">
+          <view style="font-size: 15px"> {{ dataArray.facilityName }} </view>
+        </view>
+
+        <view style="margin: auto 0 auto 0">
+          <!-- {{ siteList.siteStatus == null }} -->
+          <view style="font-size: 15px; color: #30bb00" :style="{ color: dataArray.status == 0 ? '#30bb00' : dataArray.status == 1 ? '#FF6000' : '#797979' }">
+            {{ dataArray.status == 0 ? "正常" : dataArray.status == 1 ? "维修" : "关闭" }}
+          </view>
+          <!-- #f07d28 -->
+        </view>
+      </view>
+
+      <view class="bg-white padding-15 margin-b-15">
+        <uni-section class="margin-bottom-10" title="基本信息" type="line"></uni-section>
+
+        <view class="tableType3 padding-0">
+          <u-empty v-if="dataList.length <= 0" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
+
+          <u-row v-for="po in dataList" :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 class="bg-white padding-15 margin-b-15">
+        <uni-section class="margin-bottom-10" title="关联设备" type="line"></uni-section>
+
+        <view class="flex margin-bottom-sm" style="height: 35px; line-height: 35px">
+          <u-input v-model="deviceId" placeholder="设备编号" @change="deviceInfoApi()" disabledColor="transparent" prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" clearable />
+        </view>
+
+        <view class="tableType1 price2">
+          <u-row>
+            <u-col span="1.5">
+              <view>序号</view>
+            </u-col>
+            <u-col span="3">
+              <view>设备编号</view>
+            </u-col>
+            <u-col span="3">
+              <view>设备名称</view>
+            </u-col>
+            <u-col span="4.5">
+              <view>设备地址</view>
+            </u-col>
+          </u-row>
+          <u-row v-for="(co, index) in dataList1" :key="index">
+            <u-col span="1.5">
+              <view>{{ index + 1 }}</view>
+            </u-col>
+            <u-col span="3">
+              <view>{{ co.deviceId }}</view>
+            </u-col>
+            <u-col span="3">
+              <view>{{ co.deviceName }}</view>
+            </u-col>
+            <u-col span="4.5">
+              <view>{{ co.installAddress }}</view>
+            </u-col>
+          </u-row>
+        </view>
+      </view>
+
+      <view class="bg-white padding-15 margin-b-15">
+        <uni-section class="margin-bottom-10" title="关联建筑" type="line"></uni-section>
+
+        <view class="flex margin-bottom-sm" style="height: 35px; line-height: 35px">
+          <u-input v-model="buildNum" placeholder="建筑编号" @change="buildInfoApi()" disabledColor="transparent" prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" clearable />
+        </view>
+
+        <view class="tableType1 price2">
+          <u-row>
+            <u-col span="1.5">
+              <view>序号</view>
+            </u-col>
+            <u-col span="3">
+              <view>建筑编号</view>
+            </u-col>
+            <u-col span="3">
+              <view>建筑名称</view>
+            </u-col>
+            <u-col span="4.5">
+              <view>建筑地址</view>
+            </u-col>
+          </u-row>
+          <u-row v-for="(co, index) in dataList2" :key="index">
+            <u-col span="1.5">
+              <view>{{ index + 1 }}</view>
+            </u-col>
+            <u-col span="3">
+              <view>{{ co.buildNum }}</view>
+            </u-col>
+            <u-col span="3">
+              <view>{{ co.buildName }}</view>
+            </u-col>
+            <u-col span="4.5">
+              <view>{{ co.address }}</view>
+            </u-col>
+          </u-row>
+        </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 { publicStores, useStores } from "@/store/modules/index";
+
+import { facilityInfo, deviceInfo, buildInfo } from "@/api/business/fireIot/facilitiesView/index";
+
+const { proxy } = getCurrentInstance();
+
+const id = ref(undefined);
+const deviceId = ref(undefined);
+const buildNum = ref(undefined);
+const dataArray = ref({});
+const dataList = ref([
+  {
+    title: "所属部门",
+    value: "",
+  },
+  {
+    title: "设施类型",
+    value: "",
+  },
+  {
+    title: "设施编号",
+    value: "",
+  },
+  {
+    title: "设施位置",
+    value: "",
+  },
+  {
+    title: "创建时间",
+    value: "",
+  },
+]);
+
+const dataList1 = ref([]);
+const dataList2 = ref([]);
+
+/**
+ * @页面初始化
+ */
+function init() {
+  facilityInfo({ id: id.value }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      dataArray.value = requset.data[0];
+      dataList.value[2].value = requset.data[0].facilityNum ? requset.data[0].facilityNum : "无";
+      dataList.value[3].value = requset.data[0].address ? requset.data[0].address : "无";
+      dataList.value[4].value = requset.data[0].createTime ? requset.data[0].createTime.replace("T", " ") : requset.data[0].createTime;
+    }
+  });
+
+  deviceInfoApi();
+  buildInfoApi();
+}
+
+/**
+ * @设施详情关联设备接口请求
+ * @api接口请求
+ */
+function deviceInfoApi() {
+  deviceInfo({ id: id.value, deviceId: deviceId.value, current: 1, size: 1000 }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      dataList1.value = requset.data.records;
+    }
+  });
+}
+
+/**
+ * @设施详情关联建筑接口请求
+ * @api接口请求
+ */
+function buildInfoApi() {
+  buildInfo({ id: id.value, buildNum: buildNum.value, current: 1, size: 1000 }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      dataList2.value = requset.data.records;
+    }
+  });
+}
+
+onReady(() => {});
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+
+onLoad((options) => {
+  if ("typeName" in options) {
+    dataList.value[1].value = options.typeName;
+  }
+  if ("id" in options) {
+    id.value = parseInt(options.id);
+    init();
+  }
+});
+</script>
+
+<style lang="scss" scoped></style>

+ 112 - 0
src/pages/business/fireIot/facilitiesView/facilitiesDetailsList.vue

@@ -0,0 +1,112 @@
+<template>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <u-sticky class="example-body" style="top: 0px" v-if="show">
+      <view class="padding-sm padding-tb-10" :class="'bg-' + proxy.$settingStore.themeColor.name">
+        <u--input
+          v-model="facilityName"
+          placeholder="搜索"
+          prefixIcon="search"
+          prefixIconStyle="font-size: 22px;color: #909399"
+          customStyle="height:35px;background-color:#f5f6fa;"
+          @confirm="init()"
+          clearable
+        ></u--input>
+      </view>
+    </u-sticky>
+
+    <view class="deviceDetailsList-container">
+      <view class="menu-list margin-0">
+        <view class="list-cell list-cell-arrow" v-for="(base, index) in dataList" :key="index" @click="handleToDevice(base.id)">
+          <view class="menu-item-box">
+            <view class="title">{{ base.facilityName }}</view>
+          </view>
+        </view>
+      </view>
+
+      <uni-pagination class="app-pagination bg-white" :current="current" :total="total" :pageSize="pageSize" prev-text="上一页" next-text="下一页" @change="paginationChange" />
+    </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 { publicStores, useStores } from "@/store/modules/index";
+
+import { baseGgpFacility } from "@/api/business/fireIot/facilitiesView/index";
+
+const { proxy } = getCurrentInstance();
+
+const dataList = ref([]);
+
+const show = ref(false);
+const facilityType = ref(undefined);
+const facilityName = ref("");
+const facilityTypeName = ref("");
+const pageSize = ref(20);
+const current = ref(1);
+const total = ref(0);
+
+/**
+ * @页面初始化
+ */
+function init() {
+  baseGgpFacility({ facilityType: facilityType.value, facilityName: facilityName.value, current: current.value, size: pageSize.value }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      if (requset.data.records.length > 0) {
+        uni.setNavigationBarTitle({
+          title: `${facilityTypeName.value}(${requset.data.total})`,
+        });
+      }
+
+      dataList.value = requset.data.records;
+      total.value = requset.data.total;
+    }
+  });
+}
+
+/**
+ * @分页chage事件
+ */
+function paginationChange(e) {
+  current.value = e.current;
+  init();
+}
+
+/**
+ * @设备详情跳转点击事件
+ */
+function handleToDevice(id) {
+  proxy.$tab.navigateTo(`/pages/business/fireIot/facilitiesView/facilitiesDetails?id=${id}&typeName=${facilityTypeName.value}`);
+}
+
+onReady(() => {});
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+
+onLoad((options) => {
+  if ("typeName" in options) {
+    facilityTypeName.value = options.typeName;
+  }
+  if ("id" in options) {
+    facilityType.value = parseInt(options.id);
+    init();
+  }
+});
+
+// 自定义导航事件
+onNavigationBarButtonTap((e) => {
+  if (e.float == "right") {
+    show.value = !show.value;
+  } else {
+  }
+});
+</script>
+
+<style lang="scss" scoped>
+.deviceDetailsList-container {
+}
+</style>

+ 80 - 0
src/pages/business/fireIot/facilitiesView/index.vue

@@ -0,0 +1,80 @@
+<template>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view class="flex padding-tb-sm bg-white">
+      <view class="padding-lr-sm text-center" style="width: 50%">设施类型:{{ typeNum ? typeNum : 0 }}</view>
+      <view class="divider-default"></view>
+      <view class="padding-lr-sm text-center" style="width: 50%">设施总数:{{ facilityNum ? facilityNum : 0 }}</view>
+    </view>
+
+    <view class="flex bg-white margin-lr-sm margin-top-sm padding-sm shadow-default radius" v-for="(data, index) in dataList" :key="index" @click="handleToDevice(data.id, data.typeName)">
+      <view class="margin-right-sm" style="margin-top: auto; margin-bottom: auto">
+        <image style="width: 40px; height: 40px" :src="data.typeImg ? data.typeImg : '/static/images/404.png'" mode="aspectFill"></image>
+      </view>
+
+      <view style="width: 100%">
+        <view class="flex margin-bottom-xl">
+          <view class="text-dfl text-bold">{{ data.typeName }}</view>
+          <view style="font-size: 14px; margin-top: auto; margin-right: auto">({{ data.typeFacilityNum ? data.typeFacilityNum : 0 }})</view>
+          <view style="font-size: 14px; margin-top: auto" :style="{ color: proxy.$settingStore.themeColor.color }">查看地图</view>
+        </view>
+        <view>
+          <view class="flex">
+            <view style="font-size: 14px; width: 33.33%">正常:{{ data.normalFacilityNum ? data.normalFacilityNum : 0 }}</view>
+            <view style="font-size: 14px; width: 33.33%">维修:{{ data.upkeepFacilityNum ? data.upkeepFacilityNum : 0 }}</view>
+            <view style="font-size: 14px; width: 33.33%">关闭:{{ data.closeFacilityNum ? data.closeFacilityNum : 0 }}</view>
+          </view>
+        </view>
+      </view>
+    </view>
+  </scroll-view>
+</template>
+
+<script setup>
+import { onLoad, onShow, onHide, onLaunch } from "@dcloudio/uni-app";
+import { ref, reactive, computed, onMounted, getCurrentInstance, toRefs, inject } from "vue";
+import { xunJianStores, publicStores } from "@/store/modules/index";
+
+import json from "@/static/js/json.js";
+
+import { baseFacilityType } from "@/api/business/fireIot/facilitiesView/index";
+
+const publicStore = publicStores(); //全局公共Store
+const xunJianStore = xunJianStores(); //全局变量值Store
+
+const { proxy } = getCurrentInstance();
+
+const typeNum = ref(0);
+const facilityNum = ref(0);
+const dataList = ref([]);
+
+/**
+ * @页面初始化
+ */
+function init() {
+  baseFacilityType().then((requset) => {
+    if (requset.status === "SUCCESS") {
+      dataList.value = requset.data[0].baseGgpFacilityTypeNumVO;
+      typeNum.value = requset.data[0].typeNum;
+      facilityNum.value = requset.data[0].facilityNum;
+    }
+  });
+}
+
+/**
+ * @设施详情列表跳转点击事件
+ */
+function handleToDevice(id, typeName) {
+  proxy.$tab.navigateTo(`/pages/business/fireIot/facilitiesView/facilitiesDetailsList?id=${id}&typeName=${typeName}`);
+}
+
+onLoad(() => {
+  init();
+});
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+</script>
+
+<style lang="scss"></style>

+ 0 - 14
src/pages/business/mhxf/coordination/index.vue

@@ -32,17 +32,3 @@ onReady(() => {});
 
 onMounted(() => {});
 </script>
-
-<style lang="scss">
-.coordination {
-}
-.headerTop {
-  display: flex;
-  background-color: transparent;
-  width: 100%;
-}
-
-.is-selected {
-  color: #1989fa;
-}
-</style>

+ 63 - 81
src/pages/business/mhxf/deviceManage/index.vue

@@ -1,5 +1,5 @@
-<template :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
-  <u-sticky bgColor="#fff" style="box-shadow: 1px 1px 4px rgb(26 26 26 / 10%)">
+<template>
+  <u-sticky class="shadow-default" bgColor="#fff">
     <u-tabs
       :list="list"
       :current="current"
@@ -8,79 +8,68 @@
       lineColor="#333"
       :activeStyle="{ color: '#333' }"
       :inactiveStyle="{ color: '#909399' }"
-      style="border-bottom: 1px solid #eaeef1"
     ></u-tabs>
   </u-sticky>
 
-  <view class="deviceManage" @touchstart="fingerstart" @touchend="fingerend">
-    <uni-swipe-action>
-      <uni-swipe-action-item style="background-color: #ffffff">
-        <view class="content1">
-          <view style="padding: 10px">
-            <u-input style="border-radius: 50px" v-model="dataInput" @blur="blur" prefixIcon="search" prefixIconStyle="color: #0c7bf9" placeholder="请输入设备编号"> </u-input>
-          </view>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name" style="padding-bottom: 44px">
+    <view class="deviceManage" @touchstart="fingerstart" @touchend="fingerend">
+      <uni-swipe-action>
+        <uni-swipe-action-item class="bg-white">
+          <view class="content">
+            <view class="padding-10">
+              <u-input v-model="dataInput" placeholder="请输入设备编号" @blur="blur" shape="circle" prefixIcon="search" prefixIconStyle="color: #0c7bf9"> </u-input>
+            </view>
 
-          <u-empty v-if="!dataRes" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
+            <u-empty v-if="dataList.length <= 0" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
 
-          <u-collapse @change="change" @close="close" @open="open" accordion v-else>
-            <u-collapse-item class="uCollapseItem" v-for="da in dataList" :key="da">
-              <template #title>
-                <view style="display: flex">
-                  <view class="cu-avatar lg" style="margin: 0 10px auto 0; background-color: rgba(0, 0, 0, 0)">
-                    <image class="image-bg" style="width: 80rpx; height: 80rpx" src="@/static/images/deviceManage/1.png"></image>
-                  </view>
-                  <view style="width: 100%">
-                    <view style="display: flex; color: #000000">
-                      <view>设备编号:{{ da.deviceCode }}</view>
-                      <view v-if="da.deviceStatus == 0" style="margin-left: 20px; font-size: 12px; background-color: #aeaeae; color: #ffffff; padding: 0 5px; border-radius: 20px; line-height: 20px">
-                        离线
+            <u-collapse @change="change" @close="close" @open="open" accordion v-else>
+              <u-collapse-item class="uCollapseItem" v-for="da in dataList" :key="da">
+                <template #title>
+                  <view class="flex">
+                    <view class="cu-avatar lg" style="margin: 0 10px auto 0; background-color: rgba(0, 0, 0, 0)">
+                      <image class="image-bg" style="width: 80rpx; height: 80rpx" src="@/static/images/deviceManage/1.png"></image>
+                    </view>
+                    <view style="width: 100%">
+                      <view class="flex" style="color: #000000">
+                        <view>设备编号:{{ da.deviceCode }}</view>
+                        <view class="deviceStatus" v-if="da.deviceStatus == 0" style="background-color: #aeaeae"> 离线 </view>
+                        <view class="deviceStatus" v-else-if="da.deviceStatus == 1" style="background-color: #12c100"> 正常 </view>
+                        <view class="deviceStatus" v-else-if="da.deviceStatus == 2" style="background-color: #ff1313"> 故障 </view>
+                        <view class="deviceStatus" v-else style="background-color: #0d88f0"> 告警 </view>
                       </view>
-                      <view
-                        v-else-if="da.deviceStatus == 1"
-                        style="margin-left: 20px; font-size: 12px; background-color: #12c100; color: #ffffff; padding: 0 5px; border-radius: 20px; line-height: 20px"
-                      >
-                        正常
+                      <view style="display: flex; font-size: 14px; color: #666666; margin: 10px 0">
+                        <view style="width: 50%; word-break: break-all">监测对象:{{ da.installAddress }}</view>
+                        <view style="width: 50%; word-break: break-all; padding-left: 10px">所属单位:{{ da.companyName }}</view>
                       </view>
-                      <view
-                        v-else-if="da.deviceStatus == 2"
-                        style="margin-left: 20px; font-size: 12px; background-color: #ff1313; color: #ffffff; padding: 0 5px; border-radius: 20px; line-height: 20px"
-                      >
-                        故障
+                      <view style="display: flex; font-size: 14px; color: #666666">
+                        <view style="width: 50%; word-break: break-all">负责人:{{ da.linkPerson }}</view>
+                        <view style="width: 50%; word-break: break-all; padding-left: 10px">联系电话:{{ da.linkPhone }}</view>
                       </view>
-                      <view v-else style="margin-left: 20px; font-size: 12px; background-color: #0d88f0; color: #ffffff; padding: 0 5px; border-radius: 20px; line-height: 20px"> 告警 </view>
-                    </view>
-                    <view style="display: flex; font-size: 14px; color: #666666; margin: 10px 0">
-                      <view style="width: 50%; word-break: break-all">监测对象:{{ da.installAddress }}</view>
-                      <view style="width: 50%; word-break: break-all; padding-left: 10px">所属单位:{{ da.companyName }}</view>
-                    </view>
-                    <view style="display: flex; font-size: 14px; color: #666666">
-                      <view style="width: 50%; word-break: break-all">负责人:{{ da.linkPerson }}</view>
-                      <view style="width: 50%; word-break: break-all; padding-left: 10px">联系电话:{{ da.linkPhone }}</view>
                     </view>
                   </view>
-                </view>
-              </template>
+                </template>
 
-              <view class="u-collapse-content">
-                <!-- <view style="display: flex; flex-wrap: wrap; margin-left: 5%">
-                  <view style="width: 50%; height: 30px; line-height: 30px" v-for="ch in da.dataList" :key="ch">
-                    <span>{{ ch.label }}:</span>
-                    <span :style="ch.value === '正常' ? 'color:#12C100' : 'color:#FF0101'">{{ ch.value }}</span>
-                  </view>
-                </view> -->
-                <view style="display: flex; flex-wrap: wrap; margin-left: 5%">
-                  <view style="width: 50%; height: 30px; line-height: 30px" v-for="ch in da.dataList" :key="ch">
-                    <span>{{ ch.portName }}:</span>
-                    <span>{{ ch.portData }}</span>
+                <view class="u-collapse-content">
+                  <!-- <view style="display: flex; flex-wrap: wrap; margin-left: 5%">
+                    <view style="width: 50%; height: 30px; line-height: 30px" v-for="ch in da.dataList" :key="ch">
+                      <span>{{ ch.label }}:</span>
+                      <span :style="ch.value === '正常' ? 'color:#12C100' : 'color:#FF0101'">{{ ch.value }}</span>
+                    </view>
+                  </view> -->
+                  <view style="display: flex; flex-wrap: wrap; margin-left: 5%">
+                    <view style="width: 50%; height: 30px; line-height: 30px" v-for="ch in da.dataList" :key="ch">
+                      <span>{{ ch.portName }}:</span>
+                      <span>{{ ch.portData }}</span>
+                    </view>
                   </view>
                 </view>
-              </view>
-            </u-collapse-item>
-          </u-collapse>
-        </view>
-      </uni-swipe-action-item>
-    </uni-swipe-action>
-  </view>
+              </u-collapse-item>
+            </u-collapse>
+          </view>
+        </uni-swipe-action-item>
+      </uni-swipe-action>
+    </view>
+  </scroll-view>
 </template>
 
 <script setup>
@@ -194,7 +183,7 @@ function rightscroll(dista) {
   if (current.value >= 1) {
     current.value--;
   } else {
-    current.value = 0;
+    current.value = list.value.length - 1;
   }
 }
 /**
@@ -224,12 +213,6 @@ function classifySearch(params) {
     console.log(res.data.records);
 
     dataList.value = res.data.records;
-
-    if (!dataList.value[0]) {
-      dataRes.value = 0;
-    } else {
-      dataRes.value = 1;
-    }
   });
 }
 // end
@@ -286,9 +269,6 @@ onMounted(() => {});
 </script>
 
 <style lang="scss">
-body {
-  background: #fff;
-}
 .is-selected {
   color: #1989fa;
 }
@@ -297,7 +277,7 @@ body {
   height: calc(100% - 45px);
   background-color: #ffffff;
 
-  .content1 {
+  .content {
     .u-row {
       .u-col {
         border: 1px #e4e3e3 solid;
@@ -316,14 +296,16 @@ body {
       }
     }
   }
-}
-</style>
 
-<style scoped>
-body,
-uni-page-body,
-uni-page-refresh,
-.grayBackgroundColor {
-  background: rgb(241, 241, 241);
+  .uCollapseItem {
+    .deviceStatus {
+      margin-left: 20px;
+      font-size: 12px;
+      color: #ffffff;
+      padding: 0 5px;
+      border-radius: 20px;
+      line-height: 20px;
+    }
+  }
 }
 </style>

+ 16 - 14
src/pages/business/mhxf/fireReport/index.vue

@@ -1,21 +1,23 @@
 <template>
-  <view class="fireReport">
-    <u-empty v-if="dataList.length <= 0" 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(li.reportPath)">
-          <view>{{ li.reportName }}</view>
-        </view>
-        <view>
-          <view style="color: #3c9cff; cursor: pointer" @click="handleDownload(li.reportPath)">下载报告</view>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view class="fireReport">
+      <u-empty v-if="dataList.length <= 0" 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(li.reportPath)">
+            <view>{{ li.reportName }}</view>
+          </view>
+          <view>
+            <view style="color: #3c9cff; cursor: pointer" @click="handleDownload(li.reportPath)">下载报告</view>
+          </view>
         </view>
+        <u-loadmore :status="status" />
       </view>
-      <u-loadmore :status="status" />
     </view>
-  </view>
+  </scroll-view>
 </template>
 
 <script setup>

+ 5 - 13
src/pages/business/mhxf/informationSelect-test/index.vue

@@ -1,22 +1,14 @@
 <template>
-  <u-sticky bgColor="#fff" style="box-shadow: 1px 1px 4px rgb(26 26 26 / 10%)">
-    <u-tabs
-      :list="list"
-      :current="current"
-      @click="tabsClick"
-      lineColor="#333"
-      :activeStyle="{ color: '#333' }"
-      :inactiveStyle="{ color: '#909399' }"
-      style="border-bottom: 1px solid #eaeef1"
-    ></u-tabs>
+  <u-sticky class="shadow-default" bgColor="#fff">
+    <u-tabs :list="list" :current="current" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }"></u-tabs>
   </u-sticky>
 
-  <view class="informationSelect" @touchstart="fingerstart" @touchend="fingerend" style="background-color: #ffffff">
+  <view class="bg-white informationSelect" @touchstart="fingerstart" @touchend="fingerend">
     <uni-swipe-action>
       <uni-swipe-action-item>
         <!-- 各类查询 start -->
-        <view class="content">
-          <u-input style="border-radius: 50px; margin-bottom: 10px" @blur="blur" v-model="dataInput" prefixIcon="search" prefixIconStyle="color: #0c7bf9" :placeholder="placeholderText"> </u-input>
+        <view class="tableType3">
+          <u-input style="margin-bottom: 10px" v-model="dataInput" :placeholder="placeholderText" @blur="blur" shape="circle" prefixIcon="search" prefixIconStyle="color: #0c7bf9"> </u-input>
           <u-empty v-if="!dataRes" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
           <view v-if="current == 8">
             <view class="con">

+ 32 - 92
src/pages/business/mhxf/informationSelect/index.vue

@@ -1,44 +1,38 @@
 <template>
-  <u-sticky bgColor="#fff" style="box-shadow: 1px 1px 4px rgb(26 26 26 / 10%)">
-    <u-tabs
-      :list="list"
-      :current="current"
-      @click="tabsClick"
-      lineColor="#333"
-      :activeStyle="{ color: '#333' }"
-      :inactiveStyle="{ color: '#909399' }"
-      style="border-bottom: 1px solid #eaeef1"
-    ></u-tabs>
+  <u-sticky class="shadow-default" bgColor="#fff">
+    <u-tabs :list="list" :current="current" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }"></u-tabs>
   </u-sticky>
 
-  <view class="informationSelect" @touchstart="fingerstart" @touchend="fingerend" style="background-color: #ffffff">
-    <uni-swipe-action>
-      <uni-swipe-action-item>
-        <!-- 各类查询 start -->
-        <view class="content">
-          <u-input style="border-radius: 50px; margin-bottom: 10px" @blur="blur" v-model="dataInput" prefixIcon="search" prefixIconStyle="color: #0c7bf9" :placeholder="placeholderText"> </u-input>
-          <u-empty v-if="!dataRes" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
-          <view v-if="current == 8">
-            <view class="con">
-              <view class="time">{{ newTime }}</view>
-              <video src="http://file.usky.cn/statics/video/20230203.mp4" autoplay :controls="false" :show-center-play-btn="false" :loop="true" style="width: 100%"></video>
+  <scroll-view class="bg-white scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name" style="padding-bottom: 44px">
+    <view class="informationSelect" @touchstart="fingerstart" @touchend="fingerend">
+      <uni-swipe-action>
+        <uni-swipe-action-item>
+          <!-- 各类查询 start -->
+          <view class="tableType3">
+            <u-input style="margin-bottom: 10px" v-model="dataInput" :placeholder="placeholderText" @blur="blur" shape="circle" prefixIcon="search" prefixIconStyle="color: #0c7bf9"> </u-input>
+            <u-empty v-if="!dataRes" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
+            <view v-if="current == 8">
+              <view class="con">
+                <view class="time">{{ newTime }}</view>
+                <video src="http://file.usky.cn/statics/video/20230203.mp4" autoplay :controls="false" :show-center-play-btn="false" :loop="true" style="width: 100%"></video>
+              </view>
+            </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 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>
-        <!-- 各类查询 end -->
-      </uni-swipe-action-item>
-    </uni-swipe-action>
-  </view>
+          <!-- 各类查询 end -->
+        </uni-swipe-action-item>
+      </uni-swipe-action>
+    </view>
+  </scroll-view>
 </template>
 
 <script setup>
@@ -680,58 +674,10 @@ onMounted(() => {});
 .uni-swipe {
   overflow: visible;
 }
-body {
-  background: #fff;
-}
-.is-selected {
-  color: #1989fa;
-}
-
-.informationSelect {
-  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>
-body,
-uni-page-body,
-uni-page-refresh,
-.grayBackgroundColor {
-  background: rgb(241, 241, 241);
+<style lang="scss" scoped>
+.informationSelect {
 }
 
 .time {
@@ -746,10 +692,4 @@ uni-page-refresh,
   text-align: center;
   position: relative;
 }
-.bg-white {
-  background-color: #ffffff;
-}
-body {
-  background: #fff;
-}
 </style>

+ 157 - 143
src/pages/business/mhxf/needMatter/index.vue

@@ -1,172 +1,186 @@
 <template>
-  <u-sticky bgColor="#fff" style="box-shadow: 1px 1px 4px rgb(26 26 26 / 10%)">
-    <u-tabs
-      :list="list"
-      :current="current"
-      @click="tabsClick"
-      lineColor="#333"
-      :activeStyle="{ color: '#333' }"
-      :inactiveStyle="{ color: '#909399' }"
-      style="border-bottom: 1px solid #eaeef1"
-    ></u-tabs>
+  <u-sticky class="shadow-default" bgColor="#fff">
+    <u-tabs :list="list" :current="current" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }"></u-tabs>
   </u-sticky>
 
-  <view class="needMatter" @touchstart="fingerstart" @touchend="fingerend">
-    <u-empty v-if="classifyData.length <= 0" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
-
-    <view class="content" v-else>
-      <u-collapse>
-        <u-collapse-item v-for="(cl, index) in classifyData" :key="index">
-          <template #title>
-            <view style="display: flex; line-height: 25px">
-              <view style="padding-top: 4px">
-                <u--image src="/static/images/needMatter/icon1.png" width="14px" height="15px"></u--image>
-              </view>
-              <view style="padding: 0 10px; white-space: nowrap; font-size: 16px">
-                <view>待办通知</view>
-                <view>建议完成限期:</view>
-                <view style="font-size: 14px; color: #666666">{{ cl.reformId }}</view>
-              </view>
-              <view style="width: 100%; text-align: center; font-size: 16px">
-                <view
-                  :style="{
-                    color:
-                      cl.reformStatus == 1 ? '#0887F8' : cl.reformStatus == 2 ? '#23DEDC' : cl.reformStatus == 3 ? '#16BF00' : cl.reformStatus == 4 ? '#F94343' : cl.reformStatus == 5 ? '#9D40F3' : '',
-                  }"
-                >
-                  {{
-                    cl.reformStatus == 1 ? "已接收" : cl.reformStatus == 2 ? "进行中" : cl.reformStatus == 3 ? "待办完成" : cl.reformStatus == 4 ? "审核不通过" : cl.reformStatus == 5 ? "审核通过" : ""
-                  }}
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name" style="padding-bottom: 44px">
+    <view class="needMatter" @touchstart="fingerstart" @touchend="fingerend">
+      <u-empty v-if="classifyData.length <= 0" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
+
+      <view class="content" v-else>
+        <u-collapse>
+          <u-collapse-item v-for="(cl, index) in classifyData" :key="index">
+            <template #title>
+              <view style="display: flex; line-height: 25px">
+                <view style="padding-top: 4px">
+                  <u--image src="/static/images/needMatter/icon1.png" width="14px" height="15px"></u--image>
+                </view>
+                <view style="padding: 0 10px; white-space: nowrap; font-size: 16px">
+                  <view>待办通知</view>
+                  <view>建议完成限期:</view>
+                  <view style="font-size: 14px; color: #666666">{{ cl.reformId }}</view>
+                </view>
+                <view style="width: 100%; text-align: center; font-size: 16px">
+                  <view
+                    :style="{
+                      color:
+                        cl.reformStatus == 1
+                          ? '#0887F8'
+                          : cl.reformStatus == 2
+                          ? '#23DEDC'
+                          : cl.reformStatus == 3
+                          ? '#16BF00'
+                          : cl.reformStatus == 4
+                          ? '#F94343'
+                          : cl.reformStatus == 5
+                          ? '#9D40F3'
+                          : '',
+                    }"
+                  >
+                    {{
+                      cl.reformStatus == 1
+                        ? "已接收"
+                        : cl.reformStatus == 2
+                        ? "进行中"
+                        : cl.reformStatus == 3
+                        ? "待办完成"
+                        : cl.reformStatus == 4
+                        ? "审核不通过"
+                        : cl.reformStatus == 5
+                        ? "审核通过"
+                        : ""
+                    }}
+                  </view>
+                  <view style="text-align: left">{{ cl.limitTime }}</view>
+                  <view style="font-size: 14px; color: #666666">{{ cl.sendTime }}</view>
                 </view>
-                <view style="text-align: left">{{ cl.limitTime }}</view>
-                <view style="font-size: 14px; color: #666666">{{ cl.sendTime }}</view>
               </view>
-            </view>
-          </template>
-          <view class="u-collapse-content">
-            <view class="tableType1" style="margin-bottom: 10px">
-              <u-row>
-                <u-col span="2">
-                  <view>序号</view>
-                </u-col>
-                <u-col span="5.5">
-                  <view>待办项</view>
-                </u-col>
-                <u-col span="4.5">
-                  <view>原因</view>
-                </u-col>
-              </u-row>
-              <u-row v-for="(co, index) in cl.reformPart.data" :key="index">
-                <u-col span="2">
-                  <view>{{ index + 1 }}</view>
-                </u-col>
-                <u-col span="5.5">
-                  <view>{{ co.item }}</view>
-                </u-col>
-                <u-col span="4.5">
-                  <view>{{ co.reason }}</view>
-                </u-col>
-              </u-row>
-            </view>
+            </template>
+            <view class="u-collapse-content">
+              <view class="tableType1" style="margin-bottom: 10px">
+                <u-row>
+                  <u-col span="2">
+                    <view>序号</view>
+                  </u-col>
+                  <u-col span="5.5">
+                    <view>待办项</view>
+                  </u-col>
+                  <u-col span="4.5">
+                    <view>原因</view>
+                  </u-col>
+                </u-row>
+                <u-row v-for="(co, index) in cl.reformPart.data" :key="index">
+                  <u-col span="2">
+                    <view>{{ index + 1 }}</view>
+                  </u-col>
+                  <u-col span="5.5">
+                    <view>{{ co.item }}</view>
+                  </u-col>
+                  <u-col span="4.5">
+                    <view>{{ co.reason }}</view>
+                  </u-col>
+                </u-row>
+              </view>
 
-            <view v-if="cl.reformStatus == 1">
-              <u-steps current="0" dot>
-                <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
-                <u-steps-item style="text-align: center" title="进行中" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
-                <u-steps-item style="text-align: center" title="待审核" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''"></u-steps-item>
-              </u-steps>
+              <view v-if="cl.reformStatus == 1">
+                <u-steps current="0" dot>
+                  <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
+                  <u-steps-item style="text-align: center" title="进行中" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
+                  <u-steps-item style="text-align: center" title="待审核" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''"></u-steps-item>
+                </u-steps>
 
-              <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
-                <u-button style="width: 60px; height: 23px" type="primary" text="去整改" shape="circle" @click="handleSubmit(cl, '去整改')"></u-button>
+                <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
+                  <u-button style="width: 60px; height: 23px" type="primary" text="去整改" shape="circle" @click="handleSubmit(cl, '去整改')"></u-button>
+                </view>
               </view>
-            </view>
 
-            <view v-if="cl.reformStatus == 2">
-              <u-steps current="1" dot>
-                <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
-                <u-steps-item style="text-align: center" title="进行中" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
-                <u-steps-item style="text-align: center" title="待审核" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''"></u-steps-item>
-              </u-steps>
+              <view v-if="cl.reformStatus == 2">
+                <u-steps current="1" dot>
+                  <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
+                  <u-steps-item style="text-align: center" title="进行中" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
+                  <u-steps-item style="text-align: center" title="待审核" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''"></u-steps-item>
+                </u-steps>
 
-              <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
-                <u-button style="width: 60px; height: 23px" type="primary" text="填报" shape="circle" @click="handleSubmit(cl, '填报')"></u-button>
+                <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
+                  <u-button style="width: 60px; height: 23px" type="primary" text="填报" shape="circle" @click="handleSubmit(cl, '填报')"></u-button>
+                </view>
               </view>
-            </view>
 
-            <view v-if="cl.reformStatus == 3">
-              <u-steps current="1" dot>
-                <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
-                <u-steps-item style="text-align: center" title="待办完成" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
-                <u-steps-item style="text-align: center" title="待审核" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''"></u-steps-item>
-              </u-steps>
-            </view>
+              <view v-if="cl.reformStatus == 3">
+                <u-steps current="1" dot>
+                  <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
+                  <u-steps-item style="text-align: center" title="待办完成" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
+                  <u-steps-item style="text-align: center" title="待审核" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''"></u-steps-item>
+                </u-steps>
+              </view>
 
-            <view v-if="cl.reformStatus == 4">
-              <u-steps current="2" dot>
-                <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
-                <u-steps-item style="text-align: center" title="待办完成" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
-                <u-steps-item style="text-align: center" title="审核不通过" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''" error></u-steps-item>
-              </u-steps>
+              <view v-if="cl.reformStatus == 4">
+                <u-steps current="2" dot>
+                  <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
+                  <u-steps-item style="text-align: center" title="待办完成" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
+                  <u-steps-item style="text-align: center" title="审核不通过" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''" error></u-steps-item>
+                </u-steps>
 
-              <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
-                <view>备注:{{ cl.reviewRemark ? cl.reviewRemark : "无" }}</view>
-              </view>
+                <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
+                  <view>备注:{{ cl.reviewRemark ? cl.reviewRemark : "无" }}</view>
+                </view>
 
-              <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
-                <u-button style="width: 60px; height: 23px" type="primary" text="去整改" shape="circle" @click="handleSubmit(cl, '去整改')"></u-button>
+                <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
+                  <u-button style="width: 60px; height: 23px" type="primary" text="去整改" shape="circle" @click="handleSubmit(cl, '去整改')"></u-button>
+                </view>
               </view>
-            </view>
 
-            <view v-if="cl.reformStatus == 5">
-              <u-steps current="2" dot>
-                <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
-                <u-steps-item style="text-align: center" title="待办完成" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
-                <u-steps-item style="text-align: center" title="审核通过" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''"></u-steps-item>
-              </u-steps>
-
-              <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
-                <view style="display: flex">
-                  <view style="white-space: nowrap">整改资料:</view>
-                  <view style="width: 100%">
-                    <view style="display: flex" v-for="(i, index) in 5" :key="index">
-                      <view>{{ cl["reformPathName" + (index + 1)] }}</view>
-                      <!-- <view style="margin: auto 0 auto auto">
+              <view v-if="cl.reformStatus == 5">
+                <u-steps current="2" dot>
+                  <u-steps-item style="text-align: center" title="已接收" :desc="cl.sendTime ? cl.sendTime.replace(' ', '\n') : ''"> </u-steps-item>
+                  <u-steps-item style="text-align: center" title="待办完成" :desc="cl.reformTime ? cl.reformTime.replace(' ', '\n') : ''"></u-steps-item>
+                  <u-steps-item style="text-align: center" title="审核通过" :desc="cl.reviewTime ? cl.reviewTime.replace(' ', '\n') : ''"></u-steps-item>
+                </u-steps>
+
+                <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
+                  <view style="display: flex">
+                    <view style="white-space: nowrap">整改资料:</view>
+                    <view style="width: 100%">
+                      <view style="display: flex" v-for="(i, index) in 5" :key="index">
+                        <view>{{ cl["reformPathName" + (index + 1)] }}</view>
+                        <!-- <view style="margin: auto 0 auto auto">
                         <u--image src="/static/images/needMatter/icon2.png" width="15px" height="15px"></u--image>
                       </view> -->
+                      </view>
                     </view>
                   </view>
+                  <u-line style="margin: 5px 0" color="#E5E5E5"></u-line>
+                  <view>备注:{{ cl.reviewRemark ? cl.reviewRemark : "无" }}</view>
                 </view>
-                <u-line style="margin: 5px 0" color="#E5E5E5"></u-line>
-                <view>备注:{{ cl.reviewRemark ? cl.reviewRemark : "无" }}</view>
               </view>
             </view>
-          </view>
-        </u-collapse-item>
-      </u-collapse>
-
-      <view>
-        <u-modal
-          :show="modalShow"
-          title="填报(火灾报警系统)"
-          :showCancelButton="true"
-          :showConfirmButton="true"
-          :closeOnClickOverlay="true"
-          @close="modalShow = false"
-          @cancel="modalShow = false"
-          @confirm="handleConfirm"
-        >
-          <view style="width: 100%">
-            <uni-section title="图片上传:" type="line">
-              <u-upload :fileList="fileList" name="6" @afterRead="afterRead" multiple :maxCount="5" width="80" height="80"> </u-upload>
-            </uni-section>
-            <uni-section title="备注:" type="line">
-              <u--textarea v-model="textValue" placeholder="请输入内容"></u--textarea>
-            </uni-section>
-          </view>
-        </u-modal>
+          </u-collapse-item>
+        </u-collapse>
+
+        <view>
+          <u-modal
+            :show="modalShow"
+            title="填报(火灾报警系统)"
+            :showCancelButton="true"
+            :showConfirmButton="true"
+            :closeOnClickOverlay="true"
+            @close="modalShow = false"
+            @cancel="modalShow = false"
+            @confirm="handleConfirm"
+          >
+            <view style="width: 100%">
+              <uni-section title="图片上传:" type="line">
+                <u-upload :fileList="fileList" name="6" @afterRead="afterRead" multiple :maxCount="5" width="80" height="80"> </u-upload>
+              </uni-section>
+              <uni-section title="备注:" type="line">
+                <u--textarea v-model="textValue" placeholder="请输入内容"></u--textarea>
+              </uni-section>
+            </view>
+          </u-modal>
+        </view>
       </view>
     </view>
-  </view>
+  </scroll-view>
 </template>
 
 <script setup>

+ 276 - 279
src/pages/business/mhxf/unitInfoCollection/index.vue

@@ -1,316 +1,313 @@
 <template>
-  <view id="unitInfoCollection" v-if="!successBool">
-    <view>
-      <u-notice-bar text="注:信息提交后不可修改,提交前请核对填写是否有误" :duration="7000" color="#FF0000" bgColor="#FFFFFF"></u-notice-bar>
-    </view>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view id="unitInfoCollection" v-if="!successBool">
+      <view>
+        <u-notice-bar text="注:信息提交后不可修改,提交前请核对填写是否有误" :duration="7000" color="#FF0000" bgColor="#FFFFFF"></u-notice-bar>
+      </view>
 
-    <view class="centerOne" v-if="pagingBool">
-      <view class="title"> 单位基本信息(1/2) </view>
-
-      <u--form :model="form" ref="uForm" :rules="rules" labelWidth="130">
-        <view style="padding: 10px 0">
-          <view style="padding: 10px 10px 20px 10px; background: #ffffff">
-            <view style="padding-left: 9px">
-              <u-form-item label="单位名称" prop="companyName" required :borderBottom="true">
-                <u-input v-model="form.companyName" placeholder="请输入单位名称" border="none">
-                  <template #suffix>
-                    <u-icon name="search" color="#999999" size="22" @click="companySubmit(form.companyName)"></u-icon>
-                  </template>
-                </u-input>
-              </u-form-item>
-              <u-form-item label="统一社会信用代码" prop="organization" required :borderBottom="true">
-                <u-input v-model="form.organization" placeholder="请输入统一社会信用代码" border="none" maxlength="18" />
-              </u-form-item>
-              <u-form-item label="法人代表" prop="delegateName" required :borderBottom="true">
-                <u-input v-model="form.delegateName" placeholder="请输入法人代表" border="none" />
-              </u-form-item>
-              <u-form-item label="所属街镇" prop="streetTown" required :borderBottom="true" @click="handleAction('所属街镇')">
-                <u-input v-model="form.streetTown" placeholder="请选择所属街镇" suffixIcon="arrow-right" suffixIconStyle="color: #909399" border="none" disabledColor="transparent" disabled />
-              </u-form-item>
-              <u-form-item label="单位地址" prop="address" required :borderBottom="true">
-                <u-input v-model="form.address" placeholder="请输入单位地址" border="none" />
-              </u-form-item>
-              <u-form-item label="消防管理人电话" prop="fireManagePhone" required :borderBottom="true">
-                <u-input v-model="form.fireManagePhone" placeholder="请输入消防管理人电话" border="none" maxlength="11" />
-              </u-form-item>
-              <u-form-item label="成立时间" prop="foundTime" required :borderBottom="true" @click="handleDateTime('成立时间', 0, form.foundTime)">
-                <u-input v-model="form.foundTime" placeholder="请选择成立时间" border="none" suffixIcon="calendar" suffixIconStyle="color: #909399;font-size:22px" />
-              </u-form-item>
-              <u-form-item label="单位使用性质" prop="companyNature" :borderBottom="true" @click="handleAction('单位使用性质')" required>
-                <u-input v-model="form.companyNature" placeholder="请选择单位使用性质" suffixIcon="arrow-right" suffixIconStyle="color: #909399" border="none" disabledColor="transparent" disabled />
-              </u-form-item>
-              <u-form-item label="产证" prop="birthCert" :borderBottom="true" @click="handleAction('产证')" required>
-                <u-input v-model="form.birthCert" placeholder="请选择产证" suffixIcon="arrow-right" suffixIconStyle="color: #909399" border="none" disabledColor="transparent" disabled />
-              </u-form-item>
-              <u-form-item label="单位建筑面积" prop="buildArea" :borderBottom="true" required>
-                <u-input type="number" v-model="form.buildArea" placeholder="请输入单位建筑面积" suffixIcon="平方米" suffixIconStyle="color:#999999;font-size:15px" border="none" />
-              </u-form-item>
-              <u-form-item label="消防安全责任人" prop="fireDutyName" :borderBottom="true">
-                <u-input v-model="form.fireDutyName" placeholder="请输入消防安全责任人" border="none" />
-              </u-form-item>
-              <u-form-item label="消防安全管理人" prop="fireManageName" :borderBottom="true">
-                <u-input v-model="form.fireManageName" placeholder="请输入消防安全管理人" border="none" />
-              </u-form-item>
-              <u-form-item label="职工人数" prop="employeeNum" :borderBottom="true">
-                <u-input type="digit" v-model="form.employeeNum" placeholder="请输入职工人数" suffixIcon="人" suffixIconStyle="color:#999999;font-size:15px" border="none" />
-              </u-form-item>
-              <u-form-item label="固定资产(万元)" prop="fixedAssets" :borderBottom="true">
-                <u-input type="number" v-model="form.fixedAssets" placeholder="请输入固定资产(万元)" suffixIcon="万元" suffixIconStyle="color:#999999;font-size:15px" border="none" />
-              </u-form-item>
+      <view class="centerOne" v-if="pagingBool">
+        <view class="title"> 单位基本信息(1/2) </view>
+
+        <u--form :model="form" ref="uForm" :rules="rules" labelWidth="130">
+          <view style="padding: 10px 0">
+            <view style="padding: 10px 10px 20px 10px; background: #ffffff">
+              <view style="padding-left: 9px">
+                <u-form-item label="单位名称" prop="companyName" required :borderBottom="true">
+                  <u-input v-model="form.companyName" placeholder="请输入单位名称" border="none">
+                    <template #suffix>
+                      <u-icon name="search" color="#999999" size="22" @click="companySubmit(form.companyName)"></u-icon>
+                    </template>
+                  </u-input>
+                </u-form-item>
+                <u-form-item label="统一社会信用代码" prop="organization" required :borderBottom="true">
+                  <u-input v-model="form.organization" placeholder="请输入统一社会信用代码" border="none" maxlength="18" />
+                </u-form-item>
+                <u-form-item label="法人代表" prop="delegateName" required :borderBottom="true">
+                  <u-input v-model="form.delegateName" placeholder="请输入法人代表" border="none" />
+                </u-form-item>
+                <u-form-item label="所属街镇" prop="streetTown" required :borderBottom="true" @click="handleAction('所属街镇')">
+                  <u-input v-model="form.streetTown" placeholder="请选择所属街镇" suffixIcon="arrow-right" suffixIconStyle="color: #909399" border="none" disabledColor="transparent" disabled />
+                </u-form-item>
+                <u-form-item label="单位地址" prop="address" required :borderBottom="true">
+                  <u-input v-model="form.address" placeholder="请输入单位地址" border="none" />
+                </u-form-item>
+                <u-form-item label="消防管理人电话" prop="fireManagePhone" required :borderBottom="true">
+                  <u-input v-model="form.fireManagePhone" placeholder="请输入消防管理人电话" border="none" maxlength="11" />
+                </u-form-item>
+                <u-form-item label="成立时间" prop="foundTime" required :borderBottom="true" @click="handleDateTime('成立时间', 0, form.foundTime)">
+                  <u-input v-model="form.foundTime" placeholder="请选择成立时间" border="none" suffixIcon="calendar" suffixIconStyle="color: #909399;font-size:22px" />
+                </u-form-item>
+                <u-form-item label="单位使用性质" prop="companyNature" :borderBottom="true" @click="handleAction('单位使用性质')" required>
+                  <u-input v-model="form.companyNature" placeholder="请选择单位使用性质" suffixIcon="arrow-right" suffixIconStyle="color: #909399" border="none" disabledColor="transparent" disabled />
+                </u-form-item>
+                <u-form-item label="产证" prop="birthCert" :borderBottom="true" @click="handleAction('产证')" required>
+                  <u-input v-model="form.birthCert" placeholder="请选择产证" suffixIcon="arrow-right" suffixIconStyle="color: #909399" border="none" disabledColor="transparent" disabled />
+                </u-form-item>
+                <u-form-item label="单位建筑面积" prop="buildArea" :borderBottom="true" required>
+                  <u-input type="number" v-model="form.buildArea" placeholder="请输入单位建筑面积" suffixIcon="平方米" suffixIconStyle="color:#999999;font-size:15px" border="none" />
+                </u-form-item>
+                <u-form-item label="消防安全责任人" prop="fireDutyName" :borderBottom="true">
+                  <u-input v-model="form.fireDutyName" placeholder="请输入消防安全责任人" border="none" />
+                </u-form-item>
+                <u-form-item label="消防安全管理人" prop="fireManageName" :borderBottom="true">
+                  <u-input v-model="form.fireManageName" placeholder="请输入消防安全管理人" border="none" />
+                </u-form-item>
+                <u-form-item label="职工人数" prop="employeeNum" :borderBottom="true">
+                  <u-input type="digit" v-model="form.employeeNum" placeholder="请输入职工人数" suffixIcon="人" suffixIconStyle="color:#999999;font-size:15px" border="none" />
+                </u-form-item>
+                <u-form-item label="固定资产(万元)" prop="fixedAssets" :borderBottom="true">
+                  <u-input type="number" v-model="form.fixedAssets" placeholder="请输入固定资产(万元)" suffixIcon="万元" suffixIconStyle="color:#999999;font-size:15px" border="none" />
+                </u-form-item>
+              </view>
             </view>
           </view>
-        </view>
-      </u--form>
+        </u--form>
 
-      <view style="padding-bottom: 70px"> </view>
+        <view style="padding-bottom: 70px"> </view>
 
-      <view style="position: fixed; left: 0; right: 0; bottom: 0; padding: 15px">
-        <view>
-          <u-button type="primary" style="width: 100%; height: 40px; font-size: 14px" @click="handleSubmit('下一步')" shape="circle"> 下一步 </u-button>
+        <view class="app-button-fixed">
+          <u-button class="app-buttom" type="primary" @click="handleSubmit('下一步')" shape="circle"> 下一步 </u-button>
         </view>
       </view>
-    </view>
 
-    <view class="centerTwo" v-else>
-      <view class="title"> 所在建筑信息(2/2) </view>
+      <view class="centerTwo" v-else>
+        <view class="title"> 所在建筑信息(2/2) </view>
 
-      <u--form ref="uForm1" :model="form" :rules="rules" labelWidth="130">
-        <view style="padding: 10px 0" v-for="(li, index) in form.baseBuildList" :key="index">
-          <view class="" style="padding: 10px 10px 20px 10px; background: #ffffff">
-            <view style="display: flex; overflow: hidden">
-              <image style="width: 15px; height: 15px; margin: auto 10px auto 0" src="@/static/images/unitInfoCollection/icon1.png" />
-              <view style="margin: auto auto auto 0">建筑{{ index + 1 }}</view>
-              <u-icon v-if="form.baseBuildList.length > 1" name="trash" color="#FF0000" size="20" style="float: right" @click="deleteSubmit('建筑', index)"></u-icon>
-            </view>
-            <view style="padding-left: 9px">
-              <u-form-item label="建筑名称" :prop="`baseBuildList.${index}.baseBuild.buildName`" required :borderBottom="true">
-                <u-input v-model="li.baseBuild.buildName" placeholder="请输入建筑名称" border="none" maxlength="30" />
-              </u-form-item>
-              <u-form-item label="建筑地址" :prop="`baseBuildList.${index}.baseBuild.address`" required :borderBottom="true">
-                <u-input v-model="li.baseBuild.address" placeholder="请输入建筑地址" border="none" maxlength="100" />
-              </u-form-item>
-              <u-form-item label="建筑结构" :prop="`baseBuildList.${index}.baseBuild.buildStructure`" required :borderBottom="true" @click="handleAction('建筑结构', index)">
-                <u-input
-                  v-model="li.baseBuild.buildStructure"
-                  placeholder="请选择建筑结构"
-                  border="none"
-                  suffixIcon="arrow-right"
-                  suffixIconStyle="color: #909399"
-                  disabledColor="transparent"
-                  disabled
-                />
-              </u-form-item>
-
-              <u-form-item v-if="li.baseBuild.buildStructure === '钢结构'" label="是否有防火涂层" :prop="`baseBuildList.${index}.baseBuild.fireproofCoat`" required :borderBottom="true">
-                <u-radio-group v-model="li.baseBuild.fireproofCoat" placement="row">
-                  <u-radio style="margin-right: 30px" :name="0" label="无"></u-radio>
-                  <u-radio :name="1" label="有"></u-radio>
-                </u-radio-group>
-              </u-form-item>
-
-              <u-form-item label="建筑高度" :prop="`baseBuildList.${index}.baseBuild.buildHigh`" required :borderBottom="true">
-                <u-input type="number" v-model="li.baseBuild.buildHigh" placeholder="请输入建筑高度" suffixIcon="米" suffixIconStyle="color: #909399;font-size:15px" border="none" maxlength="20" />
-              </u-form-item>
-              <u-form-item label="地上层数" :prop="`baseBuildList.${index}.baseBuild.aboveFloor`" required :borderBottom="true">
-                <u-input type="number" v-model="li.baseBuild.aboveFloor" placeholder="请输入地上层数" border="none" maxlength="5" />
-              </u-form-item>
-              <u-form-item label="地下层数" prop="li.underFloor" :borderBottom="true">
-                <u-input type="number" v-model="li.baseBuild.underFloor" placeholder="请输入地下层数" border="none" maxlength="5" />
-              </u-form-item>
-              <u-form-item label="建筑面积" :prop="`baseBuildList.${index}.baseBuild.buildArea`" required :borderBottom="true">
-                <u-input type="digit" v-model="li.baseBuild.buildArea" placeholder="请输入建筑面积" suffixIcon="平方米" suffixIconStyle="color:#999999;font-size:15px" border="none" maxlength="20" />
-              </u-form-item>
-              <u-form-item label="地下空间" prop="li.underSpace" :borderBottom="true">
-                <u-input
-                  type="number"
-                  v-model="li.baseBuild.underSpace"
-                  placeholder="请输入地下空间面积"
-                  suffixIcon="平方米"
-                  suffixIconStyle="color:#999999;font-size:15px"
-                  border="none"
-                  maxlength="20"
-                />
-              </u-form-item>
-              <u-form-item label="建成年份" :prop="`baseBuildList.${index}.baseBuild.completeYear`" required :borderBottom="true" @click="handleDateTime('建成年份', index, li.completeYear)">
-                <u-input
-                  v-model="li.baseBuild.completeYear"
-                  placeholder="请选择建成年份"
-                  suffixIcon="calendar"
-                  suffixIconStyle="color: #909399;font-size:22px"
-                  border="none"
-                  disabledColor="transparent"
-                  disabled
-                />
-              </u-form-item>
-              <u-form-item label="使用性质" :prop="`baseBuildList.${index}.baseBuild.useCharacter`" required :borderBottom="true" @click="handleAction('使用性质', index)">
-                <u-input
-                  v-model="li.baseBuild.useCharacter"
-                  placeholder="请选择使用性质"
-                  suffixIcon="arrow-right"
-                  suffixIconStyle="color: #909399"
-                  border="none"
-                  disabledColor="transparent"
-                  disabled
-                />
-              </u-form-item>
-
-              <view
-                v-if="
-                  li.baseBuild.useCharacter == '生产类厂房' || li.baseBuild.useCharacter == '仓库、物流' || li.baseBuild.useCharacter == '涉及易燃易爆危险品的单位(生产、充装、储存、供应、销售等)'
-                "
-              >
-                <view style="margin: 10px 0; text-align: center">危险品生产数量(吨/月)</view>
-                <u-form-item label="甲类" prop="li.baseBuildAttach.hazardousProduceA" :borderBottom="true">
-                  <u-input type="number" v-model="li.baseBuildAttach.hazardousProduceA" placeholder="请输入甲类" border="none" maxlength="24" />
+        <u--form ref="uForm1" :model="form" :rules="rules" labelWidth="130">
+          <view style="padding: 10px 0" v-for="(li, index) in form.baseBuildList" :key="index">
+            <view class="" style="padding: 10px 10px 20px 10px; background: #ffffff">
+              <view style="display: flex; overflow: hidden">
+                <image style="width: 15px; height: 15px; margin: auto 10px auto 0" src="@/static/images/unitInfoCollection/icon1.png" />
+                <view style="margin: auto auto auto 0">建筑{{ index + 1 }}</view>
+                <u-icon v-if="form.baseBuildList.length > 1" name="trash" color="#FF0000" size="20" style="float: right" @click="deleteSubmit('建筑', index)"></u-icon>
+              </view>
+              <view style="padding-left: 9px">
+                <u-form-item label="建筑名称" :prop="`baseBuildList.${index}.baseBuild.buildName`" required :borderBottom="true">
+                  <u-input v-model="li.baseBuild.buildName" placeholder="请输入建筑名称" border="none" maxlength="30" />
                 </u-form-item>
-                <u-form-item label="乙类" prop="li.baseBuildAttach.hazardousProduceB" :borderBottom="true">
-                  <u-input type="number" v-model="li.baseBuildAttach.hazardousProduceB" placeholder="请输入乙类" border="none" maxlength="24" />
+                <u-form-item label="建筑地址" :prop="`baseBuildList.${index}.baseBuild.address`" required :borderBottom="true">
+                  <u-input v-model="li.baseBuild.address" placeholder="请输入建筑地址" border="none" maxlength="100" />
                 </u-form-item>
-                <u-form-item label="丙类" prop="li.baseBuildAttach.hazardousProduceC" :borderBottom="true">
-                  <u-input type="number" v-model="li.baseBuildAttach.hazardousProduceC" placeholder="请输入丙类" border="none" maxlength="24" />
+                <u-form-item label="建筑结构" :prop="`baseBuildList.${index}.baseBuild.buildStructure`" required :borderBottom="true" @click="handleAction('建筑结构', index)">
+                  <u-input
+                    v-model="li.baseBuild.buildStructure"
+                    placeholder="请选择建筑结构"
+                    border="none"
+                    suffixIcon="arrow-right"
+                    suffixIconStyle="color: #909399"
+                    disabledColor="transparent"
+                    disabled
+                  />
                 </u-form-item>
-                <u-form-item label="丁戊类" prop="li.baseBuildAttach.hazardousProduceD" :borderBottom="true">
-                  <u-input type="number" v-model="li.baseBuildAttach.hazardousProduceD" placeholder="请输入丁戊类" border="none" maxlength="24" />
+
+                <u-form-item v-if="li.baseBuild.buildStructure === '钢结构'" label="是否有防火涂层" :prop="`baseBuildList.${index}.baseBuild.fireproofCoat`" required :borderBottom="true">
+                  <u-radio-group v-model="li.baseBuild.fireproofCoat" placement="row">
+                    <u-radio style="margin-right: 30px" :name="0" label="无"></u-radio>
+                    <u-radio :name="1" label="有"></u-radio>
+                  </u-radio-group>
                 </u-form-item>
-                <view style="margin: 10px 0; text-align: center">危险品存储数量(吨)</view>
-                <u-form-item label="甲类" prop="li.baseBuildAttach.hazardousStorageA" :borderBottom="true">
-                  <u-input type="number" v-model="li.baseBuildAttach.hazardousStorageA" placeholder="请输入甲类" border="none" maxlength="24" />
+
+                <u-form-item label="建筑高度" :prop="`baseBuildList.${index}.baseBuild.buildHigh`" required :borderBottom="true">
+                  <u-input type="number" v-model="li.baseBuild.buildHigh" placeholder="请输入建筑高度" suffixIcon="米" suffixIconStyle="color: #909399;font-size:15px" border="none" maxlength="20" />
                 </u-form-item>
-                <u-form-item label="乙类" prop="li.baseBuildAttach.hazardousStorageB" :borderBottom="true">
-                  <u-input type="number" v-model="li.baseBuildAttach.hazardousStorageB" placeholder="请输入乙类" border="none" maxlength="24" />
+                <u-form-item label="地上层数" :prop="`baseBuildList.${index}.baseBuild.aboveFloor`" required :borderBottom="true">
+                  <u-input type="number" v-model="li.baseBuild.aboveFloor" placeholder="请输入地上层数" border="none" maxlength="5" />
                 </u-form-item>
-                <u-form-item label="丙类" prop="li.baseBuildAttach.hazardousStorageC" :borderBottom="true">
-                  <u-input type="number" v-model="li.baseBuildAttach.hazardousStorageC" placeholder="请输入丙类" border="none" maxlength="24" />
+                <u-form-item label="地下层数" prop="li.underFloor" :borderBottom="true">
+                  <u-input type="number" v-model="li.baseBuild.underFloor" placeholder="请输入地下层数" border="none" maxlength="5" />
                 </u-form-item>
-                <u-form-item label="丁戊类" prop="li.baseBuildAttach.hazardousStorageD" :borderBottom="true">
-                  <u-input type="number" v-model="li.baseBuildAttach.hazardousStorageD" placeholder="请输入丁戊类" border="none" maxlength="24" />
+                <u-form-item label="建筑面积" :prop="`baseBuildList.${index}.baseBuild.buildArea`" required :borderBottom="true">
+                  <u-input type="digit" v-model="li.baseBuild.buildArea" placeholder="请输入建筑面积" suffixIcon="平方米" suffixIconStyle="color:#999999;font-size:15px" border="none" maxlength="20" />
+                </u-form-item>
+                <u-form-item label="地下空间" prop="li.underSpace" :borderBottom="true">
+                  <u-input
+                    type="number"
+                    v-model="li.baseBuild.underSpace"
+                    placeholder="请输入地下空间面积"
+                    suffixIcon="平方米"
+                    suffixIconStyle="color:#999999;font-size:15px"
+                    border="none"
+                    maxlength="20"
+                  />
+                </u-form-item>
+                <u-form-item label="建成年份" :prop="`baseBuildList.${index}.baseBuild.completeYear`" required :borderBottom="true" @click="handleDateTime('建成年份', index, li.completeYear)">
+                  <u-input
+                    v-model="li.baseBuild.completeYear"
+                    placeholder="请选择建成年份"
+                    suffixIcon="calendar"
+                    suffixIconStyle="color: #909399;font-size:22px"
+                    border="none"
+                    disabledColor="transparent"
+                    disabled
+                  />
+                </u-form-item>
+                <u-form-item label="使用性质" :prop="`baseBuildList.${index}.baseBuild.useCharacter`" required :borderBottom="true" @click="handleAction('使用性质', index)">
+                  <u-input
+                    v-model="li.baseBuild.useCharacter"
+                    placeholder="请选择使用性质"
+                    suffixIcon="arrow-right"
+                    suffixIconStyle="color: #909399"
+                    border="none"
+                    disabledColor="transparent"
+                    disabled
+                  />
                 </u-form-item>
-              </view>
-
-              <u-form-item label="消防设施设置" :prop="`baseBuildList.${index}.baseBuild.fireFacilitySystem`" required :borderBottom="true">
-                <u-checkbox-group v-model="li.baseBuild.fireFacilitySystem" placement="column" @change="checkboxChange">
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="自动喷水灭火系统" :name="1"> </u-checkbox>
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="火灾自动报警系统" :name="2"> </u-checkbox>
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="防排烟与排烟系统" :name="3"> </u-checkbox>
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="消防物联网系统" :name="4"> </u-checkbox>
-                </u-checkbox-group>
-              </u-form-item>
-
-              <u-form-item label="其他设施" :prop="`li.baseBuildList.baseBuild.otherSystem`" :borderBottom="true">
-                <u-checkbox-group v-model="li.baseBuild.otherSystem" placement="column" @change="checkboxChange">
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="泡沫灭火系统" :name="1"> </u-checkbox>
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="水喷雾、细水雾灭火系统" :name="2"> </u-checkbox>
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="消防炮、自动跟踪定位射流灭火系统" :name="3"> </u-checkbox>
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="气体灭火系统" :name="4"> </u-checkbox>
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="干粉灭火系统" :name="5"> </u-checkbox>
-                  <u-checkbox :customStyle="{ marginBottom: '8px' }" label="其他" :name="6"> </u-checkbox>
-                  <u-input v-if="li.baseBuild.otherSystem.includes(6)" v-model="li.baseBuild.otherFacilities" placeholder="请输入消防设施名称" border="none" />
-                </u-checkbox-group>
-              </u-form-item>
-
-              <view>
-                <view v-for="(base, baseIndex) in li.baseBuildExtinguishList" :key="baseIndex">
-                  <view style="margin: 10px 0; text-align: left">
-                    {{ "灭火器" + (baseIndex + 1) }}
-                    <u-icon v-if="li.baseBuildExtinguishList.length > 1" name="trash" color="#FF0000" size="20" style="float: right" @click="deleteSubmit('灭火器', index, baseIndex)"></u-icon>
-                  </view>
 
-                  <u-form-item
-                    label="类型"
-                    :prop="`baseBuildList.${index}.baseBuildExtinguishList.${baseIndex}.extinguishType`"
-                    required
-                    :borderBottom="true"
-                    @click="handleAction('灭火器', index, baseIndex)"
-                  >
-                    <u-input v-model="base.extinguishType" placeholder="请选择类型" border="none" suffixIcon="arrow-right" suffixIconStyle="color: #909399" disabledColor="transparent" disabled />
+                <view
+                  v-if="
+                    li.baseBuild.useCharacter == '生产类厂房' || li.baseBuild.useCharacter == '仓库、物流' || li.baseBuild.useCharacter == '涉及易燃易爆危险品的单位(生产、充装、储存、供应、销售等)'
+                  "
+                >
+                  <view style="margin: 10px 0; text-align: center">危险品生产数量(吨/月)</view>
+                  <u-form-item label="甲类" prop="li.baseBuildAttach.hazardousProduceA" :borderBottom="true">
+                    <u-input type="number" v-model="li.baseBuildAttach.hazardousProduceA" placeholder="请输入甲类" border="none" maxlength="24" />
+                  </u-form-item>
+                  <u-form-item label="乙类" prop="li.baseBuildAttach.hazardousProduceB" :borderBottom="true">
+                    <u-input type="number" v-model="li.baseBuildAttach.hazardousProduceB" placeholder="请输入乙类" border="none" maxlength="24" />
+                  </u-form-item>
+                  <u-form-item label="丙类" prop="li.baseBuildAttach.hazardousProduceC" :borderBottom="true">
+                    <u-input type="number" v-model="li.baseBuildAttach.hazardousProduceC" placeholder="请输入丙类" border="none" maxlength="24" />
+                  </u-form-item>
+                  <u-form-item label="丁戊类" prop="li.baseBuildAttach.hazardousProduceD" :borderBottom="true">
+                    <u-input type="number" v-model="li.baseBuildAttach.hazardousProduceD" placeholder="请输入丁戊类" border="none" maxlength="24" />
                   </u-form-item>
-                  <u-form-item label="数量" :prop="`baseBuildList.${index}.baseBuildExtinguishList.${baseIndex}.extinguishNum`" :borderBottom="true" required>
-                    <u-input type="number" v-model="base.extinguishNum" placeholder="请输入数量" border="none" maxlength="10" />
+                  <view style="margin: 10px 0; text-align: center">危险品存储数量(吨)</view>
+                  <u-form-item label="甲类" prop="li.baseBuildAttach.hazardousStorageA" :borderBottom="true">
+                    <u-input type="number" v-model="li.baseBuildAttach.hazardousStorageA" placeholder="请输入甲类" border="none" maxlength="24" />
+                  </u-form-item>
+                  <u-form-item label="乙类" prop="li.baseBuildAttach.hazardousStorageB" :borderBottom="true">
+                    <u-input type="number" v-model="li.baseBuildAttach.hazardousStorageB" placeholder="请输入乙类" border="none" maxlength="24" />
+                  </u-form-item>
+                  <u-form-item label="丙类" prop="li.baseBuildAttach.hazardousStorageC" :borderBottom="true">
+                    <u-input type="number" v-model="li.baseBuildAttach.hazardousStorageC" placeholder="请输入丙类" border="none" maxlength="24" />
+                  </u-form-item>
+                  <u-form-item label="丁戊类" prop="li.baseBuildAttach.hazardousStorageD" :borderBottom="true">
+                    <u-input type="number" v-model="li.baseBuildAttach.hazardousStorageD" placeholder="请输入丁戊类" border="none" maxlength="24" />
                   </u-form-item>
                 </view>
-                <u-button
-                  type="primary"
-                  style="width: 100px; height: 25px; margin-top: 10px"
-                  v-if="li.baseBuildExtinguishList.length < 6"
-                  @click="addSubmit('灭火器', index)"
-                  shape="circle"
-                  icon="plus"
-                  :plain="true"
-                  size="mini"
-                >
-                  添加灭火器
-                </u-button>
+
+                <u-form-item label="消防设施设置" :prop="`baseBuildList.${index}.baseBuild.fireFacilitySystem`" required :borderBottom="true">
+                  <u-checkbox-group v-model="li.baseBuild.fireFacilitySystem" placement="column" @change="checkboxChange">
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="自动喷水灭火系统" :name="1"> </u-checkbox>
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="火灾自动报警系统" :name="2"> </u-checkbox>
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="防排烟与排烟系统" :name="3"> </u-checkbox>
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="消防物联网系统" :name="4"> </u-checkbox>
+                  </u-checkbox-group>
+                </u-form-item>
+
+                <u-form-item label="其他设施" :prop="`li.baseBuildList.baseBuild.otherSystem`" :borderBottom="true">
+                  <u-checkbox-group v-model="li.baseBuild.otherSystem" placement="column" @change="checkboxChange">
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="泡沫灭火系统" :name="1"> </u-checkbox>
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="水喷雾、细水雾灭火系统" :name="2"> </u-checkbox>
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="消防炮、自动跟踪定位射流灭火系统" :name="3"> </u-checkbox>
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="气体灭火系统" :name="4"> </u-checkbox>
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="干粉灭火系统" :name="5"> </u-checkbox>
+                    <u-checkbox :customStyle="{ marginBottom: '8px' }" label="其他" :name="6"> </u-checkbox>
+                    <u-input v-if="li.baseBuild.otherSystem.includes(6)" v-model="li.baseBuild.otherFacilities" placeholder="请输入消防设施名称" border="none" />
+                  </u-checkbox-group>
+                </u-form-item>
+
+                <view>
+                  <view v-for="(base, baseIndex) in li.baseBuildExtinguishList" :key="baseIndex">
+                    <view style="margin: 10px 0; text-align: left">
+                      {{ "灭火器" + (baseIndex + 1) }}
+                      <u-icon v-if="li.baseBuildExtinguishList.length > 1" name="trash" color="#FF0000" size="20" style="float: right" @click="deleteSubmit('灭火器', index, baseIndex)"></u-icon>
+                    </view>
+
+                    <u-form-item
+                      label="类型"
+                      :prop="`baseBuildList.${index}.baseBuildExtinguishList.${baseIndex}.extinguishType`"
+                      required
+                      :borderBottom="true"
+                      @click="handleAction('灭火器', index, baseIndex)"
+                    >
+                      <u-input v-model="base.extinguishType" placeholder="请选择类型" border="none" suffixIcon="arrow-right" suffixIconStyle="color: #909399" disabledColor="transparent" disabled />
+                    </u-form-item>
+                    <u-form-item label="数量" :prop="`baseBuildList.${index}.baseBuildExtinguishList.${baseIndex}.extinguishNum`" :borderBottom="true" required>
+                      <u-input type="number" v-model="base.extinguishNum" placeholder="请输入数量" border="none" maxlength="10" />
+                    </u-form-item>
+                  </view>
+                  <u-button
+                    style="width: 100px; height: 25px; margin-top: 10px"
+                    v-if="li.baseBuildExtinguishList.length < 6"
+                    @click="addSubmit('灭火器', index)"
+                    shape="circle"
+                    icon="plus"
+                    :plain="true"
+                    size="mini"
+                  >
+                    添加灭火器
+                  </u-button>
+                </view>
               </view>
             </view>
           </view>
-        </view>
-      </u--form>
+        </u--form>
 
-      <view style="padding-bottom: 70px">
-        <u-button type="primary" style="width: 25%; height: 25px; margin-top: 10px" @click="addSubmit('建筑')" shape="circle" icon="plus" size="mini"> 添加建筑 </u-button>
-      </view>
+        <view style="padding-bottom: 70px">
+          <u-button type="primary" style="width: 25%; height: 25px; margin-top: 10px" @click="addSubmit('建筑')" shape="circle" icon="plus" size="mini"> 添加建筑 </u-button>
+        </view>
 
-      <view style="position: fixed; left: 0; right: 0; bottom: 0; padding: 15px; background-color: transparent">
-        <view style="display: flex">
-          <u-button style="width: 50%; height: 40px; font-size: 14px; margin-right: 15px" @click="handleSubmit('上一步')" shape="circle" customStyle="border-color:#3c9cff;color:#3c9cff">
-            上一步
-          </u-button>
+        <view class="app-button-fixed">
+          <view class="app-flex">
+            <u-button class="app-buttom" style="margin-right: 15px" @click="handleSubmit('上一步')" shape="circle"> 上一步 </u-button>
 
-          <u-button type="primary" style="width: 50%; height: 40px; font-size: 14px" @click="handleSubmit('提交')" shape="circle"> 提交 </u-button>
+            <u-button class="app-buttom" type="primary" @click="handleSubmit('提交')" shape="circle"> 提交 </u-button>
+          </view>
         </view>
       </view>
+
+      <u-picker
+        :show="actionShow"
+        :columns="actionsList"
+        :title="'请选择' + actionTitle"
+        keyName="name"
+        visibleItemCount="6"
+        :defaultIndex="[actionDefaultIndex]"
+        :closeOnClickOverlay="true"
+        @close="actionShow = false"
+        @cancel="actionShow = false"
+        @confirm="selectAction"
+      ></u-picker>
+
+      <u-datetime-picker
+        :show="showTime"
+        v-model="timeValue"
+        mode="date"
+        @close="showTime = false"
+        @cancel="showTime = false"
+        @confirm="timeSubmit"
+        :closeOnClickOverlay="true"
+        :minDate="Number(new Date('1900'))"
+        :maxDate="Number(new Date())"
+      ></u-datetime-picker>
+
+      <u-modal
+        :show="modalShow"
+        title="系统提示"
+        confirmText="修改"
+        cancelText="新增"
+        :showCancelButton="true"
+        cancelColor="#2979ff"
+        @confirm="handleSubmitApi('是')"
+        @cancel="handleSubmitApi('否')"
+        :closeOnClickOverlay="true"
+        @close="modalShow = false"
+      >
+        <view class="slot-content">
+          <view style="text-align: center; margin-bottom: 10px">是否修改单位名称为“{{ newCompanyName }}”的信息?</view>
+          <view style="text-align: center; font-size: 13px; color: #ff0000">注:“修改”则点击修改,“新增”将提交一条新的记录,如需“取消”操作可点击空白区域</view>
+        </view>
+      </u-modal>
     </view>
 
-    <u-picker
-      :show="actionShow"
-      :columns="actionsList"
-      :title="'请选择' + actionTitle"
-      keyName="name"
-      visibleItemCount="6"
-      :defaultIndex="[actionDefaultIndex]"
-      :closeOnClickOverlay="true"
-      @close="actionShow = false"
-      @cancel="actionShow = false"
-      @confirm="selectAction"
-    ></u-picker>
-
-    <u-datetime-picker
-      :show="showTime"
-      v-model="timeValue"
-      mode="date"
-      @close="showTime = false"
-      @cancel="showTime = false"
-      @confirm="timeSubmit"
-      :closeOnClickOverlay="true"
-      :minDate="Number(new Date('1900'))"
-      :maxDate="Number(new Date())"
-    ></u-datetime-picker>
-
-    <u-modal
-      :show="modalShow"
-      title="系统提示"
-      confirmText="修改"
-      cancelText="新增"
-      :showCancelButton="true"
-      cancelColor="#2979ff"
-      @confirm="handleSubmitApi('是')"
-      @cancel="handleSubmitApi('否')"
-      :closeOnClickOverlay="true"
-      @close="modalShow = false"
-    >
-      <view class="slot-content">
-        <view style="text-align: center; margin-bottom: 10px">是否修改单位名称为“{{ newCompanyName }}”的信息?</view>
-        <view style="text-align: center; font-size: 13px; color: #ff0000">注:“修改”则点击修改,“新增”将提交一条新的记录,如需“取消”操作可点击空白区域</view>
+    <view v-else>
+      <view style="display: flex">
+        <image style="width: 120px; height: 120px; margin: 50px auto 20px auto" src="@/static/images/unitInfoCollection/success.png" />
       </view>
-    </u-modal>
-  </view>
-
-  <view v-else>
-    <view style="display: flex">
-      <image style="width: 120px; height: 120px; margin: 50px auto 20px auto" src="@/static/images/unitInfoCollection/success.png" />
+      <view style="text-align: center; font-weight: 600">提交成功</view>
     </view>
-    <view style="text-align: center; font-weight: 600">提交成功</view>
-  </view>
+  </scroll-view>
 </template>
 
 <script setup>

+ 3 - 12
src/pages/business/mhxf/xunJian/collect/components/collectDetail.vue

@@ -1,6 +1,6 @@
 <template>
-  <scroll-view scroll-y class="grayBackgroundColor">
-    <view class="bg-white" style="padding: 15px 15px 15px 15px">
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view class="bg-white padding-15">
       <u-form ref="form" labelPosition="left" :model="model" :rules="rules" labelWidth="82">
         <u-form-item label="地点号码:" prop="siteNubmber">
           <u-input v-model="model.siteNubmber" disabled></u-input>
@@ -13,7 +13,7 @@
         </u-form-item>
       </u-form>
 
-      <u-button type="primary" style="width: 100%; height: 40px; font-size: 14px; margin-top: 15px" @click="handleInsert()" shape="circle"> 保存 </u-button>
+      <u-button type="primary" class="margin-t-15" style="width: 100%; height: 40px; font-size: 14px" @click="handleInsert()" shape="circle"> 保存 </u-button>
     </view>
   </scroll-view>
 </template>
@@ -100,15 +100,6 @@ onMounted(() => {});
 </style>
 
 <style scoped>
-.bg-white {
-  background-color: #ffffff;
-}
-
-.reportLeft {
-  margin-right: 15px;
-  display: flex;
-}
-
 .reportCenter {
 }
 

+ 4 - 13
src/pages/business/mhxf/xunJian/collect/components/collectRecord.vue

@@ -1,10 +1,10 @@
 <template>
-  <scroll-view scroll-y class="grayBackgroundColor">
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
     <view class="example-body" v-if="show">
       <uni-datetime-picker v-model="datetimerange" type="daterange" rangeSeparator="~" @change="confirm" />
     </view>
-    <view v-for="(cu, index) in dataList.siteList" :key="index" class="bg-white" style="display: flex; padding: 15px 0px 15px 15px; margin-bottom: 15px">
-      <view class="reportLeft">
+    <view v-for="(cu, index) in dataList.siteList" :key="index" class="flex bg-white padding-15 padding-r-0 margin-b-15">
+      <view class="flex margin-r-15">
         <u-image style="margin: auto" width="40" height="40" src="@/static/images/xunjian/scan.png" v-if="cu.siteType == 1" shape="circle"></u-image>
 
         <u-image style="margin: auto" width="40" height="40" src="@/static/images/xunjian/NFC.png" v-if="cu.siteType == 2" shape="circle"></u-image>
@@ -21,7 +21,7 @@
       <view style="margin: auto"></view>
       <view class="reportRight">
         <view style="margin: auto">
-          <view style="padding: 0; font-size: 14px; color: #a1a1a1"> 已提交 </view>
+          <view class="padding-0" style="font-size: 14px; color: #a1a1a1"> 已提交 </view>
         </view>
       </view>
     </view>
@@ -103,15 +103,6 @@ onMounted(() => {
 </style>
 
 <style scoped>
-.bg-white {
-  background-color: #ffffff;
-}
-
-.reportLeft {
-  margin-right: 15px;
-  display: flex;
-}
-
 .reportCenter {
 }
 

+ 5 - 17
src/pages/business/mhxf/xunJian/collect/index.vue

@@ -1,17 +1,17 @@
 <template>
-  <scroll-view scroll-y class="grayBackgroundColor">
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
     <!-- 按组使用 -->
     <uni-swipe-action>
       <uni-swipe-action-item
+        class="margin-b-15"
         v-for="(cu, index) in xunJianStore.collectDataList"
         :key="index"
         :right-options="options"
         @click="bindClick($event, index)"
         @change="swipeChange($event, index)"
-        style="margin-bottom: 15px"
       >
-        <view class="bg-white" style="display: flex; padding: 15px 0px 15px 15px">
-          <view class="reportLeft">
+        <view class="flex bg-white padding-15 padding-r-0">
+          <view class="flex margin-r-15">
             <u-image style="margin: auto" width="40" height="40" src="@/static/images/xunjian/scan.png" v-if="cu.siteType == 1" shape="circle"></u-image>
 
             <u-image style="margin: auto" width="40" height="40" src="@/static/images/xunjian/NFC.png" v-if="cu.siteType == 2" shape="circle"></u-image>
@@ -35,7 +35,7 @@
       </uni-swipe-action-item>
     </uni-swipe-action>
 
-    <view style="position: fixed; right: 0; bottom: 50px">
+    <view class="app-scan-fixed">
       <u-image width="67" height="67" src="@/static/images/xunjian/plan-scan.png" shape="circle" @click="scanClick()"></u-image>
     </view>
 
@@ -205,18 +205,6 @@ onMounted(() => {});
 </style>
 
 <style scoped>
-.bg-white {
-  background-color: #ffffff;
-}
-
-.reportLeft {
-  margin-right: 15px;
-  display: flex;
-}
-
-.reportCenter {
-}
-
 .reportCenter .centerSiteName {
   font-size: 15px;
   margin-bottom: 5px;

+ 11 - 11
src/pages/business/mhxf/xunJian/plan/components/content.vue

@@ -1,7 +1,7 @@
 <template>
-  <scroll-view scroll-y :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
     <view class="xunjian-plan-content">
-      <view class="bg-white padding-15 margin-bottom-15" v-for="(con, index) in contentList" :key="index">
+      <view class="bg-white padding-15 margin-b-15" v-for="(con, index) in contentList" :key="index">
         <view class="flex margin-bottom-10">
           <uni-section :title="con.contentTitle" type="line"></uni-section>
 
@@ -10,7 +10,7 @@
           <u-button v-if="con.remarksBool == false" type="primary" icon="list-dot" style="width: 18px; height: 18px; padding: 0; margin: 0" shape="circle" @click="remarksClick(index)"> </u-button>
         </view>
         <view>
-          <view class="margin-top-15" v-if="con.submissionMethod == 1">
+          <view class="margin-t-15" v-if="con.submissionMethod == 1">
             <u-checkbox-group
               v-model="con.contentOptionListValue1"
               @change="
@@ -22,7 +22,7 @@
               :activeColor="proxy.$settingStore.themeColor.color"
             >
               <u-row style="width: 100%; flex-wrap: wrap">
-                <u-col class="margin-bottom-15" v-for="option in con.contentOptionList" :key="option" :span="6">
+                <u-col class="margin-b-15" v-for="option in con.contentOptionList" :key="option" :span="6">
                   <u-checkbox :label="option.optionName" :name="option.id" :checked="con.contentOptionListValue1.length > 0 ? con.contentOptionListValue1.indexOf(option.id) >= 0 : false">
                   </u-checkbox>
                 </u-col>
@@ -34,10 +34,10 @@
               <u-input v-model="con.remarks" placeholder="请输入备注" :disabled="xunJianStore.contentArray.siteList.inspectionStatus == 2"></u-input>
             </view>
           </view>
-          <view class="margin-top-15" v-if="con.submissionMethod == 2">
+          <view class="margin-t-15" v-if="con.submissionMethod == 2">
             <u-radio-group placement="row" v-model="con.contentOptionListValue" :activeColor="proxy.$settingStore.themeColor.color">
               <u-row style="width: 100%; flex-wrap: wrap">
-                <u-col class="margin-bottom-15" v-for="option in con.contentOptionList" :key="option" :span="6">
+                <u-col class="margin-b-15" v-for="option in con.contentOptionList" :key="option" :span="6">
                   <u-radio :disabled="xunJianStore.contentArray.siteList.inspectionStatus == 2" :label="option.optionName" :name="option.id"> </u-radio>
                 </u-col>
               </u-row>
@@ -48,9 +48,9 @@
               <u-input v-model="con.remarks" placeholder="请输入备注" :disabled="xunJianStore.contentArray.siteList.inspectionStatus == 2"></u-input>
             </view>
           </view>
-          <view class="margin-top-15" v-if="con.submissionMethod == 3">
+          <view class="margin-t-15" v-if="con.submissionMethod == 3">
             <u-textarea
-              class="margin-bottom-15"
+              class="margin-b-15"
               v-model="con.contentOptionListValue"
               placeholder="请输入"
               maxlength="30"
@@ -65,7 +65,7 @@
         </view>
       </view>
     </view>
-    <view class="app-position-fixed">
+    <view class="app-button-fixed">
       <u-button class="app-buttom" v-if="xunJianStore.contentArray.siteList.inspectionStatus == 1" type="primary" shape="circle" @click="buttonClick(1)"> 上一步 </u-button>
 
       <u-button class="app-buttom" v-if="xunJianStore.contentArray.siteList.inspectionStatus == 1" type="primary" shape="circle" @click="buttonClick(2)"> 提交 </u-button>
@@ -230,11 +230,11 @@ onMounted(() => {});
 <style lang="scss">
 .xunjian-plan-content {
   //#ifdef H5
-  margin-bottom: 125px;
+  padding-bottom: 125px;
   //#endif
 
   //#ifdef APP-PLUS
-  margin-bottom: 130px;
+  padding-bottom: 130px;
   //#endif
 }
 </style>

+ 2 - 2
src/pages/business/mhxf/xunJian/plan/components/drawer.vue

@@ -1,11 +1,11 @@
 <template>
   <u-popup :show="scanBool" @close="close" @open="open" mode="bottom" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
     <template #default>
-      <view class="margin-bottom-15 margin-top-15">
+      <view class="margin-b-15 margin-t-15">
         <h4 style="font-size: 16px; color: #149eff; text-align: center; margin-bottom: 10px">请选择计划</h4>
         <view style="font-size: 12px; color: #b7b7b7; text-align: center"> 当前地点存在于多个计划,请选择目标计划 </view>
       </view>
-      <scroll-view scroll-y style="padding-left: 15px; padding-right: 15px; height: calc(100vh - 30rem)">
+      <scroll-view scroll-y class="padding-l-15 padding-r-15" style="height: calc(100vh - 30rem)">
         <view v-for="(scan, index) in scanArray" :key="index">
           <view style="display: flex; font-size: 15px; height: 50px; line-height: 50px">
             <view style="margin-right: 15px">

+ 16 - 22
src/pages/business/mhxf/xunJian/plan/components/report.vue

@@ -1,7 +1,7 @@
 <template>
-  <scroll-view scroll-y>
-    <view class="margin-bottom-15 bg-white" style="display: flex; padding: 15px 0px 15px 15px" v-for="cu in currentDateList" :key="cu">
-      <view class="reportLeft" @click="pulicClick(cu)">
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view class="flex margin-b-15 bg-white" style="padding: 15px 0px 15px 15px" v-for="cu in currentDateList" :key="cu">
+      <view class="flex margin-r-15" @click="pulicClick(cu)">
         <u-image style="margin: auto" width="40" height="40" src="@/static/images/xunjian/scan.png" v-if="cu.siteType == 1" shape="circle"></u-image>
 
         <u-image style="margin: auto" width="40" height="40" src="@/static/images/xunjian/NFC.png" v-if="cu.siteType == 2" shape="circle"></u-image>
@@ -30,7 +30,6 @@
           {{ cu.inspectionTime == "" || cu.inspectionTime == null ? "无" : cu.inspectionTime }}
         </view>
       </view>
-      <view style="margin: auto" @click="pulicClick(cu)"></view>
       <view class="reportRight">
         <view
           class="rightChild"
@@ -53,8 +52,7 @@
         </view>
       </view>
     </view>
-
-    <view style="position: fixed; right: 0; bottom: 50px">
+    <view class="app-scan-fixed">
       <u-image width="67" height="67" src="@/static/images/xunjian/plan-scan.png" shape="circle" @click="scanClick()"></u-image>
     </view>
   </scroll-view>
@@ -196,29 +194,25 @@ onShow(() => {
 onMounted(() => {});
 </script>
 
-<style lang="scss">
+<style lang="scss" scoped>
 .is-selected {
   color: #1989fa;
 }
-</style>
-
-<style scoped>
-.reportLeft {
-  margin-right: 15px;
-  display: flex;
-}
 
 .reportCenter {
+  margin-right: auto;
+
+  .centerSiteName {
+    font-size: 15px;
+    margin-bottom: 5px;
+    height: 20px;
+    line-height: 20px;
+    display: flex;
+  }
 }
+</style>
 
-.reportCenter .centerSiteName {
-  font-size: 15px;
-  margin-bottom: 5px;
-  height: 20px;
-  line-height: 20px;
-  display: flex;
-}
-
+<style scoped>
 .reportRight {
   display: flex;
   background-color: rgba(238, 238, 238, 0.3);

+ 8 - 74
src/pages/business/mhxf/xunJian/plan/components/siteDetails.vue

@@ -1,7 +1,7 @@
 <template>
-  <scroll-view scroll-y :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
     <view class="xunjian-plan-siteDetails">
-      <view class="flex bg-white padding-15 margin-bottom-15">
+      <view class="flex bg-white padding-15 margin-b-15">
         <u-image style="margin: auto 15px auto 0" width="40" height="40" src="@/static/images/xunjian/scan.png" v-if="siteList.siteType == 1" shape="circle"></u-image>
         <u-image style="margin: auto 15px auto 0" width="40" height="40" src="@/static/images/xunjian/NFC.png" v-if="siteList.siteType == 2" shape="circle"></u-image>
 
@@ -17,7 +17,7 @@
         </view>
       </view>
 
-      <view class="bg-white padding-15 margin-bottom-15">
+      <view class="bg-white padding-15 margin-b-15">
         <uni-section class="margin-bottom-10" title="上报现场" type="line"></uni-section>
 
         <view class="flex flex-wrap">
@@ -36,7 +36,7 @@
         </view>
       </view>
 
-      <view class="bg-white padding-15 margin-bottom-15" style="height: 170px; max-height: 170px">
+      <view class="bg-white padding-15 margin-b-15" style="height: 170px; max-height: 170px">
         <uni-section class="margin-bottom-10" title="备注" type="line"></uni-section>
 
         <view style="height: calc(100% - 25px)">
@@ -48,13 +48,13 @@
         </view>
       </view>
 
-      <view class="bg-white padding-15 margin-bottom-15">
+      <view class="bg-white padding-15 margin-b-15">
         <uni-section class="margin-bottom-10" title="消防设施分布图" type="line"></uni-section>
 
         <u-image width="100%" :src="siteList.pictureUrl"></u-image>
       </view>
     </view>
-    <view class="app-position-fixed">
+    <view class="app-button-fixed">
       <u-button v-if="siteList.inspectionStatus == 1" class="app-buttom" type="primary" @click="buttonClick()" shape="circle"> 下一步 </u-button>
 
       <u-button v-if="siteList.inspectionStatus == 2" class="app-buttom" type="primary" @click="buttonClick()" shape="circle"> 查看巡检项 </u-button>
@@ -176,77 +176,11 @@ onMounted(() => {});
 <style lang="scss" scoped>
 .xunjian-plan-siteDetails {
   //#ifdef H5
-  margin-bottom: 70px;
+  padding-bottom: 70px;
   //#endif
 
   //#ifdef APP-PLUS
-  margin-bottom: 75px;
+  padding-bottom: 75px;
   //#endif
 }
 </style>
-
-<!--自定义图片上传功能样式-->
-<style scoped>
-.uploadView {
-  position: relative;
-  overflow: hidden;
-  width: calc(33% - 10px);
-  height: 110px;
-  margin: 0 15px 15px 0;
-  border: 1px solid #d9d9d9;
-  border-radius: 6px;
-  cursor: pointer;
-}
-
-.uploadView .uploadUimage {
-  height: 100%;
-}
-
-.uploadView .uploadUimage > uni-view {
-  height: 100%;
-}
-
-.uploadViewClose {
-  position: absolute;
-  background-color: #409eff;
-  transform: rotate(45deg);
-  width: 40px;
-  height: 24px;
-  text-align: center;
-  right: -15px;
-  top: -6px;
-  cursor: pointer;
-}
-
-.uploadViewClose .u-icon {
-  font-size: 12px;
-  margin-top: 4px;
-  margin-left: 10px;
-  transform: rotate(-45deg);
-  color: #ffffff;
-}
-
-.uploadView img {
-  width: 100%;
-}
-
-.upload-buttom {
-  display: flex;
-  font-size: 28px;
-  color: #909399;
-  border: 1px dashed #d9d9d9;
-  background-color: #fafafa;
-}
-
-.uploadView:nth-child(3n) {
-  margin: 0 !important;
-}
-
-.upload-buttom:hover {
-  border: 1px dashed #409eff;
-}
-
-:deep(.uploadDisabled) {
-  display: none !important;
-}
-</style>

+ 3 - 3
src/pages/business/mhxf/xunJian/plan/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <scroll-view scroll-y>
-    <view class="xunjian-plan-container" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
+    <view class="xunjian-plan-container">
       <!-- 日历组件 -->
       <oa-calendar class="uni-calendar--hook" :selected="info.selected" :showMonth="false" @change="change" @monthSwitch="monthSwitch" :currentDate="currentDateList" />
 
@@ -94,7 +94,7 @@
       <view id="planTimeline" style="text-align: center; color: #bdbdbd; font-size: 14px" v-else> 暂无数据 </view>
     </view>
 
-    <view style="position: fixed; right: 0; bottom: 50px">
+    <view class="app-scan-fixed">
       <u-image width="67" height="67" src="@/static/images/xunjian/plan-scan.png" shape="circle" @click="scanClick()"></u-image>
     </view>
 

+ 1 - 1
src/pages/business/mhxf/xunJian/xunJian.vue

@@ -1,5 +1,5 @@
 <template>
-  <scroll-view scroll-x>
+  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
     <view class="padding-sm">
       <!-- 图表 -->
       <view class="section1 section bg-white padding-xs">

+ 13 - 12
src/pages/index.vue

@@ -54,6 +54,17 @@
         @change="swiperChange"
       >
       </u-swiper>
+
+      <image v-if="!arrayList.swiperBool" src="@/static/images/index/banner1.png" style="width: 100%; height: 160px"></image>
+
+      <view class="app-info-notice bg-white radius shadow-default margin-lr-sm margin-bottom-sm">
+        <view class="flex">
+          <view class="info-title text-df">综合智慧云</view>
+          <view class="info-time text-sm">03-21 19:23</view>
+        </view>
+        <view class="info-content text-sm">综合智慧云app,助力企业数字化转型升级,超多业务功能,全新部署上线,操作简单流畅...</view>
+      </view>
+
       <!-- 轮播图 结束 -->
 
       <!-- 宫格列表 -->
@@ -88,7 +99,7 @@
     </view>
   </view>
 
-  <oa-tabbar></oa-tabbar>
+  <oa-tabbar :tabbarValue="0"></oa-tabbar>
 </template>
 
 <script setup>
@@ -113,7 +124,7 @@ const { proxy } = getCurrentInstance();
 const arrayList = reactive({
   dialogFlag: false,
 
-  swiperBool: false,
+  swiperBool: true,
   swiperIndex: 0,
   swiperTime: 5000,
   swiperList: [
@@ -122,16 +133,6 @@ const arrayList = reactive({
       link: "",
       linkType: 1,
     },
-    {
-      url: "../static/images/index/banner2.jpg",
-      link: "",
-      linkType: 1,
-    },
-    {
-      url: "../static/images/index/banner3.jpg",
-      link: "",
-      linkType: 1,
-    },
   ],
 
   // cuIconList: json.cuIconList,

+ 9 - 7
src/pages/info/fireBase/fireBase.vue

@@ -28,12 +28,14 @@
 
 <script setup>
 import { onLoad, onShow, onHide, onLaunch } from "@dcloudio/uni-app";
-import { ref, onMounted, inject, shallowRef, reactive } from "vue";
+import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance } from "vue";
 
 import { getKnowledgeBaseList } from "@/api/mine/info.js";
 
 const getData = ref([]);
 
+const { proxy } = getCurrentInstance();
+
 // 列表数据请求
 function getFireBaseList(params = {}) {
   getKnowledgeBaseList(params).then((res) => {
@@ -45,14 +47,14 @@ function getFireBaseList(params = {}) {
 // 页面跳转
 
 function goDetail(item) {
-  uni.navigateTo({
-    url: "/pages/info/fireBashDetail/fireBashDetail?id=" + item.id + "&title=" + item.title,
-    success: (res) => {},
-    fail: () => {},
-    complete: () => {},
-  });
+  proxy.$tab.navigateTo("/pages/info/fireBashDetail/fireBashDetail?id=" + item.id + "&title=" + item.title);
 }
 
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+
 onLoad((option) => {
   getFireBaseList({ company_code: uni.getStorageSync("selectedCode") });
 });

+ 8 - 48
src/pages/info/info.vue

@@ -17,7 +17,7 @@
   </u-navbar>
 
   <u-sticky style="top: 0px">
-    <view class="padding-lr" :class="'bg-' + proxy.$settingStore.themeColor.name" style="padding-top: 10px; padding-bottom: 10px">
+    <view class="padding-lr padding-tb-10" :class="'bg-' + proxy.$settingStore.themeColor.name">
       <u--input placeholder="搜索" prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" customStyle="height:35px;background-color:#f5f6fa;"></u--input>
     </view>
   </u-sticky>
@@ -37,36 +37,20 @@
         <view class="uni-content">
           <view class="uni-item">
             <view class="uni-item-cont text-dfl" style="color: #000000">消防知识库</view>
-            <view class="uni-item-right text-sm" style="color: #666666">5月15日</view>
+            <view class="uni-item-right text-sm" style="color: #909399">5月15日</view>
           </view>
-          <view class="uni-item" style="display: flex">
-            <view class="uni-item-cont text-df" style="color: #666666">您收到一条最新消息,请及时查看</view>
-            <view class="uni-item-right text-df" style="color: #666666">1</view>
-          </view>
-        </view>
-      </view>
-
-      <!-- <view class="cu-list menu-avatar padding-lr-sm padding-top-sm">
-        <view class="cu-item" @tap="goPushList()">
-          <view class="cu-avatar">
-            <image class="image-bg" src="@/static/images/info/pushList.png" />
-          </view>
-          <view class="content">
-            <view class="">消息推送</view>
-          </view>
-          <view class="nav-right">
-            <view class="text-grey">
-              <text class="icon iconfont margin-right-xs margin-left-lg">&#xe629;</text>
+          <view class="flex uni-item">
+            <view class="uni-item-cont text-df" style="color: #909399">您收到一条最新消息,请及时查看</view>
+            <view class="uni-item-right text-df" style="margin: auto 0">
+              <u-badge numberType="overflow" max="99" :value="1"></u-badge>
             </view>
           </view>
         </view>
-      </view> -->
-
-      <!-- <view style="height: 800px"></view> -->
+      </view>
     </view>
   </scroll-view>
 
-  <oa-tabbar></oa-tabbar>
+  <oa-tabbar :tabbarValue="1"></oa-tabbar>
 </template>
 
 <script setup>
@@ -103,30 +87,6 @@ onLoad((options) => {
   padding: 30upx;
 }
 
-//消息页面
-.info-wrapper {
-  .cu-list.menu-avatar .cu-item {
-    border-radius: 5px;
-    padding: 30rpx 0;
-    box-shadow: 1px 1px 4px rgb(26 26 26 / 10%);
-    .cu-avatar {
-      background-color: rgba(0, 0, 0, 0);
-      left: 26rpx;
-
-      .image-bg {
-        width: 100%;
-        height: 100%;
-      }
-    }
-
-    .content {
-      // width: 100%;
-      left: 130rpx;
-      font-size: 32rpx;
-    }
-  }
-}
-
 .uni-list {
   display: flex;
 

+ 4 - 3
src/pages/login.vue

@@ -267,7 +267,6 @@ function login(data) {
     /** 获取用户信息 */
     proxy.$modal.closeLoading();
     useStore.GetInfo().then((res) => {
-      proxy.$settingStore.tabbarValue = "/pages/index";
       proxy.$tab.reLaunch("/pages/index");
     });
   });
@@ -276,12 +275,14 @@ function login(data) {
 // 用户协议
 function handleUserAgrement() {
   let site = getApp().globalData.config.appInfo.agreements[0];
-  proxy.$tab.navigateTo(`/pages/common/textview/index1?title=${site.title}&content=${site.content}`);
+  proxy.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`);
+  // proxy.$tab.navigateTo(`/pages/common/textview/index1?title=${site.title}&content=${site.content}`);
 }
 // 隐私协议
 function handlePrivacy() {
   let site = getApp().globalData.config.appInfo.agreements[1];
-  proxy.$tab.navigateTo(`/pages/common/textview/index1?title=${site.title}&content=${site.content}`);
+  proxy.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`);
+  // proxy.$tab.navigateTo(`/pages/common/textview/index1?title=${site.title}&content=${site.content}`);
 }
 
 /**

+ 104 - 50
src/pages/mine/avatar/index.vue

@@ -1,18 +1,10 @@
 <template>
-  <view class="avatar-container">
-    <u-navbar :titleStyle="{ color: '#fff' }" :autoBack="true" title="修改头像" :placeholder="true" :safeAreaInsetTop="true" :bgColor="proxy.$settingStore.themeColor.color">
-      <template #left>
-        <view class="u-nav-slot">
-          <u-icon name="arrow-left" size="19" color="#fff"></u-icon>
-        </view>
-      </template>
-    </u-navbar>
-
+  <view class="avatar-container" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
     <view class="uni-content-header"></view>
     <view class="page-body uni-content-info">
       <view class="cropper-content">
-        <view ref="uniCorpper" v-if="isShowImg" class="uni-corpper" :style="'width:' + cropperInitW + 'px;height:' + cropperInitH + 'px;background:#000'">
-          <view class="uni-corpper-content" :style="'width:' + cropperW + 'px;height:' + cropperH + 'px;left:' + cropperL + 'px;top:' + cropperT + 'px'">
+        <view ref="uniCorpper" v-if="isShowImg" class="uni-corpper" :style="'display: flex;' + 'width:' + cropperInitW + 'px;height:' + cropperInitH + 'px;'">
+          <view class="uni-corpper-content" :style="'margin: auto;' + 'width:' + cropperW + 'px;height:' + cropperH + 'px;left:' + cropperL + 'px;top:' + cropperT + 'px'">
             <image :src="imageSrc" :style="'width:' + cropperW + 'px;height:' + cropperH + 'px'"></image>
             <view
               class="uni-corpper-crop-box"
@@ -42,9 +34,13 @@
           </view>
         </view>
       </view>
-      <view class="padding-sm">
-        <button type="default" class="margin-top-sm round text-dfl" @click="getImage" style="border: 1px rgb(0, 0, 0, 0.1) solid">选择头像</button>
-        <button type="primary" class="margin-top-sm round text-dfl" @click="getImageInfo">提交</button>
+
+      <view class="app-button-fixed">
+        <view class="app-flex">
+          <u-button class="app-buttom" style="margin-right: 15px" @click="getImage" shape="circle"> 选择头像 </u-button>
+
+          <u-button class="app-buttom" type="primary" @click="getImageInfo" shape="circle"> 提交 </u-button>
+        </view>
       </view>
       <canvas canvas-id="myCanvas" :style="'position:absolute;border: 1px solid red; width:' + imageW + 'px;height:' + imageH + 'px;top:-9999px;left:-9999px;'"></canvas>
     </view>
@@ -66,6 +62,7 @@ const { proxy } = getCurrentInstance();
 const baseUrl = config.baseUrl;
 let sysInfo = uni.getSystemInfoSync();
 let SCREEN_WIDTH = sysInfo.screenWidth;
+let SCREEN_HEIGHT = sysInfo.screenHeight - (proxy.$settingStore.StatusBar + 44);
 let PAGE_X, // 手按下的x位置
   PAGE_Y, // 手按下y的位置
   PR = sysInfo.pixelRatio, // dpi
@@ -92,7 +89,7 @@ const array = reactive({
   isShowImg: false,
   // 初始化的宽高
   cropperInitW: SCREEN_WIDTH,
-  cropperInitH: SCREEN_WIDTH,
+  cropperInitH: SCREEN_HEIGHT,
   // 动态的宽高
   cropperW: SCREEN_WIDTH,
   cropperH: SCREEN_WIDTH,
@@ -157,6 +154,7 @@ function setData(obj) {
  */
 function getImage() {
   uni.chooseImage({
+    sizeType: "original",
     success: function (res) {
       setData({
         imageSrc: res.tempFilePaths[0],
@@ -171,13 +169,36 @@ function loadImage() {
     src: imageSrc.value,
     success: function success(res) {
       IMG_RATIO = 1 / 1;
+
       if (IMG_RATIO >= 1) {
         IMG_REAL_W = SCREEN_WIDTH;
-        IMG_REAL_H = SCREEN_WIDTH / IMG_RATIO;
+        IMG_REAL_H = res.height > SCREEN_HEIGHT ? SCREEN_HEIGHT : res.height;
       } else {
         IMG_REAL_W = SCREEN_WIDTH * IMG_RATIO;
-        IMG_REAL_H = SCREEN_WIDTH;
+        IMG_REAL_H = res.height > SCREEN_HEIGHT ? SCREEN_HEIGHT : res.height;
+      }
+
+      if (res.width == res.height) {
+        IMG_REAL_W = res.width > SCREEN_WIDTH ? SCREEN_WIDTH : res.width; //等比例获取宽度
+        IMG_REAL_H = res.width > SCREEN_WIDTH ? SCREEN_WIDTH : res.width;
       }
+
+      if (res.width > res.height) {
+        IMG_REAL_W = SCREEN_WIDTH; //等比例获取宽度
+        IMG_REAL_H = (SCREEN_WIDTH / res.width) * res.height; //等比例获取高度
+      }
+
+      if (res.width < res.height) {
+        IMG_REAL_W = res.width / (res.height / SCREEN_HEIGHT);
+        IMG_REAL_H = SCREEN_HEIGHT;
+
+        if (IMG_REAL_W > SCREEN_WIDTH) {
+          IMG_REAL_W = SCREEN_WIDTH; //等比例获取宽度
+          IMG_REAL_H = (SCREEN_WIDTH / res.width) * res.height; //等比例获取高度
+          IMG_REAL_H = IMG_REAL_H > SCREEN_HEIGHT ? SCREEN_HEIGHT : IMG_REAL_H;
+        }
+      }
+
       let minRange = IMG_REAL_W > IMG_REAL_H ? IMG_REAL_W : IMG_REAL_H;
       INIT_DRAG_POSITION = minRange > INIT_DRAG_POSITION ? INIT_DRAG_POSITION : minRange;
       // 根据图片的宽高显示不同的效果   保证图片可以正常显示
@@ -187,8 +208,8 @@ function loadImage() {
         let cutL = Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH + INIT_DRAG_POSITION) / 2);
         let cutR = cutL;
         setData({
-          cropperW: SCREEN_WIDTH,
-          cropperH: SCREEN_WIDTH / IMG_RATIO,
+          cropperW: IMG_REAL_W,
+          cropperH: IMG_REAL_H,
           // 初始化left right
           cropperL: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH) / 2),
           cropperT: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH / IMG_RATIO) / 2),
@@ -210,7 +231,7 @@ function loadImage() {
         let cutB = cutT;
         setData({
           cropperW: SCREEN_WIDTH * IMG_RATIO,
-          cropperH: SCREEN_WIDTH,
+          cropperH: IMG_REAL_H,
           // 初始化left right
           cropperL: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH * IMG_RATIO) / 2),
           cropperT: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH) / 2),
@@ -305,9 +326,8 @@ function getImageInfo() {
         let data = { name: "file", filePath: res.tempFilePath };
         uploadAvatar(data).then((response) => {
           useStore.$state.avatar = response.data.url;
-          updateUserProfile({
-            avatar: response.data.url,
-          }).then(() => {});
+          useStore.$state.userArr.avatar = response.data.url;
+          updateUserProfile(useStore.$state.userArr).then(() => {});
           uni.showToast({ title: "修改成功", icon: "success" });
           uni.navigateBack();
         });
@@ -364,20 +384,20 @@ function dragMove(e) {
         cutB: CUT_B + dragLength,
       });
       break;
-    case "rightBottom":
-      var dragLengthX = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO;
-      var dragLengthY = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO;
-
-      if (CUT_B + dragLengthY < 0) dragLengthY = -CUT_B;
-      if (CUT_R + dragLengthX < 0) dragLengthX = -CUT_R;
-      let cutB = CUT_B + dragLengthY;
-      let cutR = CUT_R + dragLengthX;
-
-      setData({
-        cutB: cutB,
-        cutR: cutR,
-      });
-      break;
+    // case "rightBottom":
+    //   var dragLengthX = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO;
+    //   var dragLengthY = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO;
+
+    //   if (CUT_B + dragLengthY < 0) dragLengthY = -CUT_B;
+    //   if (CUT_R + dragLengthX < 0) dragLengthX = -CUT_R;
+    //   let cutB = CUT_B + dragLengthY;
+    //   let cutR = CUT_R + dragLengthX;
+
+    //   setData({
+    //     cutB: cutB,
+    //     cutR: cutR,
+    //   });
+    //   break;
     default:
       break;
   }
@@ -605,8 +625,16 @@ onShow(() => {
   .point-t {
     top: -3rpx;
     left: 50%;
-    margin-left: -3rpx;
+    // margin-left: -3rpx;
+    -webkit-transform: translate3d(-50%, -50%, 0);
+    transform: translate3d(-50%, -50%, 0);
     cursor: n-resize;
+    width: 36rpx;
+    height: 36rpx;
+    background-color: #69f;
+    position: absolute;
+    z-index: 1112;
+    opacity: 1;
   }
 
   .point-tr {
@@ -619,14 +647,8 @@ onShow(() => {
   .point-r {
     top: 50%;
     left: 100%;
-    margin-left: -3rpx;
-    margin-top: -3rpx;
-    cursor: n-resize;
-  }
-
-  .point-rb {
-    left: 100%;
-    top: 100%;
+    // margin-left: -3rpx;
+    // margin-top: -3rpx;
     -webkit-transform: translate3d(-50%, -50%, 0);
     transform: translate3d(-50%, -50%, 0);
     cursor: n-resize;
@@ -638,12 +660,36 @@ onShow(() => {
     opacity: 1;
   }
 
-  .point-b {
-    left: 50%;
+  .point-rb {
+    left: 100%;
     top: 100%;
     margin-left: -3rpx;
     margin-top: -3rpx;
+    // -webkit-transform: translate3d(-50%, -50%, 0);
+    // transform: translate3d(-50%, -50%, 0);
+    cursor: n-resize;
+    // width: 36rpx;
+    // height: 36rpx;
+    // background-color: #69f;
+    // position: absolute;
+    // z-index: 1112;
+    // opacity: 1;
+  }
+
+  .point-b {
+    left: 50%;
+    top: 100%;
+    // margin-left: -3rpx;
+    // margin-top: -3rpx;
+    -webkit-transform: translate3d(-50%, -50%, 0);
+    transform: translate3d(-50%, -50%, 0);
     cursor: n-resize;
+    width: 36rpx;
+    height: 36rpx;
+    background-color: #69f;
+    position: absolute;
+    z-index: 1112;
+    opacity: 1;
   }
 
   .point-bl {
@@ -657,9 +703,17 @@ onShow(() => {
   .point-l {
     left: 0%;
     top: 50%;
-    margin-left: -3rpx;
-    margin-top: -3rpx;
+    // margin-left: -3rpx;
+    // margin-top: -3rpx;
+    -webkit-transform: translate3d(-50%, -50%, 0);
+    transform: translate3d(-50%, -50%, 0);
     cursor: n-resize;
+    width: 36rpx;
+    height: 36rpx;
+    background-color: #69f;
+    position: absolute;
+    z-index: 1112;
+    opacity: 1;
   }
 
   .point-lt {

+ 16 - 4
src/pages/mine/index.vue

@@ -59,13 +59,25 @@
             <view>常见问题</view>
           </view>
         </view>
-
-        <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleSetting()">
+        <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleCleanTmp()">
+          <view class="menu-item-box">
+            <view class="iconfont ucicon-qinglihuancun menu-icon"></view>
+            <view>清理缓存</view>
+            <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ proxy.$settingStore.currentSize }}</view>
+          </view>
+        </view>
+        <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleToUpgrade()">
+          <view class="menu-item-box">
+            <view class="iconfont ucicon-jianchagengxin menu-icon"></view>
+            <view>检查更新</view>
+          </view>
+        </view>
+        <!-- <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleSetting()">
           <view class="menu-item-box">
             <view class="iconfont ucicon-shezhi menu-icon"></view>
             <view>设置</view>
           </view>
-        </view>
+        </view> -->
       </view>
 
       <!-- <view class="menu-list">
@@ -162,7 +174,7 @@
     </view>
   </view>
 
-  <oa-tabbar></oa-tabbar>
+  <oa-tabbar :tabbarValue="2"></oa-tabbar>
 </template>
 
 <script setup>

+ 21 - 21
src/pages/mine/info/index.vue

@@ -1,20 +1,11 @@
 <template>
   <view :data-theme="'theme-' + proxy.$settingStore.themeColor.name" class="info-container">
-    <u-sticky bgColor="#fff" style="box-shadow: 1px 1px 4px rgb(26 26 26 / 10%)">
-      <u-tabs
-        :list="tabsList"
-        :current="tabsCurrent"
-        @click="tabsClick"
-        lineColor="#333"
-        :activeStyle="{ color: '#333' }"
-        :inactiveStyle="{ color: '#909399' }"
-        :scrollable="false"
-        style="border-bottom: 1px solid #eaeef1"
-      ></u-tabs>
+    <u-sticky class="shadow-default" bgColor="#fff">
+      <u-tabs :list="tabsList" :current="tabsCurrent" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }" :scrollable="false"></u-tabs>
     </u-sticky>
 
     <view class="content-section" v-show="tabsCurrent == 0">
-      <view class="menu-list margin-top-0 margin-lr-0">
+      <view class="menu-list margin-t-0 margin-lr-0">
         <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleToAvatar(2)">
           <view class="menu-item-box">
             <view class="title">头像</view>
@@ -39,7 +30,7 @@
             <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.email }}</view>
           </view>
         </view>
-        <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleAbout()">
+        <view class="list-cell list-cell-arrow" @click="handleUserModal('修改性别')">
           <view class="menu-item-box">
             <view class="title">性别</view>
             <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.sex == "0" ? "男" : "女" }}</view>
@@ -52,7 +43,7 @@
         </view>
       </view>
 
-      <view class="menu-list margin-top-0 margin-lr-0">
+      <view class="menu-list margin-t-0 margin-lr-0">
         <view class="list-cell list-cell-arrow" @click="proxy.$modal.showToast('模块建设中~')">
           <view class="menu-item-box">
             <view>个人实名认证</view>
@@ -104,7 +95,7 @@
 
   <u-modal :show="modalShow" :showConfirmButton="true" :showCancelButton="true" @cancel="modalShow = false" @confirm="handleConfirm">
     <view class="slot-content" style="width: 100%">
-      <view class="margin-bottom-15" style="color: #909399">{{ modalTitle }}</view>
+      <view class="margin-b-15" style="color: #909399">{{ modalTitle }}</view>
 
       <view v-if="modalTitle === '修改昵称'">
         <u--input v-model="userArr.nickName" :maxlength="5" :placeholder="modalTitle" border="bottom" clearable></u--input>
@@ -117,6 +108,12 @@
       <view v-if="modalTitle === '修改邮箱'">
         <u--input v-model="userArr.email" :placeholder="modalTitle" border="bottom" clearable></u--input>
       </view>
+
+      <view v-if="modalTitle === '修改性别'">
+        <u-radio-group v-model="userArr.sex" placement="row">
+          <u-radio v-for="se in sexs" :key="se" :activeColor="proxy.$settingStore.themeColor.color" :label="se.text" :name="se.value" style="margin-right: 15px"></u-radio>
+        </u-radio-group>
+      </view>
     </view>
   </u-modal>
 </template>
@@ -183,8 +180,6 @@ const data = reactive({
   modalTitle: "",
 });
 
-// .test(value)
-
 const { name, phone, tabsList, tabsCurrent, sexs, modalShow, modalTitle } = toRefs(data);
 
 const form = ref(null);
@@ -208,7 +203,7 @@ function handleConfirm() {
       return;
     }
 
-    if (/^1[3|4|5|6|7|8|9][0-9]\d{8}$/.test(userArr.value.phonenumber)) {
+    if (!/^1[3|4|5|6|7|8|9][0-9]\d{8}$/.test(userArr.value.phonenumber)) {
       proxy.$modal.showToast("请输入正确的手机号码");
       return;
     }
@@ -220,12 +215,19 @@ function handleConfirm() {
       return;
     }
 
-    if (/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(userArr.value.email)) {
+    if (!/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(userArr.value.email)) {
       proxy.$modal.showToast("请输入正确的邮箱地址");
       return;
     }
   }
 
+  if (modalTitle.value == "修改性别") {
+    if (!userArr.value.sex) {
+      proxy.$modal.showToast("请选择性别");
+      return;
+    }
+  }
+
   updateUserProfile(userArr.value).then((response) => {
     proxy.$tab.reLaunch("/pages/mine/index");
     useStore.getUser();
@@ -262,8 +264,6 @@ onNavigationBarButtonTap((e) => {
 });
 </script>
 
-<style lang="scss" scoped></style>
-
 <style lang="scss" scoped>
 :deep(.uni-page-head__title) {
   opacity: 1 !important;

+ 7 - 7
src/pages/mine/secure/index.vue

@@ -1,12 +1,12 @@
 <template>
   <view :data-theme="'theme-' + proxy.$settingStore.themeColor.name" class="secure-container">
     <view class="content-section">
-      <view class="menu-list margin-top-0 margin-lr-0">
+      <view class="menu-list margin-t-0 margin-lr-0">
         <view></view>
         <image style="width: 100%; height: 160px" src="@/static/images/index/banner2.jpg" mode="widthFix"></image>
       </view>
 
-      <view class="menu-list margin-top-0 margin-lr-0">
+      <view class="menu-list margin-t-0 margin-lr-0">
         <view class="list-cell list-cell-arrow" @click="handleUserModal('修改手机号')">
           <view class="menu-item-box">
             <view class="title">手机号码</view>
@@ -21,7 +21,7 @@
         </view>
       </view>
 
-      <view class="menu-list margin-top-0 margin-lr-0">
+      <view class="menu-list margin-t-0 margin-lr-0">
         <view class="list-cell list-cell-arrow" @click="proxy.$modal.showToast('模块建设中~')">
           <view class="menu-item-box">
             <view class="title">指纹登录</view>
@@ -39,7 +39,7 @@
         </view>
       </view>
 
-      <view class="menu-list margin-top-0 margin-lr-0">
+      <view class="menu-list margin-t-0 margin-lr-0">
         <view class="list-cell list-cell-arrow" @click="proxy.$modal.showToast('模块建设中~')">
           <view class="menu-item-box">
             <view class="title">常用设备管理</view>
@@ -51,20 +51,20 @@
 
   <u-modal :show="modalShow" :showConfirmButton="true" :showCancelButton="true" @cancel="modalShow = false" @confirm="handleConfirm">
     <view class="slot-content" style="width: 100%">
-      <view class="margin-bottom-15" style="color: #909399">{{ modalTitle }}</view>
+      <view class="margin-b-15" style="color: #909399">{{ modalTitle }}</view>
 
       <view v-if="modalTitle === '修改手机号'">
         <u--input v-model="userArr.phonenumber" :maxlength="11" :placeholder="modalTitle" border="bottom" clearable></u--input>
       </view>
 
       <view v-if="modalTitle === '修改密码'">
-        <u-input class="margin-bottom-15" v-model="oldPassword" placeholder="请输入旧密码" :password="oldPasswordBool" border="bottom">
+        <u-input class="margin-b-15" v-model="oldPassword" placeholder="请输入旧密码" :password="oldPasswordBool" border="bottom">
           <template #suffix>
             <text :class="!oldPasswordBool ? 'iconfont ucicon-eye' : 'iconfont ucicon-eye-close'" @click="oldPasswordBool = !oldPasswordBool"></text>
           </template>
         </u-input>
 
-        <u-input class="margin-bottom-15" v-model="oldPassword" placeholder="请输入新密码" :password="newPasswordBool" border="bottom">
+        <u-input class="margin-b-15" v-model="oldPassword" placeholder="请输入新密码" :password="newPasswordBool" border="bottom">
           <template #suffix>
             <text :class="!newPasswordBool ? 'iconfont ucicon-eye' : 'iconfont ucicon-eye-close'" @click="newPasswordBool = !newPasswordBool"></text>
           </template>

+ 2 - 2
src/pages/mine/setting/index.vue

@@ -1,6 +1,6 @@
 <template>
   <view class="setting-container" :style="{ height: `${windowHeight}px` }">
-    <view class="menu-list">
+    <view class="menu-list margin-lr-0">
       <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleToEditInfo()">
         <view class="menu-item-box">
           <view class="iconfont ucicon-user menu-icon"></view>
@@ -9,7 +9,7 @@
       </view>
     </view>
 
-    <view class="menu-list">
+    <view class="menu-list margin-t-0 margin-lr-0">
       <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleAbout()">
         <view class="menu-item-box">
           <view class="iconfont ucicon-aixin menu-icon"></view>

+ 9 - 0
src/static/icons/index/APP-sbcx.svg

@@ -0,0 +1,9 @@
+<svg 
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="117px" height="117px">
+<path fill-rule="evenodd"  fill="rgb(110, 173, 251)"
+ d="M27.972,0.371 L89.083,0.371 C104.425,0.371 116.861,12.808 116.861,28.149 L116.861,89.231 C116.861,104.572 104.425,117.009 89.083,117.009 L27.972,117.009 C12.631,117.009 0.194,104.572 0.194,89.231 L0.194,28.149 C0.194,12.808 12.631,0.371 27.972,0.371 Z"/>
+<path fill-rule="evenodd"  fill="rgb(255, 255, 255)"
+ d="M82.328,88.985 L35.664,88.985 C32.000,88.985 29.000,86.020 29.000,82.398 L29.000,38.860 C29.000,35.238 32.000,32.273 35.664,32.273 L42.328,32.273 C42.328,30.458 43.828,28.975 45.664,28.975 C47.500,28.975 49.000,30.458 49.000,32.273 L69.000,32.273 C69.000,30.458 70.500,28.975 72.336,28.975 C74.172,28.975 75.672,30.458 75.672,32.273 L82.336,32.273 C86.000,32.273 89.000,35.238 88.992,38.860 L88.992,82.398 C88.992,86.020 85.992,88.985 82.328,88.985 ZM57.828,79.232 C60.297,79.232 62.578,78.529 64.562,77.371 L67.828,80.599 C69.125,81.881 71.242,81.881 72.539,80.599 C73.836,79.325 73.836,77.224 72.547,75.935 L69.281,72.707 C70.445,70.745 71.164,68.490 71.164,66.050 C71.164,58.768 65.195,52.868 57.828,52.868 C50.461,52.868 44.492,58.768 44.492,66.050 C44.492,73.332 50.461,79.232 57.828,79.232 ZM79.000,38.860 L75.680,38.860 C75.680,40.675 74.180,42.157 72.344,42.157 C70.508,42.157 69.008,40.675 69.008,38.860 L49.008,38.860 C49.008,40.675 47.508,42.157 45.672,42.157 C43.836,42.157 42.336,40.675 42.336,38.860 L39.000,38.860 C37.164,38.860 35.664,40.343 35.664,42.157 C35.664,43.972 37.164,45.455 39.000,45.455 L79.000,45.455 C80.836,45.455 82.336,43.972 82.336,42.157 C82.336,40.343 80.836,38.860 79.000,38.860 ZM57.820,59.471 C61.501,59.471 64.484,62.420 64.484,66.058 C64.484,66.060 64.484,66.063 64.484,66.066 C64.482,69.703 61.497,72.651 57.817,72.649 C54.136,72.647 51.154,69.696 51.156,66.058 C51.156,62.420 54.140,59.471 57.820,59.471 Z"/>
+</svg>

二进制
src/static/images/404.png


二进制
src/static/images/wt/arrow.png


二进制
src/static/images/wt/arrow2.png


+ 2 - 1
src/static/scss/colorui.css

@@ -18,6 +18,7 @@ body {
   font-size: 28upx;
   color: #333333;
   font-family: Helvetica Neue, Helvetica, sans-serif;
+  overflow: hidden;
 }
 
 view,
@@ -3152,7 +3153,7 @@ scroll-view.cu-steps .cu-item {
 }
 
 .padding-0 {
-  padding: 0;
+  padding: 0 !important;
 }
 
 .padding-xs {

+ 89 - 11
src/static/scss/index.scss

@@ -4,19 +4,91 @@
 @import "./colorui.css";
 // public
 @import "./public.scss";
-// sidebar
-@import "./sidebar.scss";
 // iconfont
 @import "@/static/iconfont/iconfont.css";
+// sidebar
+@import "./sidebar.scss";
+
+
+.divider-default {
+    width: 0.5px;
+    background-color: #333;
+}
+
+.shadow-default {
+    box-shadow: 1px 1px 4px rgb(26 26 26 / 10%)
+}
+
+//padding-0
+.padding-t-0 {
+    padding-top: 0px;
+}
+
+.padding-b-0 {
+    padding-bottom: 0px
+}
+
+.padding-l-0 {
+    padding-left: 0px;
+}
+
+.padding-r-0 {
+    padding-right: 0px
+}
+
+.padding-lr-0 {
+    padding-left: 0px;
+    padding-right: 0px
+}
+
+.padding-tb-0 {
+    padding-top: 0px;
+    padding-bottom: 0px
+}
+
+//padding-10
+.padding-10 {
+    padding: 10px;
+}
 
+.padding-tb-10 {
+    padding-top: 10px;
+    padding-bottom: 10px
+}
 
-//padding
+//padding-15
 .padding-15 {
     padding: 15px;
 }
 
-//margin
-.margin-top-0 {
+.padding-t-15 {
+    padding-top: 15px;
+}
+
+.padding-r-15 {
+    padding-right: 15px
+}
+
+.padding-l-15 {
+    padding-left: 15px;
+}
+
+.padding-b-15 {
+    padding-bottom: 15px
+}
+
+.padding-lr-15 {
+    padding-left: 15px;
+    padding-right: 15px
+}
+
+.padding-tb-15 {
+    padding-top: 15px;
+    padding-bottom: 15px
+}
+
+//margin-0
+.margin-t-0 {
     margin-top: 0px;
 }
 
@@ -25,18 +97,24 @@
     margin-right: 0px
 }
 
-.margin-top-15 {
+//margin-10
+.margin-bottom-10 {
+    margin-bottom: 10px
+}
+
+//margin-15
+.margin-t-15 {
     margin-top: 15px
 }
 
-.margin-right-15 {
-    margin-right: 15px;
+.margin-l-15 {
+    margin-left: 15px;
 }
 
-.margin-bottom-10 {
-    margin-bottom: 10px
+.margin-r-15 {
+    margin-right: 15px;
 }
 
-.margin-bottom-15 {
+.margin-b-15 {
     margin-bottom: 15px
 }

+ 193 - 38
src/static/scss/public.scss

@@ -1,6 +1,4 @@
-/*
- * @日期选择器样式 开始
- */
+// 日期选择器样式 开始
 .el-calendar-table,
 tr,
 td,
@@ -33,25 +31,18 @@ th {
   background-color: #1989fa;
 }
 
-/*
- * @日期选择器样式 结束
- */
+//日期选择器样式 结束
 
 
-/*
- * @抽屉样式 开始
- */
+//抽屉样式 开始
 .el-drawer__header {
   margin-bottom: 0px !important;
 }
 
-/*
- * @抽屉样式 结束
- */
+//抽屉样式 结束
 
-/*
- * @图片上传样式 开始
- */
+
+//图片上传样式 开始
 .el-upload-list {
   display: flex !important;
 }
@@ -80,44 +71,33 @@ th {
   border-color: #409eff;
 }
 
-/*
- * @图片上传样式 结束
- */
+//图片上传样式 结束
+
 
-/*
- * @消息弹出框样式 开始
- */
+//消息弹出框样式 开始
 .el-message-box {
   margin-top: 70%;
 }
 
-/*
- * @消息弹出框样式 结束
- */
+//消息弹出框样式 结束
 
-/*
- * @uni-textarea 文本域样式 开始
- */
 
+//uni-textarea 文本域样式 开始
 uni-textarea {
   border: 0px solid #ededed;
   padding: 0;
 }
 
-/*
- * @uni-textarea 文本域样式 结束
- */
+//uni-textarea 文本域样式 结束
+
 
-/*
- * @全局input样式 开始
- */
+//全局input样式 开始
 uni-input {
   background-color: transparent;
 }
 
-/*
- * @全局input样式 结束
- */
+//全局input样式 结束
+
 
 //折叠面板样式 开始
 .u-cell__body {
@@ -153,6 +133,8 @@ uni-input {
 
     >.u-col {
       border-right: 1px #e5e5e5 solid;
+      white-space: normal;
+      word-break: break-all;
     }
 
     >.u-col:last-child {
@@ -194,6 +176,44 @@ uni-input {
   }
 }
 
+//自写table表格样式-纵向
+.tableType3 {
+  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;
+    }
+  }
+}
+
+
 //ios底部安全距离
 .ios-padding-bottom {
   /*兼容 IOS<11.2*/
@@ -203,7 +223,7 @@ uni-input {
 }
 
 //公共按钮绝对定位
-.app-position-fixed {
+.app-button-fixed {
   position: fixed;
   left: 0;
   right: 0;
@@ -212,6 +232,7 @@ uni-input {
   bottom: 5px;
   //#endif
   padding: 0px 15px 0px 15px;
+  z-index: 50;
 
   .app-buttom {
     width: 100%;
@@ -219,4 +240,138 @@ uni-input {
     font-size: 14px;
     margin-bottom: 15px
   }
-}
+
+  .app-flex {
+    display: flex;
+
+    .app-buttom {
+      width: 50%;
+      height: 40px;
+      font-size: 14px;
+    }
+  }
+}
+
+//公共扫码按钮绝对定位
+.app-scan-fixed {
+  position: fixed;
+  right: 0;
+  bottom: 50px
+}
+
+//公共scroll-view样式
+.scroll-height {
+  //#ifdef H5
+  height: calc(100vh - 44px);
+  //#endif
+
+  //#ifdef APP-PLUS
+  height: calc(100vh - constant(safe-area-inset-top));
+  height: calc(100vh - env(safe-area-inset-top));
+  //#endif
+}
+
+//公共消息通知悬浮窗
+.app-info-notice {
+  position: relative;
+  margin-top: -20px;
+  z-index: 50;
+  padding: 10px;
+
+  .info-title {
+    margin: auto auto auto 0;
+    color: #000000;
+  }
+
+  .info-time {
+    margin: auto 0 auto 0;
+    color: #909399
+  }
+
+  .info-content {
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis; //溢出用省略号显示
+
+    color: #909399
+  }
+}
+
+//公共分页功能样式
+.app-pagination {
+  padding-bottom: 10px;
+  padding-top: 10px;
+  padding-left: 10px;
+  padding-right: 10px;
+
+  //#ifdef APP-PLUS
+  padding-bottom: constant(safe-area-inset-bottom);
+  padding-bottom: env(safe-area-inset-bottom);
+  //#endif
+}
+
+// 自定义图片上传功能样式 开始
+.uploadView {
+  position: relative;
+  overflow: hidden;
+  width: calc(33% - 10px);
+  height: 110px;
+  margin: 0 15px 15px 0;
+  border: 1px solid #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+
+  .uploadUimage {
+    height: 100%;
+
+    >uni-view {
+      height: 100%;
+    }
+  }
+
+  .uploadViewClose {
+    position: absolute;
+    background-color: #409eff;
+    transform: rotate(45deg);
+    width: 40px;
+    height: 24px;
+    text-align: center;
+    right: -15px;
+    top: -6px;
+    cursor: pointer;
+
+    .u-icon {
+      font-size: 12px;
+      margin-top: 4px;
+      margin-left: 10px;
+      transform: rotate(-45deg);
+      color: #ffffff;
+    }
+  }
+
+  img {
+    width: 100%;
+  }
+}
+
+.uploadView:nth-child(3n) {
+  margin: 0 !important;
+}
+
+.upload-buttom {
+  display: flex;
+  font-size: 28px;
+  color: #909399;
+  border: 1px dashed #d9d9d9;
+  background-color: #fafafa;
+}
+
+.upload-buttom:hover {
+  border: 1px dashed #409eff;
+}
+
+:deep(.uploadDisabled) {
+  display: none !important;
+}
+
+// 自定义图片上传功能样式 结束

+ 21 - 15
src/static/scss/sidebar.scss

@@ -3,18 +3,28 @@
 //全局按钮样式修改
 uni-button[type='primary'] {
     @include font_color('fontColor');
-    @include background_color('backgroundColor');
+    @include background_color('themeColor');
     border-width: 0px !important;
 }
 
+.u-button--info {
+    @include font_color('themeColor');
+    @include border_color('themeColor');
+
+    .u-icon__icon--info {
+        @include font_color('themeColor')
+    }
+
+}
+
 .u-button--primary {
-    @include background_color('backgroundColor');
-    @include border_color('backgroundColor');
+    @include background_color('themeColor');
+    @include border_color('themeColor');
 }
 
 //全局背景样式修改
 .theme-back {
-    @include background_color('backgroundColor');
+    @include background_color('themeColor');
 }
 
 /*
@@ -44,14 +54,14 @@ uni-button[type='primary'] {
 
     .uni-section-header__decoration {
         height: 14px !important;
-        @include background_color('backgroundColor');
+        @include background_color('themeColor');
     }
 
     .uni-section-header__content {
         uni-text {
             font-size: 15px !important;
             // color: #149eff !important;
-            @include font_color('backgroundColor');
+            @include font_color('themeColor');
             font-weight: 600 !important;
         }
     }
@@ -73,16 +83,16 @@ uni-button[type='primary'] {
             .uni-calendar__weeks {
                 .uni-calendar__weeks-item {
                     .uni-calendar-item--isDay-text {
-                        @include font_color('backgroundColor');
+                        @include font_color('themeColor');
                     }
 
                     .uni-calendar-item--isDay {
-                        @include background_color('backgroundColor');
+                        @include background_color('themeColor');
                         @include font_color('fontColor');
                     }
 
                     .uni-calendar-item--checked {
-                        @include background_color('backgroundColor');
+                        @include background_color('themeColor');
                     }
                 }
             }
@@ -92,16 +102,12 @@ uni-button[type='primary'] {
 
 //日历样式 结束
 
-.deviceManage {
-    @include background_color('backgroundColor');
-    @include font_color('fontColor');
-}
 
 //自定义头部导航样式 开始
 .u-navbar {
     .u-navbar--fixed {
         .u-navbar__content {
-            @include background_color('backgroundColor');
+            @include background_color('themeColor');
         }
     }
 }
@@ -111,7 +117,7 @@ uni-button[type='primary'] {
 
 //iconfont样式 开始
 .menu-list .menu-item-box .menu-icon {
-    @include font_color('backgroundColor');
+    @include font_color('themeColor');
 }
 
 //iconfont样式 结束

+ 28 - 15
src/static/scss/themes.scss

@@ -1,60 +1,73 @@
 $themes: (
   theme-rf: ( //浅蓝-主题
-    fontColor:#fff,
-    backgroundColor:#149eff,
+    themeColor:#149eff,
 
+    fontColor:#fff,
   ),
   theme-blue: ( //海蓝-主题
+    themeColor:#0081ff,
+
     fontColor:#fff,
-    backgroundColor:#0081ff,
   ),
   theme-red: ( //嫣红-主题
+    themeColor:#e54d42,
+
     fontColor:#fff,
-    backgroundColor:#e54d42,
   ),
   theme-orange: ( //桔橙-主题
+    themeColor:#f37b1d,
+
     fontColor:#fff,
-    backgroundColor:#f37b1d,
   ),
   theme-yellow: ( //明黄-主题
+    themeColor:#fbbd08,
+
     fontColor:#fff,
-    backgroundColor:#fbbd08,
   ),
   theme-olive: ( //橄榄-主题
+    themeColor:#8dc63f,
+
     fontColor:#fff,
-    backgroundColor:#8dc63f,
   ),
   theme-green: ( //森绿-主题
+    themeColor:#39b54a,
+
     fontColor:#fff,
-    backgroundColor:#39b54a,
   ),
   theme-cyan: ( //天青-主题
+    themeColor:#1cbbb4,
+
     fontColor:#fff,
-    backgroundColor:#1cbbb4,
   ),
   theme-purple: ( //姹紫-主题
+    themeColor:#6739b6,
+
     fontColor:#fff,
-    backgroundColor:#6739b6,
   ),
   theme-mauve: ( //木槿-主题
+    themeColor:#9c26b0,
+
     fontColor:#fff,
-    backgroundColor:#9c26b0,
   ),
   theme-pink: ( //桃粉-主题
+    themeColor:#e03997,
+
     fontColor:#fff,
-    backgroundColor:#e03997,
   ),
   theme-brown: ( //棕褐-主题
+    themeColor:#a5673f,
+
     fontColor:#fff,
-    backgroundColor:#a5673f,
   ),
   theme-grey: ( //玄灰-主题
+    themeColor:#8799a3,
+
     fontColor:#fff,
-    backgroundColor:#8799a3,
   ),
   theme-black: ( //墨黑-主题
+    themeColor:#333333,
+
     fontColor:#fff,
-    backgroundColor:#333333,
   ),
 
 );

+ 0 - 1
src/store/modules/setting.js

@@ -14,7 +14,6 @@ const settingStore = defineStore("setting", {
         currentSize: "",//APP缓存
 
         themeColor: storage.get(constant.themeColor),//主题
-        tabbarValue: "/pages/index",//tabbar切换值
 
         barHeight: 0,//微信小程序顶部安全距离
         StatusBar: 0,//app顶部安全距离

+ 2 - 84
src/uni_modules/uview-plus/changelog.md

@@ -1,87 +1,5 @@
-## 3.1.28(2023-03-03)
-修复u-tabs标签缺失
-## 3.1.27(2023-02-28)
-修复日历组建对dayjs等依赖
-## 3.1.26(2023-02-04)
-修复安卓Multiple conflicting contents for sourcemap
-## 3.1.25(2023-02-04)
-修复dayjs引入问题导致小程序编译报错
-## 3.1.24(2023-01-17)
-修复dayjs报错does not provide an export named 'default'
-## 3.1.23(2023-01-15)
-修复 build:h5 cell 和 notice-bar 点击失效的问题 
-修复小程序端报 alert 和 upload 重复定义的bug
-感谢@dodu2014
-## 3.1.22(2023-01-14)
-增加transpileDependencies检测
-## 3.1.21(2023-01-14)
-修复路由配置合并问题
-## 3.1.20(2022-12-16)
-修复拼写
-## 3.1.19(2022-11-16)
-修复u-rate的v-model绑定值不生效#48
-修复u-grid-item click事件会执行两次 #40
-修复u--input组建Property "value" was accessed during render but is not defined on instance
-修复textarea组建confirmType报错
-## 3.1.18(2022-10-23)
-新增页面模板
-## 3.1.17(2022-10-23)
-演示项目增加国家化支持及多个页面模板
-## 3.1.16(2022-10-21)
-修复u-switch、u-picker等
-## 3.1.15(2022-10-13)
-修复:数据更新后,上传组件的视图没有更新
-复选框 超出不换行
-单选框 超出不换行
-## 3.1.14(2022-10-11)
-swipe-action-item组件增加emits定义
-## 3.1.13(2022-09-19)
-修复富文本解析
-## 3.1.12(2022-09-15)
-check-box组件清空数组时无法更新视图的问题
-## 3.1.11(2022-09-14)
-修复u-checkbox-group等
-## 3.1.10(2022-09-14)
-修复u-checkbox-box双向绑定
-## 3.1.9(2022-09-08)
-紧急修复缺失endif
-## 3.1.8(2022-09-07)
-修复u-checkbox-group双向绑定
-修复picker缺少emits定义
-## 3.1.7(2022-08-28)
-修复布局在微信小程序失效
-## 3.1.6(2022-08-25)
-修复微信小程序下tabbar样式问题
-## 3.1.5(2022-08-24)
-修复icon/text/tabs点击事件执行两次
-## 3.1.4(2022-08-20)
-修复button组件点击事件执行两次
-## 3.1.3(2022-08-11)
-修复小程序报错Generated an empty chunk,修复示例工程引入request参数配置无效。
-## 3.1.2(2022-08-09)
-修复示例项目对request的调用引入
-## 3.1.1(2022-08-07)
-折叠面板在小程序会报'setContentAnimate' of undefined
-## 3.1.0(2022-08-07)
-初步解决App端运行时提示props未定义且白屏问题
-## 3.0.17(2022-08-03)
-修复u-image组件报borderRadius警告
-## 3.0.16(2022-07-30)
-修复方法重复,属性重复等多个编译到APP时的warning
-## 3.0.15(2022-07-22)
-修复支付宝下不支持this.$slots导致cell的slot失效
-## 3.0.14(2022-07-22)
-修复u-grid-item与u-swipe-action-item在支付宝编译报错问题
-## 3.0.13(2022-07-22)
-修复u--input与u--textarea组件多个事件执行两次问题
-## 3.0.12(2022-07-20)
-修复u-action-sheet中v-for报错
-u-collapse-item中slot修复
-## 3.0.11(2022-07-19)
-修复微信小程序编译报错及其它修复
-## 3.0.10(2022-07-15)
-修复文档一批slot示例写法
-修复u-search缺失emits定义导致warning
+## 3.1.31(2023-05-15)
+本地累计修复一些问题提交
 ## 3.0.9(2022-07-14)
 修复u-search双向绑定
 ## 3.0.8(2022-07-12)

+ 1 - 1
src/uni_modules/uview-plus/components/u-back-top/u-back-top.vue

@@ -51,7 +51,7 @@
 	 */
 	export default {
 		name: 'u-back-top',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
+		mixins: [mpMixin, mixin,props],
 		computed: {
 			backTopStyle() {
 				// 动画组件样式

+ 2 - 2
src/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue

@@ -98,7 +98,7 @@
 			this.init()
 		},
 		// #ifdef VUE3
-		emits: ['close', 'cancel', 'confirm', 'change'],
+		emits: ['close', 'cancel', 'confirm', 'change', 'update:modelValue'],
 		// #endif
 		methods: {
 			init() {
@@ -188,7 +188,7 @@
 				// 发出change时间,value为当前选中的时间戳
 				this.$emit('change', {
 					value: selectValue,
-					// #ifndef MP-WEIXIN
+					// #ifndef MP-WEIXIN || MP-TOUTIAO
 					// 微信小程序不能传递this实例,会因为循环引用而报错
 					picker: this.$refs.picker,
 					// #endif

+ 2 - 2
src/uni_modules/uview-plus/components/u-picker/u-picker.vue

@@ -164,7 +164,7 @@ export default {
 			this.setIndexs(value)
 
 			this.$emit('change', {
-				// #ifndef MP-WEIXIN || MP-LARK
+				// #ifndef MP-WEIXIN || MP-LARK || MP-TOUTIAO
 				// 微信小程序不能传递this,会因为循环引用而报错
 				picker: this,
 				// #endif
@@ -214,7 +214,7 @@ export default {
 		},
 		// 设置整体各列的columns的值
 		setColumns(columns) {
-			// console.log(columns)
+			console.log(columns)
 			this.innerColumns = uni.$u.deepClone(columns)
 			// 如果在设置各列数据时,没有被设置默认的各列索引defaultIndex,那么用0去填充它,数组长度为列的数量
 			if (this.innerIndex.length === 0) {

+ 22 - 21
src/uni_modules/uview-plus/components/u-tabs/u-tabs.vue

@@ -49,29 +49,30 @@
 							class="u-tabs__wrapper__nav__line"
 							ref="u-tabs__wrapper__nav__line"
 							:style="[{
-									width: $u.addUnit(lineWidth),
-									height: $u.addUnit(lineHeight),
-									background: lineColor,
-									backgroundSize: lineBgSize,
-								}]"
+								width: $u.addUnit(lineWidth),
+								height: $u.addUnit(lineHeight),
+								background: lineColor,
+								backgroundSize: lineBgSize,
+							}]"
 						>
-							<!-- #endif -->
-							<!-- #ifndef APP-NVUE -->
-							<view
-								class="u-tabs__wrapper__nav__line"
-								ref="u-tabs__wrapper__nav__line"
-								:style="[{
-										width: $u.addUnit(lineWidth),
-										transform: `translate(${lineOffsetLeft}px)`,
-										transitionDuration: `${firstTime ? 0 : duration}ms`,
-										height: $u.addUnit(lineHeight),
-										background: lineColor,
-										backgroundSize: lineBgSize,
-									}]"
-							>
-								<!-- #endif -->
-							</view>
 						</view>
+						<!-- #endif -->
+						<!-- #ifndef APP-NVUE -->
+						<view
+							class="u-tabs__wrapper__nav__line"
+							ref="u-tabs__wrapper__nav__line"
+							:style="[{
+								width: $u.addUnit(lineWidth),
+								transform: `translate(${lineOffsetLeft}px)`,
+								transitionDuration: `${firstTime ? 0 : duration}ms`,
+								height: $u.addUnit(lineHeight),
+								background: lineColor,
+								backgroundSize: lineBgSize,
+							}]"
+						>
+						</view>
+						<!-- #endif -->
+					</view>
 				</scroll-view>
 			</view>
 			<slot name="right" />

+ 32 - 0
src/uni_modules/uview-plus/components/u-timeline/props.js

@@ -0,0 +1,32 @@
+import defprops from '../../libs/config/props';
+export default {
+    props: {
+        // 是否显示
+        show: {
+            type: Boolean,
+            default: defprops.drawer.show
+        },
+        // 点击遮罩是否关闭
+        mask: {
+            type: Boolean,
+            default: defprops.drawer.mask
+        },
+        // 抽屉宽度
+        width: {
+            type: [String, Number],
+            default: defprops.drawer.width 
+        },
+        // 抽屉位置
+        placement: {
+            type: String,
+            default: defprops.drawer.placement
+        },
+        // 权重
+        zIndex: {
+            type: Number,
+            default: defprops.drawer.zIndex
+        },
+
+
+      }
+    }

+ 129 - 0
src/uni_modules/uview-plus/components/u-timeline/u-drawer.vue

@@ -0,0 +1,129 @@
+
+<template>
+  <view  v-show="visible">
+    <view
+      class="u-drawer__overlay"
+      :style="{ zIndex: zIndex }"
+      @click.stop="handleOverlayClick"
+    >
+    </view>
+    <view
+      class="u-drawer"
+      :class="{
+        'u-drawer--left': placement === 'left',
+        'u-drawer--right': placement === 'right'
+      }"
+      :style="{ zIndex: zIndex + 1, width: width, [placement]: `-${translate}` }"
+      @transitionend="handleTransitionEnd"
+    >
+      <view class="u-drawer__content">
+        <slot></slot>
+      </view>
+    </view>
+  </view>
+</template>
+<script>
+import props from './props.js'
+export default {
+  name: 'u-drawer',
+  mixins: [props],
+  // props: {
+  //   // 
+  //   visible: {
+  //     type: Boolean,
+  //     default: false,
+  //   },
+  //   mask: {
+  //     type: Boolean,
+  //     default: true,
+  //   },
+  //   width: {
+  //     type: Number,
+  //     default: 300,
+  //   },
+  //   placement: {
+  //     type: String,
+  //     default: 'left',
+  //     validator: (value) => ['left', 'right'].includes(value),
+  //   },
+  //   // transition: {
+  //   //   type: String,
+  //   //   default: 'u-slide-down',
+  //   // },
+  //   zIndex: {
+  //     type: Number,
+  //     default: 100,
+  //   },
+  // },
+  data() {
+    return {
+      translate: 0,
+    };
+  },
+  watch: {
+    show: {
+      immediate: true,
+      handler(value) {
+        if (value) {
+          this.openDrawer();
+        } else {
+          this.closeDrawer();
+        }
+      },
+    },
+  },
+  methods: {
+    openDrawer() {
+      this.$emit('open');
+      this.translate = this.width;
+    },
+    closeDrawer() {
+      this.$emit('close');
+      this.translate = 0;
+    },
+    handleOverlayClick() {
+      // console.log('this.mask',this.mask)
+      if (this.mask) {
+        this.$emit('update:visible', false);
+      }
+    },
+    handleTransitionEnd() {
+      if (!this.visible) {
+        this.translate = 0;
+      }
+    },
+  },
+};
+</script>
+<style scoped>
+.u-drawer {
+  position: fixed;
+  top: 0;
+  bottom: 0;
+  background-color: #fff;
+  box-shadow: 2px 0 4px rgba(0, 0, 0, 0.1);
+  overflow: hidden;
+}
+
+.u-drawer--left {
+  left: 0;
+}
+
+.u-drawer--right {
+  right: 0;
+}
+
+.u-drawer__content {
+  height: 100%;
+  overflow-y: auto;
+}
+
+.u-drawer__overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  background-color: rgba(0, 0, 0, 0.5);
+}
+</style>

+ 3 - 1
src/uni_modules/uview-plus/libs/config/props.js

@@ -93,6 +93,7 @@ import Toolbar from './props/toolbar'
 import Tooltip from './props/tooltip'
 import Transition from './props/transition'
 import Upload from './props/upload'
+import drawer from './props/drawer'
 
 const {
     color
@@ -186,5 +187,6 @@ export default {
     ...Toolbar,
     ...Tooltip,
     ...Transition,
-    ...Upload
+    ...Upload,
+    ...drawer,
 }

+ 17 - 0
src/uni_modules/uview-plus/libs/config/props/drawer.js

@@ -0,0 +1,17 @@
+export default {
+  // 抽屉组件
+  drawer:{
+    // 是否显示 
+    show:false,
+    // 点击遮罩是否关闭
+    mask:true,
+    // // 是否显示关闭按钮
+    // closeBtn:true,
+    // 抽屉宽度
+    width:'40%',
+    // 抽屉位置
+    placement:'left',
+    // 权重
+    zIndex: 100,
+  }
+}

+ 1 - 1
src/uni_modules/uview-plus/package.json

@@ -2,7 +2,7 @@
 	"id": "uview-plus",
 	"name": "uview-plus",
 	"displayName": "uview-plus3.0重磅发布,全面的Vue3移动组件库。",
-	"version": "3.1.28",
+	"version": "3.1.31",
 	"description": "uview-plus已兼容vue3,全面的组件和便捷的工具会让您信手拈来,如鱼得水",
 	"keywords": [
         "uview",