“mitao”
2026-01-13 95ff641e13c015a53a667b534fb3475708e2cdc0
feat(management):站点增加默认点
4个文件已修改
443 ■■■■■ 已修改文件
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TSite.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSite/tSite_add.html 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSite/tSite_edit.html 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tSite/tSite_info.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TSite.java
@@ -74,6 +74,18 @@
     * 企业id
     */
    private Integer companyId;
    /**
     * 默认点位置
     */
    private String defaultPointAddress;
    /**
     * 默认点经度
     */
    private Double defaultPointLon;
    /**
     * 默认点纬度
     */
    private Double defaultPointLat;
    public Integer getId() {
@@ -180,6 +192,30 @@
        this.companyId = companyId;
    }
    public String getDefaultPointAddress() {
        return defaultPointAddress;
    }
    public void setDefaultPointAddress(String defaultPointAddress) {
        this.defaultPointAddress = defaultPointAddress;
    }
    public Double getDefaultPointLon() {
        return defaultPointLon;
    }
    public void setDefaultPointLon(Double defaultPointLon) {
        this.defaultPointLon = defaultPointLon;
    }
    public Double getDefaultPointLat() {
        return defaultPointLat;
    }
    public void setDefaultPointLat(Double defaultPointLat) {
        this.defaultPointLat = defaultPointLat;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
@@ -199,6 +235,9 @@
        ", state=" + state +
        ", insertTime=" + insertTime +
        ", insertUserId=" + insertUserId +
        ", defaultPointAddress=" + defaultPointAddress +
        ", defaultPointLon=" + defaultPointLon +
        ", defaultPointLat=" + defaultPointLat +
        "}";
    }
}
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSite/tSite_add.html
@@ -151,6 +151,24 @@
                        </div>
                    </div>
                    <div class="">
                        <h3 style="margin-left: 100px;margin-top: 70px;">默认点</h3>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-2 control-label">默认点:</label>
                        <div class="col-sm-6">
                            <input type="text" class="form-control" id="defaultPointAddress" name="defaultPointAddress" autocomplete="off" placeholder="点击输入地址搜索" onclick="TSiteInfoDlg.showDefaultPointMap()">
                            <input type="hidden" id="defaultPointLon" name="defaultPointLon">
                            <input type="hidden" id="defaultPointLat" name="defaultPointLat">
                        </div>
                    </div>
                    <div class="form-group" id="defaultPointMapModel" style="display: none;">
                        <label class="col-sm-2 control-label"></label>
                        <div class="col-sm-8">
                            <div id="defaultPointMapContainer" style="height: 500px;width: 100%;"></div>
                        </div>
                    </div>
                </div>
            </div>
@@ -169,7 +187,170 @@
        securityJsCode: '44c5ee9ad584605d91ca69bfac32c761',
    }
