Преглед изворни кода

修改声像记录任务详情页面数据获取方式(直接从record表统计获取),修改拍照点序列号展示逻辑,添加初始化数据

ZhangLeo пре 2 дана
родитељ
комит
669278aa57

+ 36 - 2
api/work.uts

@@ -1,5 +1,5 @@
 // #ifdef APP-ANDROID
-import {selectTableData, insertTableData, updateTableData, selectJoinTableData} from '@/utils/sqlite'
+import {selectTableData, insertTableData, updateTableData, selectJoinTableData, selectRecordData} from '@/utils/sqlite'
 // #endif
 
 export type Download = {
@@ -57,7 +57,14 @@ export type Record = {
 	 workorder: string
 	 invname: string
  }
-  
+
+export type RecordCalculate = {
+	photoitem: string,
+	pid: number,
+	step: number,
+	total: number,
+	status: number
+}  
 
 export function offlineData(data:UTSJSONObject):Promise<UTSJSONObject> {
 	return new Promise((resolve, reject) => {	
@@ -82,6 +89,19 @@ export async function getList(tableName:string, condition?:string|null, value?:s
   // #endif
 }
 
+export async function getListFor2Params(tableName:string, condition?:string|null, value?:string|null, condition2?:string|null, value2?:string|null, initData?:UTSJSONObject|null):Promise<UTSJSONObject> {
+   
+    // #ifdef APP-ANDROID
+    const result = await selectTableData(tableName, condition, value, condition2, value2);
+    console.log(result);
+	return result;
+	// #endif
+   
+  // #ifdef H5
+   return offlineData(initData)
+  // #endif
+}
+
 export async function getJoinList(dbTable:string, joinTable:string, labels:string, joinCondition:string, lname?:string, lvalue?:string, others?:string):Promise<UTSJSONObject> {
    
     // #ifdef APP-ANDROID
@@ -100,3 +120,17 @@ export async function updateData(tableName: string, data: string, lname?: string
 	return result;
 	// #endif
 }
+
+
+export async function getRecordCalculate(tableName: string, value?:string|null, initData?:UTSJSONObject|null):Promise<UTSJSONObject> {
+   
+    // #ifdef APP-ANDROID
+    const result = await selectRecordData(tableName, value);
+    console.log(result); 
+	return result;
+	// #endif
+   
+  // #ifdef H5
+   return offlineData(initData)
+  // #endif
+}

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

@@ -21,9 +21,9 @@
 					<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 : TaskProcess,index2 : number) in taskProcessList"
-					:key="index2" @click="enterProcess(taskProcess.id)">
-					<uni-td class="grid-text">{{taskProcess.name}}</uni-td>
+				<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,
@@ -31,7 +31,7 @@
 							'bg-black bg-text': taskProcess.status === 1,
 							'bg-red bg-text': taskProcess.status === 4
 						  }">
-							{{taskProcess.step}}/{{taskProcess.num}}
+							{{taskProcess.step}}/{{taskProcess.total}}
 						</text>
 					</uni-td>
 					<uni-td class="grid-text">
@@ -53,13 +53,13 @@
 		ref,
 		onMounted
 	} from 'vue'
-	import { getList, Download, TaskProcess } from '@/api/work';
+	import { getList, Download, TaskProcess, getRecordCalculate, RecordCalculate } from '@/api/work';
 
 	const titleList = [{
 		title1: "部位", title2: "进度", title3: "状态"
 	}];
-	var taskProcessList = ref<TaskProcess[]>([]);
-	var initTasks = [] as TaskProcess[]
+	var taskProcessList = ref<RecordCalculate[]>([]);
+	var initTasks = [] as RecordCalculate[]
 	
 	const download = ref<Download>({
 		pdid: 0,
@@ -122,13 +122,13 @@
          	 })
 			 
 			 //获取下载产品任务数据
-			 getList('app_product_task', 'pid', downloadId, null).then((res:UTSJSONObject) => {
+			 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<TaskProcess>(item.toJSONString());
+			 						let task = JSON.parse<RecordCalculate>(item.toJSONString());
 			 						if(task!=null){
 			 							initTasks.push(task)
 			 						}
@@ -146,10 +146,10 @@
 		uni.navigateBack()
 	}
 
-	const enterProcess = (id : number) => {
-		console.log(id);
+	const enterProcess = (photoitem : string) => {
+		console.log(photoitem);
 		uni.navigateTo({
-			url: `/pages/work/record/RecordList?id=${id}`
+			url: `/pages/work/record/RecordList?photoitem=${photoitem}`
 		});
 	}
 </script>

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

@@ -21,9 +21,9 @@
 					<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 : TaskProcess,index2 : number) in taskProcessList"
-					:key="index2" @click="enterProcess(taskProcess.id, taskProcess.num)">
-					<uni-td class="grid-text">{{taskProcess.name}}</uni-td>
+				<uni-tr class="section-title" v-for="(taskProcess : RecordCalculate,index2 : number) in taskProcessList"
+					:key="index2" @click="enterProcess(taskProcess.photoitem, taskProcess.total, taskProcess.pid)">
+					<uni-td class="grid-text">{{taskProcess.photoitem}}</uni-td>
 					<uni-td class="grid-text">
 						<text :class="{
 							'bg-green bg-text': taskProcess.status === 3,
@@ -31,7 +31,7 @@
 							'bg-black bg-text': taskProcess.status === 1,
 							'bg-red bg-text': taskProcess.status === 4
 						  }">
-							{{taskProcess.step}}/{{taskProcess.num}}
+							{{taskProcess.step}}/{{taskProcess.total}}
 						</text>
 					</uni-td>
 					<uni-td class="grid-text">
@@ -53,14 +53,14 @@
 		ref,
 		onMounted
 	} from 'vue'
-	import { getList, Download, TaskProcess } from '@/api/work';
+	import { getList, Download, TaskProcess, getRecordCalculate, RecordCalculate } from '@/api/work';
 
 	const titleList = [{
 		title1: "部位", title2: "进度", title3: "状态"
 	}];
 	
-	var taskProcessList = ref<TaskProcess[]>([]);
-	var initTasks = [] as TaskProcess[]
+	var taskProcessList = ref<RecordCalculate[]>([]);
+	var initTasks = [] as RecordCalculate[]
 	
 	const download = ref<Download>({
 		pdid: 0,
@@ -122,13 +122,13 @@
             	 })
            	 
            	 //获取下载产品任务数据
-           	 getList('app_media_task', 'pid', downloadId, null).then((res:UTSJSONObject) => {
+           	 getRecordCalculate('app_media_record', 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<TaskProcess>(item.toJSONString());
+           	 						let task = JSON.parse<RecordCalculate>(item.toJSONString());
            	 						if(task!=null){
            	 							initTasks.push(task)
            	 						}
@@ -146,10 +146,10 @@
 		uni.navigateBack()
 	}
 
-	const enterProcess = (id : number, num: number) => {
-		console.log(id);
+	const enterProcess = (photoitem : string, num: number, pid: number) => {
+		console.log(photoitem);
 		uni.navigateTo({
-			url: `/pages/work/record/RecordList?id=${id}&num=${num}`
+			url: `/pages/work/record/RecordList?photoitem=${photoitem}&num=${num}&pid=${pid}`
 		});
 	}
 </script>

+ 13 - 12
pages/work/record/RecordList.uvue

@@ -1,14 +1,14 @@
 <template>
 	<scroll-view class="tag-scroll-container" scroll-x="true">
 		<view class="record-card2 flex-row">
-			<view class="tag-circle" v-for="(tag,index) in maxcount" :key="index" @click="tabsClick(tag)"
-				:class="{'checked-tag' : tag === current}">
+			<view class="tag-circle" v-for="(item, index) in initRecords" :key="index" @click="tabsClick(item.senum)"
+				:class="{'checked-tag' : item.senum == current}">
 				<text class="circle" :class="{
-								'bg-green': tag<=2,
-								'bg-yellow': tag%3 === 0,
-								'bg-red': tag%2 === 0,
-								'bg-black': tag>=4
-							  }">{{tag}}</text>
+								'bg-green': item.status == '已执行',
+								'bg-yellow': item.status == '执行中',
+								'bg-red': item.status == '异常',
+								'bg-black': item.status == '未执行'
+							  }">{{item.senum}}</text>
 			</view>
 		</view>
 	</scroll-view>
@@ -21,7 +21,7 @@
 			<view class="header-row">
 				<text class="label">序号:</text>
 				<text class="value">{{ item.senum }}</text>
-				<text class="status" :class="{'status-cancelled': item.status === '已取消'}">{{ item.status }}</text>
+				<text class="status" :class="{'status-cancelled': item.status === '已取消', 'bg-red': item.status == '异常'}">{{ item.status }}</text>
 			</view>
 
 			<view class="info-row">
@@ -59,7 +59,7 @@
 			</button>
 
 			<view class="info-row" style="margin: 10px 0;">
-				<view v-for="(tag,index) in item.imgname" :key="index">
+				<view v-for="(tag,index) in item.imgname" :key="index" v-if="item.imgname[index] != ''">
 					<text class="img-banner" v-if="closeTags[index]" @click="closeTag(index)">{{tag}}</text>
 				</view>
 
@@ -98,7 +98,7 @@
 	import {
 		ref
 	} from 'vue'
-	import { getList, Record } from '@/api/work';
+	import { getList, Record, getListFor2Params } from '@/api/work';
 
 	//检查项目最大数量
 	var maxcount = 5
@@ -108,11 +108,12 @@
 	var initRecords = [] as Record[]
 
 	onLoad((options) => {
-		const tid = options?.id ?? ""
+		const photoitem = options?.photoitem ?? ""
 		const num = options?.num ?? "1"
+		const pid = options?.pid ?? "1"
 		maxcount = parseInt(num)
 		// #ifdef APP-ANDROID
-		getList('app_media_record', 'sxid', tid, null).then((res : UTSJSONObject) => {
+		getListFor2Params('app_media_record', 'photoitem', photoitem, 'pid', pid, null).then((res : UTSJSONObject) => {
 			let dataList = res?.['data'] as UTSJSONObject[] ?? Array<UTSJSONObject>()
 			if (dataList != null && dataList.length > 0) {
 				dataList.forEach(item => {

BIN
static/db/QT800.db


+ 80 - 0
utils/sqlite.uts

@@ -317,3 +317,83 @@ export function selectTableData (
       resolve(ret)
     })
   }
+
+
+// 获取统计值
+// @param {Object} lvalue:关联主表id
+export function selectRecordData(
+	dbTable: string,
+	lvalue ?: string
+) : Promise<UTSJSONObject> {
+
+	var sql = '';
+	if (lvalue !== null && dbTable !== null) {
+		sql = `SELECT
+					pid,
+					photoitem,
+					step,
+					total,
+					CASE
+						WHEN has_exception > 0 THEN
+						4 
+						WHEN step = 0 THEN
+						1 
+						WHEN step < total THEN
+						2
+						WHEN step = total THEN
+						3 
+					END AS status
+				FROM
+					(
+					SELECT
+					  pid,
+						sxid,
+						photoitem,
+						SUM( CASE WHEN status IN ('已执行', '异常') THEN 1 ELSE 0 END ) AS step,
+						COUNT( 1 ) AS total,
+						SUM( CASE WHEN status = '异常' THEN 1 ELSE 0 END ) AS has_exception 
+					FROM
+						${dbTable} 
+					WHERE
+						pid = '${lvalue}'
+					GROUP BY
+						photoitem 
+					ORDER BY
+					CAST ( sxid AS INTEGER ) 
+					) AS sub`
+			
+		const sqlite = createSQLiteContext(dbName);
+
+		return new Promise<UTSJSONObject>((resolve, reject) => {
+			const selectSqlOptions = {
+				sql: sql,
+				success: (e : selectSqlOptionsResult) => {
+					console.log(e)
+
+				},
+				fail: (e : selectSqlOptionsResult) => {
+					console.error(e)
+				}
+			} as selectSqlOptions
+
+			const info = sqlite.selectSql(selectSqlOptions) as selectSqlOptionsResult
+
+			console.log(info)
+			const ret = {
+				errMsg: info?.errMsg ?? '',
+				data: info?.data ?? ['']
+			} as UTSJSONObject
+			resolve(ret)
+		});
+	} else {
+		return new Promise<UTSJSONObject>((resolve, reject) => {
+			const ret = {
+				errMsg: '错误查询',
+				data: ['参数不存在']
+			} as UTSJSONObject
+			resolve(ret);
+		})
+	}
+}
+
+