hejianhao
2026-01-19 028ae9570d6d2a119678f18c083b188a46fbb839
fix: 修正AMap安全配置并更新启动脚本

修复AMap安全配置中的无效字符并添加缺失的AMap脚本引用
更新package.json中的启动脚本以兼容openssl-legacy-provider
4个文件已修改
909 ■■■■■ 已修改文件
estate-frontend-v2024/package.json 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/public/index.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/views/business/forms/edit-project-form.jsx 898 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/public/index.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/package.json
@@ -52,7 +52,7 @@
    "xlsx": "^0.16.0"
  },
  "scripts": {
    "start": "react-app-rewired start",
    "start": "set NODE_OPTIONS=--openssl-legacy-provider && react-app-rewired start",
    "build": "react-app-rewired --max-old-space-size=4096 build ",
    "test": "react-app-rewired test",
    "eject": "react-scripts eject",
estate-frontend-v2024/public/index.html
@@ -6,6 +6,13 @@
  <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <meta name="theme-color" content="#000000" />
  <script src="https://cache.amap.com/lbs/static/es5.min.js"></script>
  <script type="text/javascript">
    window._AMapSecurityConfig = {
      securityJsCode: "c75eccf0742998b2ea43823e08cacccd",
    };
  </script>
  <script src="https://webapi.amap.com/loader.js"></script>
  <meta name="description" content="岱观智评管理平台" />
  <title>岱观智评管理平台</title>
</head>
estate-frontend-v2024/src/views/business/forms/edit-project-form.jsx
@@ -1,6 +1,7 @@
import React from "react";
import {Cascader, Form, Input, InputNumber, Modal, Select} from "antd";
import { Cascader, Form, Input, InputNumber, Modal, Select, Button, message } from "antd";
import '../style/projects.less'
import AMapLoader from '@amap/amap-jsapi-loader';
import {
    getUsageTypeOptions,
    inputLongStyle,
@@ -9,10 +10,10 @@
    provinceArr
} from "../../common/constants";
import BaseForm from "../../common/edit-form-base";
import {createProjectNumber, toOptionsData} from "../../common/common_func";
import {getClientOptions} from "../../../api/business";
import {getCityList, getDistrictList} from "../../common/address_func";
import {flatPath, formatNodeForCascader, getDepartmentRoot} from "../../../api/hierarchy";
import { createProjectNumber, toOptionsData } from "../../common/common_func";
import { getClientOptions } from "../../../api/business";
import { getCityList, getDistrictList } from "../../common/address_func";
import { flatPath, formatNodeForCascader, getDepartmentRoot } from "../../../api/hierarchy";
const { Option } = Select;
@@ -46,13 +47,14 @@
        // 在state中添加cityList和districtList
        this.setState({
            cityList: [],
            districtList: []
            districtList: [],
            keyword: ''
        })
    }
    getDepartmentRootFunc() {
        getDepartmentRoot().then((data) => {
            if(data.data.status === 'OK')
            if (data.data.status === 'OK')
                this.departmentList = formatNodeForCascader(data.data.data)
        })
    }
