|
|
@@ -132,16 +132,23 @@
|
|
|
show-word-limit
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
-
|
|
|
<!-- 经纬度查询 -->
|
|
|
- <el-form-item label="经纬度查询" prop="queryAddress">
|
|
|
- <el-input v-model="formData.queryAddress" placeholder="请输入地址进行查询" clearable @blur="handleLocationQuery">
|
|
|
- <template #append>
|
|
|
- <el-button :icon="Search" @click="handleLocationQuery"> 查询 </el-button>
|
|
|
- </template>
|
|
|
- </el-input>
|
|
|
+ <el-form-item label="经纬度查询" prop="address">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.storePosition"
|
|
|
+ filterable
|
|
|
+ placeholder="请输入地址进行查询"
|
|
|
+ remote
|
|
|
+ reserve-keyword
|
|
|
+ :remote-method="getLonAndLat"
|
|
|
+ @change="selectAddress"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in addressList" :key="item.id" :label="item.name" :value="item.location">
|
|
|
+ <span style="float: left">{{ item.name }}</span>
|
|
|
+ <span style="float: right; font-size: 13px; color: var(--el-text-color-secondary)">{{ item.district }}</span>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
-
|
|
|
<!-- 经营板块 -->
|
|
|
<el-form-item label="经营板块" prop="">
|
|
|
<el-radio-group v-model="formData.businessSection" disabled>
|
|
|
@@ -177,7 +184,7 @@
|
|
|
|
|
|
<!-- 食品经营许可证到期时间(只读) -->
|
|
|
<el-form-item label="食品经营许可证到期时间">
|
|
|
- <el-input v-model="formData.foodLicenseExpirationTime" disabled class="readonly-input">
|
|
|
+ <el-input v-model="formData.foodLicenceExpirationTime" disabled class="readonly-input">
|
|
|
<template #prefix>
|
|
|
<el-icon>
|
|
|
<Lock />
|
|
|
@@ -212,6 +219,10 @@ import { getInputPrompt } from "@/api/modules/newLoginApi";
|
|
|
import { useRoute } from "vue-router";
|
|
|
import { localGet } from "@/utils";
|
|
|
|
|
|
+//地址集合
|
|
|
+const addressList = ref<any[]>([]);
|
|
|
+const addressMap = new Map();
|
|
|
+
|
|
|
const route = useRoute();
|
|
|
const formRef = ref<FormInstance>();
|
|
|
const loading = ref(false);
|
|
|
@@ -235,12 +246,69 @@ const formData = reactive({
|
|
|
businessSection: "",
|
|
|
businessTypes: [] as string[],
|
|
|
expirationTime: "",
|
|
|
- foodLicenseExpirationTime: "",
|
|
|
+ foodLicenceExpirationTime: "",
|
|
|
+ storePosition: "",
|
|
|
storePositionLongitude: "",
|
|
|
storePositionLatitude: "",
|
|
|
isChain: 0
|
|
|
});
|
|
|
|
|
|
+// 经纬度查询
|
|
|
+const getLonAndLat = async (keyword: string) => {
|
|
|
+ if (keyword) {
|
|
|
+ console.log("地址查询", keyword);
|
|
|
+ let param = {
|
|
|
+ addressName: keyword
|
|
|
+ };
|
|
|
+ let res: any = await getInputPrompt(param as any);
|
|
|
+ if (res.code == "200") {
|
|
|
+ res.data.tips.forEach((item: any) => {
|
|
|
+ addressMap.set(item.location, item.name);
|
|
|
+ });
|
|
|
+ addressList.value = res?.data?.tips || [];
|
|
|
+ console.log("res", res);
|
|
|
+ } else {
|
|
|
+ ElMessage.error("新增失败!");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ addressList.value = [];
|
|
|
+ }
|
|
|
+};
|
|
|
+const selectAddress = async (param: any) => {
|
|
|
+ // 安全检查:确保 address 存在且是字符串类型
|
|
|
+ if (!formData.storePosition || typeof formData.storePosition !== "string") {
|
|
|
+ ElMessage.warning("地址格式不正确,请重新选择");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查是否包含逗号(经纬度格式应该是 "经度,纬度")
|
|
|
+ if (!formData.storePosition.includes(",")) {
|
|
|
+ ElMessage.warning("地址格式不正确,缺少经纬度信息");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 安全地分割地址字符串
|
|
|
+ let locationList = formData.storePosition.split(",");
|
|
|
+
|
|
|
+ // 检查分割后的数组长度
|
|
|
+ // if (locationList.length < 2) {
|
|
|
+ // ElMessage.warning("地址格式不正确,无法获取经纬度");
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // 查找对应的地址名称
|
|
|
+ addressList.value.forEach((item: any) => {
|
|
|
+ if (item.location == formData.storePosition) {
|
|
|
+ formData.queryAddress = item.name;
|
|
|
+ // queryAddress.value = item.name;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ formData.storePositionLongitude = locationList[0]?.trim();
|
|
|
+ formData.storePositionLatitude = locationList[1]?.trim();
|
|
|
+ // 设置经纬度,并去除可能的空格
|
|
|
+ // formData.storePosition = locationList[0]?.trim() +","+locationList[1]?.trim()
|
|
|
+};
|
|
|
+
|
|
|
// 表单验证规则
|
|
|
const rules = reactive<FormRules>({
|
|
|
storeName: [{ required: true, message: "请输入店铺名称", trigger: "blur" }],
|
|
|
@@ -480,43 +548,19 @@ const handleBusinessSectionChange = async (sectionId: string) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-// 经纬度查询(返回是否成功)
|
|
|
-const queryLocation = async (address?: string): Promise<boolean> => {
|
|
|
- const queryAddr = address || formData.queryAddress;
|
|
|
- if (!queryAddr) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- try {
|
|
|
- const { data }: any = await getInputPrompt({ addressName: queryAddr } as any);
|
|
|
- if (data.tips && data.tips.length > 0) {
|
|
|
- if (!data.tips[0].location) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- let latlng = data.tips[0].location.split(",");
|
|
|
- formData.storePositionLongitude = latlng[0];
|
|
|
- formData.storePositionLatitude = latlng[1];
|
|
|
- return true;
|
|
|
- }
|
|
|
- return false;
|
|
|
- } catch (error) {
|
|
|
- console.error("经纬度查询失败:", error);
|
|
|
- return false;
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
// 经纬度查询(用户手动触发)
|
|
|
-const handleLocationQuery = async () => {
|
|
|
- if (!formData.queryAddress) {
|
|
|
- ElMessage.warning("请输入地址进行查询");
|
|
|
- return;
|
|
|
- }
|
|
|
- const success = await queryLocation();
|
|
|
- if (success) {
|
|
|
- ElMessage.success("查询成功");
|
|
|
- } else {
|
|
|
- ElMessage.warning("未找到相关地址信息,请检查地址是否正确");
|
|
|
- }
|
|
|
-};
|
|
|
+// const handleLocationQuery = async () => {
|
|
|
+// if (!formData.queryAddress) {
|
|
|
+// ElMessage.warning("请输入地址进行查询");
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// const success = await queryLocation();
|
|
|
+// if (success) {
|
|
|
+// ElMessage.success("查询成功");
|
|
|
+// } else {
|
|
|
+// ElMessage.warning("未找到相关地址信息,请检查地址是否正确");
|
|
|
+// }
|
|
|
+// };
|
|
|
|
|
|
// 表单提交
|
|
|
const handleSubmit = async () => {
|
|
|
@@ -532,10 +576,10 @@ const handleSubmit = async () => {
|
|
|
try {
|
|
|
// 保存前先调用经纬度查询接口
|
|
|
if (formData.queryAddress) {
|
|
|
- const locationQuerySuccess = await queryLocation();
|
|
|
- if (!locationQuerySuccess) {
|
|
|
- ElMessage.warning("经纬度查询失败,请检查地址是否正确,将继续保存其他信息");
|
|
|
- }
|
|
|
+ // const locationQuerySuccess = await queryLocation();
|
|
|
+ // if (!locationQuerySuccess) {
|
|
|
+ // ElMessage.warning("经纬度查询失败,请检查地址是否正确,将继续保存其他信息");
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
// 映射门店面积为数字
|
|
|
@@ -555,6 +599,7 @@ const handleSubmit = async () => {
|
|
|
administrativeRegionProvinceAdcode: formData.administrativeRegionProvinceAdcode ?? "",
|
|
|
administrativeRegionCityAdcode: formData.administrativeRegionCityAdcode ?? "",
|
|
|
administrativeRegionDistrictAdcode: formData.administrativeRegionDistrictAdcode ?? "",
|
|
|
+ storePosition: formData.storePosition,
|
|
|
storePositionLongitude: formData.storePositionLongitude,
|
|
|
storePositionLatitude: formData.storePositionLatitude,
|
|
|
businessStatus: formData.businessStatus
|
|
|
@@ -611,12 +656,13 @@ const getStoreDetailData = async () => {
|
|
|
formData.storeAddress = storeData.storeAddress ?? "";
|
|
|
formData.storeBlurb = storeData.storeBlurb ?? "";
|
|
|
formData.expirationTime = storeData.expirationTime ?? "";
|
|
|
- formData.foodLicenseExpirationTime = storeData.foodLicenseExpirationTime ?? "";
|
|
|
+ formData.foodLicenceExpirationTime = storeData.foodLicenceExpirationTime ?? "";
|
|
|
+ formData.storePosition = storeData.storePosition ?? "";
|
|
|
formData.storePositionLongitude = storeData.storePositionLongitude ?? "";
|
|
|
formData.storePositionLatitude = storeData.storePositionLatitude ?? "";
|
|
|
formData.isChain = storeData.isChain ?? 0;
|
|
|
formData.queryAddress = storeData.queryAddress;
|
|
|
-
|
|
|
+ await getLonAndLat(storeData.queryAddress);
|
|
|
// 设置地区
|
|
|
const provinceCode = storeData.administrativeRegionProvinceAdcode ?? "";
|
|
|
const cityCode = storeData.administrativeRegionCityAdcode ?? "";
|