This commit is contained in:
2026-07-27 17:19:36 +08:00
parent e50d1b8fda
commit 1c7532e0de
132 changed files with 7066 additions and 1241 deletions

View File

@@ -133,6 +133,26 @@
</el-button>
</div>
</template>
<template #longitude-form>
<el-input
v-model="form.longitude"
clearable
placeholder="请输入经度"
:disabled="dialogReadonly || form.addressType !== '常规地址'"
@input="handleCoordinateInput('longitude', $event)"
/>
</template>
<template #latitude-form>
<el-input
v-model="form.latitude"
clearable
placeholder="请输入纬度"
:disabled="dialogReadonly || form.addressType !== '常规地址'"
@input="handleCoordinateInput('latitude', $event)"
/>
</template>
</avue-crud>
<el-dialog
@@ -179,6 +199,7 @@ import { createOption } from '@/option/base/common-address';
import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util';
import { getToken } from '@/utils/auth';
import { isCoordinateInput, normalizeCoordinateInput } from '@/utils/coordinate';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
@@ -190,6 +211,8 @@ export default {
const validateLongitude = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback(new Error('经度不能为空'));
} else if (!isCoordinateInput(value)) {
callback(new Error('经度最多保留6位小数'));
} else if (Number(value) < -180 || Number(value) > 180) {
callback(new Error('经度范围为 -180 到 180'));
} else {
@@ -199,6 +222,8 @@ export default {
const validateLatitude = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback(new Error('纬度不能为空'));
} else if (!isCoordinateInput(value)) {
callback(new Error('纬度最多保留6位小数'));
} else if (Number(value) < -90 || Number(value) > 90) {
callback(new Error('纬度范围为 -90 到 90'));
} else {
@@ -319,6 +344,9 @@ export default {
this.form.longitude = source.longitude;
this.form.latitude = source.latitude;
},
handleCoordinateInput(prop, value) {
this.form[prop] = normalizeCoordinateInput(value);
},
clearTypeRelatedFields(siteCode = '') {
this.form.sourceId = undefined;
this.form.siteCode = siteCode;
@@ -356,6 +384,8 @@ export default {
detailAddress: String(row.detailAddress || '').trim(),
regionCode: String(row.regionCode || '').trim(),
regionName: String(row.regionName || '').trim(),
longitude: normalizeCoordinateInput(row.longitude),
latitude: normalizeCoordinateInput(row.latitude),
contactName: String(row.contactName || '').trim(),
contactPhone: String(row.contactPhone || '').trim(),
remark: String(row.remark || '').trim(),
@@ -400,6 +430,10 @@ export default {
return false;
}
if (row.longitude !== undefined && row.longitude !== null && row.longitude !== '') {
if (!isCoordinateInput(row.longitude)) {
this.$message.warning('经度最多保留6位小数');
return false;
}
if (Number(row.longitude) < -180 || Number(row.longitude) > 180) {
this.$message.warning('经度范围为 -180 到 180');
return false;
@@ -407,6 +441,10 @@ export default {
row.longitude = Number(row.longitude).toFixed(6);
}
if (row.latitude !== undefined && row.latitude !== null && row.latitude !== '') {
if (!isCoordinateInput(row.latitude)) {
this.$message.warning('纬度最多保留6位小数');
return false;
}
if (Number(row.latitude) < -90 || Number(row.latitude) > 90) {
this.$message.warning('纬度范围为 -90 到 90');
return false;