瀏覽代碼

根据规范优化代码

fanghuisheng 11 月之前
父節點
當前提交
91ac3c7456

+ 0 - 3
src/App.vue

@@ -23,7 +23,6 @@ function initApp() {
   //#ifdef APP-PLUS
   plus.screen.lockOrientation("portrait-primary"); //设置不可横屏
   proxy.$settingStore.pushListener(); //开启消息推送监听
-  setInterval(proxy.$settingStore.baseAppInfo(), 1000 * 60 * 5); //动态获取用户设备信息
   //#endif
 }
 
@@ -121,8 +120,6 @@ onLaunch(() => {
   initApp();
 });
 
-onLoad(() => {});
-
 onReady(() => {});
 
 onShow(() => {

+ 15 - 2
src/components/oa-scroll/index.vue

@@ -1,7 +1,15 @@
 <template>
   <scroll-view
     :class="customClass"
-    :style="customStyle"
+    :style="{
+      //#ifdef APP-PLUS || MP-WEIXIN
+      height: !isSticky ? 'calc(100vh - 0px)' : 'calc(100vh - 44px)',
+      //#endif
+      //#ifdef H5
+      height: !isSticky ? 'calc(100vh - 44px)' : 'calc(100vh - 88px)',
+      //#endif
+      ...customStyle,
+    }"
     :scroll-y="true"
     scroll-with-animation
     :refresher-threshold="refresherThreshold"
@@ -73,7 +81,12 @@ const props = defineProps({
   //设置外部style
   customStyle: {
     type: [String, Object],
-    default: "",
+    default: {},
+  },
+  //是否开启吸顶高度自适应
+  isSticky: {
+    type: Boolean,
+    default: false,
   },
   //是否开启上拉加载
   refresherLoad: {

+ 10 - 5
src/components/oa-transForm/index.vue

@@ -16,18 +16,23 @@
   </view>
 </template>
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onReady, onLoad, onShow, onNavigationBarButtonTap, onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app";
 import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance, watchEffect, toRefs } from "vue";
-
+/*----------------------------------接口引入-----------------------------------*/
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
-
-const data = reactive({
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
   coverTransform: "translateY(0px)",
   coverTransition: "0s",
   moving: false,
 });
 
-const { coverTransform, coverTransition, moving } = toRefs(data);
+const { coverTransform, coverTransition, moving } = toRefs(state);
 
 let startY = 0,
   moveY = 0,
@@ -89,7 +94,7 @@ onLoad((option) => {});
     left: 0;
     top: -16px;
     width: 100%;
-    height: 36upx;
+    height: 18px;
   }
 
   .mine-actions {

+ 1 - 1
src/config.js

@@ -27,7 +27,7 @@ export default {
     copyright: "Copyright © 2021- 2025 Usky. All Rights Reserved. 永天股份 版权所有",
     // 备案编号
     filingInfo: {
-      code: "ICP备案号:沪ICP备00000000号-10A",
+      code: "ICP备案号:沪ICP备09005762号-15A",
       href: "https://beian.miit.gov.cn/#/Integrated/index"
     },
     // 政策协议

+ 2 - 2
src/manifest.json

@@ -29,9 +29,9 @@
             "Geolocation" : {},
             "Maps" : {},
             "Barcode" : {},
-            "Camera" : {},
             "Fingerprint" : {},
-            "Push" : {}
+            "Push" : {},
+            "Camera" : {}
         },
         /* 应用发布信息 */
         "distribute" : {

+ 4 - 4
src/pages/business/analyse/index.vue

@@ -65,16 +65,16 @@ export default {
 .analyse-wrapper {
   .cu-list.menu-avatar .cu-item {
     border-radius: 5px;
-    padding: 30rpx 0;
+    padding: 15px 0;
     box-shadow: 1px 1px 4px rgb(26 26 26 / 10%);
     .cu-avatar {
       background-color: rgba(0, 0, 0, 0);
-      left: 26rpx;
+      left: 13px;
     }
 
     .content {
-      left: 130rpx;
-      font-size: 32rpx;
+      left: 65px;
+      font-size: 16px;
     }
   }
 }

+ 2 - 1
src/pages/business/common/fastMail/index.vue

@@ -5,6 +5,7 @@
 
   <oa-scroll
     customClass="fastMail-container scroll-height"
+    :isSticky="true"
     :pageSize="pageSize"
     :total="total"
     :refresherLoad="true"
@@ -194,7 +195,7 @@ onNavigationBarButtonTap((e) => {
     }
 
     &-row_wrap {
-      font-size: 13px;
+      font-size: 14px;
       flex-flow: row wrap;
 
       &-view {

+ 0 - 94
src/pages/business/common/videoMonitor/index.vue

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

+ 35 - 89
src/pages/business/common/videoMonitor/videoDetail.vue

@@ -1,43 +1,49 @@
 <template>
-  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
-    <view class="alarmDetails-container">
+  <oa-scroll
+    customClass="videoDetail-container scroll-height"
+    :refresherLoad="false"
+    :refresherEnabled="false"
+    :refresherEnabledTitle="false"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    :data-theme="'theme-' + proxy.$settingStore.themeColor.name"
+  >
+    <template #default>
       <view class="bg-white p15 mb15">
-        <uni-section class="block mb10" :title="'设备名称:' + deviceName" type="line"></uni-section>
-        <!-- <view class="mb15">{{ deviceName}}</view> -->
+        <uni-section class="block mb10" :title="'设备名称:' + state.deviceName" type="line"></uni-section>
         <view class="tableType3 p0">
-          <video id="myVideo" :src="videoUrl" style="width: 100%" loop="loop" autoplay="autoplay"></video>
+          <video id="myVideo" :src="state.videoUrl" style="width: 100%" loop="loop" autoplay="autoplay"></video>
         </view>
       </view>
-    </view>
-  </scroll-view>
+    </template>
+  </oa-scroll>
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
+/*----------------------------------接口引入-----------------------------------*/
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
 import { useStores, commonStores } from "@/store/modules/index";
-
-import { page, fill } from "@/api/business/fireIot/repairManage.js";
-
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
 const useStore = useStores();
 const commonStore = commonStores();
-
-const dataArray = ref({});
-const dataList = ref([
-  { title: "报修日期", value: "" },
-  { title: "项目名称", value: "" },
-  { title: "报修人", value: "" },
-  { title: "报修电话", value: "" },
-  { title: "问题描述", value: "" },
-  { title: "报修地址", value: "" },
-]);
-
-const deviceName = ref("");
-const pageSize = ref(20);
-const current = ref(1);
-const total = ref(0);
-const videoUrl = ref("http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8");
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
+  dataArray: {},
+  dataList: [],
+  deviceName: "",
+  pageSize: 20,
+  current: 1,
+  total: "",
+
+  videoUrl: "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8",
+});
 
 /**
  * @页面初始化
@@ -50,67 +56,7 @@ function init() {
  * @列表查询
  * @api接口查询
  */
-function selectListApi() {
-  page({
-    repairCode: repairCode.value,
-    current: current.value,
-    size: pageSize.value,
-  }).then((requset) => {
-    if (requset.status === "SUCCESS") {
-      dataArray.value = requset.data.records[0];
-      dataArray.value.handleName = requset.data.records[0].handleName ? requset.data.records[0].handleName : useStore.nickName ? useStore.nickName : "";
-      dataArray.value.handleContent = requset.data.records[0].handleContent ? requset.data.records[0].handleContent : "";
-
-      dataList.value[0].value = requset.data.records[0].createTime ? requset.data.records[0].createTime.replace("T", " ") : requset.data[0].createTime;
-      dataList.value[1].value = requset.data.records[0].projectName;
-      dataList.value[2].value = requset.data.records[0].reflectName;
-      dataList.value[3].value = requset.data.records[0].reflectPhone;
-      dataList.value[4].value = requset.data.records[0].repairContent;
-      dataList.value[5].value = requset.data.records[0].projectAddress;
-
-      if (requset.data.records[0].repairStatus === 2) {
-        dataList.value.push(
-          {
-            title: "评分",
-            value: 0,
-          },
-          {
-            title: "评分内容",
-            value: "",
-          }
-        );
-        dataList.value[6].value = requset.data.records[0].score ? requset.data.records[0].score : 0;
-        dataList.value[7].value = requset.data.records[0].appraiseContent;
-      }
-
-      total.value = requset.data.total;
-    }
-  });
-}
-
-/**
- * @提交
- */
-function handleSubmit(type) {
-  if (type == 1) {
-    proxy.$tab.navigateBack(1);
-  } else {
-    if (!dataArray.value.handleName) {
-      proxy.$modal.msg("请输入报修人");
-      return;
-    }
-
-    fill({
-      id: dataArray.value.id,
-      handleName: dataArray.value.handleName,
-      handleContent: dataArray.value.handleContent,
-    }).then((res) => {
-      if (requset.status === "SUCCESS") {
-        proxy.$tab.navigateTo(`/pages/common/success/index?codeName=提交成功`);
-      }
-    });
-  }
-}
+function selectListApi() {}
 
 onReady(() => {});
 
@@ -121,10 +67,10 @@ onShow(() => {
 
 onLoad((options) => {
   if ("deviceName" in options) {
-    deviceName.value = options.deviceName;
+    state.deviceName = options.deviceName;
   }
 
-  // init();
+  init();
 });
 </script>
 

+ 24 - 50
src/pages/business/common/videoMonitor/videoList.vue

@@ -1,12 +1,8 @@
 <template>
-  <!-- <u-sticky class="shadow-default" bgColor="#fff" style="top: 0">
-    <u-tabs :list="tabsList" :current="tabsCurrent" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }" :scrollable="false"></u-tabs>
-  </u-sticky> -->
-
   <oa-scroll
     customClass="repairManage-container scroll-height"
-    :pageSize="pageSize"
-    :total="total"
+    :pageSize="state.pageSize"
+    :total="state.total"
     :refresherLoad="true"
     :refresherEnabled="true"
     :refresherDefaultStyle="'none'"
@@ -19,7 +15,7 @@
   >
     <template #default>
       <view class="menu-list m0">
-        <view class="list-cell list-cell-arrow" style="line-height: 25px" v-for="(base, index) in dataList" :key="index" @click="handleToDetails(base)">
+        <view class="list-cell list-cell-arrow" style="line-height: 25px" v-for="(base, index) in state.dataList" :key="index" @click="handleToDetails(base)">
           <view class="menu-item">
             <image v-if="base.deviceStatus == 1" class="image-bg" style="width: 80rpx; height: 80rpx; margin: auto 10px auto 0" src="@/static/images/videoMonitor/video-icon-on.png"></image>
             <image v-if="base.deviceStatus == 2" class="image-bg" style="width: 80rpx; height: 80rpx; margin: auto 10px auto 0" src="@/static/images/videoMonitor/video-icon-off.png"></image>
@@ -30,19 +26,7 @@
               <view class="" v-if="base.deviceStatus == 1" style="color: #16bf00; margin-right: 10px"> 在线 </view>
               <view class="" v-if="base.deviceStatus == 2" style="color: #333; margin-right: 10px"> 离线 </view>
             </view>
-
-            <view> </view>
-          </view>
-
-          <!-- <view class="content-area-top menu-item">
-       
-            <view class="content-area-top-status" v-if="base.deviceStatus == 1" style="background-color: #23dedc"> 在线 </view>
-            <view class="content-area-top-status" v-if="base.deviceStatus == 2" style="background-color: #16bf00"> 离线 </view>
           </view>
-          <view class="content-area-row_wrap menu-item">
-           
-            <view class="content-area-row_wrap-view"> {{ base.reflectPhone }} </view>
-          </view> -->
         </view>
       </view>
     </template>
@@ -50,26 +34,25 @@
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
-import { useStores, commonStores } from "@/store/modules/index";
-
+/*----------------------------------接口引入-----------------------------------*/
 import { pageQuery } from "@/api/business/videoMonitor.js";
-
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
+import { useStores, commonStores } from "@/store/modules/index";
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
 const commonStore = commonStores();
-
-const tabsList = ref([
-  { name: "全部", value: "" },
-  { name: "受理中", value: 1 },
-  { name: "处理完成", value: 2 },
-]);
-const tabsCurrent = ref(1);
-
-const dataList = ref([]);
-const pageSize = ref(20);
-const current = ref(1);
-const total = ref(0);
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
+  dataList: [],
+  pageSize: 20,
+  current: 1,
+  total: 0,
+});
 
 /**
  * @页面初始化
@@ -84,13 +67,12 @@ function init() {
  */
 function selectListApi() {
   pageQuery({
-    // deviceStatus: tabsList.value[tabsCurrent.value].value,
-    current: current.value,
-    size: pageSize.value,
+    current: state.current,
+    size: state.pageSize,
   }).then((requset) => {
     if (requset.status === "SUCCESS") {
-      dataList.value = requset.data.records;
-      total.value = requset.data.total;
+      state.dataList = requset.data.records;
+      state.total = requset.data.total;
     }
   });
 }
@@ -99,7 +81,7 @@ function selectListApi() {
  * @跳转详情事件
  */
 function handleToDetails(e) {
-  proxy.$tab.navigateTo(`/pages/business/videoMonitor/videoDetail?deviceName=${e.deviceName}`);
+  proxy.$tab.navigateTo(`/pages/business/common/videoMonitor/videoDetail?deviceName=${e.deviceName}`);
   if (e.deviceStatus == 1) {
   }
 }
@@ -108,7 +90,7 @@ function handleToDetails(e) {
  * @scrollView加载数据
  */
 function load() {
-  pageSize.value += 10;
+  state.pageSize += 10;
   init();
 }
 
@@ -116,15 +98,7 @@ function load() {
  * @scrollView刷新数据
  */
 function refresh() {
-  pageSize.value = 20;
-  init();
-}
-
-/**
- * @tabs点击事件
- */
-function tabsClick(e) {
-  tabsCurrent.value = e.index;
+  state.pageSize = 20;
   init();
 }
 

+ 41 - 34
src/pages/business/fireIot/alarmManage/alarmDetailsList/index.vue

@@ -1,12 +1,13 @@
 <template>
   <u-sticky class="shadow-default" bgColor="#fff" style="top: 0">
-    <u-tabs :list="tabsList" :current="tabsCurrent" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }" :scrollable="false"></u-tabs>
+    <u-tabs :list="state.tabsList" :current="state.tabsCurrent" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }" :scrollable="false"></u-tabs>
   </u-sticky>
 
   <oa-scroll
     customClass="scroll-height"
-    :pageSize="pageSize"
-    :total="total"
+    :pageSize="state.pageSize"
+    :total="state.total"
+    :isSticky="true"
     :refresherLoad="true"
     :refresherEnabled="true"
     :refresherDefaultStyle="'none'"
@@ -20,7 +21,7 @@
     <template #default>
       <view class="alarmDetailsList-container">
         <view class="menu-list m0">
-          <view class="list-cell list-cell-arrow" v-for="(base, index) in dataList" :key="index" @click="handleToDetails(base)">
+          <view class="list-cell list-cell-arrow" v-for="(base, index) in state.dataList" :key="index" @click="handleToDetails(base)">
             <view class="menu-item" style="font-size: 13px; flex-flow: row wrap">
               <view class="mb5" style="min-width: 80%; color: #909399"> {{ base.alarmTime }}</view>
               <view class="mb5 pr15" style="min-width: 20%; color: #909399; text-align: right"> {{ base.alarmGrade }}级</view>
@@ -38,28 +39,34 @@
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
-import { useStores, commonStores } from "@/store/modules/index";
-
+/*----------------------------------接口引入-----------------------------------*/
 import { baseAlarmList } from "@/api/business/fireIot/alarmManage.js";
-
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
+import { useStores, commonStores } from "@/store/modules/index";
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
 const commonStore = commonStores();
-
-const tabsList = ref([
-  { name: "全部", value: "" },
-  { name: "未处理", value: 0 },
-  { name: "已处理", value: 1 },
-]);
-const tabsCurrent = ref(0);
-
-const dataList = ref([]);
-const productCode = ref("");
-const productName = ref("");
-const pageSize = ref(20);
-const current = ref(1);
-const total = ref(0);
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
+  tabsList: [
+    { name: "全部", value: "" },
+    { name: "未处理", value: 0 },
+    { name: "已处理", value: 1 },
+  ],
+  tabsCurrent: 0,
+
+  dataList: [],
+  productCode: "",
+  productName: "",
+  pageSize: 20,
+  current: 1,
+  total: 0,
+});
 
 /**
  * @页面初始化
@@ -74,17 +81,17 @@ function init() {
  */
 function selectListApi() {
   baseAlarmList({
-    productCode: productCode.value,
-    handleStatus: tabsList.value[tabsCurrent.value].value,
-    current: current.value,
-    size: pageSize.value,
+    productCode: state.productCode,
+    handleStatus: state.tabsList[state.tabsCurrent].value,
+    current: state.current,
+    size: state.pageSize,
   }).then((requset) => {
     if (requset.status === "SUCCESS") {
-      dataList.value = requset.data.records;
-      total.value = requset.data.total;
+      state.dataList = requset.data.records;
+      state.total = requset.data.total;
 
       uni.setNavigationBarTitle({
-        title: `${productName.value}(${total.value})`,
+        title: `${state.productName}(${state.total})`,
       });
     }
   });
@@ -94,14 +101,14 @@ function selectListApi() {
  * @跳转详情事件
  */
 function handleToDetails(e) {
-  proxy.$tab.navigateTo(`/pages/business/fireIot/alarmManage/alarmDetails/index?deviceName=${e.deviceName}&alarmTime=${e.alarmTime}`);
+  proxy.$tab.navigateTo(`/pages/business/fireIot/alarmManage/alarmDetails/index?deviceId=${e.deviceId}&alarmTime=${e.alarmTime}`);
 }
 
 /**
  * @scrollView加载数据
  */
 function load() {
-  pageSize.value += 10;
+  state.pageSize += 10;
   init();
 }
 
@@ -109,7 +116,7 @@ function load() {
  * @scrollView刷新数据
  */
 function refresh() {
-  pageSize.value = 20;
+  state.pageSize = 20;
   init();
 }
 
@@ -117,7 +124,7 @@ function refresh() {
  * @tabs点击事件
  */
 function tabsClick(e) {
-  tabsCurrent.value = e.index;
+  state.tabsCurrent = e.index;
   init();
 }
 
@@ -130,10 +137,10 @@ onShow(() => {
 
 onLoad((options) => {
   if ("productName" in options) {
-    productName.value = options.productName;
+    state.productName = options.productName;
   }
   if ("productCode" in options) {
-    productCode.value = options.productCode;
+    state.productCode = options.productCode;
     init();
   }
 });

+ 176 - 158
src/pages/business/mhxf/needMatter/index.vue

@@ -8,177 +8,174 @@
       <template #content>
         <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'
-                            : '',
-                      }"
-                    >
-                      {{
+        <u-collapse v-else>
+          <u-collapse-item v-for="(cl, index) in classifyData" :key="index">
+            <template #title>
+              <view class="collapse-header-area">
+                <u--image class="collapse-header-area-image" src="/static/images/needMatter/icon1.png" width="13px" height="14px"></u--image>
+
+                <view class="collapse-header-area-lable">
+                  <view>待办通知</view>
+                  <view>建议完成限期:</view>
+                  <view style="color: #666666">{{ cl.reformId }}</view>
+                </view>
+                <view class="collapse-header-area-value">
+                  <view
+                    :style="{
+                      color:
                         cl.reformStatus == 1
-                          ? "已接收"
+                          ? '#0887F8'
                           : cl.reformStatus == 2
-                          ? "进行中"
+                          ? '#23DEDC'
                           : cl.reformStatus == 3
-                          ? "待办完成"
+                          ? '#16BF00'
                           : cl.reformStatus == 4
-                          ? "审核不通过"
+                          ? '#F94343'
                           : cl.reformStatus == 5
-                          ? "审核通过"
-                          : ""
-                      }}
-                    </view>
-                    <view style="text-align: left">{{ cl.limitTime }}</view>
-                    <view style="font-size: 14px; color: #666666">{{ cl.sendTime }}</view>
+                          ? '#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="color: #666666">{{ cl.sendTime }}</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>
+              </view>
+            </template>
+            <view class="collapse-center-area">
+              <view class="tableType1 mb10">
+                <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 class="collapse-center-area-item" 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 type="primary" text="去整改" shape="circle" @click="handleSubmit(cl, '去整改')" customStyle="width: 60px; height: 23px"></u-button>
-                  </view>
+                <view class="collapse-center-area-item-child">
+                  <u-button type="primary" text="去整改" shape="circle" @click="handleSubmit(cl, '去整改')" customStyle="width: 60px; height: 23px"></u-button>
                 </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 class="collapse-center-area-item" 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 type="primary" text="填报" shape="circle" @click="handleSubmit(cl, '填报')" customStyle="width: 60px; height: 23px"></u-button>
-                  </view>
+                <view class="collapse-center-area-item-child">
+                  <u-button type="primary" text="填报" shape="circle" @click="handleSubmit(cl, '填报')" customStyle="width: 60px; height: 23px"></u-button>
                 </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 class="collapse-center-area-item" 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 class="collapse-center-area-item" 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 class="collapse-center-area-item-child">
+                  <view>备注:{{ cl.reviewRemark ? cl.reviewRemark : "无" }}</view>
+                </view>
 
-                  <view style="font-size: 14px; line-height: 20px; margin-top: 10px">
-                    <u-button type="primary" text="去整改" shape="circle" @click="handleSubmit(cl, '去整改')" customStyle="width: 60px; height: 23px"></u-button>
-                  </view>
+                <view class="collapse-center-area-item-child">
+                  <u-button type="primary" text="去整改" shape="circle" @click="handleSubmit(cl, '去整改')" customStyle="width: 60px; height: 23px"></u-button>
                 </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 class="collapse-center-area-item" 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 class="collapse-center-area-item-child">
+                  <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>
-            </u-collapse-item>
-          </u-collapse>
-
-          <view>
-            <u-modal
-              :show="state.modalShow"
-              title="填报(火灾报警系统)"
-              :showCancelButton="true"
-              :showConfirmButton="true"
-              :closeOnClickOverlay="true"
-              @close="state.modalShow = false"
-              @cancel="state.modalShow = false"
-              @confirm="handleConfirm"
-            >
-              <view style="width: 100%">
-                <uni-section class="block mb20" title="图片上传:" type="line">
-                  <u-upload :fileList="state.fileList" name="6" @afterRead="afterRead" multiple :maxCount="5" width="80" height="80"> </u-upload>
-                </uni-section>
-                <uni-section class="block mb20" title="备注:" type="line">
-                  <u-textarea v-model="state.textValue" placeholder="请输入内容"></u-textarea>
-                </uni-section>
-              </view>
-            </u-modal>
-          </view>
+            </view>
+          </u-collapse-item>
+        </u-collapse>
+
+        <view>
+          <u-modal
+            :show="state.modalShow"
+            title="填报(火灾报警系统)"
+            :showCancelButton="true"
+            :showConfirmButton="true"
+            :closeOnClickOverlay="true"
+            @close="state.modalShow = false"
+            @cancel="state.modalShow = false"
+            @confirm="handleConfirm"
+          >
+            <view style="width: 100%">
+              <uni-section class="block mb20" title="图片上传:" type="line">
+                <u-upload :fileList="state.fileList" name="6" @afterRead="afterRead" multiple :maxCount="5" width="80" height="80"> </u-upload>
+              </uni-section>
+              <uni-section class="block mb20" title="备注:" type="line">
+                <u-textarea v-model="state.textValue" placeholder="请输入内容"></u-textarea>
+              </uni-section>
+            </view>
+          </u-modal>
         </view>
       </template>
     </oa-touch>
@@ -409,21 +406,42 @@ onMounted(() => {});
 </script>
 
 <style lang="scss">
-.uni-swipe {
-  overflow: visible;
-}
-.is-selected {
-  color: #1989fa;
-}
-
 .needMatter {
   height: calc(100vh - 88px);
-  .content {
-    // padding: 10px;
-    .u-collapse {
-      .u-collapse-item {
-        background: #ffffff;
-        margin-bottom: 10px;
+
+  .u-collapse {
+    .u-collapse-item {
+      background: #ffffff;
+      margin-bottom: 10px;
+
+      .collapse-header-area {
+        display: flex;
+        line-height: 25px;
+        font-size: 14px;
+
+        &-image {
+          padding-top: 2px;
+        }
+
+        &-lable {
+          padding: 0 10px;
+          white-space: nowrap;
+        }
+
+        &-value {
+          width: 100%;
+          text-align: center;
+        }
+      }
+
+      .collapse-center-area {
+        &-item {
+          &-child {
+            font-size: 14px;
+            line-height: 20px;
+            margin-top: 10px;
+          }
+        }
       }
     }
   }

+ 39 - 30
src/pages/business/zhxf/fireInspect/inspectDetailsList/index.vue

@@ -1,12 +1,13 @@
 <template>
   <u-sticky class="shadow-default" bgColor="#fff" style="top: 0">
-    <u-tabs :list="tabsList" :current="tabsCurrent" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }" :scrollable="false"></u-tabs>
+    <u-tabs :list="state.tabsList" :current="state.tabsCurrent" @click="tabsClick" lineColor="#333" :activeStyle="{ color: '#333' }" :inactiveStyle="{ color: '#909399' }" :scrollable="false"></u-tabs>
   </u-sticky>
 
   <oa-scroll
     customClass="scroll-height"
-    :pageSize="pageSize"
-    :total="total"
+    :pageSize="state.pageSize"
+    :total="state.total"
+    :isSticky="true"
     :refresherLoad="true"
     :refresherEnabled="true"
     :refresherDefaultStyle="'none'"
@@ -19,7 +20,7 @@
   >
     <template #default>
       <view class="menu-list m0">
-        <view class="list-cell list-cell-arrow" style="line-height: 25px" v-for="(base, index) in dataList" :key="index" @click="handleToDetails(base)">
+        <view class="list-cell list-cell-arrow" style="line-height: 25px" v-for="(base, index) in state.dataList" :key="index" @click="handleToDetails(base)">
           <view class="menu-item">
             <image
               class="image-bg"
@@ -44,24 +45,32 @@
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
+/*----------------------------------接口引入-----------------------------------*/
 import { eleInspectList, persInspectList } from "@/api/business/zhxf/fireInspect/index.js";
-
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
+  tabsList: [
+    { name: "全部", value: "" },
+    { name: "未处理", value: 0 },
+    { name: "已处理", value: 1 },
+  ],
+  tabsCurrent: 0,
 
-const tabsList = ref([
-  { name: "全部", value: "" },
-  { name: "未处理", value: 0 },
-  { name: "已处理", value: 1 },
-]);
-const tabsCurrent = ref(0);
-const dataList = ref([]);
-const productCode = ref("");
-const productName = ref("");
-const pageSize = ref(20);
-const current = ref(1);
-const total = ref(0);
+  dataList: [],
+  productCode: "",
+  productName: "",
+  pageSize: 20,
+  current: 1,
+  total: 0,
+});
 
 /**
  * @页面初始化
@@ -75,7 +84,7 @@ function init() {
  * @api接口查询
  */
 function selectListApi() {
-  if (productName.value == "电子督察单") {
+  if (state.productName == "电子督察单") {
     getList(eleInspectList);
   } else {
     getList(persInspectList);
@@ -83,15 +92,15 @@ function selectListApi() {
 
   function getList(param) {
     param({
-      handleStatus: tabsList.value[tabsCurrent.value].value,
-      pageNum: current.value,
-      pageSize: pageSize.value,
+      handleStatus: state.tabsList[state.tabsCurrent].value,
+      pageNum: state.current,
+      pageSize: state.pageSize,
     }).then((requset) => {
       if (requset.status === "SUCCESS") {
-        dataList.value = requset.data.records;
-        total.value = requset.data.total;
+        state.dataList = requset.data.records;
+        state.total = requset.data.total;
         uni.setNavigationBarTitle({
-          title: `${productName.value}(${total.value})`,
+          title: `${state.productName}(${state.total})`,
         });
       }
     });
@@ -103,14 +112,14 @@ function selectListApi() {
  */
 function handleToDetails(e) {
   console.log(e);
-  proxy.$tab.navigateTo(`/pages/business/zhxf/fireInspect/inspectDetails/index?id=${e.id}&productName=${productName.value}`);
+  proxy.$tab.navigateTo(`/pages/business/zhxf/fireInspect/inspectDetails/index?id=${e.id}&productName=${state.productName}`);
 }
 
 /**
  * @scrollView加载数据
  */
 function load() {
-  pageSize.value += 10;
+  state.pageSize += 10;
   init();
 }
 
@@ -118,7 +127,7 @@ function load() {
  * @scrollView刷新数据
  */
 function refresh() {
-  pageSize.value = 20;
+  state.pageSize = 20;
   init();
 }
 
@@ -126,7 +135,7 @@ function refresh() {
  * @tabs点击事件
  */
 function tabsClick(e) {
-  tabsCurrent.value = e.index;
+  state.tabsCurrent = e.index;
   init();
 }
 
@@ -140,10 +149,10 @@ onShow(() => {
 
 onLoad((options) => {
   if ("productName" in options) {
-    productName.value = options.productName;
+    state.productName = options.productName;
   }
   if ("productCode" in options) {
-    productCode.value = options.productCode;
+    state.productCode = options.productCode;
     init();
   }
 });

+ 13 - 7
src/pages/common/appMessage/index.vue

@@ -1,6 +1,15 @@
 <template>
-  <scroll-view class="scroll-height" :scroll-y="true" :data-theme="'theme-' + proxy.$settingStore.themeColor.name" style="padding-bottom: 64px">
-    <view class="appMessage-container">
+  <oa-scroll
+    customClass="appMessage-container scroll-height"
+    :refresherLoad="false"
+    :refresherEnabled="false"
+    :refresherEnabledTitle="false"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    :data-theme="'theme-' + proxy.$settingStore.themeColor.name"
+  >
+    <template #default>
       <view class="content-area">
         <u-empty v-if="noticeList.length <= 0 && state.loading" text="暂无数据" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png"> </u-empty>
         <view :id="index == noticeList.length - 1 ? 'bottomInfo' : ''" v-for="(all, index) in noticeList" :key="index" v-show="noticeList.length > 0" @click="goContentDetails(all)">
@@ -15,9 +24,8 @@
           </view>
         </view>
       </view>
-    </view>
-  </scroll-view>
-  <oa-tabbar :tabbarValue="1"></oa-tabbar>
+    </template>
+  </oa-scroll>
 </template>
 
 <script setup>
@@ -29,10 +37,8 @@ import { getMceList, updateMceReceiveStatus } from "@/api/mine/info.js";
 /*----------------------------------组件引入-----------------------------------*/
 /*----------------------------------store引入-----------------------------------*/
 /*----------------------------------公共方法引入-----------------------------------*/
-import { storageSystem } from "@/utils/storage";
 /*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
-const { message_type } = proxy.useDict("message_type");
 /*----------------------------------变量声明-----------------------------------*/
 const state = reactive({
   loading: false,

+ 20 - 2
src/pages/common/searchSelect/index.vue

@@ -7,14 +7,32 @@
     </template>
   </u-navbar>
 
-  <scroll-view class="info-container bg-white" scroll-y :style="`height: calc(100vh - (${proxy.$settingStore.barHightTop} + ${proxy.$settingStore.tabBarHeight}))`"> </scroll-view>
+  <oa-scroll
+    customClass="info-container scroll-height"
+    :customStyle="{ height: `calc(100vh - (${proxy.$settingStore.barHightTop} + ${proxy.$settingStore.tabBarHeight}))` }"
+    :refresherLoad="false"
+    :refresherEnabled="false"
+    :refresherEnabledTitle="false"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    :data-theme="'theme-' + proxy.$settingStore.themeColor.name"
+  >
+    <template #default> </template>
+  </oa-scroll>
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onHide, onLaunch } from "@dcloudio/uni-app";
 import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance, toRefs } from "vue";
-
+/*----------------------------------接口引入-----------------------------------*/
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
+/*----------------------------------变量声明-----------------------------------*/
 const state = reactive({
   search: "",
 });

+ 14 - 12
src/pages/common/textview/index.vue

@@ -1,32 +1,34 @@
 <template>
   <view class="view-text">
     <!-- <u-parse class="uni-body view-content" :content="content"></u-parse> -->
-    <h3 style="text-align: center; line-height: 45px">{{ contentTitle }}</h3>
-    <view>{{ content }}</view>
+    <h3 style="text-align: center; line-height: 45px">{{ state.contentTitle }}</h3>
+    <view>{{ state.content }}</view>
   </view>
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onReady, onLoad, onShow, onNavigationBarButtonTap } from "@dcloudio/uni-app";
 import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance, toRefs } from "vue";
+/*----------------------------------接口引入-----------------------------------*/
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
 import { useStores, commonStores } from "@/store/modules/index";
-
-const useStore = useStores();
-
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
-
-const data = reactive({
+const useStore = useStores();
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
   title: "",
   content: "",
   contentTitle: "",
 });
 
-const { title, content, contentTitle } = toRefs(data);
-
 onLoad((options) => {
-  title.value = options.title;
-  content.value = options.content;
-  contentTitle.value = options.contentTitle;
+  state.title = options.title;
+  state.content = options.content;
+  state.contentTitle = options.contentTitle;
   uni.setNavigationBarTitle({
     title: options.title,
   });

+ 15 - 21
src/pages/index.vue

@@ -121,6 +121,10 @@ function init() {
     getMobileBannerApi(); //调用banner图接口
     getLocation(); //调用获取地理位置方法
   }, 1000);
+
+  //#ifdef APP-PLUS
+  proxy.$settingStore.baseAppInfo(), setInterval(proxy.$settingStore.baseAppInfo, 1000 * 60 * 5); //动态获取用户设备信息
+  //#endif
 }
 
 /**
@@ -188,7 +192,6 @@ function navItemClick(item) {
 }
 
 // function connected() {
-
 //   refresh();
 //   uni.setNavigationBarColor({
 //     frontColor: "#FFFFFF", //字体颜色
@@ -205,7 +208,9 @@ function navItemClick(item) {
  * @scrollView刷新数据
  */
 function refresh() {
-  init();
+  getAppRoutersData(); //调用路由信息接口
+  getMobileBannerApi(); //调用banner图接口
+  getLocation(); //调用获取地理位置方法
 }
 
 /**
@@ -214,7 +219,6 @@ function refresh() {
 function scanCode() {
   //#ifdef H5 || MP-WEIXIN
   jwx.configWeiXin((jweixin) => {
-    console.log(2);
     jweixin.scanQRCode({
       needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
       scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
@@ -264,6 +268,9 @@ function scanCode() {
  * @获取地理位置
  */
 function getLocation() {
+  var latitude = proxy.$settingStore.deviceList.latitude;
+  var longitude = proxy.$settingStore.deviceList.longitude;
+
   //#ifdef H5 || MP-WEIXIN
   // jwx.configWeiXin((jweixin) => {
   //   // 微信公众号获取位置
@@ -278,17 +285,11 @@ function getLocation() {
   //#endif
 
   //#ifdef APP-PLUS
-  uni.getLocation({
-    type: "gcj02",
-    geocode: true,
-    highAccuracyExpireTime: 5000,
-    success: function (res) {
-      proxy.$refs["oaWeatherRef"].getWeather(res.latitude + ":" + res.longitude);
-    },
-    fail: function (res) {
-      proxy.$refs["oaWeatherRef"].getWeather("上海");
-    },
-  });
+  if (latitude && longitude) {
+    proxy.$refs["oaWeatherRef"].getWeather(latitude + ":" + longitude);
+  } else {
+    proxy.$refs["oaWeatherRef"].getWeather("上海");
+  }
   //#endif
 }
 
@@ -334,13 +335,6 @@ function getAppRoutersData() {
   getAppRouters().then((res) => {
     state.cuIconList = res.data;
     storageSystem.set("homeList", state);
-
-    // plus.downloader
-    //   .createDownload("http://172.16.120.165:9300/statics/202312/20231201113810A027.jpg", {}, (d, status) => {
-    //     status != 200 && console.log("error");
-    //     console.log("Download success: " + d.filename);
-    //   })
-    //   .start();
   });
 }
 

+ 27 - 15
src/pages/info copy.vue

@@ -18,25 +18,37 @@
     </template>
   </u-navbar>
 
-  <scroll-view class="info-container bg-white" scroll-y :style="`height: calc(100vh - (50px + ${proxy.$settingStore.barHightTop} + ${proxy.$settingStore.tabBarHeight}))`">
-    <view class="content-area" v-for="item in infoList" :key="item" @tap="goAppMessage(item.path)">
-      <view class="content-area-avatar">
-        <image class="image-bg" :src="item.img" />
-      </view>
-      <view class="content-area-child">
-        <view class="uni-item mb5">
-          <view class="uni-item-text font14" style="color: #000000">{{ item.label }}</view>
-          <view class="uni-item-right font12" style="color: #909399">{{ item.time }}</view>
+  <oa-scroll
+    customClass="info-container  scroll-height bg-white"
+    :customStyle="{ height: `calc(100vh - (50px + ${proxy.$settingStore.barHightTop} + ${proxy.$settingStore.tabBarHeight}))` }"
+    :refresherLoad="false"
+    :refresherEnabled="true"
+    :refresherEnabledTitle="false"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    @refresh="init()"
+  >
+    <template #default>
+      <view class="content-area" v-for="item in infoList" :key="item" @tap="goAppMessage(item.path)">
+        <view class="content-area-avatar">
+          <image class="image-bg" :src="item.img" />
         </view>
-        <view class="uni-item">
-          <view class="uni-item-text font12" style="color: #909399">{{ item.cont }}</view>
-          <view class="uni-item-right font12" style="margin: auto 0">
-            <u-badge numberType="overflow" max="99" :value="item.badge"></u-badge>
+        <view class="content-area-child">
+          <view class="uni-item mb5">
+            <view class="uni-item-text font14" style="color: #000000">{{ item.label }}</view>
+            <view class="uni-item-right font12" style="color: #909399">{{ item.time }}</view>
+          </view>
+          <view class="uni-item">
+            <view class="uni-item-text font12" style="color: #909399">{{ item.cont }}</view>
+            <view class="uni-item-right font12" style="margin: auto 0">
+              <u-badge numberType="overflow" max="99" :value="item.badge"></u-badge>
+            </view>
           </view>
         </view>
       </view>
-    </view>
-  </scroll-view>
+    </template>
+  </oa-scroll>
 
   <oa-tabbar :tabbarValue="1"></oa-tabbar>
 </template>

+ 28 - 20
src/pages/info.vue

@@ -24,24 +24,36 @@
     </template>
   </u-navbar>
 
-  <scroll-view class="info-container bg-white" scroll-y :style="`height: calc(100vh - (50px + ${proxy.$settingStore.barHightTop} + ${proxy.$settingStore.tabBarHeight}));position: relative;`">
-    <view class="content-area list-cell list-cell-arrow" v-for="item in infoList.infoTypeStatic" :key="item" @tap="goAppMessage(item)">
-      <view class="content-area-avatar">
-        <image class="image-bg" :src="item.img" />
-        <view class="uni_top_right font12" style="margin: auto 0">
-          <u-badge numberType="overflow" max="99" :value="item.notReadCount"></u-badge>
+  <oa-scroll
+    customClass="info-container  scroll-height bg-white"
+    :customStyle="{ height: `calc(100vh - (50px + ${proxy.$settingStore.barHightTop} + ${proxy.$settingStore.tabBarHeight}))`, position: 'relative' }"
+    :refresherLoad="false"
+    :refresherEnabled="true"
+    :refresherEnabledTitle="false"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    @refresh="init()"
+  >
+    <template #default>
+      <view class="content-area list-cell list-cell-arrow" v-for="item in infoList.infoTypeStatic" :key="item" @tap="goAppMessage(item)">
+        <view class="content-area-avatar">
+          <image class="image-bg" :src="item.img" />
+          <view class="uni_top_right font12" style="margin: auto 0">
+            <u-badge numberType="overflow" max="99" :value="item.notReadCount"></u-badge>
+          </view>
         </view>
-      </view>
-      <view class="content-area-child">
-        <view class="uni-item mb5 ml10">
-          <view class="uni-item-text font14" style="color: #000000">{{ item.label }}</view>
-        </view>
-        <view class="uni-item">
-          <view class="uni-item-text font12" style="color: #909399">{{ item.cont }}</view>
+        <view class="content-area-child">
+          <view class="uni-item mb5 ml10">
+            <view class="uni-item-text font14" style="color: #000000">{{ item.label }}</view>
+          </view>
+          <view class="uni-item">
+            <view class="uni-item-text font12" style="color: #909399">{{ item.cont }}</view>
+          </view>
         </view>
       </view>
-    </view>
-  </scroll-view>
+    </template>
+  </oa-scroll>
 
   <oa-tabbar :tabbarValue="1"></oa-tabbar>
 </template>
@@ -140,10 +152,9 @@ onLoad(() => {
   height: 19px;
 }
 .info-container {
-  padding: 0 12px;
   .content-area {
     display: flex;
-    padding: 13px 13px 13px 0px;
+    padding: 13px 13px 13px 13px;
     &-avatar {
       display: flex;
       margin: auto 20upx auto 0;
@@ -181,7 +192,4 @@ onLoad(() => {
     }
   }
 }
-.list-cell-arrow::before {
-  right: 10rpx;
-}
 </style>

+ 2 - 2
src/pages/login.vue

@@ -198,7 +198,7 @@ function submitRes() {
       phone: phone.value,
       verify: verify.value,
       tenantId: useStore.tenantId,
-      cids: proxy.$settingStore.pushClientId,
+      cids: proxy.$settingStore.pushClientId || undefined,
       type: proxy.$common.isWechatMp() ? "wx" : "app",
       openId: useStore.wxOpenId || undefined,
     });
@@ -216,7 +216,7 @@ function submitRes() {
       username: username.value,
       password: password.value,
       tenantId: useStore.tenantId,
-      cids: proxy.$settingStore.pushClientId,
+      cids: proxy.$settingStore.pushClientId || undefined,
       type: proxy.$common.isWechatMp() ? "wx" : "app",
       openId: useStore.wxOpenId || undefined,
     });

+ 23 - 17
src/pages/mine/help/index.vue

@@ -27,14 +27,20 @@
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onReady, onLoad, onShow, onNavigationBarButtonTap } from "@dcloudio/uni-app";
 import { ref, onMounted, inject, computed, shallowRef, reactive, getCurrentInstance, toRefs } from "vue";
+/*----------------------------------接口引入-----------------------------------*/
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
 import { useStores, commonStores } from "@/store/modules/index";
+/*----------------------------------公共方法引入-----------------------------------*/
 
-const useStore = useStores();
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
-
-const data = reactive({
+const useStore = useStores();
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
   list: [
     {
       icon: "iconfont oaIcon-Help",
@@ -57,7 +63,7 @@ const data = reactive({
   ],
 });
 
-const { list } = toRefs(data);
+const { list } = toRefs(state);
 
 function handleText(item) {
   proxy.$tab.navigateTo(`/pages/common/textview/index?title=${item.title}&content=${item.content}`);
@@ -72,42 +78,42 @@ onShow(() => {
 <style lang="scss" scoped>
 .help-container {
   .oa-content-section {
-    padding: 30rpx;
+    padding: 15px;
 
     .uni-list {
-      margin-bottom: 30rpx;
+      margin-bottom: 15px;
 
       &-title {
         display: flex;
         color: #303133;
-        font-size: 32rpx;
+        font-size: $uni-font-size-lg;
         font-weight: bold;
-        margin-left: 10rpx;
+        margin-left: 5px;
 
         .iconfont {
-          font-size: 16px;
-          margin: auto 10rpx auto 0;
+          font-size: $uni-font-size-lg;
+          margin: auto 5px auto 0;
         }
       }
 
       &-child {
         background: #ffffff;
-        box-shadow: 0px 0px 10rpx rgba(193, 193, 193, 0.2);
-        border-radius: 16rpx;
-        margin-top: 10rpx;
+        box-shadow: 0px 0px 5px rgba(193, 193, 193, 0.2);
+        border-radius: 8px;
+        margin-top: 5px;
 
         &-item {
           color: #606266;
-          font-size: 28rpx;
+          font-size: $uni-font-size-base;
 
           &-title {
-            font-size: 28rpx;
-            padding: 24rpx;
+            font-size: $uni-font-size-base;
+            padding: 12px;
           }
 
           &-line {
             width: 100%;
-            height: 1rpx;
+            height: 0.5px;
             background-color: #f5f5f5;
           }
         }

+ 25 - 22
src/pages/mine/info/index.vue

@@ -15,25 +15,25 @@
         <view class="list-cell list-cell-arrow" @click="handleUserModal('修改昵称')">
           <view class="menu-item">
             <view class="title">昵称</view>
-            <view class="content" style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.nickName }}</view>
+            <view class="text-right content">{{ user.nickName }}</view>
           </view>
         </view>
         <view class="list-cell list-cell-arrow" @click="handleUserModal('修改手机号')">
           <view class="menu-item">
             <view class="title">手机号</view>
-            <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.phonenumber }}</view>
+            <view class="text-right">{{ user.phonenumber }}</view>
           </view>
         </view>
         <view class="list-cell list-cell-arrow" @click="handleUserModal('修改邮箱')">
           <view class="menu-item">
             <view class="title">邮箱</view>
-            <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.email }}</view>
+            <view class="text-right">{{ user.email }}</view>
           </view>
         </view>
         <view class="list-cell list-cell-arrow" @click="handleUserModal('修改性别')">
           <view class="menu-item">
             <view class="title">性别</view>
-            <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.sex == "0" ? "男" : "女" }}</view>
+            <view class="text-right">{{ user.sex == "0" ? "男" : "女" }}</view>
           </view>
         </view>
         <view class="list-cell list-cell-arrow" @click="proxy.$modal.showToast('模块建设中~')">
@@ -124,17 +124,20 @@
 </template>
 
 <script setup>
-import config from "@/config";
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
-import { useStores, commonStores } from "@/store/modules/index";
-
+/*----------------------------------接口引入-----------------------------------*/
 import { updateUserProfile, getUserProfile } from "@/api/system/user";
-
-const useStore = useStores();
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
+import { useStores, commonStores } from "@/store/modules/index";
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
-
-const data = reactive({
+const useStore = useStores();
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
   tabsList: [{ name: "个人信息" }, { name: "企业/团队" }],
   tabsCurrent: 0,
 
@@ -150,16 +153,16 @@ const data = reactive({
   verify: undefined,
 });
 
-const { tabsList, tabsCurrent, sexs, modalShow, modalTitle, phone, verify } = toRefs(data);
+const { tabsList, tabsCurrent, sexs, modalShow, modalTitle, phone, verify } = toRefs(state);
 const { avatar, user, userArr, postGroup, roleGroup } = toRefs(useStore);
 
 function handleUserModal(title) {
-  modalShow.value = true;
-  modalTitle.value = title;
+  state.modalShow = true;
+  state.modalTitle = title;
 }
 
 function handleConfirm() {
-  if (modalTitle.value == "修改昵称") {
+  if (state.modalTitle == "修改昵称") {
     if (!userArr.value.nickName) {
       proxy.$modal.showToast("昵称不能为空");
       return;
@@ -171,7 +174,7 @@ function handleConfirm() {
     });
   }
 
-  if (modalTitle.value == "修改手机号") {
+  if (state.modalTitle == "修改手机号") {
     useStore.PhoneVerify({
       data: {
         phone: phone.value,
@@ -192,7 +195,7 @@ function handleConfirm() {
     });
   }
 
-  if (modalTitle.value == "修改邮箱") {
+  if (state.modalTitle == "修改邮箱") {
     if (!userArr.value.email) {
       proxy.$modal.showToast("邮箱不能为空");
       return;
@@ -209,7 +212,7 @@ function handleConfirm() {
     });
   }
 
-  if (modalTitle.value == "修改性别") {
+  if (state.modalTitle == "修改性别") {
     if (!userArr.value.sex) {
       proxy.$modal.showToast("请选择性别");
       return;
@@ -226,9 +229,9 @@ function handleConfirm() {
  * @点击发送验证码
  */
 function getVerifyCode() {
-  verify.value = undefined;
+  state.verify = undefined;
   useStore.GetCodeImg({
-    phone: phone.value,
+    phone: state.phone,
     success: (res) => {
       proxy.$modal.msgSuccess("发送成功");
     },
@@ -239,7 +242,7 @@ function getVerifyCode() {
  * @tabs点击事件
  */
 function tabsClick(e) {
-  tabsCurrent.value = e.index;
+  state.tabsCurrent = e.index;
 }
 
 onLoad((options) => {
@@ -248,7 +251,7 @@ onLoad((options) => {
 
 onReady(() => {
   // const form = ref(null);
-  //   form.value.setRules(rules.value);
+  // form.value.setRules(rules.value);
 });
 
 onShow(() => {

+ 34 - 11
src/pages/mine/secure/fingerprint/index.vue

@@ -10,10 +10,10 @@
   </view>
 
   <u-modal :show="modalShow" confirmText="取消" @confirm="modalConfirm">
-    <view class="slot-content">
-      <text class="content-area-icon iconfont oaIcon-zhiwen"></text>
+    <view class="modal-area">
+      <text class="modal-area-icon iconfont oaIcon-zhiwen"></text>
       <view
-        style="font-size: 15px; text-align: center"
+        class="modal-area-text"
         :style="{
           color: modalContent === '请验证指纹' || modalContent === '正在验证指纹...' ? '#000' : 'red',
         }"
@@ -25,15 +25,19 @@
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
-import { useStores, commonStores } from "@/store/modules/index";
-
+/*----------------------------------接口引入-----------------------------------*/
 import { loginLogList } from "@/api/mine/secure/loginLog.js";
-
-const useStore = useStores();
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
+import { useStores, commonStores } from "@/store/modules/index";
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
-
+const useStore = useStores();
+/*----------------------------------变量声明-----------------------------------*/
 const modalShow = ref(false);
 const modalContent = ref("");
 
@@ -100,6 +104,10 @@ onReady(() => {});
 onNavigationBarButtonTap((e) => {});
 </script>
 <style lang="scss" scoped>
+$uni-font-size-icon: 50px;
+$uni-font-size-base: 14px;
+$uni-font-size-lg: 16px;
+
 .fingerprint-container {
   .content-area {
     padding: 150px 50px 0px;
@@ -107,7 +115,7 @@ onNavigationBarButtonTap((e) => {});
     &-icon {
       display: flex;
       justify-content: center;
-      font-size: 50px;
+      font-size: $uni-font-size-icon;
       margin-bottom: 30px;
       color: #2a98ff;
     }
@@ -118,7 +126,7 @@ onNavigationBarButtonTap((e) => {});
       font-weight: 600;
       margin-bottom: 10px;
       color: #000;
-      font-size: 16px;
+      font-size: $uni-font-size-lg;
     }
 
     &-center {
@@ -126,7 +134,22 @@ onNavigationBarButtonTap((e) => {});
       justify-content: center;
       margin-bottom: 30px;
       color: #96a6b5;
-      font-size: 15px;
+      font-size: $uni-font-size-base;
+    }
+  }
+
+  .modal-area {
+    &-icon {
+      display: flex;
+      justify-content: center;
+      font-size: $uni-font-size-icon;
+      margin-bottom: 30px;
+      color: #2a98ff;
+    }
+
+    &-text {
+      font-size: $uni-font-size-base;
+      text-align: center;
     }
   }
 }

+ 45 - 20
src/pages/mine/secure/index.vue

@@ -10,13 +10,13 @@
         <view class="list-cell list-cell-arrow" @click="handleUserModal('修改手机号')">
           <view class="menu-item">
             <view class="title">手机号</view>
-            <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.phonenumber }}</view>
+            <view class="text-right">{{ user.phonenumber }}</view>
           </view>
         </view>
         <view class="list-cell list-cell-arrow" @click="handleUserModal('修改密码')">
           <view class="menu-item">
             <view class="title">密码</view>
-            <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.password ? "已设置" : "未设置" }}</view>
+            <view class="text-right">{{ user.password ? "已设置" : "未设置" }}</view>
           </view>
         </view>
       </view>
@@ -65,10 +65,10 @@
     </view>
   </view>
 
-  <u-modal :show="modalShow" :showConfirmButton="true" :showCancelButton="true" @cancel="handleCancel()" @close="handleCancel()" @confirm="handleConfirm()">
-    <view class="slot-content" style="width: 100%">
-      <view v-if="modalTitle === '修改手机号'">
-        <view class="mb15" style="text-align: center; color: #000; font-weight: 600">{{ modalTitle }}</view>
+  <u-modal class="modal-section" :show="modalShow" :showConfirmButton="true" :showCancelButton="true" @cancel="handleCancel()" @close="handleCancel()" @confirm="handleConfirm()">
+    <view class="modal-section-slot">
+      <view class="modal-section-slot-item" v-if="modalTitle === '修改手机号'">
+        <view class="mb15 title">{{ modalTitle }}</view>
         <u-input v-model="phone" placeholder="请输入手机号" :maxlength="11" border="bottom" />
         <u-input v-model="verify" placeholder="请输入验证码" :maxlength="6" border="bottom">
           <template #suffix>
@@ -77,8 +77,8 @@
         </u-input>
       </view>
 
-      <view v-if="modalTitle === '修改密码'">
-        <view class="mb15" style="text-align: center; color: #000; font-weight: 600">{{ modalTitle }}</view>
+      <view class="modal-section-slot-item" v-if="modalTitle === '修改密码'">
+        <view class="mb15 title">{{ modalTitle }}</view>
         <u-input class="mb15" v-model="oldPassword" placeholder="请输入旧密码" :password="oldPasswordBool" border="bottom">
           <template #suffix>
             <text :class="!oldPasswordBool ? 'iconfont oaIcon-eye' : 'iconfont oaIcon-eye-close'" @click="oldPasswordBool = !oldPasswordBool"></text>
@@ -98,9 +98,9 @@
         </u-input>
       </view>
 
-      <view v-if="modalTitle === '手机号验证'">
-        <view class="mb5" style="text-align: center; color: #000; font-weight: 600">{{ modalTitle }}</view>
-        <view class="mb15" style="text-align: center; color: #000; font-size: 0.75rem; width: 90%; margin: 0 auto"> 请填写完整的手机号 {{ user.phonenumber }} 以验证身份 </view>
+      <view class="modal-section-slot-item" v-if="modalTitle === '手机号验证'">
+        <view class="mb5 title">{{ modalTitle }}</view>
+        <view class="mb15 subTitle"> 请填写完整的手机号 {{ user.phonenumber }} 以验证身份 </view>
         <u-input v-model="phone" placeholder="请输入手机号" :maxlength="11" border="bottom" />
         <u-input v-model="verify" placeholder="请输入验证码" :maxlength="6" border="bottom">
           <template #suffix>
@@ -113,17 +113,20 @@
 </template>
 
 <script setup>
-import config from "@/config";
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
-import { useStores, commonStores } from "@/store/modules/index";
-
+/*----------------------------------接口引入-----------------------------------*/
 import { updateUserProfile, updateUserPwd } from "@/api/system/user";
-
-const useStore = useStores();
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
+import { useStores, commonStores } from "@/store/modules/index";
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
-
-const data = reactive({
+const useStore = useStores();
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
   modalShow: false,
   modalTitle: "",
 
@@ -138,7 +141,7 @@ const data = reactive({
   verify: undefined,
 });
 
-const { modalShow, modalTitle, oldPassword, oldPasswordBool, newPassword, newPasswordBool, confirmPassword, confirmPasswordBool, phone, verify } = toRefs(data);
+const { modalShow, modalTitle, oldPassword, oldPasswordBool, newPassword, newPasswordBool, confirmPassword, confirmPasswordBool, phone, verify } = toRefs(state);
 const { avatar, user, userArr } = toRefs(useStore);
 
 function handleUserModal(title) {
@@ -285,4 +288,26 @@ onNavigationBarButtonTap((e) => {
 });
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.modal-section {
+  &-slot {
+    width: 100% !important;
+
+    &-item {
+      .title {
+        text-align: center;
+        color: #000;
+        font-weight: 600;
+      }
+
+      .subTitle {
+        text-align: center;
+        color: #000;
+        font-size: $uni-font-size-sm;
+        width: 90%;
+        margin: 0 auto;
+      }
+    }
+  }
+}
+</style>

+ 27 - 21
src/pages/mine/secure/loginLog/index.vue

@@ -1,8 +1,8 @@
 <template>
   <oa-scroll
     customClass="scroll-height"
-    :pageSize="pageSize"
-    :total="total"
+    :pageSize="state.pageSize"
+    :total="state.total"
     :refresherLoad="true"
     :refresherEnabled="true"
     :refresherDefaultStyle="'none'"
@@ -13,14 +13,15 @@
     <template #default>
       <view class="loginLog-container" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
         <view class="container-area">
-          <view class="container-area-content bg-white" v-for="data in dataList" :key="data">
+          <view class="container-area-content bg-white" v-for="data in state.dataList" :key="data">
             <view class="container-area-content-img">
               <image style="width: 35px; height: 35px" :src="'/static/images/404.png'" mode="aspectFill"></image>
             </view>
             <view class="container-area-content-center">
               <view
                 :style="{
-                  fontSize: '15px',
+                  fontSize: '14px',
+                  fontWeight: 600,
                   color: data.status == '0' ? '#16bf00' : 'red',
                 }"
                 >{{ data.status == "0" ? "登录成功" : "登录失败" }}</view
@@ -40,20 +41,25 @@
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
-import { useStores, commonStores } from "@/store/modules/index";
-
+/*----------------------------------接口引入-----------------------------------*/
 import { loginLogList } from "@/api/mine/secure/loginLog.js";
-
-const useStore = useStores();
-
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
+import { useStores, commonStores } from "@/store/modules/index";
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
-
-const dataList = ref([]);
-const pageSize = ref(20);
-const current = ref(1);
-const total = ref(0);
+const useStore = useStores();
+/*----------------------------------变量声明-----------------------------------*/
+const state = reactive({
+  dataList: [],
+  pageNum: 1,
+  pageSize: 20,
+  total: 0,
+});
 
 /**
  * @初始化
@@ -66,7 +72,7 @@ function init() {
  * @scrollView加载数据
  */
 function load() {
-  pageSize.value += 10;
+  state.pageSize += 10;
   selectListApi();
 }
 
@@ -74,7 +80,7 @@ function load() {
  * @scrollView刷新数据
  */
 function refresh() {
-  pageSize.value = 20;
+  state.pageSize = 20;
   selectListApi();
 }
 
@@ -84,13 +90,13 @@ function refresh() {
  */
 function selectListApi() {
   loginLogList({
-    pageNum: current.value,
-    pageSize: pageSize.value,
+    pageNum: state.pageNum,
+    pageSize: state.pageSize,
     userName: useStore.user.userName,
   }).then((requset) => {
     if (requset.status === "SUCCESS") {
-      dataList.value = requset.data.rows;
-      total.value = requset.data.total;
+      state.dataList = requset.data.rows;
+      state.total = requset.data.total;
     }
   });
 }
@@ -132,7 +138,7 @@ onNavigationBarButtonTap((e) => {
 
       &-center {
         width: 100%;
-        font-size: 13px;
+        font-size: 12px;
         color: #909399;
         padding: 15px 0 15px 0;
       }

+ 15 - 10
src/pages/mine/setting/index.vue

@@ -26,7 +26,7 @@
         <view class="menu-item">
           <view class="iconfont oaIcon-qinglihuancun menu-item-icon"></view>
           <view>清理缓存</view>
-          <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ proxy.$settingStore.currentSize }}</view>
+          <view class="text-right">{{ proxy.$settingStore.currentSize }}</view>
         </view>
       </view>
       <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleToUpgrade()">
@@ -48,22 +48,27 @@
 </template>
 
 <script setup>
+/*----------------------------------依赖引入-----------------------------------*/
 import { onLoad, onShow, onHide, onLaunch, onNavigationBarButtonTap } from "@dcloudio/uni-app";
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
+/*----------------------------------接口引入-----------------------------------*/
+/*----------------------------------组件引入-----------------------------------*/
+/*----------------------------------store引入-----------------------------------*/
 import { useStores, commonStores } from "@/store/modules/index";
-
-const useStore = useStores();
-
+/*----------------------------------公共方法引入-----------------------------------*/
+/*----------------------------------公共变量-----------------------------------*/
 const { proxy } = getCurrentInstance();
+const useStore = useStores();
+/*----------------------------------变量声明-----------------------------------*/
 
-const data = reactive({});
-
-const {} = toRefs(data);
-
-const windowHeight = computed(() => {
-  return uni.getSystemInfoSync().windowHeight - 50;
+const state = reactive({
+  windowHeight: computed(() => {
+    return uni.getSystemInfoSync().windowHeight - 50;
+  }),
 });
 
+const { windowHeight } = toRefs(data);
+
 onLoad((options) => {});
 
 onShow(() => {

+ 1 - 1
src/pages/serveConfigSelect.vue

@@ -14,7 +14,7 @@
       <div class="serveList">
         <u-radio-group v-model="radiovalue" placement="column" @change="handleRadio">
           <div class="serveList-item" v-for="(item, index) in radiolist" :key="index">
-            <u-radio :customStyle="{ margin: 'auto 0' }" :value="item.id" :name="item.id"></u-radio>
+            <u-radio :customStyle="{ display: 'block', margin: 'auto 0' }" :value="item.id" :name="item.id"></u-radio>
 
             <div class="serveList-item-center" @click="handleRadio(item.id)">
               <div class="serveList-item-center-title">{{ item.linkUrl }}</div>

+ 0 - 4
src/static/scss/public.scss

@@ -270,10 +270,6 @@ uni-input {
 
 //公共scroll-view样式
 .scroll-height {
-  //#ifdef H5
-  height: calc(100vh - 44px);
-  //#endif
-
   //#ifdef APP-PLUS || MP-WEIXIN
   height: calc(100vh - constant(safe-area-inset-top));
   height: calc(100vh - env(safe-area-inset-top));

+ 20 - 8
src/store/modules/setting.js

@@ -89,17 +89,28 @@ const settingStores = defineStore("storage-setting", {
          * @动态获取用户设备信息
          */
         baseAppInfo() {
+            var _this = this
+
+            let sotrTime = uni.getStorageSync("expirationTime");
+            if (sotrTime) {
+                if (sotrTime + 3600 * 24 * 2 < Date.parse(new Date()) / 1000) {
+                    return true
+                } else {
+                    return false
+                }
+            }
+
             // 获取系统信息
             const systemInfo = uni.getSystemInfoSync();
-            this.deviceList.deviceBrand = systemInfo.deviceBrand;
-            this.deviceList.deviceId = systemInfo.deviceId;
-            this.deviceList.deviceModel = systemInfo.deviceModel;
-            this.deviceList.operateSystem = systemInfo.platform;
+            _this.deviceList.deviceBrand = systemInfo.deviceBrand;
+            _this.deviceList.deviceId = systemInfo.deviceId;
+            _this.deviceList.deviceModel = systemInfo.deviceModel;
+            _this.deviceList.operateSystem = systemInfo.platform;
 
             // 获取网络状态
             uni.getNetworkType({
                 success: function (res) {
-                    this.deviceList.networkType = res.networkType;
+                    _this.deviceList.networkType = res.networkType;
                 },
             });
 
@@ -109,11 +120,12 @@ const settingStores = defineStore("storage-setting", {
                 geocode: true,
                 highAccuracyExpireTime: 5000,
                 success: (res) => {
-                    this.deviceList.longitude = res.longitude.toString();
-                    this.deviceList.latitude = res.latitude.toString();
-                    baseAppInfoApi(this.deviceList).then((res) => { })
+                    _this.deviceList.longitude = res.longitude.toString();
+                    _this.deviceList.latitude = res.latitude.toString();
+                    baseAppInfoApi(_this.deviceList).then((res) => { })
                 },
                 fail: (res) => {
+                    uni.setStorageSync("expirationTime", Date.parse(new Date()) / 1000);
                 },
             });
         },

+ 3 - 3
src/uni_modules/uview-plus/components/u-steps-item/u-steps-item.vue

@@ -31,10 +31,10 @@
 		</view>
 		<view class="u-steps-item__content" :class="[`u-steps-item__content--${parentData.direction}`]"
 			:style="[contentStyle]">
-			<up-text :text="title" :type="parentData.current == index ? 'main' : 'content'" lineHeight="20px"
-				:size="parentData.current == index ? 14 : 13"></up-text>
+			<u-text :text="title" :type="parentData.current == index ? 'main' : 'content'" lineHeight="20px"
+				:size="parentData.current == index ? 14 : 13"></u-text>
 			<slot name="desc">
-				<up-text :text="desc" type="tips" size="12"></up-text>
+				<u-text :text="desc" type="tips" size="12"></u-text>
 			</slot>
 		</view>
 		<!-- <view