Browse Source

修改产品信息里的查询sql,完善 进度和颜色的匹配

zhangxike 1 week ago
parent
commit
858b3faef1

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

@@ -36,7 +36,7 @@
 					<uni-td class="grid-text">检验记录</uni-td>
 					<uni-td class="grid-text">
 						<text :class="{
-							'bg-green bg-text': item.recordStatus == '已完成',
+							'bg-green bg-text': item.recordCount == item.recordTotal,
 							'bg-yellow bg-text': item.recordCount > 0 && item.recordCount < item.recordTotal,
 							'bg-black bg-text': item.recordCount == 0,
 						  }">

+ 12 - 2
pages/work/download/DownloadList.uvue

@@ -53,6 +53,14 @@
 			  <text class="label">最近更新时间:</text>
 			  <text class="value">{{ item.lastupdatetime }}</text>
 			</view>
+			<view class="info-row">
+			  <text class="label">进度:</text>
+			  <text class="process-value" :class="{
+			    'bg-green': ( item.photoStatus +  item.keyStatus + item.recordStatus) == 3,
+			    'bg-yellow': ( item.photoStatus +  item.keyStatus + item.recordStatus) < 3,
+			    'bg-black': ( item.photoStatus +  item.keyStatus + item.recordStatus) == 0
+			  }"> {{ (item.photoStatus +  item.keyStatus + item.recordStatus) }} / 3 </text>
+			</view>
 		</view>  
 		
 		<view class="info-row">
@@ -103,7 +111,10 @@
     processno : string,
     gxno : string,
     ver : string,
-    lastupdatetime : string
+    lastupdatetime : string,
+	photoStatus : number,
+	keyStatus : number,
+	recordStatus : number,
   }
 
   var initDownloads = [] as Task[]
