瀏覽代碼

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

xf15575941817 1 年之前
父節點
當前提交
b0d5ab5569
共有 100 個文件被更改,包括 1417 次插入799 次删除
  1. 66 6
      src/App.vue
  2. 0 0
      src/api/business/fireIot/deviceManage.js
  3. 20 1
      src/api/business/fireIot/facilitiesManage.js
  4. 65 0
      src/components/oa-dropdown/index.vue
  5. 3 1
      src/main.js
  6. 2 2
      src/manifest.json
  7. 9 16
      src/pages.json
  8. 1 1
      src/pages/business/fireIot/alarmManage/index.vue
  9. 0 0
      src/pages/business/fireIot/deviceManage/components/chart.vue
  10. 1 1
      src/pages/business/fireIot/deviceManage/components/deviceDetails.vue
  11. 213 0
      src/pages/business/fireIot/deviceManage/components/deviceDetailsList.vue
  12. 3 3
      src/pages/business/fireIot/deviceManage/index.vue
  13. 0 135
      src/pages/business/fireIot/deviceSelect/components/deviceDetailsList.vue
  14. 1 1
      src/pages/business/fireIot/facilitiesManage/facilitiesDetails.vue
  15. 15 16
      src/pages/business/fireIot/facilitiesManage/facilitiesDetailsList.vue
  16. 96 48
      src/pages/business/fireIot/facilitiesManage/index.vue
  17. 131 0
      src/pages/business/fireIot/facilitiesManage/mapFacilitiesView.vue
  18. 0 109
      src/pages/business/fireIot/facilitiesView/index.vue
  19. 0 81
      src/pages/business/fireIot/facilitiesView/mapGatherView.vue
  20. 1 1
      src/pages/business/mhxf/xunJian/collect/index.vue
  21. 1 1
      src/pages/business/mhxf/xunJian/plan/components/report.vue
  22. 1 1
      src/pages/business/mhxf/xunJian/plan/index.vue
  23. 1 2
      src/pages/business/zhxf/funReport/index.vue
  24. 4 40
      src/pages/common/customManage/index.vue
  25. 74 41
      src/pages/index.vue
  26. 20 10
      src/pages/mine/secure/index.vue
  27. 8 0
      src/plugins/setting.plugins.js
  28. 6 0
      src/static/amap/coordination.html
  29. 90 0
      src/static/amap/css/common.css
  30. 62 0
      src/static/amap/css/input.css
  31. 422 0
      src/static/amap/mapFacilitiesView.html
  32. 5 0
      src/static/amap/mapGather.html
  33. 0 193
      src/static/amap/mapGatherView.html
  34. 39 4
      src/static/iconfont/iconfont.css
  35. 二進制
      src/static/iconfont/iconfont.ttf
  36. 二進制
      src/static/icons/index/APP-dbsx.png
  37. 0 8
      src/static/icons/index/APP-dbsx.svg
  38. 二進制
      src/static/icons/index/APP-dwcj.png
  39. 0 7
      src/static/icons/index/APP-dwxxcj.svg
  40. 二進制
      src/static/icons/index/APP-gjgl.png
  41. 二進制
      src/static/icons/index/APP-khgl.png
  42. 二進制
      src/static/icons/index/APP-kpgl.png
  43. 二進制
      src/static/icons/index/APP-sbcx.png
  44. 0 9
      src/static/icons/index/APP-sbcx.svg
  45. 二進制
      src/static/icons/index/APP-sbgl.png
  46. 0 9
      src/static/icons/index/APP-sbgl.svg
  47. 二進制
      src/static/icons/index/APP-sscj.png
  48. 二進制
      src/static/icons/index/APP-ssck.png
  49. 二進制
      src/static/icons/index/APP-xfbg.png
  50. 0 9
      src/static/icons/index/APP-xfbg.svg
  51. 二進制
      src/static/icons/index/APP-xtzz.png
  52. 二進制
      src/static/icons/index/APP-xunjian.png
  53. 0 9
      src/static/icons/index/APP-xunjian.svg
  54. 二進制
      src/static/icons/index/APP-xxcx.png
  55. 0 9
      src/static/icons/index/APP-xxcx.svg
  56. 0 9
      src/static/icons/index/APP-zzdt.svg
  57. 二進制
      src/static/icons/white/0.png
  58. 二進制
      src/static/icons/white/1.png
  59. 二進制
      src/static/icons/white/10.png
  60. 二進制
      src/static/icons/white/11.png
  61. 二進制
      src/static/icons/white/12.png
  62. 二進制
      src/static/icons/white/13.png
  63. 二進制
      src/static/icons/white/14.png
  64. 二進制
      src/static/icons/white/15.png
  65. 二進制
      src/static/icons/white/16.png
  66. 二進制
      src/static/icons/white/17.png
  67. 二進制
      src/static/icons/white/18.png
  68. 二進制
      src/static/icons/white/19.png
  69. 二進制
      src/static/icons/white/2.png
  70. 二進制
      src/static/icons/white/20.png
  71. 二進制
      src/static/icons/white/21.png
  72. 二進制
      src/static/icons/white/22.png
  73. 二進制
      src/static/icons/white/23.png
  74. 二進制
      src/static/icons/white/24.png
  75. 二進制
      src/static/icons/white/25.png
  76. 二進制
      src/static/icons/white/26.png
  77. 二進制
      src/static/icons/white/27.png
  78. 二進制
      src/static/icons/white/28.png
  79. 二進制
      src/static/icons/white/29.png
  80. 二進制
      src/static/icons/white/3.png
  81. 二進制
      src/static/icons/white/30.png
  82. 二進制
      src/static/icons/white/31.png
  83. 二進制
      src/static/icons/white/32.png
  84. 二進制
      src/static/icons/white/33.png
  85. 二進制
      src/static/icons/white/34.png
  86. 二進制
      src/static/icons/white/35.png
  87. 二進制
      src/static/icons/white/36.png
  88. 二進制
      src/static/icons/white/37.png
  89. 二進制
      src/static/icons/white/38.png
  90. 二進制
      src/static/icons/white/4.png
  91. 二進制
      src/static/icons/white/5.png
  92. 二進制
      src/static/icons/white/6.png
  93. 二進制
      src/static/icons/white/7.png
  94. 二進制
      src/static/icons/white/8.png
  95. 二進制
      src/static/icons/white/9.png
  96. 二進制
      src/static/icons/white/99.png
  97. 0 0
      src/static/images/add.png
  98. 二進制
      src/static/images/index/weather.png
  99. 57 15
      src/static/scss/public.scss
  100. 0 1
      src/store/modules/user.js

+ 66 - 6
src/App.vue

