commit
1fa9959cdf
@ -0,0 +1,6 @@
|
||||
{
|
||||
"presets": [
|
||||
["@babel/preset-env"]
|
||||
],
|
||||
"plugins": ["@babel/plugin-transform-runtime"]
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
@ -0,0 +1,14 @@
|
||||
# editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.json]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
@ -0,0 +1,2 @@
|
||||
node_modules/*
|
||||
build/*
|
||||
@ -0,0 +1,33 @@
|
||||
{
|
||||
"parser": "babel-eslint",
|
||||
"env": {
|
||||
"browser": true,
|
||||
"commonjs": true,
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 8,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"no-const-assign": "warn",
|
||||
"no-this-before-super": "warn",
|
||||
"no-undef": "warn",
|
||||
"no-unreachable": "warn",
|
||||
"no-unused-vars": "warn",
|
||||
"constructor-super": "warn",
|
||||
"valid-typeof": "warn",
|
||||
"semi": [
|
||||
"warn",
|
||||
"never"
|
||||
],
|
||||
"quotes": [
|
||||
"warn",
|
||||
"single"
|
||||
],
|
||||
"arrow-parens": 0,
|
||||
"generator-star-spacing": 0,
|
||||
"space-before-function-paren": 0
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
.DS_Store
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
.idea
|
||||
@ -0,0 +1,22 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 Christoph von Gellhorn
|
||||
Copyright (c) 2022 Edison Liu
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@ -0,0 +1,75 @@
|
||||
<p align="center">
|
||||
<img src="https://pigjian.com/images/v-distpicker.png" alt="Powered By Jiajian Chan" width="160">
|
||||
</p>
|
||||
|
||||
<p align="center">A flexible, highly available district selector for picking provinces, cities and districts of China.</p>
|
||||
|
||||
# V - Distpicker
|
||||
|
||||
Here is [documents](http://distpicker.pigjian.com/)
|
||||
|
||||
## Installation
|
||||
|
||||
```javascript
|
||||
npm install v-distpicker --save
|
||||
```
|
||||
|
||||
Or
|
||||
|
||||
```javascript
|
||||
yarn add v-distpicker --save
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
**Register component**
|
||||
|
||||
Registe global component:
|
||||
|
||||
```javascript
|
||||
import Distpicker from 'v-distpicker'
|
||||
|
||||
Vue.component('v-distpicker', Distpicker)
|
||||
```
|
||||
|
||||
Registe component:
|
||||
|
||||
```javascript
|
||||
import VDistpicker from 'v-distpicker'
|
||||
|
||||
export default {
|
||||
components: { VDistpicker }
|
||||
}
|
||||
```
|
||||
|
||||
**How to use**
|
||||
|
||||
Basic:
|
||||
|
||||
```javascript
|
||||
<v-distpicker></v-distpicker>
|
||||
```
|
||||
|
||||
Default Value:
|
||||
|
||||
```javascript
|
||||
<v-distpicker province="广东省" city="广州市" area="海珠区"></v-distpicker>
|
||||
```
|
||||
|
||||
Mobile:
|
||||
|
||||
```javascript
|
||||
<v-distpicker type="mobile"></v-distpicker>
|
||||
```
|
||||
|
||||
## Contributors
|
||||
|
||||
- [Jiajian Chan](http://github.com/jcc)
|
||||
|
||||
## Thanks
|
||||
|
||||
- [Distpicker](https://github.com/fengyuanchen/distpicker)
|
||||
|
||||
## License
|
||||
|
||||
The plugin is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT).
|
||||
@ -0,0 +1,60 @@
|
||||
const path = require('path')
|
||||
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
||||
const { VueLoaderPlugin } = require('vue-loader')
|
||||
|
||||
module.exports = {
|
||||
entry: './examples/main.js',
|
||||
mode: 'development',
|
||||
resolve: {
|
||||
extensions: ['*', '.js', '.vue'],
|
||||
alias: {
|
||||
main: path.resolve(__dirname, '../src')
|
||||
},
|
||||
},
|
||||
output: {
|
||||
path: path.resolve(__dirname, '../dist/dev'),
|
||||
publicPath: '/',
|
||||
filename: 'v-distpicker.js'
|
||||
},
|
||||
devServer: {
|
||||
contentBase: path.resolve(__dirname, '../dist/dev'),
|
||||
compress: false,
|
||||
port: 3001
|
||||
},
|
||||
plugins: [
|
||||
new HtmlWebpackPlugin({
|
||||
filename: path.resolve(__dirname, '../dist/dev/index.html'),
|
||||
template: 'examples/index.html',
|
||||
inject: true
|
||||
}),
|
||||
new VueLoaderPlugin()
|
||||
],
|
||||
module: {
|
||||
rules: [{
|
||||
test: /\.vue$/,
|
||||
use: 'vue-loader'
|
||||
}, {
|
||||
test: /\.js$/,
|
||||
use: ['babel-loader', 'eslint-loader'],
|
||||
exclude: /node_modules/
|
||||
}, {
|
||||
test: /\.css$/,
|
||||
use: 'css-loader',
|
||||
},
|
||||
// {
|
||||
// test: /\.scss$/,
|
||||
// use: ['vue-style-loader', 'css-loader', 'sass-loader']
|
||||
// },
|
||||
{
|
||||
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
|
||||
exclude: /node_modules/,
|
||||
use: [{
|
||||
loader: 'url-loader',
|
||||
query: {
|
||||
name: '[path][name].[ext]?[hash:8]',
|
||||
limit: 8192
|
||||
}
|
||||
}]
|
||||
}]
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,42 @@
|
||||
const path = require('path')
|
||||
const { VueLoaderPlugin } = require('vue-loader')
|
||||
|
||||
module.exports = {
|
||||
entry: './src/index.js',
|
||||
mode: 'production',
|
||||
resolve: {
|
||||
extensions: ['*', '.js', '.vue']
|
||||
},
|
||||
output: {
|
||||
path: path.resolve(__dirname, '../dist'),
|
||||
filename: 'v-distpicker.js',
|
||||
library: 'VDistpicker',
|
||||
libraryTarget: 'umd',
|
||||
libraryExport: 'default'
|
||||
},
|
||||
plugins: [
|
||||
new VueLoaderPlugin()
|
||||
],
|
||||
optimization: {
|
||||
minimize: true
|
||||
},
|
||||
module: {
|
||||
rules: [{
|
||||
test: /\.vue$/,
|
||||
use: 'vue-loader'
|
||||
}, {
|
||||
test: /\.css$/,
|
||||
use: 'css-loader',
|
||||
},
|
||||
// {
|
||||
// test: /\.scss$/,
|
||||
// use: ['vue-style-loader', 'css-loader', 'sass-loader']
|
||||
// },
|
||||
{
|
||||
test: /\.js$/,
|
||||
use: ['babel-loader', 'eslint-loader'],
|
||||
exclude: /node_modules/
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<index></index>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import index from './components/index'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
index,
|
||||
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<!--
|
||||
<style lang="scss">
|
||||
@import './css/styles.css';
|
||||
</style>
|
||||
-->
|
||||
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 29 KiB |
@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<v-distpicker> </v-distpicker>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import VDistpicker from "../../src/Distpicker"
|
||||
// import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
|
||||
|
||||
export default {
|
||||
name: "ArticleList",
|
||||
components: { VDistpicker },
|
||||
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
beforeCreated() {},
|
||||
watch: {},
|
||||
created() {},
|
||||
mounted() {},
|
||||
methods: {},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
@ -0,0 +1,175 @@
|
||||
.logo {
|
||||
margin-top: 50px;
|
||||
margin-bottom: 50px;
|
||||
text-align: center;
|
||||
}
|
||||
.logo .description {
|
||||
margin-top: 20px;
|
||||
font-size: 16px;
|
||||
color: #979797;
|
||||
}
|
||||
.logo .description small {
|
||||
font-size: 14px;
|
||||
color: #ABD3B4;
|
||||
}
|
||||
.container {
|
||||
max-width: 767px;
|
||||
margin: 30px auto;
|
||||
color: #6289ad;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.container {
|
||||
padding-left: 10%;
|
||||
padding-right: 10%;
|
||||
}
|
||||
}
|
||||
h5 {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
pre {
|
||||
margin-top: 1rem;
|
||||
color: #6289ad;
|
||||
border: 1px solid #f8f8f8;
|
||||
padding: 15px;
|
||||
background-color: #f8f8f8;
|
||||
border-radius: 5px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
pre[class*="language-"] {
|
||||
background: #f8f8f8;
|
||||
}
|
||||
.blocks {
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
}
|
||||
.blocks .block {
|
||||
margin-top: 30px;
|
||||
}
|
||||
.heart {
|
||||
position: relative;
|
||||
}
|
||||
.heart:before {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 0;
|
||||
left: 0;
|
||||
display: block;
|
||||
height: 0;
|
||||
border-top: 1px solid #DCE7F4;
|
||||
content: " ";
|
||||
}
|
||||
.heart::after {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
padding-left: 0.5rem;
|
||||
padding-right: 0.5rem;
|
||||
background-color: rgb(255, 255, 255);
|
||||
color: #DCE7F4;
|
||||
content: "♥";
|
||||
}
|
||||
.heart:hover::after {
|
||||
color: #BFCBD9;
|
||||
}
|
||||
a.nav-link {
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
color: #DCE7F4;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
a.nav-link:hover {
|
||||
color: #BFCBD9;
|
||||
}
|
||||
.table {
|
||||
font-size: 14px;
|
||||
font-weight: 300;
|
||||
color: #6289ad;
|
||||
}
|
||||
.table th {
|
||||
background-color: #eee;
|
||||
}
|
||||
.example {
|
||||
width: 100%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.example-box {
|
||||
border: 1px solid #dce7f4;
|
||||
border-radius: 5px;
|
||||
width: 100%;
|
||||
}
|
||||
.box-left {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
}
|
||||
#custom-event .box-left {
|
||||
display: inline-block;
|
||||
padding: 10px;
|
||||
}
|
||||
#custom-event .complete-box {
|
||||
display: inline-block;
|
||||
width: 50%;
|
||||
margin-left: 1%;
|
||||
float: left;
|
||||
padding: 4px 0;
|
||||
}
|
||||
#custom-event .content-show {
|
||||
display: inline-block;
|
||||
width: 48%;
|
||||
padding: 0;
|
||||
margin-left: 1%;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
#custom-event .box-left {
|
||||
display: inline-block;
|
||||
padding: 10px;
|
||||
}
|
||||
#custom-event .complete-box {
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
#custom-event .content-show {
|
||||
width: 100%;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
.box-right {
|
||||
display: inline-block;
|
||||
}
|
||||
.box-footer {
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
border-top: 1px solid #dce7f4;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
.box-footer:hover {
|
||||
background-color: #dce7f4;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.address-wrapper {
|
||||
max-width: 400px;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
.address-container {
|
||||
height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.mobile {
|
||||
margin-top: 60px !important;
|
||||
}
|
||||
|
||||
.reset {
|
||||
background-color: #ABD3B4;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
border: none;
|
||||
}
|
||||
.reset:hover {
|
||||
background-color: #a3c9ab;
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="shortcut icon" href="https://pigjian.com/images/v-distpicker.ico">
|
||||
<title>V - Distpicker Example</title>
|
||||
<link href="//cdn.bootcss.com/prism/9000.0.1/themes/prism.min.css" rel="stylesheet">
|
||||
<link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet">
|
||||
<script src="//cdn.bootcss.com/prism/9000.0.1/prism.min.js"></script>
|
||||
<style type="text/css">
|
||||
body { margin: 0; padding: 0; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<a href="https://github.com/jcc/v-distpicker" class="github-corner" aria-label="View source on Github"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#ABD3B4; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="app"></div>
|
||||
<!-- webpack builds are automatically injected -->
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -0,0 +1,7 @@
|
||||
import Vue from 'vue'
|
||||
import App from './App'
|
||||
|
||||
new Vue({
|
||||
el: '#app',
|
||||
render: h => h(App)
|
||||
})
|
||||
@ -0,0 +1,19 @@
|
||||
export = zhAddressParse;
|
||||
declare function zhAddressParse (address: string, option?: zhAddressParse.OptionType): zhAddressParse.ParseResult
|
||||
declare namespace zhAddressParse{
|
||||
export type ParseResult = {
|
||||
province: string,
|
||||
name: string,
|
||||
city: string,
|
||||
area: string,
|
||||
detail: string,
|
||||
phone: string,
|
||||
postalCode: string
|
||||
}
|
||||
|
||||
export type OptionType = {
|
||||
type: 0 | 1,
|
||||
textFilter: string[],
|
||||
nameMaxLength: number
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = require('./dist/zh-address-parse.min');
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,54 @@
|
||||
{
|
||||
"name": "v-distpicker",
|
||||
"description": "A flexible, highly available district selector for picking provinces, cities and districts of China.",
|
||||
"version": "1.2.9",
|
||||
"author": "jcc <changejian@gmail.com>",
|
||||
"license": "MIT",
|
||||
"repository": "jcc/v-distpicker",
|
||||
"main": "dist/v-distpicker.js",
|
||||
"files": [
|
||||
"src",
|
||||
"dist/*.js"
|
||||
],
|
||||
"keywords": [
|
||||
"省份",
|
||||
"城市",
|
||||
"地区",
|
||||
"省市区",
|
||||
"province",
|
||||
"city",
|
||||
"district",
|
||||
"picker",
|
||||
"plugin",
|
||||
"javascript",
|
||||
"development",
|
||||
"vue",
|
||||
"component"
|
||||
],
|
||||
"scripts": {
|
||||
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot --config=./build/webpack.dev.config.js",
|
||||
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules --config=./build/webpack.prod.config.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"vue": "^2.6.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.4.3",
|
||||
"@babel/plugin-transform-runtime": "^7.4.3",
|
||||
"@babel/preset-env": "^7.4.3",
|
||||
"babel-eslint": "^10.0.1",
|
||||
"babel-loader": "^8.0.5",
|
||||
"cross-env": "^3.1.4",
|
||||
"css-loader": "^2.1.1",
|
||||
"eslint": "^4.18.2",
|
||||
"eslint-loader": "^2.1.2",
|
||||
"html-webpack-plugin": "^3.2.0",
|
||||
"url-loader": "^1.1.2",
|
||||
"vue-loader": "^15.7.0",
|
||||
"vue-style-loader": "^4.0.1",
|
||||
"vue-template-compiler": "^2.6.10",
|
||||
"webpack": "^4.29.5",
|
||||
"webpack-cli": "^3.3.0",
|
||||
"webpack-dev-server": "^3.2.1"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
set -e
|
||||
echo "Enter commit message: "
|
||||
read MESSAGE
|
||||
|
||||
echo "Commit $MESSAGE ..."
|
||||
|
||||
# add
|
||||
git add -A
|
||||
|
||||
# npm run lint-staged
|
||||
|
||||
# commit
|
||||
git commit -m "$MESSAGE"
|
||||
git push origin develop
|
||||
@ -0,0 +1,30 @@
|
||||
set -e
|
||||
echo "Enter release version: "
|
||||
read VERSION
|
||||
echo "Enter commit message: "
|
||||
read MESSAGE
|
||||
|
||||
read -p "Releasing $VERSION - are you sure? (y/n)" -n 1 -r
|
||||
echo # (optional) move to a new line
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "Releasing $VERSION ..."
|
||||
|
||||
npm run build
|
||||
npm run build-lib
|
||||
|
||||
git add .
|
||||
git commit -m "$MESSAGE"
|
||||
git push origin develop
|
||||
|
||||
npm version $VERSION --message "build: $VERSION"
|
||||
# commit
|
||||
git checkout master
|
||||
git merge develop
|
||||
git push origin master
|
||||
|
||||
# publish
|
||||
git tag $VERSION -m "release: $VERSION"
|
||||
git push origin "$VERSION"
|
||||
|
||||
git checkout develop
|
||||
fi
|
||||
@ -0,0 +1,114 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<select
|
||||
v-model="province"
|
||||
placeholder="请选择省/市"
|
||||
@change="checkProvince"
|
||||
>
|
||||
<option
|
||||
v-for="(province, p_i) in provinceJson"
|
||||
:key="p_i"
|
||||
:value="province.name"
|
||||
>
|
||||
{{ province.name }}
|
||||
</option>
|
||||
</select>
|
||||
|
||||
<select v-model="city" placeholder="请选择市/区" @change="checkCity">
|
||||
<option v-for="(city, c_i) in cityJson" :key="c_i" :value="city.name">
|
||||
{{ city.name }}
|
||||
</option>
|
||||
</select>
|
||||
<select v-model="area" placeholder="请选择区/县">
|
||||
<option v-for="(area, a_i) in areaJson" :key="a_i" :value="area.name">
|
||||
{{ area.name }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AddressJson from "./lib/address-json";
|
||||
console.log(AddressJson);
|
||||
export default {
|
||||
name: "v-distpicker",
|
||||
props: {
|
||||
// province: { type: [String, Number], default: "" },
|
||||
// city: { type: [String, Number], default: "" },
|
||||
// area: { type: [String, Number], default: "" },
|
||||
// type: { type: String, default: "" },
|
||||
// hideArea: { type: Boolean, default: false },
|
||||
// onlyProvince: { type: Boolean, default: false },
|
||||
// staticPlaceholder: { type: Boolean, default: false },
|
||||
// placeholders: {
|
||||
// type: Object,
|
||||
// default() {
|
||||
// return {
|
||||
// province: "省",
|
||||
// city: "市",
|
||||
// area: "区",
|
||||
// };
|
||||
// },
|
||||
// },
|
||||
// districts: {
|
||||
// type: [Array, Object],
|
||||
// default() {
|
||||
// return DISTRICTS;
|
||||
// },
|
||||
// },
|
||||
// disabled: { type: Boolean, default: false },
|
||||
// provinceDisabled: { type: Boolean, default: false },
|
||||
// cityDisabled: { type: Boolean, default: false },
|
||||
// areaDisabled: { type: Boolean, default: false },
|
||||
// addressHeader: { type: String, default: "address-header" },
|
||||
// addressContainer: { type: String, default: "address-container" },
|
||||
// wrapper: { type: String, default: "distpicker-address-wrapper" },
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
provinceJson: AddressJson,
|
||||
cityJson: [],
|
||||
areaJson: [],
|
||||
codes: [],
|
||||
province: "",
|
||||
city: "",
|
||||
area: "",
|
||||
// tab: 1,
|
||||
// showCityTab: false,
|
||||
// showAreaTab: false,
|
||||
// provinces: [],
|
||||
// cities: [],
|
||||
// areas: [],
|
||||
// currentProvince:
|
||||
// this.determineType(this.province) || this.placeholders.province,
|
||||
// currentCity: this.determineType(this.city) || this.placeholders.city,
|
||||
// currentArea: this.determineType(this.area) || this.placeholders.area,
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
watch: {},
|
||||
methods: {
|
||||
// 选择省
|
||||
checkProvince(e, a) {
|
||||
console.log(e, a);
|
||||
console.log(this.province);
|
||||
this.provinceJson.forEach((element) => {
|
||||
if (element.name == this.province) {
|
||||
this.cityJson = element.children;
|
||||
this.areaJson = [];
|
||||
}
|
||||
});
|
||||
},
|
||||
// 选择市
|
||||
checkCity(e, a) {
|
||||
console.log(e, a);
|
||||
console.log(this.city);
|
||||
this.cityJson.forEach((element) => {
|
||||
if (element.name == this.city) {
|
||||
this.areaJson = element.children;
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,5 @@
|
||||
import VDistpicker from './Distpicker'
|
||||
import AddressParse from './lib/address-parse'
|
||||
import AddressJson from './lib/address-json'
|
||||
|
||||
export default {VDistpicker,AddressParse,AddressJson}
|
||||
@ -0,0 +1,18 @@
|
||||
// import zhCnNames from './names'
|
||||
// import addressJson from './provinceList'
|
||||
|
||||
const AddressJson=require('./provinceList.json')
|
||||
const filterCity = ['行政区划']
|
||||
AddressJson.forEach(item => {
|
||||
if (item.children) {
|
||||
item.children.forEach((city, cityIndex) => {
|
||||
const index = ~filterCity.findIndex(filter => ~city.name.indexOf(filter))
|
||||
if (index) {
|
||||
item.children = item.children.concat(city.children || [])
|
||||
item.children.splice(cityIndex, 1)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
export default AddressJson
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,185 @@
|
||||
import cheerio from 'cheerio'
|
||||
import http from 'http'
|
||||
import path from 'path'
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
const Province = () => ({
|
||||
code: '',
|
||||
name: '',
|
||||
children: []
|
||||
})
|
||||
|
||||
const Area = () => ({
|
||||
code: '',
|
||||
name: '',
|
||||
})
|
||||
|
||||
const City = () => ({
|
||||
code: '',
|
||||
name: '',
|
||||
children: []
|
||||
})
|
||||
|
||||
class GetMcaGovData {
|
||||
sourceUrl = ''
|
||||
headerClass = ''
|
||||
cityClass = ''
|
||||
constructor(sourceUrl, headerClass, cityClass) {
|
||||
this.sourceUrl = sourceUrl
|
||||
this.headerClass = headerClass
|
||||
this.cityClass = cityClass
|
||||
}
|
||||
|
||||
loadData = () => {
|
||||
if (!this.sourceUrl) {
|
||||
throw new Error('not set the url of parser !')
|
||||
}
|
||||
if (!this.headerClass || !this.cityClass) {
|
||||
throw new Error('not set the city or header class of header !')
|
||||
}
|
||||
try {
|
||||
http.get(this.sourceUrl, (res) => {
|
||||
// 设置编码
|
||||
res.setEncoding('utf8');
|
||||
// 当接收到数据时,会触发 'data' 事件的执行
|
||||
let html = "";
|
||||
res.on('data', (data) => {
|
||||
html += data;
|
||||
});
|
||||
// 数据接收完毕,会触发 'end' 事件的执行
|
||||
res.on('end', () => {
|
||||
const $ = cheerio.load(html);
|
||||
|
||||
// 去除里面的空格和空值
|
||||
let elementsArea = $('.' + this.cityClass)
|
||||
// 注意这里的filter用的是cheerio的filter不是es6的
|
||||
elementsArea = elementsArea.filter((index, item) => $(item).text().trim())
|
||||
|
||||
let elementsProAndCity = $('.' + this.headerClass)
|
||||
elementsProAndCity = elementsProAndCity.filter((index, item) => $(item).text().trim())
|
||||
|
||||
console.log('省市总计数量:' + elementsProAndCity.length / 2)
|
||||
console.log('区总计数量:' + elementsArea.length / 2)
|
||||
let total = (elementsArea.length + elementsProAndCity.length) / 2
|
||||
console.log('省市区总计数量:' + total)
|
||||
|
||||
const listProvince = []
|
||||
for(let i = 0; i <= elementsProAndCity.length; i += 2) {
|
||||
const codeOrName = $(elementsProAndCity[i]).text().trim()
|
||||
const next = $(elementsProAndCity[i + 1]).text().trim()
|
||||
if (/\d/.test(codeOrName)) {
|
||||
// 省份
|
||||
if (codeOrName.endsWith('0000')) {
|
||||
const province = new Province()
|
||||
province.name = next
|
||||
province.code = codeOrName
|
||||
province.children = province.children || []
|
||||
listProvince.push(province)
|
||||
} else { // 市
|
||||
const city = new City()
|
||||
city.name = next
|
||||
city.code = codeOrName
|
||||
city.children = city.children || []
|
||||
|
||||
// 省份前缀
|
||||
const prefixProvinceCode = codeOrName.substring(0, 2)
|
||||
// 市区前缀
|
||||
const prefixCityCode = codeOrName.substring(2, 4)
|
||||
const provinceRegexp = new RegExp(`^${prefixProvinceCode}`)
|
||||
// 市前缀匹配,加入到省份里面
|
||||
const province = listProvince.find(item => {
|
||||
return provinceRegexp.test(item.code)
|
||||
})
|
||||
province && province.children.push(city)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 处理区和县
|
||||
listProvince.forEach(item => {
|
||||
// 省份前缀
|
||||
const prefixProvinceCode = item.code.substring(0, 2)
|
||||
const cityList = item.children
|
||||
|
||||
// 对于区,一个个处理,处理一个删除一个
|
||||
do {
|
||||
let codeOrName = $(elementsArea[0]).text().trim()
|
||||
let next = $(elementsArea[1]).text().trim()
|
||||
|
||||
// 匹配省份
|
||||
let regExp = new RegExp(`^${prefixProvinceCode}`)
|
||||
if (/\d/.test(codeOrName)) {
|
||||
if (regExp.test(codeOrName)) {
|
||||
const area = new Area()
|
||||
area.code = codeOrName
|
||||
area.name = next
|
||||
|
||||
// 取区中间两位市的代号
|
||||
const prefixCityCode = codeOrName.substring(2, 4)
|
||||
regExp = new RegExp(`^${prefixProvinceCode}${prefixCityCode}`)
|
||||
|
||||
// 找出市,找到就加入到市里的下面的区
|
||||
const currentCity = cityList.find(cityItem => regExp.test(cityItem.code) && cityItem.code.endsWith('00'))
|
||||
if (cityList.length && currentCity) {
|
||||
currentCity.children.push(area)
|
||||
} else {
|
||||
// 解析直辖市下面的区和县
|
||||
if (cityList.length === 0) {
|
||||
const city = new City()
|
||||
city.name = item.name
|
||||
city.code = item.code
|
||||
city.children.push(area)
|
||||
cityList.push(city)
|
||||
} else {
|
||||
cityList[0].children.push(area)
|
||||
}
|
||||
}
|
||||
elementsArea.splice(0, 2)
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
} while (elementsArea.length > 0)
|
||||
})
|
||||
|
||||
let i = 0
|
||||
listProvince.forEach(p => {
|
||||
i++
|
||||
p.children.forEach(c => {
|
||||
i++
|
||||
c.children && c.children.forEach(a => {
|
||||
i++
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
// 多了4个直辖市
|
||||
const parseTotal = i - 4
|
||||
console.log('解析完成总计数量:' + parseTotal, total)
|
||||
console.log('解析数量是否相等:' + (parseTotal === total ? '相等' : '不相等'))
|
||||
|
||||
if (parseTotal === total) {
|
||||
fs.writeFile(path.join(__dirname, 'provinceList.json'), JSON.stringify(listProvince), function(err) {
|
||||
if (err)
|
||||
return;
|
||||
console.log('导出成功')
|
||||
});
|
||||
} else {
|
||||
throw new Error('解析前后数量不相等,解析失败!')
|
||||
}
|
||||
})
|
||||
});
|
||||
} catch (e) {
|
||||
throw new Error('parse with error !')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// headerClass和cityClass在统计局的官网查看css的class
|
||||
const data = new GetMcaGovData(
|
||||
'http://www.mca.gov.cn/article/sj/xzqh/2020/2020/2020112010001.html',
|
||||
'xl7014987',
|
||||
'xl7114987'
|
||||
)
|
||||
data.loadData()
|
||||
@ -0,0 +1,506 @@
|
||||
[
|
||||
"赵",
|
||||
"钱",
|
||||
"孙",
|
||||
"李",
|
||||
"周",
|
||||
"吴",
|
||||
"郑",
|
||||
"王",
|
||||
"冯",
|
||||
"陈",
|
||||
"楮",
|
||||
"卫",
|
||||
"蒋",
|
||||
"沈",
|
||||
"韩",
|
||||
"杨",
|
||||
"朱",
|
||||
"秦",
|
||||
"尤",
|
||||
"许",
|
||||
"何",
|
||||
"吕",
|
||||
"施",
|
||||
"张",
|
||||
"孔",
|
||||
"曹",
|
||||
"严",
|
||||
"华",
|
||||
"金",
|
||||
"魏",
|
||||
"陶",
|
||||
"姜",
|
||||
"戚",
|
||||
"谢",
|
||||
"邹",
|
||||
"喻",
|
||||
"柏",
|
||||
"水",
|
||||
"窦",
|
||||
"章",
|
||||
"云",
|
||||
"苏",
|
||||
"潘",
|
||||
"葛",
|
||||
"奚",
|
||||
"范",
|
||||
"彭",
|
||||
"郎",
|
||||
"鲁",
|
||||
"韦",
|
||||
"昌",
|
||||
"马",
|
||||
"苗",
|
||||
"凤",
|
||||
"花",
|
||||
"方",
|
||||
"俞",
|
||||
"任",
|
||||
"袁",
|
||||
"柳",
|
||||
"酆",
|
||||
"鲍",
|
||||
"史",
|
||||
"唐",
|
||||
"费",
|
||||
"廉",
|
||||
"岑",
|
||||
"薛",
|
||||
"雷",
|
||||
"贺",
|
||||
"倪",
|
||||
"汤",
|
||||
"滕",
|
||||
"殷",
|
||||
"罗",
|
||||
"毕",
|
||||
"郝",
|
||||
"邬",
|
||||
"安",
|
||||
"常",
|
||||
"乐",
|
||||
"于",
|
||||
"时",
|
||||
"傅",
|
||||
"皮",
|
||||
"卞",
|
||||
"齐",
|
||||
"康",
|
||||
"伍",
|
||||
"余",
|
||||
"元",
|
||||
"卜",
|
||||
"顾",
|
||||
"孟",
|
||||
"平",
|
||||
"黄",
|
||||
"和",
|
||||
"穆",
|
||||
"萧",
|
||||
"尹",
|
||||
"姚",
|
||||
"邵",
|
||||
"湛",
|
||||
"汪",
|
||||
"祁",
|
||||
"毛",
|
||||
"禹",
|
||||
"狄",
|
||||
"米",
|
||||
"贝",
|
||||
"明",
|
||||
"臧",
|
||||
"计",
|
||||
"伏",
|
||||
"成",
|
||||
"戴",
|
||||
"谈",
|
||||
"宋",
|
||||
"茅",
|
||||
"庞",
|
||||
"熊",
|
||||
"纪",
|
||||
"舒",
|
||||
"屈",
|
||||
"项",
|
||||
"祝",
|
||||
"董",
|
||||
"梁",
|
||||
"杜",
|
||||
"阮",
|
||||
"蓝",
|
||||
"闽",
|
||||
"席",
|
||||
"季",
|
||||
"麻",
|
||||
"强",
|
||||
"贾",
|
||||
"路",
|
||||
"娄",
|
||||
"危",
|
||||
"江",
|
||||
"童",
|
||||
"颜",
|
||||
"郭",
|
||||
"梅",
|
||||
"盛",
|
||||
"林",
|
||||
"刁",
|
||||
"锺",
|
||||
"徐",
|
||||
"丘",
|
||||
"骆",
|
||||
"高",
|
||||
"夏",
|
||||
"蔡",
|
||||
"田",
|
||||
"樊",
|
||||
"胡",
|
||||
"凌",
|
||||
"霍",
|
||||
"虞",
|
||||
"万",
|
||||
"支",
|
||||
"柯",
|
||||
"昝",
|
||||
"管",
|
||||
"卢",
|
||||
"莫",
|
||||
"经",
|
||||
"房",
|
||||
"裘",
|
||||
"缪",
|
||||
"干",
|
||||
"解",
|
||||
"应",
|
||||
"宗",
|
||||
"丁",
|
||||
"宣",
|
||||
"贲",
|
||||
"邓",
|
||||
"郁",
|
||||
"单",
|
||||
"杭",
|
||||
"洪",
|
||||
"包",
|
||||
"诸",
|
||||
"左",
|
||||
"石",
|
||||
"崔",
|
||||
"吉",
|
||||
"钮",
|
||||
"龚",
|
||||
"程",
|
||||
"嵇",
|
||||
"邢",
|
||||
"滑",
|
||||
"裴",
|
||||
"陆",
|
||||
"荣",
|
||||
"翁",
|
||||
"荀",
|
||||
"羊",
|
||||
"於",
|
||||
"惠",
|
||||
"甄",
|
||||
"麹",
|
||||
"家",
|
||||
"封",
|
||||
"芮",
|
||||
"羿",
|
||||
"储",
|
||||
"靳",
|
||||
"汲",
|
||||
"邴",
|
||||
"糜",
|
||||
"松",
|
||||
"井",
|
||||
"段",
|
||||
"富",
|
||||
"巫",
|
||||
"乌",
|
||||
"焦",
|
||||
"巴",
|
||||
"弓",
|
||||
"牧",
|
||||
"隗",
|
||||
"山",
|
||||
"谷",
|
||||
"车",
|
||||
"侯",
|
||||
"宓",
|
||||
"蓬",
|
||||
"全",
|
||||
"郗",
|
||||
"班",
|
||||
"仰",
|
||||
"秋",
|
||||
"仲",
|
||||
"伊",
|
||||
"宫",
|
||||
"宁",
|
||||
"仇",
|
||||
"栾",
|
||||
"暴",
|
||||
"甘",
|
||||
"斜",
|
||||
"厉",
|
||||
"戎",
|
||||
"祖",
|
||||
"武",
|
||||
"符",
|
||||
"刘",
|
||||
"景",
|
||||
"詹",
|
||||
"束",
|
||||
"龙",
|
||||
"叶",
|
||||
"幸",
|
||||
"司",
|
||||
"韶",
|
||||
"郜",
|
||||
"黎",
|
||||
"蓟",
|
||||
"薄",
|
||||
"印",
|
||||
"宿",
|
||||
"白",
|
||||
"怀",
|
||||
"蒲",
|
||||
"邰",
|
||||
"从",
|
||||
"鄂",
|
||||
"索",
|
||||
"咸",
|
||||
"籍",
|
||||
"赖",
|
||||
"卓",
|
||||
"蔺",
|
||||
"屠",
|
||||
"蒙",
|
||||
"池",
|
||||
"乔",
|
||||
"阴",
|
||||
"郁",
|
||||
"胥",
|
||||
"能",
|
||||
"苍",
|
||||
"双",
|
||||
"闻",
|
||||
"莘",
|
||||
"党",
|
||||
"翟",
|
||||
"谭",
|
||||
"贡",
|
||||
"劳",
|
||||
"逄",
|
||||
"姬",
|
||||
"申",
|
||||
"扶",
|
||||
"堵",
|
||||
"冉",
|
||||
"宰",
|
||||
"郦",
|
||||
"雍",
|
||||
"郤",
|
||||
"璩",
|
||||
"桑",
|
||||
"桂",
|
||||
"濮",
|
||||
"牛",
|
||||
"寿",
|
||||
"通",
|
||||
"边",
|
||||
"扈",
|
||||
"燕",
|
||||
"冀",
|
||||
"郏",
|
||||
"浦",
|
||||
"尚",
|
||||
"农",
|
||||
"温",
|
||||
"别",
|
||||
"庄",
|
||||
"晏",
|
||||
"柴",
|
||||
"瞿",
|
||||
"阎",
|
||||
"充",
|
||||
"慕",
|
||||
"连",
|
||||
"茹",
|
||||
"习",
|
||||
"宦",
|
||||
"艾",
|
||||
"鱼",
|
||||
"容",
|
||||
"向",
|
||||
"古",
|
||||
"易",
|
||||
"慎",
|
||||
"戈",
|
||||
"廖",
|
||||
"庾",
|
||||
"终",
|
||||
"暨",
|
||||
"居",
|
||||
"衡",
|
||||
"步",
|
||||
"都",
|
||||
"耿",
|
||||
"满",
|
||||
"弘",
|
||||
"匡",
|
||||
"国",
|
||||
"文",
|
||||
"寇",
|
||||
"广",
|
||||
"禄",
|
||||
"阙",
|
||||
"东",
|
||||
"欧",
|
||||
"殳",
|
||||
"沃",
|
||||
"利",
|
||||
"蔚",
|
||||
"越",
|
||||
"夔",
|
||||
"隆",
|
||||
"师",
|
||||
"巩",
|
||||
"厍",
|
||||
"聂",
|
||||
"晁",
|
||||
"勾",
|
||||
"敖",
|
||||
"融",
|
||||
"冷",
|
||||
"訾",
|
||||
"辛",
|
||||
"阚",
|
||||
"那",
|
||||
"简",
|
||||
"饶",
|
||||
"空",
|
||||
"曾",
|
||||
"毋",
|
||||
"沙",
|
||||
"乜",
|
||||
"养",
|
||||
"鞠",
|
||||
"须",
|
||||
"丰",
|
||||
"巢",
|
||||
"关",
|
||||
"蒯",
|
||||
"相",
|
||||
"查",
|
||||
"后",
|
||||
"荆",
|
||||
"红",
|
||||
"游",
|
||||
"竺",
|
||||
"权",
|
||||
"逑",
|
||||
"盖",
|
||||
"益",
|
||||
"桓",
|
||||
"公",
|
||||
"万俟",
|
||||
"司马",
|
||||
"上官",
|
||||
"欧阳",
|
||||
"夏侯",
|
||||
"诸葛",
|
||||
"闻人",
|
||||
"东方",
|
||||
"赫连",
|
||||
"皇甫",
|
||||
"尉迟",
|
||||
"公羊",
|
||||
"澹台",
|
||||
"公冶",
|
||||
"宗政",
|
||||
"濮阳",
|
||||
"淳于",
|
||||
"单于",
|
||||
"太叔",
|
||||
"申屠",
|
||||
"公孙",
|
||||
"仲孙",
|
||||
"轩辕",
|
||||
"令狐",
|
||||
"锺离",
|
||||
"宇文",
|
||||
"长孙",
|
||||
"慕容",
|
||||
"鲜于",
|
||||
"闾丘",
|
||||
"司徒",
|
||||
"司空",
|
||||
"丌官",
|
||||
"司寇",
|
||||
"仉",
|
||||
"督",
|
||||
"子车",
|
||||
"颛孙",
|
||||
"端木",
|
||||
"巫马",
|
||||
"公西",
|
||||
"漆雕",
|
||||
"乐正",
|
||||
"壤驷",
|
||||
"公良",
|
||||
"拓拔",
|
||||
"夹谷",
|
||||
"宰父",
|
||||
"谷梁",
|
||||
"晋",
|
||||
"楚",
|
||||
"阎",
|
||||
"法",
|
||||
"汝",
|
||||
"鄢",
|
||||
"涂",
|
||||
"钦",
|
||||
"段干",
|
||||
"百里",
|
||||
"东郭",
|
||||
"南门",
|
||||
"呼延",
|
||||
"归",
|
||||
"海",
|
||||
"羊舌",
|
||||
"微生",
|
||||
"岳",
|
||||
"帅",
|
||||
"缑",
|
||||
"亢",
|
||||
"况",
|
||||
"后",
|
||||
"有",
|
||||
"琴",
|
||||
"梁丘",
|
||||
"左丘",
|
||||
"东门",
|
||||
"西门",
|
||||
"商",
|
||||
"牟",
|
||||
"佘",
|
||||
"佴",
|
||||
"伯",
|
||||
"赏",
|
||||
"南宫",
|
||||
"墨",
|
||||
"哈",
|
||||
"谯",
|
||||
"笪",
|
||||
"年",
|
||||
"爱",
|
||||
"阳",
|
||||
"佟",
|
||||
"第五",
|
||||
"言",
|
||||
"福"
|
||||
]
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
[{"code":"11","name":"北京市"},{"code":"12","name":"天津市"},{"code":"13","name":"河北省"},{"code":"14","name":"山西省"},{"code":"15","name":"内蒙古自治区"},{"code":"21","name":"辽宁省"},{"code":"22","name":"吉林省"},{"code":"23","name":"黑龙江省"},{"code":"31","name":"上海市"},{"code":"32","name":"江苏省"},{"code":"33","name":"浙江省"},{"code":"34","name":"安徽省"},{"code":"35","name":"福建省"},{"code":"36","name":"江西省"},{"code":"37","name":"山东省"},{"code":"41","name":"河南省"},{"code":"42","name":"湖北省"},{"code":"43","name":"湖南省"},{"code":"44","name":"广东省"},{"code":"45","name":"广西壮族自治区"},{"code":"46","name":"海南省"},{"code":"50","name":"重庆市"},{"code":"51","name":"四川省"},{"code":"52","name":"贵州省"},{"code":"53","name":"云南省"},{"code":"54","name":"西藏自治区"},{"code":"61","name":"陕西省"},{"code":"62","name":"甘肃省"},{"code":"63","name":"青海省"},{"code":"64","name":"宁夏回族自治区"},{"code":"65","name":"新疆维吾尔自治区"}]
|
||||
Loading…
Reference in new issue