Skip to content

【推荐】地址选择器实现集合 👍👍 #79

Open

Activity

lilien1010

lilien1010 commented on Jun 28, 2020

@lilien1010

非常棒!

bigrotor187

bigrotor187 commented on Jul 15, 2020

@bigrotor187

我看这个都是前端来维护,那如果是后端来维护的话,提供接口给前端的方式,那返回的响应 json 应该要怎么样的呢?

modood

modood commented on Jul 15, 2020

@modood
OwnerAuthor

我看这个都是前端来维护,那如果是后端来维护的话,提供接口给前端的方式,那返回的响应 json 应该要怎么样的呢?

@bigrotor187 服务端维护的话就是把数据存到数据库里,然后提供 http api 根据上层 code 查下层的列表就可以了,例如:根据城市查区县列表

bigrotor187

bigrotor187 commented on Jul 16, 2020

@bigrotor187

我看这个都是前端来维护,那如果是后端来维护的话,提供接口给前端的方式,那返回的响应 json 应该要怎么样的呢?

@bigrotor187 服务端维护的话就是把数据存到数据库里,然后提供 http api 根据上层 code 查下层的列表就可以了,例如:根据城市查区县列表

cool,这里的省、市编码分别是 2 位、4 位,但我看民政部都是 6 位的,请问您是通过什么方法爬取整理成 2 位、4 位弄到数据库中的呢?

MoonRiser

MoonRiser commented on Oct 25, 2020

@MoonRiser
modood

modood commented on Oct 26, 2020

@modood
OwnerAuthor

@MoonRiser 你好,只添加新增的链接即可,我补充到最上面的列表里

buyixjh

buyixjh commented on Feb 7, 2021

@buyixjh

好人一生平安

pinned this issue on Jan 25, 2022
lihanspace

lihanspace commented on Apr 14, 2022

@lihanspace

可以加个邮编吗

hgx

hgx commented on Jul 5, 2022

@hgx

求 Ant Design of Angular - Cascader 版本

waiyuchan

waiyuchan commented on Nov 21, 2023

@waiyuchan
import React from "react";
import ReactDOM from "react-dom";
import {Cascader} from "antd";

import areas from "china-division/dist/areas.json";
import cities from "china-division/dist/cities.json";
import provinces from "china-division/dist/provinces.json";

// 定义接口
interface Area {
    code: string;
    name: string;
    cityCode?: string;
}

interface City {
    code: string;
    name: string;
    provinceCode: string;
    children?: AreaOption[];
}

interface Province {
    code: string;
    name: string;
    children?: CityOption[];
}

interface AreaOption {
    label: string;
    value: string;
}

interface CityOption extends AreaOption {
    children?: AreaOption[];
}

// 将原始数据转换为带有 children 属性的类型
const typedCities: City[] = cities.map((city) => ({...city, children: []}));
const typedProvinces: Province[] = provinces.map((province) => ({
    ...province,
    children: []
}));
const typedAreas: Area[] = areas.map((area) => ({...area}));

typedAreas.forEach((area) => {
    const matchCity = typedCities.find((city) => city.code === area.cityCode);
    if (matchCity) {
        matchCity.children!.push({
            label: area.name,
            value: area.code
        });
    }
});

typedCities.forEach((city) => {
    const matchProvince = typedProvinces.find(
        (province) => province.code === city.provinceCode
    );
    if (matchProvince) {
        matchProvince.children!.push({
            label: city.name,
            value: city.code,
            children: city.children
        });
    }
});

const options = typedProvinces.map((province) => ({
    label: province.name,
    value: province.code,
    children: province.children
}));

ReactDOM.render(
    <div style={{margin: 24}}>
        <p style={{marginBottom: 24}}>Antd Cascader Demo</p>
        <Cascader
            options={options}
            showSearch
            placeholder="请选择地址"
            style={{width: 400}}
        />
    </div>,
    document.getElementById("root")
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

      Participants

      @lilien1010@modood@buyixjh@MoonRiser@waiyuchan

      Issue actions

        【推荐】地址选择器实现集合 👍👍 · Issue #79 · modood/Administrative-divisions-of-China