diff --git a/deploy/bin/deploy.sh b/deploy/bin/deploy.sh index 7f3dc7a2b4cf007ecc80a2811b6028159376f6b5..fa85790615bb2698adf52d45644e74c7ff969be7 100644 --- a/deploy/bin/deploy.sh +++ b/deploy/bin/deploy.sh @@ -1,12 +1,12 @@ -#!/bin/bash - -# 本脚本的作用是停止当前Spring Boot应用,然后再次部署 -PID=$(ps -ef | grep litemall.jar | grep -v grep | awk '{ print $2 }') - -if [ ! -z "$PID" ] -then - kill $PID -fi - -cd /home/ubuntu/deploy/litemall || exit 2 -nohup java -jar litemall.jar > log.log 2>&1 & \ No newline at end of file +##!/bin/bash +# +## 本脚本的作用是停止当前Spring Boot应用,然后再次部署 +#PID=$(ps -ef | grep litemall.jar | grep -v grep | awk '{ print $2 }') +# +#if [ ! -z "$PID" ] +#then +# kill $PID +#fi +# +#cd /home/ubuntu/deploy/litemall || exit 2 +#nohup java -jar litemall.jar > log.log 2>&1 & \ No newline at end of file diff --git a/deploy/bin/reset.sh b/deploy/bin/reset.sh index aeea43a56a7a100317cc2d73830492f987eab3f8..a762db6b75895e5476e2397ce3bd009133f9b5f9 100644 --- a/deploy/bin/reset.sh +++ b/deploy/bin/reset.sh @@ -1,32 +1,32 @@ -#!/bin/bash - -# 本脚本的作用是重置部署环境 -# 1.重置数据库 -# 2.删除storage文件夹内文件 -# 3.调用deploy.sh启动服务 -# 注意:由于1和2的原因,请仅在开发测试阶段使用本脚本! - -# 重置数据库 -# i. 请在`XXXXXX`处设置相应的root密码 -# ii. 同时请注意root密码放在脚本是非常危险的,因此这里仅仅是用于开发测试阶段。 -ROOT=root -PASSWORD= - -if test -z "$PASSWORD" -then - echo "请设置云服务器MySQL的root账号密码" - exit 1 -fi - -# 导入数据 -cd /home/ubuntu/deploy/db || exit 2 -mysql -h localhost -u $ROOT -p$PASSWORD < litemall.sql - -# 删除storage文件夹内文件 -cd /home/ubuntu/deploy/litemall/storage || exit 2 -rm -f ./** - -# 重新部署服务 -cd /home/ubuntu/deploy/bin || exit 2 -sudo ./stop.sh -sudo ./deploy.sh \ No newline at end of file +##!/bin/bash +# +## 本脚本的作用是重置部署环境 +## 1.重置数据库 +## 2.删除storage文件夹内文件 +## 3.调用deploy.sh启动服务 +## 注意:由于1和2的原因,请仅在开发测试阶段使用本脚本! +# +## 重置数据库 +## i. 请在`XXXXXX`处设置相应的root密码 +## ii. 同时请注意root密码放在脚本是非常危险的,因此这里仅仅是用于开发测试阶段。 +#ROOT=root +#PASSWORD= +# +#if test -z "$PASSWORD" +#then +# echo "请设置云服务器MySQL的root账号密码" +# exit 1 +#fi +# +## 导入数据 +#cd /home/ubuntu/deploy/db || exit 2 +#mysql -h localhost -u $ROOT -p$PASSWORD < litemall.sql +# +## 删除storage文件夹内文件 +#cd /home/ubuntu/deploy/litemall/storage || exit 2 +#rm -f ./** +# +## 重新部署服务 +#cd /home/ubuntu/deploy/bin || exit 2 +#sudo ./stop.sh +#sudo ./deploy.sh \ No newline at end of file diff --git a/deploy/bin/stop.sh b/deploy/bin/stop.sh index 82ab3f5f3b67cc494f58199cd163d148634b80b1..3842bd9340c087daf92c2ee00c35bc220fd85b0a 100644 --- a/deploy/bin/stop.sh +++ b/deploy/bin/stop.sh @@ -1,8 +1,8 @@ -#!/bin/bash - -PID=$(ps -ef | grep litemall.jar | grep -v grep | awk '{ print $2 }') - -if [ ! -z "$PID" ] -then - kill $PID -fi \ No newline at end of file +##!/bin/bash +# +#PID=$(ps -ef | grep litemall.jar | grep -v grep | awk '{ print $2 }') +# +#if [ ! -z "$PID" ] +#then +# kill $PID +#fi \ No newline at end of file diff --git a/deploy/litemall/application.yml b/deploy/litemall/application.yml index 4ef7446b6a5f643f9061c273d29825891dcb4983..149c20e01c23c1bb946ce7ebc4571ca6f5094196 100644 --- a/deploy/litemall/application.yml +++ b/deploy/litemall/application.yml @@ -5,10 +5,14 @@ spring: encoding: UTF-8 datasource: druid: - url: jdbc:mysql://localhost:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false - driver-class-name: com.mysql.cj.jdbc.Driver - username: litemall - password: litemall123456 +# url: jdbc:mysql://124.222.53.90:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false +# driver-class-name: com.mysql.cj.jdbc.Driver +# username: mysql +# password: czy@2024 +# url: jdbc:mysql://127.0.0.1:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false +# driver-class-name: com.mysql.cj.jdbc.Driver +# username: root +# password: xnai@QWE123 initial-size: 10 max-active: 50 min-idle: 10 diff --git a/deploy/util/lazy.sh b/deploy/util/lazy.sh index 04646e6368a772f577145e741281f26b02d5562e..188b63f92af9b2702c9ec1078bc55389c7cfffaa 100644 --- a/deploy/util/lazy.sh +++ b/deploy/util/lazy.sh @@ -1,52 +1,52 @@ -#!/bin/bash - -# 本脚本的作用是 -# 1. 项目打包 -# 2. 上传云服务器 -# 3. 远程登录云服务器并执行reset脚本 - -# 请设置云服务器的IP地址和账户 -# 例如 ubuntu@122.51.199.160 -REMOTE= -# 请设置本地SSH私钥文件id_rsa路径 -# 例如 /home/litemall/id_rsa -ID_RSA= - -if test -z "$REMOTE" -then - echo "请设置云服务器登录IP地址和账户" - exit 1 -fi - -if test -z "$ID_RSA" -then - echo "请设置云服务器登录IP地址和账户" - exit 1 -fi - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -cd $DIR/../.. || exit 2 -LITEMALL_HOME=$PWD -echo "LITEMALL_HOME $LITEMALL_HOME" - -# 项目打包 -cd $LITEMALL_HOME || exit 2 -./deploy/util/package.sh - -# 上传云服务器 -cd $LITEMALL_HOME || exit 2 -scp -i $ID_RSA -r ./deploy $REMOTE:/home/ubuntu/ - -# 远程登录云服务器并执行reset脚本 -# 这里使用tr命令,因为有可能deploy.sh和reset.sh的换行格式是CRLF,而LINUX环境应该是LF -ssh $REMOTE -i $ID_RSA << eeooff -cd /home/ubuntu/deploy/bin -cat deploy.sh | tr -d '\r' > deploy2.sh -mv deploy2.sh deploy.sh -chmod +x deploy.sh -cat reset.sh | tr -d '\r' > reset2.sh -mv reset2.sh reset.sh -chmod +x reset.sh -sudo ./reset.sh -exit -eeooff \ No newline at end of file +##!/bin/bash +# +## 本脚本的作用是 +## 1. 项目打包 +## 2. 上传云服务器 +## 3. 远程登录云服务器并执行reset脚本 +# +## 请设置云服务器的IP地址和账户 +## 例如 ubuntu@122.51.199.160 +#REMOTE= +## 请设置本地SSH私钥文件id_rsa路径 +## 例如 /home/litemall/id_rsa +#ID_RSA= +# +#if test -z "$REMOTE" +#then +# echo "请设置云服务器登录IP地址和账户" +# exit 1 +#fi +# +#if test -z "$ID_RSA" +#then +# echo "请设置云服务器登录IP地址和账户" +# exit 1 +#fi +# +#DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +#cd $DIR/../.. || exit 2 +#LITEMALL_HOME=$PWD +#echo "LITEMALL_HOME $LITEMALL_HOME" +# +## 项目打包 +#cd $LITEMALL_HOME || exit 2 +#./deploy/util/package.sh +# +## 上传云服务器 +#cd $LITEMALL_HOME || exit 2 +#scp -i $ID_RSA -r ./deploy $REMOTE:/home/ubuntu/ +# +## 远程登录云服务器并执行reset脚本 +## 这里使用tr命令,因为有可能deploy.sh和reset.sh的换行格式是CRLF,而LINUX环境应该是LF +#ssh $REMOTE -i $ID_RSA << eeooff +#cd /home/ubuntu/deploy/bin +#cat deploy.sh | tr -d '\r' > deploy2.sh +#mv deploy2.sh deploy.sh +#chmod +x deploy.sh +#cat reset.sh | tr -d '\r' > reset2.sh +#mv reset2.sh reset.sh +#chmod +x reset.sh +#sudo ./reset.sh +#exit +#eeooff \ No newline at end of file diff --git a/deploy/util/package.sh b/deploy/util/package.sh index 7db190d27e0bf2d996ddb6c5e758581ef5b8422a..2e2874bc489bd7271fda8f2a424a511362ca61f5 100644 --- a/deploy/util/package.sh +++ b/deploy/util/package.sh @@ -1,31 +1,31 @@ -#!/bin/bash - -# 请注意 -# 本脚本的作用是把本项目编译的结果保存到deploy文件夹中 -# 1. 把项目数据库文件拷贝到deploy/db -# 2. 编译litemall-admin -# 3. 编译litemall-all模块,然后拷贝到deploy/litemall - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -cd $DIR/../.. -LITEMALL_HOME=$PWD -echo "LITEMALL_HOME $LITEMALL_HOME" - -# 复制数据库 -cat $LITEMALL_HOME/litemall-db/sql/litemall_schema.sql > $LITEMALL_HOME/deploy/db/litemall.sql -cat $LITEMALL_HOME/litemall-db/sql/litemall_table.sql >> $LITEMALL_HOME/deploy/db/litemall.sql -cat $LITEMALL_HOME/litemall-db/sql/litemall_data.sql >> $LITEMALL_HOME/deploy/db/litemall.sql - -# 打包litemall-admin -cd $LITEMALL_HOME/litemall-admin -npm install --registry=https://registry.npm.taobao.org -npm run build:dep - -# 打包litemall-vue -cd $LITEMALL_HOME/litemall-vue -npm install --registry=https://registry.npm.taobao.org -npm run build:dep - -cd $LITEMALL_HOME -mvn clean package -cp -f $LITEMALL_HOME/litemall-all/target/litemall-all-*-exec.jar $LITEMALL_HOME/deploy/litemall/litemall.jar \ No newline at end of file +##!/bin/bash +# +## 请注意 +## 本脚本的作用是把本项目编译的结果保存到deploy文件夹中 +## 1. 把项目数据库文件拷贝到deploy/db +## 2. 编译litemall-admin +## 3. 编译litemall-all模块,然后拷贝到deploy/litemall +# +#DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +#cd $DIR/../.. +#LITEMALL_HOME=$PWD +#echo "LITEMALL_HOME $LITEMALL_HOME" +# +## 复制数据库 +#cat $LITEMALL_HOME/litemall-db/sql/litemall_schema.sql > $LITEMALL_HOME/deploy/db/litemall.sql +#cat $LITEMALL_HOME/litemall-db/sql/litemall_table.sql >> $LITEMALL_HOME/deploy/db/litemall.sql +#cat $LITEMALL_HOME/litemall-db/sql/litemall_data.sql >> $LITEMALL_HOME/deploy/db/litemall.sql +# +## 打包litemall-admin +#cd $LITEMALL_HOME/litemall-admin +#npm install --registry=https://registry.npm.taobao.org +#npm run build:dep +# +## 打包litemall-vue +#cd $LITEMALL_HOME/litemall-vue +#npm install --registry=https://registry.npm.taobao.org +#npm run build:dep +# +#cd $LITEMALL_HOME +#mvn clean package +#cp -f $LITEMALL_HOME/litemall-all/target/litemall-all-*-exec.jar $LITEMALL_HOME/deploy/litemall/litemall.jar \ No newline at end of file diff --git a/docker/bin/deploy.sh b/docker/bin/deploy.sh index 9182a2b5598d585d1e431d1430aa0fa3395c6f45..98309f0c44c6c25abba0b4eb1fa676e59314b49a 100644 --- a/docker/bin/deploy.sh +++ b/docker/bin/deploy.sh @@ -1,7 +1,7 @@ -#!/bin/bash - -cd /home/ubuntu/docker -sudo docker-compose down -sudo docker-compose build -sudo docker image prune -f -sudo docker-compose up -d +##!/bin/bash +# +#cd /home/ubuntu/docker +#sudo docker-compose down +#sudo docker-compose build +#sudo docker image prune -f +#sudo docker-compose up -d diff --git a/docker/bin/reset.sh b/docker/bin/reset.sh index e9cfaa016d07f76e77c371f8ce874ef0ccb6bd44..d5b9162acb433ca5d037fdef013ac2706a0954c9 100644 --- a/docker/bin/reset.sh +++ b/docker/bin/reset.sh @@ -1,36 +1,36 @@ -#!/bin/bash - -# 本脚本的作用是重置部署环境 -# 1.重置数据库 -# 2.删除storage文件夹内文件 -# 3.调用deploy.sh启动服务 -# 注意:由于1和2的原因,请仅在开发测试阶段使用本脚本! - -# 重置数据库 -# i. 请在`XXXXXX`处设置相应的root密码 -# ii. 同时请注意root密码放在脚本是非常危险的,因此这里仅仅是用于开发测试阶段。 -ROOT=root -PASSWORD=litemall123456 - -if test -z "$PASSWORD" -then - echo "请设置云服务器MySQL的root账号密码" - exit 1 -fi - -# 删除storage文件夹内文件 -cd /home/ubuntu/docker/litemall/storage || exit 2 -sudo rm -f ./** - -cd /home/ubuntu/docker || exit 3 -sudo docker-compose down -sudo docker-compose build -sudo docker image prune -f - -# 删除db/data文件夹内文件重置数据 -# 这样docker启动时会自动运行db/init-sql脚本,导入新的数据 -cd /home/ubuntu/docker/db/data || exit 1 -sudo rm -rf ./** - -cd /home/ubuntu/docker || exit 3 -sudo docker-compose up -d +##!/bin/bash +# +## 本脚本的作用是重置部署环境 +## 1.重置数据库 +## 2.删除storage文件夹内文件 +## 3.调用deploy.sh启动服务 +## 注意:由于1和2的原因,请仅在开发测试阶段使用本脚本! +# +## 重置数据库 +## i. 请在`XXXXXX`处设置相应的root密码 +## ii. 同时请注意root密码放在脚本是非常危险的,因此这里仅仅是用于开发测试阶段。 +#ROOT=root +#PASSWORD=litemall123456 +# +#if test -z "$PASSWORD" +#then +# echo "请设置云服务器MySQL的root账号密码" +# exit 1 +#fi +# +## 删除storage文件夹内文件 +#cd /home/ubuntu/docker/litemall/storage || exit 2 +#sudo rm -f ./** +# +#cd /home/ubuntu/docker || exit 3 +#sudo docker-compose down +#sudo docker-compose build +#sudo docker image prune -f +# +## 删除db/data文件夹内文件重置数据 +## 这样docker启动时会自动运行db/init-sql脚本,导入新的数据 +#cd /home/ubuntu/docker/db/data || exit 1 +#sudo rm -rf ./** +# +#cd /home/ubuntu/docker || exit 3 +#sudo docker-compose up -d diff --git a/docker/util/lazy.sh b/docker/util/lazy.sh index 2ac2bd3ca4fec5042bdb2f26ae314bad644aead7..1bce883385b90108a36c7663dd84c618466ef753 100644 --- a/docker/util/lazy.sh +++ b/docker/util/lazy.sh @@ -1,52 +1,52 @@ -#!/bin/bash - -# 本脚本的作用是 -# 1. 项目打包 -# 2. 上传云服务器 -# 3. 远程登录云服务器并执行reset脚本 - -# 请设置云服务器的IP地址和账户 -# 例如 ubuntu@122.51.199.160 -REMOTE=ubuntu@122.51.199.160 -# 请设置本地SSH私钥文件id_rsa路径 -# 例如 /home/litemall/id_rsa -ID_RSA=/d/00/cloud/litemall.txt - -if test -z "$REMOTE" -then - echo "请设置云服务器登录IP地址和账户" - exit 1 -fi - -if test -z "$ID_RSA" -then - echo "请设置云服务器登录IP地址和账户" - exit 1 -fi - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -cd $DIR/../.. || exit 2 -LITEMALL_HOME=$PWD -echo "LITEMALL_HOME $LITEMALL_HOME" - -# 项目打包 -cd $LITEMALL_HOME || exit 2 -./docker/util/package.sh - -# 上传云服务器 -cd $LITEMALL_HOME || exit 2 -scp -i $ID_RSA -r ./docker $REMOTE:/home/ubuntu/ - -# 远程登录云服务器并执行reset脚本 -# 这里使用tr命令,因为有可能deploy.sh和reset.sh的换行格式是CRLF,而LINUX环境应该是LF -ssh $REMOTE -i $ID_RSA << eeooff -cd /home/ubuntu/docker/bin -cat deploy.sh | tr -d '\r' > deploy2.sh -mv deploy2.sh deploy.sh -chmod +x deploy.sh -cat reset.sh | tr -d '\r' > reset2.sh -mv reset2.sh reset.sh -chmod +x reset.sh -sudo ./reset.sh -exit -eeooff \ No newline at end of file +##!/bin/bash +# +## 本脚本的作用是 +## 1. 项目打包 +## 2. 上传云服务器 +## 3. 远程登录云服务器并执行reset脚本 +# +## 请设置云服务器的IP地址和账户 +## 例如 ubuntu@122.51.199.160 +#REMOTE=ubuntu@122.51.199.160 +## 请设置本地SSH私钥文件id_rsa路径 +## 例如 /home/litemall/id_rsa +#ID_RSA=/d/00/cloud/litemall.txt +# +#if test -z "$REMOTE" +#then +# echo "请设置云服务器登录IP地址和账户" +# exit 1 +#fi +# +#if test -z "$ID_RSA" +#then +# echo "请设置云服务器登录IP地址和账户" +# exit 1 +#fi +# +#DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +#cd $DIR/../.. || exit 2 +#LITEMALL_HOME=$PWD +#echo "LITEMALL_HOME $LITEMALL_HOME" +# +## 项目打包 +#cd $LITEMALL_HOME || exit 2 +#./docker/util/package.sh +# +## 上传云服务器 +#cd $LITEMALL_HOME || exit 2 +#scp -i $ID_RSA -r ./docker $REMOTE:/home/ubuntu/ +# +## 远程登录云服务器并执行reset脚本 +## 这里使用tr命令,因为有可能deploy.sh和reset.sh的换行格式是CRLF,而LINUX环境应该是LF +#ssh $REMOTE -i $ID_RSA << eeooff +#cd /home/ubuntu/docker/bin +#cat deploy.sh | tr -d '\r' > deploy2.sh +#mv deploy2.sh deploy.sh +#chmod +x deploy.sh +#cat reset.sh | tr -d '\r' > reset2.sh +#mv reset2.sh reset.sh +#chmod +x reset.sh +#sudo ./reset.sh +#exit +#eeooff \ No newline at end of file diff --git a/docker/util/package.sh b/docker/util/package.sh index 4a5b98f2374a14cfa013d24de82d30247ef6ab72..80f6e0cf811582f5d7a015d3d828df860157b203 100644 --- a/docker/util/package.sh +++ b/docker/util/package.sh @@ -1,31 +1,31 @@ -#!/bin/bash - -# 请注意 -# 本脚本的作用是把本项目编译的结果保存到deploy文件夹中 -# 1. 把项目数据库文件拷贝到docker/db/init-sql -# 2. 编译litemall-admin -# 3. 编译litemall-all模块,然后拷贝到docker/litemall - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -cd $DIR/../.. -LITEMALL_HOME=$PWD -echo "LITEMALL_HOME $LITEMALL_HOME" - -# 复制数据库 -cat $LITEMALL_HOME/litemall-db/sql/litemall_schema.sql > $LITEMALL_HOME/docker/db/init-sql/litemall.sql -cat $LITEMALL_HOME/litemall-db/sql/litemall_table.sql >> $LITEMALL_HOME/docker/db/init-sql/litemall.sql -cat $LITEMALL_HOME/litemall-db/sql/litemall_data.sql >> $LITEMALL_HOME/docker/db/init-sql/litemall.sql - -# 打包litemall-admin -cd $LITEMALL_HOME/litemall-admin -npm install --registry=https://registry.npm.taobao.org -npm run build:dep - -# 打包litemall-vue -cd $LITEMALL_HOME/litemall-vue -npm install --registry=https://registry.npm.taobao.org -npm run build:dep - -cd $LITEMALL_HOME -mvn clean package -cp -f $LITEMALL_HOME/litemall-all/target/litemall-all-*-exec.jar $LITEMALL_HOME/docker/litemall/litemall.jar \ No newline at end of file +##!/bin/bash +# +## 请注意 +## 本脚本的作用是把本项目编译的结果保存到deploy文件夹中 +## 1. 把项目数据库文件拷贝到docker/db/init-sql +## 2. 编译litemall-admin +## 3. 编译litemall-all模块,然后拷贝到docker/litemall +# +#DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +#cd $DIR/../.. +#LITEMALL_HOME=$PWD +#echo "LITEMALL_HOME $LITEMALL_HOME" +# +## 复制数据库 +#cat $LITEMALL_HOME/litemall-db/sql/litemall_schema.sql > $LITEMALL_HOME/docker/db/init-sql/litemall.sql +#cat $LITEMALL_HOME/litemall-db/sql/litemall_table.sql >> $LITEMALL_HOME/docker/db/init-sql/litemall.sql +#cat $LITEMALL_HOME/litemall-db/sql/litemall_data.sql >> $LITEMALL_HOME/docker/db/init-sql/litemall.sql +# +## 打包litemall-admin +#cd $LITEMALL_HOME/litemall-admin +#npm install --registry=https://registry.npm.taobao.org +#npm run build:dep +# +## 打包litemall-vue +#cd $LITEMALL_HOME/litemall-vue +#npm install --registry=https://registry.npm.taobao.org +#npm run build:dep +# +#cd $LITEMALL_HOME +#mvn clean package +#cp -f $LITEMALL_HOME/litemall-all/target/litemall-all-*-exec.jar $LITEMALL_HOME/docker/litemall/litemall.jar \ No newline at end of file diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/CouponJob.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/CouponJob.java index 4e09ca53b50b8538d8eff2d9c794eeee34fa4e42..2669e67a7ba2927a6e69668a8760ce8c2b771810 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/CouponJob.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/CouponJob.java @@ -31,7 +31,7 @@ public class CouponJob { * TODO * 注意,因为是相隔一个小时检查,因此导致优惠券真正超时时间可能比设定时间延迟1个小时 */ - @Scheduled(fixedDelay = 60 * 60 * 1000) +// @Scheduled(fixedDelay = 60 * 60 * 1000) public void checkCouponExpired() { logger.info("系统开启任务检查优惠券是否已经过期"); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/DbJob.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/DbJob.java index b4271283d2d728f034884069093ea5ddd880b5e1..b6a1a83bc8c08db38d079723a9dd2a427e0f48ce 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/DbJob.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/DbJob.java @@ -26,7 +26,7 @@ public class DbJob { /* * 定时时间是每天凌晨5点。 */ - @Scheduled(cron = "0 0 5 * * ?") +// @Scheduled(cron = "0 0 5 * * ?") public void backup() throws IOException { logger.info("系统开启定时任务数据库备份"); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/OrderJob.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/OrderJob.java index e9c0b52930d705b394916ff3bafcbc16a4cd53b3..262f70ba72c2512b9cda14c715aa6a0756e12b3d 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/OrderJob.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/OrderJob.java @@ -41,7 +41,7 @@ public class OrderJob { * TODO * 注意,因为是相隔一天检查,因此导致订单真正超时时间是 [LITEMALL_ORDER_UNCONFIRM, 1 + LITEMALL_ORDER_UNCONFIRM] */ - @Scheduled(cron = "0 0 3 * * ?") +// @Scheduled(cron = "0 0 3 * * ?") public void checkOrderUnconfirm() { logger.info("系统开启定时任务检查订单是否已经超期自动确认收货"); @@ -70,7 +70,7 @@ public class OrderJob { * TODO * 注意,因为是相隔一天检查,因此导致订单真正超时时间是 [LITEMALL_ORDER_COMMENT, 1 + LITEMALL_ORDER_COMMENT] */ - @Scheduled(cron = "0 0 4 * * ?") +// @Scheduled(cron = "0 0 4 * * ?") public void checkOrderComment() { logger.info("系统开启任务检查订单是否已经超期未评价"); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/service/AdminGoodsService.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/service/AdminGoodsService.java index a049e925e003a5f257b126facba7d01c1e3de1dc..8acb83a664828301c010daa5b00a289c2945f701 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/service/AdminGoodsService.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/service/AdminGoodsService.java @@ -7,6 +7,8 @@ import org.linlinjava.litemall.admin.vo.CatVo; import org.linlinjava.litemall.core.qcode.QCodeService; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.db.domain.*; +import org.linlinjava.litemall.db.param.GoodsParam; +import org.linlinjava.litemall.db.param.WorkParam; import org.linlinjava.litemall.db.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -14,12 +16,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.linlinjava.litemall.admin.util.AdminResponseCode.GOODS_NAME_EXIST; +import java.util.*; @Service public class AdminGoodsService { @@ -42,9 +39,19 @@ public class AdminGoodsService { @Autowired private QCodeService qCodeService; + public Object list(WorkParam param) { + List goodsList = goodsService.querySelective(param); + return ResponseUtil.okList(goodsList); + } + + public Object list(GoodsParam param) { + List goodsList = goodsService.querySelective(param); + return ResponseUtil.okList(goodsList); + } + public Object list(Integer goodsId, String goodsSn, String name, - Integer page, Integer limit, String sort, String order) { - List goodsList = goodsService.querySelective(goodsId, goodsSn, name, page, limit, sort, order); + String userType, Integer page, Integer limit, String sort, String order) { + List goodsList = goodsService.querySelective(goodsId, goodsSn, name, userType, page, limit, sort, order); return ResponseUtil.okList(goodsList); } @@ -56,7 +63,7 @@ public class AdminGoodsService { } String goodsSn = goods.getGoodsSn(); if (StringUtils.isEmpty(goodsSn)) { - return ResponseUtil.badArgument(); + goods.setGoodsSn(UUID.randomUUID().toString()); } // 品牌商可以不设置,如果设置则需要验证品牌商存在 Integer brandId = goods.getBrandId(); @@ -241,9 +248,9 @@ public class AdminGoodsService { LitemallGoodsProduct[] products = goodsAllinone.getProducts(); String name = goods.getName(); - if (goodsService.checkExistByName(name)) { - return ResponseUtil.fail(GOODS_NAME_EXIST, "商品名已经存在"); - } +// if (goodsService.checkExistByName(name)) { +// return ResponseUtil.fail(GOODS_NAME_EXIST, "商品名已经存在"); +// } // 商品表里面有一个字段retailPrice记录当前商品的最低价 BigDecimal retailPrice = new BigDecimal(Integer.MAX_VALUE); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDashbordController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDashbordController.java index ace32f99a419b4bc14d7ed7171a8be82f2a6709d..42748b928398cac751e4066d21c8dcfddc3d1b07 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDashbordController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDashbordController.java @@ -3,10 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.linlinjava.litemall.core.util.ResponseUtil; -import org.linlinjava.litemall.db.service.LitemallGoodsProductService; -import org.linlinjava.litemall.db.service.LitemallGoodsService; -import org.linlinjava.litemall.db.service.LitemallOrderService; -import org.linlinjava.litemall.db.service.LitemallUserService; +import org.linlinjava.litemall.db.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -29,19 +26,21 @@ public class AdminDashbordController { @Autowired private LitemallGoodsProductService productService; @Autowired + private LitemallTopicService topicService; + @Autowired private LitemallOrderService orderService; @GetMapping("") public Object info() { int userTotal = userService.count(); - int goodsTotal = goodsService.count(); - int productTotal = productService.count(); - int orderTotal = orderService.count(); + int goodsTotal = goodsService.count("ZB_EMP"); + int productTotal = topicService.count(); + int workTotal = goodsService.count("CUSTOMER"); Map data = new HashMap<>(); data.put("userTotal", userTotal); data.put("goodsTotal", goodsTotal); data.put("productTotal", productTotal); - data.put("orderTotal", orderTotal); + data.put("workTotal", workTotal); return ResponseUtil.ok(data); } diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDictController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDictController.java new file mode 100644 index 0000000000000000000000000000000000000000..b3081cca2a92df7cabdf3c5fb3ba4ce908bd0728 --- /dev/null +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDictController.java @@ -0,0 +1,110 @@ +package org.linlinjava.litemall.admin.web; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; +import org.linlinjava.litemall.core.util.JacksonUtil; +import org.linlinjava.litemall.core.util.ResponseUtil; +import org.linlinjava.litemall.core.validator.Order; +import org.linlinjava.litemall.core.validator.Sort; +import org.linlinjava.litemall.db.domain.LitemallDict; +import org.linlinjava.litemall.db.domain.LitemallDictExample; +import org.linlinjava.litemall.db.service.LitemallDictService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 字典维护 + * @author rwb + */ +@RestController +@RequestMapping("/admin/dict") +@Validated +public class AdminDictController { + + private final Log logger = LogFactory.getLog(AdminDictController.class); + + @Autowired + private LitemallDictService dictService; + + @RequiresPermissions("admin:dict:list") + @RequiresPermissionsDesc(menu = {"配置管理", "字典配置"}, button = "查询") + @GetMapping("/list") + public Object list(String name, String code, String category, + @RequestParam(defaultValue = "1") Integer page, + @RequestParam(defaultValue = "10") Integer limit, + @Sort @RequestParam(defaultValue = "add_time") String sort, + @Order @RequestParam(defaultValue = "desc") String order) { + List dictList = dictService.querySelective(code, name, category, page, limit, sort, order); + return ResponseUtil.okList(dictList); + } + + private Object validate(LitemallDict dict) { + if (StringUtils.isEmpty(dict)) { + return ResponseUtil.badArgument(); + } + return null; + } + + @RequiresPermissions("admin:dict:create") + @RequiresPermissionsDesc(menu = {"配置管理", "字典配置"}, button = "添加") + @PostMapping("/create") + public Object create(@RequestBody LitemallDict dict) { + Object error = validate(dict); + if (error != null) { + return error; + } + dictService.add(dict); + return ResponseUtil.ok(dict); + } + + @RequiresPermissions("admin:dict:read") + @RequiresPermissionsDesc(menu = {"配置管理", "字典配置"}, button = "详情") + @GetMapping("/read") + public Object read(@NotNull Integer id) { + LitemallDict dict = dictService.findById(id); + return ResponseUtil.ok(dict); + } + + @RequiresPermissions("admin:dict:update") + @RequiresPermissionsDesc(menu = {"配置管理", "字典配置"}, button = "编辑") + @PostMapping("/update") + public Object update(@RequestBody LitemallDict dict) { + Object error = validate(dict); + if (error != null) { + return error; + } + if (dictService.updateById(dict) == 0) { + return ResponseUtil.updatedDataFailed(); + } + return ResponseUtil.ok(dict); + } + + @RequiresPermissions("admin:dict:delete") + @RequiresPermissionsDesc(menu = {"配置管理", "字典配置"}, button = "删除") + @PostMapping("/delete") + public Object delete(@RequestBody LitemallDict dict) { + Integer id = dict.getId(); + if (id == null) { + return ResponseUtil.badArgument(); + } + dictService.deleteById(id); + return ResponseUtil.ok(); + } + + @RequiresPermissions("admin:dict:batchDelete") + @RequiresPermissionsDesc(menu = {"配置管理", "字典配置"}, button = "批量删除") + @PostMapping("/batchDelete") + public Object batchDelete(@RequestBody String body) { + List ids = JacksonUtil.parseIntegerList(body, "ids"); + dictService.deleteByIds(ids); + return ResponseUtil.ok(); + } + +} diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFootprintController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFootprintController.java index d940c32a7da04d2076fccd7acbec0a8e1aa0d6a8..6849d3738383f9c7da452b0df7db03add69d7426 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFootprintController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFootprintController.java @@ -30,13 +30,12 @@ public class AdminFootprintController { @RequiresPermissions("admin:footprint:list") @RequiresPermissionsDesc(menu = {"用户管理", "用户足迹"}, button = "查询") @GetMapping("/list") - public Object list(String userId, String goodsId, + public Object list(String userName, String goodsName, Integer type, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - List footprintList = footprintService.querySelective(userId, goodsId, page, limit, sort, - order); + List footprintList = footprintService.querySelective(userName, goodsName, type, page, limit, sort, order); return ResponseUtil.okList(footprintList); } } diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGoodsController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGoodsController.java index c0fe6de024976342c2f90da2d45c637cf7decb94..ff9391fcf90c1fa1ef1ed8b6ca39e5ec693abf22 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGoodsController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGoodsController.java @@ -9,6 +9,7 @@ import org.linlinjava.litemall.admin.service.AdminGoodsService; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; import org.linlinjava.litemall.db.domain.LitemallGoods; +import org.linlinjava.litemall.db.param.GoodsParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -27,24 +28,14 @@ public class AdminGoodsController { /** * 查询商品 * - * @param goodsId - * @param goodsSn - * @param name - * @param page - * @param limit - * @param sort - * @param order + * @param param * @return */ @RequiresPermissions("admin:goods:list") - @RequiresPermissionsDesc(menu = {"商品管理", "商品管理"}, button = "查询") - @GetMapping("/list") - public Object list(Integer goodsId, String goodsSn, String name, - @RequestParam(defaultValue = "1") Integer page, - @RequestParam(defaultValue = "10") Integer limit, - @Sort @RequestParam(defaultValue = "add_time") String sort, - @Order @RequestParam(defaultValue = "desc") String order) { - return adminGoodsService.list(goodsId, goodsSn, name, page, limit, sort, order); + @RequiresPermissionsDesc(menu = {"商品管理", "商品列表"}, button = "查询") + @PostMapping("/list") + public Object list(@RequestBody GoodsParam param) { + return adminGoodsService.list(param); } @GetMapping("/catAndBrand") @@ -59,7 +50,7 @@ public class AdminGoodsController { * @return */ @RequiresPermissions("admin:goods:update") - @RequiresPermissionsDesc(menu = {"商品管理", "商品管理"}, button = "编辑") + @RequiresPermissionsDesc(menu = {"商品管理", "商品列表"}, button = "编辑") @PostMapping("/update") public Object update(@RequestBody GoodsAllinone goodsAllinone) { return adminGoodsService.update(goodsAllinone); @@ -72,7 +63,7 @@ public class AdminGoodsController { * @return */ @RequiresPermissions("admin:goods:delete") - @RequiresPermissionsDesc(menu = {"商品管理", "商品管理"}, button = "删除") + @RequiresPermissionsDesc(menu = {"商品管理", "商品列表"}, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallGoods goods) { return adminGoodsService.delete(goods); @@ -85,7 +76,7 @@ public class AdminGoodsController { * @return */ @RequiresPermissions("admin:goods:create") - @RequiresPermissionsDesc(menu = {"商品管理", "商品管理"}, button = "上架") + @RequiresPermissionsDesc(menu = {"商品管理", "商品列表"}, button = "上架") @PostMapping("/create") public Object create(@RequestBody GoodsAllinone goodsAllinone) { return adminGoodsService.create(goodsAllinone); @@ -98,7 +89,7 @@ public class AdminGoodsController { * @return */ @RequiresPermissions("admin:goods:read") - @RequiresPermissionsDesc(menu = {"商品管理", "商品管理"}, button = "详情") + @RequiresPermissionsDesc(menu = {"商品管理", "商品列表"}, button = "详情") @GetMapping("/detail") public Object detail(@NotNull Integer id) { return adminGoodsService.detail(id); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminNoticeController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminNoticeController.java index 04531ef5d4f904c95e51a097576015db666a5eab..8f250b2084787211205e97d97ef7c4997f06b805 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminNoticeController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminNoticeController.java @@ -11,9 +11,11 @@ import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; import org.linlinjava.litemall.db.domain.*; +import org.linlinjava.litemall.db.enums.UserType; import org.linlinjava.litemall.db.service.LitemallAdminService; import org.linlinjava.litemall.db.service.LitemallNoticeAdminService; import org.linlinjava.litemall.db.service.LitemallNoticeService; +import org.linlinjava.litemall.db.service.LitemallUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; @@ -37,6 +39,8 @@ public class AdminNoticeController { @Autowired private LitemallAdminService adminService; @Autowired + private LitemallUserService userService; + @Autowired private LitemallNoticeAdminService noticeAdminService; @RequiresPermissions("admin:notice:list") @@ -56,6 +60,11 @@ public class AdminNoticeController { if (StringUtils.isEmpty(title)) { return ResponseUtil.badArgument(); } + Integer type = notice.getNoticeType(); + if (type == null) { + return ResponseUtil.badArgument(); + } + return null; } @@ -77,13 +86,37 @@ public class AdminNoticeController { notice.setAdminId(getAdminId()); noticeService.add(notice); // 2. 添加管理员通知记录 - List adminList = adminService.all(); - LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin(); - noticeAdmin.setNoticeId(notice.getId()); - noticeAdmin.setNoticeTitle(notice.getTitle()); - for(LitemallAdmin admin : adminList){ - noticeAdmin.setAdminId(admin.getId()); - noticeAdminService.add(noticeAdmin); + if (notice.getNoticeType() != null && notice.getNoticeType() <= 1) { + List adminList = adminService.all(); + LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin(); + noticeAdmin.setNoticeId(notice.getId()); + noticeAdmin.setNoticeTitle(notice.getTitle()); + for(LitemallAdmin admin : adminList){ + noticeAdmin.setAdminId(admin.getId()); + noticeAdmin.setAdminType(1); + noticeAdminService.add(noticeAdmin); + } + } + // 3. 添加主播 + if (notice.getNoticeType() != null && notice.getNoticeType() != 1) { + String userType = null; + if (notice.getNoticeType() == 2) { + userType = UserType.ZB_EMP.name(); + } else if (notice.getNoticeType() == 3) { + userType = UserType.CUSTOMER.name(); + } + List users = userService.queryByUserType(userType); + LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin(); + noticeAdmin.setNoticeId(notice.getId()); + noticeAdmin.setNoticeTitle(notice.getTitle()); + for(LitemallUser user : users){ + if (user.getUserType() == null) { + continue; + } + noticeAdmin.setAdminId(user.getId()); + noticeAdmin.setAdminType(UserType.ZB_EMP.equals(user.getUserType()) ? 2 : 3); + noticeAdminService.add(noticeAdmin); + } } return ResponseUtil.ok(notice); } diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminProfileController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminProfileController.java index faa2dccbf89f9efa18274d3645859827441fe5bd..3b05419cd9a5a3f185d3c45f0258180840a21a28 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminProfileController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminProfileController.java @@ -1,6 +1,5 @@ package org.linlinjava.litemall.admin.web; -import io.swagger.models.auth.In; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.SecurityUtils; @@ -12,7 +11,6 @@ import org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; import org.linlinjava.litemall.db.domain.LitemallAdmin; -import org.linlinjava.litemall.db.domain.LitemallIssue; import org.linlinjava.litemall.db.domain.LitemallNotice; import org.linlinjava.litemall.db.domain.LitemallNoticeAdmin; import org.linlinjava.litemall.db.service.LitemallAdminService; @@ -23,7 +21,6 @@ import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.time.LocalDate; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; @@ -80,7 +77,7 @@ public class AdminProfileController { @RequiresAuthentication @GetMapping("/nnotice") public Object nNotice() { - int count = noticeAdminService.countUnread(getAdminId()); + int count = noticeAdminService.countUnread(getAdminId(), 1); return ResponseUtil.ok(count); } @@ -91,7 +88,7 @@ public class AdminProfileController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - List noticeList = noticeAdminService.querySelective(title, type, getAdminId(), page, limit, sort, order); + List noticeList = noticeAdminService.querySelective(title, type, getAdminId(), 1, page, limit, sort, order); return ResponseUtil.okList(noticeList); } @@ -103,7 +100,7 @@ public class AdminProfileController { return ResponseUtil.badArgument(); } - LitemallNoticeAdmin noticeAdmin = noticeAdminService.find(noticeId, getAdminId()); + LitemallNoticeAdmin noticeAdmin = noticeAdminService.find(noticeId, getAdminId(), 1); if(noticeAdmin == null){ return ResponseUtil.badArgumentValue(); } diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminTopicController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminTopicController.java index 4894444d6eeab24890ac90dc5eb6c0b5b200a987..c48d6a51f53e97b8803e88283108f2538dc43aa4 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminTopicController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminTopicController.java @@ -1,14 +1,13 @@ package org.linlinjava.litemall.admin.web; -import io.swagger.models.auth.In; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; +import org.linlinjava.litemall.db.param.TopicParam; +import org.linlinjava.litemall.db.param.WorkParam; import org.linlinjava.litemall.core.util.JacksonUtil; import org.linlinjava.litemall.core.util.ResponseUtil; -import org.linlinjava.litemall.core.validator.Order; -import org.linlinjava.litemall.core.validator.Sort; import org.linlinjava.litemall.db.domain.LitemallGoods; import org.linlinjava.litemall.db.domain.LitemallTopic; import org.linlinjava.litemall.db.service.LitemallGoodsService; @@ -37,20 +36,15 @@ public class AdminTopicController { private LitemallGoodsService goodsService; @RequiresPermissions("admin:topic:list") - @RequiresPermissionsDesc(menu = {"推广管理", "专题管理"}, button = "查询") - @GetMapping("/list") - public Object list(String title, String subtitle, - @RequestParam(defaultValue = "1") Integer page, - @RequestParam(defaultValue = "10") Integer limit, - @Sort(accepts = {"id", "add_time", "price"}) @RequestParam(defaultValue = "add_time") String sort, - @Order @RequestParam(defaultValue = "desc") String order) { - List topicList = topicService.querySelective(title, subtitle, page, limit, sort, order); + @RequiresPermissionsDesc(menu = {"客户管理", "客户列表"}, button = "查询") + @PostMapping("/list") + public Object list(@RequestBody TopicParam param) { + List topicList = topicService.querySelective(param); return ResponseUtil.okList(topicList); } private Object validate(LitemallTopic topic) { - String title = topic.getTitle(); - if (StringUtils.isEmpty(title)) { + if (StringUtils.isEmpty(topic.getId())) { return ResponseUtil.badArgument(); } String content = topic.getContent(); @@ -65,7 +59,7 @@ public class AdminTopicController { } @RequiresPermissions("admin:topic:create") - @RequiresPermissionsDesc(menu = {"推广管理", "专题管理"}, button = "添加") + @RequiresPermissionsDesc(menu = {"客户管理", "客户列表"}, button = "添加") @PostMapping("/create") public Object create(@RequestBody LitemallTopic topic) { Object error = validate(topic); @@ -77,7 +71,7 @@ public class AdminTopicController { } @RequiresPermissions("admin:topic:read") - @RequiresPermissionsDesc(menu = {"推广管理", "专题管理"}, button = "详情") + @RequiresPermissionsDesc(menu = {"客户管理", "客户列表"}, button = "详情") @GetMapping("/read") public Object read(@NotNull Integer id) { LitemallTopic topic = topicService.findById(id); @@ -95,13 +89,9 @@ public class AdminTopicController { } @RequiresPermissions("admin:topic:update") - @RequiresPermissionsDesc(menu = {"推广管理", "专题管理"}, button = "编辑") + @RequiresPermissionsDesc(menu = {"客户管理", "客户列表"}, button = "编辑") @PostMapping("/update") public Object update(@RequestBody LitemallTopic topic) { - Object error = validate(topic); - if (error != null) { - return error; - } if (topicService.updateById(topic) == 0) { return ResponseUtil.updatedDataFailed(); } @@ -109,7 +99,7 @@ public class AdminTopicController { } @RequiresPermissions("admin:topic:delete") - @RequiresPermissionsDesc(menu = {"推广管理", "专题管理"}, button = "删除") + @RequiresPermissionsDesc(menu = {"客户管理", "客户列表"}, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallTopic topic) { topicService.deleteById(topic.getId()); @@ -117,7 +107,7 @@ public class AdminTopicController { } @RequiresPermissions("admin:topic:batch-delete") - @RequiresPermissionsDesc(menu = {"推广管理", "专题管理"}, button = "批量删除") + @RequiresPermissionsDesc(menu = {"客户管理", "客户列表"}, button = "批量删除") @PostMapping("/batch-delete") public Object batchDelete(@RequestBody String body) { List ids = JacksonUtil.parseIntegerList(body, "ids"); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminUserController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminUserController.java index 839a83d8397f0c2db3e7af9cb1b5a5bab0c06d1d..a54f18f28e866c17022525c52e69e6df05560357 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminUserController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminUserController.java @@ -34,14 +34,15 @@ public class AdminUserController { @RequiresPermissions("admin:user:list") @RequiresPermissionsDesc(menu = {"用户管理", "会员管理"}, button = "查询") @GetMapping("/list") - public Object list(String username, String mobile, + public Object list(String username, String mobile, String userType, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - List userList = userService.querySelective(username, mobile, page, limit, sort, order); + List userList = userService.querySelective(username, mobile, userType, page, limit, sort, order); return ResponseUtil.okList(userList); } + @RequiresPermissions("admin:user:list") @RequiresPermissionsDesc(menu = {"用户管理", "会员管理"}, button = "详情") @GetMapping("/detail") @@ -49,6 +50,7 @@ public class AdminUserController { LitemallUser user=userService.findById(id); return ResponseUtil.ok(user); } + @RequiresPermissions("admin:user:list") @RequiresPermissionsDesc(menu = {"用户管理", "会员管理"}, button = "编辑") @PostMapping("/update") diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminWorkController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminWorkController.java new file mode 100644 index 0000000000000000000000000000000000000000..bcca9204f4640ff9845cb7d25ab095de72934ee0 --- /dev/null +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminWorkController.java @@ -0,0 +1,80 @@ +package org.linlinjava.litemall.admin.web; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; +import org.linlinjava.litemall.admin.dto.GoodsAllinone; +import org.linlinjava.litemall.admin.service.AdminGoodsService; +import org.linlinjava.litemall.core.validator.Order; +import org.linlinjava.litemall.core.validator.Sort; +import org.linlinjava.litemall.db.domain.LitemallGoods; +import org.linlinjava.litemall.db.param.WorkParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotNull; + +@RestController +@RequestMapping("/admin/work") +@Validated +public class AdminWorkController { + private final Log logger = LogFactory.getLog(AdminGoodsController.class); + + @Autowired + private AdminGoodsService adminGoodsService; + + /** + * 查询商品 + * + * @param workParam + * @return + */ + @RequiresPermissions("admin:work:list") + @RequiresPermissionsDesc(menu = {"客户管理", "职位列表"}, button = "查询") + @PostMapping("/list") + public Object list(@RequestBody WorkParam workParam) { + return adminGoodsService.list(workParam); + } + + /** + * 编辑商品 + * + * @param goodsAllinone + * @return + */ + @RequiresPermissions("admin:work:update") + @RequiresPermissionsDesc(menu = {"客户管理", "职位列表"}, button = "编辑") + @PostMapping("/update") + public Object update(@RequestBody GoodsAllinone goodsAllinone) { + return adminGoodsService.update(goodsAllinone); + } + + /** + * 删除商品 + * + * @param goods + * @return + */ + @RequiresPermissions("admin:work:delete") + @RequiresPermissionsDesc(menu = {"客户管理", "职位列表"}, button = "删除") + @PostMapping("/delete") + public Object delete(@RequestBody LitemallGoods goods) { + return adminGoodsService.delete(goods); + } + + /** + * 添加商品 + * + * @param goodsAllinone + * @return + */ + @RequiresPermissions("admin:work:create") + @RequiresPermissionsDesc(menu = {"客户管理", "职位列表"}, button = "上架") + @PostMapping("/create") + public Object create(@RequestBody GoodsAllinone goodsAllinone) { + return adminGoodsService.create(goodsAllinone); + } + +} diff --git a/litemall-admin-api/src/main/resources/application-admintest.yml b/litemall-admin-api/src/main/resources/application-admintest.yml new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/litemall-admin-api/src/main/resources/application.yml b/litemall-admin-api/src/main/resources/application.yml index d3ca436723f374c0af2bce793909888d83c718d7..80cb1a49c51f121c892d4cf2985fc21cf9d8ef2c 100644 --- a/litemall-admin-api/src/main/resources/application.yml +++ b/litemall-admin-api/src/main/resources/application.yml @@ -5,7 +5,7 @@ spring: encoding: UTF-8 server: - port: 8083 + port: 8080 logging: level: diff --git a/litemall-admin/.env.production b/litemall-admin/.env.production index 4c05b967776c4189facc4988bdce4961d87ceee0..9f724aa912c60ee91580f0fbc2fa2c968a0a9920 100644 --- a/litemall-admin/.env.production +++ b/litemall-admin/.env.production @@ -4,5 +4,7 @@ NODE_ENV = production ENV = 'production' # base api -VUE_APP_BASE_API = 'https://www.example.com/admin' +# VUE_APP_BASE_API = 'http://localhost:8082/admin' +# VUE_APP_BASE_API = 'https://www.czyinfo.cn/admin' +VUE_APP_BASE_API = 'https://www.xianiaoai.cn/admin' diff --git a/litemall-admin/package.json b/litemall-admin/package.json index 35749a433109d0cf5ad594aa9bb9311cfa946469..8865ac6138f1ecf5842d86f56e2ca08eb7b402d6 100644 --- a/litemall-admin/package.json +++ b/litemall-admin/package.json @@ -53,6 +53,7 @@ "file-saver": "1.3.8", "js-cookie": "2.2.0", "lodash": "^4.17.11", + "moment": "^2.30.1", "normalize.css": "7.0.0", "nprogress": "0.2.0", "path-to-regexp": "2.4.0", @@ -100,5 +101,7 @@ "browserslist": [ "> 1%", "last 2 versions" - ] + ], + "homepage": "https://github.com/linlinjava/litemall#readme", + "main": ".eslintrc.js" } diff --git a/litemall-admin/public/favicon.ico b/litemall-admin/public/favicon.ico index 7fc0eab364ce36daac2ca8e29addea2d3841df24..d8d7ed9d9191317055098d57647442fee6f61752 100644 Binary files a/litemall-admin/public/favicon.ico and b/litemall-admin/public/favicon.ico differ diff --git a/litemall-admin/src/api/dict.js b/litemall-admin/src/api/dict.js new file mode 100644 index 0000000000000000000000000000000000000000..412215e82334d1b37cf52d72a667e8d9262597b1 --- /dev/null +++ b/litemall-admin/src/api/dict.js @@ -0,0 +1,49 @@ +import request from '@/utils/request' + +export function listDict(query) { + return request({ + url: '/dict/list', + method: 'get', + params: query + }) +} + +export function createDict(data) { + return request({ + url: '/dict/create', + method: 'post', + data + }) +} + +export function readDict(data) { + return request({ + url: '/dict/read', + method: 'get', + data + }) +} + +export function updateDict(data) { + return request({ + url: '/dict/update', + method: 'post', + data + }) +} + +export function deleteDict(data) { + return request({ + url: '/dict/delete', + method: 'post', + data + }) +} + +export function batchDeleteDict(data) { + return request({ + url: '/dict/batchDelete', + method: 'post', + data + }) +} diff --git a/litemall-admin/src/api/goods.js b/litemall-admin/src/api/goods.js index 0ef2834c25932a981f4cc754c0ee3cfb036913b6..9a04bfee3bdd0337a3ff44051594638d8b738421 100644 --- a/litemall-admin/src/api/goods.js +++ b/litemall-admin/src/api/goods.js @@ -3,8 +3,9 @@ import request from '@/utils/request' export function listGoods(query) { return request({ url: '/goods/list', - method: 'get', - params: query + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data: JSON.stringify(query) }) } diff --git a/litemall-admin/src/api/topic.js b/litemall-admin/src/api/topic.js index 697245dfb64ea2941f2022def1443fbc97222d25..425a16581751abcbdb49e8be0e805a20b0a3c7dd 100644 --- a/litemall-admin/src/api/topic.js +++ b/litemall-admin/src/api/topic.js @@ -3,8 +3,9 @@ import request from '@/utils/request' export function listTopic(query) { return request({ url: '/topic/list', - method: 'get', - params: query + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data: JSON.stringify(query) }) } diff --git a/litemall-admin/src/api/work.js b/litemall-admin/src/api/work.js new file mode 100644 index 0000000000000000000000000000000000000000..c62d3f4e3d291cfbae9d79835e264a7c00f242e6 --- /dev/null +++ b/litemall-admin/src/api/work.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +export function listWork(query) { + return request({ + url: '/work/list', + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data: JSON.stringify(query) + }) +} + +export function deleteWork(data) { + return request({ + url: '/work/delete', + method: 'post', + data + }) +} + +export function editWork(data) { + return request({ + url: '/work/update', + method: 'post', + data + }) +} diff --git a/litemall-admin/src/components/NumberRange/inputNumberRange.vue b/litemall-admin/src/components/NumberRange/inputNumberRange.vue new file mode 100644 index 0000000000000000000000000000000000000000..c1ca63b93e26482e9807a4318d32f62ccf4fd4a6 --- /dev/null +++ b/litemall-admin/src/components/NumberRange/inputNumberRange.vue @@ -0,0 +1,204 @@ + + + + diff --git a/litemall-admin/src/router/index.js b/litemall-admin/src/router/index.js index 836d62e878584495c3d67ca129e25991b8203414..f49f5b9e1b7efb148a9dcde363e9b20a049fb927 100644 --- a/litemall-admin/src/router/index.js +++ b/litemall-admin/src/router/index.js @@ -93,16 +93,16 @@ export const asyncRoutes = [ noCache: true } }, - { - path: 'address', - component: () => import('@/views/user/address'), - name: 'address', - meta: { - perms: ['GET /admin/address/list'], - title: '收货地址', - noCache: true - } - }, + // { + // path: 'address', + // component: () => import('@/views/user/address'), + // name: 'address', + // meta: { + // perms: ['GET /admin/address/list'], + // title: '收货地址', + // noCache: true + // } + // }, { path: 'collect', component: () => import('@/views/user/collect'), @@ -153,7 +153,7 @@ export const asyncRoutes = [ alwaysShow: true, name: 'mallManage', meta: { - title: '商场管理', + title: '平台管理', icon: 'chart' }, children: [ @@ -166,46 +166,46 @@ export const asyncRoutes = [ noCache: true } }, - { - path: 'brand', - component: () => import('@/views/mall/brand'), - name: 'brand', - meta: { - perms: ['GET /admin/brand/list', 'POST /admin/brand/create', 'GET /admin/brand/read', 'POST /admin/brand/update', 'POST /admin/brand/delete'], - title: '品牌制造商', - noCache: true - } - }, - { - path: 'category', - component: () => import('@/views/mall/category'), - name: 'category', - meta: { - perms: ['GET /admin/category/list', 'POST /admin/category/create', 'GET /admin/category/read', 'POST /admin/category/update', 'POST /admin/category/delete'], - title: '商品类目', - noCache: true - } - }, - { - path: 'order', - component: () => import('@/views/mall/order'), - name: 'order', - meta: { - perms: ['GET /admin/order/list', 'GET /admin/order/detail', 'POST /admin/order/ship', 'POST /admin/order/refund', 'POST /admin/order/delete', 'POST /admin/order/reply'], - title: '订单管理', - noCache: true - } - }, - { - path: 'aftersale', - component: () => import('@/views/mall/aftersale'), - name: 'aftersale', - meta: { - perms: ['GET /admin/aftersale/list', 'GET /admin/aftersale/detail', 'POST /admin/order/receive', 'POST /admin/aftersale/complete', 'POST /admin/aftersale/reject'], - title: '售后管理', - noCache: true - } - }, + // { + // path: 'brand', + // component: () => import('@/views/mall/brand'), + // name: 'brand', + // meta: { + // perms: ['GET /admin/brand/list', 'POST /admin/brand/create', 'GET /admin/brand/read', 'POST /admin/brand/update', 'POST /admin/brand/delete'], + // title: '第三方公司', + // noCache: true + // } + // }, + // { + // path: 'category', + // component: () => import('@/views/mall/category'), + // name: 'category', + // meta: { + // perms: ['GET /admin/category/list', 'POST /admin/category/create', 'GET /admin/category/read', 'POST /admin/category/update', 'POST /admin/category/delete'], + // title: '主播类别', + // noCache: true + // } + // }, + // { + // path: 'order', + // component: () => import('@/views/mall/order'), + // name: 'order', + // meta: { + // perms: ['GET /admin/order/list', 'GET /admin/order/detail', 'POST /admin/order/ship', 'POST /admin/order/refund', 'POST /admin/order/delete', 'POST /admin/order/reply'], + // title: '订单管理', + // noCache: true + // } + // }, + // { + // path: 'aftersale', + // component: () => import('@/views/mall/aftersale'), + // name: 'aftersale', + // meta: { + // perms: ['GET /admin/aftersale/list', 'GET /admin/aftersale/detail', 'POST /admin/order/receive', 'POST /admin/aftersale/complete', 'POST /admin/aftersale/reject'], + // title: '售后管理', + // noCache: true + // } + // }, { path: 'issue', component: () => import('@/views/mall/issue'), @@ -215,17 +215,18 @@ export const asyncRoutes = [ title: '通用问题', noCache: true } - }, - { - path: 'keyword', - component: () => import('@/views/mall/keyword'), - name: 'keyword', - meta: { - perms: ['GET /admin/keyword/list', 'POST /admin/keyword/create', 'GET /admin/keyword/read', 'POST /admin/keyword/update', 'POST /admin/keyword/delete'], - title: '关键词', - noCache: true - } } + // , + // { + // path: 'keyword', + // component: () => import('@/views/mall/keyword'), + // name: 'keyword', + // meta: { + // perms: ['GET /admin/keyword/list', 'POST /admin/keyword/create', 'GET /admin/keyword/read', 'POST /admin/keyword/update', 'POST /admin/keyword/delete'], + // title: '关键词', + // noCache: true + // } + // } ] }, @@ -236,7 +237,7 @@ export const asyncRoutes = [ alwaysShow: true, name: 'goodsManage', meta: { - title: '商品管理', + title: '主播管理', icon: 'chart' }, children: [ @@ -246,41 +247,42 @@ export const asyncRoutes = [ name: 'goodsList', meta: { perms: ['GET /admin/goods/list', 'POST /admin/goods/delete'], - title: '商品列表', - noCache: true - } - }, - { - path: 'create', - component: () => import('@/views/goods/create'), - name: 'goodsCreate', - meta: { - perms: ['POST /admin/goods/create'], - title: '商品上架', - noCache: true - } - }, - { - path: 'edit', - component: () => import('@/views/goods/edit'), - name: 'goodsEdit', - meta: { - perms: ['GET /admin/goods/detail', 'POST /admin/goods/update', 'POST /admin/goods/catAndBrand'], - title: '商品编辑', - noCache: true - }, - hidden: true - }, - { - path: 'comment', - component: () => import('@/views/goods/comment'), - name: 'goodsComment', - meta: { - perms: ['GET /admin/comment/list', 'POST /admin/comment/delete'], - title: '商品评论', + title: '主播列表', noCache: true } } + // , + // { + // path: 'create', + // component: () => import('@/views/goods/create'), + // name: 'goodsCreate', + // meta: { + // perms: ['POST /admin/goods/create'], + // title: '主播新增', + // noCache: true + // } + // }, + // { + // path: 'edit', + // component: () => import('@/views/goods/edit'), + // name: 'goodsEdit', + // meta: { + // perms: ['GET /admin/goods/detail', 'POST /admin/goods/update', 'POST /admin/goods/catAndBrand'], + // title: '主播编辑', + // noCache: true + // }, + // hidden: true + // }, + // { + // path: 'comment', + // component: () => import('@/views/goods/comment'), + // name: 'goodsComment', + // meta: { + // perms: ['GET /admin/comment/list', 'POST /admin/comment/delete'], + // title: '主播评论', + // noCache: true + // } + // } ] }, { @@ -290,48 +292,27 @@ export const asyncRoutes = [ alwaysShow: true, name: 'promotionManage', meta: { - title: '推广管理', + title: '客户管理', icon: 'chart' }, children: [ { - path: 'ad', - component: () => import('@/views/promotion/ad'), - name: 'ad', - meta: { - perms: ['GET /admin/ad/list', 'POST /admin/ad/create', 'GET /admin/ad/read', 'POST /admin/ad/update', 'POST /admin/ad/delete'], - title: '广告管理', - noCache: true - } - }, - { - path: 'coupon', - component: () => import('@/views/promotion/coupon'), - name: 'coupon', + path: 'topic', + component: () => import('@/views/promotion/topic'), + name: 'topic', meta: { - perms: ['GET /admin/coupon/list', 'POST /admin/coupon/create', 'POST /admin/coupon/update', 'POST /admin/coupon/delete'], - title: '优惠券管理', + perms: ['GET /admin/topic/list', 'POST /admin/topic/create', 'GET /admin/topic/read', 'POST /admin/topic/update', 'POST /admin/topic/delete'], + title: '客户列表', noCache: true } }, { - path: 'couponDetail', - component: () => import('@/views/promotion/couponDetail'), - name: 'couponDetail', + path: 'work', + component: () => import('@/views/promotion/work'), + name: 'work', meta: { - perms: ['GET /admin/coupon/list', 'GET /admin/coupon/listuser'], - title: '优惠券详情', - noCache: true - }, - hidden: true - }, - { - path: 'topic', - component: () => import('@/views/promotion/topic'), - name: 'topic', - meta: { - perms: ['GET /admin/topic/list', 'POST /admin/topic/create', 'GET /admin/topic/read', 'POST /admin/topic/update', 'POST /admin/topic/delete'], - title: '专题管理', + perms: ['GET /admin/work/list', 'POST /admin/work/update', 'POST /admin/work/delete'], + title: '职位列表', noCache: true } }, @@ -341,7 +322,7 @@ export const asyncRoutes = [ name: 'topicCreate', meta: { perms: ['POST /admin/topic/create'], - title: '专题创建', + title: '客户新增', noCache: true }, hidden: true @@ -352,30 +333,10 @@ export const asyncRoutes = [ name: 'topicEdit', meta: { perms: ['GET /admin/topic/read', 'POST /admin/topic/update'], - title: '专题编辑', + title: '客户编辑', noCache: true }, hidden: true - }, - { - path: 'groupon-rule', - component: () => import('@/views/promotion/grouponRule'), - name: 'grouponRule', - meta: { - perms: ['GET /admin/groupon/list', 'POST /admin/groupon/create', 'POST /admin/groupon/update', 'POST /admin/groupon/delete'], - title: '团购规则', - noCache: true - } - }, - { - path: 'groupon-activity', - component: () => import('@/views/promotion/grouponActivity'), - name: 'grouponActivity', - meta: { - perms: ['GET /admin/groupon/listRecord'], - title: '团购活动', - noCache: true - } } ] }, @@ -456,132 +417,102 @@ export const asyncRoutes = [ }, children: [ { - path: 'mall', - component: () => import('@/views/config/mall'), - name: 'configMall', - meta: { - perms: ['GET /admin/config/mall', 'POST /admin/config/mall'], - title: '商场配置', - noCache: true - } - }, - { - path: 'express', - component: () => import('@/views/config/express'), - name: 'configExpress', - meta: { - perms: ['GET /admin/config/express', 'POST /admin/config/express'], - title: '运费配置', - noCache: true - } - }, - { - path: 'order', - component: () => import('@/views/config/order'), - name: 'configOrder', + path: 'dict', + component: () => import('@/views/config/dict'), + name: 'configdict', meta: { - perms: ['GET /admin/config/order', 'POST /admin/config/order'], - title: '订单配置', + perms: ['GET /admin/config/dict', 'POST /admin/config/dict'], + title: '字典配置', noCache: true } }, { - path: 'wx', - component: () => import('@/views/config/wx'), - name: 'configWx', + path: 'mall', + component: () => import('@/views/config/mall'), + name: 'configMall', meta: { - perms: ['GET /admin/config/wx', 'POST /admin/config/wx'], - title: '小程序配置', + perms: ['GET /admin/config/mall', 'POST /admin/config/mall'], + title: '平台配置', noCache: true } } + // , + // { + // path: 'express', + // component: () => import('@/views/config/express'), + // name: 'configExpress', + // meta: { + // perms: ['GET /admin/config/express', 'POST /admin/config/express'], + // title: '运费配置', + // noCache: true + // } + // }, + // { + // path: 'order', + // component: () => import('@/views/config/order'), + // name: 'configOrder', + // meta: { + // perms: ['GET /admin/config/order', 'POST /admin/config/order'], + // title: '订单配置', + // noCache: true + // } + // }, + // { + // path: 'wx', + // component: () => import('@/views/config/wx'), + // name: 'configWx', + // meta: { + // perms: ['GET /admin/config/wx', 'POST /admin/config/wx'], + // title: '小程序配置', + // noCache: true + // } + // } ] }, - { - path: '/stat', - component: Layout, - redirect: 'noredirect', - alwaysShow: true, - name: 'statManage', - meta: { - title: '统计报表', - icon: 'chart' - }, - children: [ - { - path: 'user', - component: () => import('@/views/stat/user'), - name: 'statUser', - meta: { - perms: ['GET /admin/stat/user'], - title: '用户统计', - noCache: true - } - }, - { - path: 'order', - component: () => import('@/views/stat/order'), - name: 'statOrder', - meta: { - perms: ['GET /admin/stat/order'], - title: '订单统计', - noCache: true - } - }, - { - path: 'goods', - component: () => import('@/views/stat/goods'), - name: 'statGoods', - meta: { - perms: ['GET /admin/stat/goods'], - title: '商品统计', - noCache: true - } - } - ] - }, - { - path: 'external-link', - component: Layout, - redirect: 'noredirect', - alwaysShow: true, - name: 'externalLink', - meta: { - title: '外链', - icon: 'link' - }, - children: [ - { - path: 'https://cloud.tencent.com/product/cos', - meta: { title: '腾讯云存储', icon: 'link' } - }, - { - path: 'https://cloud.tencent.com/product/sms', - meta: { title: '腾讯云短信', icon: 'link' } - }, - { - path: 'https://pay.weixin.qq.com/index.php/core/home/login', - meta: { title: '微信支付', icon: 'link' } - }, - { - path: 'https://mpkf.weixin.qq.com/', - meta: { title: '小程序客服', icon: 'link' } - }, - { - path: 'https://www.alibabacloud.com/zh/product/oss', - meta: { title: '阿里云存储', icon: 'link' } - }, - { - path: 'https://www.qiniu.com/products/kodo', - meta: { title: '七牛云存储', icon: 'link' } - }, - { - path: 'http://www.kdniao.com/api-track', - meta: { title: '快递鸟', icon: 'link' } - } - ] - }, + // { + // path: '/stat', + // component: Layout, + // redirect: 'noredirect', + // alwaysShow: true, + // name: 'statManage', + // meta: { + // title: '统计报表', + // icon: 'chart' + // }, + // children: [ + // { + // path: 'user', + // component: () => import('@/views/stat/user'), + // name: 'statUser', + // meta: { + // perms: ['GET /admin/stat/user'], + // title: '用户统计', + // noCache: true + // } + // }, + // { + // path: 'order', + // component: () => import('@/views/stat/order'), + // name: 'statOrder', + // meta: { + // perms: ['GET /admin/stat/order'], + // title: '订单统计', + // noCache: true + // } + // }, + // { + // path: 'goods', + // component: () => import('@/views/stat/goods'), + // name: 'statGoods', + // meta: { + // perms: ['GET /admin/stat/goods'], + // title: '商品统计', + // noCache: true + // } + // } + // ] + // }, { path: '/profile', component: Layout, diff --git a/litemall-admin/src/utils/request.js b/litemall-admin/src/utils/request.js index 147329f6603c0e484339f0fe7a31889cbae115b1..a3f589ebfde8ec63903157b7797b0c2e03e79469 100644 --- a/litemall-admin/src/utils/request.js +++ b/litemall-admin/src/utils/request.js @@ -2,6 +2,7 @@ import axios from 'axios' import { Message, MessageBox } from 'element-ui' import store from '@/store' import { getToken } from '@/utils/auth' +import { method } from 'lodash' axios.defaults.withCredentials = true diff --git a/litemall-admin/src/views/config/dict.vue b/litemall-admin/src/views/config/dict.vue new file mode 100644 index 0000000000000000000000000000000000000000..d8b4859891ebf1cb4d836c2652d2027d5f4f1284 --- /dev/null +++ b/litemall-admin/src/views/config/dict.vue @@ -0,0 +1,482 @@ + + diff --git a/litemall-admin/src/views/config/mall.vue b/litemall-admin/src/views/config/mall.vue index a7ac934b17fcf564a9bcbd3ce5481c23c37ecfc4..bc38efaf8dd3e0e326e9de6f844251c248cfeec7 100644 --- a/litemall-admin/src/views/config/mall.vue +++ b/litemall-admin/src/views/config/mall.vue @@ -1,26 +1,26 @@ @@ -63,7 +74,7 @@ export default { userTotal: 0, goodsTotal: 0, productTotal: 0, - orderTotal: 0 + workTotal: 0 } }, created() { @@ -71,7 +82,7 @@ export default { this.userTotal = response.data.data.userTotal this.goodsTotal = response.data.data.goodsTotal this.productTotal = response.data.data.productTotal - this.orderTotal = response.data.data.orderTotal + this.workTotal = response.data.data.workTotal }) }, methods: { diff --git a/litemall-admin/src/views/errorPage/404.vue b/litemall-admin/src/views/errorPage/404.vue index c3eafea07bac69dc161d0dc32cf7e98ecb82f65f..8fba0831f243c4fa88be3484196cd0956af18bac 100644 --- a/litemall-admin/src/views/errorPage/404.vue +++ b/litemall-admin/src/views/errorPage/404.vue @@ -9,9 +9,9 @@
OOPS!
-
版权所有 +
{{ message }}
请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告
返回首页 diff --git a/litemall-admin/src/views/goods/create.vue b/litemall-admin/src/views/goods/create.vue index 312edefa27f77167c11bd347f6a9e009f8db278d..bac984a7870a6e6214a54c9851c121f6af04552c 100644 --- a/litemall-admin/src/views/goods/create.vue +++ b/litemall-admin/src/views/goods/create.vue @@ -34,7 +34,7 @@ - +
- - - - 查找 - 添加 - 导出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 查找 + + + + 导出 + + +
+ +
批量删除
@@ -17,61 +98,99 @@ - + - - - + + + + + + + + + + + + + + + + + + - + @@ -120,6 +239,10 @@ margin-right: 0; margin-bottom: 0; } + .video { + width: 80px; + margin-right: 10px; + } .gallery { width: 80px; margin-right: 10px; @@ -131,13 +254,16 @@ diff --git a/litemall-admin/src/views/sys/notice.vue b/litemall-admin/src/views/sys/notice.vue index 0c80f24211ddd7a1643e7c3aed1f5350dc9f7625..a7d9de5d75ad73b22b07b8926ca4173d6c9ee64f 100644 --- a/litemall-admin/src/views/sys/notice.vue +++ b/litemall-admin/src/views/sys/notice.vue @@ -29,6 +29,12 @@ + + + + @@ -49,6 +55,11 @@ + + + + + @@ -84,6 +95,8 @@ export default { list: [], total: 0, listLoading: true, + dictData: { 0: '全部', 1: '管理后台', 2: '主播', 3: '客户' }, + dictDataList: [{ 'code': 0, 'name': '全部' }, { 'code': 1, 'name': '管理后台' }, { 'code': 2, 'name': '主播' }, { 'code': 3, 'name': '客户' }], listQuery: { page: 1, limit: 20, @@ -98,13 +111,14 @@ export default { dataForm: { id: undefined, title: undefined, - content: undefined + content: undefined, + noticeType: 0 }, dialogFormVisible: false, dialogStatus: '', textMap: { - update: '编辑', - create: '创建' + update: '编辑通知', + create: '创建通知' }, rules: { name: [ @@ -163,7 +177,8 @@ export default { this.dataForm = { id: undefined, title: undefined, - content: undefined + content: undefined, + noticeType: 0 } }, handleCreate() { @@ -175,6 +190,7 @@ export default { }) }, createData() { + this.dataForm.content = undefined this.$refs['dataForm'].validate(valid => { if (valid) { createNotice(this.dataForm) diff --git a/litemall-admin/src/views/user/collect.vue b/litemall-admin/src/views/user/collect.vue index 139867be3114871c56de9c3f3bb3dac192016ec4..992eb3896d897d8c38f202d23c07d6d96c8b318d 100644 --- a/litemall-admin/src/views/user/collect.vue +++ b/litemall-admin/src/views/user/collect.vue @@ -3,21 +3,31 @@
- - + + 查找 导出
- + - + - + - + + + + + @@ -80,8 +90,8 @@ export default { handleDownload() { this.downloadLoading = true import('@/vendor/Export2Excel').then(excel => { - const tHeader = ['用户ID', '商品ID', '添加时间'] - const filterVal = ['userId', 'valueId', 'addTime'] + const tHeader = ['会员ID', '关注ID', '类型(0主播、1客户)', '添加时间'] + const filterVal = ['userId', 'valueId', 'type', 'addTime'] excel.export_json_to_excel2(tHeader, this.list, filterVal, '用户收藏信息') this.downloadLoading = false }) diff --git a/litemall-admin/src/views/user/feedback.vue b/litemall-admin/src/views/user/feedback.vue index 1f38520fe5813d172cd24e8345edfac931bc622d..b3cc42c89cb8cc5619f09bea221baad6bb162d5b 100644 --- a/litemall-admin/src/views/user/feedback.vue +++ b/litemall-admin/src/views/user/feedback.vue @@ -3,8 +3,8 @@
- - + + 查找 导出
@@ -12,23 +12,23 @@ - + - + - + - + - + - + @@ -82,7 +82,7 @@ export default { handleDownload() { this.downloadLoading = true import('@/vendor/Export2Excel').then(excel => { - const tHeader = ['反馈ID', '用户名称', '反馈内容', '反馈图片列表', '反馈时间'] + const tHeader = ['反馈ID', '会员名称', '反馈内容', '反馈图片列表', '反馈时间'] const filterVal = ['id', 'username', 'content', 'picUrls', 'addTime'] excel.export_json_to_excel2(tHeader, this.list, filterVal, '意见反馈信息') this.downloadLoading = false diff --git a/litemall-admin/src/views/user/footprint.vue b/litemall-admin/src/views/user/footprint.vue index a711e9605e45e29d68c4bee17c9985dea14e3bc4..1694e066ceb0988afd12d8a52f13ca1fa5688673 100644 --- a/litemall-admin/src/views/user/footprint.vue +++ b/litemall-admin/src/views/user/footprint.vue @@ -3,21 +3,34 @@
- - + + + + + 查找 导出
- + - + - + - + + + + + + + + + @@ -38,11 +51,15 @@ export default { list: null, total: 0, listLoading: true, + typeDic: { + 0: '主播', 1: '招聘' + }, listQuery: { page: 1, limit: 20, - userId: undefined, - goodsId: undefined, + userName: undefined, + goodsName: undefined, + type: undefined, sort: 'add_time', order: 'desc' }, @@ -74,13 +91,13 @@ export default { handleDownload() { this.downloadLoading = true import('@/vendor/Export2Excel').then(excel => { - const tHeader = ['用户ID', '商品ID', '添加时间'] - const filterVal = ['userId', 'goodsId', 'addTime'] + const tHeader = ['会员ID', '会员名称', '会员类型', '浏览ID', '浏览标题', '添加时间'] + const filterVal = ['userId', 'userName', 'userType', 'goodsId', 'goodsName', 'addTime'] excel.export_json_to_excel2( tHeader, this.list, filterVal, - '用户收藏信息' + '会员足迹信息' ) this.downloadLoading = false }) diff --git a/litemall-admin/src/views/user/history.vue b/litemall-admin/src/views/user/history.vue index 9d12b3def9efe7e8b9fa37a5ce19d77ecd79399b..9b25fb6f11efb4715b1ed0bfeb0ee72a18ab960e 100644 --- a/litemall-admin/src/views/user/history.vue +++ b/litemall-admin/src/views/user/history.vue @@ -3,21 +3,21 @@
- - + + 查找 导出
- + - + - + - + @@ -73,13 +73,13 @@ export default { handleDownload() { this.downloadLoading = true import('@/vendor/Export2Excel').then(excel => { - const tHeader = ['用户ID', '搜索历史关键字', '添加时间'] + const tHeader = ['会员ID', '搜索历史关键字', '添加时间'] const filterVal = ['userId', 'keyword', 'addTime'] excel.export_json_to_excel2( tHeader, this.list, filterVal, - '用户搜索历史信息' + '会员搜索历史信息' ) this.downloadLoading = false }) diff --git a/litemall-admin/src/views/user/user.vue b/litemall-admin/src/views/user/user.vue index ecfe77f85725391a074acdff36914bbe47a3c44c..a4bb0b09a0657c8e50164764ed145f7584a9e2a8 100644 --- a/litemall-admin/src/views/user/user.vue +++ b/litemall-admin/src/views/user/user.vue @@ -3,38 +3,40 @@
- - - + + + + + 查找 导出
- + - + - + - + - + + + + + --> + + + + + + + + + + + +
+

+ + +

+ +
+
+
    + +
  • + +
    品类
    +
    &#xe6ad;
    +
  • + +
  • + +
    工作方式246px
    +
    &#xe63c;
    +
  • + +
  • + +
    体重
    +
    &#xe622;
    +
  • + +
  • + +
    学历
    +
    &#xe60e;
    +
  • + +
  • + +
    户籍地
    +
    &#xe602;
    +
  • + +
  • + +
    测身高
    +
    &#xe92e;
    +
  • + +
  • + +
    户籍常住地址
    +
    &#xe6bb;
    +
  • + +
  • + +
    时薪招聘
    +
    &#xe64d;
    +
  • + +
  • + +
    语言
    +
    &#xf31e;
    +
  • + +
  • + +
    出生日期
    +
    &#xe63f;
    +
  • + +
+
+

Unicode 引用

+
+ +

Unicode 是字体在网页端最原始的应用方式,特点是:

+
    +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 默认情况下不支持多色,直接添加多色图标会自动去色。
  • +
+
+

注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)

+
+

Unicode 使用步骤如下:

+

第一步:拷贝项目下面生成的 @font-face

+
@font-face {
+  font-family: 'custom-icon';
+  src: 
+       url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAocAAsAAAAAE3wAAAnPAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACENgqXWJJiATYCJAMsCxgABCAFhQsHgS8bKxAjEfaLkyKT/UUCTx35CwsW3gUTghRTDhmaSTx8l9mtNT0cfJMPT6e+///lklNY8IpwdOEp7URlBNMJygDcYM6VgifrsMqZyePLeiaWfpOvVTCpICIvOLFtwBwDJdZ3mapJuvbVV1c/zzNv1z9/AgLkJVeIrAQIgJtaa/UOl+lupRDbi+3v/sPih/ni94hIUg1Rp+8hqgk60y1EQiJWLMwtZoNJ4hUL7RaVH3d3AQEgojCSQDOyvDVh7NisZ2dEgIMcT4C8MunYrk0zGCZR4FpsCQxanrsnBzIFOoCOpecATA7fT96gKDEAFDoGeZyqrTNb4lAg54vKfBousHtw0sM1o7UpAB0ABiD/hcWQTe2Ja8BSkD9AMVaTw0AAITBPfi8+QAPGQHwgIZAcyA5sDPhfFfyiahqgLTkZQYhaDdCBAwOF+BCAfgKE0T+Ph4Sy04wpFYpAgBoM3RIZgcEBxQODASVADR5KhnQ3lA0MA9BGYBAgP3xBD7wq6As88EVNgAAJJVczBEBlgGMUPQmk8YbtBPCwgIMBOgiggohmWo+JhBUp6jo1oarly8qMJUWFEhaT4JrSNWvK8xJLtNJlKkIVq8klRl5J3lpLyqFWumKpukJVK7dNkUjJtWOk0hBQHMCbuXeIsCVClGMGrVxfTb9JPH+IXWfYKr/35zV8C44M87cH5lQqSs0vmCA/QPDPfadJW1zS4grHMO8QJa8n0hgF3iDpNM5k6IJMy2bPE6Oyxco0k8Hp9Dmo2IKwg8l5x31X1bUpSJPslqhnBSQBoDhEJTQ+l8dG0OLtuK1tiIx0dNid8Sgdrqw/Hs7R71sn1yKnz3GXWKjxZPydzm0eX43oOKB4DCbJxM7vNXmDO4EhPP+wYC6X/mLOmBBys2CcS9sSTY6r89i/ztzQlL53SHKHCW9RS4YUmyRzK/ucbHYdjUXe7tZwEVNYY/wI3QV1kRM0RUvEEs/wdmiR32Hr5KWzUnKuneLAx+56XqolWMwF1vmuEZoD6mI3bI6XyqW+6e/UIl9jy8QtAm8K8YhrS8oBvXEr/3o53pd6JiQ54DDTnhJotTLK8fUU5wCYWSnFukGEJ81blLsM3gMf2TENwfhzB8pxVmDEEIaBYSV6YccwhGjZcOpMUxPTAOav8vCfBwP+nQ78f8Tc3/f80vjcNAHW1Y7b8lZTEYYl1lUyTXthe2PgPCemBCgjAF8v62JfiepDPaTrwQQJcPM7cO13NMTBQGTHe8lQF+6eo6O9ds/IBcoBIIAKvAqCzkEyNkoMEbLiJw0V8O2JK0ky33FeK3R+RyUgSQLAfQgChRVF5Z/oOOBLn2ckUgV3GYJ9yExvViCfspXptE5PZTIpxZ1bWICNlc3WveL0bbgpPDP3XuXTVHP1p/uwnVIG8J+PSfJjCgRP/7xR/Hv2DJJnfl35iJh8cQMZB01p/EEqPlCESlolgFsxHViipYltk1xNfoo3t8qPGD66NhARA/wMHktyTGX4HBkaawMow+6Y8LR9Nbuhnuci5D+4mTBzJwkiTG/1xby1G4W8D0nGMZKKJ/9MkjTjv1QrvQ/5IC1aVEjUpCT3PYmLza9el/Ywv35VWndRr0GsPepvhCM5V4LOWGF9HTwz6LXVq/cb1+u9luT4OfaYeMTH2K/o1yvrZ/8TRoVE4azVLybq71Yrl255Vugu+q1+IdiY3i01resILfLqUbQFhqd27Z6afqps89JlmnUnEUX3bEYi0Ao+bt5FOGfNFUYIhukrJgpO1rQ/GOOvoFbXwv4xD+xe2ax8k8tkDx3lm1IqH2qpRRQO/7i08NKP4YUjtLDV1Ns9a9TK6JPUJ6NmzbCCq0R8SmQFISpVXFWwhX1gzZpRMjCydeQ3gzzhD3lz3+YwtVvI407L9luunAPHmynrj5jm53QfGz11rtyq2bWo1mndDtfO18jMCXO9mmPLZs+evU23xZFSZlKo4mronrTL21OHVo+nrGi4oWWZYdXrvOAMJVxbqGAfOsJjF5y8eD9IDW/6f/5RoNkIWeD25RpE4bztvPBtlBP0iiOc3AL3lP3WN7557sG5prwTextyfZ6VhM6w+TYYZolvlySl7o5ObKu01R+nVGfhLNnvk23CG3JARMautFgbC26fr30wsxceQW0JWQviFtROYITkG7VKl8ny6YLrLMjMblRiQV8xHyuxsrbszHCccGQ4wxMVjb2P0pbMT66G37gibYXRv7dnE9G9dteSf8roCmuW7axX+igJg0M1V0rrbA0tB9/8KDdKHzdHRQUxxDDVukiBhFCTo2jAs8Eyxj4mto+pZYz+c6jMIakMrvWnWDSryS1JvlLySvISLoNbmrRMnav6TRmmiE0WdCa8KQKv5Vfn7ijrimnwIWpC1IcGMa4UV/AL8wTzi2AXfABKs0MRtSJSfAKkoFqTJr5HvofaKRl5MBltpVTE1ujXGo3c9V0TxyPN3YicMdd11Bs3oa6roacl2qCxq4Fj4lh3PXdDct7V2Nlg3KT60SuvWdw0J5TvdvyHssq23rPeRl+3DL2Gok1ZZXcf9zRhmqtOa7izHUcSHQkq4qgjNT2asHriEfuh6Llqtjo3OkEN1dU1RxRLuEXZJRJlUYG4lDQnaw64SocSvoa9Vw7cXMfpPCjyiiXCoqwasIWEZQvyb1CI3E8m4Ra3rqV8uQTVmVE5w6l+FIESwg5bIsMSjpWJtBzeWE7uAsO781fPjOObxl3ZWjoq7PEx0aevBP3MgB9jko7Bj0A62jKfssZpJptOLwT72ozY76CPhHLpY0C7bDYrNHAa7l/20emZm1i+okU+Yc3/DayFA3tHN2tiSvhmQH8a5jzhvzAqo/kC5vt5i6SQiQT40UcNmb1yqyjgEJ1ipDu6SPiHMkIBiKoP8CufasWDw2tsbIkDUkk2dqPQQ3VjkOBkOcPCrM6wHMsbZrmJyIdqkoOtPxAMhBMAuDAZbgQh2OlGYcRZN4YQ3GY5ww+MzpLoWN4w0k3EPn81R7vx0uhXQaPoYHMAsjx5XUttTspjsZn/C0MejMyaZ3l/KIkwF5qyjhR/4oSyv23SNrSqHrzwCB+HPR8OA8Ms3KHVMqrO66rysW1Ky+PilUCGOq8O2DiEJBabeL6yshRK2Kho+TlfUJANDGlvR4T8QTKBRMsDGqWax36KIOG2eoH8ZCtoV0R5YKDslgw+LplDgypgYI6v1kGWKsUdyGytot48F5an1YxvP8S72aZ8OqmBhMlic7g8Pl3n0zQgPQaewjGzN/5lUqR5f75DClHP9xkHKs7b5o4cXVlMEadg+KnC2Wh6pMXsyNakZ5dZyUwbdYqdokelPU3h7JAPZrq1MW90hP5psQA=') format('woff2'),
+       url('iconfont.woff?t=1709261443399') format('woff'),
+       url('iconfont.ttf?t=1709261443399') format('truetype');
+}
+
+

第二步:定义使用 iconfont 的样式

+
.custom-icon {
+  font-family: "custom-icon" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+

第三步:挑选相应图标并获取字体编码,应用于页面

+
+<span class="custom-icon">&#x33;</span>
+
+
+

"custom-icon" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    + 品类 +
    +
    .custom-icon-pinlei +
    +
  • + +
  • + +
    + 工作方式246px +
    +
    .custom-icon-gongzuofangshipx +
    +
  • + +
  • + +
    + 体重 +
    +
    .custom-icon-weight +
    +
  • + +
  • + +
    + 学历 +
    +
    .custom-icon-xueli- +
    +
  • + +
  • + +
    + 户籍地 +
    +
    .custom-icon-hujidi +
    +
  • + +
  • + +
    + 测身高 +
    +
    .custom-icon-ceshengao +
    +
  • + +
  • + +
    + 户籍常住地址 +
    +
    .custom-icon-hujichangzhudizhi +
    +
  • + +
  • + +
    + 时薪招聘 +
    +
    .custom-icon-duotianweishangketixing +
    +
  • + +
  • + +
    + 语言 +
    +
    .custom-icon-yuyan +
    +
  • + +
  • + +
    + 出生日期 +
    +
    .custom-icon-chushengriqi +
    +
  • + +
+
+

font-class 引用

+
+ +

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

+

与 Unicode 使用方式相比,具有如下特点:

+
    +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 fontclass 代码:

+
<link rel="stylesheet" href="./iconfont.css">
+
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<span class="custom-icon custom-icon-xxx"></span>
+
+
+

" + custom-icon" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    品类
    +
    #custom-icon-pinlei
    +
  • + +
  • + +
    工作方式246px
    +
    #custom-icon-gongzuofangshipx
    +
  • + +
  • + +
    体重
    +
    #custom-icon-weight
    +
  • + +
  • + +
    学历
    +
    #custom-icon-xueli-
    +
  • + +
  • + +
    户籍地
    +
    #custom-icon-hujidi
    +
  • + +
  • + +
    测身高
    +
    #custom-icon-ceshengao
    +
  • + +
  • + +
    户籍常住地址
    +
    #custom-icon-hujichangzhudizhi
    +
  • + +
  • + +
    时薪招聘
    +
    #custom-icon-duotianweishangketixing
    +
  • + +
  • + +
    语言
    +
    #custom-icon-yuyan
    +
  • + +
  • + +
    出生日期
    +
    #custom-icon-chushengriqi
    +
  • + +
+
+

Symbol 引用

+
+ +

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

+
    +
  • 支持多色图标了,不再受单色限制。
  • +
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • +
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • +
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 symbol 代码:

+
<script src="./iconfont.js"></script>
+
+

第二步:加入通用 CSS 代码(引入一次就行):

+
<style>
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+</style>
+
+

第三步:挑选相应图标并获取类名,应用于页面:

+
<svg class="icon" aria-hidden="true">
+  <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+ +
+
+ + + diff --git a/litemall-wx/static/fonts/iconfont.css b/litemall-wx/static/fonts/iconfont.css new file mode 100644 index 0000000000000000000000000000000000000000..57332cacd6bb6055e02139ca95c1ec71c7a150c5 --- /dev/null +++ b/litemall-wx/static/fonts/iconfont.css @@ -0,0 +1,56 @@ +@font-face { + font-family: "custom-icon"; /* Project id 4446498 */ + src: + url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAocAAsAAAAAE3wAAAnPAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACENgqXWJJiATYCJAMsCxgABCAFhQsHgS8bKxAjEfaLkyKT/UUCTx35CwsW3gUTghRTDhmaSTx8l9mtNT0cfJMPT6e+///lklNY8IpwdOEp7URlBNMJygDcYM6VgifrsMqZyePLeiaWfpOvVTCpICIvOLFtwBwDJdZ3mapJuvbVV1c/zzNv1z9/AgLkJVeIrAQIgJtaa/UOl+lupRDbi+3v/sPih/ni94hIUg1Rp+8hqgk60y1EQiJWLMwtZoNJ4hUL7RaVH3d3AQEgojCSQDOyvDVh7NisZ2dEgIMcT4C8MunYrk0zGCZR4FpsCQxanrsnBzIFOoCOpecATA7fT96gKDEAFDoGeZyqrTNb4lAg54vKfBousHtw0sM1o7UpAB0ABiD/hcWQTe2Ja8BSkD9AMVaTw0AAITBPfi8+QAPGQHwgIZAcyA5sDPhfFfyiahqgLTkZQYhaDdCBAwOF+BCAfgKE0T+Ph4Sy04wpFYpAgBoM3RIZgcEBxQODASVADR5KhnQ3lA0MA9BGYBAgP3xBD7wq6As88EVNgAAJJVczBEBlgGMUPQmk8YbtBPCwgIMBOgiggohmWo+JhBUp6jo1oarly8qMJUWFEhaT4JrSNWvK8xJLtNJlKkIVq8klRl5J3lpLyqFWumKpukJVK7dNkUjJtWOk0hBQHMCbuXeIsCVClGMGrVxfTb9JPH+IXWfYKr/35zV8C44M87cH5lQqSs0vmCA/QPDPfadJW1zS4grHMO8QJa8n0hgF3iDpNM5k6IJMy2bPE6Oyxco0k8Hp9Dmo2IKwg8l5x31X1bUpSJPslqhnBSQBoDhEJTQ+l8dG0OLtuK1tiIx0dNid8Sgdrqw/Hs7R71sn1yKnz3GXWKjxZPydzm0eX43oOKB4DCbJxM7vNXmDO4EhPP+wYC6X/mLOmBBys2CcS9sSTY6r89i/ztzQlL53SHKHCW9RS4YUmyRzK/ucbHYdjUXe7tZwEVNYY/wI3QV1kRM0RUvEEs/wdmiR32Hr5KWzUnKuneLAx+56XqolWMwF1vmuEZoD6mI3bI6XyqW+6e/UIl9jy8QtAm8K8YhrS8oBvXEr/3o53pd6JiQ54DDTnhJotTLK8fUU5wCYWSnFukGEJ81blLsM3gMf2TENwfhzB8pxVmDEEIaBYSV6YccwhGjZcOpMUxPTAOav8vCfBwP+nQ78f8Tc3/f80vjcNAHW1Y7b8lZTEYYl1lUyTXthe2PgPCemBCgjAF8v62JfiepDPaTrwQQJcPM7cO13NMTBQGTHe8lQF+6eo6O9ds/IBcoBIIAKvAqCzkEyNkoMEbLiJw0V8O2JK0ky33FeK3R+RyUgSQLAfQgChRVF5Z/oOOBLn2ckUgV3GYJ9yExvViCfspXptE5PZTIpxZ1bWICNlc3WveL0bbgpPDP3XuXTVHP1p/uwnVIG8J+PSfJjCgRP/7xR/Hv2DJJnfl35iJh8cQMZB01p/EEqPlCESlolgFsxHViipYltk1xNfoo3t8qPGD66NhARA/wMHktyTGX4HBkaawMow+6Y8LR9Nbuhnuci5D+4mTBzJwkiTG/1xby1G4W8D0nGMZKKJ/9MkjTjv1QrvQ/5IC1aVEjUpCT3PYmLza9el/Ywv35VWndRr0GsPepvhCM5V4LOWGF9HTwz6LXVq/cb1+u9luT4OfaYeMTH2K/o1yvrZ/8TRoVE4azVLybq71Yrl255Vugu+q1+IdiY3i01resILfLqUbQFhqd27Z6afqps89JlmnUnEUX3bEYi0Ao+bt5FOGfNFUYIhukrJgpO1rQ/GOOvoFbXwv4xD+xe2ax8k8tkDx3lm1IqH2qpRRQO/7i08NKP4YUjtLDV1Ns9a9TK6JPUJ6NmzbCCq0R8SmQFISpVXFWwhX1gzZpRMjCydeQ3gzzhD3lz3+YwtVvI407L9luunAPHmynrj5jm53QfGz11rtyq2bWo1mndDtfO18jMCXO9mmPLZs+evU23xZFSZlKo4mronrTL21OHVo+nrGi4oWWZYdXrvOAMJVxbqGAfOsJjF5y8eD9IDW/6f/5RoNkIWeD25RpE4bztvPBtlBP0iiOc3AL3lP3WN7557sG5prwTextyfZ6VhM6w+TYYZolvlySl7o5ObKu01R+nVGfhLNnvk23CG3JARMautFgbC26fr30wsxceQW0JWQviFtROYITkG7VKl8ny6YLrLMjMblRiQV8xHyuxsrbszHCccGQ4wxMVjb2P0pbMT66G37gibYXRv7dnE9G9dteSf8roCmuW7axX+igJg0M1V0rrbA0tB9/8KDdKHzdHRQUxxDDVukiBhFCTo2jAs8Eyxj4mto+pZYz+c6jMIakMrvWnWDSryS1JvlLySvISLoNbmrRMnav6TRmmiE0WdCa8KQKv5Vfn7ijrimnwIWpC1IcGMa4UV/AL8wTzi2AXfABKs0MRtSJSfAKkoFqTJr5HvofaKRl5MBltpVTE1ujXGo3c9V0TxyPN3YicMdd11Bs3oa6roacl2qCxq4Fj4lh3PXdDct7V2Nlg3KT60SuvWdw0J5TvdvyHssq23rPeRl+3DL2Gok1ZZXcf9zRhmqtOa7izHUcSHQkq4qgjNT2asHriEfuh6Llqtjo3OkEN1dU1RxRLuEXZJRJlUYG4lDQnaw64SocSvoa9Vw7cXMfpPCjyiiXCoqwasIWEZQvyb1CI3E8m4Ra3rqV8uQTVmVE5w6l+FIESwg5bIsMSjpWJtBzeWE7uAsO781fPjOObxl3ZWjoq7PEx0aevBP3MgB9jko7Bj0A62jKfssZpJptOLwT72ozY76CPhHLpY0C7bDYrNHAa7l/20emZm1i+okU+Yc3/DayFA3tHN2tiSvhmQH8a5jzhvzAqo/kC5vt5i6SQiQT40UcNmb1yqyjgEJ1ipDu6SPiHMkIBiKoP8CufasWDw2tsbIkDUkk2dqPQQ3VjkOBkOcPCrM6wHMsbZrmJyIdqkoOtPxAMhBMAuDAZbgQh2OlGYcRZN4YQ3GY5ww+MzpLoWN4w0k3EPn81R7vx0uhXQaPoYHMAsjx5XUttTspjsZn/C0MejMyaZ3l/KIkwF5qyjhR/4oSyv23SNrSqHrzwCB+HPR8OA8Ms3KHVMqrO66rysW1Ky+PilUCGOq8O2DiEJBabeL6yshRK2Kho+TlfUJANDGlvR4T8QTKBRMsDGqWax36KIOG2eoH8ZCtoV0R5YKDslgw+LplDgypgYI6v1kGWKsUdyGytot48F5an1YxvP8S72aZ8OqmBhMlic7g8Pl3n0zQgPQaewjGzN/5lUqR5f75DClHP9xkHKs7b5o4cXVlMEadg+KnC2Wh6pMXsyNakZ5dZyUwbdYqdokelPU3h7JAPZrq1MW90hP5psQA=') format('woff2'), + url('iconfont.woff?t=1709261443399') format('woff'), + url('iconfont.ttf?t=1709261443399') format('truetype'); +} + +.custom-icon { + font-family: "custom-icon" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.custom-icon-pinlei:before { + content: "\e6ad"; +} + +.custom-icon-gongzuofangshipx:before { + content: "\e63c"; +} + +.custom-icon-weight:before { + content: "\e622"; +} + +.custom-icon-xueli-:before { + content: "\e60e"; +} + +.custom-icon-hujidi:before { + content: "\e602"; +} + +.custom-icon-ceshengao:before { + content: "\e92e"; +} + +.custom-icon-hujichangzhudizhi:before { + content: "\e6bb"; +} + +.custom-icon-duotianweishangketixing:before { + content: "\e64d"; +} + +.custom-icon-yuyan:before { + content: "\f31e"; +} + +.custom-icon-chushengriqi:before { + content: "\e63f"; +} + diff --git a/litemall-wx/static/fonts/iconfont.js b/litemall-wx/static/fonts/iconfont.js new file mode 100644 index 0000000000000000000000000000000000000000..29c4b37c56cf998b1e451dd00e4dd7aeaf20723b --- /dev/null +++ b/litemall-wx/static/fonts/iconfont.js @@ -0,0 +1 @@ +window._iconfont_svg_string_4446498='',function(h){var c=(c=document.getElementsByTagName("script"))[c.length-1],t=c.getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var i,a,e,o,l,m=function(c,t){t.parentNode.insertBefore(c,t)};if(t&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}i=function(){var c,t=document.createElement("div");t.innerHTML=h._iconfont_svg_string_4446498,(t=t.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",t=t,(c=document.body).firstChild?m(t,c.firstChild):c.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(i,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),i()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(e=i,o=h.document,l=!1,s(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,n())})}function n(){l||(l=!0,e())}function s(){try{o.documentElement.doScroll("left")}catch(c){return void setTimeout(s,50)}n()}}(window); \ No newline at end of file diff --git a/litemall-wx/static/fonts/iconfont.json b/litemall-wx/static/fonts/iconfont.json new file mode 100644 index 0000000000000000000000000000000000000000..25f44026f5863d3988b4f1b0072965146dd85889 --- /dev/null +++ b/litemall-wx/static/fonts/iconfont.json @@ -0,0 +1,79 @@ +{ + "id": "4446498", + "name": "c", + "font_family": "custom-icon", + "css_prefix_text": "custom-icon-", + "description": "", + "glyphs": [ + { + "icon_id": "33990514", + "name": "品类", + "font_class": "pinlei", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "3308770", + "name": "工作方式246px", + "font_class": "gongzuofangshipx", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "3921673", + "name": "体重", + "font_class": "weight", + "unicode": "e622", + "unicode_decimal": 58914 + }, + { + "icon_id": "5814922", + "name": "学历", + "font_class": "xueli-", + "unicode": "e60e", + "unicode_decimal": 58894 + }, + { + "icon_id": "12662687", + "name": "户籍地", + "font_class": "hujidi", + "unicode": "e602", + "unicode_decimal": 58882 + }, + { + "icon_id": "16198848", + "name": "测身高", + "font_class": "ceshengao", + "unicode": "e92e", + "unicode_decimal": 59694 + }, + { + "icon_id": "17539034", + "name": "户籍常住地址", + "font_class": "hujichangzhudizhi", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "19552466", + "name": "时薪招聘", + "font_class": "duotianweishangketixing", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "20417748", + "name": "语言", + "font_class": "yuyan", + "unicode": "f31e", + "unicode_decimal": 62238 + }, + { + "icon_id": "25251131", + "name": "出生日期", + "font_class": "chushengriqi", + "unicode": "e63f", + "unicode_decimal": 58943 + } + ] +} diff --git a/litemall-wx/static/fonts/iconfont.ttf b/litemall-wx/static/fonts/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..aa1354c05a3fa74e374d7ab28b2b3edce3a9c3ab Binary files /dev/null and b/litemall-wx/static/fonts/iconfont.ttf differ diff --git a/litemall-wx/static/fonts/iconfont.woff b/litemall-wx/static/fonts/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..b90d24bf7ec32578f5fb749bf3045fa5fe0b2949 Binary files /dev/null and b/litemall-wx/static/fonts/iconfont.woff differ diff --git a/litemall-wx/static/fonts/iconfont.woff2 b/litemall-wx/static/fonts/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6905a00a92da66339a096c08a80448cc784559af Binary files /dev/null and b/litemall-wx/static/fonts/iconfont.woff2 differ diff --git a/litemall-wx/static/images/about.png b/litemall-wx/static/images/about.png deleted file mode 100644 index dbc47874543031cfff5a3f62bcfe910c066d41f1..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/about.png and /dev/null differ diff --git a/litemall-wx/static/images/address.png b/litemall-wx/static/images/address.png deleted file mode 100644 index df6e3a93b86a36ff13720a7380db48113364653b..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/address.png and /dev/null differ diff --git a/litemall-wx/static/images/aftersale.png b/litemall-wx/static/images/aftersale.png deleted file mode 100644 index ed338acedb0920aa8a60635f4bfc3e7149f87158..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/aftersale.png and /dev/null differ diff --git a/litemall-wx/static/images/cart.png b/litemall-wx/static/images/cart.png deleted file mode 100644 index 3c9a08ce4a9fe378815caeadc1fa419d4c782cad..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/cart.png and /dev/null differ diff --git a/litemall-wx/static/images/cart@selected.png b/litemall-wx/static/images/cart@selected.png deleted file mode 100644 index d46f0de182e0b9e70a3291ca5036c8cc2454f73f..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/cart@selected.png and /dev/null differ diff --git a/litemall-wx/static/images/category.png b/litemall-wx/static/images/category.png deleted file mode 100644 index 8ffb7c844eb9f51a2f2bf1fd6a78b6793532085b..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/category.png and /dev/null differ diff --git a/litemall-wx/static/images/category@selected.png b/litemall-wx/static/images/category@selected.png deleted file mode 100644 index e9e7efc0d386f4ab54fdc034d5dbb965b785a74a..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/category@selected.png and /dev/null differ diff --git a/litemall-wx/static/images/comment.png b/litemall-wx/static/images/comment.png deleted file mode 100644 index 9b2722fa84051e3a8b284bff61ec1e37913beb0d..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/comment.png and /dev/null differ diff --git a/litemall-wx/static/images/coupon.png b/litemall-wx/static/images/coupon.png deleted file mode 100644 index 7efd62bf47c0a9793f7f57bdb6a14a168f7fd6bb..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/coupon.png and /dev/null differ diff --git a/litemall-wx/static/images/feedback.png b/litemall-wx/static/images/feedback.png deleted file mode 100644 index fa80d4f9eef7790818d16d1231ed6f4fce9b0ccf..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/feedback.png and /dev/null differ diff --git a/litemall-wx/static/images/footprint.png b/litemall-wx/static/images/footprint.png deleted file mode 100644 index 32d24f7a808220d57572d402dd343333b876bc43..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/footprint.png and /dev/null differ diff --git a/litemall-wx/static/images/geren.png b/litemall-wx/static/images/geren.png new file mode 100644 index 0000000000000000000000000000000000000000..a366a07277403a0b853470c2757800ef1d902880 Binary files /dev/null and b/litemall-wx/static/images/geren.png differ diff --git a/litemall-wx/static/images/gerens.png b/litemall-wx/static/images/gerens.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f68bafd6abec53ed161a434510bb4c454ddd20 Binary files /dev/null and b/litemall-wx/static/images/gerens.png differ diff --git a/litemall-wx/static/images/group.png b/litemall-wx/static/images/group.png deleted file mode 100644 index e8eb0a04d2095c3e3904bc6ca3d0af2376717334..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/group.png and /dev/null differ diff --git a/litemall-wx/static/images/help.png b/litemall-wx/static/images/help.png deleted file mode 100644 index 4adc4b80b352757bfe628d4879445fafaa0f1ab5..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/help.png and /dev/null differ diff --git a/litemall-wx/static/images/home.png b/litemall-wx/static/images/home.png deleted file mode 100644 index 4e3df7884636bb7551563beeb09582844e66e2d0..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/home.png and /dev/null differ diff --git a/litemall-wx/static/images/home@selected.png b/litemall-wx/static/images/home@selected.png deleted file mode 100644 index b1d3723b3b3c2f6d124ff7b37193110adaed9274..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/home@selected.png and /dev/null differ diff --git a/litemall-wx/static/images/hot.png b/litemall-wx/static/images/hot.png deleted file mode 100644 index 3bc7a7266db7034bbbfef83ba386495e602a3bfd..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/hot.png and /dev/null differ diff --git a/litemall-wx/static/images/icon/ceshengao.png b/litemall-wx/static/images/icon/ceshengao.png new file mode 100644 index 0000000000000000000000000000000000000000..f851c4e2bc37c7ac152a8562133741f82be646ca Binary files /dev/null and b/litemall-wx/static/images/icon/ceshengao.png differ diff --git a/litemall-wx/static/images/icon/chushengriqi.png b/litemall-wx/static/images/icon/chushengriqi.png new file mode 100644 index 0000000000000000000000000000000000000000..e404f9a04f4400fcaee5ff1ee40c70f8b8465260 Binary files /dev/null and b/litemall-wx/static/images/icon/chushengriqi.png differ diff --git a/litemall-wx/static/images/icon/dianhuahaoma.png b/litemall-wx/static/images/icon/dianhuahaoma.png new file mode 100644 index 0000000000000000000000000000000000000000..0e28f048e5bc6afd0f99df4fc74a897993424050 Binary files /dev/null and b/litemall-wx/static/images/icon/dianhuahaoma.png differ diff --git a/litemall-wx/static/images/icon/duotianweishangketixing.png b/litemall-wx/static/images/icon/duotianweishangketixing.png new file mode 100644 index 0000000000000000000000000000000000000000..b98528fdc7158920ef0f46cbe85d585e503051e5 Binary files /dev/null and b/litemall-wx/static/images/icon/duotianweishangketixing.png differ diff --git a/litemall-wx/static/images/icon/fengge.png b/litemall-wx/static/images/icon/fengge.png new file mode 100644 index 0000000000000000000000000000000000000000..585cb5353c4d7b9f8819b9428eeec6a45ff7d69a Binary files /dev/null and b/litemall-wx/static/images/icon/fengge.png differ diff --git a/litemall-wx/static/images/icon/gongsidizhiicon.png b/litemall-wx/static/images/icon/gongsidizhiicon.png new file mode 100644 index 0000000000000000000000000000000000000000..72f358b4abdb6d883fa9b804c8bfe285ca08b9f7 Binary files /dev/null and b/litemall-wx/static/images/icon/gongsidizhiicon.png differ diff --git a/litemall-wx/static/images/icon/gongsimingcheng.png b/litemall-wx/static/images/icon/gongsimingcheng.png new file mode 100644 index 0000000000000000000000000000000000000000..c5f27795e50bea6ab83846c16562f86f14107265 Binary files /dev/null and b/litemall-wx/static/images/icon/gongsimingcheng.png differ diff --git a/litemall-wx/static/images/icon/gongzuofangshipx.png b/litemall-wx/static/images/icon/gongzuofangshipx.png new file mode 100644 index 0000000000000000000000000000000000000000..f9abe7edc9af78a8791216edc4c6fa575013c619 Binary files /dev/null and b/litemall-wx/static/images/icon/gongzuofangshipx.png differ diff --git a/litemall-wx/static/images/icon/hujichangzhudizhi.png b/litemall-wx/static/images/icon/hujichangzhudizhi.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd42d7edf3a7e06a0bc93b4d2edde167f5b98f6 Binary files /dev/null and b/litemall-wx/static/images/icon/hujichangzhudizhi.png differ diff --git a/litemall-wx/static/images/icon/hujidi.png b/litemall-wx/static/images/icon/hujidi.png new file mode 100644 index 0000000000000000000000000000000000000000..d4ea4e89ee9dc54ef52ef3992dc0b763cbf7d445 Binary files /dev/null and b/litemall-wx/static/images/icon/hujidi.png differ diff --git a/litemall-wx/static/images/icon/icon-boy.png b/litemall-wx/static/images/icon/icon-boy.png new file mode 100644 index 0000000000000000000000000000000000000000..bf2df819b16b1b11ec5ec3ad0654ad76a4ca7810 Binary files /dev/null and b/litemall-wx/static/images/icon/icon-boy.png differ diff --git a/litemall-wx/static/images/icon/leixing.png b/litemall-wx/static/images/icon/leixing.png new file mode 100644 index 0000000000000000000000000000000000000000..ca725573d06528b16dfee103048da46713446258 Binary files /dev/null and b/litemall-wx/static/images/icon/leixing.png differ diff --git a/litemall-wx/static/images/icon/lianjie.png b/litemall-wx/static/images/icon/lianjie.png new file mode 100644 index 0000000000000000000000000000000000000000..cbfe4edc56309e031294ab61dd6b5f926e3799aa Binary files /dev/null and b/litemall-wx/static/images/icon/lianjie.png differ diff --git a/litemall-wx/static/images/icon/lianxiren.png b/litemall-wx/static/images/icon/lianxiren.png new file mode 100644 index 0000000000000000000000000000000000000000..47bf3da4c0b3185fd37b274a8503bc460fd982eb Binary files /dev/null and b/litemall-wx/static/images/icon/lianxiren.png differ diff --git a/litemall-wx/static/images/icon/pinlei.png b/litemall-wx/static/images/icon/pinlei.png new file mode 100644 index 0000000000000000000000000000000000000000..29b403e514e6449b943844cf84300bdc7988ed22 Binary files /dev/null and b/litemall-wx/static/images/icon/pinlei.png differ diff --git a/litemall-wx/static/images/icon/pinlei1.png b/litemall-wx/static/images/icon/pinlei1.png new file mode 100644 index 0000000000000000000000000000000000000000..cedfc6a54e31dd6d132de137f15a0320a5f7dd09 Binary files /dev/null and b/litemall-wx/static/images/icon/pinlei1.png differ diff --git a/litemall-wx/static/images/icon/sex.png b/litemall-wx/static/images/icon/sex.png new file mode 100644 index 0000000000000000000000000000000000000000..7af7a3b6ea259998b8260c96e6d71c1fdf18563d Binary files /dev/null and b/litemall-wx/static/images/icon/sex.png differ diff --git a/litemall-wx/static/images/icon/shipin.png b/litemall-wx/static/images/icon/shipin.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ada967a3e5e365ae7a66d4ad523dc8be5730c7 Binary files /dev/null and b/litemall-wx/static/images/icon/shipin.png differ diff --git a/litemall-wx/static/images/icon/tupian.png b/litemall-wx/static/images/icon/tupian.png new file mode 100644 index 0000000000000000000000000000000000000000..2ccf1739b4cd3686ec3044f6d799de931a5223b0 Binary files /dev/null and b/litemall-wx/static/images/icon/tupian.png differ diff --git a/litemall-wx/static/images/icon/weight.png b/litemall-wx/static/images/icon/weight.png new file mode 100644 index 0000000000000000000000000000000000000000..b804266cba3619b675b3ee600b1eb25d2d55d038 Binary files /dev/null and b/litemall-wx/static/images/icon/weight.png differ diff --git a/litemall-wx/static/images/icon/xingming.png b/litemall-wx/static/images/icon/xingming.png new file mode 100644 index 0000000000000000000000000000000000000000..87b3ce9e7af6476719e3c56ff39f3764524f2a2c Binary files /dev/null and b/litemall-wx/static/images/icon/xingming.png differ diff --git a/litemall-wx/static/images/icon/xueli-.png b/litemall-wx/static/images/icon/xueli-.png new file mode 100644 index 0000000000000000000000000000000000000000..64e653f51243fbb0d408b9e38415e0ae755e45a2 Binary files /dev/null and b/litemall-wx/static/images/icon/xueli-.png differ diff --git a/litemall-wx/static/images/icon/yly_qianzhuang.png b/litemall-wx/static/images/icon/yly_qianzhuang.png new file mode 100644 index 0000000000000000000000000000000000000000..80d674bea60b6e18f528e5850f3c27b67c6f61c2 Binary files /dev/null and b/litemall-wx/static/images/icon/yly_qianzhuang.png differ diff --git a/litemall-wx/static/images/icon/yuyan.png b/litemall-wx/static/images/icon/yuyan.png new file mode 100644 index 0000000000000000000000000000000000000000..70d91e38b934748b7a12b73c3b5d3514dc6c14bf Binary files /dev/null and b/litemall-wx/static/images/icon/yuyan.png differ diff --git a/litemall-wx/static/images/icon/zhuyingyewu.png b/litemall-wx/static/images/icon/zhuyingyewu.png new file mode 100644 index 0000000000000000000000000000000000000000..2f61cccf9dfc6083fd2791e76371cdca5275cf59 Binary files /dev/null and b/litemall-wx/static/images/icon/zhuyingyewu.png differ diff --git a/litemall-wx/static/images/icon_error.png b/litemall-wx/static/images/icon_error.png deleted file mode 100644 index b13c94ba6c9c11713b10a7d31c6a4364a4cf8a98..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/icon_error.png and /dev/null differ diff --git a/litemall-wx/static/images/mobile.png b/litemall-wx/static/images/mobile.png deleted file mode 100644 index d48b2bc7a2352886cf012a9794b26f40538d5b10..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/mobile.png and /dev/null differ diff --git a/litemall-wx/static/images/my.png b/litemall-wx/static/images/my.png deleted file mode 100644 index 0a401a8b34707cb5dfe3999f28b2439f4bb4d458..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/my.png and /dev/null differ diff --git a/litemall-wx/static/images/my@selected.png b/litemall-wx/static/images/my@selected.png deleted file mode 100644 index 32aa4aada4723fcb8dfe9938689bbc6f5ad71309..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/my@selected.png and /dev/null differ diff --git a/litemall-wx/static/images/new.png b/litemall-wx/static/images/new.png deleted file mode 100644 index e003f91ccdee64998cab25d32178f6130e811f2b..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/new.png and /dev/null differ diff --git a/litemall-wx/static/images/pendpay.png b/litemall-wx/static/images/pendpay.png deleted file mode 100644 index 0ab0c263a0dbc22aa76e8315e481ff6b4ee849e3..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/pendpay.png and /dev/null differ diff --git a/litemall-wx/static/images/receive.png b/litemall-wx/static/images/receive.png deleted file mode 100644 index bad66f4c372de5f1ebc14c373db83ee19ee65540..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/receive.png and /dev/null differ diff --git a/litemall-wx/static/images/send.png b/litemall-wx/static/images/send.png deleted file mode 100644 index d8e481810b14891407863b1e990b5cb8aa3efb64..0000000000000000000000000000000000000000 Binary files a/litemall-wx/static/images/send.png and /dev/null differ diff --git a/litemall-wx/static/images/shouye.png b/litemall-wx/static/images/shouye.png new file mode 100644 index 0000000000000000000000000000000000000000..c2cd02238b56eb924a446f72d09ded0c47cdc202 Binary files /dev/null and b/litemall-wx/static/images/shouye.png differ diff --git a/litemall-wx/static/images/shouyes.png b/litemall-wx/static/images/shouyes.png new file mode 100644 index 0000000000000000000000000000000000000000..34e279454ccffb463fd25b4cb73374f5fa3b9a69 Binary files /dev/null and b/litemall-wx/static/images/shouyes.png differ diff --git a/litemall-wx/static/images/xiaoxi.png b/litemall-wx/static/images/xiaoxi.png new file mode 100644 index 0000000000000000000000000000000000000000..ec2160e871016830cce263c0a33ba68df0e40732 Binary files /dev/null and b/litemall-wx/static/images/xiaoxi.png differ diff --git a/litemall-wx/static/images/xiaoxis.png b/litemall-wx/static/images/xiaoxis.png new file mode 100644 index 0000000000000000000000000000000000000000..1ecbf0cffb52155f0448fef1f3aadb746f1a42de Binary files /dev/null and b/litemall-wx/static/images/xiaoxis.png differ diff --git a/litemall-wx/utils/WxValidate.js b/litemall-wx/utils/WxValidate.js new file mode 100644 index 0000000000000000000000000000000000000000..f626c75e643577a9122288c78d63bef5e49f6ee0 --- /dev/null +++ b/litemall-wx/utils/WxValidate.js @@ -0,0 +1,418 @@ +/** + * 表单验证 + * + * @param {Object} rules 验证字段的规则 + * @param {Object} messages 验证字段的提示信息 + * + */ +class WxValidate { + constructor(rules = {}, messages = {}) { + Object.assign(this, { + data: {}, + rules, + messages, + }) + this.__init() + } + + /** + * __init + */ + __init() { + this.__initMethods() + this.__initDefaults() + this.__initData() + } + + /** + * 初始化数据 + */ + __initData() { + this.form = {} + this.errorList = [] + } + + /** + * 初始化默认提示信息 + */ + __initDefaults() { + this.defaults = { + messages: { + required: '这是必填字段。', + email: '请输入有效的电子邮件地址。', + tel: '请输入11位的手机号码。', + url: '请输入有效的网址。', + date: '请输入有效的日期。', + dateISO: '请输入有效的日期(ISO),例如:2009-06-23,1998/01/22。', + number: '请输入有效的数字。', + digits: '只能输入数字。', + idcard: '请输入18位的有效身份证。', + equalTo: this.formatTpl('输入值必须和 {0} 相同。'), + contains: this.formatTpl('输入值必须包含 {0}。'), + minlength: this.formatTpl('最少要输入 {0} 个字符。'), + maxlength: this.formatTpl('最多可以输入 {0} 个字符。'), + rangelength: this.formatTpl('请输入长度在 {0} 到 {1} 之间的字符。'), + min: this.formatTpl('请输入不小于 {0} 的数值。'), + max: this.formatTpl('请输入不大于 {0} 的数值。'), + range: this.formatTpl('请输入范围在 {0} 到 {1} 之间的数值。'), + } + } + } + + /** + * 初始化默认验证方法 + */ + __initMethods() { + const that = this + that.methods = { + /** + * 验证必填元素 + */ + required(value, param) { + if (!that.depend(param)) { + return 'dependency-mismatch' + } else if (typeof value === 'number') { + value = value.toString() + } else if (typeof value === 'boolean') { + return !0 + } + + return value.length > 0 + }, + /** + * 验证电子邮箱格式 + */ + email(value) { + return that.optional(value) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value) + }, + /** + * 验证手机格式 + */ + tel(value) { + return that.optional(value) || /^1[34578]\d{9}$/.test(value) + }, + /** + * 验证URL格式 + */ + url(value) { + return that.optional(value) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value) + }, + /** + * 验证日期格式 + */ + date(value) { + return that.optional(value) || !/Invalid|NaN/.test(new Date(value).toString()) + }, + /** + * 验证ISO类型的日期格式 + */ + dateISO(value) { + return that.optional(value) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value) + }, + /** + * 验证十进制数字 + */ + number(value) { + return that.optional(value) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value) + }, + /** + * 验证整数 + */ + digits(value) { + return that.optional(value) || /^\d+$/.test(value) + }, + /** + * 验证身份证号码 + */ + idcard(value) { + return that.optional(value) || /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value) + }, + /** + * 验证两个输入框的内容是否相同 + */ + equalTo(value, param) { + return that.optional(value) || value === that.data[param] + }, + /** + * 验证是否包含某个值 + */ + contains(value, param) { + return that.optional(value) || value.indexOf(param) >= 0 + }, + /** + * 验证最小长度 + */ + minlength(value, param) { + return that.optional(value) || value.length >= param + }, + /** + * 验证最大长度 + */ + maxlength(value, param) { + return that.optional(value) || value.length <= param + }, + /** + * 验证一个长度范围[min, max] + */ + rangelength(value, param) { + return that.optional(value) || (value.length >= param[0] && value.length <= param[1]) + }, + /** + * 验证最小值 + */ + min(value, param) { + return that.optional(value) || value >= param + }, + /** + * 验证最大值 + */ + max(value, param) { + return that.optional(value) || value <= param + }, + /** + * 验证一个值范围[min, max] + */ + range(value, param) { + return that.optional(value) || (value >= param[0] && value <= param[1]) + }, + } + } + + /** + * 添加自定义验证方法 + * @param {String} name 方法名 + * @param {Function} method 函数体,接收两个参数(value, param),value表示元素的值,param表示参数 + * @param {String} message 提示信息 + */ + addMethod(name, method, message) { + this.methods[name] = method + this.defaults.messages[name] = message !== undefined ? message : this.defaults.messages[name] + } + + /** + * 判断验证方法是否存在 + */ + isValidMethod(value) { + let methods = [] + for (let method in this.methods) { + if (method && typeof this.methods[method] === 'function') { + methods.push(method) + } + } + return methods.indexOf(value) !== -1 + } + + /** + * 格式化提示信息模板 + */ + formatTpl(source, params) { + const that = this + if (arguments.length === 1) { + return function() { + let args = Array.from(arguments) + args.unshift(source) + return that.formatTpl.apply(this, args) + } + } + if (params === undefined) { + return source + } + if (arguments.length > 2 && params.constructor !== Array) { + params = Array.from(arguments).slice(1) + } + if (params.constructor !== Array) { + params = [params] + } + params.forEach(function(n, i) { + source = source.replace(new RegExp("\\{" + i + "\\}", "g"), function() { + return n + }) + }) + return source + } + + /** + * 判断规则依赖是否存在 + */ + depend(param) { + switch (typeof param) { + case 'boolean': + param = param + break + case 'string': + param = !!param.length + break + case 'function': + param = param() + default: + param = !0 + } + return param + } + + /** + * 判断输入值是否为空 + */ + optional(value) { + return !this.methods.required(value) && 'dependency-mismatch' + } + + /** + * 获取自定义字段的提示信息 + * @param {String} param 字段名 + * @param {Object} rule 规则 + */ + customMessage(param, rule) { + const params = this.messages[param] + const isObject = typeof params === 'object' + if (params && isObject) return params[rule.method] + } + + /** + * 获取某个指定字段的提示信息 + * @param {String} param 字段名 + * @param {Object} rule 规则 + */ + defaultMessage(param, rule) { + let message = this.customMessage(param, rule) || this.defaults.messages[rule.method] + let type = typeof message + + if (type === 'undefined') { + message = `Warning: No message defined for ${rule.method}.` + } else if (type === 'function') { + message = message.call(this, rule.parameters) + } + + return message + } + + /** + * 缓存错误信息 + * @param {String} param 字段名 + * @param {Object} rule 规则 + * @param {String} value 元素的值 + */ + formatTplAndAdd(param, rule, value) { + let msg = this.defaultMessage(param, rule) + + this.errorList.push({ + param: param, + msg: msg, + value: value, + }) + } + + /** + * 验证某个指定字段的规则 + * @param {String} param 字段名 + * @param {Object} rules 规则 + * @param {Object} data 需要验证的数据对象 + */ + checkParam(param, rules, data) { + + // 缓存数据对象 + this.data = data + + // 缓存字段对应的值 + const value = data[param] !== null && data[param] !== undefined ? data[param] : '' + + // 遍历某个指定字段的所有规则,依次验证规则,否则缓存错误信息 + for (let method in rules) { + + // 判断验证方法是否存在 + if (this.isValidMethod(method)) { + + // 缓存规则的属性及值 + const rule = { + method: method, + parameters: rules[method] + } + + // 调用验证方法 + const result = this.methods[method](value, rule.parameters) + + // 若result返回值为dependency-mismatch,则说明该字段的值为空或非必填字段 + if (result === 'dependency-mismatch') { + continue + } + + this.setValue(param, method, result, value) + + // 判断是否通过验证,否则缓存错误信息,跳出循环 + if (!result) { + this.formatTplAndAdd(param, rule, value) + break + } + } + } + } + + /** + * 设置字段的默认验证值 + * @param {String} param 字段名 + */ + setView(param) { + this.form[param] = { + $name: param, + $valid: true, + $invalid: false, + $error: {}, + $success: {}, + $viewValue: ``, + } + } + + /** + * 设置字段的验证值 + * @param {String} param 字段名 + * @param {String} method 字段的方法 + * @param {Boolean} result 是否通过验证 + * @param {String} value 字段的值 + */ + setValue(param, method, result, value) { + const params = this.form[param] + params.$valid = result + params.$invalid = !result + params.$error[method] = !result + params.$success[method] = result + params.$viewValue = value + } + + /** + * 验证所有字段的规则,返回验证是否通过 + * @param {Object} data 需要验证数据对象 + */ + checkForm(data) { + this.__initData() + + for (let param in this.rules) { + this.setView(param) + this.checkParam(param, this.rules[param], data) + } + + return this.valid() + } + + /** + * 返回验证是否通过 + */ + valid() { + return this.size() === 0 + } + + /** + * 返回错误信息的个数 + */ + size() { + return this.errorList.length + } + + /** + * 返回所有错误信息 + */ + validationErrors() { + return this.errorList + } +} + +export default WxValidate \ No newline at end of file diff --git a/litemall-wx/utils/area.js b/litemall-wx/utils/area.js index 83f41a8d9efb8d1cd8d31c3342eba070a1437fc4..cf4f2c59ae7494fff9a8e3a812637723484edebc 100644 --- a/litemall-wx/utils/area.js +++ b/litemall-wx/utils/area.js @@ -1,3296 +1,3751 @@ -var areaList = -{ - "province_list": { - "110000": "北京市", - "120000": "天津市", - "130000": "河北省", - "140000": "山西省", - "150000": "内蒙古自治区", - "210000": "辽宁省", - "220000": "吉林省", - "230000": "黑龙江省", - "310000": "上海市", - "320000": "江苏省", - "330000": "浙江省", - "340000": "安徽省", - "350000": "福建省", - "360000": "江西省", - "370000": "山东省", - "410000": "河南省", - "420000": "湖北省", - "430000": "湖南省", - "440000": "广东省", - "450000": "广西壮族自治区", - "460000": "海南省", - "500000": "重庆市", - "510000": "四川省", - "520000": "贵州省", - "530000": "云南省", - "540000": "西藏自治区", - "610000": "陕西省", - "620000": "甘肃省", - "630000": "青海省", - "640000": "宁夏回族自治区", - "650000": "新疆维吾尔自治区" - }, - "city_list": { - "110100": "市辖区", - "120100": "市辖区", - "130100": "石家庄市", - "130200": "唐山市", - "130300": "秦皇岛市", - "130400": "邯郸市", - "130500": "邢台市", - "130600": "保定市", - "130700": "张家口市", - "130800": "承德市", - "130900": "沧州市", - "131000": "廊坊市", - "131100": "衡水市", - "139000": "省直辖县级行政区划", - "140100": "太原市", - "140200": "大同市", - "140300": "阳泉市", - "140400": "长治市", - "140500": "晋城市", - "140600": "朔州市", - "140700": "晋中市", - "140800": "运城市", - "140900": "忻州市", - "141000": "临汾市", - "141100": "吕梁市", - "150100": "呼和浩特市", - "150200": "包头市", - "150300": "乌海市", - "150400": "赤峰市", - "150500": "通辽市", - "150600": "鄂尔多斯市", - "150700": "呼伦贝尔市", - "150800": "巴彦淖尔市", - "150900": "乌兰察布市", - "152200": "兴安盟", - "152500": "锡林郭勒盟", - "152900": "阿拉善盟", - "210100": "沈阳市", - "210200": "大连市", - "210300": "鞍山市", - "210400": "抚顺市", - "210500": "本溪市", - "210600": "丹东市", - "210700": "锦州市", - "210800": "营口市", - "210900": "阜新市", - "211000": "辽阳市", - "211100": "盘锦市", - "211200": "铁岭市", - "211300": "朝阳市", - "211400": "葫芦岛市", - "220100": "长春市", - "220200": "吉林市", - "220300": "四平市", - "220400": "辽源市", - "220500": "通化市", - "220600": "白山市", - "220700": "松原市", - "220800": "白城市", - "222400": "延边朝鲜族自治州", - "230100": "哈尔滨市", - "230200": "齐齐哈尔市", - "230300": "鸡西市", - "230400": "鹤岗市", - "230500": "双鸭山市", - "230600": "大庆市", - "230700": "伊春市", - "230800": "佳木斯市", - "230900": "七台河市", - "231000": "牡丹江市", - "231100": "黑河市", - "231200": "绥化市", - "232700": "大兴安岭地区", - "310100": "市辖区", - "320100": "南京市", - "320200": "无锡市", - "320300": "徐州市", - "320400": "常州市", - "320500": "苏州市", - "320600": "南通市", - "320700": "连云港市", - "320800": "淮安市", - "320900": "盐城市", - "321000": "扬州市", - "321100": "镇江市", - "321200": "泰州市", - "321300": "宿迁市", - "330100": "杭州市", - "330200": "宁波市", - "330300": "温州市", - "330400": "嘉兴市", - "330500": "湖州市", - "330600": "绍兴市", - "330700": "金华市", - "330800": "衢州市", - "330900": "舟山市", - "331000": "台州市", - "331100": "丽水市", - "340100": "合肥市", - "340200": "芜湖市", - "340300": "蚌埠市", - "340400": "淮南市", - "340500": "马鞍山市", - "340600": "淮北市", - "340700": "铜陵市", - "340800": "安庆市", - "341000": "黄山市", - "341100": "滁州市", - "341200": "阜阳市", - "341300": "宿州市", - "341500": "六安市", - "341600": "亳州市", - "341700": "池州市", - "341800": "宣城市", - "350100": "福州市", - "350200": "厦门市", - "350300": "莆田市", - "350400": "三明市", - "350500": "泉州市", - "350600": "漳州市", - "350700": "南平市", - "350800": "龙岩市", - "350900": "宁德市", - "360100": "南昌市", - "360200": "景德镇市", - "360300": "萍乡市", - "360400": "九江市", - "360500": "新余市", - "360600": "鹰潭市", - "360700": "赣州市", - "360800": "吉安市", - "360900": "宜春市", - "361000": "抚州市", - "361100": "上饶市", - "370100": "济南市", - "370200": "青岛市", - "370300": "淄博市", - "370400": "枣庄市", - "370500": "东营市", - "370600": "烟台市", - "370700": "潍坊市", - "370800": "济宁市", - "370900": "泰安市", - "371000": "威海市", - "371100": "日照市", - "371200": "莱芜市", - "371300": "临沂市", - "371400": "德州市", - "371500": "聊城市", - "371600": "滨州市", - "371700": "菏泽市", - "410100": "郑州市", - "410200": "开封市", - "410300": "洛阳市", - "410400": "平顶山市", - "410500": "安阳市", - "410600": "鹤壁市", - "410700": "新乡市", - "410800": "焦作市", - "410900": "濮阳市", - "411000": "许昌市", - "411100": "漯河市", - "411200": "三门峡市", - "411300": "南阳市", - "411400": "商丘市", - "411500": "信阳市", - "411600": "周口市", - "411700": "驻马店市", - "419000": "省直辖县级行政区划", - "420100": "武汉市", - "420200": "黄石市", - "420300": "十堰市", - "420500": "宜昌市", - "420600": "襄阳市", - "420700": "鄂州市", - "420800": "荆门市", - "420900": "孝感市", - "421000": "荆州市", - "421100": "黄冈市", - "421200": "咸宁市", - "421300": "随州市", - "422800": "恩施土家族苗族自治州", - "429000": "省直辖县级行政区划", - "430100": "长沙市", - "430200": "株洲市", - "430300": "湘潭市", - "430400": "衡阳市", - "430500": "邵阳市", - "430600": "岳阳市", - "430700": "常德市", - "430800": "张家界市", - "430900": "益阳市", - "431000": "郴州市", - "431100": "永州市", - "431200": "怀化市", - "431300": "娄底市", - "433100": "湘西土家族苗族自治州", - "440100": "广州市", - "440200": "韶关市", - "440300": "深圳市", - "440400": "珠海市", - "440500": "汕头市", - "440600": "佛山市", - "440700": "江门市", - "440800": "湛江市", - "440900": "茂名市", - "441200": "肇庆市", - "441300": "惠州市", - "441400": "梅州市", - "441500": "汕尾市", - "441600": "河源市", - "441700": "阳江市", - "441800": "清远市", - "441900": "东莞市", - "442000": "中山市", - "445100": "潮州市", - "445200": "揭阳市", - "445300": "云浮市", - "450100": "南宁市", - "450200": "柳州市", - "450300": "桂林市", - "450400": "梧州市", - "450500": "北海市", - "450600": "防城港市", - "450700": "钦州市", - "450800": "贵港市", - "450900": "玉林市", - "451000": "百色市", - "451100": "贺州市", - "451200": "河池市", - "451300": "来宾市", - "451400": "崇左市", - "460100": "海口市", - "460200": "三亚市", - "460300": "三沙市", - "460400": "儋州市", - "469000": "省直辖县级行政区划", - "500100": "市辖区", - "500200": "县", - "510100": "成都市", - "510300": "自贡市", - "510400": "攀枝花市", - "510500": "泸州市", - "510600": "德阳市", - "510700": "绵阳市", - "510800": "广元市", - "510900": "遂宁市", - "511000": "内江市", - "511100": "乐山市", - "511300": "南充市", - "511400": "眉山市", - "511500": "宜宾市", - "511600": "广安市", - "511700": "达州市", - "511800": "雅安市", - "511900": "巴中市", - "512000": "资阳市", - "513200": "阿坝藏族羌族自治州", - "513300": "甘孜藏族自治州", - "513400": "凉山彝族自治州", - "520100": "贵阳市", - "520200": "六盘水市", - "520300": "遵义市", - "520400": "安顺市", - "520500": "毕节市", - "520600": "铜仁市", - "522300": "黔西南布依族苗族自治州", - "522600": "黔东南苗族侗族自治州", - "522700": "黔南布依族苗族自治州", - "530100": "昆明市", - "530300": "曲靖市", - "530400": "玉溪市", - "530500": "保山市", - "530600": "昭通市", - "530700": "丽江市", - "530800": "普洱市", - "530900": "临沧市", - "532300": "楚雄彝族自治州", - "532500": "红河哈尼族彝族自治州", - "532600": "文山壮族苗族自治州", - "532800": "西双版纳傣族自治州", - "532900": "大理白族自治州", - "533100": "德宏傣族景颇族自治州", - "533300": "怒江傈僳族自治州", - "533400": "迪庆藏族自治州", - "540100": "拉萨市", - "540200": "日喀则市", - "540300": "昌都市", - "540400": "林芝市", - "540500": "山南市", - "542400": "那曲地区", - "542500": "阿里地区", - "610100": "西安市", - "610200": "铜川市", - "610300": "宝鸡市", - "610400": "咸阳市", - "610500": "渭南市", - "610600": "延安市", - "610700": "汉中市", - "610800": "榆林市", - "610900": "安康市", - "611000": "商洛市", - "620100": "兰州市", - "620200": "嘉峪关市", - "620300": "金昌市", - "620400": "白银市", - "620500": "天水市", - "620600": "武威市", - "620700": "张掖市", - "620800": "平凉市", - "620900": "酒泉市", - "621000": "庆阳市", - "621100": "定西市", - "621200": "陇南市", - "622900": "临夏回族自治州", - "623000": "甘南藏族自治州", - "630100": "西宁市", - "630200": "海东市", - "632200": "海北藏族自治州", - "632300": "黄南藏族自治州", - "632500": "海南藏族自治州", - "632600": "果洛藏族自治州", - "632700": "玉树藏族自治州", - "632800": "海西蒙古族藏族自治州", - "640100": "银川市", - "640200": "石嘴山市", - "640300": "吴忠市", - "640400": "固原市", - "640500": "中卫市", - "650100": "乌鲁木齐市", - "650200": "克拉玛依市", - "650400": "吐鲁番市", - "650500": "哈密市", - "652300": "昌吉回族自治州", - "652700": "博尔塔拉蒙古自治州", - "652800": "巴音郭楞蒙古自治州", - "652900": "阿克苏地区", - "653000": "克孜勒苏柯尔克孜自治州", - "653100": "喀什地区", - "653200": "和田地区", - "654000": "伊犁哈萨克自治州", - "654200": "塔城地区", - "654300": "阿勒泰地区", - "659000": "自治区直辖县级行政区划" - }, - "county_list": { - "110101": "东城区", - "110102": "西城区", - "110105": "朝阳区", - "110106": "丰台区", - "110107": "石景山区", - "110108": "海淀区", - "110109": "门头沟区", - "110111": "房山区", - "110112": "通州区", - "110113": "顺义区", - "110114": "昌平区", - "110115": "大兴区", - "110116": "怀柔区", - "110117": "平谷区", - "110118": "密云区", - "110119": "延庆区", - "120101": "和平区", - "120102": "河东区", - "120103": "河西区", - "120104": "南开区", - "120105": "河北区", - "120106": "红桥区", - "120110": "东丽区", - "120111": "西青区", - "120112": "津南区", - "120113": "北辰区", - "120114": "武清区", - "120115": "宝坻区", - "120116": "滨海新区", - "120117": "宁河区", - "120118": "静海区", - "120119": "蓟州区", - "130102": "长安区", - "130104": "桥西区", - "130105": "新华区", - "130107": "井陉矿区", - "130108": "裕华区", - "130109": "藁城区", - "130110": "鹿泉区", - "130111": "栾城区", - "130121": "井陉县", - "130123": "正定县", - "130125": "行唐县", - "130126": "灵寿县", - "130127": "高邑县", - "130128": "深泽县", - "130129": "赞皇县", - "130130": "无极县", - "130131": "平山县", - "130132": "元氏县", - "130133": "赵县", - "130183": "晋州市", - "130184": "新乐市", - "130202": "路南区", - "130203": "路北区", - "130204": "古冶区", - "130205": "开平区", - "130207": "丰南区", - "130208": "丰润区", - "130209": "曹妃甸区", - "130223": "滦县", - "130224": "滦南县", - "130225": "乐亭县", - "130227": "迁西县", - "130229": "玉田县", - "130281": "遵化市", - "130283": "迁安市", - "130302": "海港区", - "130303": "山海关区", - "130304": "北戴河区", - "130306": "抚宁区", - "130321": "青龙满族自治县", - "130322": "昌黎县", - "130324": "卢龙县", - "130402": "邯山区", - "130403": "丛台区", - "130404": "复兴区", - "130406": "峰峰矿区", - "130421": "邯郸县", - "130423": "临漳县", - "130424": "成安县", - "130425": "大名县", - "130426": "涉县", - "130427": "磁县", - "130428": "肥乡县", - "130429": "永年县", - "130430": "邱县", - "130431": "鸡泽县", - "130432": "广平县", - "130433": "馆陶县", - "130434": "魏县", - "130435": "曲周县", - "130481": "武安市", - "130502": "桥东区", - "130503": "桥西区", - "130521": "邢台县", - "130522": "临城县", - "130523": "内丘县", - "130524": "柏乡县", - "130525": "隆尧县", - "130526": "任县", - "130527": "南和县", - "130528": "宁晋县", - "130529": "巨鹿县", - "130530": "新河县", - "130531": "广宗县", - "130532": "平乡县", - "130533": "威县", - "130534": "清河县", - "130535": "临西县", - "130581": "南宫市", - "130582": "沙河市", - "130602": "竞秀区", - "130606": "莲池区", - "130607": "满城区", - "130608": "清苑区", - "130609": "徐水区", - "130623": "涞水县", - "130624": "阜平县", - "130626": "定兴县", - "130627": "唐县", - "130628": "高阳县", - "130629": "容城县", - "130630": "涞源县", - "130631": "望都县", - "130632": "安新县", - "130633": "易县", - "130634": "曲阳县", - "130635": "蠡县", - "130636": "顺平县", - "130637": "博野县", - "130638": "雄县", - "130681": "涿州市", - "130683": "安国市", - "130684": "高碑店市", - "130702": "桥东区", - "130703": "桥西区", - "130705": "宣化区", - "130706": "下花园区", - "130708": "万全区", - "130709": "崇礼区", - "130722": "张北县", - "130723": "康保县", - "130724": "沽源县", - "130725": "尚义县", - "130726": "蔚县", - "130727": "阳原县", - "130728": "怀安县", - "130730": "怀来县", - "130731": "涿鹿县", - "130732": "赤城县", - "130802": "双桥区", - "130803": "双滦区", - "130804": "鹰手营子矿区", - "130821": "承德县", - "130822": "兴隆县", - "130823": "平泉县", - "130824": "滦平县", - "130825": "隆化县", - "130826": "丰宁满族自治县", - "130827": "宽城满族自治县", - "130828": "围场满族蒙古族自治县", - "130902": "新华区", - "130903": "运河区", - "130921": "沧县", - "130922": "青县", - "130923": "东光县", - "130924": "海兴县", - "130925": "盐山县", - "130926": "肃宁县", - "130927": "南皮县", - "130928": "吴桥县", - "130929": "献县", - "130930": "孟村回族自治县", - "130981": "泊头市", - "130982": "任丘市", - "130983": "黄骅市", - "130984": "河间市", - "131002": "安次区", - "131003": "广阳区", - "131022": "固安县", - "131023": "永清县", - "131024": "香河县", - "131025": "大城县", - "131026": "文安县", - "131028": "大厂回族自治县", - "131081": "霸州市", - "131082": "三河市", - "131102": "桃城区", - "131103": "冀州区", - "131121": "枣强县", - "131122": "武邑县", - "131123": "武强县", - "131124": "饶阳县", - "131125": "安平县", - "131126": "故城县", - "131127": "景县", - "131128": "阜城县", - "131182": "深州市", - "139001": "定州市", - "139002": "辛集市", - "140105": "小店区", - "140106": "迎泽区", - "140107": "杏花岭区", - "140108": "尖草坪区", - "140109": "万柏林区", - "140110": "晋源区", - "140121": "清徐县", - "140122": "阳曲县", - "140123": "娄烦县", - "140181": "古交市", - "140202": "城区", - "140203": "矿区", - "140211": "南郊区", - "140212": "新荣区", - "140221": "阳高县", - "140222": "天镇县", - "140223": "广灵县", - "140224": "灵丘县", - "140225": "浑源县", - "140226": "左云县", - "140227": "大同县", - "140302": "城区", - "140303": "矿区", - "140311": "郊区", - "140321": "平定县", - "140322": "盂县", - "140402": "城区", - "140411": "郊区", - "140421": "长治县", - "140423": "襄垣县", - "140424": "屯留县", - "140425": "平顺县", - "140426": "黎城县", - "140427": "壶关县", - "140428": "长子县", - "140429": "武乡县", - "140430": "沁县", - "140431": "沁源县", - "140481": "潞城市", - "140502": "城区", - "140521": "沁水县", - "140522": "阳城县", - "140524": "陵川县", - "140525": "泽州县", - "140581": "高平市", - "140602": "朔城区", - "140603": "平鲁区", - "140621": "山阴县", - "140622": "应县", - "140623": "右玉县", - "140624": "怀仁县", - "140702": "榆次区", - "140721": "榆社县", - "140722": "左权县", - "140723": "和顺县", - "140724": "昔阳县", - "140725": "寿阳县", - "140726": "太谷县", - "140727": "祁县", - "140728": "平遥县", - "140729": "灵石县", - "140781": "介休市", - "140802": "盐湖区", - "140821": "临猗县", - "140822": "万荣县", - "140823": "闻喜县", - "140824": "稷山县", - "140825": "新绛县", - "140826": "绛县", - "140827": "垣曲县", - "140828": "夏县", - "140829": "平陆县", - "140830": "芮城县", - "140881": "永济市", - "140882": "河津市", - "140902": "忻府区", - "140921": "定襄县", - "140922": "五台县", - "140923": "代县", - "140924": "繁峙县", - "140925": "宁武县", - "140926": "静乐县", - "140927": "神池县", - "140928": "五寨县", - "140929": "岢岚县", - "140930": "河曲县", - "140931": "保德县", - "140932": "偏关县", - "140981": "原平市", - "141002": "尧都区", - "141021": "曲沃县", - "141022": "翼城县", - "141023": "襄汾县", - "141024": "洪洞县", - "141025": "古县", - "141026": "安泽县", - "141027": "浮山县", - "141028": "吉县", - "141029": "乡宁县", - "141030": "大宁县", - "141031": "隰县", - "141032": "永和县", - "141033": "蒲县", - "141034": "汾西县", - "141081": "侯马市", - "141082": "霍州市", - "141102": "离石区", - "141121": "文水县", - "141122": "交城县", - "141123": "兴县", - "141124": "临县", - "141125": "柳林县", - "141126": "石楼县", - "141127": "岚县", - "141128": "方山县", - "141129": "中阳县", - "141130": "交口县", - "141181": "孝义市", - "141182": "汾阳市", - "150102": "新城区", - "150103": "回民区", - "150104": "玉泉区", - "150105": "赛罕区", - "150121": "土默特左旗", - "150122": "托克托县", - "150123": "和林格尔县", - "150124": "清水河县", - "150125": "武川县", - "150202": "东河区", - "150203": "昆都仑区", - "150204": "青山区", - "150205": "石拐区", - "150206": "白云鄂博矿区", - "150207": "九原区", - "150221": "土默特右旗", - "150222": "固阳县", - "150223": "达尔罕茂明安联合旗", - "150302": "海勃湾区", - "150303": "海南区", - "150304": "乌达区", - "150402": "红山区", - "150403": "元宝山区", - "150404": "松山区", - "150421": "阿鲁科尔沁旗", - "150422": "巴林左旗", - "150423": "巴林右旗", - "150424": "林西县", - "150425": "克什克腾旗", - "150426": "翁牛特旗", - "150428": "喀喇沁旗", - "150429": "宁城县", - "150430": "敖汉旗", - "150502": "科尔沁区", - "150521": "科尔沁左翼中旗", - "150522": "科尔沁左翼后旗", - "150523": "开鲁县", - "150524": "库伦旗", - "150525": "奈曼旗", - "150526": "扎鲁特旗", - "150581": "霍林郭勒市", - "150602": "东胜区", - "150603": "康巴什区", - "150621": "达拉特旗", - "150622": "准格尔旗", - "150623": "鄂托克前旗", - "150624": "鄂托克旗", - "150625": "杭锦旗", - "150626": "乌审旗", - "150627": "伊金霍洛旗", - "150702": "海拉尔区", - "150703": "扎赉诺尔区", - "150721": "阿荣旗", - "150722": "莫力达瓦达斡尔族自治旗", - "150723": "鄂伦春自治旗", - "150724": "鄂温克族自治旗", - "150725": "陈巴尔虎旗", - "150726": "新巴尔虎左旗", - "150727": "新巴尔虎右旗", - "150781": "满洲里市", - "150782": "牙克石市", - "150783": "扎兰屯市", - "150784": "额尔古纳市", - "150785": "根河市", - "150802": "临河区", - "150821": "五原县", - "150822": "磴口县", - "150823": "乌拉特前旗", - "150824": "乌拉特中旗", - "150825": "乌拉特后旗", - "150826": "杭锦后旗", - "150902": "集宁区", - "150921": "卓资县", - "150922": "化德县", - "150923": "商都县", - "150924": "兴和县", - "150925": "凉城县", - "150926": "察哈尔右翼前旗", - "150927": "察哈尔右翼中旗", - "150928": "察哈尔右翼后旗", - "150929": "四子王旗", - "150981": "丰镇市", - "152201": "乌兰浩特市", - "152202": "阿尔山市", - "152221": "科尔沁右翼前旗", - "152222": "科尔沁右翼中旗", - "152223": "扎赉特旗", - "152224": "突泉县", - "152501": "二连浩特市", - "152502": "锡林浩特市", - "152522": "阿巴嘎旗", - "152523": "苏尼特左旗", - "152524": "苏尼特右旗", - "152525": "东乌珠穆沁旗", - "152526": "西乌珠穆沁旗", - "152527": "太仆寺旗", - "152528": "镶黄旗", - "152529": "正镶白旗", - "152530": "正蓝旗", - "152531": "多伦县", - "152921": "阿拉善左旗", - "152922": "阿拉善右旗", - "152923": "额济纳旗", - "210102": "和平区", - "210103": "沈河区", - "210104": "大东区", - "210105": "皇姑区", - "210106": "铁西区", - "210111": "苏家屯区", - "210112": "浑南区", - "210113": "沈北新区", - "210114": "于洪区", - "210115": "辽中区", - "210123": "康平县", - "210124": "法库县", - "210181": "新民市", - "210202": "中山区", - "210203": "西岗区", - "210204": "沙河口区", - "210211": "甘井子区", - "210212": "旅顺口区", - "210213": "金州区", - "210214": "普兰店区", - "210224": "长海县", - "210281": "瓦房店市", - "210283": "庄河市", - "210302": "铁东区", - "210303": "铁西区", - "210304": "立山区", - "210311": "千山区", - "210321": "台安县", - "210323": "岫岩满族自治县", - "210381": "海城市", - "210402": "新抚区", - "210403": "东洲区", - "210404": "望花区", - "210411": "顺城区", - "210421": "抚顺县", - "210422": "新宾满族自治县", - "210423": "清原满族自治县", - "210502": "平山区", - "210503": "溪湖区", - "210504": "明山区", - "210505": "南芬区", - "210521": "本溪满族自治县", - "210522": "桓仁满族自治县", - "210602": "元宝区", - "210603": "振兴区", - "210604": "振安区", - "210624": "宽甸满族自治县", - "210681": "东港市", - "210682": "凤城市", - "210702": "古塔区", - "210703": "凌河区", - "210711": "太和区", - "210726": "黑山县", - "210727": "义县", - "210781": "凌海市", - "210782": "北镇市", - "210802": "站前区", - "210803": "西市区", - "210804": "鲅鱼圈区", - "210811": "老边区", - "210881": "盖州市", - "210882": "大石桥市", - "210902": "海州区", - "210903": "新邱区", - "210904": "太平区", - "210905": "清河门区", - "210911": "细河区", - "210921": "阜新蒙古族自治县", - "210922": "彰武县", - "211002": "白塔区", - "211003": "文圣区", - "211004": "宏伟区", - "211005": "弓长岭区", - "211011": "太子河区", - "211021": "辽阳县", - "211081": "灯塔市", - "211102": "双台子区", - "211103": "兴隆台区", - "211104": "大洼区", - "211122": "盘山县", - "211202": "银州区", - "211204": "清河区", - "211221": "铁岭县", - "211223": "西丰县", - "211224": "昌图县", - "211281": "调兵山市", - "211282": "开原市", - "211302": "双塔区", - "211303": "龙城区", - "211321": "朝阳县", - "211322": "建平县", - "211324": "喀喇沁左翼蒙古族自治县", - "211381": "北票市", - "211382": "凌源市", - "211402": "连山区", - "211403": "龙港区", - "211404": "南票区", - "211421": "绥中县", - "211422": "建昌县", - "211481": "兴城市", - "220102": "南关区", - "220103": "宽城区", - "220104": "朝阳区", - "220105": "二道区", - "220106": "绿园区", - "220112": "双阳区", - "220113": "九台区", - "220122": "农安县", - "220182": "榆树市", - "220183": "德惠市", - "220202": "昌邑区", - "220203": "龙潭区", - "220204": "船营区", - "220211": "丰满区", - "220221": "永吉县", - "220281": "蛟河市", - "220282": "桦甸市", - "220283": "舒兰市", - "220284": "磐石市", - "220302": "铁西区", - "220303": "铁东区", - "220322": "梨树县", - "220323": "伊通满族自治县", - "220381": "公主岭市", - "220382": "双辽市", - "220402": "龙山区", - "220403": "西安区", - "220421": "东丰县", - "220422": "东辽县", - "220502": "东昌区", - "220503": "二道江区", - "220521": "通化县", - "220523": "辉南县", - "220524": "柳河县", - "220581": "梅河口市", - "220582": "集安市", - "220602": "浑江区", - "220605": "江源区", - "220621": "抚松县", - "220622": "靖宇县", - "220623": "长白朝鲜族自治县", - "220681": "临江市", - "220702": "宁江区", - "220721": "前郭尔罗斯蒙古族自治县", - "220722": "长岭县", - "220723": "乾安县", - "220781": "扶余市", - "220802": "洮北区", - "220821": "镇赉县", - "220822": "通榆县", - "220881": "洮南市", - "220882": "大安市", - "222401": "延吉市", - "222402": "图们市", - "222403": "敦化市", - "222404": "珲春市", - "222405": "龙井市", - "222406": "和龙市", - "222424": "汪清县", - "222426": "安图县", - "230102": "道里区", - "230103": "南岗区", - "230104": "道外区", - "230108": "平房区", - "230109": "松北区", - "230110": "香坊区", - "230111": "呼兰区", - "230112": "阿城区", - "230113": "双城区", - "230123": "依兰县", - "230124": "方正县", - "230125": "宾县", - "230126": "巴彦县", - "230127": "木兰县", - "230128": "通河县", - "230129": "延寿县", - "230183": "尚志市", - "230184": "五常市", - "230202": "龙沙区", - "230203": "建华区", - "230204": "铁锋区", - "230205": "昂昂溪区", - "230206": "富拉尔基区", - "230207": "碾子山区", - "230208": "梅里斯达斡尔族区", - "230221": "龙江县", - "230223": "依安县", - "230224": "泰来县", - "230225": "甘南县", - "230227": "富裕县", - "230229": "克山县", - "230230": "克东县", - "230231": "拜泉县", - "230281": "讷河市", - "230302": "鸡冠区", - "230303": "恒山区", - "230304": "滴道区", - "230305": "梨树区", - "230306": "城子河区", - "230307": "麻山区", - "230321": "鸡东县", - "230381": "虎林市", - "230382": "密山市", - "230402": "向阳区", - "230403": "工农区", - "230404": "南山区", - "230405": "兴安区", - "230406": "东山区", - "230407": "兴山区", - "230421": "萝北县", - "230422": "绥滨县", - "230502": "尖山区", - "230503": "岭东区", - "230505": "四方台区", - "230506": "宝山区", - "230521": "集贤县", - "230522": "友谊县", - "230523": "宝清县", - "230524": "饶河县", - "230602": "萨尔图区", - "230603": "龙凤区", - "230604": "让胡路区", - "230605": "红岗区", - "230606": "大同区", - "230621": "肇州县", - "230622": "肇源县", - "230623": "林甸县", - "230624": "杜尔伯特蒙古族自治县", - "230702": "伊春区", - "230703": "南岔区", - "230704": "友好区", - "230705": "西林区", - "230706": "翠峦区", - "230707": "新青区", - "230708": "美溪区", - "230709": "金山屯区", - "230710": "五营区", - "230711": "乌马河区", - "230712": "汤旺河区", - "230713": "带岭区", - "230714": "乌伊岭区", - "230715": "红星区", - "230716": "上甘岭区", - "230722": "嘉荫县", - "230781": "铁力市", - "230803": "向阳区", - "230804": "前进区", - "230805": "东风区", - "230811": "郊区", - "230822": "桦南县", - "230826": "桦川县", - "230828": "汤原县", - "230881": "同江市", - "230882": "富锦市", - "230883": "抚远市", - "230902": "新兴区", - "230903": "桃山区", - "230904": "茄子河区", - "230921": "勃利县", - "231002": "东安区", - "231003": "阳明区", - "231004": "爱民区", - "231005": "西安区", - "231025": "林口县", - "231081": "绥芬河市", - "231083": "海林市", - "231084": "宁安市", - "231085": "穆棱市", - "231086": "东宁市", - "231102": "爱辉区", - "231121": "嫩江县", - "231123": "逊克县", - "231124": "孙吴县", - "231181": "北安市", - "231182": "五大连池市", - "231202": "北林区", - "231221": "望奎县", - "231222": "兰西县", - "231223": "青冈县", - "231224": "庆安县", - "231225": "明水县", - "231226": "绥棱县", - "231281": "安达市", - "231282": "肇东市", - "231283": "海伦市", - "232721": "呼玛县", - "232722": "塔河县", - "232723": "漠河县", - "310101": "黄浦区", - "310104": "徐汇区", - "310105": "长宁区", - "310106": "静安区", - "310107": "普陀区", - "310109": "虹口区", - "310110": "杨浦区", - "310112": "闵行区", - "310113": "宝山区", - "310114": "嘉定区", - "310115": "浦东新区", - "310116": "金山区", - "310117": "松江区", - "310118": "青浦区", - "310120": "奉贤区", - "310151": "崇明区", - "320102": "玄武区", - "320104": "秦淮区", - "320105": "建邺区", - "320106": "鼓楼区", - "320111": "浦口区", - "320113": "栖霞区", - "320114": "雨花台区", - "320115": "江宁区", - "320116": "六合区", - "320117": "溧水区", - "320118": "高淳区", - "320205": "锡山区", - "320206": "惠山区", - "320211": "滨湖区", - "320213": "梁溪区", - "320214": "新吴区", - "320281": "江阴市", - "320282": "宜兴市", - "320302": "鼓楼区", - "320303": "云龙区", - "320305": "贾汪区", - "320311": "泉山区", - "320312": "铜山区", - "320321": "丰县", - "320322": "沛县", - "320324": "睢宁县", - "320381": "新沂市", - "320382": "邳州市", - "320402": "天宁区", - "320404": "钟楼区", - "320411": "新北区", - "320412": "武进区", - "320413": "金坛区", - "320481": "溧阳市", - "320505": "虎丘区", - "320506": "吴中区", - "320507": "相城区", - "320508": "姑苏区", - "320509": "吴江区", - "320581": "常熟市", - "320582": "张家港市", - "320583": "昆山市", - "320585": "太仓市", - "320602": "崇川区", - "320611": "港闸区", - "320612": "通州区", - "320621": "海安县", - "320623": "如东县", - "320681": "启东市", - "320682": "如皋市", - "320684": "海门市", - "320703": "连云区", - "320706": "海州区", - "320707": "赣榆区", - "320722": "东海县", - "320723": "灌云县", - "320724": "灌南县", - "320803": "淮安区", - "320804": "淮阴区", - "320812": "清江浦区", - "320813": "洪泽区", - "320826": "涟水县", - "320830": "盱眙县", - "320831": "金湖县", - "320902": "亭湖区", - "320903": "盐都区", - "320904": "大丰区", - "320921": "响水县", - "320922": "滨海县", - "320923": "阜宁县", - "320924": "射阳县", - "320925": "建湖县", - "320981": "东台市", - "321002": "广陵区", - "321003": "邗江区", - "321012": "江都区", - "321023": "宝应县", - "321081": "仪征市", - "321084": "高邮市", - "321102": "京口区", - "321111": "润州区", - "321112": "丹徒区", - "321181": "丹阳市", - "321182": "扬中市", - "321183": "句容市", - "321202": "海陵区", - "321203": "高港区", - "321204": "姜堰区", - "321281": "兴化市", - "321282": "靖江市", - "321283": "泰兴市", - "321302": "宿城区", - "321311": "宿豫区", - "321322": "沭阳县", - "321323": "泗阳县", - "321324": "泗洪县", - "330102": "上城区", - "330103": "下城区", - "330104": "江干区", - "330105": "拱墅区", - "330106": "西湖区", - "330108": "滨江区", - "330109": "萧山区", - "330110": "余杭区", - "330111": "富阳区", - "330122": "桐庐县", - "330127": "淳安县", - "330182": "建德市", - "330185": "临安市", - "330203": "海曙区", - "330204": "江东区", - "330205": "江北区", - "330206": "北仑区", - "330211": "镇海区", - "330212": "鄞州区", - "330225": "象山县", - "330226": "宁海县", - "330281": "余姚市", - "330282": "慈溪市", - "330283": "奉化市", - "330302": "鹿城区", - "330303": "龙湾区", - "330304": "瓯海区", - "330305": "洞头区", - "330324": "永嘉县", - "330326": "平阳县", - "330327": "苍南县", - "330328": "文成县", - "330329": "泰顺县", - "330381": "瑞安市", - "330382": "乐清市", - "330402": "南湖区", - "330411": "秀洲区", - "330421": "嘉善县", - "330424": "海盐县", - "330481": "海宁市", - "330482": "平湖市", - "330483": "桐乡市", - "330502": "吴兴区", - "330503": "南浔区", - "330521": "德清县", - "330522": "长兴县", - "330523": "安吉县", - "330602": "越城区", - "330603": "柯桥区", - "330604": "上虞区", - "330624": "新昌县", - "330681": "诸暨市", - "330683": "嵊州市", - "330702": "婺城区", - "330703": "金东区", - "330723": "武义县", - "330726": "浦江县", - "330727": "磐安县", - "330781": "兰溪市", - "330782": "义乌市", - "330783": "东阳市", - "330784": "永康市", - "330802": "柯城区", - "330803": "衢江区", - "330822": "常山县", - "330824": "开化县", - "330825": "龙游县", - "330881": "江山市", - "330902": "定海区", - "330903": "普陀区", - "330921": "岱山县", - "330922": "嵊泗县", - "331002": "椒江区", - "331003": "黄岩区", - "331004": "路桥区", - "331021": "玉环县", - "331022": "三门县", - "331023": "天台县", - "331024": "仙居县", - "331081": "温岭市", - "331082": "临海市", - "331102": "莲都区", - "331121": "青田县", - "331122": "缙云县", - "331123": "遂昌县", - "331124": "松阳县", - "331125": "云和县", - "331126": "庆元县", - "331127": "景宁畲族自治县", - "331181": "龙泉市", - "340102": "瑶海区", - "340103": "庐阳区", - "340104": "蜀山区", - "340111": "包河区", - "340121": "长丰县", - "340122": "肥东县", - "340123": "肥西县", - "340124": "庐江县", - "340181": "巢湖市", - "340202": "镜湖区", - "340203": "弋江区", - "340207": "鸠江区", - "340208": "三山区", - "340221": "芜湖县", - "340222": "繁昌县", - "340223": "南陵县", - "340225": "无为县", - "340302": "龙子湖区", - "340303": "蚌山区", - "340304": "禹会区", - "340311": "淮上区", - "340321": "怀远县", - "340322": "五河县", - "340323": "固镇县", - "340402": "大通区", - "340403": "田家庵区", - "340404": "谢家集区", - "340405": "八公山区", - "340406": "潘集区", - "340421": "凤台县", - "340422": "寿县", - "340503": "花山区", - "340504": "雨山区", - "340506": "博望区", - "340521": "当涂县", - "340522": "含山县", - "340523": "和县", - "340602": "杜集区", - "340603": "相山区", - "340604": "烈山区", - "340621": "濉溪县", - "340705": "铜官区", - "340706": "义安区", - "340711": "郊区", - "340722": "枞阳县", - "340802": "迎江区", - "340803": "大观区", - "340811": "宜秀区", - "340822": "怀宁县", - "340824": "潜山县", - "340825": "太湖县", - "340826": "宿松县", - "340827": "望江县", - "340828": "岳西县", - "340881": "桐城市", - "341002": "屯溪区", - "341003": "黄山区", - "341004": "徽州区", - "341021": "歙县", - "341022": "休宁县", - "341023": "黟县", - "341024": "祁门县", - "341102": "琅琊区", - "341103": "南谯区", - "341122": "来安县", - "341124": "全椒县", - "341125": "定远县", - "341126": "凤阳县", - "341181": "天长市", - "341182": "明光市", - "341202": "颍州区", - "341203": "颍东区", - "341204": "颍泉区", - "341221": "临泉县", - "341222": "太和县", - "341225": "阜南县", - "341226": "颍上县", - "341282": "界首市", - "341302": "埇桥区", - "341321": "砀山县", - "341322": "萧县", - "341323": "灵璧县", - "341324": "泗县", - "341502": "金安区", - "341503": "裕安区", - "341504": "叶集区", - "341522": "霍邱县", - "341523": "舒城县", - "341524": "金寨县", - "341525": "霍山县", - "341602": "谯城区", - "341621": "涡阳县", - "341622": "蒙城县", - "341623": "利辛县", - "341702": "贵池区", - "341721": "东至县", - "341722": "石台县", - "341723": "青阳县", - "341802": "宣州区", - "341821": "郎溪县", - "341822": "广德县", - "341823": "泾县", - "341824": "绩溪县", - "341825": "旌德县", - "341881": "宁国市", - "350102": "鼓楼区", - "350103": "台江区", - "350104": "仓山区", - "350105": "马尾区", - "350111": "晋安区", - "350121": "闽侯县", - "350122": "连江县", - "350123": "罗源县", - "350124": "闽清县", - "350125": "永泰县", - "350128": "平潭县", - "350181": "福清市", - "350182": "长乐市", - "350203": "思明区", - "350205": "海沧区", - "350206": "湖里区", - "350211": "集美区", - "350212": "同安区", - "350213": "翔安区", - "350302": "城厢区", - "350303": "涵江区", - "350304": "荔城区", - "350305": "秀屿区", - "350322": "仙游县", - "350402": "梅列区", - "350403": "三元区", - "350421": "明溪县", - "350423": "清流县", - "350424": "宁化县", - "350425": "大田县", - "350426": "尤溪县", - "350427": "沙县", - "350428": "将乐县", - "350429": "泰宁县", - "350430": "建宁县", - "350481": "永安市", - "350502": "鲤城区", - "350503": "丰泽区", - "350504": "洛江区", - "350505": "泉港区", - "350521": "惠安县", - "350524": "安溪县", - "350525": "永春县", - "350526": "德化县", - "350527": "金门县", - "350581": "石狮市", - "350582": "晋江市", - "350583": "南安市", - "350602": "芗城区", - "350603": "龙文区", - "350622": "云霄县", - "350623": "漳浦县", - "350624": "诏安县", - "350625": "长泰县", - "350626": "东山县", - "350627": "南靖县", - "350628": "平和县", - "350629": "华安县", - "350681": "龙海市", - "350702": "延平区", - "350703": "建阳区", - "350721": "顺昌县", - "350722": "浦城县", - "350723": "光泽县", - "350724": "松溪县", - "350725": "政和县", - "350781": "邵武市", - "350782": "武夷山市", - "350783": "建瓯市", - "350802": "新罗区", - "350803": "永定区", - "350821": "长汀县", - "350823": "上杭县", - "350824": "武平县", - "350825": "连城县", - "350881": "漳平市", - "350902": "蕉城区", - "350921": "霞浦县", - "350922": "古田县", - "350923": "屏南县", - "350924": "寿宁县", - "350925": "周宁县", - "350926": "柘荣县", - "350981": "福安市", - "350982": "福鼎市", - "360102": "东湖区", - "360103": "西湖区", - "360104": "青云谱区", - "360105": "湾里区", - "360111": "青山湖区", - "360112": "新建区", - "360121": "南昌县", - "360123": "安义县", - "360124": "进贤县", - "360202": "昌江区", - "360203": "珠山区", - "360222": "浮梁县", - "360281": "乐平市", - "360302": "安源区", - "360313": "湘东区", - "360321": "莲花县", - "360322": "上栗县", - "360323": "芦溪县", - "360402": "濂溪区", - "360403": "浔阳区", - "360421": "九江县", - "360423": "武宁县", - "360424": "修水县", - "360425": "永修县", - "360426": "德安县", - "360428": "都昌县", - "360429": "湖口县", - "360430": "彭泽县", - "360481": "瑞昌市", - "360482": "共青城市", - "360483": "庐山市", - "360502": "渝水区", - "360521": "分宜县", - "360602": "月湖区", - "360622": "余江县", - "360681": "贵溪市", - "360702": "章贡区", - "360703": "南康区", - "360721": "赣县", - "360722": "信丰县", - "360723": "大余县", - "360724": "上犹县", - "360725": "崇义县", - "360726": "安远县", - "360727": "龙南县", - "360728": "定南县", - "360729": "全南县", - "360730": "宁都县", - "360731": "于都县", - "360732": "兴国县", - "360733": "会昌县", - "360734": "寻乌县", - "360735": "石城县", - "360781": "瑞金市", - "360802": "吉州区", - "360803": "青原区", - "360821": "吉安县", - "360822": "吉水县", - "360823": "峡江县", - "360824": "新干县", - "360825": "永丰县", - "360826": "泰和县", - "360827": "遂川县", - "360828": "万安县", - "360829": "安福县", - "360830": "永新县", - "360881": "井冈山市", - "360902": "袁州区", - "360921": "奉新县", - "360922": "万载县", - "360923": "上高县", - "360924": "宜丰县", - "360925": "靖安县", - "360926": "铜鼓县", - "360981": "丰城市", - "360982": "樟树市", - "360983": "高安市", - "361002": "临川区", - "361021": "南城县", - "361022": "黎川县", - "361023": "南丰县", - "361024": "崇仁县", - "361025": "乐安县", - "361026": "宜黄县", - "361027": "金溪县", - "361028": "资溪县", - "361029": "东乡县", - "361030": "广昌县", - "361102": "信州区", - "361103": "广丰区", - "361121": "上饶县", - "361123": "玉山县", - "361124": "铅山县", - "361125": "横峰县", - "361126": "弋阳县", - "361127": "余干县", - "361128": "鄱阳县", - "361129": "万年县", - "361130": "婺源县", - "361181": "德兴市", - "370102": "历下区", - "370103": "市中区", - "370104": "槐荫区", - "370105": "天桥区", - "370112": "历城区", - "370113": "长清区", - "370124": "平阴县", - "370125": "济阳县", - "370126": "商河县", - "370181": "章丘市", - "370202": "市南区", - "370203": "市北区", - "370211": "黄岛区", - "370212": "崂山区", - "370213": "李沧区", - "370214": "城阳区", - "370281": "胶州市", - "370282": "即墨市", - "370283": "平度市", - "370285": "莱西市", - "370302": "淄川区", - "370303": "张店区", - "370304": "博山区", - "370305": "临淄区", - "370306": "周村区", - "370321": "桓台县", - "370322": "高青县", - "370323": "沂源县", - "370402": "市中区", - "370403": "薛城区", - "370404": "峄城区", - "370405": "台儿庄区", - "370406": "山亭区", - "370481": "滕州市", - "370502": "东营区", - "370503": "河口区", - "370505": "垦利区", - "370522": "利津县", - "370523": "广饶县", - "370602": "芝罘区", - "370611": "福山区", - "370612": "牟平区", - "370613": "莱山区", - "370634": "长岛县", - "370681": "龙口市", - "370682": "莱阳市", - "370683": "莱州市", - "370684": "蓬莱市", - "370685": "招远市", - "370686": "栖霞市", - "370687": "海阳市", - "370702": "潍城区", - "370703": "寒亭区", - "370704": "坊子区", - "370705": "奎文区", - "370724": "临朐县", - "370725": "昌乐县", - "370781": "青州市", - "370782": "诸城市", - "370783": "寿光市", - "370784": "安丘市", - "370785": "高密市", - "370786": "昌邑市", - "370811": "任城区", - "370812": "兖州区", - "370826": "微山县", - "370827": "鱼台县", - "370828": "金乡县", - "370829": "嘉祥县", - "370830": "汶上县", - "370831": "泗水县", - "370832": "梁山县", - "370881": "曲阜市", - "370883": "邹城市", - "370902": "泰山区", - "370911": "岱岳区", - "370921": "宁阳县", - "370923": "东平县", - "370982": "新泰市", - "370983": "肥城市", - "371002": "环翠区", - "371003": "文登区", - "371082": "荣成市", - "371083": "乳山市", - "371102": "东港区", - "371103": "岚山区", - "371121": "五莲县", - "371122": "莒县", - "371202": "莱城区", - "371203": "钢城区", - "371302": "兰山区", - "371311": "罗庄区", - "371312": "河东区", - "371321": "沂南县", - "371322": "郯城县", - "371323": "沂水县", - "371324": "兰陵县", - "371325": "费县", - "371326": "平邑县", - "371327": "莒南县", - "371328": "蒙阴县", - "371329": "临沭县", - "371402": "德城区", - "371403": "陵城区", - "371422": "宁津县", - "371423": "庆云县", - "371424": "临邑县", - "371425": "齐河县", - "371426": "平原县", - "371427": "夏津县", - "371428": "武城县", - "371481": "乐陵市", - "371482": "禹城市", - "371502": "东昌府区", - "371521": "阳谷县", - "371522": "莘县", - "371523": "茌平县", - "371524": "东阿县", - "371525": "冠县", - "371526": "高唐县", - "371581": "临清市", - "371602": "滨城区", - "371603": "沾化区", - "371621": "惠民县", - "371622": "阳信县", - "371623": "无棣县", - "371625": "博兴县", - "371626": "邹平县", - "371702": "牡丹区", - "371703": "定陶区", - "371721": "曹县", - "371722": "单县", - "371723": "成武县", - "371724": "巨野县", - "371725": "郓城县", - "371726": "鄄城县", - "371728": "东明县", - "410102": "中原区", - "410103": "二七区", - "410104": "管城回族区", - "410105": "金水区", - "410106": "上街区", - "410108": "惠济区", - "410122": "中牟县", - "410181": "巩义市", - "410182": "荥阳市", - "410183": "新密市", - "410184": "新郑市", - "410185": "登封市", - "410202": "龙亭区", - "410203": "顺河回族区", - "410204": "鼓楼区", - "410205": "禹王台区", - "410211": "金明区", - "410212": "祥符区", - "410221": "杞县", - "410222": "通许县", - "410223": "尉氏县", - "410225": "兰考县", - "410302": "老城区", - "410303": "西工区", - "410304": "瀍河回族区", - "410305": "涧西区", - "410306": "吉利区", - "410311": "洛龙区", - "410322": "孟津县", - "410323": "新安县", - "410324": "栾川县", - "410325": "嵩县", - "410326": "汝阳县", - "410327": "宜阳县", - "410328": "洛宁县", - "410329": "伊川县", - "410381": "偃师市", - "410402": "新华区", - "410403": "卫东区", - "410404": "石龙区", - "410411": "湛河区", - "410421": "宝丰县", - "410422": "叶县", - "410423": "鲁山县", - "410425": "郏县", - "410481": "舞钢市", - "410482": "汝州市", - "410502": "文峰区", - "410503": "北关区", - "410505": "殷都区", - "410506": "龙安区", - "410522": "安阳县", - "410523": "汤阴县", - "410526": "滑县", - "410527": "内黄县", - "410581": "林州市", - "410602": "鹤山区", - "410603": "山城区", - "410611": "淇滨区", - "410621": "浚县", - "410622": "淇县", - "410702": "红旗区", - "410703": "卫滨区", - "410704": "凤泉区", - "410711": "牧野区", - "410721": "新乡县", - "410724": "获嘉县", - "410725": "原阳县", - "410726": "延津县", - "410727": "封丘县", - "410728": "长垣县", - "410781": "卫辉市", - "410782": "辉县市", - "410802": "解放区", - "410803": "中站区", - "410804": "马村区", - "410811": "山阳区", - "410821": "修武县", - "410822": "博爱县", - "410823": "武陟县", - "410825": "温县", - "410882": "沁阳市", - "410883": "孟州市", - "410902": "华龙区", - "410922": "清丰县", - "410923": "南乐县", - "410926": "范县", - "410927": "台前县", - "410928": "濮阳县", - "411002": "魏都区", - "411023": "许昌县", - "411024": "鄢陵县", - "411025": "襄城县", - "411081": "禹州市", - "411082": "长葛市", - "411102": "源汇区", - "411103": "郾城区", - "411104": "召陵区", - "411121": "舞阳县", - "411122": "临颍县", - "411202": "湖滨区", - "411203": "陕州区", - "411221": "渑池县", - "411224": "卢氏县", - "411281": "义马市", - "411282": "灵宝市", - "411302": "宛城区", - "411303": "卧龙区", - "411321": "南召县", - "411322": "方城县", - "411323": "西峡县", - "411324": "镇平县", - "411325": "内乡县", - "411326": "淅川县", - "411327": "社旗县", - "411328": "唐河县", - "411329": "新野县", - "411330": "桐柏县", - "411381": "邓州市", - "411402": "梁园区", - "411403": "睢阳区", - "411421": "民权县", - "411422": "睢县", - "411423": "宁陵县", - "411424": "柘城县", - "411425": "虞城县", - "411426": "夏邑县", - "411481": "永城市", - "411502": "浉河区", - "411503": "平桥区", - "411521": "罗山县", - "411522": "光山县", - "411523": "新县", - "411524": "商城县", - "411525": "固始县", - "411526": "潢川县", - "411527": "淮滨县", - "411528": "息县", - "411602": "川汇区", - "411621": "扶沟县", - "411622": "西华县", - "411623": "商水县", - "411624": "沈丘县", - "411625": "郸城县", - "411626": "淮阳县", - "411627": "太康县", - "411628": "鹿邑县", - "411681": "项城市", - "411702": "驿城区", - "411721": "西平县", - "411722": "上蔡县", - "411723": "平舆县", - "411724": "正阳县", - "411725": "确山县", - "411726": "泌阳县", - "411727": "汝南县", - "411728": "遂平县", - "411729": "新蔡县", - "419001": "济源市", - "420102": "江岸区", - "420103": "江汉区", - "420104": "硚口区", - "420105": "汉阳区", - "420106": "武昌区", - "420107": "青山区", - "420111": "洪山区", - "420112": "东西湖区", - "420113": "汉南区", - "420114": "蔡甸区", - "420115": "江夏区", - "420116": "黄陂区", - "420117": "新洲区", - "420202": "黄石港区", - "420203": "西塞山区", - "420204": "下陆区", - "420205": "铁山区", - "420222": "阳新县", - "420281": "大冶市", - "420302": "茅箭区", - "420303": "张湾区", - "420304": "郧阳区", - "420322": "郧西县", - "420323": "竹山县", - "420324": "竹溪县", - "420325": "房县", - "420381": "丹江口市", - "420502": "西陵区", - "420503": "伍家岗区", - "420504": "点军区", - "420505": "猇亭区", - "420506": "夷陵区", - "420525": "远安县", - "420526": "兴山县", - "420527": "秭归县", - "420528": "长阳土家族自治县", - "420529": "五峰土家族自治县", - "420581": "宜都市", - "420582": "当阳市", - "420583": "枝江市", - "420602": "襄城区", - "420606": "樊城区", - "420607": "襄州区", - "420624": "南漳县", - "420625": "谷城县", - "420626": "保康县", - "420682": "老河口市", - "420683": "枣阳市", - "420684": "宜城市", - "420702": "梁子湖区", - "420703": "华容区", - "420704": "鄂城区", - "420802": "东宝区", - "420804": "掇刀区", - "420821": "京山县", - "420822": "沙洋县", - "420881": "钟祥市", - "420902": "孝南区", - "420921": "孝昌县", - "420922": "大悟县", - "420923": "云梦县", - "420981": "应城市", - "420982": "安陆市", - "420984": "汉川市", - "421002": "沙市区", - "421003": "荆州区", - "421022": "公安县", - "421023": "监利县", - "421024": "江陵县", - "421081": "石首市", - "421083": "洪湖市", - "421087": "松滋市", - "421102": "黄州区", - "421121": "团风县", - "421122": "红安县", - "421123": "罗田县", - "421124": "英山县", - "421125": "浠水县", - "421126": "蕲春县", - "421127": "黄梅县", - "421181": "麻城市", - "421182": "武穴市", - "421202": "咸安区", - "421221": "嘉鱼县", - "421222": "通城县", - "421223": "崇阳县", - "421224": "通山县", - "421281": "赤壁市", - "421303": "曾都区", - "421321": "随县", - "421381": "广水市", - "422801": "恩施市", - "422802": "利川市", - "422822": "建始县", - "422823": "巴东县", - "422825": "宣恩县", - "422826": "咸丰县", - "422827": "来凤县", - "422828": "鹤峰县", - "429004": "仙桃市", - "429005": "潜江市", - "429006": "天门市", - "429021": "神农架林区", - "430102": "芙蓉区", - "430103": "天心区", - "430104": "岳麓区", - "430105": "开福区", - "430111": "雨花区", - "430112": "望城区", - "430121": "长沙县", - "430124": "宁乡县", - "430181": "浏阳市", - "430202": "荷塘区", - "430203": "芦淞区", - "430204": "石峰区", - "430211": "天元区", - "430221": "株洲县", - "430223": "攸县", - "430224": "茶陵县", - "430225": "炎陵县", - "430281": "醴陵市", - "430302": "雨湖区", - "430304": "岳塘区", - "430321": "湘潭县", - "430381": "湘乡市", - "430382": "韶山市", - "430405": "珠晖区", - "430406": "雁峰区", - "430407": "石鼓区", - "430408": "蒸湘区", - "430412": "南岳区", - "430421": "衡阳县", - "430422": "衡南县", - "430423": "衡山县", - "430424": "衡东县", - "430426": "祁东县", - "430481": "耒阳市", - "430482": "常宁市", - "430502": "双清区", - "430503": "大祥区", - "430511": "北塔区", - "430521": "邵东县", - "430522": "新邵县", - "430523": "邵阳县", - "430524": "隆回县", - "430525": "洞口县", - "430527": "绥宁县", - "430528": "新宁县", - "430529": "城步苗族自治县", - "430581": "武冈市", - "430602": "岳阳楼区", - "430603": "云溪区", - "430611": "君山区", - "430621": "岳阳县", - "430623": "华容县", - "430624": "湘阴县", - "430626": "平江县", - "430681": "汨罗市", - "430682": "临湘市", - "430702": "武陵区", - "430703": "鼎城区", - "430721": "安乡县", - "430722": "汉寿县", - "430723": "澧县", - "430724": "临澧县", - "430725": "桃源县", - "430726": "石门县", - "430781": "津市市", - "430802": "永定区", - "430811": "武陵源区", - "430821": "慈利县", - "430822": "桑植县", - "430902": "资阳区", - "430903": "赫山区", - "430921": "南县", - "430922": "桃江县", - "430923": "安化县", - "430981": "沅江市", - "431002": "北湖区", - "431003": "苏仙区", - "431021": "桂阳县", - "431022": "宜章县", - "431023": "永兴县", - "431024": "嘉禾县", - "431025": "临武县", - "431026": "汝城县", - "431027": "桂东县", - "431028": "安仁县", - "431081": "资兴市", - "431102": "零陵区", - "431103": "冷水滩区", - "431121": "祁阳县", - "431122": "东安县", - "431123": "双牌县", - "431124": "道县", - "431125": "江永县", - "431126": "宁远县", - "431127": "蓝山县", - "431128": "新田县", - "431129": "江华瑶族自治县", - "431202": "鹤城区", - "431221": "中方县", - "431222": "沅陵县", - "431223": "辰溪县", - "431224": "溆浦县", - "431225": "会同县", - "431226": "麻阳苗族自治县", - "431227": "新晃侗族自治县", - "431228": "芷江侗族自治县", - "431229": "靖州苗族侗族自治县", - "431230": "通道侗族自治县", - "431281": "洪江市", - "431302": "娄星区", - "431321": "双峰县", - "431322": "新化县", - "431381": "冷水江市", - "431382": "涟源市", - "433101": "吉首市", - "433122": "泸溪县", - "433123": "凤凰县", - "433124": "花垣县", - "433125": "保靖县", - "433126": "古丈县", - "433127": "永顺县", - "433130": "龙山县", - "440103": "荔湾区", - "440104": "越秀区", - "440105": "海珠区", - "440106": "天河区", - "440111": "白云区", - "440112": "黄埔区", - "440113": "番禺区", - "440114": "花都区", - "440115": "南沙区", - "440117": "从化区", - "440118": "增城区", - "440203": "武江区", - "440204": "浈江区", - "440205": "曲江区", - "440222": "始兴县", - "440224": "仁化县", - "440229": "翁源县", - "440232": "乳源瑶族自治县", - "440233": "新丰县", - "440281": "乐昌市", - "440282": "南雄市", - "440303": "罗湖区", - "440304": "福田区", - "440305": "南山区", - "440306": "宝安区", - "440307": "龙岗区", - "440308": "盐田区", - "440402": "香洲区", - "440403": "斗门区", - "440404": "金湾区", - "440507": "龙湖区", - "440511": "金平区", - "440512": "濠江区", - "440513": "潮阳区", - "440514": "潮南区", - "440515": "澄海区", - "440523": "南澳县", - "440604": "禅城区", - "440605": "南海区", - "440606": "顺德区", - "440607": "三水区", - "440608": "高明区", - "440703": "蓬江区", - "440704": "江海区", - "440705": "新会区", - "440781": "台山市", - "440783": "开平市", - "440784": "鹤山市", - "440785": "恩平市", - "440802": "赤坎区", - "440803": "霞山区", - "440804": "坡头区", - "440811": "麻章区", - "440823": "遂溪县", - "440825": "徐闻县", - "440881": "廉江市", - "440882": "雷州市", - "440883": "吴川市", - "440902": "茂南区", - "440904": "电白区", - "440981": "高州市", - "440982": "化州市", - "440983": "信宜市", - "441202": "端州区", - "441203": "鼎湖区", - "441204": "高要区", - "441223": "广宁县", - "441224": "怀集县", - "441225": "封开县", - "441226": "德庆县", - "441284": "四会市", - "441302": "惠城区", - "441303": "惠阳区", - "441322": "博罗县", - "441323": "惠东县", - "441324": "龙门县", - "441402": "梅江区", - "441403": "梅县区", - "441422": "大埔县", - "441423": "丰顺县", - "441424": "五华县", - "441426": "平远县", - "441427": "蕉岭县", - "441481": "兴宁市", - "441502": "城区", - "441521": "海丰县", - "441523": "陆河县", - "441581": "陆丰市", - "441602": "源城区", - "441621": "紫金县", - "441622": "龙川县", - "441623": "连平县", - "441624": "和平县", - "441625": "东源县", - "441702": "江城区", - "441704": "阳东区", - "441721": "阳西县", - "441781": "阳春市", - "441802": "清城区", - "441803": "清新区", - "441821": "佛冈县", - "441823": "阳山县", - "441825": "连山壮族瑶族自治县", - "441826": "连南瑶族自治县", - "441881": "英德市", - "441882": "连州市", - "441900": "东莞市", - "442000": "中山市", - "445102": "湘桥区", - "445103": "潮安区", - "445122": "饶平县", - "445202": "榕城区", - "445203": "揭东区", - "445222": "揭西县", - "445224": "惠来县", - "445281": "普宁市", - "445302": "云城区", - "445303": "云安区", - "445321": "新兴县", - "445322": "郁南县", - "445381": "罗定市", - "450102": "兴宁区", - "450103": "青秀区", - "450105": "江南区", - "450107": "西乡塘区", - "450108": "良庆区", - "450109": "邕宁区", - "450110": "武鸣区", - "450123": "隆安县", - "450124": "马山县", - "450125": "上林县", - "450126": "宾阳县", - "450127": "横县", - "450202": "城中区", - "450203": "鱼峰区", - "450204": "柳南区", - "450205": "柳北区", - "450206": "柳江区", - "450222": "柳城县", - "450223": "鹿寨县", - "450224": "融安县", - "450225": "融水苗族自治县", - "450226": "三江侗族自治县", - "450302": "秀峰区", - "450303": "叠彩区", - "450304": "象山区", - "450305": "七星区", - "450311": "雁山区", - "450312": "临桂区", - "450321": "阳朔县", - "450323": "灵川县", - "450324": "全州县", - "450325": "兴安县", - "450326": "永福县", - "450327": "灌阳县", - "450328": "龙胜各族自治县", - "450329": "资源县", - "450330": "平乐县", - "450331": "荔浦县", - "450332": "恭城瑶族自治县", - "450403": "万秀区", - "450405": "长洲区", - "450406": "龙圩区", - "450421": "苍梧县", - "450422": "藤县", - "450423": "蒙山县", - "450481": "岑溪市", - "450502": "海城区", - "450503": "银海区", - "450512": "铁山港区", - "450521": "合浦县", - "450602": "港口区", - "450603": "防城区", - "450621": "上思县", - "450681": "东兴市", - "450702": "钦南区", - "450703": "钦北区", - "450721": "灵山县", - "450722": "浦北县", - "450802": "港北区", - "450803": "港南区", - "450804": "覃塘区", - "450821": "平南县", - "450881": "桂平市", - "450902": "玉州区", - "450903": "福绵区", - "450921": "容县", - "450922": "陆川县", - "450923": "博白县", - "450924": "兴业县", - "450981": "北流市", - "451002": "右江区", - "451021": "田阳县", - "451022": "田东县", - "451023": "平果县", - "451024": "德保县", - "451026": "那坡县", - "451027": "凌云县", - "451028": "乐业县", - "451029": "田林县", - "451030": "西林县", - "451031": "隆林各族自治县", - "451081": "靖西市", - "451102": "八步区", - "451103": "平桂区", - "451121": "昭平县", - "451122": "钟山县", - "451123": "富川瑶族自治县", - "451202": "金城江区", - "451221": "南丹县", - "451222": "天峨县", - "451223": "凤山县", - "451224": "东兰县", - "451225": "罗城仫佬族自治县", - "451226": "环江毛南族自治县", - "451227": "巴马瑶族自治县", - "451228": "都安瑶族自治县", - "451229": "大化瑶族自治县", - "451281": "宜州市", - "451302": "兴宾区", - "451321": "忻城县", - "451322": "象州县", - "451323": "武宣县", - "451324": "金秀瑶族自治县", - "451381": "合山市", - "451402": "江州区", - "451421": "扶绥县", - "451422": "宁明县", - "451423": "龙州县", - "451424": "大新县", - "451425": "天等县", - "451481": "凭祥市", - "460105": "秀英区", - "460106": "龙华区", - "460107": "琼山区", - "460108": "美兰区", - "460201": "市辖区", - "460202": "海棠区", - "460203": "吉阳区", - "460204": "天涯区", - "460205": "崖州区", - "460321": "西沙群岛", - "460322": "南沙群岛", - "460323": "中沙群岛的岛礁及其海域", - "460400": "儋州市", - "469001": "五指山市", - "469002": "琼海市", - "469005": "文昌市", - "469006": "万宁市", - "469007": "东方市", - "469021": "定安县", - "469022": "屯昌县", - "469023": "澄迈县", - "469024": "临高县", - "469025": "白沙黎族自治县", - "469026": "昌江黎族自治县", - "469027": "乐东黎族自治县", - "469028": "陵水黎族自治县", - "469029": "保亭黎族苗族自治县", - "469030": "琼中黎族苗族自治县", - "500101": "万州区", - "500102": "涪陵区", - "500103": "渝中区", - "500104": "大渡口区", - "500105": "江北区", - "500106": "沙坪坝区", - "500107": "九龙坡区", - "500108": "南岸区", - "500109": "北碚区", - "500110": "綦江区", - "500111": "大足区", - "500112": "渝北区", - "500113": "巴南区", - "500114": "黔江区", - "500115": "长寿区", - "500116": "江津区", - "500117": "合川区", - "500118": "永川区", - "500119": "南川区", - "500120": "璧山区", - "500151": "铜梁区", - "500152": "潼南区", - "500153": "荣昌区", - "500154": "开州区", - "500228": "梁平县", - "500229": "城口县", - "500230": "丰都县", - "500231": "垫江县", - "500232": "武隆县", - "500233": "忠县", - "500235": "云阳县", - "500236": "奉节县", - "500237": "巫山县", - "500238": "巫溪县", - "500240": "石柱土家族自治县", - "500241": "秀山土家族苗族自治县", - "500242": "酉阳土家族苗族自治县", - "500243": "彭水苗族土家族自治县", - "510104": "锦江区", - "510105": "青羊区", - "510106": "金牛区", - "510107": "武侯区", - "510108": "成华区", - "510112": "龙泉驿区", - "510113": "青白江区", - "510114": "新都区", - "510115": "温江区", - "510116": "双流区", - "510121": "金堂县", - "510124": "郫县", - "510129": "大邑县", - "510131": "蒲江县", - "510132": "新津县", - "510181": "都江堰市", - "510182": "彭州市", - "510183": "邛崃市", - "510184": "崇州市", - "510185": "简阳市", - "510302": "自流井区", - "510303": "贡井区", - "510304": "大安区", - "510311": "沿滩区", - "510321": "荣县", - "510322": "富顺县", - "510402": "东区", - "510403": "西区", - "510411": "仁和区", - "510421": "米易县", - "510422": "盐边县", - "510502": "江阳区", - "510503": "纳溪区", - "510504": "龙马潭区", - "510521": "泸县", - "510522": "合江县", - "510524": "叙永县", - "510525": "古蔺县", - "510603": "旌阳区", - "510623": "中江县", - "510626": "罗江县", - "510681": "广汉市", - "510682": "什邡市", - "510683": "绵竹市", - "510703": "涪城区", - "510704": "游仙区", - "510705": "安州区", - "510722": "三台县", - "510723": "盐亭县", - "510725": "梓潼县", - "510726": "北川羌族自治县", - "510727": "平武县", - "510781": "江油市", - "510802": "利州区", - "510811": "昭化区", - "510812": "朝天区", - "510821": "旺苍县", - "510822": "青川县", - "510823": "剑阁县", - "510824": "苍溪县", - "510903": "船山区", - "510904": "安居区", - "510921": "蓬溪县", - "510922": "射洪县", - "510923": "大英县", - "511002": "市中区", - "511011": "东兴区", - "511024": "威远县", - "511025": "资中县", - "511028": "隆昌县", - "511102": "市中区", - "511111": "沙湾区", - "511112": "五通桥区", - "511113": "金口河区", - "511123": "犍为县", - "511124": "井研县", - "511126": "夹江县", - "511129": "沐川县", - "511132": "峨边彝族自治县", - "511133": "马边彝族自治县", - "511181": "峨眉山市", - "511302": "顺庆区", - "511303": "高坪区", - "511304": "嘉陵区", - "511321": "南部县", - "511322": "营山县", - "511323": "蓬安县", - "511324": "仪陇县", - "511325": "西充县", - "511381": "阆中市", - "511402": "东坡区", - "511403": "彭山区", - "511421": "仁寿县", - "511423": "洪雅县", - "511424": "丹棱县", - "511425": "青神县", - "511502": "翠屏区", - "511503": "南溪区", - "511521": "宜宾县", - "511523": "江安县", - "511524": "长宁县", - "511525": "高县", - "511526": "珙县", - "511527": "筠连县", - "511528": "兴文县", - "511529": "屏山县", - "511602": "广安区", - "511603": "前锋区", - "511621": "岳池县", - "511622": "武胜县", - "511623": "邻水县", - "511681": "华蓥市", - "511702": "通川区", - "511703": "达川区", - "511722": "宣汉县", - "511723": "开江县", - "511724": "大竹县", - "511725": "渠县", - "511781": "万源市", - "511802": "雨城区", - "511803": "名山区", - "511822": "荥经县", - "511823": "汉源县", - "511824": "石棉县", - "511825": "天全县", - "511826": "芦山县", - "511827": "宝兴县", - "511902": "巴州区", - "511903": "恩阳区", - "511921": "通江县", - "511922": "南江县", - "511923": "平昌县", - "512002": "雁江区", - "512021": "安岳县", - "512022": "乐至县", - "513201": "马尔康市", - "513221": "汶川县", - "513222": "理县", - "513223": "茂县", - "513224": "松潘县", - "513225": "九寨沟县", - "513226": "金川县", - "513227": "小金县", - "513228": "黑水县", - "513230": "壤塘县", - "513231": "阿坝县", - "513232": "若尔盖县", - "513233": "红原县", - "513301": "康定市", - "513322": "泸定县", - "513323": "丹巴县", - "513324": "九龙县", - "513325": "雅江县", - "513326": "道孚县", - "513327": "炉霍县", - "513328": "甘孜县", - "513329": "新龙县", - "513330": "德格县", - "513331": "白玉县", - "513332": "石渠县", - "513333": "色达县", - "513334": "理塘县", - "513335": "巴塘县", - "513336": "乡城县", - "513337": "稻城县", - "513338": "得荣县", - "513401": "西昌市", - "513422": "木里藏族自治县", - "513423": "盐源县", - "513424": "德昌县", - "513425": "会理县", - "513426": "会东县", - "513427": "宁南县", - "513428": "普格县", - "513429": "布拖县", - "513430": "金阳县", - "513431": "昭觉县", - "513432": "喜德县", - "513433": "冕宁县", - "513434": "越西县", - "513435": "甘洛县", - "513436": "美姑县", - "513437": "雷波县", - "520102": "南明区", - "520103": "云岩区", - "520111": "花溪区", - "520112": "乌当区", - "520113": "白云区", - "520115": "观山湖区", - "520121": "开阳县", - "520122": "息烽县", - "520123": "修文县", - "520181": "清镇市", - "520201": "钟山区", - "520203": "六枝特区", - "520221": "水城县", - "520222": "盘县", - "520302": "红花岗区", - "520303": "汇川区", - "520304": "播州区", - "520322": "桐梓县", - "520323": "绥阳县", - "520324": "正安县", - "520325": "道真仡佬族苗族自治县", - "520326": "务川仡佬族苗族自治县", - "520327": "凤冈县", - "520328": "湄潭县", - "520329": "余庆县", - "520330": "习水县", - "520381": "赤水市", - "520382": "仁怀市", - "520402": "西秀区", - "520403": "平坝区", - "520422": "普定县", - "520423": "镇宁布依族苗族自治县", - "520424": "关岭布依族苗族自治县", - "520425": "紫云苗族布依族自治县", - "520502": "七星关区", - "520521": "大方县", - "520522": "黔西县", - "520523": "金沙县", - "520524": "织金县", - "520525": "纳雍县", - "520526": "威宁彝族回族苗族自治县", - "520527": "赫章县", - "520602": "碧江区", - "520603": "万山区", - "520621": "江口县", - "520622": "玉屏侗族自治县", - "520623": "石阡县", - "520624": "思南县", - "520625": "印江土家族苗族自治县", - "520626": "德江县", - "520627": "沿河土家族自治县", - "520628": "松桃苗族自治县", - "522301": "兴义市", - "522322": "兴仁县", - "522323": "普安县", - "522324": "晴隆县", - "522325": "贞丰县", - "522326": "望谟县", - "522327": "册亨县", - "522328": "安龙县", - "522601": "凯里市", - "522622": "黄平县", - "522623": "施秉县", - "522624": "三穗县", - "522625": "镇远县", - "522626": "岑巩县", - "522627": "天柱县", - "522628": "锦屏县", - "522629": "剑河县", - "522630": "台江县", - "522631": "黎平县", - "522632": "榕江县", - "522633": "从江县", - "522634": "雷山县", - "522635": "麻江县", - "522636": "丹寨县", - "522701": "都匀市", - "522702": "福泉市", - "522722": "荔波县", - "522723": "贵定县", - "522725": "瓮安县", - "522726": "独山县", - "522727": "平塘县", - "522728": "罗甸县", - "522729": "长顺县", - "522730": "龙里县", - "522731": "惠水县", - "522732": "三都水族自治县", - "530102": "五华区", - "530103": "盘龙区", - "530111": "官渡区", - "530112": "西山区", - "530113": "东川区", - "530114": "呈贡区", - "530122": "晋宁县", - "530124": "富民县", - "530125": "宜良县", - "530126": "石林彝族自治县", - "530127": "嵩明县", - "530128": "禄劝彝族苗族自治县", - "530129": "寻甸回族彝族自治县", - "530181": "安宁市", - "530302": "麒麟区", - "530303": "沾益区", - "530321": "马龙县", - "530322": "陆良县", - "530323": "师宗县", - "530324": "罗平县", - "530325": "富源县", - "530326": "会泽县", - "530381": "宣威市", - "530402": "红塔区", - "530403": "江川区", - "530422": "澄江县", - "530423": "通海县", - "530424": "华宁县", - "530425": "易门县", - "530426": "峨山彝族自治县", - "530427": "新平彝族傣族自治县", - "530428": "元江哈尼族彝族傣族自治县", - "530502": "隆阳区", - "530521": "施甸县", - "530523": "龙陵县", - "530524": "昌宁县", - "530581": "腾冲市", - "530602": "昭阳区", - "530621": "鲁甸县", - "530622": "巧家县", - "530623": "盐津县", - "530624": "大关县", - "530625": "永善县", - "530626": "绥江县", - "530627": "镇雄县", - "530628": "彝良县", - "530629": "威信县", - "530630": "水富县", - "530702": "古城区", - "530721": "玉龙纳西族自治县", - "530722": "永胜县", - "530723": "华坪县", - "530724": "宁蒗彝族自治县", - "530802": "思茅区", - "530821": "宁洱哈尼族彝族自治县", - "530822": "墨江哈尼族自治县", - "530823": "景东彝族自治县", - "530824": "景谷傣族彝族自治县", - "530825": "镇沅彝族哈尼族拉祜族自治县", - "530826": "江城哈尼族彝族自治县", - "530827": "孟连傣族拉祜族佤族自治县", - "530828": "澜沧拉祜族自治县", - "530829": "西盟佤族自治县", - "530902": "临翔区", - "530921": "凤庆县", - "530922": "云县", - "530923": "永德县", - "530924": "镇康县", - "530925": "双江拉祜族佤族布朗族傣族自治县", - "530926": "耿马傣族佤族自治县", - "530927": "沧源佤族自治县", - "532301": "楚雄市", - "532322": "双柏县", - "532323": "牟定县", - "532324": "南华县", - "532325": "姚安县", - "532326": "大姚县", - "532327": "永仁县", - "532328": "元谋县", - "532329": "武定县", - "532331": "禄丰县", - "532501": "个旧市", - "532502": "开远市", - "532503": "蒙自市", - "532504": "弥勒市", - "532523": "屏边苗族自治县", - "532524": "建水县", - "532525": "石屏县", - "532527": "泸西县", - "532528": "元阳县", - "532529": "红河县", - "532530": "金平苗族瑶族傣族自治县", - "532531": "绿春县", - "532532": "河口瑶族自治县", - "532601": "文山市", - "532622": "砚山县", - "532623": "西畴县", - "532624": "麻栗坡县", - "532625": "马关县", - "532626": "丘北县", - "532627": "广南县", - "532628": "富宁县", - "532801": "景洪市", - "532822": "勐海县", - "532823": "勐腊县", - "532901": "大理市", - "532922": "漾濞彝族自治县", - "532923": "祥云县", - "532924": "宾川县", - "532925": "弥渡县", - "532926": "南涧彝族自治县", - "532927": "巍山彝族回族自治县", - "532928": "永平县", - "532929": "云龙县", - "532930": "洱源县", - "532931": "剑川县", - "532932": "鹤庆县", - "533102": "瑞丽市", - "533103": "芒市", - "533122": "梁河县", - "533123": "盈江县", - "533124": "陇川县", - "533301": "泸水市", - "533323": "福贡县", - "533324": "贡山独龙族怒族自治县", - "533325": "兰坪白族普米族自治县", - "533401": "香格里拉市", - "533422": "德钦县", - "533423": "维西傈僳族自治县", - "540102": "城关区", - "540103": "堆龙德庆区", - "540121": "林周县", - "540122": "当雄县", - "540123": "尼木县", - "540124": "曲水县", - "540126": "达孜县", - "540127": "墨竹工卡县", - "540202": "桑珠孜区", - "540221": "南木林县", - "540222": "江孜县", - "540223": "定日县", - "540224": "萨迦县", - "540225": "拉孜县", - "540226": "昂仁县", - "540227": "谢通门县", - "540228": "白朗县", - "540229": "仁布县", - "540230": "康马县", - "540231": "定结县", - "540232": "仲巴县", - "540233": "亚东县", - "540234": "吉隆县", - "540235": "聂拉木县", - "540236": "萨嘎县", - "540237": "岗巴县", - "540302": "卡若区", - "540321": "江达县", - "540322": "贡觉县", - "540323": "类乌齐县", - "540324": "丁青县", - "540325": "察雅县", - "540326": "八宿县", - "540327": "左贡县", - "540328": "芒康县", - "540329": "洛隆县", - "540330": "边坝县", - "540402": "巴宜区", - "540421": "工布江达县", - "540422": "米林县", - "540423": "墨脱县", - "540424": "波密县", - "540425": "察隅县", - "540426": "朗县", - "540502": "乃东区", - "540521": "扎囊县", - "540522": "贡嘎县", - "540523": "桑日县", - "540524": "琼结县", - "540525": "曲松县", - "540526": "措美县", - "540527": "洛扎县", - "540528": "加查县", - "540529": "隆子县", - "540530": "错那县", - "540531": "浪卡子县", - "542421": "那曲县", - "542422": "嘉黎县", - "542423": "比如县", - "542424": "聂荣县", - "542425": "安多县", - "542426": "申扎县", - "542427": "索县", - "542428": "班戈县", - "542429": "巴青县", - "542430": "尼玛县", - "542431": "双湖县", - "542521": "普兰县", - "542522": "札达县", - "542523": "噶尔县", - "542524": "日土县", - "542525": "革吉县", - "542526": "改则县", - "542527": "措勤县", - "610102": "新城区", - "610103": "碑林区", - "610104": "莲湖区", - "610111": "灞桥区", - "610112": "未央区", - "610113": "雁塔区", - "610114": "阎良区", - "610115": "临潼区", - "610116": "长安区", - "610117": "高陵区", - "610122": "蓝田县", - "610124": "周至县", - "610125": "户县", - "610202": "王益区", - "610203": "印台区", - "610204": "耀州区", - "610222": "宜君县", - "610302": "渭滨区", - "610303": "金台区", - "610304": "陈仓区", - "610322": "凤翔县", - "610323": "岐山县", - "610324": "扶风县", - "610326": "眉县", - "610327": "陇县", - "610328": "千阳县", - "610329": "麟游县", - "610330": "凤县", - "610331": "太白县", - "610402": "秦都区", - "610403": "杨陵区", - "610404": "渭城区", - "610422": "三原县", - "610423": "泾阳县", - "610424": "乾县", - "610425": "礼泉县", - "610426": "永寿县", - "610427": "彬县", - "610428": "长武县", - "610429": "旬邑县", - "610430": "淳化县", - "610431": "武功县", - "610481": "兴平市", - "610502": "临渭区", - "610503": "华州区", - "610522": "潼关县", - "610523": "大荔县", - "610524": "合阳县", - "610525": "澄城县", - "610526": "蒲城县", - "610527": "白水县", - "610528": "富平县", - "610581": "韩城市", - "610582": "华阴市", - "610602": "宝塔区", - "610603": "安塞区", - "610621": "延长县", - "610622": "延川县", - "610623": "子长县", - "610625": "志丹县", - "610626": "吴起县", - "610627": "甘泉县", - "610628": "富县", - "610629": "洛川县", - "610630": "宜川县", - "610631": "黄龙县", - "610632": "黄陵县", - "610702": "汉台区", - "610721": "南郑县", - "610722": "城固县", - "610723": "洋县", - "610724": "西乡县", - "610725": "勉县", - "610726": "宁强县", - "610727": "略阳县", - "610728": "镇巴县", - "610729": "留坝县", - "610730": "佛坪县", - "610802": "榆阳区", - "610803": "横山区", - "610821": "神木县", - "610822": "府谷县", - "610824": "靖边县", - "610825": "定边县", - "610826": "绥德县", - "610827": "米脂县", - "610828": "佳县", - "610829": "吴堡县", - "610830": "清涧县", - "610831": "子洲县", - "610902": "汉滨区", - "610921": "汉阴县", - "610922": "石泉县", - "610923": "宁陕县", - "610924": "紫阳县", - "610925": "岚皋县", - "610926": "平利县", - "610927": "镇坪县", - "610928": "旬阳县", - "610929": "白河县", - "611002": "商州区", - "611021": "洛南县", - "611022": "丹凤县", - "611023": "商南县", - "611024": "山阳县", - "611025": "镇安县", - "611026": "柞水县", - "620102": "城关区", - "620103": "七里河区", - "620104": "西固区", - "620105": "安宁区", - "620111": "红古区", - "620121": "永登县", - "620122": "皋兰县", - "620123": "榆中县", - "620201": "嘉峪关市", - "620302": "金川区", - "620321": "永昌县", - "620402": "白银区", - "620403": "平川区", - "620421": "靖远县", - "620422": "会宁县", - "620423": "景泰县", - "620502": "秦州区", - "620503": "麦积区", - "620521": "清水县", - "620522": "秦安县", - "620523": "甘谷县", - "620524": "武山县", - "620525": "张家川回族自治县", - "620602": "凉州区", - "620621": "民勤县", - "620622": "古浪县", - "620623": "天祝藏族自治县", - "620702": "甘州区", - "620721": "肃南裕固族自治县", - "620722": "民乐县", - "620723": "临泽县", - "620724": "高台县", - "620725": "山丹县", - "620802": "崆峒区", - "620821": "泾川县", - "620822": "灵台县", - "620823": "崇信县", - "620824": "华亭县", - "620825": "庄浪县", - "620826": "静宁县", - "620902": "肃州区", - "620921": "金塔县", - "620922": "瓜州县", - "620923": "肃北蒙古族自治县", - "620924": "阿克塞哈萨克族自治县", - "620981": "玉门市", - "620982": "敦煌市", - "621002": "西峰区", - "621021": "庆城县", - "621022": "环县", - "621023": "华池县", - "621024": "合水县", - "621025": "正宁县", - "621026": "宁县", - "621027": "镇原县", - "621102": "安定区", - "621121": "通渭县", - "621122": "陇西县", - "621123": "渭源县", - "621124": "临洮县", - "621125": "漳县", - "621126": "岷县", - "621202": "武都区", - "621221": "成县", - "621222": "文县", - "621223": "宕昌县", - "621224": "康县", - "621225": "西和县", - "621226": "礼县", - "621227": "徽县", - "621228": "两当县", - "622901": "临夏市", - "622921": "临夏县", - "622922": "康乐县", - "622923": "永靖县", - "622924": "广河县", - "622925": "和政县", - "622926": "东乡族自治县", - "622927": "积石山保安族东乡族撒拉族自治县", - "623001": "合作市", - "623021": "临潭县", - "623022": "卓尼县", - "623023": "舟曲县", - "623024": "迭部县", - "623025": "玛曲县", - "623026": "碌曲县", - "623027": "夏河县", - "630102": "城东区", - "630103": "城中区", - "630104": "城西区", - "630105": "城北区", - "630121": "大通回族土族自治县", - "630122": "湟中县", - "630123": "湟源县", - "630202": "乐都区", - "630203": "平安区", - "630222": "民和回族土族自治县", - "630223": "互助土族自治县", - "630224": "化隆回族自治县", - "630225": "循化撒拉族自治县", - "632221": "门源回族自治县", - "632222": "祁连县", - "632223": "海晏县", - "632224": "刚察县", - "632321": "同仁县", - "632322": "尖扎县", - "632323": "泽库县", - "632324": "河南蒙古族自治县", - "632521": "共和县", - "632522": "同德县", - "632523": "贵德县", - "632524": "兴海县", - "632525": "贵南县", - "632621": "玛沁县", - "632622": "班玛县", - "632623": "甘德县", - "632624": "达日县", - "632625": "久治县", - "632626": "玛多县", - "632701": "玉树市", - "632722": "杂多县", - "632723": "称多县", - "632724": "治多县", - "632725": "囊谦县", - "632726": "曲麻莱县", - "632801": "格尔木市", - "632802": "德令哈市", - "632821": "乌兰县", - "632822": "都兰县", - "632823": "天峻县", - "640104": "兴庆区", - "640105": "西夏区", - "640106": "金凤区", - "640121": "永宁县", - "640122": "贺兰县", - "640181": "灵武市", - "640202": "大武口区", - "640205": "惠农区", - "640221": "平罗县", - "640302": "利通区", - "640303": "红寺堡区", - "640323": "盐池县", - "640324": "同心县", - "640381": "青铜峡市", - "640402": "原州区", - "640422": "西吉县", - "640423": "隆德县", - "640424": "泾源县", - "640425": "彭阳县", - "640502": "沙坡头区", - "640521": "中宁县", - "640522": "海原县", - "650102": "天山区", - "650103": "沙依巴克区", - "650104": "新市区", - "650105": "水磨沟区", - "650106": "头屯河区", - "650107": "达坂城区", - "650109": "米东区", - "650121": "乌鲁木齐县", - "650202": "独山子区", - "650203": "克拉玛依区", - "650204": "白碱滩区", - "650205": "乌尔禾区", - "650402": "高昌区", - "650421": "鄯善县", - "650422": "托克逊县", - "650502": "伊州区", - "650521": "巴里坤哈萨克自治县", - "650522": "伊吾县", - "652301": "昌吉市", - "652302": "阜康市", - "652323": "呼图壁县", - "652324": "玛纳斯县", - "652325": "奇台县", - "652327": "吉木萨尔县", - "652328": "木垒哈萨克自治县", - "652701": "博乐市", - "652702": "阿拉山口市", - "652722": "精河县", - "652723": "温泉县", - "652801": "库尔勒市", - "652822": "轮台县", - "652823": "尉犁县", - "652824": "若羌县", - "652825": "且末县", - "652826": "焉耆回族自治县", - "652827": "和静县", - "652828": "和硕县", - "652829": "博湖县", - "652901": "阿克苏市", - "652922": "温宿县", - "652923": "库车县", - "652924": "沙雅县", - "652925": "新和县", - "652926": "拜城县", - "652927": "乌什县", - "652928": "阿瓦提县", - "652929": "柯坪县", - "653001": "阿图什市", - "653022": "阿克陶县", - "653023": "阿合奇县", - "653024": "乌恰县", - "653101": "喀什市", - "653121": "疏附县", - "653122": "疏勒县", - "653123": "英吉沙县", - "653124": "泽普县", - "653125": "莎车县", - "653126": "叶城县", - "653127": "麦盖提县", - "653128": "岳普湖县", - "653129": "伽师县", - "653130": "巴楚县", - "653131": "塔什库尔干塔吉克自治县", - "653201": "和田市", - "653221": "和田县", - "653222": "墨玉县", - "653223": "皮山县", - "653224": "洛浦县", - "653225": "策勒县", - "653226": "于田县", - "653227": "民丰县", - "654002": "伊宁市", - "654003": "奎屯市", - "654004": "霍尔果斯市", - "654021": "伊宁县", - "654022": "察布查尔锡伯自治县", - "654023": "霍城县", - "654024": "巩留县", - "654025": "新源县", - "654026": "昭苏县", - "654027": "特克斯县", - "654028": "尼勒克县", - "654201": "塔城市", - "654202": "乌苏市", - "654221": "额敏县", - "654223": "沙湾县", - "654224": "托里县", - "654225": "裕民县", - "654226": "和布克赛尔蒙古自治县", - "654301": "阿勒泰市", - "654321": "布尔津县", - "654322": "富蕴县", - "654323": "福海县", - "654324": "哈巴河县", - "654325": "青河县", - "654326": "吉木乃县", - "659001": "石河子市", - "659002": "阿拉尔市", - "659003": "图木舒克市", - "659004": "五家渠市", - "659006": "铁门关市" - } -} - -function getConfig(type) { - return (areaList && areaList[`${type}_list`]) || {}; -} - -function getList(type, code) { - let result = []; - if (type !== 'province' && !code) { - return result; - } - - const list = getConfig(type); - result = Object.keys(list).map(code => ({ - code, - name: list[code] - })); - - if (code) { - // oversea code - if (code[0] === '9' && type === 'city') { - code = '9'; - } - - result = result.filter(item => item.code.indexOf(code) === 0); - } - - return result; -} - -// get index by code -function getIndex(type, code) { - let compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6; - const list = getList(type, code.slice(0, compareNum - 2)); - - // oversea code - if (code[0] === '9' && type === 'province') { - compareNum = 1; - } - - code = code.slice(0, compareNum); - for (let i = 0; i < list.length; i++) { - if (list[i].code.slice(0, compareNum) === code) { - return i; - } - } - - return 0; -} - -// 参考 https://github.com/youzan/vant-weapp/blob/dev/packages/area/index.ts -// 定义数据出口 -module.exports = { - areaList: areaList, - getList: getList, - getIndex: getIndex -} \ No newline at end of file +export const areaList = { + province_list: { + 110000: "北京市", + 120000: "天津市", + 130000: "河北省", + 140000: "山西省", + 150000: "内蒙古自治区", + 210000: "辽宁省", + 220000: "吉林省", + 230000: "黑龙江省", + 310000: "上海市", + 320000: "江苏省", + 330000: "浙江省", + 340000: "安徽省", + 350000: "福建省", + 360000: "江西省", + 370000: "山东省", + 410000: "河南省", + 420000: "湖北省", + 430000: "湖南省", + 440000: "广东省", + 450000: "广西壮族自治区", + 460000: "海南省", + 500000: "重庆市", + 510000: "四川省", + 520000: "贵州省", + 530000: "云南省", + 540000: "西藏自治区", + 610000: "陕西省", + 620000: "甘肃省", + 630000: "青海省", + 640000: "宁夏回族自治区", + 650000: "新疆维吾尔自治区", + 710000: "台湾省", + 810000: "香港特别行政区", + 820000: "澳门特别行政区", + }, + city_list: { + 110100: "北京市", + 120100: "天津市", + 130100: "石家庄市", + 130200: "唐山市", + 130300: "秦皇岛市", + 130400: "邯郸市", + 130500: "邢台市", + 130600: "保定市", + 130700: "张家口市", + 130800: "承德市", + 130900: "沧州市", + 131000: "廊坊市", + 131100: "衡水市", + 140100: "太原市", + 140200: "大同市", + 140300: "阳泉市", + 140400: "长治市", + 140500: "晋城市", + 140600: "朔州市", + 140700: "晋中市", + 140800: "运城市", + 140900: "忻州市", + 141000: "临汾市", + 141100: "吕梁市", + 150100: "呼和浩特市", + 150200: "包头市", + 150300: "乌海市", + 150400: "赤峰市", + 150500: "通辽市", + 150600: "鄂尔多斯市", + 150700: "呼伦贝尔市", + 150800: "巴彦淖尔市", + 150900: "乌兰察布市", + 152200: "兴安盟", + 152500: "锡林郭勒盟", + 152900: "阿拉善盟", + 210100: "沈阳市", + 210200: "大连市", + 210300: "鞍山市", + 210400: "抚顺市", + 210500: "本溪市", + 210600: "丹东市", + 210700: "锦州市", + 210800: "营口市", + 210900: "阜新市", + 211000: "辽阳市", + 211100: "盘锦市", + 211200: "铁岭市", + 211300: "朝阳市", + 211400: "葫芦岛市", + 220100: "长春市", + 220200: "吉林市", + 220300: "四平市", + 220400: "辽源市", + 220500: "通化市", + 220600: "白山市", + 220700: "松原市", + 220800: "白城市", + 222400: "延边朝鲜族自治州", + 230100: "哈尔滨市", + 230200: "齐齐哈尔市", + 230300: "鸡西市", + 230400: "鹤岗市", + 230500: "双鸭山市", + 230600: "大庆市", + 230700: "伊春市", + 230800: "佳木斯市", + 230900: "七台河市", + 231000: "牡丹江市", + 231100: "黑河市", + 231200: "绥化市", + 232700: "大兴安岭地区", + 310100: "上海市", + 320100: "南京市", + 320200: "无锡市", + 320300: "徐州市", + 320400: "常州市", + 320500: "苏州市", + 320600: "南通市", + 320700: "连云港市", + 320800: "淮安市", + 320900: "盐城市", + 321000: "扬州市", + 321100: "镇江市", + 321200: "泰州市", + 321300: "宿迁市", + 330100: "杭州市", + 330200: "宁波市", + 330300: "温州市", + 330400: "嘉兴市", + 330500: "湖州市", + 330600: "绍兴市", + 330700: "金华市", + 330800: "衢州市", + 330900: "舟山市", + 331000: "台州市", + 331100: "丽水市", + 340100: "合肥市", + 340200: "芜湖市", + 340300: "蚌埠市", + 340400: "淮南市", + 340500: "马鞍山市", + 340600: "淮北市", + 340700: "铜陵市", + 340800: "安庆市", + 341000: "黄山市", + 341100: "滁州市", + 341200: "阜阳市", + 341300: "宿州市", + 341500: "六安市", + 341600: "亳州市", + 341700: "池州市", + 341800: "宣城市", + 350100: "福州市", + 350200: "厦门市", + 350300: "莆田市", + 350400: "三明市", + 350500: "泉州市", + 350600: "漳州市", + 350700: "南平市", + 350800: "龙岩市", + 350900: "宁德市", + 360100: "南昌市", + 360200: "景德镇市", + 360300: "萍乡市", + 360400: "九江市", + 360500: "新余市", + 360600: "鹰潭市", + 360700: "赣州市", + 360800: "吉安市", + 360900: "宜春市", + 361000: "抚州市", + 361100: "上饶市", + 370100: "济南市", + 370200: "青岛市", + 370300: "淄博市", + 370400: "枣庄市", + 370500: "东营市", + 370600: "烟台市", + 370700: "潍坊市", + 370800: "济宁市", + 370900: "泰安市", + 371000: "威海市", + 371100: "日照市", + 371300: "临沂市", + 371400: "德州市", + 371500: "聊城市", + 371600: "滨州市", + 371700: "菏泽市", + 410100: "郑州市", + 410200: "开封市", + 410300: "洛阳市", + 410400: "平顶山市", + 410500: "安阳市", + 410600: "鹤壁市", + 410700: "新乡市", + 410800: "焦作市", + 410900: "濮阳市", + 411000: "许昌市", + 411100: "漯河市", + 411200: "三门峡市", + 411300: "南阳市", + 411400: "商丘市", + 411500: "信阳市", + 411600: "周口市", + 411700: "驻马店市", + 419001: "济源市", + 420100: "武汉市", + 420200: "黄石市", + 420300: "十堰市", + 420500: "宜昌市", + 420600: "襄阳市", + 420700: "鄂州市", + 420800: "荆门市", + 420900: "孝感市", + 421000: "荆州市", + 421100: "黄冈市", + 421200: "咸宁市", + 421300: "随州市", + 422800: "恩施土家族苗族自治州", + 429004: "仙桃市", + 429005: "潜江市", + 429006: "天门市", + 429021: "神农架林区", + 430100: "长沙市", + 430200: "株洲市", + 430300: "湘潭市", + 430400: "衡阳市", + 430500: "邵阳市", + 430600: "岳阳市", + 430700: "常德市", + 430800: "张家界市", + 430900: "益阳市", + 431000: "郴州市", + 431100: "永州市", + 431200: "怀化市", + 431300: "娄底市", + 433100: "湘西土家族苗族自治州", + 440100: "广州市", + 440200: "韶关市", + 440300: "深圳市", + 440400: "珠海市", + 440500: "汕头市", + 440600: "佛山市", + 440700: "江门市", + 440800: "湛江市", + 440900: "茂名市", + 441200: "肇庆市", + 441300: "惠州市", + 441400: "梅州市", + 441500: "汕尾市", + 441600: "河源市", + 441700: "阳江市", + 441800: "清远市", + 441900: "东莞市", + 442000: "中山市", + 445100: "潮州市", + 445200: "揭阳市", + 445300: "云浮市", + 450100: "南宁市", + 450200: "柳州市", + 450300: "桂林市", + 450400: "梧州市", + 450500: "北海市", + 450600: "防城港市", + 450700: "钦州市", + 450800: "贵港市", + 450900: "玉林市", + 451000: "百色市", + 451100: "贺州市", + 451200: "河池市", + 451300: "来宾市", + 451400: "崇左市", + 460100: "海口市", + 460200: "三亚市", + 460300: "三沙市", + 460400: "儋州市", + 469001: "五指山市", + 469002: "琼海市", + 469005: "文昌市", + 469006: "万宁市", + 469007: "东方市", + 469021: "定安县", + 469022: "屯昌县", + 469023: "澄迈县", + 469024: "临高县", + 469025: "白沙黎族自治县", + 469026: "昌江黎族自治县", + 469027: "乐东黎族自治县", + 469028: "陵水黎族自治县", + 469030: "琼中黎族苗族自治县", + 469035: "保亭黎族苗族自治县", + 500100: "重庆市", + 510100: "成都市", + 510300: "自贡市", + 510400: "攀枝花市", + 510500: "泸州市", + 510600: "德阳市", + 510700: "绵阳市", + 510800: "广元市", + 510900: "遂宁市", + 511000: "内江市", + 511100: "乐山市", + 511300: "南充市", + 511400: "眉山市", + 511500: "宜宾市", + 511600: "广安市", + 511700: "达州市", + 511800: "雅安市", + 511900: "巴中市", + 512000: "资阳市", + 513200: "阿坝藏族羌族自治州", + 513300: "甘孜藏族自治州", + 513400: "凉山彝族自治州", + 520100: "贵阳市", + 520200: "六盘水市", + 520300: "遵义市", + 520400: "安顺市", + 522200: "铜仁市", + 522300: "黔西南布依族苗族自治州", + 522400: "毕节市", + 522600: "黔东南苗族侗族自治州", + 522700: "黔南布依族苗族自治州", + 530100: "昆明市", + 530300: "曲靖市", + 530400: "玉溪市", + 530500: "保山市", + 530600: "昭通市", + 530700: "丽江市", + 530800: "普洱市", + 530900: "临沧市", + 532300: "楚雄彝族自治州", + 532500: "红河哈尼族彝族自治州", + 532600: "文山壮族苗族自治州", + 532800: "西双版纳傣族自治州", + 532900: "大理白族自治州", + 533100: "德宏傣族景颇族自治州", + 533300: "怒江傈僳族自治州", + 533400: "迪庆藏族自治州", + 540100: "拉萨市", + 540500: "山南市", + 540600: "那曲市", + 542100: "昌都市", + 542300: "日喀则市", + 542500: "阿里地区", + 542600: "林芝市", + 610100: "西安市", + 610200: "铜川市", + 610300: "宝鸡市", + 610400: "咸阳市", + 610500: "渭南市", + 610600: "延安市", + 610700: "汉中市", + 610800: "榆林市", + 610900: "安康市", + 611000: "商洛市", + 620100: "兰州市", + 620200: "嘉峪关市", + 620300: "金昌市", + 620400: "白银市", + 620500: "天水市", + 620600: "武威市", + 620700: "张掖市", + 620800: "平凉市", + 620900: "酒泉市", + 621000: "庆阳市", + 621100: "定西市", + 621200: "陇南市", + 622900: "临夏回族自治州", + 623000: "甘南藏族自治州", + 630100: "西宁市", + 632100: "海东市", + 632200: "海北藏族自治州", + 632300: "黄南藏族自治州", + 632500: "海南藏族自治州", + 632600: "果洛藏族自治州", + 632700: "玉树藏族自治州", + 632800: "海西蒙古族藏族自治州", + 640100: "银川市", + 640200: "石嘴山市", + 640300: "吴忠市", + 640400: "固原市", + 640500: "中卫市", + 650100: "乌鲁木齐市", + 650200: "克拉玛依市", + 650500: "哈密市", + 652100: "吐鲁番市", + 652300: "昌吉回族自治州", + 652700: "博尔塔拉蒙古自治州", + 652800: "巴音郭楞蒙古自治州", + 652900: "阿克苏地区", + 653000: "克孜勒苏柯尔克孜自治州", + 653100: "喀什地区", + 653200: "和田地区", + 654000: "伊犁哈萨克自治州", + 654200: "塔城地区", + 654300: "阿勒泰地区", + 659001: "石河子市", + 659002: "阿拉尔市", + 659003: "图木舒克市", + 659004: "五家渠市", + 659005: "北屯市", + 659006: "铁门关市", + 659007: "双河市", + 659008: "可克达拉市", + 659009: "昆玉市", + 659010: "胡杨河市", + 659011: "新星市", + 710100: "台北市", + 710200: "高雄市", + 710300: "台南市", + 710400: "台中市", + 710500: "金门县", + 710600: "南投县", + 710700: "基隆市", + 710800: "新竹市", + 710900: "嘉义市", + 711100: "新北市", + 711200: "宜兰县", + 711300: "新竹县", + 711400: "桃园县", + 711500: "苗栗县", + 711700: "彰化县", + 711900: "嘉义县", + 712100: "云林县", + 712400: "屏东县", + 712500: "台东县", + 712600: "花莲县", + 712700: "澎湖县", + 712800: "连江县", + 810100: "香港岛", + 810200: "九龙", + 810300: "新界", + 820100: "澳门半岛", + 820200: "氹仔岛", + 820300: "路环岛", + 820400: "非堂区", + }, + county_list: { + 110101: "东城区", + 110102: "西城区", + 110105: "朝阳区", + 110106: "丰台区", + 110107: "石景山区", + 110108: "海淀区", + 110109: "门头沟区", + 110111: "房山区", + 110112: "通州区", + 110113: "顺义区", + 110114: "昌平区", + 110115: "大兴区", + 110116: "怀柔区", + 110117: "平谷区", + 110118: "密云区", + 110119: "延庆区", + 120101: "和平区", + 120102: "河东区", + 120103: "河西区", + 120104: "南开区", + 120105: "河北区", + 120106: "红桥区", + 120110: "东丽区", + 120111: "西青区", + 120112: "津南区", + 120113: "北辰区", + 120114: "武清区", + 120115: "宝坻区", + 120116: "滨海新区", + 120117: "宁河区", + 120118: "静海区", + 120119: "蓟州区", + 130102: "长安区", + 130104: "桥西区", + 130105: "新华区", + 130107: "井陉矿区", + 130108: "裕华区", + 130121: "井陉县", + 130123: "正定县", + 130124: "栾城区", + 130125: "行唐县", + 130126: "灵寿县", + 130127: "高邑县", + 130128: "深泽县", + 130129: "赞皇县", + 130130: "无极县", + 130131: "平山县", + 130132: "元氏县", + 130133: "赵县", + 130181: "辛集市", + 130182: "藁城区", + 130183: "晋州市", + 130184: "新乐市", + 130185: "鹿泉区", + 130202: "路南区", + 130203: "路北区", + 130204: "古冶区", + 130205: "开平区", + 130207: "丰南区", + 130208: "丰润区", + 130224: "滦南县", + 130225: "乐亭县", + 130227: "迁西县", + 130229: "玉田县", + 130230: "曹妃甸区", + 130281: "遵化市", + 130283: "迁安市", + 130284: "滦州市", + 130302: "海港区", + 130303: "山海关区", + 130304: "北戴河区", + 130306: "抚宁区", + 130321: "青龙满族自治县", + 130322: "昌黎县", + 130324: "卢龙县", + 130402: "邯山区", + 130403: "丛台区", + 130404: "复兴区", + 130406: "峰峰矿区", + 130407: "肥乡区", + 130408: "永年区", + 130423: "临漳县", + 130424: "成安县", + 130425: "大名县", + 130426: "涉县", + 130427: "磁县", + 130430: "邱县", + 130431: "鸡泽县", + 130432: "广平县", + 130433: "馆陶县", + 130434: "魏县", + 130435: "曲周县", + 130481: "武安市", + 130502: "襄都区", + 130503: "信都区", + 130522: "临城县", + 130523: "内丘县", + 130524: "柏乡县", + 130525: "隆尧县", + 130526: "任泽区", + 130527: "南和区", + 130528: "宁晋县", + 130529: "巨鹿县", + 130530: "新河县", + 130531: "广宗县", + 130532: "平乡县", + 130533: "威县", + 130534: "清河县", + 130535: "临西县", + 130581: "南宫市", + 130582: "沙河市", + 130602: "竞秀区", + 130606: "莲池区", + 130607: "满城区", + 130608: "清苑区", + 130609: "徐水区", + 130623: "涞水县", + 130624: "阜平县", + 130626: "定兴县", + 130627: "唐县", + 130628: "高阳县", + 130629: "容城县", + 130630: "涞源县", + 130631: "望都县", + 130632: "安新县", + 130633: "易县", + 130634: "曲阳县", + 130635: "蠡县", + 130636: "顺平县", + 130637: "博野县", + 130638: "雄县", + 130681: "涿州市", + 130682: "定州市", + 130683: "安国市", + 130684: "高碑店市", + 130702: "桥东区", + 130703: "桥西区", + 130705: "宣化区", + 130706: "下花园区", + 130708: "万全区", + 130709: "崇礼区", + 130722: "张北县", + 130723: "康保县", + 130724: "沽源县", + 130725: "尚义县", + 130726: "蔚县", + 130727: "阳原县", + 130728: "怀安县", + 130730: "怀来县", + 130731: "涿鹿县", + 130732: "赤城县", + 130802: "双桥区", + 130803: "双滦区", + 130804: "鹰手营子矿区", + 130821: "承德县", + 130822: "兴隆县", + 130824: "滦平县", + 130825: "隆化县", + 130826: "丰宁满族自治县", + 130827: "宽城满族自治县", + 130828: "围场满族蒙古族自治县", + 130881: "平泉市", + 130902: "新华区", + 130903: "运河区", + 130921: "沧县", + 130922: "青县", + 130923: "东光县", + 130924: "海兴县", + 130925: "盐山县", + 130926: "肃宁县", + 130927: "南皮县", + 130928: "吴桥县", + 130929: "献县", + 130930: "孟村回族自治县", + 130981: "泊头市", + 130982: "任丘市", + 130983: "黄骅市", + 130984: "河间市", + 131002: "安次区", + 131003: "广阳区", + 131022: "固安县", + 131023: "永清县", + 131024: "香河县", + 131025: "大城县", + 131026: "文安县", + 131028: "大厂回族自治县", + 131081: "霸州市", + 131082: "三河市", + 131102: "桃城区", + 131103: "冀州区", + 131121: "枣强县", + 131122: "武邑县", + 131123: "武强县", + 131124: "饶阳县", + 131125: "安平县", + 131126: "故城县", + 131127: "景县", + 131128: "阜城县", + 131182: "深州市", + 140105: "小店区", + 140106: "迎泽区", + 140107: "杏花岭区", + 140108: "尖草坪区", + 140109: "万柏林区", + 140110: "晋源区", + 140121: "清徐县", + 140122: "阳曲县", + 140123: "娄烦县", + 140181: "古交市", + 140212: "新荣区", + 140213: "平城区", + 140214: "云冈区", + 140215: "云州区", + 140221: "阳高县", + 140222: "天镇县", + 140223: "广灵县", + 140224: "灵丘县", + 140225: "浑源县", + 140226: "左云县", + 140302: "城区", + 140303: "矿区", + 140311: "郊区", + 140321: "平定县", + 140322: "盂县", + 140403: "潞州区", + 140404: "上党区", + 140405: "屯留区", + 140406: "潞城区", + 140423: "襄垣县", + 140425: "平顺县", + 140426: "黎城县", + 140427: "壶关县", + 140428: "长子县", + 140429: "武乡县", + 140430: "沁县", + 140431: "沁源县", + 140502: "城区", + 140521: "沁水县", + 140522: "阳城县", + 140524: "陵川县", + 140525: "泽州县", + 140581: "高平市", + 140602: "朔城区", + 140603: "平鲁区", + 140621: "山阴县", + 140622: "应县", + 140623: "右玉县", + 140681: "怀仁市", + 140702: "榆次区", + 140721: "榆社县", + 140722: "左权县", + 140723: "和顺县", + 140724: "昔阳县", + 140725: "寿阳县", + 140726: "太谷区", + 140727: "祁县", + 140728: "平遥县", + 140729: "灵石县", + 140781: "介休市", + 140802: "盐湖区", + 140821: "临猗县", + 140822: "万荣县", + 140823: "闻喜县", + 140824: "稷山县", + 140825: "新绛县", + 140826: "绛县", + 140827: "垣曲县", + 140828: "夏县", + 140829: "平陆县", + 140830: "芮城县", + 140881: "永济市", + 140882: "河津市", + 140902: "忻府区", + 140921: "定襄县", + 140922: "五台县", + 140923: "代县", + 140924: "繁峙县", + 140925: "宁武县", + 140926: "静乐县", + 140927: "神池县", + 140928: "五寨县", + 140929: "岢岚县", + 140930: "河曲县", + 140931: "保德县", + 140932: "偏关县", + 140981: "原平市", + 141002: "尧都区", + 141021: "曲沃县", + 141022: "翼城县", + 141023: "襄汾县", + 141024: "洪洞县", + 141025: "古县", + 141026: "安泽县", + 141027: "浮山县", + 141028: "吉县", + 141029: "乡宁县", + 141030: "大宁县", + 141031: "隰县", + 141032: "永和县", + 141033: "蒲县", + 141034: "汾西县", + 141081: "侯马市", + 141082: "霍州市", + 141102: "离石区", + 141121: "文水县", + 141122: "交城县", + 141123: "兴县", + 141124: "临县", + 141125: "柳林县", + 141126: "石楼县", + 141127: "岚县", + 141128: "方山县", + 141129: "中阳县", + 141130: "交口县", + 141181: "孝义市", + 141182: "汾阳市", + 150102: "新城区", + 150103: "回民区", + 150104: "玉泉区", + 150105: "赛罕区", + 150121: "土默特左旗", + 150122: "托克托县", + 150123: "和林格尔县", + 150124: "清水河县", + 150125: "武川县", + 150202: "东河区", + 150203: "昆都仑区", + 150204: "青山区", + 150205: "石拐区", + 150206: "白云鄂博矿区", + 150207: "九原区", + 150221: "土默特右旗", + 150222: "固阳县", + 150223: "达尔罕茂明安联合旗", + 150302: "海勃湾区", + 150303: "海南区", + 150304: "乌达区", + 150402: "红山区", + 150403: "元宝山区", + 150404: "松山区", + 150421: "阿鲁科尔沁旗", + 150422: "巴林左旗", + 150423: "巴林右旗", + 150424: "林西县", + 150425: "克什克腾旗", + 150426: "翁牛特旗", + 150428: "喀喇沁旗", + 150429: "宁城县", + 150430: "敖汉旗", + 150502: "科尔沁区", + 150521: "科尔沁左翼中旗", + 150522: "科尔沁左翼后旗", + 150523: "开鲁县", + 150524: "库伦旗", + 150525: "奈曼旗", + 150526: "扎鲁特旗", + 150581: "霍林郭勒市", + 150602: "东胜区", + 150603: "康巴什区", + 150621: "达拉特旗", + 150622: "准格尔旗", + 150623: "鄂托克前旗", + 150624: "鄂托克旗", + 150625: "杭锦旗", + 150626: "乌审旗", + 150627: "伊金霍洛旗", + 150702: "海拉尔区", + 150703: "扎赉诺尔区", + 150721: "阿荣旗", + 150722: "莫力达瓦达斡尔族自治旗", + 150723: "鄂伦春自治旗", + 150724: "鄂温克族自治旗", + 150725: "陈巴尔虎旗", + 150726: "新巴尔虎左旗", + 150727: "新巴尔虎右旗", + 150781: "满洲里市", + 150782: "牙克石市", + 150783: "扎兰屯市", + 150784: "额尔古纳市", + 150785: "根河市", + 150802: "临河区", + 150821: "五原县", + 150822: "磴口县", + 150823: "乌拉特前旗", + 150824: "乌拉特中旗", + 150825: "乌拉特后旗", + 150826: "杭锦后旗", + 150902: "集宁区", + 150921: "卓资县", + 150922: "化德县", + 150923: "商都县", + 150924: "兴和县", + 150925: "凉城县", + 150926: "察哈尔右翼前旗", + 150927: "察哈尔右翼中旗", + 150928: "察哈尔右翼后旗", + 150929: "四子王旗", + 150981: "丰镇市", + 152201: "乌兰浩特市", + 152202: "阿尔山市", + 152221: "科尔沁右翼前旗", + 152222: "科尔沁右翼中旗", + 152223: "扎赉特旗", + 152224: "突泉县", + 152501: "二连浩特市", + 152502: "锡林浩特市", + 152522: "阿巴嘎旗", + 152523: "苏尼特左旗", + 152524: "苏尼特右旗", + 152525: "东乌珠穆沁旗", + 152526: "西乌珠穆沁旗", + 152527: "太仆寺旗", + 152528: "镶黄旗", + 152529: "正镶白旗", + 152530: "正蓝旗", + 152531: "多伦县", + 152921: "阿拉善左旗", + 152922: "阿拉善右旗", + 152923: "额济纳旗", + 210102: "和平区", + 210103: "沈河区", + 210104: "大东区", + 210105: "皇姑区", + 210106: "铁西区", + 210111: "苏家屯区", + 210112: "浑南区", + 210114: "于洪区", + 210115: "辽中区", + 210123: "康平县", + 210124: "法库县", + 210181: "新民市", + 210184: "沈北新区", + 210202: "中山区", + 210203: "西岗区", + 210204: "沙河口区", + 210211: "甘井子区", + 210212: "旅顺口区", + 210213: "金州区", + 210214: "普兰店区", + 210224: "长海县", + 210281: "瓦房店市", + 210283: "庄河市", + 210302: "铁东区", + 210303: "铁西区", + 210304: "立山区", + 210311: "千山区", + 210321: "台安县", + 210323: "岫岩满族自治县", + 210381: "海城市", + 210402: "新抚区", + 210403: "东洲区", + 210404: "望花区", + 210411: "顺城区", + 210421: "抚顺县", + 210422: "新宾满族自治县", + 210423: "清原满族自治县", + 210502: "平山区", + 210503: "溪湖区", + 210504: "明山区", + 210505: "南芬区", + 210521: "本溪满族自治县", + 210522: "桓仁满族自治县", + 210602: "元宝区", + 210603: "振兴区", + 210604: "振安区", + 210624: "宽甸满族自治县", + 210681: "东港市", + 210682: "凤城市", + 210702: "古塔区", + 210703: "凌河区", + 210711: "太和区", + 210726: "黑山县", + 210727: "义县", + 210781: "凌海市", + 210782: "北镇市", + 210802: "站前区", + 210803: "西市区", + 210804: "鲅鱼圈区", + 210811: "老边区", + 210881: "盖州市", + 210882: "大石桥市", + 210902: "海州区", + 210903: "新邱区", + 210904: "太平区", + 210905: "清河门区", + 210911: "细河区", + 210921: "阜新蒙古族自治县", + 210922: "彰武县", + 211002: "白塔区", + 211003: "文圣区", + 211004: "宏伟区", + 211005: "弓长岭区", + 211011: "太子河区", + 211021: "辽阳县", + 211081: "灯塔市", + 211102: "双台子区", + 211103: "兴隆台区", + 211104: "大洼区", + 211122: "盘山县", + 211202: "银州区", + 211204: "清河区", + 211221: "铁岭县", + 211223: "西丰县", + 211224: "昌图县", + 211281: "调兵山市", + 211282: "开原市", + 211302: "双塔区", + 211303: "龙城区", + 211321: "朝阳县", + 211322: "建平县", + 211324: "喀喇沁左翼蒙古族自治县", + 211381: "北票市", + 211382: "凌源市", + 211402: "连山区", + 211403: "龙港区", + 211404: "南票区", + 211421: "绥中县", + 211422: "建昌县", + 211481: "兴城市", + 220102: "南关区", + 220103: "宽城区", + 220104: "朝阳区", + 220105: "二道区", + 220106: "绿园区", + 220112: "双阳区", + 220122: "农安县", + 220181: "九台区", + 220182: "榆树市", + 220183: "德惠市", + 220202: "昌邑区", + 220203: "龙潭区", + 220204: "船营区", + 220211: "丰满区", + 220221: "永吉县", + 220281: "蛟河市", + 220282: "桦甸市", + 220283: "舒兰市", + 220284: "磐石市", + 220302: "铁西区", + 220303: "铁东区", + 220322: "梨树县", + 220323: "伊通满族自治县", + 220381: "公主岭市", + 220382: "双辽市", + 220402: "龙山区", + 220403: "西安区", + 220421: "东丰县", + 220422: "东辽县", + 220502: "东昌区", + 220503: "二道江区", + 220521: "通化县", + 220523: "辉南县", + 220524: "柳河县", + 220581: "梅河口市", + 220582: "集安市", + 220602: "浑江区", + 220621: "抚松县", + 220622: "靖宇县", + 220623: "长白朝鲜族自治县", + 220625: "江源区", + 220681: "临江市", + 220702: "宁江区", + 220721: "前郭尔罗斯蒙古族自治县", + 220722: "长岭县", + 220723: "乾安县", + 220724: "扶余市", + 220802: "洮北区", + 220821: "镇赉县", + 220822: "通榆县", + 220881: "洮南市", + 220882: "大安市", + 222401: "延吉市", + 222402: "图们市", + 222403: "敦化市", + 222404: "珲春市", + 222405: "龙井市", + 222406: "和龙市", + 222424: "汪清县", + 222426: "安图县", + 230102: "道里区", + 230103: "南岗区", + 230104: "道外区", + 230106: "香坊区", + 230108: "平房区", + 230109: "松北区", + 230111: "呼兰区", + 230123: "依兰县", + 230124: "方正县", + 230125: "宾县", + 230126: "巴彦县", + 230127: "木兰县", + 230128: "通河县", + 230129: "延寿县", + 230181: "阿城区", + 230182: "双城区", + 230183: "尚志市", + 230184: "五常市", + 230202: "龙沙区", + 230203: "建华区", + 230204: "铁锋区", + 230205: "昂昂溪区", + 230206: "富拉尔基区", + 230207: "碾子山区", + 230208: "梅里斯达斡尔族区", + 230221: "龙江县", + 230223: "依安县", + 230224: "泰来县", + 230225: "甘南县", + 230227: "富裕县", + 230229: "克山县", + 230230: "克东县", + 230231: "拜泉县", + 230281: "讷河市", + 230302: "鸡冠区", + 230303: "恒山区", + 230304: "滴道区", + 230305: "梨树区", + 230306: "城子河区", + 230307: "麻山区", + 230321: "鸡东县", + 230381: "虎林市", + 230382: "密山市", + 230402: "向阳区", + 230403: "工农区", + 230404: "南山区", + 230405: "兴安区", + 230406: "东山区", + 230407: "兴山区", + 230421: "萝北县", + 230422: "绥滨县", + 230502: "尖山区", + 230503: "岭东区", + 230505: "四方台区", + 230506: "宝山区", + 230521: "集贤县", + 230522: "友谊县", + 230523: "宝清县", + 230524: "饶河县", + 230602: "萨尔图区", + 230603: "龙凤区", + 230604: "让胡路区", + 230605: "红岗区", + 230606: "大同区", + 230621: "肇州县", + 230622: "肇源县", + 230623: "林甸县", + 230624: "杜尔伯特蒙古族自治县", + 230703: "南岔县", + 230704: "友好区", + 230713: "大箐山县", + 230717: "伊美区", + 230718: "乌翠区", + 230722: "嘉荫县", + 230723: "汤旺县", + 230724: "丰林县", + 230751: "金林区", + 230781: "铁力市", + 230803: "向阳区", + 230804: "前进区", + 230805: "东风区", + 230811: "郊区", + 230822: "桦南县", + 230826: "桦川县", + 230828: "汤原县", + 230881: "同江市", + 230882: "富锦市", + 230883: "抚远市", + 230902: "新兴区", + 230903: "桃山区", + 230904: "茄子河区", + 230921: "勃利县", + 231002: "东安区", + 231003: "阳明区", + 231004: "爱民区", + 231005: "西安区", + 231025: "林口县", + 231081: "绥芬河市", + 231083: "海林市", + 231084: "宁安市", + 231085: "穆棱市", + 231086: "东宁市", + 231102: "爱辉区", + 231121: "嫩江市", + 231123: "逊克县", + 231124: "孙吴县", + 231181: "北安市", + 231182: "五大连池市", + 231202: "北林区", + 231221: "望奎县", + 231222: "兰西县", + 231223: "青冈县", + 231224: "庆安县", + 231225: "明水县", + 231226: "绥棱县", + 231281: "安达市", + 231282: "肇东市", + 231283: "海伦市", + 232701: "漠河市", + 232721: "呼玛县", + 232722: "塔河县", + 232724: "加格达奇区", + 310101: "黄浦区", + 310104: "徐汇区", + 310105: "长宁区", + 310106: "静安区", + 310107: "普陀区", + 310109: "虹口区", + 310110: "杨浦区", + 310112: "闵行区", + 310113: "宝山区", + 310114: "嘉定区", + 310115: "浦东新区", + 310116: "金山区", + 310117: "松江区", + 310118: "青浦区", + 310120: "奉贤区", + 310151: "崇明区", + 320102: "玄武区", + 320104: "秦淮区", + 320105: "建邺区", + 320106: "鼓楼区", + 320111: "浦口区", + 320113: "栖霞区", + 320114: "雨花台区", + 320115: "江宁区", + 320116: "六合区", + 320124: "溧水区", + 320125: "高淳区", + 320205: "锡山区", + 320206: "惠山区", + 320211: "滨湖区", + 320213: "梁溪区", + 320214: "新吴区", + 320281: "江阴市", + 320282: "宜兴市", + 320302: "鼓楼区", + 320303: "云龙区", + 320305: "贾汪区", + 320311: "泉山区", + 320321: "丰县", + 320322: "沛县", + 320323: "铜山区", + 320324: "睢宁县", + 320381: "新沂市", + 320382: "邳州市", + 320402: "天宁区", + 320404: "钟楼区", + 320411: "新北区", + 320412: "武进区", + 320413: "金坛区", + 320481: "溧阳市", + 320505: "虎丘区", + 320506: "吴中区", + 320507: "相城区", + 320508: "姑苏区", + 320581: "常熟市", + 320582: "张家港市", + 320583: "昆山市", + 320584: "吴江区", + 320585: "太仓市", + 320602: "崇川区", + 320611: "港闸区", + 320612: "通州区", + 320623: "如东县", + 320681: "启东市", + 320682: "如皋市", + 320684: "海门区", + 320685: "海安市", + 320703: "连云区", + 320706: "海州区", + 320721: "赣榆区", + 320722: "东海县", + 320723: "灌云县", + 320724: "灌南县", + 320803: "淮安区", + 320804: "淮阴区", + 320812: "清江浦区", + 320813: "洪泽区", + 320826: "涟水县", + 320830: "盱眙县", + 320831: "金湖县", + 320902: "亭湖区", + 320903: "盐都区", + 320904: "大丰区", + 320921: "响水县", + 320922: "滨海县", + 320923: "阜宁县", + 320924: "射阳县", + 320925: "建湖县", + 320981: "东台市", + 321002: "广陵区", + 321003: "邗江区", + 321023: "宝应县", + 321081: "仪征市", + 321084: "高邮市", + 321088: "江都区", + 321102: "京口区", + 321111: "润州区", + 321112: "丹徒区", + 321181: "丹阳市", + 321182: "扬中市", + 321183: "句容市", + 321202: "海陵区", + 321203: "高港区", + 321281: "兴化市", + 321282: "靖江市", + 321283: "泰兴市", + 321284: "姜堰区", + 321302: "宿城区", + 321311: "宿豫区", + 321322: "沭阳县", + 321323: "泗阳县", + 321324: "泗洪县", + 330102: "上城区", + 330105: "拱墅区", + 330106: "西湖区", + 330108: "滨江区", + 330109: "萧山区", + 330110: "余杭区", + 330112: "临安区", + 330113: "临平区", + 330114: "钱塘区", + 330122: "桐庐县", + 330127: "淳安县", + 330182: "建德市", + 330183: "富阳区", + 330203: "海曙区", + 330205: "江北区", + 330206: "北仑区", + 330211: "镇海区", + 330212: "鄞州区", + 330213: "奉化区", + 330225: "象山县", + 330226: "宁海县", + 330281: "余姚市", + 330282: "慈溪市", + 330302: "鹿城区", + 330303: "龙湾区", + 330304: "瓯海区", + 330305: "洞头区", + 330324: "永嘉县", + 330326: "平阳县", + 330327: "苍南县", + 330328: "文成县", + 330329: "泰顺县", + 330381: "瑞安市", + 330382: "乐清市", + 330383: "龙港市", + 330402: "南湖区", + 330411: "秀洲区", + 330421: "嘉善县", + 330424: "海盐县", + 330481: "海宁市", + 330482: "平湖市", + 330483: "桐乡市", + 330502: "吴兴区", + 330503: "南浔区", + 330521: "德清县", + 330522: "长兴县", + 330523: "安吉县", + 330602: "越城区", + 330621: "柯桥区", + 330624: "新昌县", + 330681: "诸暨市", + 330682: "上虞区", + 330683: "嵊州市", + 330702: "婺城区", + 330703: "金东区", + 330723: "武义县", + 330726: "浦江县", + 330727: "磐安县", + 330781: "兰溪市", + 330782: "义乌市", + 330783: "东阳市", + 330784: "永康市", + 330802: "柯城区", + 330803: "衢江区", + 330822: "常山县", + 330824: "开化县", + 330825: "龙游县", + 330881: "江山市", + 330902: "定海区", + 330903: "普陀区", + 330921: "岱山县", + 330922: "嵊泗县", + 331002: "椒江区", + 331003: "黄岩区", + 331004: "路桥区", + 331022: "三门县", + 331023: "天台县", + 331024: "仙居县", + 331081: "温岭市", + 331082: "临海市", + 331083: "玉环市", + 331102: "莲都区", + 331121: "青田县", + 331122: "缙云县", + 331123: "遂昌县", + 331124: "松阳县", + 331125: "云和县", + 331126: "庆元县", + 331127: "景宁畲族自治县", + 331181: "龙泉市", + 340102: "瑶海区", + 340103: "庐阳区", + 340104: "蜀山区", + 340111: "包河区", + 340121: "长丰县", + 340122: "肥东县", + 340123: "肥西县", + 340202: "镜湖区", + 340203: "弋江区", + 340207: "鸠江区", + 340221: "湾沚区", + 340222: "繁昌区", + 340223: "南陵县", + 340302: "龙子湖区", + 340303: "蚌山区", + 340304: "禹会区", + 340311: "淮上区", + 340321: "怀远县", + 340322: "五河县", + 340323: "固镇县", + 340402: "大通区", + 340403: "田家庵区", + 340404: "谢家集区", + 340405: "八公山区", + 340406: "潘集区", + 340421: "凤台县", + 340503: "花山区", + 340504: "雨山区", + 340506: "博望区", + 340521: "当涂县", + 340602: "杜集区", + 340603: "相山区", + 340604: "烈山区", + 340621: "濉溪县", + 340705: "铜官区", + 340706: "义安区", + 340711: "郊区", + 340802: "迎江区", + 340803: "大观区", + 340811: "宜秀区", + 340822: "怀宁县", + 340823: "枞阳县", + 340824: "潜山市", + 340825: "太湖县", + 340826: "宿松县", + 340827: "望江县", + 340828: "岳西县", + 340881: "桐城市", + 341002: "屯溪区", + 341003: "黄山区", + 341004: "徽州区", + 341021: "歙县", + 341022: "休宁县", + 341023: "黟县", + 341024: "祁门县", + 341102: "琅琊区", + 341103: "南谯区", + 341122: "来安县", + 341124: "全椒县", + 341125: "定远县", + 341126: "凤阳县", + 341181: "天长市", + 341182: "明光市", + 341202: "颍州区", + 341203: "颍东区", + 341204: "颍泉区", + 341221: "临泉县", + 341222: "太和县", + 341225: "阜南县", + 341226: "颍上县", + 341282: "界首市", + 341302: "埇桥区", + 341321: "砀山县", + 341322: "萧县", + 341323: "灵璧县", + 341324: "泗县", + 341400: "巢湖市", + 341421: "庐江县", + 341422: "无为市", + 341423: "含山县", + 341424: "和县", + 341502: "金安区", + 341503: "裕安区", + 341504: "叶集区", + 341521: "寿县", + 341522: "霍邱县", + 341523: "舒城县", + 341524: "金寨县", + 341525: "霍山县", + 341602: "谯城区", + 341621: "涡阳县", + 341622: "蒙城县", + 341623: "利辛县", + 341702: "贵池区", + 341721: "东至县", + 341722: "石台县", + 341723: "青阳县", + 341802: "宣州区", + 341821: "郎溪县", + 341823: "泾县", + 341824: "绩溪县", + 341825: "旌德县", + 341881: "宁国市", + 341882: "广德市", + 350102: "鼓楼区", + 350103: "台江区", + 350104: "仓山区", + 350105: "马尾区", + 350111: "晋安区", + 350112: "长乐区", + 350121: "闽侯县", + 350122: "连江县", + 350123: "罗源县", + 350124: "闽清县", + 350125: "永泰县", + 350128: "平潭县", + 350181: "福清市", + 350203: "思明区", + 350205: "海沧区", + 350206: "湖里区", + 350211: "集美区", + 350212: "同安区", + 350213: "翔安区", + 350302: "城厢区", + 350303: "涵江区", + 350304: "荔城区", + 350305: "秀屿区", + 350322: "仙游县", + 350403: "三元区", + 350421: "明溪县", + 350423: "清流县", + 350424: "宁化县", + 350425: "大田县", + 350426: "尤溪县", + 350427: "沙县区", + 350428: "将乐县", + 350429: "泰宁县", + 350430: "建宁县", + 350481: "永安市", + 350502: "鲤城区", + 350503: "丰泽区", + 350504: "洛江区", + 350505: "泉港区", + 350521: "惠安县", + 350524: "安溪县", + 350525: "永春县", + 350526: "德化县", + 350527: "金门县", + 350581: "石狮市", + 350582: "晋江市", + 350583: "南安市", + 350602: "芗城区", + 350603: "龙文区", + 350622: "云霄县", + 350623: "漳浦县", + 350624: "诏安县", + 350625: "长泰区", + 350626: "东山县", + 350627: "南靖县", + 350628: "平和县", + 350629: "华安县", + 350681: "龙海区", + 350702: "延平区", + 350721: "顺昌县", + 350722: "浦城县", + 350723: "光泽县", + 350724: "松溪县", + 350725: "政和县", + 350781: "邵武市", + 350782: "武夷山市", + 350783: "建瓯市", + 350784: "建阳区", + 350802: "新罗区", + 350821: "长汀县", + 350822: "永定区", + 350823: "上杭县", + 350824: "武平县", + 350825: "连城县", + 350881: "漳平市", + 350902: "蕉城区", + 350921: "霞浦县", + 350922: "古田县", + 350923: "屏南县", + 350924: "寿宁县", + 350925: "周宁县", + 350926: "柘荣县", + 350981: "福安市", + 350982: "福鼎市", + 360102: "东湖区", + 360103: "西湖区", + 360104: "青云谱区", + 360111: "青山湖区", + 360112: "新建区", + 360113: "红谷滩区", + 360121: "南昌县", + 360123: "安义县", + 360124: "进贤县", + 360202: "昌江区", + 360203: "珠山区", + 360222: "浮梁县", + 360281: "乐平市", + 360302: "安源区", + 360313: "湘东区", + 360321: "莲花县", + 360322: "上栗县", + 360323: "芦溪县", + 360402: "濂溪区", + 360403: "浔阳区", + 360404: "柴桑区", + 360423: "武宁县", + 360424: "修水县", + 360425: "永修县", + 360426: "德安县", + 360428: "都昌县", + 360429: "湖口县", + 360430: "彭泽县", + 360481: "瑞昌市", + 360502: "渝水区", + 360521: "分宜县", + 360602: "月湖区", + 360603: "余江区", + 360681: "贵溪市", + 360702: "章贡区", + 360704: "赣县区", + 360722: "信丰县", + 360723: "大余县", + 360724: "上犹县", + 360725: "崇义县", + 360726: "安远县", + 360727: "龙南市", + 360728: "定南县", + 360729: "全南县", + 360730: "宁都县", + 360731: "于都县", + 360732: "兴国县", + 360733: "会昌县", + 360734: "寻乌县", + 360735: "石城县", + 360781: "瑞金市", + 360782: "南康区", + 360802: "吉州区", + 360803: "青原区", + 360821: "吉安县", + 360822: "吉水县", + 360823: "峡江县", + 360824: "新干县", + 360825: "永丰县", + 360826: "泰和县", + 360827: "遂川县", + 360828: "万安县", + 360829: "安福县", + 360830: "永新县", + 360881: "井冈山市", + 360902: "袁州区", + 360921: "奉新县", + 360922: "万载县", + 360923: "上高县", + 360924: "宜丰县", + 360925: "靖安县", + 360926: "铜鼓县", + 360981: "丰城市", + 360982: "樟树市", + 360983: "高安市", + 361002: "临川区", + 361003: "东乡区", + 361021: "南城县", + 361022: "黎川县", + 361023: "南丰县", + 361024: "崇仁县", + 361025: "乐安县", + 361026: "宜黄县", + 361027: "金溪县", + 361028: "资溪县", + 361030: "广昌县", + 361102: "信州区", + 361121: "广信区", + 361122: "广丰区", + 361123: "玉山县", + 361124: "铅山县", + 361125: "横峰县", + 361126: "弋阳县", + 361127: "余干县", + 361128: "鄱阳县", + 361129: "万年县", + 361130: "婺源县", + 361181: "德兴市", + 370102: "历下区", + 370103: "市中区", + 370104: "槐荫区", + 370105: "天桥区", + 370112: "历城区", + 370113: "长清区", + 370114: "章丘区", + 370115: "济阳区", + 370116: "莱芜区", + 370124: "平阴县", + 370126: "商河县", + 370202: "市南区", + 370203: "市北区", + 370211: "黄岛区", + 370212: "崂山区", + 370213: "李沧区", + 370214: "城阳区", + 370215: "即墨区", + 370281: "胶州市", + 370283: "平度市", + 370285: "莱西市", + 370302: "淄川区", + 370303: "张店区", + 370304: "博山区", + 370305: "临淄区", + 370306: "周村区", + 370321: "桓台县", + 370322: "高青县", + 370323: "沂源县", + 370402: "市中区", + 370403: "薛城区", + 370404: "峄城区", + 370405: "台儿庄区", + 370406: "山亭区", + 370481: "滕州市", + 370502: "东营区", + 370503: "河口区", + 370505: "垦利区", + 370522: "利津县", + 370523: "广饶县", + 370602: "芝罘区", + 370611: "福山区", + 370612: "牟平区", + 370613: "莱山区", + 370681: "龙口市", + 370682: "莱阳市", + 370683: "莱州市", + 370684: "蓬莱区", + 370685: "招远市", + 370686: "栖霞市", + 370687: "海阳市", + 370702: "潍城区", + 370703: "寒亭区", + 370704: "坊子区", + 370705: "奎文区", + 370724: "临朐县", + 370725: "昌乐县", + 370781: "青州市", + 370782: "诸城市", + 370783: "寿光市", + 370784: "安丘市", + 370785: "高密市", + 370786: "昌邑市", + 370811: "任城区", + 370826: "微山县", + 370827: "鱼台县", + 370828: "金乡县", + 370829: "嘉祥县", + 370830: "汶上县", + 370831: "泗水县", + 370832: "梁山县", + 370881: "曲阜市", + 370882: "兖州区", + 370883: "邹城市", + 370902: "泰山区", + 370903: "岱岳区", + 370921: "宁阳县", + 370923: "东平县", + 370982: "新泰市", + 370983: "肥城市", + 371002: "环翠区", + 371081: "文登区", + 371082: "荣成市", + 371083: "乳山市", + 371102: "东港区", + 371103: "岚山区", + 371121: "五莲县", + 371122: "莒县", + 371203: "钢城区", + 371302: "兰山区", + 371311: "罗庄区", + 371312: "河东区", + 371321: "沂南县", + 371322: "郯城县", + 371323: "沂水县", + 371324: "兰陵县", + 371325: "费县", + 371326: "平邑县", + 371327: "莒南县", + 371328: "蒙阴县", + 371329: "临沭县", + 371402: "德城区", + 371421: "陵城区", + 371422: "宁津县", + 371423: "庆云县", + 371424: "临邑县", + 371425: "齐河县", + 371426: "平原县", + 371427: "夏津县", + 371428: "武城县", + 371481: "乐陵市", + 371482: "禹城市", + 371502: "东昌府区", + 371521: "阳谷县", + 371522: "莘县", + 371523: "茌平区", + 371524: "东阿县", + 371525: "冠县", + 371526: "高唐县", + 371581: "临清市", + 371602: "滨城区", + 371621: "惠民县", + 371622: "阳信县", + 371623: "无棣县", + 371624: "沾化区", + 371625: "博兴县", + 371681: "邹平市", + 371702: "牡丹区", + 371703: "定陶区", + 371721: "曹县", + 371722: "单县", + 371723: "成武县", + 371724: "巨野县", + 371725: "郓城县", + 371726: "鄄城县", + 371728: "东明县", + 410102: "中原区", + 410103: "二七区", + 410104: "管城回族区", + 410105: "金水区", + 410106: "上街区", + 410108: "惠济区", + 410122: "中牟县", + 410181: "巩义市", + 410182: "荥阳市", + 410183: "新密市", + 410184: "新郑市", + 410185: "登封市", + 410202: "龙亭区", + 410203: "顺河回族区", + 410204: "鼓楼区", + 410205: "禹王台区", + 410221: "杞县", + 410222: "通许县", + 410223: "尉氏县", + 410224: "祥符区", + 410225: "兰考县", + 410302: "老城区", + 410303: "西工区", + 410304: "瀍河回族区", + 410305: "涧西区", + 410307: "洛龙区", + 410322: "孟津区", + 410323: "新安县", + 410324: "栾川县", + 410325: "嵩县", + 410326: "汝阳县", + 410327: "宜阳县", + 410328: "洛宁县", + 410329: "伊川县", + 410381: "偃师区", + 410402: "新华区", + 410403: "卫东区", + 410404: "石龙区", + 410411: "湛河区", + 410421: "宝丰县", + 410422: "叶县", + 410423: "鲁山县", + 410425: "郏县", + 410481: "舞钢市", + 410482: "汝州市", + 410502: "文峰区", + 410503: "北关区", + 410505: "殷都区", + 410506: "龙安区", + 410522: "安阳县", + 410523: "汤阴县", + 410526: "滑县", + 410527: "内黄县", + 410581: "林州市", + 410602: "鹤山区", + 410603: "山城区", + 410611: "淇滨区", + 410621: "浚县", + 410622: "淇县", + 410702: "红旗区", + 410703: "卫滨区", + 410704: "凤泉区", + 410711: "牧野区", + 410721: "新乡县", + 410724: "获嘉县", + 410725: "原阳县", + 410726: "延津县", + 410727: "封丘县", + 410728: "长垣市", + 410781: "卫辉市", + 410782: "辉县市", + 410802: "解放区", + 410803: "中站区", + 410804: "马村区", + 410811: "山阳区", + 410821: "修武县", + 410822: "博爱县", + 410823: "武陟县", + 410825: "温县", + 410882: "沁阳市", + 410883: "孟州市", + 410902: "华龙区", + 410922: "清丰县", + 410923: "南乐县", + 410926: "范县", + 410927: "台前县", + 410928: "濮阳县", + 411002: "魏都区", + 411003: "建安区", + 411024: "鄢陵县", + 411025: "襄城县", + 411081: "禹州市", + 411082: "长葛市", + 411102: "源汇区", + 411103: "郾城区", + 411104: "召陵区", + 411121: "舞阳县", + 411122: "临颍县", + 411202: "湖滨区", + 411221: "渑池县", + 411222: "陕州区", + 411224: "卢氏县", + 411281: "义马市", + 411282: "灵宝市", + 411302: "宛城区", + 411303: "卧龙区", + 411321: "南召县", + 411322: "方城县", + 411323: "西峡县", + 411324: "镇平县", + 411325: "内乡县", + 411326: "淅川县", + 411327: "社旗县", + 411328: "唐河县", + 411329: "新野县", + 411330: "桐柏县", + 411381: "邓州市", + 411402: "梁园区", + 411403: "睢阳区", + 411421: "民权县", + 411422: "睢县", + 411423: "宁陵县", + 411424: "柘城县", + 411425: "虞城县", + 411426: "夏邑县", + 411481: "永城市", + 411502: "浉河区", + 411503: "平桥区", + 411521: "罗山县", + 411522: "光山县", + 411523: "新县", + 411524: "商城县", + 411525: "固始县", + 411526: "潢川县", + 411527: "淮滨县", + 411528: "息县", + 411602: "川汇区", + 411621: "扶沟县", + 411622: "西华县", + 411623: "商水县", + 411624: "沈丘县", + 411625: "郸城县", + 411626: "淮阳区", + 411627: "太康县", + 411628: "鹿邑县", + 411681: "项城市", + 411702: "驿城区", + 411721: "西平县", + 411722: "上蔡县", + 411723: "平舆县", + 411724: "正阳县", + 411725: "确山县", + 411726: "泌阳县", + 411727: "汝南县", + 411728: "遂平县", + 411729: "新蔡县", + 419001: "济源市", + 420102: "江岸区", + 420103: "江汉区", + 420104: "硚口区", + 420105: "汉阳区", + 420106: "武昌区", + 420107: "青山区", + 420111: "洪山区", + 420112: "东西湖区", + 420113: "汉南区", + 420114: "蔡甸区", + 420115: "江夏区", + 420116: "黄陂区", + 420117: "新洲区", + 420202: "黄石港区", + 420203: "西塞山区", + 420204: "下陆区", + 420205: "铁山区", + 420222: "阳新县", + 420281: "大冶市", + 420302: "茅箭区", + 420303: "张湾区", + 420321: "郧阳区", + 420322: "郧西县", + 420323: "竹山县", + 420324: "竹溪县", + 420325: "房县", + 420381: "丹江口市", + 420502: "西陵区", + 420503: "伍家岗区", + 420504: "点军区", + 420505: "猇亭区", + 420506: "夷陵区", + 420525: "远安县", + 420526: "兴山县", + 420527: "秭归县", + 420528: "长阳土家族自治县", + 420529: "五峰土家族自治县", + 420581: "宜都市", + 420582: "当阳市", + 420583: "枝江市", + 420602: "襄城区", + 420606: "樊城区", + 420607: "襄州区", + 420624: "南漳县", + 420625: "谷城县", + 420626: "保康县", + 420682: "老河口市", + 420683: "枣阳市", + 420684: "宜城市", + 420702: "梁子湖区", + 420703: "华容区", + 420704: "鄂城区", + 420802: "东宝区", + 420804: "掇刀区", + 420822: "沙洋县", + 420881: "钟祥市", + 420882: "京山市", + 420902: "孝南区", + 420921: "孝昌县", + 420922: "大悟县", + 420923: "云梦县", + 420981: "应城市", + 420982: "安陆市", + 420984: "汉川市", + 421002: "沙市区", + 421003: "荆州区", + 421022: "公安县", + 421023: "监利市", + 421024: "江陵县", + 421081: "石首市", + 421083: "洪湖市", + 421087: "松滋市", + 421102: "黄州区", + 421121: "团风县", + 421122: "红安县", + 421123: "罗田县", + 421124: "英山县", + 421125: "浠水县", + 421126: "蕲春县", + 421127: "黄梅县", + 421181: "麻城市", + 421182: "武穴市", + 421202: "咸安区", + 421221: "嘉鱼县", + 421222: "通城县", + 421223: "崇阳县", + 421224: "通山县", + 421281: "赤壁市", + 421302: "曾都区", + 421321: "随县", + 421381: "广水市", + 422801: "恩施市", + 422802: "利川市", + 422822: "建始县", + 422823: "巴东县", + 422825: "宣恩县", + 422826: "咸丰县", + 422827: "来凤县", + 422828: "鹤峰县", + 429004: "仙桃市", + 429005: "潜江市", + 429006: "天门市", + 429021: "神农架林区", + 430102: "芙蓉区", + 430103: "天心区", + 430104: "岳麓区", + 430105: "开福区", + 430111: "雨花区", + 430121: "长沙县", + 430122: "望城区", + 430181: "浏阳市", + 430182: "宁乡市", + 430202: "荷塘区", + 430203: "芦淞区", + 430204: "石峰区", + 430211: "天元区", + 430212: "渌口区", + 430223: "攸县", + 430224: "茶陵县", + 430225: "炎陵县", + 430281: "醴陵市", + 430302: "雨湖区", + 430304: "岳塘区", + 430321: "湘潭县", + 430381: "湘乡市", + 430382: "韶山市", + 430405: "珠晖区", + 430406: "雁峰区", + 430407: "石鼓区", + 430408: "蒸湘区", + 430412: "南岳区", + 430421: "衡阳县", + 430422: "衡南县", + 430423: "衡山县", + 430424: "衡东县", + 430426: "祁东县", + 430481: "耒阳市", + 430482: "常宁市", + 430502: "双清区", + 430503: "大祥区", + 430511: "北塔区", + 430521: "祁阳市", + 430522: "新邵县", + 430523: "邵阳县", + 430524: "隆回县", + 430525: "洞口县", + 430527: "绥宁县", + 430528: "新宁县", + 430529: "城步苗族自治县", + 430581: "武冈市", + 430602: "岳阳楼区", + 430603: "云溪区", + 430611: "君山区", + 430621: "岳阳县", + 430623: "华容县", + 430624: "湘阴县", + 430626: "平江县", + 430681: "汨罗市", + 430682: "临湘市", + 430702: "武陵区", + 430703: "鼎城区", + 430721: "安乡县", + 430722: "汉寿县", + 430723: "澧县", + 430724: "临澧县", + 430725: "桃源县", + 430726: "石门县", + 430781: "津市市", + 430802: "永定区", + 430811: "武陵源区", + 430821: "慈利县", + 430822: "桑植县", + 430902: "资阳区", + 430903: "赫山区", + 430921: "南县", + 430922: "桃江县", + 430923: "安化县", + 430981: "沅江市", + 431002: "北湖区", + 431003: "苏仙区", + 431021: "桂阳县", + 431022: "宜章县", + 431023: "永兴县", + 431024: "嘉禾县", + 431025: "临武县", + 431026: "汝城县", + 431027: "桂东县", + 431028: "安仁县", + 431081: "资兴市", + 431102: "零陵区", + 431103: "冷水滩区", + 431121: "邵东市", + 431122: "东安县", + 431123: "双牌县", + 431124: "道县", + 431125: "江永县", + 431126: "宁远县", + 431127: "蓝山县", + 431128: "新田县", + 431129: "江华瑶族自治县", + 431202: "鹤城区", + 431221: "中方县", + 431222: "沅陵县", + 431223: "辰溪县", + 431224: "溆浦县", + 431225: "会同县", + 431226: "麻阳苗族自治县", + 431227: "新晃侗族自治县", + 431228: "芷江侗族自治县", + 431229: "靖州苗族侗族自治县", + 431230: "通道侗族自治县", + 431281: "洪江市", + 431302: "娄星区", + 431321: "双峰县", + 431322: "新化县", + 431381: "冷水江市", + 431382: "涟源市", + 433101: "吉首市", + 433122: "泸溪县", + 433123: "凤凰县", + 433124: "花垣县", + 433125: "保靖县", + 433126: "古丈县", + 433127: "永顺县", + 433130: "龙山县", + 440103: "荔湾区", + 440104: "越秀区", + 440105: "海珠区", + 440106: "天河区", + 440111: "白云区", + 440112: "黄埔区", + 440113: "番禺区", + 440114: "花都区", + 440115: "南沙区", + 440183: "增城区", + 440184: "从化区", + 440203: "武江区", + 440204: "浈江区", + 440205: "曲江区", + 440222: "始兴县", + 440224: "仁化县", + 440229: "翁源县", + 440232: "乳源瑶族自治县", + 440233: "新丰县", + 440281: "乐昌市", + 440282: "南雄市", + 440303: "罗湖区", + 440304: "福田区", + 440305: "南山区", + 440306: "宝安区", + 440307: "龙岗区", + 440308: "盐田区", + 440309: "龙华区", + 440310: "坪山区", + 440311: "光明区", + 440402: "香洲区", + 440403: "斗门区", + 440404: "金湾区", + 440507: "龙湖区", + 440511: "金平区", + 440512: "濠江区", + 440513: "潮阳区", + 440514: "潮南区", + 440515: "澄海区", + 440523: "南澳县", + 440604: "禅城区", + 440605: "南海区", + 440606: "顺德区", + 440607: "三水区", + 440608: "高明区", + 440703: "蓬江区", + 440704: "江海区", + 440705: "新会区", + 440781: "台山市", + 440783: "开平市", + 440784: "鹤山市", + 440785: "恩平市", + 440802: "赤坎区", + 440803: "霞山区", + 440804: "坡头区", + 440811: "麻章区", + 440823: "遂溪县", + 440825: "徐闻县", + 440881: "廉江市", + 440882: "雷州市", + 440883: "吴川市", + 440902: "茂南区", + 440903: "电白区", + 440981: "高州市", + 440982: "化州市", + 440983: "信宜市", + 441202: "端州区", + 441203: "鼎湖区", + 441204: "高要区", + 441223: "广宁县", + 441224: "怀集县", + 441225: "封开县", + 441226: "德庆县", + 441284: "四会市", + 441302: "惠城区", + 441303: "惠阳区", + 441322: "博罗县", + 441323: "惠东县", + 441324: "龙门县", + 441402: "梅江区", + 441421: "梅县区", + 441422: "大埔县", + 441423: "丰顺县", + 441424: "五华县", + 441426: "平远县", + 441427: "蕉岭县", + 441481: "兴宁市", + 441502: "城区", + 441521: "海丰县", + 441523: "陆河县", + 441581: "陆丰市", + 441602: "源城区", + 441621: "紫金县", + 441622: "龙川县", + 441623: "连平县", + 441624: "和平县", + 441625: "东源县", + 441702: "江城区", + 441721: "阳西县", + 441723: "阳东区", + 441781: "阳春市", + 441802: "清城区", + 441821: "佛冈县", + 441823: "阳山县", + 441825: "连山壮族瑶族自治县", + 441826: "连南瑶族自治县", + 441827: "清新区", + 441881: "英德市", + 441882: "连州市", + 441902: "虎门镇", + 441903: "长安镇", + 441904: "厚街镇", + 441905: "莞城街道", + 441906: "南城街道", + 441907: "东城街道", + 441908: "万江街道", + 441909: "石龙镇", + 441910: "石排镇", + 441911: "茶山镇", + 441912: "企石镇", + 441913: "桥头镇", + 441914: "东坑镇", + 441915: "横沥镇", + 441916: "常平镇", + 441917: "沙田镇", + 441918: "寮步镇", + 441919: "大岭山镇", + 441920: "大朗镇", + 441921: "黄江镇", + 441922: "樟木头镇", + 441923: "谢岗镇", + 441924: "塘厦镇", + 441925: "清溪镇", + 441926: "凤岗镇", + 441927: "麻涌镇", + 441928: "中堂镇", + 441929: "高埗镇", + 441930: "石碣镇", + 441931: "望牛墩镇", + 441933: "道滘镇", + 442003: "东区街道", + 442004: "西区街道", + 442005: "南区街道", + 442006: "五桂山街道", + 442008: "黄圃镇", + 442009: "南头镇", + 442010: "东凤镇", + 442011: "阜沙镇", + 442012: "小榄镇", + 442013: "东升镇", + 442014: "古镇镇", + 442015: "横栏镇", + 442016: "三角镇", + 442017: "民众街道", + 442018: "南朗街道", + 442019: "港口镇", + 442020: "大涌镇", + 442021: "沙溪镇", + 442022: "三乡镇", + 442023: "板芙镇", + 442024: "神湾镇", + 442025: "坦洲镇", + 445102: "湘桥区", + 445121: "潮安区", + 445122: "饶平县", + 445202: "榕城区", + 445221: "揭东区", + 445222: "揭西县", + 445224: "惠来县", + 445281: "普宁市", + 445302: "云城区", + 445321: "新兴县", + 445322: "郁南县", + 445323: "云安区", + 445381: "罗定市", + 450102: "兴宁区", + 450103: "青秀区", + 450105: "江南区", + 450107: "西乡塘区", + 450108: "良庆区", + 450109: "邕宁区", + 450122: "武鸣区", + 450123: "隆安县", + 450124: "马山县", + 450125: "上林县", + 450126: "宾阳县", + 450127: "横州市", + 450202: "城中区", + 450203: "鱼峰区", + 450204: "柳南区", + 450205: "柳北区", + 450206: "柳江区", + 450222: "柳城县", + 450223: "鹿寨县", + 450224: "融安县", + 450225: "融水苗族自治县", + 450226: "三江侗族自治县", + 450302: "秀峰区", + 450303: "叠彩区", + 450304: "象山区", + 450305: "七星区", + 450311: "雁山区", + 450321: "阳朔县", + 450322: "临桂区", + 450323: "灵川县", + 450324: "全州县", + 450325: "兴安县", + 450326: "永福县", + 450327: "灌阳县", + 450328: "龙胜各族自治县", + 450329: "资源县", + 450330: "平乐县", + 450332: "恭城瑶族自治县", + 450381: "荔浦市", + 450403: "万秀区", + 450405: "长洲区", + 450406: "龙圩区", + 450421: "苍梧县", + 450422: "藤县", + 450423: "蒙山县", + 450481: "岑溪市", + 450502: "海城区", + 450503: "银海区", + 450512: "铁山港区", + 450521: "合浦县", + 450602: "港口区", + 450603: "防城区", + 450621: "上思县", + 450681: "东兴市", + 450702: "钦南区", + 450703: "钦北区", + 450721: "灵山县", + 450722: "浦北县", + 450802: "港北区", + 450803: "港南区", + 450804: "覃塘区", + 450821: "平南县", + 450881: "桂平市", + 450902: "玉州区", + 450903: "福绵区", + 450921: "容县", + 450922: "陆川县", + 450923: "博白县", + 450924: "兴业县", + 450981: "北流市", + 451002: "右江区", + 451021: "田阳区", + 451022: "田东县", + 451023: "平果市", + 451024: "德保县", + 451026: "那坡县", + 451027: "凌云县", + 451028: "乐业县", + 451029: "田林县", + 451030: "西林县", + 451031: "隆林各族自治县", + 451081: "靖西市", + 451102: "八步区", + 451103: "平桂区", + 451121: "昭平县", + 451122: "钟山县", + 451123: "富川瑶族自治县", + 451202: "金城江区", + 451203: "宜州区", + 451221: "南丹县", + 451222: "天峨县", + 451223: "凤山县", + 451224: "东兰县", + 451225: "罗城仫佬族自治县", + 451226: "环江毛南族自治县", + 451227: "巴马瑶族自治县", + 451228: "都安瑶族自治县", + 451229: "大化瑶族自治县", + 451302: "兴宾区", + 451321: "忻城县", + 451322: "象州县", + 451323: "武宣县", + 451324: "金秀瑶族自治县", + 451381: "合山市", + 451402: "江州区", + 451421: "扶绥县", + 451422: "宁明县", + 451423: "龙州县", + 451424: "大新县", + 451425: "天等县", + 451481: "凭祥市", + 460105: "秀英区", + 460106: "龙华区", + 460107: "琼山区", + 460108: "美兰区", + 460202: "海棠区", + 460203: "吉阳区", + 460204: "天涯区", + 460205: "崖州区", + 460301: "西沙区", + 469001: "五指山市", + 469002: "琼海市", + 469005: "文昌市", + 469006: "万宁市", + 469007: "东方市", + 469022: "屯昌县", + 469026: "昌江黎族自治县", + 469027: "乐东黎族自治县", + 500101: "万州区", + 500102: "涪陵区", + 500103: "渝中区", + 500104: "大渡口区", + 500105: "江北区", + 500106: "沙坪坝区", + 500107: "九龙坡区", + 500108: "南岸区", + 500109: "北碚区", + 500112: "渝北区", + 500113: "巴南区", + 500114: "黔江区", + 500115: "长寿区", + 500152: "潼南区", + 500153: "荣昌区", + 500154: "开州区", + 500155: "梁平区", + 500156: "武隆区", + 500222: "綦江区", + 500224: "铜梁区", + 500225: "大足区", + 500227: "璧山区", + 500229: "城口县", + 500230: "丰都县", + 500231: "垫江县", + 500233: "忠县", + 500235: "云阳县", + 500236: "奉节县", + 500237: "巫山县", + 500238: "巫溪县", + 500240: "石柱土家族自治县", + 500241: "秀山土家族苗族自治县", + 500242: "酉阳土家族苗族自治县", + 500243: "彭水苗族土家族自治县", + 500381: "江津区", + 500382: "合川区", + 500383: "永川区", + 500384: "南川区", + 510104: "锦江区", + 510105: "青羊区", + 510106: "金牛区", + 510107: "武侯区", + 510108: "成华区", + 510112: "龙泉驿区", + 510113: "青白江区", + 510114: "新都区", + 510115: "温江区", + 510116: "双流区", + 510117: "郫都区", + 510121: "金堂县", + 510129: "大邑县", + 510131: "蒲江县", + 510132: "新津区", + 510181: "都江堰市", + 510182: "彭州市", + 510183: "邛崃市", + 510184: "崇州市", + 510302: "自流井区", + 510303: "贡井区", + 510304: "大安区", + 510311: "沿滩区", + 510321: "荣县", + 510322: "富顺县", + 510402: "东区", + 510403: "西区", + 510411: "仁和区", + 510421: "米易县", + 510422: "盐边县", + 510502: "江阳区", + 510503: "纳溪区", + 510504: "龙马潭区", + 510521: "泸县", + 510522: "合江县", + 510524: "叙永县", + 510525: "古蔺县", + 510603: "旌阳区", + 510604: "罗江区", + 510623: "中江县", + 510681: "广汉市", + 510682: "什邡市", + 510683: "绵竹市", + 510703: "涪城区", + 510704: "游仙区", + 510705: "安州区", + 510722: "三台县", + 510723: "盐亭县", + 510725: "梓潼县", + 510726: "北川羌族自治县", + 510727: "平武县", + 510781: "江油市", + 510802: "利州区", + 510811: "昭化区", + 510812: "朝天区", + 510821: "旺苍县", + 510822: "青川县", + 510823: "剑阁县", + 510824: "苍溪县", + 510903: "船山区", + 510904: "安居区", + 510921: "蓬溪县", + 510922: "射洪市", + 510923: "大英县", + 511002: "市中区", + 511011: "东兴区", + 511024: "威远县", + 511025: "资中县", + 511083: "隆昌市", + 511102: "市中区", + 511111: "沙湾区", + 511112: "五通桥区", + 511113: "金口河区", + 511123: "犍为县", + 511124: "井研县", + 511126: "夹江县", + 511129: "沐川县", + 511132: "峨边彝族自治县", + 511133: "马边彝族自治县", + 511181: "峨眉山市", + 511302: "顺庆区", + 511303: "高坪区", + 511304: "嘉陵区", + 511321: "南部县", + 511322: "营山县", + 511323: "蓬安县", + 511324: "仪陇县", + 511325: "西充县", + 511381: "阆中市", + 511402: "东坡区", + 511421: "仁寿县", + 511422: "彭山区", + 511423: "洪雅县", + 511424: "丹棱县", + 511425: "青神县", + 511502: "翠屏区", + 511504: "叙州区", + 511522: "南溪区", + 511523: "江安县", + 511524: "长宁县", + 511525: "高县", + 511526: "珙县", + 511527: "筠连县", + 511528: "兴文县", + 511529: "屏山县", + 511602: "广安区", + 511603: "前锋区", + 511621: "岳池县", + 511622: "武胜县", + 511623: "邻水县", + 511681: "华蓥市", + 511702: "通川区", + 511721: "达川区", + 511722: "宣汉县", + 511723: "开江县", + 511724: "大竹县", + 511725: "渠县", + 511781: "万源市", + 511802: "雨城区", + 511821: "名山区", + 511822: "荥经县", + 511823: "汉源县", + 511824: "石棉县", + 511825: "天全县", + 511826: "芦山县", + 511827: "宝兴县", + 511902: "巴州区", + 511903: "恩阳区", + 511921: "通江县", + 511922: "南江县", + 511923: "平昌县", + 512002: "雁江区", + 512021: "安岳县", + 512022: "乐至县", + 512081: "简阳市", + 513201: "马尔康市", + 513221: "汶川县", + 513222: "理县", + 513223: "茂县", + 513224: "松潘县", + 513225: "九寨沟县", + 513226: "金川县", + 513227: "小金县", + 513228: "黑水县", + 513230: "壤塘县", + 513231: "阿坝县", + 513232: "若尔盖县", + 513233: "红原县", + 513321: "康定市", + 513322: "泸定县", + 513323: "丹巴县", + 513324: "九龙县", + 513325: "雅江县", + 513326: "道孚县", + 513327: "炉霍县", + 513328: "甘孜县", + 513329: "新龙县", + 513330: "德格县", + 513331: "白玉县", + 513332: "石渠县", + 513333: "色达县", + 513334: "理塘县", + 513335: "巴塘县", + 513336: "乡城县", + 513337: "稻城县", + 513338: "得荣县", + 513401: "西昌市", + 513422: "木里藏族自治县", + 513423: "盐源县", + 513424: "德昌县", + 513425: "会理市", + 513426: "会东县", + 513427: "宁南县", + 513428: "普格县", + 513429: "布拖县", + 513430: "金阳县", + 513431: "昭觉县", + 513432: "喜德县", + 513433: "冕宁县", + 513434: "越西县", + 513435: "甘洛县", + 513436: "美姑县", + 513437: "雷波县", + 520102: "南明区", + 520103: "云岩区", + 520111: "花溪区", + 520112: "乌当区", + 520113: "白云区", + 520121: "开阳县", + 520122: "息烽县", + 520123: "修文县", + 520151: "观山湖区", + 520181: "清镇市", + 520201: "钟山区", + 520203: "六枝特区", + 520221: "水城区", + 520281: "盘州市", + 520302: "红花岗区", + 520303: "汇川区", + 520304: "播州区", + 520322: "桐梓县", + 520323: "绥阳县", + 520324: "正安县", + 520325: "道真仡佬族苗族自治县", + 520326: "务川仡佬族苗族自治县", + 520327: "凤冈县", + 520328: "湄潭县", + 520329: "余庆县", + 520330: "习水县", + 520381: "赤水市", + 520382: "仁怀市", + 520402: "西秀区", + 520421: "平坝区", + 520422: "普定县", + 520423: "镇宁布依族苗族自治县", + 520424: "关岭布依族苗族自治县", + 520425: "紫云苗族布依族自治县", + 522201: "碧江区", + 522222: "江口县", + 522223: "玉屏侗族自治县", + 522224: "石阡县", + 522225: "思南县", + 522226: "印江土家族苗族自治县", + 522227: "德江县", + 522228: "沿河土家族自治县", + 522229: "松桃苗族自治县", + 522230: "万山区", + 522301: "兴义市", + 522302: "兴仁市", + 522323: "普安县", + 522324: "晴隆县", + 522325: "贞丰县", + 522326: "望谟县", + 522327: "册亨县", + 522328: "安龙县", + 522401: "七星关区", + 522422: "大方县", + 522423: "黔西市", + 522424: "金沙县", + 522425: "织金县", + 522426: "纳雍县", + 522427: "威宁彝族回族苗族自治县", + 522428: "赫章县", + 522601: "凯里市", + 522622: "黄平县", + 522623: "施秉县", + 522624: "三穗县", + 522625: "镇远县", + 522626: "岑巩县", + 522627: "天柱县", + 522628: "锦屏县", + 522629: "剑河县", + 522630: "台江县", + 522631: "黎平县", + 522632: "榕江县", + 522633: "从江县", + 522634: "雷山县", + 522635: "麻江县", + 522636: "丹寨县", + 522701: "都匀市", + 522702: "福泉市", + 522722: "荔波县", + 522723: "贵定县", + 522725: "瓮安县", + 522726: "独山县", + 522727: "平塘县", + 522728: "罗甸县", + 522729: "长顺县", + 522730: "龙里县", + 522731: "惠水县", + 522732: "三都水族自治县", + 530102: "五华区", + 530103: "盘龙区", + 530111: "官渡区", + 530112: "西山区", + 530113: "东川区", + 530115: "晋宁区", + 530121: "呈贡区", + 530124: "富民县", + 530125: "宜良县", + 530126: "石林彝族自治县", + 530127: "嵩明县", + 530128: "禄劝彝族苗族自治县", + 530129: "寻甸回族彝族自治县", + 530181: "安宁市", + 530302: "麒麟区", + 530303: "沾益区", + 530304: "马龙区", + 530322: "陆良县", + 530323: "师宗县", + 530324: "罗平县", + 530325: "富源县", + 530326: "会泽县", + 530381: "宣威市", + 530402: "红塔区", + 530403: "江川区", + 530423: "通海县", + 530424: "华宁县", + 530425: "易门县", + 530426: "峨山彝族自治县", + 530427: "新平彝族傣族自治县", + 530428: "元江哈尼族彝族傣族自治县", + 530481: "澄江市", + 530502: "隆阳区", + 530521: "施甸县", + 530523: "龙陵县", + 530524: "昌宁县", + 530581: "腾冲市", + 530602: "昭阳区", + 530621: "鲁甸县", + 530622: "巧家县", + 530623: "盐津县", + 530624: "大关县", + 530625: "永善县", + 530626: "绥江县", + 530627: "镇雄县", + 530628: "彝良县", + 530629: "威信县", + 530681: "水富市", + 530702: "古城区", + 530721: "玉龙纳西族自治县", + 530722: "永胜县", + 530723: "华坪县", + 530724: "宁蒗彝族自治县", + 530802: "思茅区", + 530821: "宁洱哈尼族彝族自治县", + 530822: "墨江哈尼族自治县", + 530823: "景东彝族自治县", + 530824: "景谷傣族彝族自治县", + 530825: "镇沅彝族哈尼族拉祜族自治县", + 530826: "江城哈尼族彝族自治县", + 530827: "孟连傣族拉祜族佤族自治县", + 530828: "澜沧拉祜族自治县", + 530829: "西盟佤族自治县", + 530902: "临翔区", + 530921: "凤庆县", + 530922: "云县", + 530923: "永德县", + 530924: "镇康县", + 530925: "双江拉祜族佤族布朗族傣族自治县", + 530926: "耿马傣族佤族自治县", + 530927: "沧源佤族自治县", + 532301: "楚雄市", + 532322: "双柏县", + 532323: "牟定县", + 532324: "南华县", + 532325: "姚安县", + 532326: "大姚县", + 532327: "永仁县", + 532328: "元谋县", + 532329: "武定县", + 532331: "禄丰市", + 532501: "个旧市", + 532502: "开远市", + 532522: "蒙自市", + 532523: "屏边苗族自治县", + 532524: "建水县", + 532525: "石屏县", + 532526: "弥勒市", + 532527: "泸西县", + 532528: "元阳县", + 532529: "红河县", + 532530: "金平苗族瑶族傣族自治县", + 532531: "绿春县", + 532532: "河口瑶族自治县", + 532621: "文山市", + 532622: "砚山县", + 532623: "西畴县", + 532624: "麻栗坡县", + 532625: "马关县", + 532626: "丘北县", + 532627: "广南县", + 532628: "富宁县", + 532801: "景洪市", + 532822: "勐海县", + 532823: "勐腊县", + 532901: "大理市", + 532922: "漾濞彝族自治县", + 532923: "祥云县", + 532924: "宾川县", + 532925: "弥渡县", + 532926: "南涧彝族自治县", + 532927: "巍山彝族回族自治县", + 532928: "永平县", + 532929: "云龙县", + 532930: "洱源县", + 532931: "剑川县", + 532932: "鹤庆县", + 533102: "瑞丽市", + 533103: "芒市", + 533122: "梁河县", + 533123: "盈江县", + 533124: "陇川县", + 533301: "泸水市", + 533323: "福贡县", + 533324: "贡山独龙族怒族自治县", + 533325: "兰坪白族普米族自治县", + 533421: "香格里拉市", + 533422: "德钦县", + 533423: "维西傈僳族自治县", + 540102: "城关区", + 540103: "堆龙德庆区", + 540104: "达孜区", + 540121: "林周县", + 540122: "当雄县", + 540123: "尼木县", + 540124: "曲水县", + 540127: "墨竹工卡县", + 540502: "乃东区", + 540602: "色尼区", + 542121: "卡若区", + 542122: "江达县", + 542123: "贡觉县", + 542124: "类乌齐县", + 542125: "丁青县", + 542126: "察雅县", + 542127: "八宿县", + 542128: "左贡县", + 542129: "芒康县", + 542132: "洛隆县", + 542133: "边坝县", + 542222: "扎囊县", + 542223: "贡嘎县", + 542224: "桑日县", + 542225: "琼结县", + 542226: "曲松县", + 542227: "措美县", + 542228: "洛扎县", + 542229: "加查县", + 542231: "隆子县", + 542232: "错那县", + 542233: "浪卡子县", + 542301: "桑珠孜区", + 542322: "南木林县", + 542323: "江孜县", + 542324: "定日县", + 542325: "萨迦县", + 542326: "拉孜县", + 542327: "昂仁县", + 542328: "谢通门县", + 542329: "白朗县", + 542330: "仁布县", + 542331: "康马县", + 542332: "定结县", + 542333: "仲巴县", + 542334: "亚东县", + 542335: "吉隆县", + 542336: "聂拉木县", + 542337: "萨嘎县", + 542338: "岗巴县", + 542422: "嘉黎县", + 542423: "比如县", + 542424: "聂荣县", + 542425: "安多县", + 542426: "申扎县", + 542427: "索县", + 542428: "班戈县", + 542429: "巴青县", + 542430: "尼玛县", + 542432: "双湖县", + 542521: "普兰县", + 542522: "札达县", + 542523: "噶尔县", + 542524: "日土县", + 542525: "革吉县", + 542526: "改则县", + 542527: "措勤县", + 542621: "巴宜区", + 542622: "工布江达县", + 542623: "米林县", + 542624: "墨脱县", + 542625: "波密县", + 542626: "察隅县", + 542627: "朗县", + 610102: "新城区", + 610103: "碑林区", + 610104: "莲湖区", + 610111: "灞桥区", + 610112: "未央区", + 610113: "雁塔区", + 610114: "阎良区", + 610115: "临潼区", + 610116: "长安区", + 610118: "鄠邑区", + 610122: "蓝田县", + 610124: "周至县", + 610126: "高陵区", + 610202: "王益区", + 610203: "印台区", + 610204: "耀州区", + 610222: "宜君县", + 610302: "渭滨区", + 610303: "金台区", + 610304: "陈仓区", + 610322: "凤翔区", + 610323: "岐山县", + 610324: "扶风县", + 610326: "眉县", + 610327: "陇县", + 610328: "千阳县", + 610329: "麟游县", + 610330: "凤县", + 610331: "太白县", + 610402: "秦都区", + 610403: "杨陵区", + 610404: "渭城区", + 610422: "三原县", + 610423: "泾阳县", + 610424: "乾县", + 610425: "礼泉县", + 610426: "永寿县", + 610428: "长武县", + 610429: "旬邑县", + 610430: "淳化县", + 610431: "武功县", + 610481: "兴平市", + 610482: "彬州市", + 610502: "临渭区", + 610503: "华州区", + 610522: "潼关县", + 610523: "大荔县", + 610524: "合阳县", + 610525: "澄城县", + 610526: "蒲城县", + 610527: "白水县", + 610528: "富平县", + 610581: "韩城市", + 610582: "华阴市", + 610602: "宝塔区", + 610603: "安塞区", + 610621: "延长县", + 610622: "延川县", + 610623: "子长市", + 610625: "志丹县", + 610626: "吴起县", + 610627: "甘泉县", + 610628: "富县", + 610629: "洛川县", + 610630: "宜川县", + 610631: "黄龙县", + 610632: "黄陵县", + 610702: "汉台区", + 610703: "南郑区", + 610722: "城固县", + 610723: "洋县", + 610724: "西乡县", + 610725: "勉县", + 610726: "宁强县", + 610727: "略阳县", + 610728: "镇巴县", + 610729: "留坝县", + 610730: "佛坪县", + 610802: "榆阳区", + 610803: "横山区", + 610822: "府谷县", + 610824: "靖边县", + 610825: "定边县", + 610826: "绥德县", + 610827: "米脂县", + 610828: "佳县", + 610829: "吴堡县", + 610830: "清涧县", + 610831: "子洲县", + 610881: "神木市", + 610902: "汉滨区", + 610921: "汉阴县", + 610922: "石泉县", + 610923: "宁陕县", + 610924: "紫阳县", + 610925: "岚皋县", + 610926: "平利县", + 610927: "镇坪县", + 610928: "旬阳市", + 610929: "白河县", + 611002: "商州区", + 611021: "洛南县", + 611022: "丹凤县", + 611023: "商南县", + 611024: "山阳县", + 611025: "镇安县", + 611026: "柞水县", + 620102: "城关区", + 620103: "七里河区", + 620104: "西固区", + 620105: "安宁区", + 620111: "红古区", + 620121: "永登县", + 620122: "皋兰县", + 620123: "榆中县", + 620302: "金川区", + 620321: "永昌县", + 620402: "白银区", + 620403: "平川区", + 620421: "靖远县", + 620422: "会宁县", + 620423: "景泰县", + 620502: "秦州区", + 620503: "麦积区", + 620521: "清水县", + 620522: "秦安县", + 620523: "甘谷县", + 620524: "武山县", + 620525: "张家川回族自治县", + 620602: "凉州区", + 620621: "民勤县", + 620622: "古浪县", + 620623: "天祝藏族自治县", + 620702: "甘州区", + 620721: "肃南裕固族自治县", + 620722: "民乐县", + 620723: "临泽县", + 620724: "高台县", + 620725: "山丹县", + 620802: "崆峒区", + 620821: "泾川县", + 620822: "灵台县", + 620823: "崇信县", + 620824: "华亭市", + 620825: "庄浪县", + 620826: "静宁县", + 620902: "肃州区", + 620921: "金塔县", + 620922: "瓜州县", + 620923: "肃北蒙古族自治县", + 620924: "阿克塞哈萨克族自治县", + 620981: "玉门市", + 620982: "敦煌市", + 621002: "西峰区", + 621021: "庆城县", + 621022: "环县", + 621023: "华池县", + 621024: "合水县", + 621025: "正宁县", + 621026: "宁县", + 621027: "镇原县", + 621102: "安定区", + 621121: "通渭县", + 621122: "陇西县", + 621123: "渭源县", + 621124: "临洮县", + 621125: "漳县", + 621126: "岷县", + 621202: "武都区", + 621221: "成县", + 621222: "文县", + 621223: "宕昌县", + 621224: "康县", + 621225: "西和县", + 621226: "礼县", + 621227: "徽县", + 621228: "两当县", + 622901: "临夏市", + 622921: "临夏县", + 622922: "康乐县", + 622923: "永靖县", + 622924: "广河县", + 622925: "和政县", + 622926: "东乡族自治县", + 622927: "积石山保安族东乡族撒拉族自治县", + 623001: "合作市", + 623021: "临潭县", + 623022: "卓尼县", + 623023: "舟曲县", + 623024: "迭部县", + 623025: "玛曲县", + 623026: "碌曲县", + 623027: "夏河县", + 630102: "城东区", + 630103: "城中区", + 630104: "城西区", + 630105: "城北区", + 630121: "大通回族土族自治县", + 630122: "湟中区", + 630123: "湟源县", + 632121: "平安区", + 632122: "民和回族土族自治县", + 632123: "乐都区", + 632126: "互助土族自治县", + 632127: "化隆回族自治县", + 632128: "循化撒拉族自治县", + 632221: "门源回族自治县", + 632222: "祁连县", + 632223: "海晏县", + 632224: "刚察县", + 632321: "同仁市", + 632322: "尖扎县", + 632323: "泽库县", + 632324: "河南蒙古族自治县", + 632521: "共和县", + 632522: "同德县", + 632523: "贵德县", + 632524: "兴海县", + 632525: "贵南县", + 632621: "玛沁县", + 632622: "班玛县", + 632623: "甘德县", + 632624: "达日县", + 632625: "久治县", + 632626: "玛多县", + 632721: "玉树市", + 632722: "杂多县", + 632723: "称多县", + 632724: "治多县", + 632725: "囊谦县", + 632726: "曲麻莱县", + 632801: "格尔木市", + 632802: "德令哈市", + 632803: "茫崖市", + 632821: "乌兰县", + 632822: "都兰县", + 632823: "天峻县", + 640104: "兴庆区", + 640105: "西夏区", + 640106: "金凤区", + 640121: "永宁县", + 640122: "贺兰县", + 640181: "灵武市", + 640202: "大武口区", + 640205: "惠农区", + 640221: "平罗县", + 640302: "利通区", + 640303: "红寺堡区", + 640323: "盐池县", + 640324: "同心县", + 640381: "青铜峡市", + 640402: "原州区", + 640422: "西吉县", + 640423: "隆德县", + 640424: "泾源县", + 640425: "彭阳县", + 640502: "沙坡头区", + 640521: "中宁县", + 640522: "海原县", + 650102: "天山区", + 650103: "沙依巴克区", + 650104: "新市区", + 650105: "水磨沟区", + 650106: "头屯河区", + 650107: "达坂城区", + 650109: "米东区", + 650121: "乌鲁木齐县", + 650202: "独山子区", + 650203: "克拉玛依区", + 650204: "白碱滩区", + 650205: "乌尔禾区", + 650502: "伊州区", + 652101: "高昌区", + 652122: "鄯善县", + 652123: "托克逊县", + 652222: "巴里坤哈萨克自治县", + 652223: "伊吾县", + 652301: "昌吉市", + 652302: "阜康市", + 652323: "呼图壁县", + 652324: "玛纳斯县", + 652325: "奇台县", + 652327: "吉木萨尔县", + 652328: "木垒哈萨克自治县", + 652701: "博乐市", + 652702: "阿拉山口市", + 652722: "精河县", + 652723: "温泉县", + 652801: "库尔勒市", + 652822: "轮台县", + 652823: "尉犁县", + 652824: "若羌县", + 652825: "且末县", + 652826: "焉耆回族自治县", + 652827: "和静县", + 652828: "和硕县", + 652829: "博湖县", + 652901: "阿克苏市", + 652922: "温宿县", + 652923: "库车市", + 652924: "沙雅县", + 652925: "新和县", + 652926: "拜城县", + 652927: "乌什县", + 652928: "阿瓦提县", + 652929: "柯坪县", + 653001: "阿图什市", + 653022: "阿克陶县", + 653023: "阿合奇县", + 653024: "乌恰县", + 653101: "喀什市", + 653121: "疏附县", + 653122: "疏勒县", + 653123: "英吉沙县", + 653124: "泽普县", + 653125: "莎车县", + 653126: "叶城县", + 653127: "麦盖提县", + 653128: "岳普湖县", + 653129: "伽师县", + 653130: "巴楚县", + 653131: "塔什库尔干塔吉克自治县", + 653201: "和田市", + 653221: "和田县", + 653222: "墨玉县", + 653223: "皮山县", + 653224: "洛浦县", + 653225: "策勒县", + 653226: "于田县", + 653227: "民丰县", + 654002: "伊宁市", + 654003: "奎屯市", + 654004: "霍尔果斯市", + 654021: "伊宁县", + 654022: "察布查尔锡伯自治县", + 654023: "霍城县", + 654024: "巩留县", + 654025: "新源县", + 654026: "昭苏县", + 654027: "特克斯县", + 654028: "尼勒克县", + 654201: "塔城市", + 654202: "乌苏市", + 654221: "额敏县", + 654223: "沙湾市", + 654224: "托里县", + 654225: "裕民县", + 654226: "和布克赛尔蒙古自治县", + 654301: "阿勒泰市", + 654321: "布尔津县", + 654322: "富蕴县", + 654323: "福海县", + 654324: "哈巴河县", + 654325: "青河县", + 654326: "吉木乃县", + 659001: "石河子市", + 710101: "中正区", + 710102: "大同区", + 710103: "中山区", + 710104: "松山区", + 710105: "大安区", + 710106: "万华区", + 710107: "信义区", + 710108: "士林区", + 710109: "北投区", + 710110: "内湖区", + 710111: "南港区", + 710112: "文山区", + 710201: "新兴区", + 710202: "前金区", + 710203: "芩雅区", + 710204: "盐埕区", + 710205: "鼓山区", + 710206: "旗津区", + 710207: "前镇区", + 710208: "三民区", + 710209: "左营区", + 710210: "楠梓区", + 710211: "小港区", + 710241: "苓雅区", + 710242: "仁武区", + 710243: "大社区", + 710244: "冈山区", + 710245: "路竹区", + 710246: "阿莲区", + 710247: "田寮区", + 710248: "燕巢区", + 710249: "桥头区", + 710250: "梓官区", + 710251: "弥陀区", + 710252: "永安区", + 710253: "湖内区", + 710254: "凤山区", + 710255: "大寮区", + 710256: "林园区", + 710257: "鸟松区", + 710258: "大树区", + 710259: "旗山区", + 710260: "美浓区", + 710261: "六龟区", + 710262: "内门区", + 710263: "杉林区", + 710264: "甲仙区", + 710265: "桃源区", + 710266: "那玛夏区", + 710267: "茂林区", + 710268: "茄萣区", + 710301: "中西区", + 710302: "东区", + 710303: "南区", + 710304: "北区", + 710305: "安平区", + 710306: "安南区", + 710339: "永康区", + 710340: "归仁区", + 710341: "新化区", + 710342: "左镇区", + 710343: "玉井区", + 710344: "楠西区", + 710345: "南化区", + 710346: "仁德区", + 710347: "关庙区", + 710348: "龙崎区", + 710349: "官田区", + 710350: "麻豆区", + 710351: "佳里区", + 710352: "西港区", + 710353: "七股区", + 710354: "将军区", + 710355: "学甲区", + 710356: "北门区", + 710357: "新营区", + 710358: "后壁区", + 710359: "白河区", + 710360: "东山区", + 710361: "六甲区", + 710362: "下营区", + 710363: "柳营区", + 710364: "盐水区", + 710365: "善化区", + 710366: "大内区", + 710367: "山上区", + 710368: "新市区", + 710369: "安定区", + 710401: "中区", + 710402: "东区", + 710403: "南区", + 710404: "西区", + 710405: "北区", + 710406: "北屯区", + 710407: "西屯区", + 710408: "南屯区", + 710431: "太平区", + 710432: "大里区", + 710433: "雾峰区", + 710434: "乌日区", + 710435: "丰原区", + 710436: "后里区", + 710437: "石冈区", + 710438: "东势区", + 710439: "和平区", + 710440: "新社区", + 710441: "潭子区", + 710442: "大雅区", + 710443: "神冈区", + 710444: "大肚区", + 710445: "沙鹿区", + 710446: "龙井区", + 710447: "梧栖区", + 710448: "清水区", + 710449: "大甲区", + 710450: "外埔区", + 710451: "大安区", + 710507: "金沙镇", + 710508: "金湖镇", + 710509: "金宁乡", + 710510: "金城镇", + 710511: "烈屿乡", + 710512: "乌坵乡", + 710614: "南投市", + 710615: "中寮乡", + 710616: "草屯镇", + 710617: "国姓乡", + 710618: "埔里镇", + 710619: "仁爱乡", + 710620: "名间乡", + 710621: "集集镇", + 710622: "水里乡", + 710623: "鱼池乡", + 710624: "信义乡", + 710625: "竹山镇", + 710626: "鹿谷乡", + 710701: "仁爱区", + 710702: "信义区", + 710703: "中正区", + 710704: "中山区", + 710705: "安乐区", + 710706: "暖暖区", + 710707: "七堵区", + 710801: "东区", + 710802: "北区", + 710803: "香山区", + 710901: "东区", + 710902: "西区", + 711130: "万里区", + 711131: "金山区", + 711132: "板桥区", + 711133: "汐止区", + 711134: "深坑区", + 711135: "石碇区", + 711136: "瑞芳区", + 711137: "平溪区", + 711138: "双溪区", + 711139: "贡寮区", + 711140: "新店区", + 711141: "坪林区", + 711142: "乌来区", + 711143: "永和区", + 711144: "中和区", + 711145: "土城区", + 711146: "三峡区", + 711147: "树林区", + 711148: "莺歌区", + 711149: "三重区", + 711150: "新庄区", + 711151: "泰山区", + 711152: "林口区", + 711153: "芦洲区", + 711154: "五股区", + 711155: "八里区", + 711156: "淡水区", + 711157: "三芝区", + 711158: "石门区", + 711214: "宜兰市", + 711215: "头城镇", + 711216: "礁溪乡", + 711217: "壮围乡", + 711218: "员山乡", + 711219: "罗东镇", + 711220: "三星乡", + 711221: "大同乡", + 711222: "五结乡", + 711223: "冬山乡", + 711224: "苏澳镇", + 711225: "南澳乡", + 711226: "钓鱼台", + 711314: "竹北市", + 711315: "湖口乡", + 711316: "新丰乡", + 711317: "新埔镇", + 711318: "关西镇", + 711319: "芎林乡", + 711320: "宝山乡", + 711321: "竹东镇", + 711322: "五峰乡", + 711323: "横山乡", + 711324: "尖石乡", + 711325: "北埔乡", + 711326: "峨眉乡", + 711414: "中坜市", + 711415: "平镇市", + 711416: "龙潭乡", + 711417: "杨梅市", + 711418: "新屋乡", + 711419: "观音乡", + 711420: "桃园市", + 711421: "龟山乡", + 711422: "八德市", + 711423: "大溪镇", + 711424: "复兴乡", + 711425: "大园乡", + 711426: "芦竹乡", + 711519: "竹南镇", + 711520: "头份镇", + 711521: "三湾乡", + 711522: "南庄乡", + 711523: "狮潭乡", + 711524: "后龙镇", + 711525: "通霄镇", + 711526: "苑里镇", + 711527: "苗栗市", + 711528: "造桥乡", + 711529: "头屋乡", + 711530: "公馆乡", + 711531: "大湖乡", + 711532: "泰安乡", + 711533: "铜锣乡", + 711534: "三义乡", + 711535: "西湖乡", + 711536: "卓兰镇", + 711727: "彰化市", + 711728: "芬园乡", + 711729: "花坛乡", + 711730: "秀水乡", + 711731: "鹿港镇", + 711732: "福兴乡", + 711733: "线西乡", + 711734: "和美镇", + 711735: "伸港乡", + 711736: "员林镇", + 711737: "社头乡", + 711738: "永靖乡", + 711739: "埔心乡", + 711740: "溪湖镇", + 711741: "大村乡", + 711742: "埔盐乡", + 711743: "田中镇", + 711744: "北斗镇", + 711745: "田尾乡", + 711746: "埤头乡", + 711747: "溪州乡", + 711748: "竹塘乡", + 711749: "二林镇", + 711750: "大城乡", + 711751: "芳苑乡", + 711752: "二水乡", + 711919: "番路乡", + 711920: "梅山乡", + 711921: "竹崎乡", + 711922: "阿里山乡", + 711923: "中埔乡", + 711924: "大埔乡", + 711925: "水上乡", + 711926: "鹿草乡", + 711927: "太保市", + 711928: "朴子市", + 711929: "东石乡", + 711930: "六脚乡", + 711931: "新港乡", + 711932: "民雄乡", + 711933: "大林镇", + 711934: "溪口乡", + 711935: "义竹乡", + 711936: "布袋镇", + 712121: "斗南镇", + 712122: "大埤乡", + 712123: "虎尾镇", + 712124: "土库镇", + 712125: "褒忠乡", + 712126: "东势乡", + 712127: "台西乡", + 712128: "仑背乡", + 712129: "麦寮乡", + 712130: "斗六市", + 712131: "林内乡", + 712132: "古坑乡", + 712133: "莿桐乡", + 712134: "西螺镇", + 712135: "二仑乡", + 712136: "北港镇", + 712137: "水林乡", + 712138: "口湖乡", + 712139: "四湖乡", + 712140: "元长乡", + 712434: "屏东市", + 712435: "三地门乡", + 712436: "雾台乡", + 712437: "玛家乡", + 712438: "九如乡", + 712439: "里港乡", + 712440: "高树乡", + 712441: "盐埔乡", + 712442: "长治乡", + 712443: "麟洛乡", + 712444: "竹田乡", + 712445: "内埔乡", + 712446: "万丹乡", + 712447: "潮州镇", + 712448: "泰武乡", + 712449: "来义乡", + 712450: "万峦乡", + 712451: "崁顶乡", + 712452: "新埤乡", + 712453: "南州乡", + 712454: "林边乡", + 712455: "东港镇", + 712456: "琉球乡", + 712457: "佳冬乡", + 712458: "新园乡", + 712459: "枋寮乡", + 712460: "枋山乡", + 712461: "春日乡", + 712462: "狮子乡", + 712463: "车城乡", + 712464: "牡丹乡", + 712465: "恒春镇", + 712466: "满州乡", + 712517: "台东市", + 712518: "绿岛乡", + 712519: "兰屿乡", + 712520: "延平乡", + 712521: "卑南乡", + 712522: "鹿野乡", + 712523: "关山镇", + 712524: "海端乡", + 712525: "池上乡", + 712526: "东河乡", + 712527: "成功镇", + 712528: "长滨乡", + 712529: "金峰乡", + 712530: "大武乡", + 712531: "达仁乡", + 712532: "太麻里乡", + 712615: "花莲市", + 712616: "新城乡", + 712617: "太鲁阁", + 712618: "秀林乡", + 712619: "吉安乡", + 712620: "寿丰乡", + 712621: "凤林镇", + 712622: "光复乡", + 712623: "丰滨乡", + 712624: "瑞穗乡", + 712625: "万荣乡", + 712626: "玉里镇", + 712627: "卓溪乡", + 712628: "富里乡", + 712707: "马公市", + 712708: "西屿乡", + 712709: "望安乡", + 712710: "七美乡", + 712711: "白沙乡", + 712712: "湖西乡", + 712805: "南竿乡", + 712806: "北竿乡", + 712807: "莒光乡", + 712808: "东引乡", + 810101: "中西区", + 810102: "湾仔区", + 810103: "东区", + 810104: "南区", + 810201: "九龙城区", + 810202: "油尖旺区", + 810203: "深水埗区", + 810204: "黄大仙区", + 810205: "观塘区", + 810301: "北区", + 810302: "大埔区", + 810303: "沙田区", + 810304: "西贡区", + 810305: "元朗区", + 810306: "屯门区", + 810307: "荃湾区", + 810308: "葵青区", + 810309: "离岛区", + 820101: "花地玛堂区", + 820102: "圣安多尼堂区", + 820103: "大堂区", + 820104: "望德堂区", + 820105: "风顺堂区", + 820201: "嘉模堂区", + 820301: "圣方济各堂区", + 820401: "路氹城", + 820402: "澳门新城区", + 36048301: "庐山市", + 36048302: "共青城市", + 44190004: "洪梅镇", + 44200001: "中山港街道", + 44200002: "石岐街道", + 46040001: "儋州市", + 46902101: "定安县", + 46902301: "澄迈县", + 46902401: "临高县", + 46902501: "白沙黎族自治县", + 46902801: "陵水黎族自治县", + 46903001: "琼中黎族苗族自治县", + 46903501: "保亭黎族苗族自治县", + 62020001: "朝阳街道", + 62020002: "建设街道", + 62020003: "前进街道", + 62020004: "胜利街道", + 62020005: "五一街道", + 62020006: "新华街道", + 62020007: "峪苑街道", + 62020008: "文殊镇", + 62020009: "新城镇", + 62020010: "峪泉镇", + 65900201: "阿拉尔市", + 65900301: "图木舒克市", + 65900401: "五家渠市", + 65900501: "北屯市", + 65900601: "铁门关市", + 65900701: "双河市", + 65900801: "可克达拉市", + 65900901: "昆玉市", + 659010001: "兵团一二九团", + 659010002: "兵团一三零团", + 659011001: "兵团红星一场", + 659011002: "兵团红星四场", + 659011003: "兵团黄田农场", + }, +}; \ No newline at end of file diff --git a/litemall-wx/utils/check.js b/litemall-wx/utils/check.js index 20d0d86009944876ef6d29ee85886c480545133b..b4c5e1108b3f6a96a4a8ac2b3ee2b062f09754e9 100644 --- a/litemall-wx/utils/check.js +++ b/litemall-wx/utils/check.js @@ -1,12 +1,12 @@ -function isValidPhone(str) { - var myreg = /^[1][3,4,5,7,8][0-9]{9}$/; - if (!myreg.test(str)) { - return false; - } else { - return true; - } -} - -module.exports = { - isValidPhone +function isValidPhone(str) { + var myreg = /^[1][3,4,5,7,8][0-9]{9}$/; + if (!myreg.test(str)) { + return false; + } else { + return true; + } +} + +module.exports = { + isValidPhone } \ No newline at end of file diff --git a/litemall-wx/utils/user.js b/litemall-wx/utils/user.js index 920fe7e5c70f8b28e4cb0f37577c85107a06a4ee..32cb1e93d44aa996ea81aa7749fe7162b3c0f7a0 100644 --- a/litemall-wx/utils/user.js +++ b/litemall-wx/utils/user.js @@ -1,94 +1,106 @@ -/** - * 用户相关服务 - */ -const util = require('../utils/util.js'); -const api = require('../config/api.js'); - - -/** - * Promise封装wx.checkSession - */ -function checkSession() { - return new Promise(function(resolve, reject) { - wx.checkSession({ - success: function() { - resolve(true); - }, - fail: function() { - reject(false); - } - }) - }); -} - -/** - * Promise封装wx.login - */ -function login() { - return new Promise(function(resolve, reject) { - wx.login({ - success: function(res) { - if (res.code) { - resolve(res); - } else { - reject(res); - } - }, - fail: function(err) { - reject(err); - } - }); - }); -} - -/** - * 调用微信登录 - */ -function loginByWeixin(userInfo) { - - return new Promise(function(resolve, reject) { - return login().then((res) => { - //登录远程服务器 - util.request(api.AuthLoginByWeixin, { - code: res.code, - userInfo: userInfo - }, 'POST').then(res => { - if (res.errno === 0) { - //存储用户信息 - wx.setStorageSync('userInfo', res.data.userInfo); - wx.setStorageSync('token', res.data.token); - - resolve(res); - } else { - reject(res); - } - }).catch((err) => { - reject(err); - }); - }).catch((err) => { - reject(err); - }) - }); -} - -/** - * 判断用户是否登录 - */ -function checkLogin() { - return new Promise(function(resolve, reject) { - if (wx.getStorageSync('userInfo') && wx.getStorageSync('token')) { - checkSession().then(() => { - resolve(true); - }).catch(() => { - reject(false); - }); - } else { - reject(false); - } - }); -} - -module.exports = { - loginByWeixin, - checkLogin, +/** + * 用户相关服务 + */ +const util = require('../utils/util.js'); +const api = require('../config/api.js'); + + +/** + * Promise封装wx.checkSession + */ +function checkSession() { + return new Promise(function(resolve, reject) { + wx.checkSession({ + success: function() { + console.log('truetruetruetruetrue') + + resolve(true); + }, + fail: function() { + + reject(false); + } + }) + }); +} +// { + // "pagePath": "pages/cart/cart", + // "iconPath": "static/images/xiaoxi.png", + // "selectedIconPath": "static/images/xiaoxis.png", + // "text": "" + // }, +/** + * Promise封装wx.login + */ +function login() { + return new Promise(function(resolve, reject) { + wx.login({ + success: function(res) { + if (res.code) { + resolve(res); + } else { + reject(res); + } + }, + fail: function(err) { + reject(err); + } + }); + }); +} + +/** + * 调用微信登录 + */ +function loginByWeixin(userInfo) { + return new Promise(function(resolve, reject) { + return login().then((res) => { + //登录远程服务器 + util.request(api.AuthLoginByWeixin, { + code: res.code, + userInfo: userInfo, + mobileInfo: userInfo + }, 'POST').then(res => { + if (res.errno === 0) { + //存储用户信息 + wx.setStorageSync('status', res.data.status); + if(!!res.data.userInfo.userType){ + wx.setStorageSync('userInfo', res.data.userInfo); + wx.setStorageSync('token', res.data.token); + } + resolve(res); + } else { + reject(res); + } + }).catch((err) => { + reject(err); + }); + }).catch((err) => { + reject(err); + }) + }); +} + +/** + * 判断用户是否登录 + */ +function checkLogin() { + return new Promise(function(resolve, reject) { + + if (wx.getStorageSync('userInfo') && wx.getStorageSync('token')) { + + checkSession().then(() => { + resolve(true); + }).catch(() => { + reject(false); + }); + } else { + reject(false); + } + }); +} + +module.exports = { + loginByWeixin, + checkLogin, }; \ No newline at end of file diff --git a/litemall-wx/utils/util.js b/litemall-wx/utils/util.js index 6f0630ad4ddfc6813dd3989f3547383852e839c8..2c7a9b309673672341e4a9f0c341de1f3d44d1e8 100644 --- a/litemall-wx/utils/util.js +++ b/litemall-wx/utils/util.js @@ -1,93 +1,91 @@ -var api = require('../config/api.js'); -var app = getApp(); - -function formatTime(date) { - var year = date.getFullYear() - var month = date.getMonth() + 1 - var day = date.getDate() - - var hour = date.getHours() - var minute = date.getMinutes() - var second = date.getSeconds() - - - return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':') -} - -function formatNumber(n) { - n = n.toString() - return n[1] ? n : '0' + n -} - -/** - * 封封微信的的request - */ -function request(url, data = {}, method = "GET") { - return new Promise(function(resolve, reject) { - wx.request({ - url: url, - data: data, - method: method, - header: { - 'Content-Type': 'application/json', - 'X-Litemall-Token': wx.getStorageSync('token') - }, - success: function(res) { - - if (res.statusCode == 200) { - - if (res.data.errno == 501) { - // 清除登录相关内容 - try { - wx.removeStorageSync('userInfo'); - wx.removeStorageSync('token'); - } catch (e) { - // Do something when catch error - } - // 切换到登录页面 - wx.navigateTo({ - url: '/pages/auth/login/login' - }); - } else { - resolve(res.data); - } - } else { - reject(res.errMsg); - } - - }, - fail: function(err) { - reject(err) - } - }) - }); -} - -function redirect(url) { - - //判断页面是否需要登录 - if (false) { - wx.redirectTo({ - url: '/pages/auth/login/login' - }); - return false; - } else { - wx.redirectTo({ - url: url - }); - } -} - -function showErrorToast(msg) { - wx.showToast({ - title: msg, - image: '/static/images/icon_error.png' - }) -} - -module.exports = { - formatTime, - request, - redirect, - showErrorToast +var api = require('../config/api.js'); +var app = getApp(); + +function formatTime(date) { + var year = date.getFullYear() + var month = date.getMonth() + 1 + var day = date.getDate() + + var hour = date.getHours() + var minute = date.getMinutes() + var second = date.getSeconds() + + + return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':') +} + +function formatNumber(n) { + n = n.toString() + return n[1] ? n : '0' + n +} + +/** + * 封封微信的的request + */ +function request(url, data = {}, method = "GET") { + return new Promise(function(resolve, reject) { + wx.request({ + url: url, + data: data, + method: method, + header: { + 'Content-Type': 'application/json', + 'X-Litemall-Token': wx.getStorageSync('token') + }, + success: function(res) { + if (res.statusCode == 200) { + if (res.data.errno == 501) { + // 清除登录相关内容 + try { + wx.removeStorageSync('userInfo'); + wx.removeStorageSync('token'); + } catch (e) { + // Do something when catch error + } + // 切换到登录页面 + wx.navigateTo({ + url: '/pages/auth/authorization/authorization' + }); + } else { + resolve(res.data); + } + } else { + reject(res.errMsg); + } + + }, + fail: function(err) { + reject(err) + } + }) + }); +} + +function redirect(url) { + + //判断页面是否需要登录 + if (false) { + wx.redirectTo({ + url: '/pages/auth/authorization/authorization' + }); + return false; + } else { + wx.redirectTo({ + url: url + }); + } +} + +function showErrorToast(msg) { + wx.showToast({ + title: msg, + image: '/static/images/icon_error.png' + }) +} + +module.exports = { + formatTime, + request, + redirect, + showErrorToast } \ No newline at end of file