ソースを参照

Merge branch 'master' of http://39.98.153.250:9080/bowintek/EmploymentSite

pengjing 11 ヶ月 前
コミット
56046754a1
3 ファイル変更71 行追加56 行削除
  1. 3 1
      h5app/src/store/modules/user.ts
  2. 58 0
      h5app/src/utils/position.ts
  3. 10 55
      h5app/src/views/login.vue

+ 3 - 1
h5app/src/store/modules/user.ts

@@ -135,7 +135,9 @@ export const useUserStore = defineStore({
      * 清除经纬度定时器
      */
     clearTimer(){
-      clearInterval(this.timer);
+      if (this.timer) {
+        clearTimeout(this.timer);
+      }
     }
   },
 });

+ 58 - 0
h5app/src/utils/position.ts

@@ -0,0 +1,58 @@
+import {useUserStore} from "@/store/modules/user";
+import {saveLongitudeLatitude} from "@/api/position";
+import {store} from "@/store";
+
+const userStore = useUserStore(store);
+
+// 发送经纬度到后端
+export function sendPosition() {
+    getPosition().then((data: any) => {
+        console.log("当前经度:" + data.longitude + "\n 当前纬度:" + data.latitude)
+        if (userStore.getUserInfo.userID && data.longitude && data.latitude) {
+            const sendData = {
+                userId: userStore.getUserInfo.userID,
+                time: Date.now(),
+                longitude: data.longitude,
+                latitude: data.latitude,
+            }
+            // 发送请求
+            saveLongitudeLatitude(sendData);
+        }
+    })
+}
+
+// 获取经纬度
+export function getPosition() {
+    return new Promise((resolve, reject) => {
+        if (navigator.geolocation) {
+            navigator.geolocation.getCurrentPosition(function (position) {
+                const latitude = position.coords.latitude.toFixed(5)
+                const longitude = position.coords.longitude.toFixed(5)
+                const data = {
+                    latitude: latitude,
+                    longitude: longitude
+                }
+                resolve(data)
+            }, function () {
+                // eslint-disable-next-line prefer-rest-params
+                reject(arguments)
+            }, {
+                enableHighAccuracy: true,
+                timeout: 3000
+            })
+        } else {
+            reject('你的浏览器不支持当前地理位置信息获取')
+        }
+    })
+}
+
+// 设置定时器
+export function setPositionInterval() {
+    const time = setInterval(sendPosition, 1000 * 60 * 10);
+    userStore.setTimer(time);
+}
+
+// 清除定时器
+export function clearPositionInterval() {
+    userStore.clearTimer();
+}

+ 10 - 55
h5app/src/views/login.vue

@@ -7,14 +7,14 @@
           <ion-item>
             <!--          <ion-icon :icon="personOutline" mode="md"></ion-icon>-->
             <!--          <ion-input v-model="state.formInline.username" type="text" placeholder="请输入用户名"></ion-input>-->
-            <input v-model="state.formInline.username" type="text" placeholder="请输入用户名"/>
+            <input v-model="state.formInline.username" placeholder="请输入用户名" type="text"/>
           </ion-item>
         </div>
         <div class="login-item">
           <ion-item>
             <!--          <ion-icon :icon="lockClosedOutline" mode="md"></ion-icon>-->
             <!--            <ion-input v-model="state.formInline.password" type="password" placeholder="请输入密码"></ion-input>-->
-            <input v-model="state.formInline.password" type="password" placeholder="请输入密码"/>
+            <input v-model="state.formInline.password" placeholder="请输入密码" type="password"/>
           </ion-item>
         </div>
         <div class="login-btn">
@@ -24,7 +24,7 @@
             </ion-button>
           </ion-buttons>
         </div>
-        <ion-label class="error-label" v-show="state.errorShow || v$.username.$error || v$.password.$error">
+        <ion-label v-show="state.errorShow || v$.username.$error || v$.password.$error" class="error-label">
           <p v-if="v$.username.$error || v$.password.$error">用户名或密码不能为空</p>
           <p v-if="state.errorShow && !(v$.username.$error || v$.password.$error)">
             {{ state.msg }}
@@ -33,23 +33,21 @@
         <ion-loading
             :is-open="state.loading"
             message="登陆中..."
-            @didDismiss="setOpen(false)" >
+            @didDismiss="setOpen(false)">
         </ion-loading>
       </div>
     </ion-content>
   </ion-page>
 </template>
 
-<script setup lang="ts">
-import {reactive, ref, toRef, computed, onMounted, getCurrentInstance, onActivated} from 'vue';
+<script lang="ts" setup>
+import {computed, getCurrentInstance, onMounted, reactive, ref} from 'vue';
 import {alertController, onIonViewDidEnter} from '@ionic/vue';
 import {useUserStore} from '@/store/modules/user';
 import router from '../router';
 import {useVuelidate} from '@vuelidate/core'
-import {required, minLength} from '@vuelidate/validators'
-import {present} from "@ionic/core/dist/types/utils/overlays";
-import dayjs from "dayjs";
-import {saveLongitudeLatitude} from "@/api/position";
+import {minLength, required} from '@vuelidate/validators'
+import {sendPosition, setPositionInterval} from "@/utils/position";
 
 const {appContext: {config: {globalProperties}}} = getCurrentInstance();
 
@@ -116,8 +114,7 @@ const handleSubmit = async () => {
     // 获取经纬度并保存
     sendPosition()
     // 设置定时器实时记录经纬度
-    const time = setInterval(sendPosition, 1000 * 60 * 10);
-    userStore.setTimer(time);
+    setPositionInterval()
     router.push('/tabs/tabMain');
   }, (err) => {
     state.loading = false;
@@ -126,48 +123,6 @@ const handleSubmit = async () => {
   });
 };
 
-// 发送经纬度到后端
-const sendPosition = function (){
-  getPosition().then((data: any) => {
-    console.log("当前经度:" + data.longitude + "\n 当前纬度:" + data.latitude)
-    if (userStore.getUserInfo.userID && data.longitude && data.latitude){
-      const sendData = {
-        userId: userStore.getUserInfo.userID,
-        time: Date.now(),
-        longitude: data.longitude,
-        latitude: data.latitude,
-      }
-      // 发送请求
-      saveLongitudeLatitude(sendData);
-    }
-  })
-}
-
-// 获取经纬度
-function getPosition () {
-  return new Promise((resolve, reject) => {
-    if (navigator.geolocation) {
-      navigator.geolocation.getCurrentPosition(function (position) {
-        const latitude = position.coords.latitude.toFixed(5)
-        const longitude = position.coords.longitude.toFixed(5)
-        const data = {
-          latitude: latitude,
-          longitude: longitude
-        }
-        resolve(data)
-      }, function () {
-        // eslint-disable-next-line prefer-rest-params
-        reject(arguments)
-      }, {
-        enableHighAccuracy: true,
-        timeout: 5000
-      })
-    } else {
-      reject('你的浏览器不支持当前地理位置信息获取')
-    }
-  })
-}
-
 onIonViewDidEnter(() => {
   state.formInline.password = '';
 });
@@ -251,7 +206,7 @@ ion-content {
         outline: none;
       }
 
-      input::placeholder{
+      input::placeholder {
         color: #b4b4b7;
       }