From 0e9f61d1697564f4adb188e363cb8f4aa196fba5 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Fri, 30 Sep 2022 09:04:43 +0800
Subject: [PATCH] 事件上报

---
 api/taskinfo/list.js              |    8 +
 pages/taskinfo/list.vue           |   36 ++++++
 api/eventgm/eventgm.js            |    9 +
 manifest.json                     |   11 +
 pages.json                        |    8 +
 utils/func.js                     |    3 
 api/dict/dict.js                  |   12 ++
 pages/taskinfo/eventsReported.vue |  212 ++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 291 insertions(+), 8 deletions(-)

diff --git a/api/dict/dict.js b/api/dict/dict.js
new file mode 100644
index 0000000..57a42d7
--- /dev/null
+++ b/api/dict/dict.js
@@ -0,0 +1,12 @@
+import http from '@/http/api.js'
+
+
+export const getDicList = (code) => {
+  return http.request({
+    url: '/blade-system/dict-biz/dictionary',
+    method: 'get',
+    params: {
+		code
+	}
+  })
+}
\ No newline at end of file
diff --git a/api/eventgm/eventgm.js b/api/eventgm/eventgm.js
new file mode 100644
index 0000000..e152b36
--- /dev/null
+++ b/api/eventgm/eventgm.js
@@ -0,0 +1,9 @@
+import http from '@/http/api.js'
+
+export const add = (row) => {
+  return http.request({
+    url: '/eventgm/eventgm/submit',
+    method: 'post',
+    data: row
+  })
+}
\ No newline at end of file
diff --git a/api/taskinfo/list.js b/api/taskinfo/list.js
index 37a6431..d1de2b4 100644
--- a/api/taskinfo/list.js
+++ b/api/taskinfo/list.js
@@ -11,3 +11,11 @@
 		}
 	})
 }
+
+export const update = (row) =>{
+	return http.request({
+		url:'/taskInfo/taskinfo/submit',
+		method:'POST',
+		data:row
+	})
+}
diff --git a/manifest.json b/manifest.json
index aca0d30..5cac501 100644
--- a/manifest.json
+++ b/manifest.json
@@ -22,7 +22,9 @@
             "delay" : 0
         },
         /* 模块配置 */
-        "modules" : {},
+        "modules" : {
+            "Geolocation" : {}
+        },
         /* 应用发布信息 */
         "distribute" : {
             /* android打包配置 */
@@ -55,7 +57,12 @@
             "ios" : {},
             /* SDK配置 */
             "sdkConfigs" : {
-                "ad" : {}
+                "ad" : {},
+                "geolocation" : {
+                    "system" : {
+                        "__platform__" : [ "ios", "android" ]
+                    }
+                }
             }
         }
     },
diff --git a/pages.json b/pages.json
index 132c21b..0f7884b 100644
--- a/pages.json
+++ b/pages.json
@@ -25,7 +25,13 @@
 				"navigationBarTitleText": "任务列表",
 				"enablePullDownRefresh": false
 			}
