上传
@@ -272,8 +232,19 @@
-
+
+
+
+
+
经纬度: {{ selectedLocation.lnglat }}
+
地址: {{ selectedLocation.address }}
+
名称: {{ selectedLocation.placeName }}
+
@@ -288,6 +259,7 @@ import { config } from '@/config'
import { useI18n } from 'vue-i18n'
import storage from '@/utils/storage'
import { message } from 'ant-design-vue'
+import MapPickerModal from '@/components/Map/index.vue'
const emit = defineEmits(['ok'])
const { t } = useI18n() // 解构出t方法
const { modal, showModal, hideModal, showLoading, hideLoading } = useModal()
@@ -344,14 +316,14 @@ formRules.value = {
],
phone: [
{ required: true, message: '请输入联系电话' },
- {
+ {
pattern: /^1[3-9]\d{9}$/,
- message: '请输入正确的联系电话'
+ message: '请输入正确的联系电话'
}
],
bedCount: [
{ required: true, message: '请输入床位数' },
- {
+ {
validator: (_, value) => {
if (value !== null && value !== undefined && value !== '') {
if (typeof value === 'number' && value >= 0) {
@@ -366,8 +338,8 @@ formRules.value = {
address: { required: true, message: '请选择省市区' },
detailAddress: { required: true, message: '请输入详细地址' },
buildTime: { required: true, message: '请选择建成时间' },
- area: {
- required: true,
+ area: {
+ required: true,
validator: (_, value) => {
if (value && value > 0) {
return Promise.resolve();
@@ -378,8 +350,8 @@ formRules.value = {
openTime: { required: true, message: '请选择开始营业时间' },
closeTime: { required: true, message: '请选择结束营业时间' },
businessStatus: { required: true, message: '请选择营业状态' },
- services: {
- required: true,
+ services: {
+ required: true,
validator: (_, value) => {
if (value && value.length > 0) {
return Promise.resolve();
@@ -404,6 +376,20 @@ const reqType = ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE']
const cancelText = ref(t('button.cancel'))
const okText = ref(t('button.confirm'))
const platform = ref('')
+const showMapPicker = ref(false)
+const location = ref('')
+
+const handleLocationSelect = (lngLat) => {
+ console.log('确认选择:', lngLat)
+ formData.value.location = lngLat.address
+ showMapPicker.value = false
+}
+
+// 实时位置变化
+const handleLocationChange = (location) => {
+ console.log('位置变化:', location)
+ // 可以实时更新UI
+}
// 地址选项 - 实际项目中可以从接口获取
const addressOptions = ref([
@@ -514,12 +500,12 @@ function handleOk() {
}
params.sequence = Number.parseInt(params.sequence) || 0
params.properties = JSON.stringify(params.properties)
-
+
// 处理地址数据
params.province = params.address[0]
params.city = params.address[1]
params.district = params.address[2]
-
+
let result = null
switch (modal.value.type) {
case 'create':
@@ -600,7 +586,7 @@ function handleServiceClick(value) {
if (!formData.value.services) {
formData.value.services = []
}
-
+
const index = formData.value.services.indexOf(value)
if (index > -1) {
// 如果已选中,则取消选中
@@ -615,9 +601,7 @@ function handleServiceClick(value) {
* 打开地图选择器
*/
function openMapSelector() {
- // 实际项目中可以调用地图组件或打开地图选择弹窗
- // 这里使用模拟数据
- formData.value.location = '北京市海淀区中关村大街1号 (经纬度: 39.9847, 116.3055)'
+ showMapPicker.value = true
}
/**
@@ -655,18 +639,18 @@ defineExpose({
// 服务标签选中样式
.service-tag {
cursor: pointer;
-
+
&.ant-tag-checkable-checked {
background-color: #1890ff; // 蓝色背景
color: #fff; // 白色文字
border-color: #1890ff;
-
+
&:hover {
background-color: #40a9ff;
border-color: #40a9ff;
}
}
-
+
&:not(.ant-tag-checkable-checked) {
&:hover {
border-color: #1890ff;
diff --git a/src/views/serviceMenu/serviceSites/index.vue b/src/views/serviceMenu/serviceSites/index.vue
index a790f1d..e4ff3c1 100644
--- a/src/views/serviceMenu/serviceSites/index.vue
+++ b/src/views/serviceMenu/serviceSites/index.vue
@@ -11,16 +11,18 @@
-
- 已结单
- 已作废
+
+
+ {{ item.introduction }}
+
-
+
@@ -187,6 +189,8 @@ import ImportRecordsModal from '@/components/ImportRecord/index.vue'
import ExportRecordsModal from '@/components/ExportRecord/index.vue'
import { useI18n } from 'vue-i18n'
import storage from '@/utils/storage'
+import AreaCascader from '@/components/AreaCascader/index.vue'
+
defineOptions({
name: 'menu',
@@ -220,6 +224,8 @@ const { listData, loading, showLoading, hideLoading, searchFormData, paginationS
usePagination()
const { resetForm } = useForm()
const editDialogRef = ref()
+import { useDicsStore } from '@/store'
+const dicsStore = useDicsStore()
getMenuList()