Browse Source

添加上传操作逻辑

ZhangLeo 1 week ago
parent
commit
e6305d3c8e

+ 1 - 1
pages/work/download/DownloadList.uvue

@@ -82,7 +82,7 @@
   import { downloadDataFromAPI, uploadDataToAPI } from '@/utils/qcDataProcessor.uts';
 
   // 产品号输入框数据
-  const productNo = ref('');
+  const productNo = ref('PI02297172');
   
   const backPressOptions = reactive({
     from: 'backbutton'

+ 5 - 5
pages/work/record/Camera.uvue

@@ -69,19 +69,19 @@
 				intervalId: -1,
 				timeoutStr: '30',
 				recordId: 0,
-				num: 0,
+				senum: 0,
 				maxcount: 0,
 			}
 		},
 		onLoad(options) {
 			let recordId = options?.['id'] ?? ''
-			let num = options?.['num'] ?? ''
+			let senum = options?.['senum'] ?? ''
 			let maxcount = options?.['maxcount'] ?? ''
 			if(recordId!=''){
 				this.recordId = parseInt(recordId)
 			}
-			if(num!=''){
-				this.num = parseInt(num)
+			if(senum!=''){
+				this.senum = parseInt(senum)
 			}
 			if(maxcount!=''){
 				this.maxcount = parseInt(maxcount)
@@ -91,7 +91,7 @@
 		methods: {
 			handleScanCode() {
 				if(this.imageSrc!=""){
-					let params = "path="+this.imageSrc+"&recordId="+this.recordId+"&num="+this.num+"&maxcount="+this.maxcount
+					let params = "path="+this.imageSrc+"&recordId="+this.recordId+"&senum="+this.senum+"&maxcount="+this.maxcount
 					uni.navigateTo({
 						url: "/pages/work/record/camera-scan-code?"+params
 					})

+ 2 - 2
pages/work/record/InfoDetail.uvue

@@ -234,9 +234,9 @@
 		font-size: 24rpx;
 		color: #000;
 		/* #endif */
-		padding: 10rpx 0 10rpx 0rpx;
+		padding: 20rpx 0rpx 20rpx 0rpx;
 		box-sizing: border-box;
-		margin: 10rpx 10rpx;
+		margin: 3rpx 3rpx;
 		min-width: 180rpx;
 	}
 

+ 6 - 15
pages/work/record/InfoList.uvue

@@ -53,6 +53,10 @@
 			    'bg-black': item.statusRecordCount === 0
 			  }"> {{ item.statusRecordCount }} / {{ item.totalRecord }} </text>
 			</view>
+			<view class="info-row">
+			  <text class="label">上传进度:</text>
+			  <text class="process-value" > {{ item.uploadCount }} / {{ item.totalRecord }} </text>
+			</view>
 		</view>  
 		
 		<view class="info-row">
@@ -74,7 +78,7 @@
   import { downloadDataFromAPI, uploadDataToAPI } from '@/utils/dataProcessor';
 
   // 产品号输入框数据
-  const productNo = ref('');
+  const productNo = ref('YH07202507000005');
   
   const backPressOptions = reactive({
     from: 'backbutton'
@@ -106,6 +110,7 @@
     totalRecord : number,
     statusRecordCount : number,
     status4RecordCount : number,
+	uploadCount : number,
 	uploadflag: number
   }
 
@@ -206,20 +211,6 @@
   }
   
   const upload = async (e : Download) => {
-	if(e.statusRecordCount != e.totalRecord) {
-		uni.showToast({
-		  title: '当前任务还未完成!',
-		  icon: 'error'
-		});
-		return
-	}
-	// if(e.uploadflag > 0) {
-	// 	uni.showToast({
-	// 	  title: '当前任务已上传!',
-	// 	  icon: 'error'
-	// 	});
-	// 	return
-	// }
     console.log("开始上传...")
     uploadDataToAPI(e.productno, () => {
 	  // 回调函数中执行刷新,确保数据都保存好,进度条跑完

+ 2 - 2
pages/work/record/RecordList.uvue

@@ -55,7 +55,7 @@
 				<text class="value">{{ item.num }}</text>
 			</view>
 
-			<button class="cancel-btn" v-if="item.status == 1 || item.status == 2" @click="cancel(item.sxid, item.num, maxcount)">
+			<button class="cancel-btn" v-if="item.status == 1 || item.status == 2" @click="cancel(item.sxid, item.senum, maxcount)">
 				拍照
 			</button>
 
@@ -319,7 +319,7 @@
 
 	const cancel = (id : number, num : number, maxcount : number) => {
 		uni.navigateTo({
-			url: `/pages/work/record/Camera?id=${id}&num=${num}&maxcount=${maxcount}`
+			url: `/pages/work/record/Camera?id=${id}&senum=${num}&maxcount=${maxcount}`
 		})
 	}
 	defineExpose({

+ 9 - 9
pages/work/record/camera-scan-code.uvue

@@ -99,7 +99,7 @@
 					workorder: "",
 					invname: ""
 				} as JoinRecord,
-				num: 0,
+				senum: 0,
 				maxcount: 0,
 				dyImgName: '',
 				minAvailableNumber: 1,
@@ -112,9 +112,9 @@
 		},
 		onBackPress() {
 			// 覆盖系统默认的返回行为,返回到指定页面
-			//?photoitem=${photoitem}&num=${num}&pid=${pid}
+			//?part=${part}&num=${num}&pid=${pid}
 			uni.navigateTo({
-				url: `/pages/work/record/RecordList?photoitem=${this.joinRecord.photoitem}&num=${this.maxcount}&pid=${this.joinRecord.pid}&senum=${this.joinRecord.senum}`,
+				url: `/pages/work/record/RecordList?part=${this.joinRecord.part}&num=${this.maxcount}&pid=${this.joinRecord.pid}&senum=${this.joinRecord.senum}`,
 				// 修改动画方向为从左到右退回
 				animationType: 'slide-in-left', // 使用从左到右滑出的动画效果
 				animationDuration: 300 // 动画持续时间,单位ms
@@ -125,7 +125,7 @@
 		onLoad(options) {
 			this.path = options?.['path'] ?? ''
 			let recordId = options?.['recordId'] ?? ''
-			let num = options?.['num'] ?? ''
+			let senum = options?.['senum'] ?? ''
 			let maxcount = options?.['maxcount'] ?? ''
 			console.log(this.path)
 			if (this.path != '') {
@@ -141,7 +141,7 @@
 							if (item != null) {
 								let record = JSON.parse<JoinRecord>(item.toJSONString());
 								if (record != null) {
-									this.num = record.num;
+									// this.senum = record.num;
 									this.dyImgName = record.workorder + record.invname + record.part + record.photoitem + record.partno;
 									this.joinRecord = record
 									this.imgArrLen = record.imgname.indexOf(",") > -1 ? record.imgname.split(",").length : (record.imgname != '' ? 1 : 0)
@@ -154,8 +154,8 @@
 					}
 				});
 			}
-			if (num != '') {
-				this.num = parseInt(num)
+			if (senum != '') {
+				this.senum = parseInt(senum)
 			}
 			if (maxcount != '') {
 				this.maxcount = parseInt(maxcount)
@@ -165,7 +165,7 @@
 			navigateBack() {
 				//uni.navigateBack()
 				uni.navigateTo({
-					url: `/pages/work/record/Camera?id=${this.recordId}&num=${this.num}`
+					url: `/pages/work/record/Camera?id=${this.recordId}&senum=${this.senum}`
 				})
 			},
 			navigateExit() {
@@ -276,7 +276,7 @@
 						this.renameFile(this.path, newPath)
 
 						uni.navigateTo({
-							url: `/pages/work/record/RecordList?photoitem=${this.joinRecord.photoitem}&num=${this.maxcount}&pid=${this.joinRecord.pid}&senum=${this.joinRecord.senum}`,
+							url: `/pages/work/record/RecordList?part=${this.joinRecord.part}&num=${this.senum}&pid=${this.joinRecord.pid}`,
 							// 修改动画方向为从左到右退回
 							animationType: 'slide-in-left', // 使用从左到右滑出的动画效果
 							animationDuration: 300 // 动画持续时间,单位ms

+ 2 - 1
utils/dataProcessor.uts

@@ -404,7 +404,8 @@ export const uploadDataToAPI = async (productCode : string, callback ?: () => vo
 		}
 
 		// 获取数据
-		const res = await getList('app_media_record', 'productno', productCode, 'uploadFlag', '0', null);
+		let query = `productno = '${productCode}' and uploadFlag = '0' and urlpdt is not null  AND (LENGTH(urlpdt) - LENGTH(REPLACE(urlpdt, ',', '')) + 1) = num`
+		const res = await getList('app_media_record', query, null, null, null, null);
 		let dataList = res?.['data'] as UTSJSONObject[] ?? Array<UTSJSONObject>();
 		console.log(dataList);
 

+ 12 - 5
utils/sqlite.uts

@@ -37,11 +37,15 @@ export function selectTableData (
        sql = `SELECT * FROM ${dbTable} WHERE ${lname} = '${lvalue}'`
       // console.log(sql);
     }
+	if (lname !== null && lvalue == null && cc == null && dd == null) {
+		//单条件,并且是拼接好的查询条件
+		sql = `SELECT * FROM ${dbTable} WHERE ${lname}`
+	}
     if (lname == null) {
        sql = `SELECT * FROM ${dbTable}`
     }
 	const sqlite = createSQLiteContext(dbName);
-	
+	console.log(sql)
 	return new Promise<UTSJSONObject>((resolve, reject) => {
 	  const selectSqlOptions ={		
 		  sql: sql,
@@ -427,17 +431,20 @@ export function selectRecordInfo() : Promise<UTSJSONObject> {
 
 	var sql = `SELECT
 					m.*,
-					COUNT(r_stats.photoitem) AS totalRecord,
+					COUNT(r_stats.part) AS totalRecord,
 					SUM(r_stats.is_status_3_4) AS statusRecordCount,
-					SUM(r_stats.is_status_4) AS status4RecordCount
+					SUM(r_stats.is_status_4) AS status4RecordCount,
+					SUM(r_stats.is_upload) AS uploadCount
+					
 				FROM
 					app_media_info m
 				LEFT JOIN (
 					SELECT
 						r.pid,
-						r.photoitem,
+						r.part,
 						MAX(CASE WHEN r.status IN (3,4) THEN 1 ELSE 0 END) AS is_status_3_4,
-						MAX(CASE WHEN r.status = 4 THEN 1 ELSE 0 END) AS is_status_4
+						MAX(CASE WHEN r.status = 4 THEN 1 ELSE 0 END) AS is_status_4,
+						MAX(CASE WHEN r.uploadFlag = 1 THEN 1 ELSE 0 END) AS is_upload
 					FROM
 						app_media_record r
 					GROUP BY