@@ -112,7 +123,6 @@
 
   // #ifdef APP-ANDROID
   getTaskInfoList(null).then((res : UTSJSONObject) => {
-    console.log(res)
     let dataList = res?.['data'] as UTSJSONObject[] ?? Array<UTSJSONObject>()
     if (dataList != null && dataList.length > 0) {
       dataList.forEach(item => {

+ 38 - 10
pages/work/report/InspectionList.uvue

@@ -73,9 +73,9 @@
 				<view class="info-row">
 					<text class="label">结论</text>
 					<view class="value">
-						<radio-group class="radio-group-horizontal" @change="resultChange" disabled = "item.nature != '定性'" >
-							<radio class="radio-group-horizontal-rg" value="合格" :checked="item.result == '合格'">合格</radio>
-							<radio class="radio-group-horizontal-rg" value="不合格" :checked="item.result == '不合格'">不合格</radio>
+						<radio-group class="radio-group-horizontal" @change="resultChange">
+							<radio class="radio-group-horizontal-rg" value="合格" :checked="item.result == '合格'" :disabled="item.nature == '定量'">合格</radio>
+							<radio class="radio-group-horizontal-rg" value="不合格" :checked="item.result == '不合格'" :disabled="item.nature == '定量'">不合格</radio>
 						</radio-group>	
 					</view>
 				</view>
@@ -152,12 +152,6 @@
 		}
 	});
 
-	// 处理picker组件的点击事件,确保在安卓设备上可以正常触发
-	const handlePickerClick = (e: any) => {
-		// 这里可以添加一些处理逻辑,确保在安卓设备上可以正常打开picker
-		console.log('Picker clicked');
-	};
-
 	// 4. 切换标签时更新 reportList(使用响应式的 initRecords)
 	const tabsClick = (obj : number) => {
 		current.value = obj;
@@ -218,6 +212,15 @@
 		// 获取当前选中的报告项
 		const currentItem = reportList.value.find(item => parseInt(item.no) === current.value);
 		if (currentItem != null) {
+			// 如果是定量性质,则不允许修改
+			if (currentItem.memo == '定量') {
+				uni.showToast({
+					title: "定量项目不可修改结论",
+					icon: 'error',
+					duration: 2000
+				});
+				return;
+			}
 			// 更新结果值
 			currentItem.result = event.detail.value;
 			//更新数据库
@@ -239,8 +242,21 @@
 		if (currentItem != null) {
 			// 更新结果值
 			currentItem.measuredvalue = event.detail.value;
-			//更新数据库
 			let updatedData = "measuredvalue='" + currentItem.measuredvalue + "'"
+			if (currentItem.nature == '定量') {
+				let minValue = parseFloat(currentItem.minNum ?? '0');
+				let maxValue = parseFloat(currentItem.maxNum ?? '0');
+				let currenMinValue = parseFloat(currentItem.measuredvalue ?? '0');
+				let currenMaxValue = parseFloat(currentItem.measuredvaluemax ?? '0');
+				if (currenMinValue > maxValue || currenMinValue < minValue|| currenMaxValue > maxValue || currenMaxValue < minValue) {
+					currentItem.result = '不合格'
+				} else {
+					currentItem.result = '合格'
+				}
+				updatedData += " ,result = '" + currentItem.result + "'"
+			}
+			
+			//更新数据库
 			updateData('app_task_record_item', updatedData, 'sxid', currentItem.sxid.toString()).then((res : UTSJSONObject) => {
 				let data = res?.['data'] as boolean ?? false
 				if (data != null && data== true) {
@@ -260,6 +276,18 @@
 			currentItem.measuredvaluemax = event.detail.value;
 			//更新数据库
 			let updatedData = "measuredvaluemax='" + currentItem.measuredvaluemax + "'"
+			if (currentItem.nature == '定量') {
+				let minValue = parseFloat(currentItem.minNum ?? '0');
+				let maxValue = parseFloat(currentItem.maxNum ?? '0');
+				let currenMinValue = parseFloat(currentItem.measuredvalue ?? '0');
+				let currenMaxValue = parseFloat(currentItem.measuredvaluemax ?? '0');
+				if (currenMinValue > maxValue || currenMinValue < minValue|| currenMaxValue > maxValue || currenMaxValue < minValue) {
+					currentItem.result = '不合格'
+				} else {
+					currentItem.result = '合格'
+				}
+				updatedData += " ,result = '" + currentItem.result + "'"
+			}
 			updateData('app_task_record_item', updatedData, 'sxid', currentItem.sxid.toString()).then((res : UTSJSONObject) => {
 				let data = res?.['data'] as boolean ?? false
 				if (data != null && data== true) {

+ 32 - 3
utils/sqlite.uts

@@ -585,9 +585,38 @@ export function selectLatestInfoData (
  export function selectTaskInfo() : Promise<UTSJSONObject> {
  
  	var sql = `SELECT
- 					m.*
- 				FROM
- 					app_task_info m
+					m.*,
+					CASE WHEN p.photoCount = p.photoTotal THEN 1 ELSE 0 END as photoStatus,
+					CASE WHEN k.keyCount = k.keyTotal THEN 1 ELSE 0 END as keyStatus,
+					CASE WHEN i.recordCount = i.recordTotal THEN 1 ELSE 0 END as recordStatus
+				FROM
+				  app_task_info m
+				  LEFT JOIN (
+					SELECT 
+					  pdid,
+					  COUNT(pdid) as photoTotal,
+					  SUM(CASE WHEN photourl IS NOT NULL and photourl != '' THEN 1 ELSE 0 END) as photoCount
+					FROM app_task_photo 
+					GROUP BY pdid
+				  ) p ON m.pdid = p.pdid
+				  LEFT JOIN (
+					SELECT 
+					  pdid,
+					  COUNT(pdid) as keyTotal,
+					  SUM(CASE WHEN (measuredvaluemin IS NOT NULL and measuredvaluemin != '') OR ( measuredvaluemax IS NOT NULL  and measuredvaluemax !='' )THEN 1 ELSE 0 END) as keyCount
+					FROM app_task_keyprocess 
+					GROUP BY pdid
+				  ) k ON m.pdid = k.pdid
+				  LEFT JOIN (
+					SELECT 
+					  r.pdid,
+					  COUNT(i.sxid) as recordTotal,
+					  SUM(CASE WHEN i.result in ( '合格', '不合格' ) THEN 1 ELSE 0 END) as recordCount,
+					  case when i.result = '不合格' then '1' else 0 end as recordStatus
+					FROM app_task_record r
+					LEFT JOIN app_task_record_item i ON r.sxid = i.psxid
+					GROUP BY r.pdid
+				  ) i ON m.pdid = i.pdid
  				ORDER BY
  					m.pdid DESC`;