瀏覽代碼

fix: 修改移动端节流函数不生效问题

qiny 1 年之前
父節點
當前提交
928fc3be91

+ 1 - 1
client/.env.dev

@@ -7,7 +7,7 @@ VITE_DEV=false
 # VITE_BASE_URL='http://10.10.9.113:48080'
 VITE_BASE_URL='http://10.10.10.7:18080'
 
-# VITE_BASE_URL='http://10.10.9.168:48080'
+# VITE_BASE_URL='https://oa.zjugis.com:28080'
 
 # 上传路径
 VITE_UPLOAD_URL='/infra/file/upload'

+ 1 - 1
client_h5/.env.dev

@@ -6,4 +6,4 @@ VITE_BASE_URL='http://10.10.10.7:18080'
 # File上传路径
 VITE_FILE_BASE_URI='/admin-api/infra/file'
 
-VITE_AUTHORIZATION='4508abd4478f48a8bb88073bca4cae14'
+# VITE_AUTHORIZATION='605e50c206944caa9515fedf8935c0e9'

+ 2 - 0
client_h5/package.json

@@ -18,6 +18,7 @@
     "axios": "^1.6.8",
     "dayjs": "^1.11.11",
     "dingtalk-jsapi": "^3.0.33",
+    "lodash-es": "^4.17.21",
     "moment": "^2.30.1",
     "pinia": "^2.1.7",
     "qs": "^6.12.1",