</script>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=d3bde6afb050067e1a765a8d1d1f4c54&plugin=AMap.MouseTool,AMap.DistrictSearch,AMap.PolyEditor,AMap.RectangleEditor,AMap.CircleEditor"></script>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=d3bde6afb050067e1a765a8d1d1f4c54&plugin=AMap.MouseTool,AMap.DistrictSearch,AMap.PolyEditor,AMap.RectangleEditor,AMap.CircleEditor,AMap.Autocomplete,AMap.PlaceSearch,AMap.Geocoder,AMap.Geolocation"></script>
<script src="${ctxPath}/static/modular/system/tSite/electricFence.js"></script>
<script src="${ctxPath}/static/modular/system/tSite/tSite_info.js"></script>
<script type="text/javascript">
    // 默认点地图相关变量
    var defaultPointMarker, defaultPointMap;
    var defaultPointInfoWindow;
    var defaultPointCity;
    // 点击输入框时显示地图并初始化
    TSiteInfoDlg.showDefaultPointMap = function () {
        var mapModel = $("#defaultPointMapModel");
        if (!mapModel.is(":visible")) {
            mapModel.show();
            // 首次显示时初始化地图
            if (!defaultPointMap) {
                initDefaultPointMap();
            }
        }
    };
    // 初始化默认点地图
    function initDefaultPointMap() {
        defaultPointMap = new AMap.Map("defaultPointMapContainer", {
            resizeEnable: true,
            zoom: 15,
            zooms: [3, 20]
        });
        // 定位到当前位置
        defaultPointMap.plugin('AMap.Geolocation', function () {
            var geolocation = new AMap.Geolocation({
                enableHighAccuracy: true,
                timeout: 10000,
                convert: true,
                showButton: true,
                showMarker: true,
                showCircle: true,
                panToLocation: true,
                buttonPosition: 'LB',
                buttonOffset: new AMap.Pixel(10, 20),
                zoomToAccuracy: true
            });
            defaultPointMap.addControl(geolocation);
            geolocation.getCurrentPosition();
            AMap.event.addListener(geolocation, 'complete', function(data) {
                defaultPointCity = data.addressComponent.citycode;
            });
        });
        // 信息窗口
        defaultPointInfoWindow = new AMap.InfoWindow({
            autoMove: true,
            offset: new AMap.Pixel(0, -30)
        });
        // 地图点击事件
        defaultPointMap.on('click', function (e) {
            if (defaultPointMarker != null) {
                defaultPointMarker.setMap(null);
            }
            $("#defaultPointLon").val(e.lnglat.getLng());
            $("#defaultPointLat").val(e.lnglat.getLat());
            defaultPointMarker = new AMap.Marker({
                map: defaultPointMap,
                position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat())
            });
            defaultPointRegeoCode(e.lnglat.getLng(), e.lnglat.getLat());
        });
    }
    // 逆地理编码
    function defaultPointRegeoCode(lon, lat) {
        var lnglat = [lon, lat];
        defaultPointMap.add(defaultPointMarker);
        defaultPointMarker.setPosition(lnglat);
        AMap.service('AMap.Geocoder', function() {
            var geocoder = new AMap.Geocoder({});
            geocoder.getAddress(lnglat, function (status, result) {
                if (status === 'complete' && result.regeocode) {
                    var address = result.regeocode.formattedAddress;
                    $("#defaultPointAddress").val(address);
                    var data = {
                        "name": result.regeocode.addressComponent.neighborhood,
                        "location": {"lat": lat, "lng": lon},
                        "address": address,
                        "tel": "",
                        "type": result.regeocode.addressComponent.neighborhoodType
                    };
                    defaultPointInfoWindow.setContent(createDefaultPointContent(data));
                    defaultPointInfoWindow.open(defaultPointMap, defaultPointMarker.getPosition());
                } else {
                    Feng.error('根据经纬度查询地址失败');
                }
            });
        });
    }
    // 搜索自动补全(页面加载时立即初始化)
    var defaultPointAutoOptions = {
        city: "",
        input: "defaultPointAddress"
    };
    var defaultPointAuto = new AMap.Autocomplete(defaultPointAutoOptions);
    var defaultPointPlaceSearch = new AMap.PlaceSearch({
        pageSize: 5,
        pageIndex: 1,
        children: 0,
        citylimit: false,
        autoFitView: true,
        extensions: 'base'
    });
    AMap.event.addListener(defaultPointAuto, "select", function(e) {
        // 确保地图已初始化
        if (!defaultPointMap) {
            $("#defaultPointMapModel").show();
            initDefaultPointMap();
        }
        defaultPointPlaceSearch.setCity(e.poi.adcode);
        defaultPointPlaceSearch.search(e.poi.name);
        if (e.poi && e.poi.location) {
            defaultPointMap.setZoom(15);
            defaultPointMap.setCenter(e.poi.location);
            defaultPointPlaceSearch.getDetails(e.poi.id, function (status, result) {
                if (status === 'complete' && result.info === 'OK') {
                    defaultPointSearchCallback(result);
                }
            });
        }
    });
    // 搜索结果回调
    function defaultPointSearchCallback(data) {
        if (defaultPointMarker != null) {
            defaultPointMarker.setMap(null);
        }
        var poiArr = data.poiList.pois;
        defaultPointMarker = new AMap.Marker({
            map: defaultPointMap,
            position: poiArr[0].location
        });
        defaultPointMap.add(defaultPointMarker);
        defaultPointMarker.setPosition(defaultPointMarker.getPosition());
        defaultPointInfoWindow.setContent(createDefaultPointContent(poiArr[0]));
        defaultPointInfoWindow.open(defaultPointMap, defaultPointMarker.getPosition());
    }
    // 创建信息窗口内容
    function createDefaultPointContent(poi) {
        $("#defaultPointAddress").val(poi.address || poi.name);
        $("#defaultPointLon").val(poi.location.lng);
        $("#defaultPointLat").val(poi.location.lat);
        var s = [];
        s.push("<b>名称:" + (poi.name || "") + "</b>");
        s.push("地址:" + (poi.address || ""));
        if (poi.tel) s.push("电话:" + poi.tel);
        if (poi.type) s.push("类型:" + poi.type);
        return s.join("<br>");
    }
