From da25434b85fc5b4321c429bf95e719d00ec395bb Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Thu, 11 Jan 2024 16:21:16 +0800 Subject: [PATCH] 定位优化 --- pages/actionChange/newPage/index.vue | 202 +++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 180 insertions(+), 22 deletions(-) diff --git a/pages/actionChange/newPage/index.vue b/pages/actionChange/newPage/index.vue index e84ee88..26a9a96 100644 --- a/pages/actionChange/newPage/index.vue +++ b/pages/actionChange/newPage/index.vue @@ -10,7 +10,18 @@ @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" /> + <view style="display: flex;align-items: center;"> + <u--textarea v-model="form.pollutePosition" border="none" placeholder="���������" + autoHeight></u--textarea> + <view style="width: 60px;"> + <u-button @tap="authVerification()" text="������������" type="success" size="mini"></u-button> + </view> + </view> + <!-- <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; @@ -27,16 +38,14 @@ type="select" /> <u-icon slot="right" name="arrow-right" /> </u-form-item> - <u-form-item border="none" border-bottom label="������������:" prop="changeType" required @click=" - showCheckBox = true; - hideKeyboard('changeEnum', 'changeType'); - "> - <u-input v-model="form.changeType" border="none" disabled disabled-color="#ffffff" placeholder="���������" - type="select" /> - <u-icon slot="right" name="arrow-right" /> + <u-form-item border="none" border-bottom label="������������:" prop="changeType" required> + <u-radio-group v-model="form.changeType" style="font-size: 13px;"> + <u-radio :key="index" v-for="(item, index) in changeEnum" :customStyle="{marginRight: '16px'}" + :label="item.name" :name="item.value" /> + </u-radio-group> </u-form-item> - <u-form-item border-bottom label="������������:" placeholder="���������" required> - <u-input v-model="form.changeDay" border="none" type="number" /> + <u-form-item border-bottom label="������������:" placeholder="���������" required :disabled='Number(form.changeType)===1'> + <u-input v-model="form.changeDay" border="none" type="number" :disabled='Number(form.changeType)===1' /> </u-form-item> <u-form-item border-bottom label="������������:" prop="escalationUnitId" required @click=" showCheckBox = true; @@ -52,7 +61,13 @@ <u-form-item border-bottom label="������������:" prop="investigationType" required> <u-radio-group v-model="form.investigationType" style="font-size: 13px;"> <u-radio :key="index" v-for="(item, index) in Dic.investigationEnum" - :custom-style="{marginRight: '8px'}" :label="item.name" :name="item.value" /> + :customStyle="{marginRight: '16px'}" :label="item.name" :name="item.value" /> + </u-radio-group> + </u-form-item> + <u-form-item border-bottom label="������������:" prop="keyPoint"> + <u-radio-group v-model="form.keyPoint" style="font-size: 13px;" placement='column'> + <u-radio :key="index" v-for="(item, index) in Dic.emphasisEnum" :customStyle="{marginTop: '10px'}" + :label="item.name" :name="item.value" /> </u-radio-group> </u-form-item> <u-form-item border-bottom label="������������:" prop="problemDescribe" required> @@ -65,7 +80,7 @@ </u-form-item> </u-form> <u-picker :show="showCheckBox" keyName="label" :columns="actionOptionList" @cancel="showCheckBox = false" - @confirm="selectBack"></u-picker> + :default-selector="[0]" :immediateChange='true' @confirm="selectBack"></u-picker> <!-- <u-action-sheet v-if="actionOptionList.length > 0" :actions="actionOptionList" :show="showCheckBox" title="���������" @close="showCheckBox = false" @select="selectBack" /> --> <view class="bunts"> @@ -80,6 +95,7 @@ </template> <script> import fileUpload from '../components/fileUpload.vue' + import amap from '../../../libs/amap-wx.js' export default { components: { fileUpload @@ -91,6 +107,7 @@ labelStyle: { fontSize: '30.77rpx' }, + addressInfor: {}, showeEscalationTime: false, actionOptionList: [], rules: { @@ -100,11 +117,6 @@ trigger: ['blur', 'change'] }, 'polluteType': { - required: true, - message: '���������', - trigger: ['blur', 'change'] - }, - 'changeType': { required: true, message: '���������', trigger: ['blur', 'change'] @@ -154,6 +166,7 @@ escalationTime: '', problemDescribe: '', pollutePosition: '', + keyPoint: 0 }, sumbitForm: { unitId: '', @@ -165,15 +178,23 @@ escalationTime: '', problemDescribe: '', pollutePosition: '', + keyPoint: null }, unitList: [], polluteList: [], fileBaseList: [], + key: '04a1196c84f5d193c7d91c66150908be', + amapPlugin: null, } }, onReady() { //onReady ���uni-app��������������������������� this.$refs.uForm.setRules(this.rules) + }, + onLoad() { + this.amapPlugin = new amap.AMapWX({ + key: this.key //���key ���������������������������������������key + }) }, onShow() { uni.hideTabBar() @@ -189,7 +210,93 @@ 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.name } ��� ${res.address}` + }, + fail: function(err) { + console.log('������������', err) + } + }) + }, + handerLocation() { + let that = this + if (this.addressInfor.latitude === '') { + uni.getLocation({ + type: 'gcj02', + isHighAccuracy: true, //��������������������� + success: function(res) { + console.log('111', res) + that.handerChooseLocation(res.latitude, res.longitude) + }, + fail(error) { + console.log('������', error) + } + }) + } else { + that.handerChooseLocation(this.addressInfor.latitude, this.addressInfor.longitude) + } + }, + 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 }, close() { @@ -218,6 +325,14 @@ console.log(e) this.form[this.currentKey] = e.value[0].label this.sumbitForm[this.currentKey] = e.value[0].id + console.log('this.form.changeType', this.currentKey) + if (Number(this.sumbitForm.changeType) !== 1) { + this.sumbitForm.changeDay = '0' + this.form.changeDay = '0' + } else { + this.sumbitForm.changeDay = '' + this.form.changeDay = '' + } this.showCheckBox = false }, checkTime(e) { @@ -228,20 +343,29 @@ this.sumbitForm.escalationTime = data }, submit() { + console.log('this.sumbitForm', this.form) this.$refs.uForm.validate().then(res => { this.sumbitForm.problemDescribe = this.form.problemDescribe this.sumbitForm.pollutePosition = this.form.pollutePosition + this.sumbitForm.address = this.addressInfor.name + 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 this.sumbitForm.fileBaseList = this.fileBaseList + this.sumbitForm.changeType = this.form.changeType + this.sumbitForm.keyPoint = this.form.keyPoint this.sumbitForm.state = '20' - console.log('this.sumbitForm', this.sumbitForm) this.$http.httpPost('/allocation/insert', { ...this.sumbitForm }).then(res => { uni.$u.toast('������������') this.close() + }).catch(errors => { + uni.$u.toast(errors.split(',')[0]) + console.log(errors) }) }).catch(errors => { uni.$u.toast('������������') @@ -253,7 +377,7 @@ this.form.escalationTime = data this.sumbitForm.escalationTime = data if (this.changeEnum.length > 0) { - this.form.changeType = this.changeEnum[0].name + this.form.changeType = this.changeEnum[0].value this.sumbitForm.changeType = this.changeEnum[0].value } let userInfor = JSON.parse(uni.getStorageSync('userInfor') || '{}') @@ -264,18 +388,47 @@ this.sumbitForm.unitId = userInfor.unitId this.form.escalationUnitId = data this.sumbitForm.escalationUnitId = userInfor.unitId + } else { + if (this.unitList.length > 0) { + this.form.unitId = this.unitList[0].unitName + this.sumbitForm.unitId = this.unitList[0].unitId + this.form.escalationUnitId = this.unitList[0].unitName + this.sumbitForm.escalationUnitId = this.unitList[0].unitId + } } - this.form.escalationName = userInfor.name || '' - this.sumbitForm.escalationName = userInfor.name || '' + this.form.escalationName = userInfor.userName || '' + this.sumbitForm.escalationName = userInfor.userName || '' this.form.investigationType = 1 this.sumbitForm.investigationType = 1 - console.log('this.sumbitForm', this.sumbitForm) + let that = this + uni.getLocation({ + type: 'gcj02', + isHighAccuracy: true, //��������������������� + success: function(res) { + that.amapPlugin.getRegeo({ + type: 'gcj02', + location: '' + res.longitude + ',' + res.latitude + '', + success: function(e) { + console.log(e) + that.addressInfor.address = `${ e[0].desc } ��� ${e[0].name}` + that.addressInfor.latitude = e[0].latitude + that.addressInfor.longitude = e[0].longitude + that.addressInfor.name = e[0].desc + that.form.pollutePosition = `${ e[0].desc } ��� ${e[0].name}` + }, + fail: res => { + console.log(JSON.stringify(res)) + } + }) + } + }) }, // ������������������list getUnitList() { this.$http.httpGet('/allocation/unit').then(res => { this.unitList = res.data this.Dic = JSON.parse(uni.getStorageSync('dict') || '[]') + this.changeEnum = this.Dic.changeEnum this.changeEnum = this.Dic.changeEnum this.setDefaultValue() }) @@ -310,6 +463,11 @@ padding-left: 10px; } + /deep/.u-textarea { + padding: 0 !important; + width: calc(100%-70px); + } + // /deep/.u-form-item__body { // padding: 8px 0px !important; // font-size: 15px !important; -- Gitblit v1.8.0