@@ -64,366 +66,550 @@
        }
    }
  handleProvinceChange = (e) => {
      this.refreshCityList(e.key, e.label)
  }
    handleProvinceChange = (e) => {
        this.refreshCityList(e.key, e.label)
    }
  refreshCityList = (province, provinceLabel) => {
    getCityList(province, (data) => {
        this.setState({
            cityList: data
        }, () => {
            if (data && data.length > 0) {
                const firstCity = data[0];
                this.props.form.setFieldsValue({
                    city: { key: firstCity.value, label: firstCity.label }, // Adjusted to match the expected format
    refreshCityList = (province, provinceLabel) => {
        getCityList(province, (data) => {
            this.setState({
                cityList: data
            }, () => {
                if (data && data.length > 0) {
                    const firstCity = data[0];
                    this.props.form.setFieldsValue({
                        city: { key: firstCity.value, label: firstCity.label }, // Adjusted to match the expected format
                    });
                    this.setFieldValue('addressInfo', {
                        ...this.state.editableData.addressInfo,
                        province: provinceLabel,
                        city: firstCity.label,
                        district: ''
                    })
                    this.refreshDistrictList(firstCity.value, firstCity.label)
                } else {
                    // Handle the case where there are no cities (e.g., clear the selection)
                    this.props.form.setFieldsValue({
                        city: { key: '', label: '' }
                    });
                }
            })
        })
    }
    handleCityChange = (e) => {
        this.refreshDistrictList(e.key, e.label)
    }
    handleTypeChange = (e) => {
        this.setFieldValue('type', e.key)
        let usageTypeList = projectTypeRelationMap[e.key]
        let usageType = usageTypeList && usageTypeList.length > 0 ? usageTypeList[0] : null
        this.setFieldValue('usageType', usageType)
    }
    refreshDistrictList = (city, cityLabel) => {
        getDistrictList(city, (data) => {
            this.setState({
                districtList: data
            }, () => {
                if (data && data.length > 0) {
                    const firstDistrict = data[0];
                    this.props.form.setFieldsValue({
                        district: { key: firstDistrict.value, label: firstDistrict.label } // Adjusted to match the expected format
                    });
                    this.setFieldValue('addressInfo', {
                        ...this.state.editableData.addressInfo,
                        district: firstDistrict.label
                    })
                } else {
                    // Handle the case where there are no districts (e.g., clear the selection)
                    this.props.form.setFieldsValue({
                        district: { key: '', label: '' } // Reset or clear the selection
                    });
                }
            })
        })
    }
    viewWillAppear() {
        this.initMap();
    }
    initMap = () => {
        AMapLoader.load({
            key: "232929db1cb31f26d42b3645a7456154",
            version: "2.0",
            plugins: ['AMap.ToolBar', 'AMap.AutoComplete', 'AMap.PlaceSearch', 'AMap.Geocoder', 'AMap.Marker'],
        }).then((AMap) => {
            this.AMap = AMap;
            this.geocoder = new AMap.Geocoder({
                extensions: "all"
            });
            const { addressInfo } = this.state.editableData;
            let center = [104.04, 30.40];
            if (addressInfo && addressInfo.longitude && addressInfo.latitude) {
                center = [addressInfo.longitude, addressInfo.latitude];
            }
            if (!this.map) {
                this.map = new AMap.Map("mapContainer", {
                    zoom: 15,
                    resizeEnable: true,
                    center: center
                });
                this.map.on('click', this.onMapClick);
            } else {
                this.map.setCenter(center);
            }
            if (addressInfo && addressInfo.longitude && addressInfo.latitude) {
                this.addMarker(center);
            }
        }).catch(e => {
            console.error(e);
        })
    }
    onMapClick = (e) => {
        const lng = e.lnglat.getLng();
        const lat = e.lnglat.getLat();
        this.addMarker([lng, lat]);
        this.getAddress(lng, lat);
    }
    addMarker = (position) => {
        if (this.marker) {
            this.marker.setPosition(position);
        } else {
            this.marker = new this.AMap.Marker({
                position: position,
                map: this.map
            });
        }
        this.map.setCenter(position);
    }
    updateAddressInfo = (lng, lat) => {
        // Update form field and state
        const { form } = this.props;
        form.setFieldsValue({
            gps: `${lng},${lat}`
        });
        // Update editableData
        const { addressInfo } = this.state.editableData;
        this.setFieldValue('addressInfo', {
            ...addressInfo,
            longitude: lng,
            latitude: lat
        });
    }
    getAddress = (lng, lat) => {
        if (!this.geocoder) return;
        this.geocoder.getAddress([lng, lat], (status, result) => {
            if (status === 'complete' && result.regeocode) {
                const addressComponent = result.regeocode.addressComponent;
                const formattedAddress = result.regeocode.formattedAddress;
                // Update basic info
                this.updateAddressInfo(lng, lat);
                // Update Detailed Address
                const { form } = this.props;
                form.setFieldsValue({
                    address: formattedAddress
                });
                this.setFieldValue('addressInfo', {
                    ...this.state.editableData.addressInfo,
                    province: provinceLabel,
                    city: firstCity.label,
                    district: ''
                })
                this.refreshDistrictList(firstCity.value, firstCity.label)
            } else {
                // Handle the case where there are no cities (e.g., clear the selection)
                this.props.form.setFieldsValue({
                    city: { key: '', label: '' }
                    detail: formattedAddress
                });
                // Handle Province
                const pName = addressComponent.province;
                const pOpt = provinceArr.find(item => pName.includes(item.label) || item.label.includes(pName));
                if (pOpt) {
                    form.setFieldsValue({
                        province: { key: pOpt.value, label: pOpt.label }
                    });
                    this.setFieldValue('addressInfo', {
                        ...this.state.editableData.addressInfo,
                        province: pOpt.label
                    });
                    // Handle City
                    getCityList(pOpt.value, (cityData) => {
                        this.setState({ cityList: cityData }, () => {
                            let cName = addressComponent.city;
                            if (!cName || cName.length === 0) {
                                cName = pName; // Handle municipality
                            }
                            const cOpt = cityData.find(item => cName.includes(item.label) || item.label.includes(cName));
                            if (cOpt) {
                                form.setFieldsValue({
                                    city: { key: cOpt.value, label: cOpt.label }
                                });
                                this.setFieldValue('addressInfo', {
                                    ...this.state.editableData.addressInfo,
                                    city: cOpt.label
                                });
                                // Handle District
                                getDistrictList(cOpt.value, (districtData) => {
                                    this.setState({ districtList: districtData }, () => {
                                        const dName = addressComponent.district;
                                        const dOpt = districtData.find(item => dName.includes(item.label) || item.label.includes(dName));
                                        if (dOpt) {
                                            form.setFieldsValue({
                                                district: { key: dOpt.value, label: dOpt.label }
                                            });
                                            this.setFieldValue('addressInfo', {
                                                ...this.state.editableData.addressInfo,
                                                district: dOpt.label
                                            });
                                        }
                                    })
                                })
                            }
                        })
                    })
                }
            }
        })
    })
  }
  handleCityChange = (e) => {
    this.refreshDistrictList(e.key, e.label)
  }
        });
    }
handleTypeChange = (e) => {
    this.setFieldValue('type', e.key)
    handleSearch = () => {
        const { keyword } = this.state;
        if (!keyword || !this.AMap) return;
    let usageTypeList = projectTypeRelationMap[e.key]
    let usageType = usageTypeList && usageTypeList.length > 0 ? usageTypeList[0] : null
    this.setFieldValue('usageType', usageType)
}
        this.AMap.plugin('AMap.PlaceSearch', () => {
            const placeSearch = new this.AMap.PlaceSearch({
                extensions: 'all',
            });
            placeSearch.search(keyword, (status, result) => {
                if (status === 'complete' && result.poiList.pois.length > 0) {
                    const poi = result.poiList.pois[0];
                    const lng = poi.location.lng;
                    const lat = poi.location.lat;
                    this.addMarker([lng, lat]);
                    this.getAddress(lng, lat);
                    message.success(`已定位到: ${poi.name}`);
                } else {
                    message.warning('未找到相关位置');
                }
            });
        });
    }
  refreshDistrictList = (city, cityLabel) => {
    getDistrictList(city, (data) => {
        this.setState({
            districtList: data
        }, () => {
            if (data && data.length > 0) {
                const firstDistrict = data[0];
                this.props.form.setFieldsValue({
                    district: { key: firstDistrict.value, label: firstDistrict.label } // Adjusted to match the expected format
                });
                this.setFieldValue('addressInfo', {
                    ...this.state.editableData.addressInfo,
                    district: firstDistrict.label
                })
            } else {
                // Handle the case where there are no districts (e.g., clear the selection)
                this.props.form.setFieldsValue({
                    district: { key: '', label: '' } // Reset or clear the selection
                });
            }
        })
    })
  }
    render() {
        const { visible, onCancel, onOk, form, currentRowData } = this.props;
        const { getFieldDecorator } = form;
        const { name, type, usageType, departmentPath, client, constructionLicense, itemCode, branchCompany, constructionCompanyInfo, supervisorCompanyInfo, developmentCompanyInfo, addressInfo, projectCost } = this.state.editableData;
        return (
            <Modal
                title={currentRowData ? "编辑项目" : "添加项目"}
                visible={visible}
                onCancel={onCancel}
                onOk={onOk}
                width={900}
                destroyOnClose
            >
                <Form
                    labelCol={{ style: { width: '100%', height: '30px' } }} //label样式
                    labelAlign="left" //label样式
                >
                    <div className="grid grid-1-1-1">
                        <div className="p-10">
                            <Form.Item label="项目名称:">
                                {getFieldDecorator("name", {
                                    initialValue: name,
                                    rules: [{ required: true, message: '请输入项目名称!' }],
                                    onChange: this.handleFieldChange('name')
                                })(<Input />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="项目类型:">
                                {getFieldDecorator("type", {
                                    initialValue: { key: type, label: projectTypeMap[type] },
                                    rules: [{ required: true, message: '请选择项目类型!' }],
                                    onChange: (e) => this.handleTypeChange(e)
                                })(
                                    <Select
                                        labelInValue
                                    >
                                        {projectTypeMap.toOptions().map((item, index) => (
                                            <Option value={item.value} key={item.value}>{item.label}</Option>
                                        ))}
                                    </Select>
                                )}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="用途类型:">
                                {getFieldDecorator("usageType", {
                                    initialValue: usageType ? { key: usageType, label: projectUsageTypeMap[usageType] } : { key: '', label: '' },
                                    rules: [{ required: false, message: '请选择用途类型!' }],
                                    onChange: this.handleSelectChange('usageType')
                                })(
                                    <Select
                                        labelInValue
                                    >
                                        {getUsageTypeOptions(type).map((item, index) => (
                                            <Option value={item.value} key={item.value}>{item.label}</Option>
                                        ))}
                                    </Select>
                                )}
                            </Form.Item>
                        </div>
                    </div>
                    <div className="grid grid-1-1-1">
                        <div className="p-10">
                            <Form.Item label="部门:">
                                {getFieldDecorator("departmentPath", {
                                    initialValue: departmentPath ? flatPath(departmentPath) : [],
                                    onChange: this.handleCascaderChange('departmentPath'),
                                    rules: [{ required: false, message: '请选择部门!' }],
                                })(
                                    <Cascader
                                        options={this.departmentList ? this.departmentList : []}
                                        expandTrigger="hover" />
                                )}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="委托方:">
                                {getFieldDecorator("clientId", {
                                    initialValue: client ? { key: client.id, label: client.name } : undefined,
                                    rules: [{ required: true, message: '请选择委托方!' }],
                                    onChange: this.handleEntitySelectChange('client')
                                })(
                                    <Select
                                        labelInValue
                                        disabled={this.state.isEdit}
                                    >
                                        {this.clientOptions.map((item, index) => (
                                            <Option value={item.value} key={item.value}>{item.label}</Option>
                                        ))}
                                    </Select>
                                )}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="项目规格:">
                                {getFieldDecorator("clientId", {
                                    initialValue: client ? { key: client.id, label: client.name } : undefined,
                                    rules: [{ required: true, message: '请选择委托方!' }],
                                    onChange: this.handleEntitySelectChange('client')
                                })(
                                    <Input placeholder="请输入项目规格" />
                                )}
                            </Form.Item>
                        </div>
                    </div>
                    <div className="grid grid-1-1-1">
                        <div className="p-10">
                            <Form.Item label="施工许可证号:">
                                {getFieldDecorator("constructionLicense", {
                                    initialValue: constructionLicense,
                                    onChange: this.handleFieldChange('constructionLicense')
                                })(<Input placeholder="请输入施工许可证号" />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="项目编码:">
                                {getFieldDecorator("itemCode", {
                                    initialValue: itemCode,
                                    onChange: this.handleFieldChange('itemCode')
                                })(<Input disabled={true} />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="所属分公司:">
                                {getFieldDecorator("branchCompany", {
                                    initialValue: branchCompany,
                                    onChange: this.handleFieldChange('branchCompany')
                                })(<Input placeholder="请输入所属分公司" />)}
                            </Form.Item>
                        </div>
                    </div>
                    <div className="grid grid-1-1-1">
                        <div className="p-10">
                            <Form.Item label="施工单位:">
                                {getFieldDecorator("constructionCompanyInfo.name", {
                                    initialValue: constructionCompanyInfo ? constructionCompanyInfo.name : '',
                                    onChange: this.handleEntityFieldSelectChange('constructionCompanyInfo', 'name')
                                })(<Input placeholder="施工单位" />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="项目经理:">
                                {getFieldDecorator("constructionCompanyInfo.leader", {
                                    initialValue: constructionCompanyInfo ? constructionCompanyInfo.leader : '',
                                    onChange: this.handleEntityFieldSelectChange('constructionCompanyInfo', 'leader')
                                })(<Input placeholder="项目经理" />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="手机号:">
                                {getFieldDecorator("constructionCompanyInfo.phone", {
                                    initialValue: constructionCompanyInfo ? constructionCompanyInfo.phone : '',
                                    onChange: this.handleEntityFieldSelectChange('constructionCompanyInfo', 'phone')
                                })(<Input placeholder="手机号" />)}
                            </Form.Item>
                        </div>
                    </div>
                    <div className="grid grid-1-1-1">
                        <div className="p-10">
                            <Form.Item label="监理单位:">
                                {getFieldDecorator("supervisorCompanyInfo.name", {
                                    initialValue: supervisorCompanyInfo ? supervisorCompanyInfo.name : '',
                                    onChange: this.handleEntityFieldSelectChange('supervisorCompanyInfo', 'name')
                                })(<Input placeholder="监理单位" />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="项目经理:">
                                {getFieldDecorator("supervisorCompanyInfo.leader", {
                                    initialValue: supervisorCompanyInfo ? supervisorCompanyInfo.leader : '',
                                    onChange: this.handleEntityFieldSelectChange('supervisorCompanyInfo', 'leader')
                                })(<Input placeholder="项目经理" />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="手机号:">
                                {getFieldDecorator("supervisorCompanyInfo.phone", {
                                    initialValue: supervisorCompanyInfo ? supervisorCompanyInfo.phone : '',
                                    onChange: this.handleEntityFieldSelectChange('supervisorCompanyInfo', 'phone')
                                })(<Input placeholder="手机号" />)}
                            </Form.Item>
                        </div>
                    </div>
  render() {
    const { visible, onCancel, onOk, form, currentRowData } = this.props;
    const { getFieldDecorator } = form;
    const { name, type, usageType, departmentPath, client, constructionLicense, itemCode, branchCompany, constructionCompanyInfo, supervisorCompanyInfo, developmentCompanyInfo, addressInfo, projectCost } = this.state.editableData;
    return (
      <Modal
        title={currentRowData ? "编辑项目" : "添加项目"}
        visible={visible}
        onCancel={onCancel}
        onOk={onOk}
        width={900}
        destroyOnClose
      >
        <Form
            labelCol={{ style: { width: '100%', height: '30px' } }} //label样式
            labelAlign="left" //label样式
        >
          <div className="grid grid-1-1-1">
            <div className="p-10">
                <Form.Item label="项目名称:">
                    {getFieldDecorator("name", {
                        initialValue: name,
                        rules: [{required: true, message: '请输入项目名称!'}],
                        onChange: this.handleFieldChange('name')
                    })(<Input/>)}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="项目类型:">
                    {getFieldDecorator("type", {
                        initialValue: { key: type, label: projectTypeMap[type] },
                        rules: [{required: true, message: '请选择项目类型!'}],
                        onChange: (e) => this.handleTypeChange(e)
                    })(
                    <Select
                        labelInValue
                    >
                        { projectTypeMap.toOptions().map((item, index) => (
                            <Option value={item.value} key={item.value}>{item.label}</Option>
                        ))}
                    </Select>
                    )}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="用途类型:">
                    {getFieldDecorator("usageType", {
                        initialValue: usageType ? {key: usageType, label: projectUsageTypeMap[usageType]} : {key: '', label: ''},
                        rules: [{required: false, message: '请选择用途类型!'}],
                        onChange: this.handleSelectChange('usageType')
                    })(
                    <Select
                        labelInValue
                    >
                        {getUsageTypeOptions(type).map((item, index) => (
                            <Option value={item.value} key={item.value}>{item.label}</Option>
                        ))}
                    </Select>
                    )}
                </Form.Item>
            </div>
          </div>
          <div className="grid grid-1-1-1">
            <div className="p-10">
                <Form.Item label="部门:">
                    {getFieldDecorator("departmentPath", {
                        initialValue: departmentPath ? flatPath(departmentPath) : [],
                        onChange: this.handleCascaderChange('departmentPath'),
                        rules: [{required: false, message: '请选择部门!'}],
                    })(
                    <Cascader
                        options={this.departmentList ? this.departmentList : []}
                        expandTrigger="hover" />
                    )}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="委托方:">
                    {getFieldDecorator("clientId", {
                        initialValue: client? {key: client.id, label: client.name} : undefined,
                        rules: [{required: true, message: '请选择委托方!'}],
                        onChange: this.handleEntitySelectChange('client')
                    })(
                    <Select
                        labelInValue
                        disabled={this.state.isEdit}
                    >
                        {this.clientOptions.map((item, index) => (
                            <Option value={item.value} key={item.value}>{item.label}</Option>
                        ))}
                    </Select>
                    )}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="项目规格:">
                    {getFieldDecorator("clientId", {
                        initialValue: client? {key: client.id, label: client.name} : undefined,
                        rules: [{required: true, message: '请选择委托方!'}],
                        onChange: this.handleEntitySelectChange('client')
                    })(
                    <Input placeholder="请输入项目规格" />
                    )}
                </Form.Item>
            </div>
          </div>
          <div className="grid grid-1-1-1">
            <div className="p-10">
                <Form.Item label="施工许可证号:">
                    {getFieldDecorator("constructionLicense", {
                        initialValue: constructionLicense,
                        onChange: this.handleFieldChange('constructionLicense')
                    })(<Input placeholder="请输入施工许可证号" />)}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="项目编码:">
                    {getFieldDecorator("itemCode", {
                        initialValue: itemCode,
                        onChange: this.handleFieldChange('itemCode')
                    })(<Input disabled={true}/>)}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="所属分公司:">
                    {getFieldDecorator("branchCompany", {
                        initialValue: branchCompany,
                        onChange: this.handleFieldChange('branchCompany')
                    })(<Input placeholder="请输入所属分公司" />)}
                </Form.Item>
            </div>
          </div>
          <div className="grid grid-1-1-1">
            <div className="p-10">
                <Form.Item label="施工单位:">
                    {getFieldDecorator("constructionCompanyInfo.name", {
                        initialValue: constructionCompanyInfo ? constructionCompanyInfo.name : '',
                        onChange: this.handleEntityFieldSelectChange('constructionCompanyInfo', 'name')
                    })(<Input placeholder="施工单位" />)}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="项目经理:">
                    {getFieldDecorator("constructionCompanyInfo.leader", {
                        initialValue: constructionCompanyInfo ? constructionCompanyInfo.leader : '',
                        onChange: this.handleEntityFieldSelectChange('constructionCompanyInfo', 'leader')
                    })(<Input placeholder="项目经理" />)}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="手机号:">
                    {getFieldDecorator("constructionCompanyInfo.phone", {
                        initialValue: constructionCompanyInfo ? constructionCompanyInfo.phone : '',
                        onChange: this.handleEntityFieldSelectChange('constructionCompanyInfo', 'phone')
                    })(<Input placeholder="手机号" />)}
                </Form.Item>
            </div>
          </div>
            <div className="grid grid-1-1-1">
                <div className="p-10">
                    <Form.Item label="监理单位:">
                        {getFieldDecorator("supervisorCompanyInfo.name", {
                            initialValue: supervisorCompanyInfo ? supervisorCompanyInfo.name : '',
                            onChange: this.handleEntityFieldSelectChange('supervisorCompanyInfo', 'name')
                        })(<Input placeholder="监理单位" />)}
                    </Form.Item>
                </div>
                <div className="p-10">
                    <Form.Item label="项目经理:">
                        {getFieldDecorator("supervisorCompanyInfo.leader", {
                            initialValue: supervisorCompanyInfo ? supervisorCompanyInfo.leader : '',
                            onChange: this.handleEntityFieldSelectChange('supervisorCompanyInfo', 'leader')
                        })(<Input placeholder="项目经理" />)}
                    </Form.Item>
                </div>
                <div className="p-10">
                    <Form.Item label="手机号:">
                        {getFieldDecorator("supervisorCompanyInfo.phone", {
                            initialValue: supervisorCompanyInfo ? supervisorCompanyInfo.phone : '',
                            onChange: this.handleEntityFieldSelectChange('supervisorCompanyInfo', 'phone')
                        })(<Input placeholder="手机号" />)}
                    </Form.Item>
                </div>
            </div>
                    <div className="grid grid-1-1-1">
                        <div className="p-10">
                            <Form.Item label="开发单位:">
                                {getFieldDecorator("developmentCompanyInfo.name", {
                                    initialValue: developmentCompanyInfo ? developmentCompanyInfo.name : '',
                                    onChange: this.handleEntityFieldSelectChange('developmentCompanyInfo', 'name')
                                })(<Input placeholder="开发单位" />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="项目经理:">
                                {getFieldDecorator("developmentCompanyInfo.leader", {
                                    initialValue: developmentCompanyInfo ? developmentCompanyInfo.leader : '',
                                    onChange: this.handleEntityFieldSelectChange('developmentCompanyInfo', 'leader')
                                })(<Input placeholder="项目经理" />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="手机号:">
                                {getFieldDecorator("developmentCompanyInfo.phone", {
                                    initialValue: developmentCompanyInfo ? developmentCompanyInfo.phone : '',
                                    onChange: this.handleEntityFieldSelectChange('developmentCompanyInfo', 'phone')
                                })(<Input placeholder="手机号" />)}
                            </Form.Item>
                        </div>
                    </div>
            <div className="grid grid-1-1-1">
                <div className="p-10">
                    <Form.Item label="开发单位:">
                        {getFieldDecorator("developmentCompanyInfo.name", {
                            initialValue: developmentCompanyInfo ? developmentCompanyInfo.name : '',
                            onChange: this.handleEntityFieldSelectChange('developmentCompanyInfo', 'name')
                        })(<Input placeholder="开发单位" />)}
                    </Form.Item>
                </div>
                <div className="p-10">
                    <Form.Item label="项目经理:">
                        {getFieldDecorator("developmentCompanyInfo.leader", {
                            initialValue: developmentCompanyInfo ? developmentCompanyInfo.leader : '',
                            onChange: this.handleEntityFieldSelectChange('developmentCompanyInfo', 'leader')
                        })(<Input placeholder="项目经理" />)}
                    </Form.Item>
                </div>
                <div className="p-10">
                    <Form.Item label="手机号:">
                        {getFieldDecorator("developmentCompanyInfo.phone", {
                            initialValue: developmentCompanyInfo ? developmentCompanyInfo.phone : '',
                            onChange: this.handleEntityFieldSelectChange('developmentCompanyInfo', 'phone')
                        })(<Input placeholder="手机号" />)}
                    </Form.Item>
                </div>
            </div>
          <div className="grid grid-1-1-1">
            <div className="p-10">
                <Form.Item label="省:">
                    {getFieldDecorator("province", {
                        initialValue: addressInfo && addressInfo.province ? {key: 0, label: addressInfo.province} : {key: 0, label: ''},
                        onChange: this.handleAddressFieldSelectChange('addressInfo', 'province', this.handleProvinceChange)
                    })(
                    <Select
                        labelInValue
                    >
                        {provinceArr.map((item, index) => (
                            <Option value={item.value} key={item.value}>{item.label}</Option>
                        ))}
                    </Select>
                    )}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="市:">
                    {getFieldDecorator("city", {
                        initialValue: addressInfo && addressInfo.city ? {key: 0, label: addressInfo.city} : {key: 0, label: ''},
                        onChange:this.handleAddressFieldSelectChange('addressInfo', 'city', this.handleCityChange)
                    })(
                    <Select
                        labelInValue
                    >
                        {this.state.cityList && this.state.cityList.map((item, index) => (
                            <Option value={item.value} key={item.value}>{item.label}</Option>
                        ))}
                    </Select>
                    )}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="区:">
                {getFieldDecorator("district", {
                    initialValue: addressInfo && addressInfo.district ? {key: 0, label: addressInfo.district} : {key: 0, label: ''},
                    onChange: this.handleAddressFieldSelectChange('addressInfo', 'district')
                    })(
                    <Select
                        labelInValue
                    >
                        {this.state.districtList && this.state.districtList.map((item, index) => (
                            <Option value={item.value} key={item.value}>{item.label}</Option>
                        ))}
                    </Select>
                    )}
                </Form.Item>
            </div>
          </div>
          <div className="grid grid-1-1-1">
            <div className="p-10">
                <Form.Item label="详细地址:">
                    {getFieldDecorator("address", {
                        initialValue: addressInfo && addressInfo.detail ? addressInfo.detail : '',
                        rules: [{required: true, message: '请输入详细地址!'}],
                        onChange: this.handleEntityFieldSelectChange('addressInfo', 'detail')
                        })(<Input placeholder="详细地址" />)}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="经纬度:">
                    {getFieldDecorator("address", {
                        initialValue: addressInfo && addressInfo.detail ? addressInfo.detail : '',
                        rules: [{required: true, message: '请输入经纬度!'}],
                        onChange: this.handleEntityFieldSelectChange('addressInfo', 'detail')
                        })(<Input placeholder="经纬度" />)}
                </Form.Item>
            </div>
            <div className="p-10">
                <Form.Item label="工程造价:" >
                    {getFieldDecorator("projectCost", {
                        initialValue: projectCost,
                        onChange: this.handleNumberChange('projectCost')
                        })(<InputNumber style={inputLongStyle} placeholder="工程造价" />)}
                </Form.Item>
            </div>
          </div>
        </Form>
      </Modal>
    );
  }
                    <div className="grid grid-1-1-1">
                        <div className="p-10">
                            <Form.Item label="省:">
                                {getFieldDecorator("province", {
                                    initialValue: addressInfo && addressInfo.province ? { key: 0, label: addressInfo.province } : { key: 0, label: '' },
                                    onChange: this.handleAddressFieldSelectChange('addressInfo', 'province', this.handleProvinceChange)
                                })(
                                    <Select
                                        labelInValue
                                    >
                                        {provinceArr.map((item, index) => (
                                            <Option value={item.value} key={item.value}>{item.label}</Option>
                                        ))}
                                    </Select>
                                )}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="市:">
                                {getFieldDecorator("city", {
                                    initialValue: addressInfo && addressInfo.city ? { key: 0, label: addressInfo.city } : { key: 0, label: '' },
                                    onChange: this.handleAddressFieldSelectChange('addressInfo', 'city', this.handleCityChange)
                                })(
                                    <Select
                                        labelInValue
                                    >
                                        {this.state.cityList && this.state.cityList.map((item, index) => (
                                            <Option value={item.value} key={item.value}>{item.label}</Option>
                                        ))}
                                    </Select>
                                )}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="区:">
                                {getFieldDecorator("district", {
                                    initialValue: addressInfo && addressInfo.district ? { key: 0, label: addressInfo.district } : { key: 0, label: '' },
                                    onChange: this.handleAddressFieldSelectChange('addressInfo', 'district')
                                })(
                                    <Select
                                        labelInValue
                                    >
                                        {this.state.districtList && this.state.districtList.map((item, index) => (
                                            <Option value={item.value} key={item.value}>{item.label}</Option>
                                        ))}
                                    </Select>
                                )}
                            </Form.Item>
                        </div>
                    </div>
                    <div className="grid grid-1-1-1">
                        <div className="p-10">
                            <Form.Item label="详细地址:">
                                {getFieldDecorator("address", {
                                    initialValue: addressInfo && addressInfo.detail ? addressInfo.detail : '',
                                    rules: [{ required: true, message: '请输入详细地址!' }],
                                    onChange: this.handleEntityFieldSelectChange('addressInfo', 'detail')
                                })(<Input placeholder="详细地址" />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="经纬度:">
                                {getFieldDecorator("gps", {
                                    initialValue: addressInfo && addressInfo.longitude && addressInfo.latitude ? `${addressInfo.longitude},${addressInfo.latitude}` : '',
                                    rules: [{ required: true, message: '请选择地图位置或搜索!' }],
                                })(<Input placeholder="请选择地图位置或搜索" readOnly />)}
                            </Form.Item>
                        </div>
                        <div className="p-10">
                            <Form.Item label="工程造价:" >
                                {getFieldDecorator("projectCost", {
                                    initialValue: projectCost,
                                    onChange: this.handleNumberChange('projectCost')
                                })(<InputNumber style={inputLongStyle} placeholder="工程造价" />)}
                            </Form.Item>
                        </div>
                    </div>
                    <div style={{ padding: '0 10px' }}>
                        <div style={{ marginBottom: 10, display: 'flex' }}>
                            <Input
                                placeholder="请输入搜索关键字"
                                value={this.state.keyword}
                                onChange={(e) => this.setState({ keyword: e.target.value })}
                                style={{ marginRight: 10 }}
                            />
                            <Button type="primary" onClick={this.handleSearch}>搜索</Button>
                        </div>
                        <div id="mapContainer" className="mapBox" style={{ height: '400px', width: '100%', border: '1px solid #d9d9d9' }}></div>
                    </div>
                </Form>
            </Modal>
        );
    }
}
export default Form.create({ name: "EditProjectForm" })(EditProjectForm);
screen/public/index.html
@@ -9,7 +9,7 @@
  <script src="https://cache.amap.com/lbs/static/es5.min.js"></script>
  <script type="text/javascript">
    window._AMapSecurityConfig = {
      securityJsCode: "c75eccf0742998b2ea43823e08cacccd」",
      securityJsCode: "c75eccf0742998b2ea43823e08cacccd",
    };
  </script>
  <script src="https://webapi.amap.com/loader.js"></script>