Browse Source

提交问卷增加防抖

高晟悦 3 weeks ago
parent
commit
05a23ca976

+ 43 - 39
pagesAdmin/satisfaction/business/satisfactionQuestions/satisfactionQuestions.vue

@@ -305,7 +305,7 @@ import {
 	QuerySample_V3,
 } from '../../service';
 import icon from '@/utils/icon';
-import { common } from '@/utils';
+import { common, throttle } from '@/utils';
 import fn from './fn';
 
 const app = getApp();
@@ -374,7 +374,7 @@ const main = async (options) => {
 		}
 		await querySubjectInfoById_V3();
 		// 查询样本和答案
-		await querySample_V3();
+		// await querySample_V3();
 		// 开始计算答卷时间
 		getSec();
 	} else {
@@ -893,45 +893,49 @@ const setVal = (e) => {
 };
 
 /** 提交 */
-const submit = async () => {
-	await common.sleep(1000);
-	if (complete.value) return;
-	uni.showLoading();
-	const answers = { ...quesAnswers } as any;
-	for (var i = 0; i < answers.AnswerList.length; i++) {
-		let item = answers.AnswerList[i];
-		if (item.MustQuest && common.isEmpty(item.Answer)) {
-			common.showToast('存在未填写的问卷');
-			point.value = 'p' + item.Blank;
-			return;
-		}
-	}
-	answers.AnswerList.forEach((item) => {
-		if (typeof item.Answer == 'object') {
-			item.Answer = item.Answer.join();
+const submit = () => {
+	throttle(async () => {
+		
+		await common.sleep(1000);
+		if (complete.value) return;
+		uni.showLoading();
+		const answers = { ...quesAnswers } as any;
+		for (var i = 0; i < answers.AnswerList.length; i++) {
+			let item = answers.AnswerList[i];
+			if (item.MustQuest && common.isEmpty(item.Answer)) {
+				common.showToast('存在未填写的问卷');
+				point.value = 'p' + item.Blank;
+				return;
+			}
 		}
-	});
-	answers.AnswerList = JSON.stringify(quesAnswers.AnswerList);
-	// quesAnswers.IP = (await getIP()).cip;
-	// quesAnswers.Location = (await getIP()).cname;
-	quesAnswers.UserAgent = app.globalData.smallPro_systemInfo;
-	quesAnswers.Mobile = currentUser.value.mobile;
-	quesAnswers.UserName = currentUser.value.memberName;
-	quesAnswers.MemberId = currentUser.value.MemberId;
-	quesAnswers.Sex = currentUser.value.sex;
-	quesAnswers.Age = currentUser.value.age;
-	quesAnswers.ThirdPartyId = currentUser.value.MemberId || uni.getStorageSync('openid');
-	quesAnswers.BedNo = '';
-	quesAnswers.HospitalNo = objType.value == '4' ? currentUser.value.cardNo : '';
-	quesAnswers.CardNo = objType.value == '3' ? currentUser.value.cardNo : '';
-	quesAnswers.TaskId = taskId.value;
-	let res = await CommitAnswer_V3(quesAnswers);
-	clearTimeout(time);
-	if (common.isNotEmpty(res)) {
-		common.showModal('提交成功!', () => {
-			common.navigateBack(1);
+		answers.AnswerList.forEach((item) => {
+			if (typeof item.Answer == 'object') {
+				item.Answer = item.Answer.join();
+			}
 		});
-	}
+		answers.AnswerList = JSON.stringify(quesAnswers.AnswerList);
+		// quesAnswers.IP = (await getIP()).cip;
+		// quesAnswers.Location = (await getIP()).cname;
+		quesAnswers.UserAgent = app.globalData.smallPro_systemInfo;
+		quesAnswers.Mobile = currentUser.value.mobile;
+		quesAnswers.UserName = currentUser.value.memberName;
+		quesAnswers.MemberId = currentUser.value.MemberId;
+		quesAnswers.Sex = currentUser.value.sex;
+		quesAnswers.Age = currentUser.value.age;
+		quesAnswers.ThirdPartyId = currentUser.value.MemberId || uni.getStorageSync('openid');
+		quesAnswers.BedNo = '';
+		quesAnswers.HospitalNo = objType.value == '4' ? currentUser.value.cardNo : '';
+		quesAnswers.CardNo = objType.value == '3' ? currentUser.value.cardNo : '';
+		quesAnswers.TaskId = taskId.value;
+		let res = await CommitAnswer_V3(quesAnswers);
+		clearTimeout(time);
+		if (common.isNotEmpty(res)) {
+			common.showModal('提交成功!', () => {
+				common.navigateBack(1);
+			});
+		}
+	
+	}, 5 * 1000);
 };
 /** 获取IP */
 const getIP = () => {

+ 14 - 0
utils/index.ts

@@ -241,3 +241,17 @@ export const toAddMemberOrNot = async (url) => {
 	}
 	return false;
 };
+
+/**
+ * fn函数执行后  wait毫秒内不会再次触发
+ */
+export const throttle = (fn: Function, wait = 1000) => {
+	let lastCallTime = 0;
+	return function(...args) {
+		const now = Date.now();
+		if (now - lastCallTime >= wait) {
+			lastCallTime = now;
+			fn.apply(this, args); // 保留 this 和参数
+		}
+	}
+};