</script>
@}
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSite/tSite_edit.html
@@ -174,6 +174,24 @@
                        </div>
                    </div>
                    <div class="">
                        <h3 style="margin-left: 100px;margin-top: 70px;">默认点</h3>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-2 control-label">默认点:</label>
                        <div class="col-sm-6">
                            <input type="text" class="form-control" id="defaultPointAddress" name="defaultPointAddress" value="${item.defaultPointAddress!}" autocomplete="off" placeholder="点击输入地址搜索" onclick="TSiteInfoDlg.showDefaultPointMap()">
                            <input type="hidden" id="defaultPointLon" name="defaultPointLon" value="${item.defaultPointLon!}">
                            <input type="hidden" id="defaultPointLat" name="defaultPointLat" value="${item.defaultPointLat!}">
                        </div>
                    </div>
                    <div class="form-group" id="defaultPointMapModel" style="display: none;">
                        <label class="col-sm-2 control-label"></label>
                        <div class="col-sm-8">
                            <div id="defaultPointMapContainer" style="height: 500px;width: 100%;"></div>
                        </div>
                    </div>
                </div>
            </div>
@@ -192,7 +210,185 @@
        securityJsCode:'44c5ee9ad584605d91ca69bfac32c761',
    }
</script>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=d3bde6afb050067e1a765a8d1d1f4c54&plugin=AMap.MouseTool,AMap.DistrictSearch,AMap.PolyEditor,AMap.RectangleEditor,AMap.CircleEditor"></script>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=d3bde6afb050067e1a765a8d1d1f4c54&plugin=AMap.MouseTool,AMap.DistrictSearch,AMap.PolyEditor,AMap.RectangleEditor,AMap.CircleEditor,AMap.Autocomplete,AMap.PlaceSearch,AMap.Geocoder,AMap.Geolocation"></script>
<script src="${ctxPath}/static/modular/system/tSite/electricFence.js"></script>
<script src="${ctxPath}/static/modular/system/tSite/tSite_info.js"></script>
<script type="text/javascript">
    // 默认点地图相关变量
    var defaultPointMarker, defaultPointMap;
    var defaultPointInfoWindow;
    var defaultPointCity;
    // 点击输入框时显示地图并初始化
    TSiteInfoDlg.showDefaultPointMap = function () {
        var mapModel = $("#defaultPointMapModel");
        if (!mapModel.is(":visible")) {
            mapModel.show();
            // 首次显示时初始化地图
            if (!defaultPointMap) {
                initDefaultPointMap();
            }
        }
    };
    // 初始化默认点地图
    function initDefaultPointMap() {
        defaultPointMap = new AMap.Map("defaultPointMapContainer", {
            resizeEnable: true,
            zoom: 15,
            zooms: [3, 20]
        });
        // 定位到当前位置或已有数据位置
        defaultPointMap.plugin('AMap.Geolocation', function () {
            var geolocation = new AMap.Geolocation({
                enableHighAccuracy: true,
                timeout: 10000,
                convert: true,
                showButton: true,
                showMarker: true,
                showCircle: true,
                panToLocation: true,
                buttonPosition: 'LB',
                buttonOffset: new AMap.Pixel(10, 20),
                zoomToAccuracy: true
            });
            defaultPointMap.addControl(geolocation);
            // 如果已有默认点数据,显示标记并定位到该点
            var existingLon = $("#defaultPointLon").val();
            var existingLat = $("#defaultPointLat").val();
            if (existingLon && existingLat) {
                var lnglat = new AMap.LngLat(parseFloat(existingLon), parseFloat(existingLat));
                defaultPointMap.setCenter(lnglat);
                defaultPointMarker = new AMap.Marker({
                    map: defaultPointMap,
                    position: lnglat
                });
            } else {
                // 没有已有数据时,自动定位到当前位置
                geolocation.getCurrentPosition();
            }
            AMap.event.addListener(geolocation, 'complete', function(data) {
                defaultPointCity = data.addressComponent.citycode;
            });
        });
        // 信息窗口
        defaultPointInfoWindow = new AMap.InfoWindow({
            autoMove: true,
            offset: new AMap.Pixel(0, -30)
        });
        // 地图点击事件
        defaultPointMap.on('click', function (e) {
            if (defaultPointMarker != null) {
                defaultPointMarker.setMap(null);
            }
            $("#defaultPointLon").val(e.lnglat.getLng());
            $("#defaultPointLat").val(e.lnglat.getLat());
            defaultPointMarker = new AMap.Marker({
                map: defaultPointMap,
                position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat())
            });
            defaultPointRegeoCode(e.lnglat.getLng(), e.lnglat.getLat());
        });
    }
    // 逆地理编码
    function defaultPointRegeoCode(lon, lat) {
        var lnglat = [lon, lat];
        defaultPointMap.add(defaultPointMarker);
        defaultPointMarker.setPosition(lnglat);
        AMap.service('AMap.Geocoder', function() {
            var geocoder = new AMap.Geocoder({});
            geocoder.getAddress(lnglat, function (status, result) {
                if (status === 'complete' && result.regeocode) {
                    var address = result.regeocode.formattedAddress;
                    $("#defaultPointAddress").val(address);
                    var data = {
                        "name": result.regeocode.addressComponent.neighborhood,
                        "location": {"lat": lat, "lng": lon},
                        "address": address,
                        "tel": "",
                        "type": result.regeocode.addressComponent.neighborhoodType
                    };
                    defaultPointInfoWindow.setContent(createDefaultPointContent(data));
                    defaultPointInfoWindow.open(defaultPointMap, defaultPointMarker.getPosition());
                } else {
                    Feng.error('根据经纬度查询地址失败');
                }
            });
        });
    }
    // 搜索自动补全(页面加载时立即初始化)
    var defaultPointAutoOptions = {
        city: "",
        input: "defaultPointAddress"
    };
    var defaultPointAuto = new AMap.Autocomplete(defaultPointAutoOptions);
    var defaultPointPlaceSearch = new AMap.PlaceSearch({
        pageSize: 5,
        pageIndex: 1,
        children: 0,
        citylimit: false,
        autoFitView: true,
        extensions: 'base'
    });
    AMap.event.addListener(defaultPointAuto, "select", function(e) {
        // 确保地图已初始化
        if (!defaultPointMap) {
            $("#defaultPointMapModel").show();
            initDefaultPointMap();
        }
        defaultPointPlaceSearch.setCity(e.poi.adcode);
        defaultPointPlaceSearch.search(e.poi.name);
        if (e.poi && e.poi.location) {
            defaultPointMap.setZoom(15);
            defaultPointMap.setCenter(e.poi.location);
            defaultPointPlaceSearch.getDetails(e.poi.id, function (status, result) {
                if (status === 'complete' && result.info === 'OK') {
                    defaultPointSearchCallback(result);
                }
            });
        }
    });
    // 搜索结果回调
    function defaultPointSearchCallback(data) {
        if (defaultPointMarker != null) {
            defaultPointMarker.setMap(null);
        }
        var poiArr = data.poiList.pois;
        defaultPointMarker = new AMap.Marker({
            map: defaultPointMap,
            position: poiArr[0].location
        });
        defaultPointMap.add(defaultPointMarker);
        defaultPointMarker.setPosition(defaultPointMarker.getPosition());
        defaultPointInfoWindow.setContent(createDefaultPointContent(poiArr[0]));
        defaultPointInfoWindow.open(defaultPointMap, defaultPointMarker.getPosition());
    }
    // 创建信息窗口内容
    function createDefaultPointContent(poi) {
        $("#defaultPointAddress").val(poi.address || poi.name);
        $("#defaultPointLon").val(poi.location.lng);
        $("#defaultPointLat").val(poi.location.lat);
        var s = [];
        s.push("<b>名称:" + (poi.name || "") + "</b>");
        s.push("地址:" + (poi.address || ""));
        if (poi.tel) s.push("电话:" + poi.tel);
        if (poi.type) s.push("类型:" + poi.type);
        return s.join("<br>");
    }
