李程龙 3 lat temu
rodzic
commit
757c76ae23

+ 28 - 7
api/pest.js

@@ -1,19 +1,40 @@
 import request from '@/utils/request/index.js'
+import config from '@/config/config.js'
+import cache from '@/utils/cache'
+import {
+	LOGIN_TOKEN
+} from '@/config/cache'
 /**
  * 病害监测模块
  */
 
-// 病害监测数据请求父类函数
-const pestRequest = async (url, data, ...args) => {
-	const res = await request.post(`api/api_gateway?method=pest.pests.${url}`, data, ...args);
-	return res?.data;
+// 识别基类 (uni.request 对formData数据不支持,暂时先写成独立的基类,后期遇到好的方案可改进)
+export const baseDiscern = (url, img_file) => {
+	uni.r
+	return new Promise((resolve, reject) => {
+		uni.uploadFile({
+			url: config.baseUrl +
+				'api/api_gateway?method=pest.pests.' + url, //仅为示例,非真实的接口地址
+			formData: {
+				'img_file': img_file,
+				token: cache.get(LOGIN_TOKEN)
+			},
+			success: (uploadFileRes) => {
+				resolve(uploadFileRes.data);
+			}
+		});
+	})
 }
 
+
 // 病虫害库
-export const loadPestList = (data) => pestRequest('pests_info', data);
+export const loadPestList = (data) => async (data) => {
+	const res = await request.post(`api/api_gateway?method=pest.pests.pests_info`, data);
+	return res?.data;
+}
 
 // 虫害识别
-export const handleInsectDiscern = (data) => pestRequest('insect_discern', data);
+export const handleInsectDiscern = (img_file) => baseDiscern('insect_discern', img_file);
 
 // 病害识别
-export const handlePlantDiscern = (data) => pestRequest('plant_discern', data);
+export const handlePlantDiscern = (img_file) => baseDiscern('plant_discern', img_file);

+ 7 - 11
pages/pest/discern-result.vue

@@ -1,21 +1,16 @@
 <template>
 	<!-- 病虫害识别结果 -->
 	<view class="page-panel">
-		<image class="discern-img" src="@/static/demo/a01.jpg" mode="aspectFill"></image>
+		<image class="discern-img" :src="result.img_urls" mode="aspectFill"></image>
 		<view class="discern-title">识别结果</view>
+		<view class="pest-title">{{result.name}}</view>
+		<view class="pest-paragraph">{{result.prevention}}</view>
 		<view class="discern-result">
 			<view class="row-between discern-item">
-				<view>害虫名称:<text>水龟虫(120)</text></view>
-				<view>害虫数量:<text>1只</text></view>
-			</view>
-			<view class="row-between discern-item">
-				<view>害虫名称:<text>水龟虫(120)</text></view>
-				<view>害虫数量:<text>1只</text></view>
-			</view>
-			<view class="row-between discern-item">
-				<view>害虫名称:<text>水龟虫(120)</text></view>
+				<view>害虫名称:<text>{{result.name}}</text></view>
 				<view>害虫数量:<text>1只</text></view>
 			</view>
+			
 		</view>
 		
 		<button class="btn discern-btn">重新识别</button>
@@ -26,7 +21,8 @@
 	export default {
 		data() {
 			return {
-
+				//识别结果
+				result:{}
 			};
 		}
 	}

+ 7 - 11
pages/pest/discern.vue

@@ -47,7 +47,7 @@
 			};
 		},
 		methods: {
-			
+
 
 			/**
 			 * 开始识别
@@ -58,20 +58,16 @@
 				if (!file) {
 					return;
 				}
-				let result;// 识别结果
+				let result; // 识别结果
 				// 识别虫害
-				if(type=='insect'){
-					result = await handleInsectDiscern({
-						img_file: file
-					})
+				if (type == 'insect') {
+					result = await handleInsectDiscern(file)
 				}
 				// 识别病害
-				if(type=='plant'){
-					result = await handlePlantDiscern({
-						img_file: file
-					})
+				if (type == 'plant') {
+					result = await handlePlantDiscern(file)
 				}
-				
+
 			},
 			uploadImageSync() {
 				return new Promise((resolve, reject) => {

+ 1 - 0
utils/cache.js

@@ -15,6 +15,7 @@ const Cache = {
 		}
 	},
 	get(key) {
+		return '1LghTlDdt7dBVyRIyadh2lmA3y9JmD9Cbtc3e57GUic='
 		try {
 			let data = uni.getStorageSync(key)
 			const {

+ 6 - 7
utils/request/index.js

@@ -19,13 +19,12 @@ const service = request({
 // 请求拦截器
 service.interceptors.request.use(async (config, ...args) => {
 
-	// // 判断token是否存在
-	// let token = cache.get(LOGIN_TOKEN) || '';
-	// // token为空已过期 刷新token
-	// if (token) {
-	// 	config.body.token = token;
-	// }
-	config.body.token = '1LghTlDdt7dBVyRIyadh2lmA3y9JmD9Cbtc3e57GUic='
+	// 判断token是否存在
+	let token = cache.get(LOGIN_TOKEN) || '';
+	// token为空已过期 刷新token
+	if (token) {
+		config.body.token = token;
+	}
 	return config
 })
 

+ 6 - 3
utils/request/request.js

@@ -65,7 +65,8 @@ export default function({
 			}, ...args)
 		},
 		onerror: () => {}, // 请求错误钩子函数集合
-		file(method, url, data, header, reqIntercept, resIntercept) {
+		file(method, url, data, header, reqIntercept=true, resIntercept=true) {
+			console.log(data);
 			let timer, // timer 检测超时定时器
 				requestTask, // requestTask 网络请求 task 对象
 				aborted = false, // aborted 请求是否已被取消
@@ -91,8 +92,10 @@ export default function({
 						await this.onerror(method, url, data, '网络请求失败:主动取消')
 						return reject('网络请求失败:主动取消')
 					}
+					console.log(body);
 					requestTask = uni[method]({
-						url: url[0] === '/' ? baseURL + url : url,
+						// url: url[0] === '/' ? baseURL + url : url,
+						url:  baseURL + url,
 						name: data.name,
 						header,
 						filePath: data.filePath,
@@ -137,7 +140,7 @@ export default function({
 			}) // 如果调用 cancel 方法,返回 _watcher.cancel 方法
 		},
 		request(method, url, data, header, reqIntercept=true, resIntercept=true) {
-			console.log(header);
+			
 			let timer, // timer 检测超时定时器
 				requestTask, // requestTask 网络请求 task 对象
 				aborted = false, // aborted 请求是否已被取消