@@ -11,6 +11,72 @@ const { proxy } = getCurrentInstance();
 function initApp() {
   //初始化获取安全区高度
   proxy.$settingStore.systemHeightTop();
+  //隐藏自带tabbar
+  uni.hideTabBar();
+
+  //#ifdef APP-PLUS
+  plus.screen.lockOrientation("portrait-primary"); //设置不可横屏
+  pushListener(); //开启消息推送监听
+  proxy.$setting.clearBadge(0); // 清除数字
+  //#endif
+}
+
+/**
+ * @消息推送监听
+ */
+function pushMessage() {
+  uni.onPushMessage((res) => {
+    const platform = uni.getSystemInfoSync().platform;
+    console.log("收到推送消息:", res); //监听推送消息
+
+    if (res.type === "click") {
+      if (platform == "android") {
+      } else {
+      }
+    } else if (res.type === "receive") {
+      if (platform == "android") {
+      } else {
+      }
+    }
+  });
+}
+
+/**
+ * @消息推送监听
+ */
+function pushListener() {
+  //获取应用的CID
+  uni.getPushClientId({
+    success: (res) => {
+      console.log(res.cid);
+    },
+    fail(err) {
+      console.log(err);
+    },
+  });
+
+  const platform = uni.getSystemInfoSync().platform;
+  // 点击推送信息
+  plus.push.addEventListener("click", (res) => {
+    console.log(res);
+    if (res.aps) {
+      if ("url" in res.payload) {
+      } else {
+      }
+      console.log(res.payload);
+    }
+  });
+  // 接收推送信息  在线
+  plus.push.addEventListener("receive", (res) => {
+    console.log(res);
+    if (platform == "android") {
+    } else {
+      uni.createPushMessage({
+        title: res.title,
+        content: res.content,
+      });
+    }
+  });
 }
 
 watchEffect(() => {
@@ -23,12 +89,6 @@ watchEffect(() => {
 
 onLaunch(() => {
   console.log("App Launch");
-  
-  uni.hideTabBar(); //隐藏自带tabbar
-
-  //#ifdef APP-PLUS
-  plus.screen.lockOrientation("portrait-primary"); //设置不可横屏
-  //#endif
 
   //初始化默认主题
   if (!proxy.$settingStore.$state.themeColor) {

+ 0 - 0
src/api/business/fireIot/deviceSelect/index.js → src/api/business/fireIot/deviceManage.js


+ 20 - 1
src/api/business/fireIot/facilitiesView/index.js → src/api/business/fireIot/facilitiesManage.js

@@ -43,4 +43,23 @@ export function buildInfo(param) {
         method: "GET",
         data: param,
     });
-}
+}
+
+
+// 设施地图列表查询
+export function typeSelect(param) {
+    return request({
+        url: "/service-iot/baseFacilityType/typeSelect",
+        method: "GET",
+        data: param,
+    });
+}
+
+// 设施地图撒点查询
+export function baseGgpFacilityList(param) {
+    return request({
+        url: "/service-iot/baseGgpFacility/baseGgpFacilityList",
+        method: "POST",
+        data: param,
+    });
+}

+ 65 - 0
src/components/oa-dropdown/index.vue

@@ -0,0 +1,65 @@
+<template>
+  <view>
+    <view class="dropdown" :class="dropdownShow ? 'show' : 'none'">
+      <view class="content">
+        <slot name="content"></slot>
+      </view>
+    </view>
+    <view v-if="closeOnClickOverlay" class="dropdown" :class="dropdownShow ? 'mask' : 'none'" @click="close()"> </view>
+  </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";
+
+const emit = defineEmits(["close"]);
+const props = defineProps({
+  //显示隐藏
+  dropdownShow: {
+    type: Boolean,
+    default: false,
+  },
+  //是否开启遮罩层关闭
+  closeOnClickOverlay: {
+    type: Boolean,
+    default: true,
+  },
+});
+
+const { dropdownShow, closeOnClickOverlay } = toRefs(props);
+
+function close() {
+  emit("close", false);
+}
+</script>
+<style scoped>
+.dropdown {
+  position: absolute;
+  width: 100%;
+  background-color: #fff;
+  max-height: 0;
+  overflow: hidden;
+  z-index: 90;
+  transition: max-height 0.4s ease-in-out;
+  box-shadow: 0px 1px 2px 0px rgba(141, 141, 141, 0.4);
+}
+
+.dropdown.show {
+  max-height: 100%;
+}
+
+.dropdown.mask {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background-color: transparent;
+  height: 100%;
+  z-index: 50;
+}
+
+.dropdown .content {
+  padding: 10px;
+}
+</style>

+ 3 - 1
src/main.js

@@ -20,6 +20,7 @@ import oaTimeLineItem from "@/components/oa-timeLine-item/index"
 import oaUpload from "@/components/oa-upload/index"
 import oaScroll from "@/components/oa-scroll/index"
 import oaTouch from "@/components/oa-touch/index"
+import oaDropdown from "@/components/oa-dropdown/index"
 
 export function createApp() {
   const app = createSSRApp(App);
@@ -32,7 +33,8 @@ export function createApp() {
   app.component('oa-upload', oaUpload)
   app.component('oa-scroll', oaScroll)
   app.component('oa-touch', oaTouch)
-
+  app.component('oa-dropdown', oaDropdown)
+  
 
   // 挂载全局json导出
   app.component("downloadExcel", JsonExcel);

+ 2 - 2
src/manifest.json

@@ -1,7 +1,7 @@
 {
     "name" : "综合智慧云",
     "appid" : "__UNI__36DE3A0",
-    "description" : "综合智慧云",
+    "description" : "综合智慧云app,助力企业数字化转型升级",
     "versionName" : "2.0.5",
     "versionCode" : 7,
     "transformPx" : false,
@@ -115,7 +115,7 @@
                 "push" : {
                     "unipush" : {
                         "version" : "2",
-                        "offline" : false,
+                        "offline" : true,
                         "icons" : {
                             "small" : {
                                 "hdpi" : "unpackage/res/push/36x36.png",

+ 9 - 16
src/pages.json

@@ -467,33 +467,26 @@
       "root": "pages/business/fireIot",
       "pages": [
         {
-          "path": "deviceSelect/index",
+          "path": "deviceManage/index",
           "style": {
-            "navigationBarTitleText": "设备查询",
+            "navigationBarTitleText": "设备管理",
             "enablePullDownRefresh": false
           }
         },
         {
-          "path": "deviceSelect/components/deviceDetailsList",
+          "path": "deviceManage/components/deviceDetailsList",
           "style": {
             "navigationBarTitleText": "",
             "enablePullDownRefresh": false
           }
         },
         {
-          "path": "deviceSelect/components/deviceDetails",
+          "path": "deviceManage/components/deviceDetails",
           "style": {
             "navigationBarTitleText": "设备详情",
             "enablePullDownRefresh": false
           }
         },
-        {
-          "path": "facilitiesManage/index",
-          "style": {
-            "navigationBarTitleText": "设施管理",
-            "enablePullDownRefresh": false
-          }
-        },
         {
           "path": "facilitiesGather/index",
           "style": {
@@ -509,28 +502,28 @@
           }
         },
         {
-          "path": "facilitiesView/index",
+          "path": "facilitiesManage/index",
           "style": {
-            "navigationBarTitleText": "设施查看",
+            "navigationBarTitleText": "设施管理",
             "enablePullDownRefresh": false
           }
         },
         {
-          "path": "facilitiesView/mapGatherView",
+          "path": "facilitiesManage/mapFacilitiesView",
           "style": {
             "navigationBarTitleText": "设施查看",
             "enablePullDownRefresh": false
           }
         },
         {
-          "path": "facilitiesView/facilitiesDetailsList",
+          "path": "facilitiesManage/facilitiesDetailsList",
           "style": {
             "navigationBarTitleText": "",
             "enablePullDownRefresh": false
           }
         },
         {
-          "path": "facilitiesView/facilitiesDetails",
+          "path": "facilitiesManage/facilitiesDetails",
           "style": {
             "navigationBarTitleText": "设施详情",
             "enablePullDownRefresh": false

+ 1 - 1
src/pages/business/fireIot/alarmManage/index.vue

@@ -14,7 +14,7 @@
     :data-theme="'theme-' + proxy.$settingStore.themeColor.type"
   >
     <template #default>
-      <view class="deviceSelect">
+      <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>

+ 0 - 0
src/pages/business/fireIot/deviceSelect/components/chart.vue → src/pages/business/fireIot/deviceManage/components/chart.vue


+ 1 - 1
src/pages/business/fireIot/deviceSelect/components/deviceDetails.vue → src/pages/business/fireIot/deviceManage/components/deviceDetails.vue

@@ -99,7 +99,7 @@ import { publicStores, useStores } from "@/store/modules/index";
 
 import chart from "./chart.vue";
 
-import { dmpProductAttribute, historyMetrics, last } from "@/api/business/fireIot/deviceSelect/index";
+import { dmpProductAttribute, historyMetrics, last } from "@/api/business/fireIot/deviceManage.js";
 
 const { proxy } = getCurrentInstance();
 const publicStore = publicStores();

+ 213 - 0
src/pages/business/fireIot/deviceManage/components/deviceDetailsList.vue

@@ -0,0 +1,213 @@
+<template>
+  <oa-scroll
+    customClass="scroll-height"
+    :pageSize="pageSize"
+    :total="total"
+    :refresherLoad="true"
+    :refresherEnabled="true"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    @load="load"
+    @refresh="refresh"
+    :data-theme="'theme-' + proxy.$settingStore.themeColor.name"
+  >
+    <template #default>
+      <view class="deviceDetailsList-container">
+        <view class="flex bg-white padding-10" style="position: relative">
+          <u--input
+            v-model="deviceName"
+            placeholder="请输入设备名称"
+            prefixIcon="search"
+            prefixIconStyle="font-size: 22px;color: #909399"
+            customStyle="height:30px;background-color:#f5f6fa;"
+            @confirm="dmpDeviceInfoApi()"
+            clearable
+          ></u--input>
+          <view class="margin-l-10" style="margin-top: auto; margin-bottom: auto" @click="dropdownShow = !dropdownShow">筛选</view>
+        </view>
+
+        <oa-dropdown :dropdownShow="dropdownShow" :closeOnClickOverlay="true" @close="dropdownShow = false">
+          <template #content>
+            <u-radio-group v-model="radioValue" placement="column" iconPlacement="right" @change="radioChange">
+              <u-radio v-for="ra in radioList" :key="ra" :activeColor="proxy.$settingStore.themeColor.color" :label="ra.label" :name="ra.value"></u-radio>
+            </u-radio-group>
+          </template>
+        </oa-dropdown>
+
+        <view class="menu-list margin-0">
+          <view class="list-cell list-cell-arrow" v-for="(base, index) in dataList" :key="index" @click="handleToDevice(base)">
+            <view class="menu-item-box">
+              <image class="image-bg" style="width: 80rpx; height: 80rpx; margin: auto 10px auto 0" src="@/static/images/deviceManage/1.png"></image>
+
+              <view style="width: calc(100% - 51px); display: flex; flex-flow: row wrap; padding-right: 10px">
+                <view class="deviceHeader">
+                  <view class="deviceName text-ellipsis">设备编号:{{ base.deviceId }}</view>
+                  <view class="deviceStatus" v-if="base.deviceStatus == 1" style="background-color: #12c100"> 在线 </view>
+                  <view class="deviceStatus" v-if="base.deviceStatus == 2" style="background-color: red"> 离线 </view>
+                </view>
+                <view class="deviceContent">设备名称:{{ base.deviceName }}</view>
+                <view class="deviceContent">安装位置:{{ base.installAddress }}</view>
+                <!-- <view class="deviceContent">激活状态:{{ base.serviceStatus == 1 ? "未激活" : base.serviceStatus == 2 ? "已激活" : "禁用" }}</view> -->
+              </view>
+            </view>
+          </view>
+        </view>
+      </view>
+    </template>
+  </oa-scroll>
+</template>
+
+<script setup>
+import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
+import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
+import { publicStores, useStores } from "@/store/modules/index";
+
+import { dmpDeviceInfo } from "@/api/business/fireIot/deviceManage.js";
+
+const { proxy } = getCurrentInstance();
+const publicStore = publicStores();
+
+const dataList = ref([]);
+const deviceName = ref("");
+const productId = ref("");
+const productName = ref("");
+const pageSize = ref(20);
+const current = ref(1);
+const total = ref(0);
+
+const data = reactive({
+  radioList: [
+    {
+      label: "全部",
+      value: "",
+    },
+    {
+      label: "在线",
+      value: "1",
+    },
+    {
+      label: "离线",
+      value: "2",
+    },
+  ],
+  radioValue: "",
+  dropdownShow: false,
+});
+
+const { radioList, radioValue, dropdownShow } = toRefs(data);
+
+/**
+ * @页面初始化
+ */
+function init() {
+  dmpDeviceInfoApi();
+}
+
+/**
+ * @列表查询
+ * @api接口查询
+ */
+
+function dmpDeviceInfoApi() {
+  dmpDeviceInfo({ productId: productId.value, deviceName: deviceName.value, current: current.value, size: pageSize.value }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      dataList.value = requset.data.records;
+      total.value = requset.data.total;
+
+      uni.setNavigationBarTitle({
+        title: `${productName.value}(${total.value})`,
+      });
+    }
+  });
+}
+
+/**
+ * @设备详情跳转点击事件
+ */
+function handleToDevice(array) {
+  proxy.$tab.navigateTo("/pages/business/fireIot/deviceManage/components/deviceDetails");
+
+  publicStore.$state.deviceDetailsArray = array;
+  publicStore.$state.deviceDetailsArray.productName = productName.value;
+}
+
+/**
+ * @单选change事件
+ */
+function radioChange(e) {
+  radioValue.value = e;
+  selectListApi();
+}
+
+/**
+ * @scrollView加载数据
+ */
+function load() {
+  pageSize.value += 10;
+  init();
+}
+
+/**
+ * @scrollView刷新数据
+ */
+function refresh() {
+  deviceName.value = "";
+  pageSize.value = 20;
+  total.value = 0;
+  init();
+}
+
+onReady(() => {});
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+
+onLoad((options) => {
+  if ("productName" in options) {
+    productName.value = options.productName;
+  }
+  if ("id" in options) {
+    productId.value = parseInt(options.id);
+    init();
+  }
+});
+</script>
+
+<style lang="scss" scoped>
+.deviceDetailsList-container {
+  .menu-item-box {
+  }
+
+  .deviceHeader {
+    min-width: 100%;
+    font-size: 15px;
+    display: flex;
+    white-space: nowrap;
+
+    .deviceName {
+      min-width: 70%;
+      color: #000;
+    }
+
+    .deviceStatus {
+      max-width: 30%;
+      margin-left: 20px;
+      font-size: 12px;
+      color: #ffffff;
+      padding: 0 5px;
+      border-radius: 20px;
+      line-height: 20px;
+    }
+  }
+
+  .deviceContent {
+    min-width: 100%;
+    margin-top: 10px;
+    font-size: 14px;
+    color: rgb(102, 102, 102);
+  }
+}
+</style>

+ 3 - 3
src/pages/business/fireIot/deviceSelect/index.vue → src/pages/business/fireIot/deviceManage/index.vue

@@ -14,7 +14,7 @@
     :data-theme="'theme-' + proxy.$settingStore.themeColor.type"
   >
     <template #default>
-      <view class="deviceSelect">
+      <view class="deviceManage">
         <u-grid :border="true">
           <u-grid-item v-for="(base, index) in dataList" :key="index" @click="handleToDevice(base.id, base.productName)">
             <u-badge type="primary" max="9999" :value="base.deviceCount" :showZero="true" :absolute="true" :offset="[10, 10, 0, 0]"></u-badge>
@@ -32,7 +32,7 @@ import { onReady, onLoad, onShow, onNavigationBarButtonTap, onPullDownRefresh, o
 import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance } from "vue";
 import { useStores, publicStores } from "@/store/modules/index";
 
-import { dmpProductInfo } from "@/api/business/fireIot/deviceSelect/index";
+import { dmpProductInfo } from "@/api/business/fireIot/deviceManage.js";
 
 const { proxy } = getCurrentInstance();
 
@@ -64,7 +64,7 @@ function init() {
 }
 
 function handleToDevice(id, productName) {
-  proxy.$tab.navigateTo(`/pages/business/fireIot/deviceSelect/components/deviceDetailsList?id=${id}&productName=${productName}`);
+  proxy.$tab.navigateTo(`/pages/business/fireIot/deviceManage/components/deviceDetailsList?id=${id}&productName=${productName}`);
 }
 
 /**

+ 0 - 135
src/pages/business/fireIot/deviceSelect/components/deviceDetailsList.vue

@@ -1,135 +0,0 @@
-<template>
-  <u-sticky class="example-body" style="top: 0px">
-    <view class="padding-sm padding-tb-10" :class="'bg-' + proxy.$settingStore.themeColor.name">
-      <u--input
-        v-model="deviceName"
-        placeholder="搜索"
-        prefixIcon="search"
-        prefixIconStyle="font-size: 22px;color: #909399"
-        customStyle="height:35px;background-color:#f5f6fa;"
-        @confirm="init()"
-        clearable
-      ></u--input>
-    </view>
-  </u-sticky>
-
-  <oa-scroll
-    customClass="scroll-height"
-    :pageSize="pageSize"
-    :total="total"
-    :refresherLoad="true"
-    :refresherEnabled="true"
-    :refresherDefaultStyle="'none'"
-    :refresherThreshold="44"
-    :refresherBackground="'#f5f6f7'"
-    @load="load"
-    @refresh="refresh"
-    :data-theme="'theme-' + proxy.$settingStore.themeColor.name"
-  >
-    <template #default>
-      <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)">
-            <view class="menu-item-box">
-              <view class="title">{{ base.deviceName }}</view>
-            </view>
-          </view>
-        </view>
-      </view>
-    </template>
-  </oa-scroll>
-</template>
-
-<script setup>
-import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
-import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
-import { publicStores, useStores } from "@/store/modules/index";
-
-import { dmpDeviceInfo } from "@/api/business/fireIot/deviceSelect/index";
-
-const { proxy } = getCurrentInstance();
-const publicStore = publicStores();
-
-const dataList = ref([]);
-const deviceName = ref("");
-const productId = ref("");
-const productName = ref("");
-const pageSize = ref(20);
-const current = ref(1);
-const total = ref(0);
-
-/**
- * @页面初始化
- */
-function init() {
-  dmpDeviceInfoApi();
-}
-
-/**
- * @列表查询
- * @api接口查询
- */
-
-function dmpDeviceInfoApi() {
-  dmpDeviceInfo({ productId: productId.value, deviceName: deviceName.value, current: current.value, size: pageSize.value }).then((requset) => {
-    if (requset.status === "SUCCESS") {
-      dataList.value = requset.data.records;
-      total.value = requset.data.total;
-
-      uni.setNavigationBarTitle({
-        title: `${productName.value}(${total.value})`,
-      });
-    }
-  });
-}
-
-/**
- * @设备详情跳转点击事件
- */
-function handleToDevice(array) {
-  proxy.$tab.navigateTo("/pages/business/fireIot/deviceSelect/components/deviceDetails");
-
-  publicStore.$state.deviceDetailsArray = array;
-  publicStore.$state.deviceDetailsArray.productName = productName.value;
-}
-
-/**
- * @scrollView加载数据
- */
-function load() {
-  pageSize.value += 10;
-  init();
-}
-
-/**
- * @scrollView刷新数据
- */
-function refresh() {
-  deviceName.value = "";
-  pageSize.value = 20;
-  total.value = 0;
-  init();
-}
-
-onReady(() => {});
-
-onShow(() => {
-  //调用系统主题颜色
-  proxy.$settingStore.systemThemeColor([1]);
-});
-
-onLoad((options) => {
-  if ("productName" in options) {
-    productName.value = options.productName;
-  }
-  if ("id" in options) {
-    productId.value = parseInt(options.id);
-    init();
-  }
-});
-</script>
-
-<style lang="scss" scoped>
-.deviceDetailsList-container {
-}
-</style>

+ 1 - 1
src/pages/business/fireIot/facilitiesView/facilitiesDetails.vue → src/pages/business/fireIot/facilitiesManage/facilitiesDetails.vue

@@ -120,7 +120,7 @@ import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, on
 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";
+import { facilityInfo, deviceInfo, buildInfo } from "@/api/business/fireIot/facilitiesManage.js";
 
 const { proxy } = getCurrentInstance();
 

+ 15 - 16
src/pages/business/fireIot/facilitiesView/facilitiesDetailsList.vue → src/pages/business/fireIot/facilitiesManage/facilitiesDetailsList.vue

@@ -1,18 +1,4 @@
 <template>
-  <u-sticky class="example-body" style="top: 0px">
-    <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>
-
   <oa-scroll
     customClass="scroll-height"
     :pageSize="pageSize"
@@ -28,6 +14,19 @@
   >
     <template #default>
       <view class="facilitiesDetailsList-container">
+        <view class="flex bg-white padding-10" style="position: relative">
+          <u--input
+            v-model="facilityName"
+            placeholder="请输入设施名称"
+            prefixIcon="search"
+            prefixIconStyle="font-size: 22px;color: #909399"
+            customStyle="height:30px;background-color:#f5f6fa;"
+            @confirm="init()"
+            clearable
+          ></u--input>
+          <view class="margin-l-10" style="margin-top: auto; margin-bottom: auto" @click="init()">筛选</view>
+        </view>
+
         <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">
@@ -45,7 +44,7 @@ import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, on
 import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
 import { publicStores, useStores } from "@/store/modules/index";
 
-import { baseGgpFacility } from "@/api/business/fireIot/facilitiesView/index";
+import { baseGgpFacility } from "@/api/business/fireIot/facilitiesManage.js";
 
 const { proxy } = getCurrentInstance();
 
@@ -87,7 +86,7 @@ function selectListApi() {
  * @设备详情跳转点击事件
  */
 function handleToDevice(id) {
-  proxy.$tab.navigateTo(`/pages/business/fireIot/facilitiesView/facilitiesDetails?id=${id}&typeName=${facilityTypeName.value}`);
+  proxy.$tab.navigateTo(`/pages/business/fireIot/facilitiesManage/facilitiesDetails?id=${id}&typeName=${facilityTypeName.value}`);
 }
 
 /**

+ 96 - 48
src/pages/business/fireIot/facilitiesManage/index.vue

@@ -1,21 +1,51 @@
 <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>
+  <oa-scroll
+    customClass="scroll-height"
+    :refresherLoad="false"
+    :refresherLoadTitle="false"
+    :refresherEnabled="true"
+    :refresherDefaultStyle="'none'"
+    :refresherThreshold="44"
+    :refresherBackground="'#f5f6f7'"
+    @refresh="refresh"
+    :data-theme="'theme-' + proxy.$settingStore.themeColor.name"
+  >
+    <template #default>
+      <view class="flex padding-tb-sm bg-white">
+        <view class="padding-lr-sm text-center" style="width: 50%">设施类型:{{ typeNum || 0 }}</view>
+        <view class="divider-default"></view>
+        <view class="padding-lr-sm text-center" style="width: 50%">设施总数:{{ 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">
+        <view class="margin-right-sm" style="margin-top: auto; margin-bottom: auto" @click="handleToDevice(data.id, data.typeName)">
+          <image style="width: 40px" :src="data.typeImg ? data.typeImg : '/static/images/404.png'" mode="widthFix"></image>
+        </view>
+
+        <view style="width: 100%" @click="handleToDevice(data.id, data.typeName)">
+          <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 || 0 }})</view>
+          </view>
+          <view>
+            <view class="flex">
+              <view style="font-size: 14px; width: 33.33%">正常:{{ data.normalFacilityNum || 0 }}</view>
+              <view style="font-size: 14px; width: 33.33%">维修:{{ data.upkeepFacilityNum || 0 }}</view>
+              <view style="font-size: 14px; width: 33.33%">关闭:{{ data.closeFacilityNum || 0 }}</view>
             </view>
-            <text style="font-size: 14px">{{ item.title }}</text>
           </view>
         </view>
+
+        <view style="margin-top: auto; margin-bottom: auto" @click="handleToMap(data.typeCode)">
+          <view class="iconfont ucicon-app-map icon" :style="{ color: proxy.$settingStore.themeColor.color, fontSize: '22px' }"></view>
+        </view>
       </view>
-      <!-- 宫格列表 end -->
-    </view>
-  </scroll-view>
+    </template>
+  </oa-scroll>
+
+  <view style="position: fixed; right: 0; bottom: 50px">
+    <u-image width="67" height="67" src="@/static/images/add.png" shape="circle" @tap="handleToPage()"></u-image>
+  </view>
 </template>
 
 <script setup>
@@ -23,48 +53,66 @@ 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 { baseFacilityType } from "@/api/business/fireIot/facilitiesManage.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) {
-        }
-      },
-    });
-  }
+const typeNum = ref(0);
+const facilityNum = ref(0);
+const dataList = ref([]);
+
+/**
+ * @页面初始化
+ */
+function init() {
+  baseFacilityType({
+    pageNum: 1,
+    pageSize: 20000,
+  }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      if (requset.data.length > 0) {
+        dataList.value = requset.data[0].baseGgpFacilityTypeNumVO;
+        typeNum.value = requset.data[0].typeNum;
+        facilityNum.value = requset.data[0].facilityNum;
+      }
+    }
+  });
 }
 
-onLoad(() => {});
+/**
+ * @scrollView刷新数据
+ */
+function refresh() {
+  init();
+}
+
+/**
+ * @设施详情列表跳转点击事件
+ */
+function handleToDevice(id, typeName) {
+  proxy.$tab.navigateTo(`/pages/business/fireIot/facilitiesManage/facilitiesDetailsList?id=${id}&typeName=${typeName}`);
+}
+
+/**
+ * @设施地图查看
+ */
+function handleToMap(typeCode) {
+  proxy.$tab.navigateTo(`/pages/business/fireIot/facilitiesManage/mapFacilitiesView?typeCode=${typeCode}`);
+}
+
+/**
+ * @设施地图采集
+ */
+function handleToPage() {
+  proxy.$tab.navigateTo(`/pages/business/fireIot/facilitiesGather/index`);
+}
+
+onLoad(() => {
+  init();
+});
 
 onShow(() => {
   //调用系统主题颜色

+ 131 - 0
src/pages/business/fireIot/facilitiesManage/mapFacilitiesView.vue

@@ -0,0 +1,131 @@
+<template>
+  <web-view
+    id="amapView"
+    ref="amapView"
+    src="/static/amap/mapFacilitiesView.html"
+    bindmessage="receiveMessage"
+    :webview-styles="{
+      height: proxy.$settingStore.webViewHeight,
+    }"
+    @message="onMessage"
+  ></web-view>
+</template>
+
+<script setup>
+import { onReady, onLoad, onShow, onNavigationBarButtonTap } from "@dcloudio/uni-app";
+import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance, toRefs, nextTick } from "vue";
+import { publicStores, useStores } from "@/store/modules/index";
+
+import { baseFacilityType, baseGgpFacilityList } from "@/api/business/fireIot/facilitiesManage.js";
+
+const publicStore = publicStores(); //全局公共Store
+
+const { proxy } = getCurrentInstance();
+const pages = getCurrentPages();
+
+const dataArray = ref();
+const typeCode = ref("");
+
+/**
+ * @初始化
+ */
+function init() {
+  handleSelectApi();
+}
+
+/**
+ * @设施地图列表查询
+ * @api接口查询
+ */
+function handleSelectApi() {
+  baseFacilityType({
+    pageNum: 1,
+    pageSize: 20000,
+  }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      if (requset.data.length > 0) {
+        setTimeout(() => {
+          var message = {
+            funcName: "初始化",
+            param: JSON.stringify(requset.data[0]),
+          };
+
+          handleChildren(message);
+        }, 1000);
+      }
+    }
+  });
+}
+
+/**
+ * @撒点查询
+ * @api接口查询
+ */
+function handleMarkerApi(param) {
+  baseGgpFacilityList({
+    facilityType: param,
+  }).then((requset) => {
+    if (requset.status === "SUCCESS") {
+      var message = {
+        funcName: "撒点",
+        param: JSON.stringify(requset.data),
+      };
+      handleChildren(message);
+    }
+  });
+}
+
+/**
+ * @解析父页面传回的数据
+ */
+function analysisData(data) {
+  if ("funcName" in data) {
+    if (data.funcName == "撒点") {
+      var param = data.param.split(",");
+      handleMarkerApi(param);
+    }
+  }
+}
+
+/**
+ * @向子页面发送数据
+ */
+function handleChildren(data) {
+  // #ifdef APP-PLUS
+  var currentWebview = pages[pages.length - 1].$getAppWebview();
+  var wv = currentWebview.children()[0];
+  wv.evalJS(`receiveData(${JSON.stringify(data)})`);
+  // #endif
+
+  // #ifdef H5
+  var iframe = document.getElementById("amapView");
+  iframe.contentWindow.postMessage(data, "*");
+  // #endif
+}
+
+/**
+ * @接收子页面传过来的值
+ */
+function onMessage(e) {
+  analysisData(e.detail.data[0]);
+}
+// #ifdef H5
+window.onmessage = function (event) {
+  analysisData(event.data);
+};
+// #endif
+
+onLoad((options) => {
+  if ("typeCode" in options) {
+    typeCode.value = options.typeCode;
+    init();
+  }
+});
+
+onShow(() => {
+  //调用系统主题颜色
+  proxy.$settingStore.systemThemeColor([1]);
+});
+
+onReady(() => {});
+</script>

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

@@ -1,109 +0,0 @@
-<template>
-  <oa-scroll
-    customClass="scroll-height"
-    :refresherLoad="false"
-    :refresherLoadTitle="false"
-    :refresherEnabled="true"
-    :refresherDefaultStyle="'none'"
-    :refresherThreshold="44"
-    :refresherBackground="'#f5f6f7'"
-    @refresh="refresh"
-    :data-theme="'theme-' + proxy.$settingStore.themeColor.name"
-  >
-    <template #default>
-      <view class="flex padding-tb-sm bg-white">
-        <view class="padding-lr-sm text-center" style="width: 50%">设施类型:{{ typeNum || 0 }}</view>
-        <view class="divider-default"></view>
-        <view class="padding-lr-sm text-center" style="width: 50%">设施总数:{{ 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">
-        <view class="margin-right-sm" style="margin-top: auto; margin-bottom: auto" @click="handleToDevice(data.id, data.typeName)">
-          <image style="width: 40px" :src="data.typeImg ? data.typeImg : '/static/images/404.png'" mode="widthFix"></image>
-        </view>
-
-        <view style="width: 100%" @click="handleToDevice(data.id, data.typeName)">
-          <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 || 0 }})</view>
-          </view>
-          <view>
-            <view class="flex">
-              <view style="font-size: 14px; width: 33.33%">正常:{{ data.normalFacilityNum || 0 }}</view>
-              <view style="font-size: 14px; width: 33.33%">维修:{{ data.upkeepFacilityNum || 0 }}</view>
-              <view style="font-size: 14px; width: 33.33%">关闭:{{ data.closeFacilityNum || 0 }}</view>
-            </view>
-          </view>
-        </view>
-
-        <view style="margin-top: auto; margin-bottom: auto" @click="handleToMap(data.id)">
-          <view class="iconfont ucicon-app-map icon" :style="{ color: proxy.$settingStore.themeColor.color, fontSize: '22px' }"></view>
-        </view>
-      </view>
-    </template>
-  </oa-scroll>
-</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 { 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") {
-      if (requset.data.length > 0) {
-        dataList.value = requset.data[0].baseGgpFacilityTypeNumVO;
-        typeNum.value = requset.data[0].typeNum;
-        facilityNum.value = requset.data[0].facilityNum;
-      }
-    }
-  });
-}
-
-/**
- * @scrollView刷新数据
- */
-function refresh() {
-  init();
-}
-
-/**
- * @设施详情列表跳转点击事件
- */
-function handleToDevice(id, typeName) {
-  proxy.$tab.navigateTo(`/pages/business/fireIot/facilitiesView/facilitiesDetailsList?id=${id}&typeName=${typeName}`);
-}
-
-/**
- * @设施地图查看
- */
-function handleToMap(id) {
-  proxy.$tab.navigateTo(`/pages/business/fireIot/facilitiesView/mapGatherView?facilitiesId=${id}`);
-}
-
-onLoad(() => {
-  init();
-});
-
-onShow(() => {
-  //调用系统主题颜色
-  proxy.$settingStore.systemThemeColor([1]);
-});
-</script>
-
-<style lang="scss"></style>

+ 0 - 81
src/pages/business/fireIot/facilitiesView/mapGatherView.vue

@@ -1,81 +0,0 @@
-<template>
-  <web-view
-    id="amapView"
-    ref="amapView"
-    src="/static/amap/mapGatherView.html"
-    bindmessage="receiveMessage"
-    :webview-styles="{
-      height: proxy.$settingStore.webViewHeight,
-    }"
-    @message="onMessage"
-  ></web-view>
-</template>
-
-<script setup>
-import { onReady, onLoad, onShow, onNavigationBarButtonTap } from "@dcloudio/uni-app";
-import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance, toRefs, nextTick } from "vue";
-import { publicStores, useStores } from "@/store/modules/index";
-
-const publicStore = publicStores(); //全局公共Store
-
-const { proxy } = getCurrentInstance();
-
-const pages = getCurrentPages();
-
-const dataArray = publicStore.$state.facilitiesGatherArray;
-const dataType = publicStore.$state.facilitiesGatherType;
-
-// #ifdef APP-PLUS
-setTimeout(() => {
-  var currentWebview = pages[pages.length - 1].$getAppWebview();
-  var wv = currentWebview.children()[0];
-  wv.evalJS(`receiveData(${JSON.stringify({ dataArray: dataArray, dataType: dataType })})`);
-}, 1000);
-// #endif
-
-function onMessage(e) {
-  console.log("父页面:", e.detail.data);
-  publicStore.$state.facilitiesGatherArray = JSON.parse(e.detail.data);
-  uni.redirectTo({
-    url: "/pages/business/fireIot/facilitiesGather/index",
-  });
-}
-
-// #ifdef H5
-setTimeout(() => {
-  var iframe = document.getElementById("amapView");
-  var message = {
-    funcName: "children",
-    param: JSON.stringify(dataArray),
-    typeName: dataType,
-  };
-
-  iframe.contentWindow.postMessage(message, "*");
-}, 1000);
-
-window.onmessage = function (event) {
-  if ("funcName" in event.data) {
-    console.log("父页面:", event);
-    publicStore.$state.facilitiesGatherArray = JSON.parse(event.data.param);
-    uni.redirectTo({
-      url: "/pages/business/fireIot/facilitiesGather/index",
-    });
-  }
-};
-// #endif
-
-onLoad((options) => {
-  if ("facilitiesId" in options) {
-    var facilitiesId = options.facilitiesId;
-  }
-});
-
-onShow(() => {
-  //调用系统主题颜色
-  proxy.$settingStore.systemThemeColor([1]);
-});
-
-onReady(() => {});
-
-onMounted(() => {});
-</script>

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

@@ -36,7 +36,7 @@
     </uni-swipe-action>
 
     <view class="app-scan-fixed">
-      <u-image width="67" height="67" src="@/static/images/xunjian/plan-scan.png" shape="circle" @click="scanClick()"></u-image>
+      <u-image width="67" height="67" src="@/static/images/add.png" shape="circle" @click="scanClick()"></u-image>
     </view>
 
     <!-- 提示信息弹窗 -->

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

@@ -53,7 +53,7 @@
       </view>
     </view>
     <view class="app-scan-fixed">
-      <u-image width="67" height="67" src="@/static/images/xunjian/plan-scan.png" shape="circle" @click="scanClick()"></u-image>
+      <u-image width="67" height="67" src="@/static/images/add.png" shape="circle" @click="scanClick()"></u-image>
     </view>
   </scroll-view>
 </template>

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

@@ -94,7 +94,7 @@
     </view>
 
     <view class="app-scan-fixed">
-      <u-image width="67" height="67" src="@/static/images/xunjian/plan-scan.png" shape="circle" @click="scanClick()"></u-image>
+      <u-image width="67" height="67" src="@/static/images/add.png" shape="circle" @click="scanClick()"></u-image>
     </view>
 
     <drawer v-if="scanArray.length > 0" :scanArray="scanArray" :scanBool="scanBool" @scanClose="scanClose"></drawer>

+ 1 - 2
src/pages/business/zhxf/funReport/index.vue

@@ -58,9 +58,8 @@
 
     <!-- 新增按钮start -->
     <view style="position: fixed; right: 0; bottom: 50px">
-      <u-image width="67" height="67" src="@/static/images/xunjian/plan-scan.png" shape="circle" @tap="goAddPage()"></u-image>
+      <u-image width="67" height="67" src="@/static/images/add.png" shape="circle" @tap="goAddPage()"></u-image>
     </view>
-
     <!-- 新增按钮end -->
   </view>
 </template>

+ 4 - 40
src/pages/common/customManage/index.vue

@@ -26,14 +26,13 @@
           <view class="margin-l-10" style="margin-top: auto; margin-bottom: auto" @click="dropdownShow = !dropdownShow">筛选</view>
         </view>
 
-        <view class="dropdown" :class="dropdownShow ? 'show' : 'none'">
-          <view class="padding-10">
+        <oa-dropdown :dropdownShow="dropdownShow" :closeOnClickOverlay="true" @close="dropdownShow = false">
+          <template #content>
             <u-radio-group v-model="radioValue" placement="column" iconPlacement="right" @change="radioChange">
               <u-radio v-for="ra in radioList" :key="ra" :activeColor="proxy.$settingStore.themeColor.color" :label="ra.label" :name="ra.value"></u-radio>
             </u-radio-group>
-          </view>
-        </view>
-        <view class="dropdown" :class="dropdownShow ? 'mask' : 'none'" @click="dropdownShow = !dropdownShow"> </view>
+          </template>
+        </oa-dropdown>
 
         <view class="container-area menu-list margin-lr-0" v-for="data in dataList" :key="data">
           <view class="list-cell" style="color: #666666; line-height: 30px">
@@ -205,40 +204,5 @@ onNavigationBarButtonTap((e) => {
 }
 
 .customManage-container {
-  .container-area {
-  }
-
-  .dropdown {
-    position: absolute;
-    width: 100%;
-    background-color: #fff;
-    max-height: 0;
-    overflow: hidden;
-    z-index: 90;
-
-    &.show {
-      animation: dropdown 3s ease forwards;
-    }
-
-    &.mask {
-      position: fixed;
-      top: 0;
-      left: 0;
-      right: 0;
-      bottom: 0;
-      background-color: transparent;
-      max-height: 100%;
-      z-index: 50;
-    }
-  }
-
-  @keyframes dropdown {
-    from {
-      max-height: 0;
-    }
-    to {
-      max-height: 100%;
-    }
-  }
 }
 </style>

+ 74 - 41
src/pages/index.vue

@@ -16,8 +16,6 @@
     </template>
   </u-navbar>
 
-  <!-- <pagesHarder></pagesHarder> -->
-
   <oa-scroll
     customClass="scroll-height"
     :customStyle="{ height: `calc(100vh - (50px + ${proxy.$settingStore.barHightTop} + ${proxy.$settingStore.tabBarHeight}))` }"
@@ -54,13 +52,28 @@
 
         <image v-if="!swiperBool" style="width: 100%; height: 160px" src="@/static/images/index/banner1.png"></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">07-25 19:23</view>
+        <view class="app-common-notice bg-white radius shadow-default margin-lr-sm margin-bottom-sm">
+          <!-- <view class="info">
+            <view class="info-header">
+              <view class="info-title text-df">综合智慧云</view>
+              <view class="info-time text-sm">07-25 19:23</view>
+            </view>
+            <view class="info-center text-sm">综合智慧云app,助力企业数字化转型升级,超多业务功能,全新部署上线,操作简单流畅...</view>
+          </view> -->
+
+          <view class="weather radius">
+            <view class="weather-header">
+              <view class="iconfont ucicon-address icon"></view>
+              <view style="margin: 0 15px 0 0">{{ weatherData.length != 0 ? weatherData[0].location : "" }}</view>
+              <view style="margin: 0 auto 0 0">今天</view>
+              <view style="margin: 0 0 0 0">{{ weatherData.length != 0 ? weatherData[0].text : "" }}</view>
+            </view>
+            <view class="weather-center">
+              <view class="temperature">{{ weatherData.length != 0 ? weatherData[0].today.low + "/" + weatherData[0].today.high : "0℃" }}</view>
+              <image class="image" :src="`${weatherData.length != 0 ? '/static/icons/white/' + weatherData[0].code.now + '.png' : ''}`" mode="heightFix" style="height: 30px"></image>
+            </view>
           </view>
-          <view class="info-content text-sm">综合智慧云app,助力企业数字化转型升级,超多业务功能,全新部署上线,操作简单流畅...</view>
-        </view> -->
+        </view>
 
         <!-- 轮播图 结束 -->
 
@@ -127,9 +140,11 @@ const arrayList = reactive({
 
   cuIconList: [],
   recentlyUsed: [],
+
+  weatherData: [], //天气信息值存储
 });
 
-const { dialogFlag, swiperBool, swiperIndex, swiperTime, swiperList, cuIconList, recentlyUsed } = toRefs(arrayList);
+const { dialogFlag, swiperBool, swiperIndex, swiperTime, swiperList, cuIconList, recentlyUsed, weatherData } = toRefs(arrayList);
 
 /**
  * @获取轮播图下标
@@ -161,6 +176,25 @@ function swiperClick(list) {
   }
 }
 
+/**
+ * @获取天气信息
+ */
+function getWeather(string) {
+  uni.request({
+    url: `https://widget-v3.seniverse.com/api/weather/7b8a7d89-f01d-4b14-bdec-5ae0b82c857f?unit=c&language=zh-Hans&location=${string}`,
+    success: (res) => {
+      if (res.statusCode == 200) {
+        weatherData.value = res.data.results[0].data;
+      } else {
+        console.log("获取天气信息失败");
+      }
+    },
+    fail: (err) => {
+      console.log("获取天气信息失败", err);
+    },
+  });
+}
+
 onLoad((option) => {
   uni.hideTabBar(); //隐藏自带tabbar
 
@@ -170,6 +204,7 @@ onLoad((option) => {
 
   getAppRoutersData(); //调用路由信息接口
   getMobileBannerApi(); //调用banner图接口
+  getLocation(); //调用获取地理位置方法
 });
 
 /**
@@ -178,6 +213,7 @@ onLoad((option) => {
 function refresh() {
   getAppRoutersData(); //调用路由信息接口
   getMobileBannerApi(); //调用banner图接口
+  getLocation(); //调用获取地理位置方法
 }
 
 /**
@@ -235,15 +271,32 @@ function scanCode() {
  * @获取地理位置
  */
 function getLocation() {
-  jwx.configWeiXin((jweixin) => {
-    // 微信公众号获取位置
-    jweixin.getLocation({
-      type: "gcj02", // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
-      success: function (res) {
-        alert(res.longitude);
-      },
-    });
+  //#ifdef H5 || MP-WEIXIN
+  // jwx.configWeiXin((jweixin) => {
+  //   // 微信公众号获取位置
+  //   jweixin.getLocation({
+  //     type: "gcj02", // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
+  //     success: function (res) {
+  //       alert(res.longitude);
+  //     },
+  //   });
+  // });
+  getWeather("上海");
+  //#endif
+
+  //#ifdef APP-PLUS
+  uni.getLocation({
+    type: "wgs84",
+    success: function (res) {
+      // console.log("当前位置的经度:" + res.longitude);
+      // console.log("当前位置的纬度:" + res.latitude);
+      getWeather(res.latitude + ":" + res.longitude);
+    },
+    fail: function (res) {
+      getWeather("上海");
+    },
   });
+  //#endif
 }
 
 /**
@@ -333,39 +386,19 @@ function getMobileBannerApi() {
  * @api接口请求
  */
 function getAppRoutersData() {
-  getAppRouters({
-    // domain: window.location.host.indexOf("localhost") != -1 ? "localhost:81" : window.location.host,
-    // platformType: "MOB",
-    // domain :'172.16.120.165:13201'
-    // domain :'172.16.120.165:13203'
-  }).then((res) => {
-    res.data.forEach((el) => {
-      el.meta.icon = `/static/icons/index/${el.meta.icon}.png`;
-    });
-
+  getAppRouters().then((res) => {
+    // res.data.forEach((el) => {
+    //     el.meta.icon = `/static/icons/index/${el.meta.icon}.png`;
+    // });
     cuIconList.value = res.data;
   });
 }
 
 onShow(() => {});
-
-// 自定义导航事件
-onNavigationBarButtonTap((e) => {
-  if (e.float == "right") {
-    // alert("你点击了扫一扫");
-    scanCode();
-  } else {
-    rightButtonClick();
-  }
-});
 </script>
 
 <style lang="scss" scoped>
 .home-container {
-  // #ifdef H5
-  // padding-bottom: 50px;
-  // #endif
-
   .transition {
     position: fixed;
     top: 0;

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

@@ -69,13 +69,13 @@
           </template>
         </u-input>
 
-        <u-input class="margin-b-15" v-model="oldPassword" placeholder="请输入新密码" :password="newPasswordBool" border="bottom">
+        <u-input class="margin-b-15" v-model="newPassword" placeholder="请输入新密码" :password="newPasswordBool" border="bottom">
           <template #suffix>
             <text :class="!newPasswordBool ? 'iconfont ucicon-eye' : 'iconfont ucicon-eye-close'" @click="newPasswordBool = !newPasswordBool"></text>
           </template>
         </u-input>
 
-        <u-input v-model="confirmPassword" placeholder="请输入新密码" :password="confirmPasswordBool" border="bottom">
+        <u-input v-model="confirmPassword" placeholder="请再次输入新密码" :password="confirmPasswordBool" border="bottom">
           <template #suffix>
             <text :class="!confirmPasswordBool ? 'iconfont ucicon-eye' : 'iconfont ucicon-eye-close'" @click="confirmPasswordBool = !confirmPasswordBool"></text>
           </template>
@@ -136,7 +136,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;
     }
@@ -153,7 +153,7 @@ function handleConfirm() {
       return;
     }
 
-    if (newPassword.value.length > 6 && newPassword.value.length < 20) {
+    if (newPassword.value.length < 6 && newPassword.value.length > 20) {
       proxy.$modal.showToast("长度在 6 到 20 个字符");
       return;
     }
@@ -171,19 +171,29 @@ function handleConfirm() {
 
   if (modalTitle.value == "修改手机号") {
     updateUserProfile(userArr.value).then((response) => {
-      proxy.$tab.reLaunch("/pages/mine");
+      proxy.$modal.msgSuccess("修改成功");
+      modalShow.value = false;
       useStore.getUser();
     });
   } else if (modalTitle.value == "修改密码") {
-    form.value.validate().then((res) => {
-      updateUserPwd(oldPassword.value, newPassword.value).then((response) => {
-        proxy.$modal.msgSuccess("修改成功");
-      });
+    updateUserPwd(oldPassword.value, newPassword.value).then((response) => {
+      proxy.$modal.msgSuccess("修改成功");
+      modalShow.value = false;
+      oldPassword.value = undefined;
+      oldPasswordBool.value = true;
+      newPassword.value = undefined;
+      newPasswordBool.value = true;
+      confirmPassword.value = undefined;
+      confirmPasswordBool.value = true;
+
+      useStore.getUser();
     });
   }
 }
 
-onLoad((options) => {});
+onLoad((options) => {
+  useStore.getUser();
+});
 
 onReady(() => {});
 

+ 8 - 0
src/plugins/setting.plugins.js

@@ -87,6 +87,14 @@ const clearCache = () => {
 };
 
 export default {
+  // 设置数字
+  setBadge(value) {
+    plus.runtime.setBadgeNumber(value);
+  },
+  // 清除数字
+  clearBadge(value) {
+    plus.runtime.setBadgeNumber(value);
+  },
   formatSize,
   clearCache,
 };

+ 6 - 0
src/static/amap/coordination.html

@@ -531,6 +531,12 @@
         initMap();
         mapCluster();
     </script>
+    <style>
+        .amap-logo,
+        .amap-copyright {
+            display: none !important;
+        }
+    </style>
 </body>
 
 </html>

+ 90 - 0
src/static/amap/css/common.css

@@ -0,0 +1,90 @@
+.amap-logo,
+.amap-copyright {
+  display: none !important;
+}
+
+.amap-marker-label {
+  position: absolute;
+  padding: 0.75rem 1.25rem;
+  border-radius: 6px;
+  background-color: white;
+  border-width: 0;
+  box-shadow: 0px 0px 5px 0px rgba(141, 141, 141, 0.4);
+  display: none;
+}
+
+.amap-marker-labe .infoLabel {
+  width: 100%;
+  text-align: center;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+/* 数字角标 */
+.badge {
+  position: absolute;
+  right: 5px;
+  top: -10px;
+  padding: 0 6px;
+  background-color: #f56c6c;
+  color: #fff;
+  border-radius: 10px;
+  font-size: 12px;
+}
+
+/* 抽屉样式 */
+.drawer {
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 0rem;
+  background-color: #fff;
+  overflow: hidden;
+  transition: height 0.4s ease-in-out;
+  border-radius: 10px 10px 0 0;
+  box-shadow: 0px 0px 5px 0px rgba(141, 141, 141, 0.4);
+}
+
+.drawer.open {
+  height: 23rem;
+}
+
+.drawer .header {
+  display: flex;
+  height: 35px;
+  line-height: 35px;
+  padding: 0 8px;
+  border-bottom: 1px solid #eaeef1;
+}
+
+.drawer .header .title {
+  font-size: 13px;
+  font-weight: 600;
+  margin-right: auto;
+}
+
+.drawer .center {
+  display: flex;
+  overflow: auto;
+  padding: 8px;
+}
+
+.drawer .center img {
+  width: 40%;
+  margin-right: 8px;
+}
+
+.drawer .center .model {
+  width: 60%;
+}
+
+.drawer .center .model .content {
+  display: flex;
+  margin-bottom: 8px;
+}
+
+.drawer .center .model .content .icon {
+  margin-right: 8px;
+}

+ 62 - 0
src/static/amap/css/input.css

@@ -0,0 +1,62 @@
+* {
+  box-sizing: border-box;
+}
+body {
+  margin: 0;
+}
+html {
+  font-size: 12px;
+}
+.amap-copyright {
+  box-sizing: content-box;
+}
+
+button,
+input,
+select {
+  margin: 0;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+  overflow: visible;
+  text-transform: none;
+}
+
+input {
+  width: 100%;
+  border: 0px solid #ced4da;
+  border-radius: 10px;
+  padding: 5px;
+  caret-color: #2a98ff;
+  font-size: 13px;
+}
+
+input:focus {
+  outline: none;
+  border-radius: 10px;
+  border: 0px solid #25a5f7;
+}
+
+.ui-input {
+  display: flex;
+  height: 40px;
+  font-size: 14px;
+  border-radius: 10px;
+  background-color: #fff;
+  box-shadow: 0px 0px 5px 0px rgba(141, 141, 141, 0.4);
+}
+
+.ui-input .icon {
+  color: #2a98ff;
+  font-size: 1.5rem;
+  padding: 0 0 0 8px;
+  margin: auto 0;
+}
+
+input::-webkit-input-placeholder,
+:-moz-placeholder,
+::-moz-placeholder,
+input:-ms-input-placeholder,
+input::-ms-input-placeholder {
+  color: #c0c4cc;
+}

+ 422 - 0
src/static/amap/mapFacilitiesView.html

@@ -0,0 +1,422 @@
+<!doctype html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
+    <title>设施查看</title>
+    <link rel="stylesheet" href="./css/input.css" />
+    <link rel="stylesheet" href="./css/common.css" />
+    <link rel="stylesheet" type="text/css" href="./js/M_select/M_select.css">
+    <link rel="stylesheet" type="text/css" href="./js/notification/index.css">
+    <style>
+        html,
+        body,
+        #mapF {
+            height: 100%;
+            width: 100%;
+        }
+    </style>
+    <style>
+        @font-face {
+            font-family: "iconfont";
+            /* Project id 3620854 */
+            src: url('https://at.alicdn.com/t/c/font_3620854_18olo3dgg2h.woff2?t=1691473656726') format('woff2'),
+                url('https://at.alicdn.com/t/c/font_3620854_18olo3dgg2h.woff?t=1691473656726') format('woff'),
+                url('https://at.alicdn.com/t/c/font_3620854_18olo3dgg2h.ttf?t=1691473656726') format('truetype');
+        }
+
+        /* 定义使用的样式 iconfont */
+        .iconfont {
+            font-family: "iconfont" !important;
+            font-size: 1rem;
+            font-style: normal;
+            -webkit-font-smoothing: antialiased;
+            -moz-osx-font-smoothing: grayscale;
+        }
+    </style>
+</head>
+
+<body>
+    <div id="mapF" class="map" tabindex="0"></div>
+
+    <div id="myPageTop">
+        <!-- <div class="ui-input">
+            <i class="iconfont icon">&#xe60d;</i>
+            <input id="uiInput" placeholder="请输入设施名称" />
+        </div> -->
+
+        <div id="myPageRight">
+            <div class="myPageType" style="text-align: center;">
+                <i class="iconfont icon" style="font-size: 1.5rem;">&#xe60e;</i>
+                <div style="font-size: 12px;">设施</div>
+            </div>
+            <div style="margin: 5px 0 5px 0;border-bottom: 1px solid #eaeef1;"></div>
+            <div class="myPageLabel" style="text-align: center;">
+                <i class="iconfont icon" style="font-size: 1.5rem;">&#xe60e;</i>
+                <div style="font-size: 12px;">标签</div>
+            </div>
+        </div>
+
+        <div id="myPageDialog">
+            <div class="title">设施汇总(0)</div>
+            <div class="center"></div>
+            <div class="bottom" style="text-align: center;">
+                <i class="iconfont icon" style="color: #a8abb2; font-size: 18px;">&#xe63d;</i>
+            </div>
+        </div>
+    </div>
+
+    <div class="drawer">
+        <div class="header">
+            <div class="title"></div>
+            <i class="iconfont icon close" style="color: #a8abb2; font-size: 12px;">&#xe695;</i>
+        </div>
+        <div class="center">
+            <img src="" alt="">
+            <div class="model">
+                <div class="content">
+                    <i class="iconfont icon" style="color:#0C83FA;font-size: 16px;">&#xe60f;</i>
+                    <div class="address"></div>
+                </div>
+                <div class="content">
+                    <i class="iconfont icon" style="color:#01b713;font-size: 16px;">&#xe616;</i>
+                    <div class="facilityType"></div>
+                </div>
+                <div class="content">
+                    <i class="iconfont icon" style="color:#ed480e;font-size: 16px;">&#xe617;</i>
+                    <div class="branch"></div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script src="https://a.amap.com/jsapi_demos/static/china.js"></script>
+    <script type="text/javascript">
+        window._AMapSecurityConfig = {
+            securityJsCode: 'ce0e44758ad6b69607e23bf8e6a6ac11',
+        }
+    </script>
+    <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=14aefebea926bb958032d5daf836fadf">
+    </script>
+
+    <script type="text/javascript" src="https://webapi.amap.com/ui/1.1/main.js"></script>
+    <script type="text/javascript" src="./js/jquery-2.2.1.min.js"></script>
+
+    <!-- uni 的 SDK -->
+    <!-- 需要把 uni.webview.1.5.4.js 下载到自己的服务器 -->
+    <script type="text/javascript" src="./js/uni.webview.1.5.4.js"></script>
+
+    <script type="text/javascript">
+        var dataList = [];//初始化数据存储
+        var dataListCheckBox = [];//初始化数据选中数据存储
+        var facilityNum = 0;//设施汇总数据存储
+
+        var map = [];
+        var marker = null;//创建点标记
+
+        var myPageRight = {
+            myPageTypeBool: 'none',//设施类型
+            myPageLabelBool: 'none',//标签
+        };//右侧小按钮绑定值存储
+
+        /**
+         * 初始化
+         */
+        function initMap() {
+            map = new AMap.Map("mapF", {
+                // mapStyle: 'amap://styles/d0ddc09bd7cbd7331a8e8fa691e5b0da', //设置地图的显示样式
+                resizeEnable: true,
+                center: [121.4737021, 31.2303904],
+                zoom: 13,
+                zooms: [3, 16],
+            });
+
+            map.setFitView();
+        }
+
+        /**
+         * 撒点
+         */
+        function handleMarker(data) {
+            AMap.plugin(["AMap.PolygonEditor,AMap.PolylineEditor", "AMap.Marker"], function () {
+                map.clearMap(); // 清除地图覆盖物
+
+                if (data.length > 0) {
+                    marker = new AMap.Marker({});//初始化点标记
+
+                    var markerData = data.map((item) => {
+                        return {
+                            position: [Number(item.longitude), Number(item.latitude)],
+                            icon: new AMap.Icon({
+                                image: item.icon || item.typeImg,
+                                size: new AMap.Size(28, 35), //图标大小
+                                imageSize: new AMap.Size(28, 35),
+                            }),
+                            data: item
+                        };
+                    })
+
+                    for (var i = 0, marker; i < markerData.length; i++) {
+                        marker = new AMap.Marker({
+                            map: map,
+                            icon: markerData[i].icon,
+                            position: markerData[i].position,
+                            offset: new AMap.Pixel(-10, -10),
+                        });
+                        marker.data = markerData[i]
+                        marker.setLabel({
+                            direction: 'top-left',
+                            offset: new AMap.Pixel(-5, -10), //设置文本标注偏移量
+                            content: `<div class='infoLabel'>${marker.data.data.facilityName}</div>`, //设置文本标注内容
+                        });
+                        marker.on('click', function (e) {
+                            var data = e.target.data.data
+                            handleDrawer(data)
+                        });
+                    }
+
+                    handleRightBtn();
+                    marker.setMap(map);
+                    map.setFitView(null, false, [150, 60, 100, 60]);
+                }
+            })
+        }
+
+        /**
+         * 初始化数据
+         */
+        function initData() {
+            $('#myPageDialog .title').html(`设施汇总(${facilityNum})`)
+            var html = ``
+            dataList.forEach(el => {
+                html += `
+                <div id="${el.typeCode}" class="center-col" onclick="checkbox(${el.typeCode})">
+                    <div class="image">
+                        <img style="max-width:40px;height:40px;margin: auto;"
+                            src="${el.typeImg}" />
+                        <div class="badge"> ${el.typeFacilityNum >= 100 ? '99+' : el.typeFacilityNum || 0} </div>
+                    </div>
+                    <div style="text-align: center;font-size: 12px;margin-bottom: 5px;">${el.typeName}</div>
+                </div>
+                `
+            });
+
+            $('#myPageDialog .center').append(html)
+
+
+            $('#myPageRight .myPageLabel').on('click', function (e) {
+                if (myPageRight.myPageLabelBool == "none") {
+                    myPageRight.myPageLabelBool = "block";
+                    $('#myPageRight .myPageLabel').css('color', '#2a98ff')
+                } else {
+                    myPageRight.myPageLabelBool = "none";
+                    $('#myPageRight .myPageLabel').css('color', '#000000')
+                }
+
+                $('.amap-marker-label').css('display', myPageRight.myPageLabelBool)
+            })
+
+            $('#myPageRight .myPageType').on('click', function (e) {
+                if (myPageRight.myPageTypeBool == "none") {
+                    myPageRight.myPageTypeBool = "block";
+                    $('#myPageRight .myPageType').css('color', '#2a98ff')
+                } else {
+                    myPageRight.myPageTypeBool = "none";
+                    $('#myPageRight .myPageType').css('color', '#000000')
+                }
+
+                $('#myPageDialog').css('display', myPageRight.myPageTypeBool)
+            })
+
+            var display = "flex"
+            $('#myPageDialog .bottom').on('click', function (e) {
+                if (display == "none") {
+                    $('#myPageDialog .bottom').css('transform', 'rotate(-180deg)')
+                    display = "flex"
+                } else {
+                    $('#myPageDialog .bottom').css('transform', 'rotate(0deg)')
+                    display = "none"
+                }
+                $('#myPageDialog .center').css('display', display)
+            })
+
+            initMap()
+        }
+
+
+        /**
+         * 校验右侧小按钮
+         */
+        function handleRightBtn() {
+            if (myPageRight.myPageLabelBool == 'block') {
+                // $('#myPageRight .myPageLabel').trigger('click')
+                $('.amap-marker-label').css('display', myPageRight.myPageLabelBool)
+            }
+        }
+
+        /**
+         * 复选事件
+         */
+        function checkbox(typeCode) {
+            if (dataListCheckBox.includes(typeCode)) {
+                dataListCheckBox.splice(dataListCheckBox.indexOf(typeCode), 1);
+                $(`#${typeCode}`).attr('class', 'center-col')
+            } else {
+                dataListCheckBox.push(typeCode)
+                $(`#${typeCode}`).attr('class', 'center-col mask')
+            }
+
+            parentMessage("撒点", dataListCheckBox.join(','));
+        }
+
+        /*
+         * 抽屉事件
+         */
+        function handleDrawer(data) {
+            $(`.drawer`).attr('class', 'drawer open')
+            $(`.drawer .header .title`).html(data.facilityName)
+            $(`.drawer .center img`).attr("src", data.imagesUrl ? data.imagesUrl : "../images/404.png")
+            $(`.drawer .center .model .content .address`).html(data.address)
+            $(`.drawer .center .model .content .facilityType`).html(data.typeName)
+            $(`.drawer .center .model .content .branch`).html(data.deptId)
+
+            $(`.drawer .header .close`).on('click', function (e) {
+                $(`.drawer`).attr('class', 'drawer')
+            })
+        }
+
+        /**
+         * 向父页面发送数据
+         */
+        function parentMessage(type, data) {
+            var message = {
+                funcName: type,
+                param: data,
+            };
+
+            //APP-PLUS
+            uni.postMessage({
+                data: message
+            });
+
+            //H5
+            if (window.parent) {
+                window.parent.postMessage(message, '*');
+            }
+        }
+
+        /**
+         * APP-PLUS || H5
+         * 接收父页面传过来的值
+         */
+        window.receiveData = function (msg) {
+            analysisData(msg)
+        }
+        window.addEventListener("message", function (event) {
+            analysisData(event.data)
+        });
+
+        /**
+         * 解析数据
+         */
+        function analysisData(data) {
+            if ("funcName" in data) {
+                if (data.funcName == "初始化") {
+                    var param = JSON.parse(data.param);
+                    dataList = param.baseGgpFacilityTypeNumVO;
+                    facilityNum = param.facilityNum;
+                    initData();
+                } else if (data.funcName == "撒点") {
+                    var param = JSON.parse(data.param);
+                    param.forEach((e) => {
+                        dataList.forEach(el => {
+                            if (e.facilityType === el.typeCode) {
+                                e.typeImg = el.typeImg
+                                e.typeName = el.typeName
+                            }
+                        });
+                    })
+                    handleMarker(param)
+                }
+            }
+        }
+    </script>
+    <style>
+        #myPageTop {
+            position: absolute;
+            left: 8px;
+            top: 8px;
+            background: transparent;
+            font-family: "Microsoft Yahei", "微软雅黑", "Pinghei";
+            font-size: 13px;
+            width: calc(100% - 16px);
+        }
+
+        #myPageRight {
+            position: absolute;
+            right: 0px;
+            background-color: #fff;
+            margin-top: 8px;
+            padding: 5px;
+            border-radius: 10px;
+            box-shadow: 0px 0px 5px 0px rgba(141, 141, 141, 0.4);
+        }
+
+        #myPageTop #myPageDialog {
+            position: absolute;
+            right: calc(34px + 8px);
+            width: 14rem;
+            width: calc(100% - 34px - 8px);
+            padding: 10px 10px 5px 10px;
+            margin-top: 8px;
+            background: #fff;
+            box-shadow: 0px 0px 5px 0px rgba(141, 141, 141, 0.4);
+            display: none;
+        }
+
+        #myPageTop #myPageDialog .title {
+            font-weight: 600;
+            text-align: center;
+            margin-bottom: 10px;
+        }
+
+        #myPageTop #myPageDialog .center {
+            display: flex;
+            max-height: 260px;
+            overflow: auto;
+            flex-wrap: wrap;
+        }
+
+        #myPageTop #myPageDialog .center .mask {
+            border-radius: 4px;
+            background: #c2ddf6;
+        }
+
+        #myPageTop #myPageDialog .center .center-col {
+            /* max-width: calc(25% - 2.5px);
+            flex: 0 0 calc(25% - 2.5px); */
+
+            max-width: calc(25% - 3.75px);
+            flex: 0 0 calc(25% - 3.75px);
+            margin: 0px 5px 5px 0;
+        }
+
+        #myPageTop #myPageDialog .center .center-col:nth-child(4n) {
+            margin-right: 0;
+        }
+
+        #myPageTop #myPageDialog .center .center-col .image {
+            position: relative;
+            display: flex;
+            margin: 15px 0 5px 0;
+        }
+
+        #myPageTop #myPageDialog .bottom {
+            transform: rotate(-180deg);
+        }
+    </style>
+</body>
+
+</html>

+ 5 - 0
src/static/amap/mapGather.html

@@ -317,6 +317,11 @@
         }
     </script>
     <style>
+        .amap-logo,
+        .amap-copyright {
+            display: none !important;
+        }
+
         #myPageTop {
             position: absolute;
             left: 10px;

+ 0 - 193
src/static/amap/mapGatherView.html

@@ -1,193 +0,0 @@
-<!doctype html>
-<html lang="en">
-
-<head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
-    <title>设施查看</title>
-    <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />
-    <link rel="stylesheet" type="text/css" href="./js/M_select/M_select.css">
-    <link rel="stylesheet" type="text/css" href="./js/notification/index.css">
-    <style>
-        html,
-        body,
-        #mapF {
-            height: 100%;
-            width: 100%;
-        }
-    </style>
-</head>
-
-<body>
-    <div id="mapF" class="map" tabindex="0"></div>
-
-    <div id="myPageTop">
-        <input id="tipinput" />
-
-        <div class="myPageTop-type">
-            <div class="title">设施汇总(120)</div>
-            <div class="center">11111111111111</div>
-        </div>
-    </div>
-
-
-    <script src="https://a.amap.com/jsapi_demos/static/china.js"></script>
-    <script type="text/javascript">
-        window._AMapSecurityConfig = {
-            securityJsCode: 'ce0e44758ad6b69607e23bf8e6a6ac11',
-        }
-    </script>
-    <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=14aefebea926bb958032d5daf836fadf">
-    </script>
-
-    <script type="text/javascript" src="https://webapi.amap.com/ui/1.1/main.js"></script>
-    <script type="text/javascript" src="./js/jquery-2.2.1.min.js"></script>
-
-    <!-- uni 的 SDK -->
-    <!-- 需要把 uni.webview.1.5.4.js 下载到自己的服务器 -->
-    <script type="text/javascript" src="./js/uni.webview.1.5.4.js"></script>
-
-    <script type="text/javascript">
-
-        var form = {};
-        var typeName = "";
-
-        var map = [];
-
-        var marker = null;//创建点标记
-        var regeocode = {};//获取解析详细地址数据存储
-        var longitude = "";//点标记经度数据存储
-        var latitude = "";//点标记纬度数据存储
-
-        var polyEditor = null; //创建画布
-        var polyEditorArray = [];//画布数据存储
-
-
-        /**
-         * 初始化
-         */
-        function initMap() {
-            map = new AMap.Map("mapF", {
-                // mapStyle: 'amap://styles/d0ddc09bd7cbd7331a8e8fa691e5b0da', //设置地图的显示样式
-                resizeEnable: true,
-                center: [121.4737021, 31.2303904],
-                zoom: 13,
-                zooms: [3, 16],
-            });
-
-            map.setFitView();
-
-            setTimeout(() => {
-                AMap.plugin(["AMap.PolygonEditor,AMap.PolylineEditor"], function () {
-
-                    if (typeName === "点") {
-                        marker = new AMap.Marker({});//初始化点标记
-                        handleMarker();
-                    }
-                })
-            }, 1000);
-        }
-
-        /**
-         * 点
-         */
-        function handleMarker() {
-            //地图点标记回显
-            if (form.longitude && form.latitude) {
-                longitude = form.longitude
-                latitude = form.latitude
-
-                marker = new AMap.Marker({
-                    position: new AMap.LngLat(form.longitude, form.latitude), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
-                });
-
-                handleAddress()
-            }
-
-            //为地图注册click事件获取鼠标点击出的经纬度坐标
-            map.on("click", function (e) {
-                longitude = e.lnglat.getLng()
-                latitude = e.lnglat.getLat()
-
-                map.remove([marker]);
-                marker = new AMap.Marker({
-                    position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat()), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
-                });
-
-                handleAddress()
-            });
-        }
-
-        /**
-         * APP-PLUS
-         * 接收父页面传过来的值
-         */
-        window.receiveData = function (msg) {
-            // console.log("子页面:", msg)
-            // alert(msg.dataType)
-            form = msg.dataArray
-            typeName = msg.dataType
-            initMap();
-        }
-
-        /**
-         * H5
-         * 接收父页面传过来的值
-         */
-        window.addEventListener("message", function (event) {
-            if ("funcName" in event.data) {
-                console.log("子页面:", event);
-                form = JSON.parse(event.data.param)
-                typeName = event.data.typeName
-            }
-            initMap();
-        });
-
-        /**
-         * 按钮点击事件
-         */
-        function handleButtom(value) {
-
-        }
-    </script>
-    <style>
-        #myPageTop {
-            position: absolute;
-            left: 10px;
-            top: 10px;
-            background: transparent;
-            font-family: "Microsoft Yahei", "微软雅黑", "Pinghei";
-            font-size: 13px;
-        }
-
-        #myPageTop input {
-            width: 18rem;
-            border: 1px solid #ced4da;
-            border-radius: 5px;
-            padding: 5px;
-        }
-
-        #myPageTop input:focus {
-            outline: none;
-            border-radius: 5px;
-            border: 1px solid #25A5F7;
-        }
-
-        #myPageTop .myPageTop-type {
-            padding: 10px;
-            margin-top: 10px;
-            background: #fff;
-            font-family: "Microsoft Yahei", "微软雅黑", "Pinghei";
-            font-size: 13px;
-        }
-
-
-        #myPageTop .myPageTop-type .title {
-            font-weight: 600;
-            text-align: center;
-        }
-    </style>
-</body>
-
-</html>