@@ -26,6 +27,7 @@
     "vue-router": "^4.2.5"
   },
   "devDependencies": {
+    "@types/lodash-es": "^4.17.12",
     "@types/node": "^20.11.20",
     "@types/qs": "^6.9.15",
     "@vitejs/plugin-vue": "^5.0.4",

+ 13 - 17
client_h5/src/pages/myLogs/Daily/index.vue

@@ -25,23 +25,15 @@
     <SelectUser v-model="formData.receiveUserIds" />
     <div class="blank-line"></div>
     <div class="send-btn-group" v-if="formData.isUpdate">
-      <van-button type="primary" block @click="throttle(onSubmit(false))"
+      <van-button type="primary" block @click="onSubmit(false)"
         >更新</van-button
       >
     </div>
     <div class="send-btn-group" v-else>
-      <van-button
-        type="success"
-        block
-        class="send-btn"
-        @click="throttle(onSubmit(true))"
+      <van-button type="success" block class="send-btn" @click="onSubmit(true)"
         >暂存</van-button
       >
-      <van-button
-        type="primary"
-        block
-        class="send-btn"
-        @click="throttle(onSubmit(false))"
+      <van-button type="primary" block class="send-btn" @click="onSubmit(false)"
         >发送</van-button
       >
     </div>
@@ -56,11 +48,13 @@ import { reactive, watch } from "vue";
 import { showSuccessToast, showToast } from "vant";
 import SelectUser from "@/components/UserSelect.vue";
 import ProjectList from "../components/ProjectList.vue";
-import { getUserInfo, throttle } from "@/utils/tools";
+import { getUserInfo } from "@/utils/tools";
 import { http } from "../http";
 import { IReport } from "../interface";
 import { onSubmitCheck } from "../service";
 import PubsubService from "@/utils/PubsubService";
+import { throttle } from "lodash-es";
+
 interface FormData {
   reportContent: string; // 内容
   weeklyWorkloadList: {
@@ -220,7 +214,7 @@ const projectChange = (data: any) => {
 
 // 提交
 const { replace } = useRouter();
-const onSubmit = async (isTemp: boolean, isRouteLeave?: boolean) => {
+const onSubmit = throttle(async (isTemp: boolean, isRouteLeave?: boolean) => {
   const userInfo = getUserInfo();
   const params: IReport = {
     ...formData,
@@ -240,13 +234,15 @@ const onSubmit = async (isTemp: boolean, isRouteLeave?: boolean) => {
     });
     return;
   }
+  // return
   const result: any = await http.submitReport(params);
+  // 如果暂存且有返回id
+  if (result.data) {
+    formData.id = result.data;
+  }
   if (isRouteLeave) return; // 如果是退出,则不提示暂存
   const type = isTemp ? "暂存" : "发送";
   if (result.msg == "success") {
-    if (result.data) {
-      formData.id = result.data;
-    }
     showSuccessToast(`${type}成功`);
     if (!isTemp) {
       replace({
@@ -259,7 +255,7 @@ const onSubmit = async (isTemp: boolean, isRouteLeave?: boolean) => {
   } else {
     showToast(`${type}失败,请稍后重试`);
   }
-};
+}, 5000);
 
 // 获取是否工作日
 const getIsWorkDays = async (date?: string) => {

+ 11 - 17
client_h5/src/pages/myLogs/Weekly/index.vue

@@ -31,23 +31,15 @@
     <SelectUser v-model="formData.receiveUserIds" />
     <div class="blank-line"></div>
     <div class="send-btn-group" v-if="formData.isUpdate">
-      <van-button type="primary" block @click="throttle(onSubmit(false))"
+      <van-button type="primary" block @click="onSubmit(false)"
         >更新</van-button
       >
     </div>
     <div class="send-btn-group" v-else>
-      <van-button
-        type="success"
-        block
-        class="send-btn"
-        @click="throttle(onSubmit(true))"
+      <van-button type="success" block class="send-btn" @click="onSubmit(true)"
         >暂存</van-button
       >
-      <van-button
-        type="primary"
-        block
-        class="send-btn"
-        @click="throttle(onSubmit(false))"
+      <van-button type="primary" block class="send-btn" @click="onSubmit(false)"
         >发送</van-button
       >
     </div>
@@ -62,11 +54,12 @@ import { reactive, watch } from "vue";
 import { showSuccessToast, showToast } from "vant";
 import SelectUser from "@/components/UserSelect.vue";
 import ProjectList from "../components/ProjectList.vue";
-import { getUserInfo, throttle } from "@/utils/tools";
+import { getUserInfo } from "@/utils/tools";
 import { http } from "../http";
 import { IReport } from "../interface";
 import { onSubmitCheck, setWorkDayListToWeek } from "../service";
 import PubsubService from "@/utils/PubsubService";
+import { throttle } from "lodash-es";
 
 interface FormData {
   reportContent: string; // 内容
@@ -207,7 +200,7 @@ const projectChange = (data: any) => {
 
 // 提交
 const { replace } = useRouter();
-const onSubmit = async (isTemp: boolean, isRouteLeave?: boolean) => {
+const onSubmit = throttle(async (isTemp: boolean, isRouteLeave?: boolean) => {
   const date = thisWeek.value.split(" ~ ");
   const userInfo = getUserInfo();
   const params: IReport = {
@@ -229,12 +222,13 @@ const onSubmit = async (isTemp: boolean, isRouteLeave?: boolean) => {
     return;
   }
   const result: any = await http.submitReport(params);
+  // 如果暂存且有返回id
+  if (result.data) {
+    formData.id = result.data;
+  }
   if (isRouteLeave) return; // 如果是退出,则不提示暂存
   const type = isTemp ? "暂存" : "发送";
   if (result.msg == "success") {
-    if (result.data) {
-      formData.id = result.data;
-    }
     showSuccessToast(`${type}成功`);
     if (!isTemp) {
       replace({
@@ -247,7 +241,7 @@ const onSubmit = async (isTemp: boolean, isRouteLeave?: boolean) => {
   } else {
     showToast(`${type}失败,请稍后重试`);
   }
-};
+}, 5000);
 
 // 获取是否工作日
 const getIsWorkDays = async (date?: string) => {

+ 1 - 26
client_h5/src/utils/tools.ts

@@ -14,31 +14,6 @@ export const getUserInfo = () => {
     deptName: "数智产业研发部",
   };
   // 从localStorage中获取用户信息并返回
-  // return userInfo;
+  return userInfo;
   return JSON.parse(localStorage.getItem("_userInfo") as string);
 };
-
-// 节流函数
-export const throttle = (fn: any, delay = 3000) => {
-  let preTime = Date.now();
-  return (event: any) => {
-    const context = this;
-    event.persist && event.persist(); // 保留对事件的引用
-    const doTime = Date.now();
-    if (doTime - preTime >= delay) {
-      fn.apply(context);
-      preTime = Date.now();
-    }
-  };
-};
-// 防抖函数
-export const debounce = (fn: any, wait = 3000) => {
-  let timeout: any = null;
-  return function (event: any) {
-    clearTimeout(timeout);
-    event.persist && event.persist(); // 保留对事件的引用
-    timeout = setTimeout(() => {
-      fn(event);
-    }, wait);
-  };
-};