</script>
@}
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tSite/tSite_info.js
@@ -81,7 +81,10 @@
    .set('districtCode')
    .set('state')
    .set('insertTime')
    .set('insertUserId');
    .set('insertUserId')
    .set('defaultPointAddress')
    .set('defaultPointLon')
    .set('defaultPointLat');
}
/**
@@ -146,6 +149,15 @@
        ajax.set("district",$("#districtCode option:selected").text());
    }
    ajax.set("subArr",JSON.stringify(subArr));
    // 默认点信息
    var defaultPointAddress = $("#defaultPointAddress").val();
    var defaultPointLon = $("#defaultPointLon").val();
    var defaultPointLat = $("#defaultPointLat").val();
    if (defaultPointAddress && defaultPointLon && defaultPointLat) {
        ajax.set("defaultPointAddress", defaultPointAddress);
        ajax.set("defaultPointLon", defaultPointLon);
        ajax.set("defaultPointLat", defaultPointLat);
    }
    ajax.start();
}
@@ -208,6 +220,15 @@
        ajax.set("district",$("#districtCode option:selected").text());
    }
    ajax.set("subArr",JSON.stringify(subArr));
    // 默认点信息
    var defaultPointAddress = $("#defaultPointAddress").val();
    var defaultPointLon = $("#defaultPointLon").val();
    var defaultPointLat = $("#defaultPointLat").val();
    if (defaultPointAddress && defaultPointLon && defaultPointLat) {
        ajax.set("defaultPointAddress", defaultPointAddress);
        ajax.set("defaultPointLon", defaultPointLon);
        ajax.set("defaultPointLat", defaultPointLat);
    }
    ajax.start();
}