+ 39 - 4
src/static/iconfont/iconfont.css

@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 3620854 */
-  src: url('https://at.alicdn.com/t/c/font_3620854_or3dk845a9m.woff2?t=1690786456967') format('woff2'),
-       url('https://at.alicdn.com/t/c/font_3620854_or3dk845a9m.woff?t=1690786456967') format('woff'),
-       url('https://at.alicdn.com/t/c/font_3620854_or3dk845a9m.ttf?t=1690786456967') format('truetype');
+  src: url("https://at.alicdn.com/t/c/font_3620854_kdcp7gpqqz.woff2?t=1691730084858") format("woff2"), 
+       url("https://at.alicdn.com/t/c/font_3620854_kdcp7gpqqz.woff?t=1691730084858") format("woff"),
+       url("https://at.alicdn.com/t/c/font_3620854_kdcp7gpqqz.ttf?t=1691730084858") format("truetype");
 }
 
 .iconfont {
@@ -13,6 +13,42 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.ucicon-position:before {
+  content: "\e618";
+}
+
+.ucicon-branch:before {
+  content: "\e617";
+}
+
+.ucicon-satellite:before {
+  content: "\e614";
+}
+
+.ucicon-full:before {
+  content: "\e615";
+}
+
+.ucicon-facilityType:before {
+  content: "\e616";
+}
+
+.ucicon-address:before {
+  content: "\e60f";
+}
+
+.ucicon-guanbi1:before {
+  content: "\e695";
+}
+
+.ucicon-lable:before {
+  content: "\e60e";
+}
+
+.ucicon-search:before {
+  content: "\e60d";
+}
+
 .ucicon-dial:before {
   content: "\e60b";
 }
@@ -196,4 +232,3 @@
 .ucicon-eye-close:before {
   content: "\e8ff";
 }
-

二進制
src/static/iconfont/iconfont.ttf


二進制
src/static/icons/index/APP-dbsx.png


+ 0 - 8
src/static/icons/index/APP-dbsx.svg

@@ -1,8 +0,0 @@
-<svg 
- xmlns="http://www.w3.org/2000/svg"
- width="113px" height="112px">
-<path fill-rule="evenodd"  fill="rgb(116, 210, 123)"
- d="M26.250,0.030 L86.250,0.030 C100.609,0.030 112.250,11.671 112.250,26.030 L112.250,86.005 C112.250,100.364 100.609,112.005 86.250,112.005 L26.250,112.005 C11.891,112.005 0.250,100.364 0.250,86.005 L0.250,26.030 C0.250,11.671 11.891,0.030 26.250,0.030 Z"/>
-<path fill-rule="evenodd"  fill="rgb(255, 255, 255)"
- d="M69.636,56.729 C77.564,56.729 83.990,63.283 83.990,71.368 C83.990,79.453 77.564,86.007 69.636,86.007 C61.709,86.007 55.282,79.453 55.282,71.368 C55.282,63.283 61.709,56.729 69.636,56.729 ZM76.813,25.987 C79.984,25.987 82.555,28.609 82.555,31.843 L82.555,57.637 C79.084,54.231 74.453,52.331 69.636,52.337 C59.330,52.337 50.976,60.857 50.976,71.368 C50.976,76.481 52.954,81.125 56.172,84.543 L33.751,84.543 C30.580,84.543 28.010,81.921 28.010,78.687 L28.010,31.843 C28.010,28.609 30.580,25.987 33.751,25.987 L76.813,25.987 ZM69.636,60.389 C68.527,60.389 67.600,61.248 67.493,62.374 L67.483,62.585 L67.483,72.277 L73.856,78.777 L74.019,78.927 C74.810,79.585 75.946,79.585 76.737,78.927 L76.901,78.777 L77.049,78.610 C77.693,77.802 77.693,76.644 77.049,75.837 L76.901,75.670 L71.789,70.459 L71.789,62.585 L71.779,62.374 C71.673,61.248 70.745,60.389 69.636,60.389 ZM50.258,47.946 L40.211,47.946 C39.021,47.946 38.058,48.930 38.059,50.143 C38.059,51.273 38.901,52.218 40.004,52.327 L40.211,52.337 L50.258,52.337 C51.447,52.337 52.411,51.354 52.411,50.141 C52.411,48.929 51.447,47.946 50.258,47.946 ZM70.354,36.235 L40.211,36.235 C39.021,36.235 38.058,37.219 38.059,38.432 C38.059,39.562 38.901,40.507 40.004,40.616 L40.211,40.626 L70.354,40.626 C71.543,40.626 72.507,39.643 72.507,38.430 C72.507,37.218 71.543,36.235 70.354,36.235 Z"/>
-</svg>

二進制
src/static/icons/index/APP-dwcj.png


文件差異過大導致無法顯示
+ 0 - 7
src/static/icons/index/APP-dwxxcj.svg


二進制
src/static/icons/index/APP-gjgl.png


二進制
src/static/icons/index/APP-khgl.png


二進制
src/static/icons/index/APP-kpgl.png


二進制
src/static/icons/index/APP-sbcx.png


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

@@ -1,9 +0,0 @@
-<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/icons/index/APP-sbgl.png


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

@@ -1,9 +0,0 @@
-<svg 
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- width="113px" height="112px">
-<path fill-rule="evenodd"  fill="rgb(151, 162, 221)"
- d="M26.250,0.030 L86.250,0.030 C100.609,0.030 112.250,11.671 112.250,26.030 L112.250,86.005 C112.250,100.364 100.609,112.005 86.250,112.005 L26.250,112.005 C11.891,112.005 0.250,100.364 0.250,86.005 L0.250,26.030 C0.250,11.671 11.891,0.030 26.250,0.030 Z"/>
-<path fill-rule="evenodd"  fill="rgb(255, 255, 255)"
- d="M79.391,85.987 L32.617,85.987 C29.040,85.987 26.014,82.974 26.014,79.139 L26.014,63.527 L85.994,63.527 L85.994,79.139 C85.994,82.974 82.967,85.987 79.391,85.987 ZM63.433,71.196 L33.443,71.196 L33.443,78.592 L63.433,78.592 L63.433,71.196 ZM78.565,71.196 L71.136,71.196 L71.136,78.592 L78.565,78.592 L78.565,71.196 ZM26.014,32.851 C26.014,29.016 29.040,26.003 32.617,26.003 L79.391,26.003 C82.967,26.003 85.994,29.016 85.994,32.851 L85.994,59.693 L26.014,59.693 L26.014,32.851 ZM38.120,53.393 L43.623,44.080 L56.279,52.571 L63.157,41.889 L76.639,49.558 L79.666,44.080 L60.956,32.303 L54.628,43.259 L40.871,35.863 L32.617,50.380 L38.120,53.393 Z"/>
-</svg>

二進制
src/static/icons/index/APP-sscj.png


二進制
src/static/icons/index/APP-ssck.png


二進制
src/static/icons/index/APP-xfbg.png


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

@@ -1,9 +0,0 @@
-<svg 
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- width="113px" height="112px">
-<path fill-rule="evenodd"  fill="rgb(74, 144, 226)"
- d="M26.250,0.030 L86.250,0.030 C100.609,0.030 112.250,11.671 112.250,26.030 L112.250,86.005 C112.250,100.364 100.609,112.005 86.250,112.005 L26.250,112.005 C11.891,112.005 0.250,100.364 0.250,86.005 L0.250,26.030 C0.250,11.671 11.891,0.030 26.250,0.030 Z"/>
-<path fill-rule="evenodd"  fill="rgb(255, 255, 255)"
- d="M31.454,25.987 L80.555,25.987 C83.568,25.987 86.010,28.430 86.010,31.444 L86.010,31.444 L86.010,80.557 C86.010,83.571 83.568,86.014 80.555,86.014 L80.555,86.014 L31.454,86.014 C28.441,86.014 25.998,83.571 25.998,80.557 L25.998,80.557 L25.998,31.444 C25.998,28.430 28.441,25.987 31.454,25.987 L31.454,25.987 ZM60.628,32.762 C59.625,32.779 58.825,33.605 58.841,34.609 C58.841,34.609 58.841,34.609 58.841,34.609 C58.841,35.632 59.641,36.456 60.628,36.456 L69.327,36.456 L58.088,48.364 L50.210,39.984 C49.512,39.281 48.376,39.276 47.672,39.975 C47.669,39.978 47.666,39.981 47.663,39.984 L37.060,51.444 C36.366,52.180 36.374,53.332 37.079,54.058 C37.433,54.413 37.878,54.590 38.334,54.590 C38.817,54.587 39.278,54.385 39.607,54.031 L48.937,43.916 L56.812,52.284 C57.488,52.994 58.686,52.994 59.359,52.284 L71.787,39.139 L71.787,48.012 C71.787,49.035 72.587,49.861 73.577,49.861 C74.576,49.850 75.376,49.030 75.364,48.031 C75.364,48.028 75.364,48.025 75.364,48.023 L75.364,34.609 C75.380,33.606 74.581,32.779 73.577,32.762 C73.577,32.762 73.577,32.762 73.577,32.762 L60.628,32.762 ZM36.910,58.729 C35.403,58.729 34.182,59.951 34.182,61.458 L34.182,72.371 C34.182,73.878 35.403,75.100 36.910,75.100 C38.416,75.100 39.637,73.878 39.637,72.371 L39.637,61.458 C39.637,59.951 38.416,58.729 36.910,58.729 ZM45.093,69.643 C43.587,69.643 42.365,70.865 42.365,72.371 C42.365,73.878 43.587,75.100 45.093,75.100 L72.371,75.100 C73.878,75.100 75.099,73.878 75.099,72.371 C75.099,70.865 73.878,69.643 72.371,69.643 L45.093,69.643 ZM45.093,58.729 C43.587,58.729 42.365,59.951 42.365,61.458 C42.365,62.964 43.587,64.186 45.093,64.186 L72.371,64.186 C73.878,64.186 75.099,62.964 75.099,61.458 C75.099,59.951 73.878,58.729 72.371,58.729 L45.093,58.729 Z"/>
-</svg>

二進制
src/static/icons/index/APP-xtzz.png


二進制
src/static/icons/index/APP-xunjian.png


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

@@ -1,9 +0,0 @@
-<svg 
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- width="113px" height="112px">
-<path fill-rule="evenodd"  fill="rgb(255, 134, 115)"
- d="M26.250,0.030 L86.250,0.030 C100.609,0.030 112.250,11.671 112.250,26.030 L112.250,86.005 C112.250,100.364 100.609,112.005 86.250,112.005 L26.250,112.005 C11.891,112.005 0.250,100.364 0.250,86.005 L0.250,26.030 C0.250,11.671 11.891,0.030 26.250,0.030 Z"/>
-<path fill-rule="evenodd"  fill="rgb(255, 255, 255)"
- d="M31.135,30.838 L37.402,30.838 L37.402,41.687 L72.973,41.687 L72.973,30.838 L80.843,30.838 C83.131,30.838 84.986,32.685 84.986,34.963 L84.986,84.882 C84.986,87.160 83.131,89.007 80.843,89.007 L31.135,89.007 C28.847,89.007 26.993,87.160 26.993,84.882 L26.993,34.963 C26.993,32.685 28.847,30.838 31.135,30.838 ZM41.905,28.813 L46.056,28.813 C46.056,25.608 48.665,23.009 51.888,23.009 L58.516,23.009 C61.735,23.009 64.344,25.608 64.344,28.813 L68.416,28.813 L68.416,38.878 L41.905,38.878 L41.905,28.813 ZM55.438,34.196 C57.725,34.196 59.581,32.319 59.581,30.001 C59.581,27.683 57.725,25.806 55.438,25.806 C53.147,25.806 51.296,27.683 51.296,30.001 C51.296,32.319 53.147,34.196 55.438,34.196 ZM36.383,48.736 L36.383,52.655 L75.595,52.655 L75.595,48.736 L36.383,48.736 ZM36.383,57.687 L36.383,61.601 L45.219,61.601 L45.219,57.683 L36.383,57.683 L36.383,57.687 ZM36.383,66.638 L36.383,70.548 L45.219,70.548 L45.219,66.634 L36.383,66.634 L36.383,66.638 ZM36.383,75.585 L36.383,79.499 L47.427,79.499 L47.427,75.581 L36.383,75.581 L36.383,75.585 ZM69.108,78.501 C68.852,79.247 69.044,80.073 69.605,80.629 L72.538,83.546 C73.347,84.351 74.658,84.351 75.466,83.546 L75.475,83.537 C76.285,82.733 76.286,81.427 75.478,80.621 C75.477,80.619 75.476,80.618 75.475,80.617 L72.546,77.701 C71.987,77.143 71.158,76.950 70.409,77.206 C73.864,73.110 73.605,67.064 69.812,63.276 C65.755,59.250 59.188,59.261 55.144,63.301 C51.090,67.327 51.079,73.863 55.119,77.903 C58.923,81.683 64.997,81.943 69.112,78.501 L69.108,78.501 ZM66.859,74.966 C64.433,77.390 60.495,77.397 58.060,74.982 C55.634,72.560 55.640,68.637 58.073,66.221 C60.498,63.797 64.437,63.790 66.872,66.205 C66.873,66.206 66.874,66.208 66.875,66.209 C69.300,68.633 69.293,72.555 66.859,74.970 L66.859,74.966 Z"/>
-</svg>

二進制
src/static/icons/index/APP-xxcx.png


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

@@ -1,9 +0,0 @@
-<svg 
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- width="113px" height="112px">
-<path fill-rule="evenodd"  fill="rgb(110, 173, 251)"
- d="M26.250,0.030 L86.250,0.030 C100.609,0.030 112.250,11.671 112.250,26.030 L112.250,86.005 C112.250,100.364 100.609,112.005 86.250,112.005 L26.250,112.005 C11.891,112.005 0.250,100.364 0.250,86.005 L0.250,26.030 C0.250,11.671 11.891,0.030 26.250,0.030 Z"/>
-<path fill-rule="evenodd"  fill="rgb(255, 255, 255)"
- d="M81.714,90.005 L36.285,90.005 C32.852,90.005 29.992,87.148 29.992,83.719 L29.992,32.289 C29.992,28.860 32.852,26.003 36.285,26.003 L81.599,26.003 C85.146,26.003 87.893,28.860 88.007,32.289 L88.007,83.719 C88.007,87.148 85.146,90.005 81.714,90.005 ZM41.892,78.005 L75.992,78.005 C77.251,78.005 78.166,76.976 78.166,75.719 C78.166,74.462 77.136,73.433 75.878,73.433 L41.892,73.433 C40.634,73.433 39.604,74.462 39.604,75.719 C39.604,76.976 40.634,78.005 41.892,78.005 ZM41.892,67.719 L75.992,67.719 C77.251,67.719 78.166,66.690 78.166,65.433 C78.166,64.176 77.136,63.147 75.878,63.147 L41.892,63.147 C40.634,63.147 39.604,64.176 39.604,65.433 C39.604,66.690 40.634,67.719 41.892,67.719 ZM56.310,42.575 C56.310,40.060 54.251,38.003 51.733,38.003 L44.181,38.003 C41.663,38.003 39.604,40.060 39.604,42.575 L39.604,50.804 C39.604,53.318 41.663,55.375 44.181,55.375 L51.733,55.375 C54.251,55.375 56.310,53.318 56.310,50.804 L56.310,42.575 ZM75.992,39.489 L64.549,39.489 C63.290,39.489 62.261,40.518 62.261,41.775 C62.261,43.032 63.290,44.061 64.549,44.061 L75.992,44.061 C77.251,44.061 78.281,43.032 78.281,41.775 C78.281,40.518 77.251,39.489 75.992,39.489 ZM75.992,49.318 L64.549,49.318 C63.290,49.318 62.261,50.347 62.261,51.604 C62.261,52.861 63.290,53.890 64.549,53.890 L75.992,53.890 C77.251,53.890 78.281,52.861 78.281,51.604 C78.281,50.347 77.251,49.318 75.992,49.318 ZM44.181,42.575 L51.733,42.575 L51.733,50.804 L44.181,50.804 L44.181,42.575 Z"/>
-</svg>

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

@@ -1,9 +0,0 @@
-<svg 
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- width="113px" height="112px">
-<path fill-rule="evenodd"  fill="rgb(96, 216, 246)"
- d="M26.250,0.030 L86.250,0.030 C100.609,0.030 112.250,11.671 112.250,26.030 L112.250,86.005 C112.250,100.364 100.609,112.005 86.250,112.005 L26.250,112.005 C11.891,112.005 0.250,100.364 0.250,86.005 L0.250,26.030 C0.250,11.671 11.891,0.030 26.250,0.030 Z"/>
-<path fill-rule="evenodd"  fill="rgb(255, 255, 255)"
- d="M33.114,50.735 L72.673,90.285 L33.267,90.285 C29.347,90.285 26.169,87.108 26.169,83.188 L26.167,57.681 L33.114,50.735 ZM62.430,26.415 C58.538,30.069 56.332,35.170 56.336,40.507 C56.336,45.663 58.354,50.347 61.653,53.822 L62.056,54.234 L74.598,66.706 C75.237,67.341 76.248,67.389 76.946,66.852 L77.113,66.706 L89.655,54.229 C89.790,54.096 89.921,53.961 90.053,53.822 L90.053,83.188 C90.053,87.108 86.875,90.285 82.954,90.285 L80.204,90.285 L36.880,46.970 L57.440,26.415 L62.432,26.415 L62.430,26.415 ZM75.856,26.415 C83.693,26.415 90.053,33.098 90.053,41.346 C90.053,45.471 88.464,49.202 85.891,51.904 L76.770,61.503 C76.298,62.007 75.507,62.034 75.002,61.562 C74.981,61.543 74.962,61.523 74.942,61.503 L65.819,51.908 C63.246,49.206 61.658,45.475 61.658,41.350 C61.658,33.102 68.018,26.415 75.854,26.415 L75.856,26.415 ZM49.910,26.415 L26.167,50.151 L26.167,33.512 C26.167,29.592 29.345,26.415 33.265,26.415 L49.910,26.415 ZM75.854,33.512 C71.934,33.511 68.756,36.688 68.755,40.607 C68.755,44.527 71.933,47.704 75.853,47.705 C75.854,47.705 75.854,47.705 75.854,47.705 C79.775,47.704 82.952,44.527 82.952,40.607 C82.952,36.689 79.774,33.512 75.854,33.512 Z"/>
-</svg>

二進制
src/static/icons/white/0.png


二進制
src/static/icons/white/1.png


二進制
src/static/icons/white/10.png


二進制
src/static/icons/white/11.png


二進制
src/static/icons/white/12.png


二進制
src/static/icons/white/13.png


二進制
src/static/icons/white/14.png


二進制
src/static/icons/white/15.png


二進制
src/static/icons/white/16.png


二進制
src/static/icons/white/17.png


二進制
src/static/icons/white/18.png


二進制
src/static/icons/white/19.png


二進制
src/static/icons/white/2.png


二進制
src/static/icons/white/20.png


二進制
src/static/icons/white/21.png


二進制
src/static/icons/white/22.png


二進制
src/static/icons/white/23.png


二進制
src/static/icons/white/24.png


二進制
src/static/icons/white/25.png


二進制
src/static/icons/white/26.png


二進制
src/static/icons/white/27.png


二進制
src/static/icons/white/28.png


二進制
src/static/icons/white/29.png


二進制
src/static/icons/white/3.png


二進制
src/static/icons/white/30.png


二進制
src/static/icons/white/31.png


二進制
src/static/icons/white/32.png


二進制
src/static/icons/white/33.png


二進制
src/static/icons/white/34.png


二進制
src/static/icons/white/35.png


二進制
src/static/icons/white/36.png


二進制
src/static/icons/white/37.png


二進制
src/static/icons/white/38.png


二進制
src/static/icons/white/4.png


二進制
src/static/icons/white/5.png


二進制
src/static/icons/white/6.png


二進制
src/static/icons/white/7.png


二進制
src/static/icons/white/8.png


二進制
src/static/icons/white/9.png


二進制
src/static/icons/white/99.png


+ 0 - 0
src/static/images/xunjian/plan-scan.png → src/static/images/add.png


二進制
src/static/images/index/weather.png


+ 57 - 15
src/static/scss/public.scss

@@ -272,28 +272,70 @@ uni-input {
   //#endif
 }
 
-//公共消息通知悬浮窗
-.app-info-notice {
+//公共悬浮窗
+.app-common-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 {
+    padding: 10px;
+
+    .info-header {
+      display: flex;
+
+      .info-title {
+        margin: auto auto auto 0;
+        color: #000000;
+      }
+
+      .info-time {
+        margin: auto 0 auto 0;
+        color: #909399
+      }
+    }
+
+    .info-center {
+      white-space: nowrap;
+      overflow: hidden;
+      text-overflow: ellipsis; //溢出用省略号显示
+      color: #909399
+    }
   }
 
-  .info-content {
-    white-space: nowrap;
-    overflow: hidden;
-    text-overflow: ellipsis; //溢出用省略号显示
+  .weather {
+    padding: 10px;
+    background-image: url("@/static/images/index/weather.png");
+    background-size: 100% 100%;
+    background-position: center center;
+    background-repeat: no-repeat;
 
-    color: #909399
+
+    .weather-header {
+      display: flex;
+      margin-bottom: 10px;
+      font-size: 14px;
+
+      .ucicon-address {
+        margin: auto 5px auto 0;
+        color: #0c83fa;
+      }
+    }
+
+    .weather-center {
+      display: flex;
+
+      .temperature {
+        margin: auto auto auto 0;
+        font-size: 18px;
+        font-weight: 600;
+      }
+
+      .image {
+        margin: 0 0 0 0;
+      }
+    }
   }
 }

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

@@ -101,7 +101,6 @@ const useStores = defineStore("useStores", {
             this.SET_PHONE(data.user.phonenumber);
             this.SET_AVATAR(data.user.avatar);
 
-
             resolve(res);
           })
           .catch((error) => {

部分文件因文件數量過多而無法顯示