From 0ad9de30460e083dc9a6ed188f1cdbf0d3b49ada Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E8=BE=89?= Date: Tue, 7 Jul 2026 16:34:52 +0800 Subject: [PATCH] 11 --- src/pages/Management/List/edit.tsx | 70 +++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/src/pages/Management/List/edit.tsx b/src/pages/Management/List/edit.tsx index 3eddf99..0662de6 100644 --- a/src/pages/Management/List/edit.tsx +++ b/src/pages/Management/List/edit.tsx @@ -9,12 +9,13 @@ import { ProDescriptions, } from '@ant-design/pro-components'; import { Form, Button, Input, TreeSelect, Switch } from 'antd'; -import { PlusOutlined, MinusCircleOutlined } from '@ant-design/icons'; +import { PlusOutlined, MinusCircleOutlined, EnvironmentOutlined } from '@ant-design/icons'; import React, { useEffect, useRef, useState } from 'react'; import { DictValueEnumObj } from '@/components/DictTag'; import { getCmsCompanyList } from '@/services/company/list'; import { getCmsJobDetail } from '@/services/Management/list'; import { getJobTitleTreeSelect } from '@/services/common/jobTitle'; +import ProFromMap from '@/components/ProFromMap'; export type ListFormProps = { onCancel: (flag?: boolean, formVals?: unknown) => void; @@ -42,6 +43,8 @@ const listEdit: React.FC = (props) => { const [jobDetail, setJobDetail] = useState(null); const [loading, setLoading] = useState(false); const [jobCategoryTreeData, setJobCategoryTreeData] = useState([]); + const [mapOpen, setMapOpen] = useState(false); + const [mapViewInfo, setMapViewInfo] = useState({}); const { educationEnum, experienceEnum, areaEnum, jobTypeEnum } = props; const { mode = props.values ? 'edit' : 'create' } = props; useEffect(() => { @@ -52,6 +55,18 @@ const listEdit: React.FC = (props) => { ...props.values, jobLocationAreaCode: String(props.values.jobLocationAreaCode || ''), }); + // 初始化地图位置信息(编辑时回显) + if (props.values.latitude || props.values.longitude) { + setMapViewInfo({ + address: props.values.jobLocation || '', + latitude: props.values.latitude, + longitude: props.values.longitude, + }); + } else { + setMapViewInfo({}); + } + } else { + setMapViewInfo({}); } // 加载岗位标签树数据 getJobTitleTreeSelect().then((res) => { @@ -95,6 +110,25 @@ const listEdit: React.FC = (props) => { form.resetFields(); }; + const handleMapSelect = (result: any) => { + if (result.location) { + const { lat, lng } = result.location; + form.setFieldValue('latitude', lat); + form.setFieldValue('longitude', lng); + form.setFieldValue('jobLocation', result.address); + setMapViewInfo({ + address: result.address, + latitude: lat, + longitude: lng, + }); + setMapOpen(false); + } + }; + + const handleMapCancel = () => { + setMapOpen(false); + }; + const handleFinish = async (values: Record) => { const payload: API.ManagementList.Manage = { jobTitle: values.jobTitle, @@ -119,6 +153,8 @@ const listEdit: React.FC = (props) => { })), jobCategory: values.jobCategory, isUrgent: values.isUrgent ? 1 : 0, + latitude: values.latitude, + longitude: values.longitude, }; if (mode === 'edit' && values.jobId) { payload.jobId = values.jobId; @@ -430,6 +466,37 @@ const listEdit: React.FC = (props) => { /> + +
+ +
+ {mapViewInfo.address ? ( + <> + 地址:{mapViewInfo.address} + {mapViewInfo.latitude ? ( + + 经纬度:{mapViewInfo.latitude},{mapViewInfo.longitude} + + ) : null} + + ) : ( + 可选:点击按钮在地图上选择工作地点 + )} +
+
+
+