Browse Source

修改上传逻辑,上传完图片之后自动更新对应的记录

zhangxike 1 month ago
parent
commit
bbf5252dd0
3 changed files with 38 additions and 25 deletions
  1. 7 7
      pages/work/record/InfoList.uvue
  2. BIN
      static/db/QT800.db
  3. 31 18
      utils/dataProcessor.uts

+ 7 - 7
pages/work/record/InfoList.uvue

@@ -213,13 +213,13 @@
 		});
 		return
 	}
-	if(e.uploadflag > 0) {
-		uni.showToast({
-		  title: '当前任务已上传!',
-		  icon: 'error'
-		});
-		return
-	}
+	// if(e.uploadflag > 0) {
+	// 	uni.showToast({
+	// 	  title: '当前任务已上传!',
+	// 	  icon: 'error'
+	// 	});
+	// 	return
+	// }
     console.log("开始上传...")
     uploadDataToAPI(e.productno, () => {
 	  // 回调函数中执行刷新,确保数据都保存好,进度条跑完

BIN
static/db/QT800.db


+ 31 - 18
utils/dataProcessor.uts

@@ -1,5 +1,5 @@
 import { getToken, getTokenFromApi } from './auth'
-import { saveMediaInfo, saveMediaRecord, getLatestRecord, removeInfoAndRecord, getJoinList, updateData } from '@/api/work'
+import { saveMediaInfo, saveMediaRecord, getLatestRecord, removeInfoAndRecord, getList, updateData } from '@/api/work'
 import { globalConfig } from '@/config'
 
 
@@ -52,6 +52,7 @@ export type PhotoFilesExample = {
 }
 
 export type UploadImg = {
+	sxid : string,
 	pk : string,
 	path : string
 }
@@ -399,13 +400,14 @@ export const uploadDataToAPI = async (productCode : string, callback ?: () => vo
 		}
 
 		// 获取数据
-		const res = await getJoinList('app_media_record as r', 'app_media_info as i', 'r.*,i.productno, i.uploadFlag', 'r.pid=i.pdid', 'i.productno', productCode, null);
+		const res = await getList('app_media_record', 'productno', productCode, 'uploadFlag', '0', null);
 		let dataList = res?.['data'] as UTSJSONObject[] ?? Array<UTSJSONObject>();
 		console.log(dataList);
 
+		
 		if (dataList == null || dataList.length === 0) {
 			uni.hideLoading();
-			uni.showToast({ title: '未获取到数据', icon: 'error' });
+			uni.showToast({ title: '未获取到需要上传的数据', icon: 'error' });
 			return false;
 		}
 
@@ -432,13 +434,14 @@ export const uploadDataToAPI = async (productCode : string, callback ?: () => vo
 			showProgress(processStep, '准备上传');
 			//收集图片信息
 			let urlpdtStr = record.getString('urlpdt');
+			let sxid = record.getString('sxid');
 			let pk = record.getString('pk');
 			let urlArr = urlpdtStr?.split(",") ?? [];
 
 			for (let j = 0; j < urlArr.length; j++) {
 				let path = urlArr[j];
 				const fullFilePath = `${uni.env.USER_DATA_PATH}` + path;
-				allImagesToUpload.push({ pk: pk ?? '', path: fullFilePath });
+				allImagesToUpload.push({sxid: sxid ?? '', pk: pk ?? '', path: fullFilePath });
 			}
 			processStep++;
 		}
@@ -460,8 +463,8 @@ export const uploadDataToAPI = async (productCode : string, callback ?: () => vo
 		uni.showLoading({ title: `正在上传图片 (0/${totalImages})` });
 
 		for (let i = 0; i < allImagesToUpload.length; i++) {
-			const { pk, path } = allImagesToUpload[i];
-			console.log(`开始上传文件: ${path}, 索引: ${i}, apiToken: ${apiToken}, billid: ${pk}`);
+			const { sxid, pk, path } = allImagesToUpload[i];
+			console.log(`开始上传文件: ${path}, 索引: ${i}, apiToken: ${apiToken}, billid: ${pk}, sxid: ${sxid}`);
 
 			try {
 				// 串行执行,等待前一个图片上传完成再处理下一张
@@ -486,6 +489,11 @@ export const uploadDataToAPI = async (productCode : string, callback ?: () => vo
 								console.log(resData)
 								if (resData?.['_id'] != null && resData?.['_id'] != '') {
 									successCount++;
+									//更新数据库记录
+									let updatedData = " uploadflag = 1 "
+									updateData('app_media_record', updatedData, 'sxid', sxid).then((res : UTSJSONObject) => {
+										console.log(`更新图片记录的上传标识 ${sxid}`)
+									});
 									// 等待一小段时间确保文件完全上传并处理完成
 									setTimeout(() => {
 										resolve();
@@ -516,17 +524,17 @@ export const uploadDataToAPI = async (productCode : string, callback ?: () => vo
 							uni.showLoading({ title: `正在上传图片 (${i + 1}/${totalImages})` });
 						}
 					});
-
-					uploadTask.onProgressUpdate((res) => {
-						console.log('上传进度' + res.progress);
-						console.log('已经上传的数据长度' + res.totalBytesSent);
-						console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);
-					});
+					//调试时开启
+					// uploadTask.onProgressUpdate((res) => {
+					// 	console.log('上传进度' + res.progress);
+					// 	console.log('已经上传的数据长度' + res.totalBytesSent);
+					// 	console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);
+					// });
 				});
 			} catch (error) {
 				// 捕获上传失败的错误,将失败的图片信息添加到错误数组
 				console.log(`处理第${i + 1}张图片时出错:`, error);
-				failedImages.push({ pk, path });
+				failedImages.push({ sxid, pk, path });
 				// 出错后继续处理下一张图片
 			}
 
@@ -560,8 +568,8 @@ export const uploadDataToAPI = async (productCode : string, callback ?: () => vo
 
 			// 串行上传失败的图片
 			for (let i = 0; i < retryImages.length; i++) {
-				const { pk, path } = retryImages[i];
-				console.log(`重试上传文件: ${path}, 索引: ${i}, 重试次数: ${retryCount}, apiToken: ${apiToken}, billid: ${pk}`);
+				const { sxid, pk, path } = retryImages[i];
+				console.log(`重试上传文件: ${path}, 索引: ${i}, 重试次数: ${retryCount}, apiToken: ${apiToken}, billid: ${pk}, sxid: ${sxid}`);
 				console.log(`重试上传路径:${globalConfig.uploadURL}`)
 
 				await new Promise<void>((resolve) => {
@@ -581,18 +589,23 @@ export const uploadDataToAPI = async (productCode : string, callback ?: () => vo
 								const resData = JSON.parse(uploadRes.data) as UTSJSONObject;
 								if (resData?.['_id'] != null && resData?.['_id'] != '') {
 									currentSuccessCount++;
+									//更新数据库
+									let updatedData = " uploadflag = 1 "
+									updateData('app_media_record', updatedData, 'sxid', sxid).then((res : UTSJSONObject) => {
+										console.log(`更新图片记录的上传标识 ${sxid}`)
+									});
 								} else {
-									currentFailedImages.push({ pk, path });
+									currentFailedImages.push({ sxid, pk, path });
 								}
 							} else {
-								currentFailedImages.push({ pk, path });
+								currentFailedImages.push({ sxid, pk, path });
 							}
 							console.log(`重试上传完成,当前成功: ${currentSuccessCount}, 当前失败: ${currentFailedImages.length}`);
 							resolve();
 						},
 						fail: (err) => {
 							console.error(`重试文件${path}上传失败`, err);
-							currentFailedImages.push({ pk, path });
+							currentFailedImages.push({sxid, pk, path });
 							resolve();
 						},
 						complete: () => {