| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 | 
							- <template>
 
- 	<!-- #ifdef APP -->
 
- 	<scroll-view style="flex:1">
 
- 	<!-- #endif -->
 
- 		<!-- 报告基础信息 -->
 
- 		<view class="section">
 
- 			<view class="info-item">
 
- 				<text class="label">声像记录任务</text>
 
- 				<text class="value">{{ download.workorder}}</text>
 
- 			</view>
 
- 			<view class="info-item">
 
- 				<text class="label">{{ download.productno }}</text>
 
- 				<text class="value">{{ download.invname }}</text>
 
- 			</view>
 
- 		</view>
 
- 		<view class="section">
 
- 			<uni-table>
 
- 				<uni-tr class="section-title" v-for="(item,index) in titleList" :key="index">
 
- 					<uni-td class="grid-text">{{item.title1}}</uni-td>
 
- 					<uni-td class="grid-text">{{item.title2}}</uni-td>
 
- 					<uni-td class="grid-text">{{item.title3}}</uni-td>
 
- 				</uni-tr>
 
- 				<uni-tr class="section-title" v-for="(taskProcess : RecordCalculate,index2 : number) in taskProcessList"
 
- 					:key="index2" @click="enterProcess(taskProcess.photoitem)">
 
- 					<uni-td class="grid-text">{{taskProcess.photoitem}}</uni-td>
 
- 					<uni-td class="grid-text">
 
- 						<text :class="{
 
- 							'bg-green bg-text': taskProcess.status === 3,
 
- 							'bg-yellow bg-text': taskProcess.status === 2,
 
- 							'bg-black bg-text': taskProcess.status === 1,
 
- 							'bg-red bg-text': taskProcess.status === 4
 
- 						  }">
 
- 							{{taskProcess.step}}/{{taskProcess.total}}
 
- 						</text>
 
- 					</uni-td>
 
- 					<uni-td class="grid-text">
 
- 						<text :class="{
 
- 							'ft-red': taskProcess.status === 4
 
- 						  }">{{ statusDict[taskProcess.status.toString()] }}</text>
 
- 					</uni-td>
 
- 				</uni-tr>
 
- 			</uni-table>
 
- 		</view>
 
- 	<!-- #ifdef APP -->
 
- 	</scroll-view>
 
- 	<!-- #endif -->
 
- </template>
 
- <script setup>
 
- 	import {
 
- 		ref,
 
- 		onMounted
 
- 	} from 'vue'
 
- 	import { getList, Download, TaskProcess, getRecordCalculate, RecordCalculate, statusDict } from '@/api/work';
 
- 	const titleList = [{
 
- 		title1: "部位", title2: "进度", title3: "状态"
 
- 	}];
 
- 	var taskProcessList = ref<RecordCalculate[]>([]);
 
- 	var initTasks = [] as RecordCalculate[]
 
- 	//const statusMap = ref(new Map<number, string>([[1,'未执行'],[2,'执行中'],[3,'执行完'],[4,'检验失败']]))
 
- 	
 
- 	const download = ref<Download>({
 
- 		pdid: 0,
 
- 		workorder: "",
 
- 		invname: "",
 
- 		productno: "",
 
- 		graphid: "",
 
- 		cardno: "",
 
- 		processno: "",
 
- 		ver: "",
 
- 		updatetime: "",
 
- 		progress: "",
 
- 		status: 1
 
- 	})
 
-      
 
-     // #ifdef H5
 
- 	download.value = {
 
- 		pdid: 1,
 
- 		workorder: "632-P-01",
 
- 		invname: "箱间段",
 
- 		productno: "1CFA1040-00#S",
 
- 		graphid: "HBJ0100-00",
 
- 		cardno: "LK20230707070012",
 
- 		processno: "Pb/XXX-E11",
 
- 		ver: "A.1",
 
- 		updatetime: "2025-06-23",
 
- 		progress: "1/3"
 
- 	}
 
- 	
 
- 	 taskProcessList.value = [
 
- 		{ id: 1, name: "前底-外侧", num: 5, step: 5, status: 3 },
 
- 		{ id: 2, name: "后底-外侧", num: 3, step: 3, status: 4 },
 
- 		{ id: 3, name: "简段-外侧", num: 12, step: 2, status: 2 },
 
- 		{ id: 4, name: "前底-内侧", num: 5, step: 0, status: 1 },
 
- 		{ id: 5, name: "后底-内侧", num: 6, step: 0, status: 1 },
 
- 		{ id: 6, name: "简段-内侧", num: 3, step: 0, status: 1 },
 
- 		{ id: 7, name: "隧道管", num: 5, step: 0, status: 1 },
 
- 	];
 
- 	
 
- 	// #endif
 
