From 659d09ec24dab6c451220c8f3bb3943b0fdb3ba1 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Mon, 08 Jan 2024 16:16:12 +0800
Subject: [PATCH] fix:地图导航

---
 pages/actionChange/newPage/index.vue                 |   91 +++++++++++++++++++++++++++++++++++++++++++++
 manifest.json                                        |    8 +++
 pages/actionChange/components/rectificationInfor.vue |    2 
 pages/actionChange/components/basicInfor.vue         |   16 ++++++++
 4 files changed, 114 insertions(+), 3 deletions(-)

diff --git a/manifest.json b/manifest.json
index 3c45bf9..9298203 100644
--- a/manifest.json
+++ b/manifest.json
@@ -49,7 +49,13 @@
 			"postcss": true,
 			"minified": true
 		},
-		"usingComponents": true
+		"usingComponents": true,
+		"permission": {
+			"scope.userLocation": {
+				"desc": "������"
+			}
+		},
+		"requiredPrivateInfos": ["getLocation", "chooseLocation"]
 	},
 	"mp-alipay": {
 		"usingComponents": true
diff --git a/pages/actionChange/components/basicInfor.vue b/pages/actionChange/components/basicInfor.vue
index ca19e88..87811da 100644
--- a/pages/actionChange/components/basicInfor.vue
+++ b/pages/actionChange/components/basicInfor.vue
@@ -85,6 +85,8 @@
 						<view class="wholeLine">
 							<text class="rowTipContenetLabel">������������:</text>
 							<text class="rowTipContenetAll">{{ basicInfor.pollutePosition ||'' }}</text>
+							<u-icon name="map" color="#2979ff" size="28" @tap="toNavigation()"
+								v-if="basicInfor.longitude !==null"></u-icon>
 						</view>
 					</p>
 					<p class="rowTip">
@@ -159,6 +161,20 @@
 			}
 		},
 		methods: {
+			//������--������������������������
+			toNavigation: function() {
+				//������������������������������������
+				uni.openLocation({
+					longitude: parseFloat(this.basicInfor.longitude), // ������������������-180~180���������������������
+					latitude: parseFloat(this.basicInfor.latitude), // ������������������-90~90���������������������
+					scale: 28, // ������������
+					name: this.basicInfor.name, //������������
+					address: this.basicInfor.address, //������������������
+					success: function(res) {
+						console.log('success:', res)
+					}
+				})
+			},
 			getUnitList() {
 				this.$http.httpGet('/allocation/unit').then(res => {
 					this.unitList = res.data
diff --git a/pages/actionChange/components/rectificationInfor.vue b/pages/actionChange/components/rectificationInfor.vue
index ec93b2c..cd7a7ee 100644
--- a/pages/actionChange/components/rectificationInfor.vue
+++ b/pages/actionChange/components/rectificationInfor.vue
@@ -109,7 +109,7 @@
 					value: 0,
 				}, ],
 				form: {
-					isChange: 0,
+					isChange: 1,
 					changeName: '',
 					changeDescribe: '',
 				},
diff --git a/pages/actionChange/newPage/index.vue b/pages/actionChange/newPage/index.vue
index 3c53e01..6c34083 100644
--- a/pages/actionChange/newPage/index.vue
+++ b/pages/actionChange/newPage/index.vue
@@ -10,7 +10,11 @@
 					@confirm="checkTime" @cancel='showeEscalationTime=false' />
 			</u-form-item>
 			<u-form-item border-bottom label="������������:" prop="pollutePosition" required>
-				<u-input v-model="form.pollutePosition" border="none" placeholder="���������" type="text" />
+				<u-input v-model="form.pollutePosition" border="none" placeholder="���������" type="text">
+					<template slot="suffix">
+						<u-button @tap="authVerification()" text="������������" type="success" size="mini"></u-button>
+					</template>
+				</u-input>
 			</u-form-item>
 			<u-form-item border-bottom label="������������:" prop="unitId" required @click="
 					showCheckBox = true;
@@ -95,6 +99,7 @@
 				labelStyle: {
 					fontSize: '30.77rpx'
 				},
+				addressInfor: {},
 				showeEscalationTime: false,
 				actionOptionList: [],
 				rules: {
@@ -190,6 +195,86 @@
 			return false
 		},
 		methods: {
+			authVerification() {
+				uni.getSetting({
+					success: res => {
+						if (res.authSetting['scope.userLocation']) {
+							/* ������������������������������ */
+							this.handerLocation()
+						} else if (res.authSetting['scope.userLocation'] === undefined) {
+							/* ��������������������������� */
+							console.log('������������', res)
+							this.handleOpenSetting()
+						} else {
+							/* ��������������������������������� */
+							console.log('��������������� false')
+							this.handleOpenSetting()
+						}
+					},
+				})
+			},
+			handerChooseLocation(latitude, longitude) {
+				uni.chooseLocation({
+					latitude: latitude || '',
+					longitude: longitude || '',
+					success: res => {
+						console.log('������������', res)
+						this.addressInfor = res
+						this.form.pollutePosition = res.address
+					},
+					fail: function(err) {
+						console.log('������������', err)
+					}
+				})
+			},
+			handerLocation() {
+				let that = this
+				uni.getLocation({
+					type: 'wgs84',
+					success: function(res) {
+						console.log('111', res)
+						that.handerChooseLocation(res.latitude, res.longitude)
+					},
+					fail(error) {
+						console.log('������', error)
+					}
+				})
+			},
+			handleOpenSetting() {
+				let that = this
+				uni.authorize({
+					scope: 'scope.userLocation',
+					success() {
+						console.log('res', '1111')
+						//���������������--��������������������������������������� ���������������������������������
+						that.handerLocation()
+					},
+					fail(error) {
+						//������������������������--������������������������������������--������������������������������������������������
+						console.log('������������', error)
+						uni.showModal({
+							title: '������',
+							content: '������������������������������������������������',
+							cancelText: '���������',
+							confirmText: '������',
+							success(res) {
+								console.log(res)
+								if (res.confirm) {
+									// ���������������������
+									uni.openSetting({
+										success(res) {
+											that.handerLocation()
+										}
+									})
+								} else if (res.cancel) {
+									// ��������������� ���������
+									console.log('���������������������')
+								}
+							}
+						})
+					}
+				})
+			},
 			handleFile(data) {
 				console.log('datadata', data)
 				this.fileBaseList = data
@@ -242,6 +327,10 @@
 				this.$refs.uForm.validate().then(res => {
 					this.sumbitForm.problemDescribe = this.form.problemDescribe
 					this.sumbitForm.pollutePosition = this.form.pollutePosition
+					this.sumbitForm.address = this.addressInfor.address
+					this.sumbitForm.latitude = this.addressInfor.latitude
+					this.sumbitForm.longitude = this.addressInfor.longitude
+					this.sumbitForm.name = this.addressInfor.name
 					this.sumbitForm.changeDay = this.form.changeDay
 					this.sumbitForm.escalationName = this.form.escalationName
 					this.sumbitForm.investigationType = this.form.investigationType

--
Gitblit v1.8.0