-
+		},
+		{
+			"path": "pages/taskinfo/eventsReported",
+			"style": {
+				"navigationBarTitleText": "事件上报",
+				"enablePullDownRefresh": false
+			}
 		}
 	],
 	"globalStyle": {
diff --git a/pages/taskinfo/eventsReported.vue b/pages/taskinfo/eventsReported.vue
new file mode 100644
index 0000000..02d7916
--- /dev/null
+++ b/pages/taskinfo/eventsReported.vue
@@ -0,0 +1,212 @@
+<template>
+	<view class="container">
+		<u-form :model="form" ref="uForm" :rules="rules">
+			
+			<u-form-item label="地址:">
+				<u-input v-model="form.address" placeholder="请输入地址" @click="getAddress"/>
+			</u-form-item>
+			
+			<u-form-item label-width="20%" label="事件类型:" prop="type">
+				<u-input v-model="form.typeText" type="select" @click="showType = true" placeholder="请选择事件类型"/>
+			</u-form-item>
+			<u-action-sheet
+				v-model="showType"
+				:list="typeList"
+				title="请选择事件类型"
+				@click="typeSelect"
+			>
+			</u-action-sheet>
+			
+			<u-form-item label-width="20%" label="事件状态:" prop="state">
+				<u-input v-model="form.stateText" type="select" @click="showState = true" placeholder="请选择事件状态"/>
+			</u-form-item>
+			<u-action-sheet
+				v-model="showState"
+				:list="stateList"
+				title="请选择事件状态"
+				@click="stateSelect"
+			>
+			</u-action-sheet>
+			
+			<u-form-item label-width="20%" label="事件来源:">
+				<u-input :disabled="true" v-model="form.sourceText" type="select" @click="showSource = true" placeholder="请选择事件来源"/>
+			</u-form-item>
+<!-- 			<u-action-sheet
+				v-model="showSource"
+				:list="sourceList"
+				title="请选择事件状态"
+				@click="sourceSelect"
+			>
+			</u-action-sheet> -->
+			
+			<u-form-item label-position="top" label-width="25%" label="图片上传:">
+				<u-upload ref="uUpload" :header="header" :action="uploadApi" max-count="5" ></u-upload>
+			</u-form-item>
+			
+			<u-form-item label-position="top" label="备注:">
+				<u-input v-model="form.remark" type="textarea" />
+			</u-form-item>
+		</u-form>
+		
+		<view class="submitBtn">
+			<u-button @click="submit">提交</u-button>
+		</view>
+	</view>
+
+</template>
+
+<script>
+import {clientId,clientSecret} from '@/common/setting'
+import {add} from "@/api/eventgm/eventgm.js"
+import {getDicList} from "@/api/dict/dict.js"
+export default {
+	data() {
+		return {
+			form: {
+				address:"",
+				longitude:"",
+				latitude:"",
+				type:"",
+				typeText:"",
+				state:"",
+				stateText:"",
+				source:"APP",
+				sourceText:"APP",
+				picUrls:[],
+				remark:"",
+			},
+			rules:{
+				type:[{
+					required:true,
+					message:'请选择事件类型',
+					trigger:'blur'
+				}],
+				state:[{
+					required:true,
+					message:'请选择事件状态',
+					trigger:'blur'
+				}],
+				
+			},
+			//换用其他写法
+			uploadApi:"http://localhost/blade-resource/oss/endpoint/put-file-attach",
+			header:{},
+			showType:false,
+			typeList:[],
+			showState:false,
+			stateList:[],
+			showSource:false,
+			sourceList:[
+				{
+					text: 'WEB',
+					value:'WEB'
+				},
+				{
+					text: 'APP',
+					value:'APP'
+				},
+			],
+		};
+	},
+	onReady() {
+		this.$refs.uForm.setRules(this.rules);
+	},
+	created() {
+		this.getType()
+		this.getState()
+		this.getHeader()
+	},
+	methods:{
+		getHeader(){
+			let accessToken = uni.getStorageSync('accessToken');
+			if (accessToken) {
+				this.header['Blade-Auth'] = 'bearer ' + accessToken;
+			}
+			// 客户端认证参数
+			this.header['Authorization'] = 'Basic ' + Base64.encode(clientId + ':' + clientSecret);
+		},
+		getAddress(){
+			uni.getLocation({
+				type: 'wgs84',
+				isHighAccuracy:true,
+				geocode:true,
+				success: res=> {
+					console.log(res)
+					console.log('当前位置的经度:' + res.longitude);
+					console.log('当前位置的纬度:' + res.latitude);
+					this.form.longitude = res.longitude
+					this.form.latitude = res.latitude
+				}
+			});
+		},
+		//获取数据字典
+		getType(){
+			getDicList("EVENT_TYPE").then(res=>{
+				if(res.code == 200){
+					res.data.forEach(e=>{
+						this.typeList.push({
+							text:e.dictValue,
+							key:e.dictKey
+						})
+					})
+				}
+			})
+		},
+		getState(){
+			getDicList("EVENT_STATE").then(res=>{
+				if(res.code == 200){
+					res.data.forEach(e=>{
+						this.stateList.push({
+							text:e.dictValue,
+							key:e.dictKey
+						})
+					})
+				}
+			})
+		},
+		//选择事件
+		typeSelect(index){
+			this.form.typeText = this.typeList[index].text
+			this.form.type = this.typeList[index].key
+		},
+		stateSelect(index){
+			this.form.stateText = this.stateList[index].text
+			this.form.state = this.stateList[index].key
+		},
+		sourceSelect(index){
+			this.form.sourceText = this.sourceList[index].text
+			this.form.source = this.sourceList[index].value
+		},
+		submit(){
+			this.$refs.uForm.validate(valid => {
+				if (valid) {
+					let lists = this.$refs.uUpload.lists
+					if(lists.length>0){
+						lists.forEach(e=>{
+							this.form.picUrls.push({
+								label:e.response.data.name,
+								value:e.response.data.link
+							})
+						})
+					}else{
+						this.form.picUrls = null
+					}
+					add(this.form).then(res=>{
+						if(res.code ==200){
+							uni.redirectTo({
+								url:"/pages/taskinfo/list"
+							})
+						}
+					})
+				} 
+			});
+		}
+	}
+};
+</script>
+
+<style scoped>
+	.container{
+		padding: 20px;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/taskinfo/list.vue b/pages/taskinfo/list.vue
index 0357227..d8a34ba 100644
--- a/pages/taskinfo/list.vue
+++ b/pages/taskinfo/list.vue
@@ -29,9 +29,9 @@
 							</view>
 						</view>
 						<view class="onve-right">
-							<u-button class='greens' size="mini" v-if="current == 0">开始任务</u-button>
-							<u-button class='greens' size="mini" v-if="current == 1">完成任务</u-button>
-							<u-button class='o-r-down' plain type="error" size="mini" v-if="current == 1">事件上报
+							<u-button class='greens' size="mini" v-if="current == 0" @click="startTask(item)">开始任务</u-button>
+							<u-button class='greens' size="mini" v-if="current == 1" @click="finishTask(item)">完成任务</u-button>
+							<u-button class='o-r-down' plain type="error" size="mini" v-if="current == 1" @click="goToEventsReported">事件上报
 							</u-button>
 						</view>
 					</view>
@@ -46,7 +46,7 @@
 
 <script>
 	import {
-		getList
+		getList,update
 	} from "@/api/taskinfo/list.js";
 	export default {
 		data() {
@@ -103,6 +103,34 @@
 					this.page.total = data.total;
 					this.taskinfoList = this.taskinfoList.concat(data.records)
 				})
+			},
+			//任务开始事件
+			startTask(item){
+				item.state = '1'
+				item.routeRange =  '\'' + item.routeRange + '\''
+				update(item).then(res=>{
+					if(res.code == 200){
+						this.page.currentPage = 1
+						this.getList()
+					}
+				})
+			},
+			//任务结束事件
+			finishTask(item){
+				item.state = '2'
+				item.routeRange =  '\'' + item.routeRange + '\''
+				update(item).then(res=>{
+					if(res.code == 200){
+						this.page.currentPage = 1
+						this.getList()
+					}
+				})
+			},
+			//事件上报
+			goToEventsReported(){
+				uni.navigateTo({
+					url:"../taskinfo/eventsReported"
+				})
 			}
 		}
 	}
diff --git a/utils/func.js b/utils/func.js
index 435be48..2b7cb00 100644
--- a/utils/func.js
+++ b/utils/func.js
@@ -7,7 +7,8 @@
 		vm.$u.vuex('accessToken', userInfo.access_token)
 		vm.$u.vuex('isLogin', true)
 		uni.switchTab({
-			url: '/pages/home/home'
+			// url: '/pages/home/home'
+			url:'/pages/service/service'
 		})
 	}
 

--
Gitblit v1.9.3