- 	onLoad((options) => {
 
- 		const downloadId = options?.id ?? ""
 
- 		// 模拟数据加载,建议替换为后端接口请求
 
-         // #ifdef APP-ANDROID
 
- 		    //获取下载产品数据
 
-          	getList('app_product', 'pdid', downloadId,null, null, null).then((res:UTSJSONObject) => {
 
-          	 		console.log(res)
 
-          				let dataList = res?.['data'] as UTSJSONObject[] ?? Array<UTSJSONObject>()
 
-          				if(dataList!=null && dataList.length>0){							
 
-          					dataList.forEach(item =>{
 
-          						if(item!=null){
 
-          							let data = JSON.parse<Download>(item.toJSONString());
 
-          							if(data!=null){
 
-          								download.value = data
 
-          							}
 
-          						}
 
-          					});
 
-          				} 
 
-          	 })
 
- 			 
 
- 			 //获取下载产品任务数据
 
- 			 getRecordCalculate('app_product_points', downloadId, null).then((res:UTSJSONObject) => {
 
- 			  		console.log(res)
 
- 			 			let dataList = res?.['data'] as UTSJSONObject[] ?? Array<UTSJSONObject>()
 
- 			 			if(dataList!=null && dataList.length>0){							
 
- 			 				dataList.forEach(item =>{
 
- 			 					if(item!=null){
 
- 			 						let task = JSON.parse<RecordCalculate>(item.toJSONString());
 
- 			 						if(task!=null){
 
- 			 							initTasks.push(task)
 
- 			 						}
 
- 			 					}
 
- 			 				});
 
- 			 			} 
 
- 				   console.log(initTasks)
 
- 				   taskProcessList.value = initTasks
 
- 			  })
 
- 			 
 
-         // #endif
 
- 	})
 
- 	const goBack = () => {
 
- 		uni.navigateBack()
 
- 	}
 
- 	const enterProcess = (photoitem : string) => {
 
- 		console.log(photoitem);
 
- 		uni.navigateTo({
 
- 			url: `/pages/work/record/RecordList?photoitem=${photoitem}`
 
- 		});
 
- 	}
 
- </script>
 
- <style scoped>
 
- 	.container {
 
- 		padding: 40rpx;
 
- 		background-color: #f5f7fa;
 
- 		flex: 1;
 
- 		box-sizing: border-box;
 
- 	}
 
- 	.banner {
 
- 		background: linear-gradient(135deg, #2193b0, #6dd5ed);
 
- 		border-radius: 24rpx;
 
- 		padding: 40rpx 30rpx;
 
- 		margin-bottom: 40rpx;
 
- 		box-shadow: 0 8rpx 16rpx rgba(33, 147, 176, 0.3);
 
- 	}
 
- 	.banner-title {
 
- 		color: white;
 
- 		font-size: 36rpx;
 
- 		font-weight: bold;
 
- 		text-align: center;
 
- 	}
 
- 	.section {
 
- 		background-color: #fff;
 
- 		border-radius: 20rpx;
 
- 		padding: 30rpx;
 
- 		margin-bottom: 30rpx;
 
- 		box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.05);
 
- 	}
 
- 	.section-title {
 
- 		display: flex;
 
- 		flex-direction: row;
 
- 		flex: 1;
 
- 	}
 
- 	.info-item {
 
- 		display: flex;
 
- 		justify-content: space-between;
 
- 		/* #ifdef APP-NVUE */
 
- 		font-size: 28rpx;
 
- 		color: #666;
 
- 		/* #endif */
 
- 		margin-bottom: 18rpx;
 
- 		flex-direction: row;
 
- 	}
 
- 	.section-content {
 
- 		font-size: 28rpx;
 
- 		color: #444;
 
- 		line-height: 1.8;
 
- 		white-space: normal;
 
- 	}
 
- 	.grid-text {
 
- 		/* #ifdef APP-NVUE */
 
- 		font-size: 24rpx;
 
- 		color: #000;
 
- 		/* #endif */
 
- 		padding: 10rpx 0 10rpx 0rpx;
 
- 		box-sizing: border-box;
 
- 		margin: 10rpx 10rpx;
 
- 		min-width: 180rpx;
 
- 	}
 
- 	.footer-btn {
 
- 		margin-top: 40rpx;
 
- 		display: flex;
 
- 		justify-content: center;
 
- 	}
 
- 	.main-btn {
 
- 		width: 80%;
 
- 		padding: 28rpx 0;
 
- 		font-size: 30rpx;
 
- 		color: #fff;
 
- 		border: none;
 
- 		border-radius: 100rpx;
 
- 		background: linear-gradient(to right, #36d1dc, #5b86e5);
 
- 		box-shadow: 0 10rpx 24rpx rgba(91, 134, 229, 0.3);
 
- 	}
 
- 	.label {
 
- 		font-weight: bold;
 
- 		color: #102a43;
 
- 		min-width: 150rpx;
 
- 		margin-right: 30rpx;
 
- 	}
 
- 	.value {
 
- 		flex: 1;
 
- 		/* #ifdef APP-NVUE */
 
- 		white-space: nowrap;
 
- 		text-overflow: ellipsis;
 
- 		/* #endif */
 
- 		overflow: hidden;
 
- 		margin-left: 30rpx;
 
- 	}
 
- 	.my-radius {
 
- 		border-radius: 10rpx;
 
- 	}
 
- 	.bg-text {
 
- 		width: 100rpx;
 
- 		min-width: 80rpx;
 
- 		border-radius: 10rpx;
 
- 		text-align: center;
 
- 	}
 
- 	.bg-green {
 
- 		background-color: seagreen;
 
- 		color: #fff;
 
- 	}
 
- 	.bg-yellow {
 
- 		background-color: yellow;
 
- 	}
 
- 	.bg-black {
 
- 		background-color: #102a43;
 
- 		color: #fff;
 
- 	}
 
- 	.bg-red {
 
- 		background-color: red;
 
- 		color: #fff;
 
- 	}
 
- 	.ft-red {
 
- 		color: red;
 
- 	}
 
- </style>
 
 
  |