diff --git a/.cloudbuild/bench.yml b/.cloudbuild/bench.yml
new file mode 100644
index 00000000..f4883d11
--- /dev/null
+++ b/.cloudbuild/bench.yml
@@ -0,0 +1,34 @@
+version: 2.0
+notifications:
+ notifier:
+ espace:
+ true: false
+ email:
+ true: false
+params:
+ - name: build_system
+ value: build2
+env:
+ resource:
+ image: kweecr02.his.huawei.com:80/ecr-build/cloudsop_javascript_test:cloudsop_javascript_test
+ type: docker
+ class: 4U8G
+steps:
+ PRE_BUILD:
+ - checkout:
+ path: horizon-core
+ - gitlab:
+ url: https://szv-open.codehub.huawei.com/innersource/shanhai/wutong/react/horizon-test.git
+ branch: one_tree_dev
+ path: horizon-test
+ BUILD:
+ - build_execute:
+ command: |
+ yarn config set strict-ssl false
+ cd horizon-core
+ yarn
+ cd ../horizon-test
+ yarn
+ yarn run test
+buildspace:
+ fixed: true
diff --git a/.cloudbuild/build.yml b/.cloudbuild/build.yml
new file mode 100644
index 00000000..6e5e2d2e
--- /dev/null
+++ b/.cloudbuild/build.yml
@@ -0,0 +1,50 @@
+version: '2.0'
+notifications:
+ notifier:
+ espace:
+ 'on': false
+ email:
+ 'on': false
+buildspace:
+ log_collect:
+ - config/CI/build/logs
+ fixed: true
+env:
+ resource:
+ type: docker
+ image: kweecr04.his.huawei.com:80/ecr-build-arm-gzkunpeng/euleros_v2r10spc500_x64_opmt_cs6.0:v20.0
+ class: 4U8G
+ mode: toolbox
+steps:
+ PRE_BUILD:
+ - checkout:
+ path: horizon-core
+ - gitlab:
+ url: https://szv-y.codehub.huawei.com/CloudSOP/CloudSOP-CI.git
+ branch: master
+ path: CI
+ BUILD:
+ - build_execute:
+ command: |
+ PATH=$PATH:/usr2/node_prefix/bin
+ npm install pnpm -g
+ pnpm config set strict-ssl false
+ cd horizon-core
+ pnpm i
+ pnpm run build:inula
+ pnpm run build:horizon-intl
+ pnpm run build:horizon-request
+ pnpm run build:horizon-router
+ sh .cloudbuild/release.sh
+ enhance:
+ - feature: md5_source_tracement
+ build_tools: [npm]
+ check:
+ auto: true
+ buildcheck: true
+ mode: sync
+ POST_BUILD:
+ - compile_report:
+ rules:
+ - warning /.**/
+ - error /.**/
diff --git a/.cloudbuild/codecheck.yml b/.cloudbuild/codecheck.yml
new file mode 100644
index 00000000..9f3ac721
--- /dev/null
+++ b/.cloudbuild/codecheck.yml
@@ -0,0 +1,81 @@
+version: 2.0
+workspace:
+ path: "/usr1"
+env:
+ resource:
+ type: docker
+ image: szvecr02.his.huawei.com:80/ecr-build/euleros_v2r7spc522_x64_opmt_cs6.0:v3.0 # codecheck检查因执行资源因素一直使用苏州镜像,保证机器数量、缓存等检查效率稳定
+ cache:
+ - type: workspaceCompile # 缓存功能
+params:
+ - name: pkg_model
+ value: VM
+ - name: ci_package_name
+ value: ""
+ - name: checkRoot
+ value: ./
+ - name: os_type
+ value: euler
+ - name: enable_parallel_compile
+ value: true #mr检查模式后两种,会按语言拆出来。目前只拆C和JAVA
+steps:
+ pre_codecheck:
+ - checkout:
+ url: https://szv-open.codehub.huawei.com/innersource/fenghuang/horizon/horizon-core.git
+ branch: master
+ path: code
+ - gitlab:
+ url: https://szv-y.codehub.huawei.com/CloudSOP/CloudSOP-CI.git
+ branch: master
+ path: CI
+ - artget:
+ artifact_type: cmcbinary
+ action: pull
+ dependency: CI/build/tool/cmc/download_second_party_dependency_vm.xml
+ agent: CloudSOP_Platform
+ username: pspoictosys
+ password: encryption:ETMsDgAAAX+0YduoABRBRVMvQ0JDL1BLQ1M1UGFkZGluZwCAABAAEFvVh+8WgSL6OkFCfxYKvXcAAAAgVHmrmjYjGKKiMhNJ0i2zKofacS6/XTl7PgfzrjiJcTEAFJ3oc6PjsgLaOhXlddtsyBp5I1qL
+ - artget:
+ artifact_type: opensource
+ action: pull
+ dependency: CI/build/tool/cmc/download_opensource_cmc_dependency.xml
+ agent: opensource_cmc
+ username: pspoictosys
+ password: encryption:ETMsDgAAAX+0YduoABRBRVMvQ0JDL1BLQ1M1UGFkZGluZwCAABAAEFvVh+8WgSL6OkFCfxYKvXcAAAAgVHmrmjYjGKKiMhNJ0i2zKofacS6/XTl7PgfzrjiJcTEAFJ3oc6PjsgLaOhXlddtsyBp5I1qL
+ - sh: # 两层门禁场景需要进行代码预合并操作,目前通过CodeCCP注入参数实现场景区分,正常MR和版本级检查没有“codecheckVersionScan”环境变量
+ command: |
+ if [[ "${codecheckVersionScan}" == "true" ]];then
+ sh ${WORKSPACE}/CI/build/bin/codecheck/code_merge.sh
+ fi
+ - sh:
+ command: ${ci_clang_shell_cmd}
+ effect_tool: pclint-plus,clangtidy
+ - sh:
+ command: |
+ sh ${WORKSPACE}/CI/build/bin/codecheck/build_codecheck.sh ${ci_package_name}
+ effect_tool: spotbugs,sonarqube,binscope
+tool_params:
+ secsolar:
+ compile_script: sh ${WORKSPACE}/CI/build/bin/codecheck/buildSecsolar.sh ${ci_package_name}
+ secbrella:
+ compile_scripts:
+ - language: java
+ compile_script: ../CI/build/bin/codecheck/buildSecsolar.sh bazel-json ${ci_package_name}
+ fortify:
+ custom_params:
+ exclude: '**/test/**/*.py:**/CI/**/*.py'
+ compile_scripts:
+ - language: python
+ compile_script: ../CI/build/bin/codecheck/fortify_python.sh
+ clangtidy:
+ compilerCommandsPath: ${WORKSPACE}/CI/build/bin/codecheck/compile_commands.json
+ pclint-plus:
+ lntPath: ${WORKSPACE}/CI/build/bin/codecheck/
+ lntMain: project.lnt
+ lntEnv: PROJECTROOT=./
+ compiler: ${WORKSPACE}/CI/build/bin/codecheck/co-gcc.lnt
+ spotbugs:
+ isIncAnalysis: true # 开启后,支持按变更文件进行spotbugs检查,不需要可以删除
+ binscope:
+ scan_dirs: ${ci_package_name}
+ relative_dir: ${ci_package_name}
diff --git a/.cloudbuild/release.sh b/.cloudbuild/release.sh
new file mode 100644
index 00000000..5e995a6b
--- /dev/null
+++ b/.cloudbuild/release.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+#
+# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
+#
+# openGauss is licensed under Mulan PSL v2.
+# You can use this software according to the terms and conditions of the Mulan PSL v2.
+# You may obtain a copy of Mulan PSL v2 at:
+#
+# http://license.coscl.org.cn/MulanPSL2
+#
+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+#
+
+if [ -n "${releaseVersion}" ] ; then
+ echo "==== Horizon Upgrade ${releaseVersion} ===="
+ cd ./packages/inula/build/horizon || { echo 'ERROR: Build directory not found' ; exit 1; }
+
+ cd umd
+ # umd生产包多暴露全局名HorizonDOM
+ # 以解决webpack的externals react-dom和react都指向Horizon时,webpack随机使用key名造成源码交付问题
+ sed -i '$a window.HorizonDOM = window.Horizon;' horizon.production.min.js
+ cd -
+
+ # 写入新版本号
+ npm version "${releaseVersion}"
+ cat >.npmrc <<- EndOfMessage
+registry=https://cmc.centralrepo.rnd.huawei.com/npm
+@cloudsop:registry=https://cmc.centralrepo.rnd.huawei.com/artifactory/api/npm/product_npm
+//cmc.centralrepo.rnd.huawei.com/artifactory/api/npm/:_authToken = ZW5jcnlwdDpBQUFBQWdBQUFBQUFBQUFBQUFBQUFRQUFBQWQzVGU5Y1dEMnhsWFhvenhCN3M3M1c0U3F6TUtmL3lySUZGOHVrSVN4Ui9BRUFBQUVBQUFBQUFBQUFNTTBHOHdLc2pidWxnbnZBaHY3WHRYWHRyZ2ZLQ1ZHdVFzWlJhTlNsZWdEcXVTY0pjZmtBRVJmQ3kzQjZQQmtZbXc9PQ==
+always-auth = true
+email = cloudsop@huawei.com
+EndOfMessage
+
+ echo "==== Publish new version===="
+
+ npm publish
+ npm view @cloudsop/horizon@"${releaseVersion}"
+else
+ echo "No release version, quit."
+fi
diff --git a/.cloudbuild/test.yml b/.cloudbuild/test.yml
new file mode 100644
index 00000000..10f27393
--- /dev/null
+++ b/.cloudbuild/test.yml
@@ -0,0 +1,37 @@
+version: '2.0'
+notifications:
+ notifier:
+ espace:
+ 'on': false
+ email:
+ 'on': false
+buildspace:
+ log_collect:
+ - config/CI/build/logs
+ fixed: true
+env:
+ resource:
+ type: docker
+ image: kweecr04.his.huawei.com:80/ecr-build-arm-gzkunpeng/euleros_v2r7spc522_x64_opmt_cs5.0_sz:v5.0
+ class: 8U16G
+ mode: toolbox
+ cache:
+ - type: workspace
+steps:
+ PRE_BUILD:
+ - checkout:
+ path: horizon-core
+ - gitlab:
+ url: https://szv-open.codehub.huawei.com/innersource/fenghuang/horizon/horizon-test.git
+ branch: master
+ path: horizon-test
+ BUILD:
+ - build_execute:
+ command: |
+ npm install yarn -g
+ yarn config set strict-ssl false
+ cd horizon-core
+ yarn
+ cd ../horizon-test
+ yarn
+ yarn run test
diff --git a/packages/create-inula/lib/generators/Inula-antd/index.js b/packages/create-inula/lib/generators/Inula-antd/index.js
deleted file mode 100644
index 6535b56d..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/index.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const BasicGenerator = require('../../BasicGenerator');
-
-class Generator extends BasicGenerator {
- prompting() {
- return this.prompt([
- {
- type: 'list',
- name: 'bundlerType',
- message: 'Please select the build type',
- choices: ['webpack', 'vite'],
- },
- ]).then(props => {
- this.prompts = props;
- console.log('finish prompting');
- });
- }
- writing() {
- const src = this.templatePath(this.prompts.bundlerType);
- const dest = this.destinationPath();
- this.writeFiles(src, dest, {
- context: {
- ...this.prompts,
- },
- });
- }
-}
-
-module.exports = Generator;
diff --git a/packages/create-inula/lib/generators/Inula-antd/meta.json b/packages/create-inula/lib/generators/Inula-antd/meta.json
deleted file mode 100644
index 0c0b36d4..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/meta.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "description": "Inula-antd template."
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/.gitignore b/packages/create-inula/lib/generators/Inula-antd/templates/vite/.gitignore
deleted file mode 100644
index a547bf36..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/index.html b/packages/create-inula/lib/generators/Inula-antd/templates/vite/index.html
deleted file mode 100644
index f44949a7..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
- Inula Antd
-
-
-
-
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/_utils.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/_utils.js
deleted file mode 100644
index e1b2c368..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/_utils.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Query objects that specify keys and values in an array where all values are objects.
- * @param {array} array An array where all values are objects, like [{key:1},{key:2}].
- * @param {string} key The key of the object that needs to be queried.
- * @param {string} value The value of the object that needs to be queried.
- * @return {object|undefined} Return frist object when query success.
- */
-export function queryArray(array, key, value) {
- if (!Array.isArray(array)) {
- return;
- }
- return array.filter(_ => _[key] === value);
-}
-
-export const Constant = {
- ApiPrefix: '/api/v1',
- NotFound: {
- message: 'Not Found',
- documentation_url: '',
- },
- Color: {
- green: '#64ea91',
- blue: '#8fc9fb',
- purple: '#d897eb',
- red: '#f69899',
- yellow: '#f8c82e',
- peach: '#f797d6',
- borderBase: '#e5e5e5',
- borderSplit: '#f4f4f4',
- grass: '#d6fbb5',
- sky: '#c1e0fc',
- },
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/dashboard.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/dashboard.js
deleted file mode 100644
index 983bcdee..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/dashboard.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import { Constant } from './_utils';
-import Mock from 'mockjs';
-
-const { ApiPrefix, Color } = Constant;
-
-const Dashboard = Mock.mock({
- 'sales|8': [
- {
- 'name|+1': 2008,
- 'Clothes|200-500': 1,
- 'Food|180-400': 1,
- 'Electronics|300-550': 1,
- },
- ],
- quote: {
- name: 'Joho Doe',
- title: 'Graphic Designer',
- content:
- "I'm selfish, impatient and a little insecure. I make mistakes, I am out of control and at times hard to handle. But if you can't handle me at my worst, then you sure as hell don't deserve me at my best.",
- avatar: '//cdn.antd-admin.zuiidea.com/bc442cf0cc6f7940dcc567e465048d1a8d634493198c4-sPx5BR_fw236',
- },
- numbers: [
- {
- icon: 'pay-circle-o',
- color: Color.green,
- title: 'Online Review',
- number: 2781,
- },
- {
- icon: 'team',
- color: Color.blue,
- title: 'New Customers',
- number: 3241,
- },
- {
- icon: 'message',
- color: Color.purple,
- title: 'Active Projects',
- number: 253,
- },
- {
- icon: 'shopping-cart',
- color: Color.red,
- title: 'Referrals',
- number: 4324,
- },
- ],
-});
-
-export default [
- {
- url: `${ApiPrefix}/dashboard`,
- method: 'get',
- response: () => {
- return Dashboard;
- },
- },
-];
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/route.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/route.js
deleted file mode 100644
index fc19d968..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/route.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Constant } from './_utils';
-
-const { ApiPrefix } = Constant;
-
-const database = [
- {
- id: '1',
- icon: 'dashboard',
- name: 'Dashboard',
- zh: {
- name: '仪表盘',
- },
- 'pt-br': {
- name: 'Dashboard',
- },
- route: '/dashboard',
- },
- {
- id: '2',
- breadcrumbParentId: '',
- name: 'User Management',
- zh: {
- name: '用户管理',
- },
- 'pt-br': {
- name: 'Usuário',
- },
- icon: 'user',
- route: '/user',
- },
-];
-
-export default [
- {
- url: `${ApiPrefix}/routes`,
- method: 'get',
- response: () => {
- return database;
- },
- },
-];
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/user.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/user.js
deleted file mode 100644
index 986da934..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/mock/user.js
+++ /dev/null
@@ -1,145 +0,0 @@
-import { Constant } from "./_utils";
-import Mock from "mockjs";
-import url from "url";
-
-const { ApiPrefix } = Constant;
-
-let usersListData = Mock.mock({
- "data|80-100": [
- {
- id: "@id",
- name: "@name",
- nickName: "@last",
- phone: /^1[34578]\d{9}$/,
- "age|11-99": 1,
- address: "@county(true)",
- isMale: "@boolean",
- email: "@email",
- createTime: "@datetime",
- },
- ],
-});
-
-let database = usersListData.data;
-
-const EnumRoleType = {
- ADMIN: "admin",
- DEFAULT: "guest",
- DEVELOPER: "developer",
-};
-
-const userPermission = {
- DEFAULT: {
- visit: ["1", "2", "21", "7", "5", "51", "52", "53"],
- role: EnumRoleType.DEFAULT,
- },
- ADMIN: {
- role: EnumRoleType.ADMIN,
- },
- DEVELOPER: {
- role: EnumRoleType.DEVELOPER,
- },
-};
-
-const adminUsers = [
- {
- id: 0,
- username: "admin",
- password: "admin",
- permissions: userPermission.ADMIN,
- },
-];
-
-const queryArray = (array, key, keyAlias = "key") => {
- if (!(array instanceof Array)) {
- return null;
- }
- let data;
-
- for (let item of array) {
- if (item[keyAlias] === key) {
- data = item;
- break;
- }
- }
-
- if (data) {
- return data;
- }
- return null;
-};
-
-const NOTFOUND = {
- message: "Not Found",
- documentation_url: "http://localhost:8000/request",
-};
-
-export default [
- {
- url: `${ApiPrefix}/user`,
- method: "get",
- response: () => {
- return {
- success: true,
- user: adminUsers[0],
- };
- },
- },
- {
- url: `${ApiPrefix}/users`,
- method: "get",
- response: (req) => {
- const { query } = url.parse(req.url, true);
- let { pageSize, page, ...other } = query;
- if (other["address[]"]) {
- other["address"] = other["address[]"];
- delete(other["address[]"]);
- }
- pageSize = pageSize || 10;
- page = page || 1;
-
- let newData = database;
- for (let key in other) {
- newData = newData.filter((item) => {
- if ({}.hasOwnProperty.call(item, key)) {
- if (key === "address") {
- for (const addr of other[key]) {
- if (item[key].indexOf(addr) === -1) {
- return false;
- }
- }
- return true;
- } else if (key === "createTime") {
- const start = new Date(other[key][0]).getTime();
- const end = new Date(other[key][1]).getTime();
- const now = new Date(item[key]).getTime();
-
- if (start && end) {
- return now >= start && now <= end;
- }
- return true;
- }
- return (
- String(item[key]).trim().indexOf(decodeURI(other[key]).trim()) >
- -1
- );
- }
- return false;
- });
- }
- return {
- data: newData.slice((page - 1) * pageSize, page * pageSize),
- total: newData.length,
- };
- },
- },
- {
- url: `${ApiPrefix}/users/delete`,
- method: "post",
- response: (req) => {
- const { ids = [] } = req.body;
- database = database.filter((item) => !ids.some((_) => _ === item.id));
- },
- },
- {},
-];
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/package.json b/packages/create-inula/lib/generators/Inula-antd/templates/vite/package.json
deleted file mode 100644
index 04876505..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "inula-vite-app",
- "private": true,
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "start": "vite",
- "build": "vite build"
- },
- "dependencies": {
- "@ant-design/icons": "^5.0.1",
- "@babel/plugin-proposal-export-default-from": "^7.18.6",
- "@babel/plugin-transform-react-jsx": "^7.21.0",
- "@babel/runtime": "7.6.2",
- "antd": "^4.0.0",
- "axios": "^0.21.0",
- "classnames": "^2.2.6",
- "echarts": "^5.0.0",
- "history": "^5.3.0",
- "lodash": "^4.17.11",
- "moment": "2.24.0",
- "nprogress": "^0.2.0",
- "path-to-regexp": "^6.1.0",
- "prop-types": "^15.7.0",
- "qs": "^6.10.0",
- "inulajs": "0.0.11",
- "react-draft-wysiwyg": "^1.13.0",
- "inula-intl": "^0.0.1",
- "react-perfect-scrollbar": "^1.5.0",
- "inula-router": "^0.0.1",
- "recharts": "^2.0.0",
- "store": "^2.0.0"
- },
- "devDependencies": {
- "@babel/cli": "7.18.6",
- "@babel/core": "^7.18.6",
- "@babel/eslint-parser": "7.18.2",
- "@babel/plugin-proposal-class-properties": "7.18.6",
- "@babel/plugin-syntax-dynamic-import": "7.8.3",
- "@babel/plugin-syntax-jsx": "^7.18.6",
- "@babel/plugin-transform-flow-strip-types": "^7.18.6",
- "@babel/plugin-transform-runtime": "^7.18.6",
- "@babel/preset-env": "^7.18.6",
- "@babel/preset-react": "^7.18.6",
- "@babel/preset-typescript": "^7.18.6",
- "@babel/runtime": "7.18.6",
- "@babel/types": "7.18.6",
- "@vitejs/plugin-react": "^3.1.0",
- "@vitejs/plugin-react-refresh": "^1.3.5",
- "babel-loader": "8.2.5",
- "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
- "cross-env": "7.0.3",
- "css-loader": "^4.3.0",
- "eslint": "^7.0.0",
- "express-interceptor": "1.2.0",
- "file-loader": "^6.2.0",
- "html-webpack-plugin": "^5.5.0",
- "less": "^4.1.3",
- "less-vars-to-js": "^1.3.0",
- "mockjs": "^1.1.0",
- "prettier": "^2.0.0",
- "style-loader": "^3.2.2",
- "ts-loader": "^9.3.1",
- "tsconfig-paths-webpack-plugin": "^4.0.1",
- "typescript": "^4.2.3",
- "url-loader": "^4.1.1",
- "vite": "^4.2.1",
- "vite-plugin-mock": "^2.9.6",
- "vite-plugin-require-transform": "^1.0.12"
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/favicon.ico b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/favicon.ico
deleted file mode 100644
index 7ca2170e..00000000
Binary files a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/favicon.ico and /dev/null differ
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo.svg b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo.svg
deleted file mode 100644
index ce7afe5c..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo.svg
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
\ No newline at end of file
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@128.png b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@128.png
deleted file mode 100644
index 5e218d8c..00000000
Binary files a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@128.png and /dev/null differ
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@144.png b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@144.png
deleted file mode 100644
index 347e0dfe..00000000
Binary files a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@144.png and /dev/null differ
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@152.png b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@152.png
deleted file mode 100644
index 900dc3c7..00000000
Binary files a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@152.png and /dev/null differ
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@192.png b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@192.png
deleted file mode 100644
index 342ab1e9..00000000
Binary files a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@192.png and /dev/null differ
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@384.png b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@384.png
deleted file mode 100644
index c487f36b..00000000
Binary files a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@384.png and /dev/null differ
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@512.png b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@512.png
deleted file mode 100644
index c2b44dc8..00000000
Binary files a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@512.png and /dev/null differ
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@72.png b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@72.png
deleted file mode 100644
index 126e5efe..00000000
Binary files a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@72.png and /dev/null differ
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@96.png b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@96.png
deleted file mode 100644
index de9a9fba..00000000
Binary files a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/logo/logo@96.png and /dev/null differ
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/vite.svg b/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/vite.svg
deleted file mode 100644
index e7b8dfb1..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/DropOption/DropOption.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/DropOption/DropOption.js
deleted file mode 100644
index 345e231a..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/DropOption/DropOption.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import Inula from 'inulajs';
-import PropTypes from 'prop-types';
-import { BarsOutlined, DownOutlined } from '@ant-design/icons';
-import { Dropdown, Button, Menu } from 'antd';
-
-const DropOption = ({ onMenuClick, menuOptions = [], buttonStyle, dropdownProps }) => {
- const menu = menuOptions.map(item => {item.name});
- return (
- {menu}} {...dropdownProps}>
-
-
- );
-};
-
-DropOption.propTypes = {
- onMenuClick: PropTypes.func,
- menuOptions: PropTypes.array.isRequired,
- buttonStyle: PropTypes.object,
- dropdownProps: PropTypes.object,
-};
-
-export default DropOption;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/DropOption/package.json b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/DropOption/package.json
deleted file mode 100644
index a15afe7a..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/DropOption/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "name": "DropOption",
- "version": "0.0.0",
- "private": true,
- "main": "DropOption.js"
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.d.ts b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.d.ts
deleted file mode 100644
index 57fc2b2d..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import Inula from 'inulajs';
-import { TooltipProps } from 'antd/lib/tooltip';
-
-export interface EllipsisTooltipProps extends TooltipProps {
- title?: undefined;
- overlayStyle?: undefined;
-}
-
-export interface EllipsisProps {
- tooltip?: boolean | EllipsisTooltipProps;
- length?: number;
- lines?: number;
- style?: Inula.CSSProperties;
- className?: string;
- fullWidthRecognition?: boolean;
-}
-
-export function getStrFullLength(str: string): number;
-export function cutStrByFullLength(str: string, maxLength: number): string;
-
-export default class Ellipsis extends Inula.Component {}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.js
deleted file mode 100644
index 962cb59b..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.js
+++ /dev/null
@@ -1,259 +0,0 @@
-import Inula, { Component } from 'inulajs';
-import { Tooltip } from 'antd';
-import classNames from 'classnames';
-import styles from './index.module.less';
-
-const isSupportLineClamp = document.body.style.webkitLineClamp !== undefined;
-
-const TooltipOverlayStyle = {
- overflowWrap: 'break-word',
- wordWrap: 'break-word',
-};
-
-export const getStrFullLength = (str = '') =>
- str.split('').reduce((pre, cur) => {
- const charCode = cur.charCodeAt(0);
- if (charCode >= 0 && charCode <= 128) {
- return pre + 1;
- }
- return pre + 2;
- }, 0);
-
-export const cutStrByFullLength = (str = '', maxLength) => {
- let showLength = 0;
- return str.split('').reduce((pre, cur) => {
- const charCode = cur.charCodeAt(0);
- if (charCode >= 0 && charCode <= 128) {
- showLength += 1;
- } else {
- showLength += 2;
- }
- if (showLength <= maxLength) {
- return pre + cur;
- }
- return pre;
- }, '');
-};
-
-const getTooltip = ({ tooltip, overlayStyle, title, children }) => {
- if (tooltip) {
- const props = tooltip === true ? { overlayStyle, title } : { ...tooltip, overlayStyle, title };
- return {children};
- }
- return children;
-};
-
-const EllipsisText = ({ text, length, tooltip, fullWidthRecognition, ...other }) => {
- if (typeof text !== 'string') {
- throw new Error('Ellipsis children must be string.');
- }
- const textLength = fullWidthRecognition ? getStrFullLength(text) : text.length;
- if (textLength <= length || length < 0) {
- return {text};
- }
- const tail = '...';
- let displayText;
- if (length - tail.length <= 0) {
- displayText = '';
- } else {
- displayText = fullWidthRecognition ? cutStrByFullLength(text, length) : text.slice(0, length);
- }
-
- const spanAttrs = tooltip ? {} : { ...other };
- return getTooltip({
- tooltip,
- overlayStyle: TooltipOverlayStyle,
- title: text,
- children: (
-
- {displayText}
- {tail}
-
- ),
- });
-};
-
-export default class Ellipsis extends Component {
- state = {
- text: '',
- targetCount: 0,
- };
-
- componentDidMount() {
- if (this.node) {
- this.computeLine();
- }
- }
-
- componentDidUpdate(perProps) {
- const { lines } = this.props;
- if (lines !== perProps.lines) {
- this.computeLine();
- }
- }
-
- computeLine = () => {
- const { lines } = this.props;
- if (lines && !isSupportLineClamp) {
- const text = this.shadowChildren.innerText || this.shadowChildren.textContent;
- const lineHeight = parseInt(getComputedStyle(this.root).lineHeight, 10);
- const targetHeight = lines * lineHeight;
- this.content.style.height = `${targetHeight}px`;
- const totalHeight = this.shadowChildren.offsetHeight;
- const shadowNode = this.shadow.firstChild;
-
- if (totalHeight <= targetHeight) {
- this.setState({
- text,
- targetCount: text.length,
- });
- return;
- }
-
- // bisection
- const len = text.length;
- const mid = Math.ceil(len / 2);
-
- const count = this.bisection(targetHeight, mid, 0, len, text, shadowNode);
-
- this.setState({
- text,
- targetCount: count,
- });
- }
- };
-
- bisection = (th, m, b, e, text, shadowNode) => {
- const suffix = '...';
- let mid = m;
- let end = e;
- let begin = b;
- shadowNode.innerHTML = text.substring(0, mid) + suffix;
- let sh = shadowNode.offsetHeight;
-
- if (sh <= th) {
- shadowNode.innerHTML = text.substring(0, mid + 1) + suffix;
- sh = shadowNode.offsetHeight;
- if (sh > th || mid === begin) {
- return mid;
- }
- begin = mid;
- if (end - begin === 1) {
- mid = 1 + begin;
- } else {
- mid = Math.floor((end - begin) / 2) + begin;
- }
- return this.bisection(th, mid, begin, end, text, shadowNode);
- }
- if (mid - 1 < 0) {
- return mid;
- }
- shadowNode.innerHTML = text.substring(0, mid - 1) + suffix;
- sh = shadowNode.offsetHeight;
- if (sh <= th) {
- return mid - 1;
- }
- end = mid;
- mid = Math.floor((end - begin) / 2) + begin;
- return this.bisection(th, mid, begin, end, text, shadowNode);
- };
-
- handleRoot = n => {
- this.root = n;
- };
-
- handleContent = n => {
- this.content = n;
- };
-
- handleNode = n => {
- this.node = n;
- };
-
- handleShadow = n => {
- this.shadow = n;
- };
-
- handleShadowChildren = n => {
- this.shadowChildren = n;
- };
-
- render() {
- const { text, targetCount } = this.state;
- const { children, lines, length, className, tooltip, fullWidthRecognition, ...restProps } = this.props;
-
- const cls = classNames(styles.ellipsis, className, {
- [styles.lines]: lines && !isSupportLineClamp,
- [styles.lineClamp]: lines && isSupportLineClamp,
- });
-
- if (!lines && !length) {
- return (
-
- {children}
-
- );
- }
-
- // length
- if (!lines) {
- return (
-
- );
- }
-
- const id = `antd-pro-ellipsis-${`${new Date().getTime()}${Math.floor(Math.random() * 100)}`}`;
-
- // support document.body.style.webkitLineClamp
- if (isSupportLineClamp) {
- const style = `#${id}{-webkit-line-clamp:${lines};-webkit-box-orient: vertical;}`;
-
- const node = (
-
-
- {children}
-
- );
-
- return getTooltip({
- tooltip,
- overlayStyle: TooltipOverlayStyle,
- title: children,
- children: node,
- });
- }
-
- const childNode = (
-
- {targetCount > 0 && text.substring(0, targetCount)}
- {targetCount > 0 && targetCount < text.length && '...'}
-
- );
-
- return (
-
-
- {getTooltip({
- tooltip,
- overlayStyle: TooltipOverlayStyle,
- title: text,
- children: childNode,
- })}
-
- {children}
-
-
- {text}
-
-
-
- );
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.md b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.md
deleted file mode 100644
index 1875b17c..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: Ellipsis
-subtitle: 文本自动省略号
-cols: 1
-order: 10
----
-
-文本过长自动处理省略号,支持按照文本长度和最大行数两种方式截取。
-
-## API
-
-| 参数 | 说明 | 类型 | 默认值 |
-| -------------------- | ------------------------------------------------ | ------- | ------ |
-| tooltip | 移动到文本展示完整内容的提示 | boolean | - |
-| length | 在按照长度截取下的文本最大字符数,超过则截取省略 | number | - |
-| lines | 在按照行数截取下最大的行数,超过则截取省略 | number | `1` |
-| fullWidthRecognition | 是否将全角字符的长度视为 2 来计算字符串长度 | boolean | - |
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.module.less
deleted file mode 100644
index 3c0360c1..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.module.less
+++ /dev/null
@@ -1,24 +0,0 @@
-.ellipsis {
- display: inline-block;
- width: 100%;
- overflow: hidden;
- word-break: break-all;
-}
-
-.lines {
- position: relative;
- .shadow {
- position: absolute;
- z-index: -999;
- display: block;
- color: transparent;
- opacity: 0;
- }
-}
-
-.lineClamp {
- position: relative;
- display: -webkit-box;
- overflow: hidden;
- text-overflow: ellipsis;
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.test.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.test.js
deleted file mode 100644
index 4d057b24..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Ellipsis/index.test.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { getStrFullLength, cutStrByFullLength } from './index';
-
-describe('test calculateShowLength', () => {
- it('get full length', () => {
- expect(getStrFullLength('一二,a,')).toEqual(8);
- });
- it('cut str by full length', () => {
- expect(cutStrByFullLength('一二,a,', 7)).toEqual('一二,a');
- });
- it('cut str when length small', () => {
- expect(cutStrByFullLength('一22三', 5)).toEqual('一22');
- });
-});
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/FilterItem/FilterItem.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/FilterItem/FilterItem.js
deleted file mode 100644
index 03bbb0d8..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/FilterItem/FilterItem.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import Inula from 'inulajs';
-import PropTypes from 'prop-types';
-import styles from './FilterItem.module.less';
-
-const FilterItem = ({ label = '', children }) => {
- const labelArray = label.split('');
- return (
-
- {labelArray.length > 0 && (
-
- {labelArray.map((item, index) => (
-
- {item}
-
- ))}
-
- )}
-
{children}
-
- );
-};
-
-FilterItem.propTypes = {
- label: PropTypes.string,
- children: PropTypes.element.isRequired,
-};
-
-export default FilterItem;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/FilterItem/FilterItem.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/FilterItem/FilterItem.module.less
deleted file mode 100644
index c2e98ec5..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/FilterItem/FilterItem.module.less
+++ /dev/null
@@ -1,17 +0,0 @@
-.filterItem {
- display: flex;
- justify-content: space-between;
-
- .labelWrap {
- width: 64px;
- line-height: 28px;
- margin-right: 12px;
- justify-content: space-between;
- display: flex;
- overflow: hidden;
- }
-
- .item {
- flex: 1;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/FilterItem/package.json b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/FilterItem/package.json
deleted file mode 100644
index b266204f..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/FilterItem/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "name": "FilterItem",
- "version": "0.0.0",
- "private": true,
- "main": "FilterItem.js"
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.d.ts b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.d.ts
deleted file mode 100644
index 67ed183d..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import Inula from 'inulajs';
-import type { InulaNode, CSSProperties, Component } from 'inulajs';
-
-export interface GlobalFooterProps {
- links?: Array<{
- key?: string;
- title: InulaNode;
- href: string;
- blankTarget?: boolean;
- }>;
- copyright?: InulaNode;
- style?: CSSProperties;
- className?: string;
-}
-
-export default class GlobalFooter extends Component {}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.js
deleted file mode 100644
index ee2176af..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import Inula from 'inulajs';
-import classNames from 'classnames';
-import styles from './index.module.less';
-
-const GlobalFooter = ({ className, links, copyright }) => {
- const clsString = classNames(styles.globalFooter, className);
- return (
-
- );
-};
-
-export default GlobalFooter;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.md b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.md
deleted file mode 100644
index 2fc6f7e5..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: GlobalFooter
-subtitle: 全局页脚
-cols: 1
-order: 7
----
-
-页脚属于全局导航的一部分,作为对顶部导航的补充,通过传递数据控制展示内容。
-
-## API
-
-| 参数 | 说明 | 类型 | 默认值 |
-| --------- | -------- | ---------------------------------------------------------------- | ------ |
-| links | 链接数据 | array<{ title: InulaNode, href: string, blankTarget?: boolean }> | - |
-| copyright | 版权信息 | InulaNode | - |
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.module.less
deleted file mode 100644
index c9d375c2..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/GlobalFooter/index.module.less
+++ /dev/null
@@ -1,29 +0,0 @@
-@import '../../../../node_modules/antd/lib/style/themes/default.less';
-
-.globalFooter {
- margin: 48px 0 24px 0;
- padding: 0 16px;
- text-align: center;
-
- .links {
- margin-bottom: 8px;
-
- a {
- color: @text-color-secondary;
- transition: all 0.3s;
-
- &:not(:last-child) {
- margin-right: 40px;
- }
-
- &:hover {
- color: @text-color;
- }
- }
- }
-
- .copyright {
- color: @text-color-secondary;
- font-size: @font-size-base;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Bread.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Bread.js
deleted file mode 100644
index 9fb0ebf9..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Bread.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import Inula, { Fragment } from 'inulajs';
-import { Breadcrumb } from 'antd';
-import { Link } from 'inula-router';
-import { t } from 'utils/intl';
-import iconMap from 'utils/iconMap';
-
-import { pathToRegexp } from 'path-to-regexp';
-import { queryAncestors } from 'utils';
-import styles from './Bread.module.less';
-import { withRouter } from 'inula-router';
-
-function Bread({ routeList, history }) {
- const generateBreadcrumbs = paths => {
- return paths.map((item, key) => {
- const content = item && (
-
- {item.icon && {iconMap[item.icon]}}
- {item.name}
-
- );
-
- return (
- item && (
-
- {paths.length - 1 !== key ? {content} : content}
-
- )
- );
- });
- };
-
- // Find a route that matches the pathname.
- const currentRoute = routeList.find(_ => _.route && pathToRegexp(_.route).exec(history.location.pathname));
-
- // Find the breadcrumb navigation of the current route match and all its ancestors.
- const paths =
- history.location.pathname === '/'
- ? [routeList[0]]
- : currentRoute
- ? queryAncestors(routeList, currentRoute, 'breadcrumbParentId').reverse()
- : [
- {
- id: 404,
- name: t`Not Found`,
- },
- ];
-
- return {generateBreadcrumbs(paths)};
-}
-
-export default withRouter(Bread);
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Bread.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Bread.module.less
deleted file mode 100644
index 29f247b2..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Bread.module.less
+++ /dev/null
@@ -1,16 +0,0 @@
-.bread {
- margin-bottom: 24px !important;
-
- :global {
- .ant-breadcrumb {
- display: flex;
- align-items: center;
- }
- }
-}
-
-@media (max-width: 767px) {
- .bread {
- margin-bottom: 12px !important;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Header.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Header.js
deleted file mode 100644
index 41df4098..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Header.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import Inula from 'inulajs';
-import { Menu, Layout } from 'antd';
-import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons';
-import { Trans } from 'utils/intl';
-import { getLocale, setLocale } from 'utils';
-import classnames from 'classnames';
-import config from 'config';
-import styles from './Header.module.less';
-
-const { SubMenu } = Menu;
-
-function Header({ fixed, username, collapsed, notifications, onCollapseChange, onAllNotificationsRead }) {
- const rightContent = [
-
-
- Hi,
-
- {username}
-
- ];
-
- if (config.i18n) {
- const { languages } = config.i18n;
- const language = getLocale();
- const currentLanguage = languages.find(item => item.key === language);
-
- rightContent.unshift(
-
- );
- }
-
- return (
-
- );
-}
-
-export default Header;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Header.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Header.module.less
deleted file mode 100644
index 4b487d66..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Header.module.less
+++ /dev/null
@@ -1,154 +0,0 @@
-@import '../../themes/vars.less';
-
-.header {
- padding: 0 !important;
- box-shadow: @shadow-2;
- position: relative;
- display: flex;
- justify-content: space-between;
- height: 72px !important;
- z-index: 9;
- align-items: center;
- background-color: #fff !important;
-
- &.fixed {
- position: fixed;
- top: 0;
- right: 0;
- width: ~'calc(100% - 256px)';
- z-index: 29;
- transition: width 0.2s;
-
- &.collapsed {
- width: ~'calc(100% - 80px)';
- }
- }
-
- :global {
- .ant-menu-submenu-title {
- height: 72px;
- }
-
- .ant-menu-horizontal {
- line-height: 72px;
-
- & > .ant-menu-submenu:hover {
- color: @primary-color;
- background-color: @hover-color;
- }
- }
-
- .ant-menu {
- border-bottom: none;
- height: 72px;
- }
-
- .ant-menu-horizontal > .ant-menu-submenu {
- top: 0;
- margin-top: 0;
- }
-
- .ant-menu-horizontal > .ant-menu-item,
- .ant-menu-horizontal > .ant-menu-submenu {
- border-bottom: none;
- }
-
- .ant-menu-horizontal > .ant-menu-item-active,
- .ant-menu-horizontal > .ant-menu-item-open,
- .ant-menu-horizontal > .ant-menu-item-selected,
- .ant-menu-horizontal > .ant-menu-item:hover,
- .ant-menu-horizontal > .ant-menu-submenu-active,
- .ant-menu-horizontal > .ant-menu-submenu-open,
- .ant-menu-horizontal > .ant-menu-submenu-selected,
- .ant-menu-horizontal > .ant-menu-submenu:hover {
- border-bottom: none;
- }
- }
-
- .rightContainer {
- display: flex;
- align-items: center;
- }
-
- .button {
- width: 72px;
- height: 72px;
- line-height: 72px;
- text-align: center;
- font-size: 18px;
- cursor: pointer;
- transition: @transition-ease-in;
-
- &:hover {
- color: @primary-color;
- background-color: @hover-color;
- }
- }
-}
-
-.iconButton {
- width: 48px;
- height: 48px;
- display: flex !important;
- justify-content: center;
- align-items: center;
- border-radius: 24px;
- cursor: pointer;
- .background-hover();
-
- &:hover {
- .iconFont {
- color: @primary-color;
- }
- }
-
- & + .iconButton {
- margin-left: 8px;
- }
-
- .iconFont {
- color: #b2b0c7;
- font-size: 24px;
- }
-}
-
-.notification {
- padding: 24px 0;
- width: 320px;
- .notificationItem {
- transition: all 0.3s;
- padding: 12px 24px;
- cursor: pointer;
- &:hover {
- background-color: @hover-color;
- }
- }
- .clearButton {
- text-align: center;
- height: 48px;
- line-height: 48px;
- cursor: pointer;
- .background-hover();
- }
-}
-
-.notificationPopover {
- :global {
- .ant-popover-inner-content {
- padding: 0;
- }
- .ant-popover-arrow {
- display: none;
- }
- .ant-list-item-content {
- flex: 0;
- margin-left: 16px;
- }
- }
-}
-
-@media (max-width: 767px) {
- .header {
- width: 100% !important;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Sider.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Sider.js
deleted file mode 100644
index 766b52ac..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Sider.js
+++ /dev/null
@@ -1,64 +0,0 @@
-import Inula from 'inulajs';
-import { Switch, Layout } from 'antd';
-import { t } from 'utils/intl';
-import { Trans } from 'utils/intl';
-import { BulbOutlined } from '@ant-design/icons';
-import ScrollBar from '../ScrollBar';
-import config from 'utils/config';
-import SiderMenu from './SiderMenu';
-import styles from './Sider.module.less';
-
-function Sider({ menus, theme, isMobile, collapsed, onThemeChange, onCollapseChange }) {
- return (
-
-
-
-

- {!collapsed &&
{config.siteName}
}
-
-
-
-
-
-
-
-
- {!collapsed && (
-
-
-
- Switch Theme
-
-
-
- )}
-
- );
-}
-
-export default Sider;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Sider.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Sider.module.less
deleted file mode 100644
index 28dfa1fc..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/Sider.module.less
+++ /dev/null
@@ -1,114 +0,0 @@
-@import '../../themes/vars.less';
-
-.sider {
- box-shadow: fade(@primary-color, 10%) 0 0 28px 0;
- z-index: 10;
- :global {
- .ant-layout-sider-children {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- }
- }
-}
-
-.brand {
- z-index: 1;
- height: 72px;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 0 24px;
- box-shadow: 0 1px 9px -3px rgba(0, 0, 0, 0.2);
- .logo {
- display: flex;
- align-items: center;
- justify-content: center;
-
- img {
- width: 36px;
- margin-right: 8px;
- }
-
- h1 {
- vertical-align: text-bottom;
- font-size: 16px;
- text-transform: uppercase;
- display: inline-block;
- font-weight: 700;
- color: @primary-color;
- white-space: nowrap;
- margin-bottom: 0;
- .text-gradient();
-
- :local {
- animation: fadeRightIn 300ms @ease-in-out;
- animation-fill-mode: both;
- }
- }
- }
-}
-
-.menuContainer {
- height: ~'calc(100vh - 120px)';
- overflow-x: hidden;
- flex: 1;
- padding: 24px 0;
-
- &::-webkit-scrollbar-thumb {
- background-color: transparent;
- }
-
- &:hover {
- &::-webkit-scrollbar-thumb {
- background-color: rgba(0, 0, 0, 0.2);
- }
- }
-
- :global {
- .ant-menu-inline {
- border-right: none;
- }
- }
-}
-
-.darkTheme {
- color: rgb(102, 102, 102);
-}
-
-.switchTheme {
- width: 100%;
- height: 48px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 0 16px;
- overflow: hidden;
- transition: all 0.3s;
-
- span {
- white-space: nowrap;
- overflow: hidden;
- font-size: 12px;
- }
-
- :global {
- .anticon {
- min-width: 14px;
- margin-right: 4px;
- font-size: 14px;
- }
- }
-}
-
-@keyframes fadeLeftIn {
- 0% {
- transform: translateX(5px);
- opacity: 0;
- }
-
- 100% {
- transform: translateX(0);
- opacity: 1;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/SiderMenu.tsx b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/SiderMenu.tsx
deleted file mode 100644
index f6bb4aa0..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/SiderMenu.tsx
+++ /dev/null
@@ -1,95 +0,0 @@
-import Inula, { useState, Fragment } from 'inulajs';
-import { Menu } from 'antd';
-import { NavLink, withRouter } from 'inula-router';
-import { pathToRegexp } from 'path-to-regexp';
-import { arrayToTree, queryAncestors } from '../../utils';
-import iconMap from '../../utils/iconMap';
-import store from 'store';
-import { getStore } from '../../models/app-model';
-
-const { SubMenu } = Menu;
-
-function SiderMenu({ theme, menus, history, isMobile, onCollapseChange }) {
- const st = getStore();
-
- const [openKeys, setOpenKeys] = useState(store.get('openKeys') || []);
-
- const onOpenChange = openKeys => {
- const rootSubmenuKeys = menus.filter(_ => !_.menuParentId).map(_ => _.id);
-
- const latestOpenKey = openKeys.find(key => openKeys.indexOf(key) === -1);
-
- let newOpenKeys = openKeys;
- if (rootSubmenuKeys.indexOf(latestOpenKey) !== -1) {
- newOpenKeys = latestOpenKey ? [latestOpenKey] : [];
- }
-
- setOpenKeys(newOpenKeys);
-
- store.set('openKeys', newOpenKeys);
- };
-
- const generateMenus = data => {
- return data.map(item => {
- if (item.children) {
- return (
-
- {item.icon && iconMap[item.icon]}
- {item.name}
-
- }
- >
- {generateMenus(item.children)}
-
- );
- }
- return (
-
-
- {item.icon && iconMap[item.icon]}
- {item.name}
-
-
- );
- });
- };
-
- // Generating tree-structured data for menu content.
- const menuTree = arrayToTree(menus, 'id', 'menuParentId');
-
- // Find a menu that matches the pathname.
- const currentMenu = menus.find(_ => _.route && pathToRegexp(_.route).exec(history.location.pathname));
-
- // Find the key that should be selected according to the current menu.
- const selectedKeys = currentMenu ? queryAncestors(menus, currentMenu, 'menuParentId').map(_ => _.id) : [];
-
- const menuProps = st.collapsed
- ? {}
- : {
- openKeys: openKeys,
- };
-
- return (
-
- );
-}
-
-export default withRouter(SiderMenu);
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/index.js
deleted file mode 100644
index 934351a8..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Layout/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import Header from './Header';
-import Menu from './SiderMenu';
-import Bread from './Bread';
-import Sider from './Sider';
-
-export { Header, Menu, Bread, Sider };
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Loader/Loader.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Loader/Loader.js
deleted file mode 100644
index cbd7ccf8..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Loader/Loader.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import Inula from 'inulajs';
-import PropTypes from 'prop-types';
-import classNames from 'classnames';
-import styles from './Loader.module.less';
-
-const Loader = ({ spinning = false, fullScreen }) => {
- return (
-
- );
-};
-
-Loader.propTypes = {
- spinning: PropTypes.bool,
- fullScreen: PropTypes.bool,
-};
-
-export default Loader;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Loader/Loader.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Loader/Loader.module.less
deleted file mode 100644
index 11b4d417..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Loader/Loader.module.less
+++ /dev/null
@@ -1,69 +0,0 @@
-.loader {
- background-color: #fff;
- width: 100%;
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- z-index: 100000;
- display: flex;
- justify-content: center;
- align-items: center;
- opacity: 1;
- text-align: center;
-
- &.fullScreen {
- position: fixed;
- }
-
- .warpper {
- width: 100px;
- height: 100px;
- display: inline-flex;
- flex-direction: column;
- justify-content: space-around;
- }
-
- .inner {
- width: 40px;
- height: 40px;
- margin: 0 auto;
- text-indent: -12345px;
- border-top: 1px solid rgba(0, 0, 0, 0.08);
- border-right: 1px solid rgba(0, 0, 0, 0.08);
- border-bottom: 1px solid rgba(0, 0, 0, 0.08);
- border-left: 1px solid rgba(0, 0, 0, 0.7);
- border-radius: 50%;
- z-index: 100001;
-
- :local {
- animation: spinner 600ms infinite linear;
- }
- }
-
- .text {
- width: 100px;
- height: 20px;
- text-align: center;
- font-size: 12px;
- letter-spacing: 4px;
- color: #000;
- }
-
- &.hidden {
- z-index: -1;
- opacity: 0;
- transition:
- opacity 1s ease 0.5s,
- z-index 0.1s ease 1.5s;
- }
-}
-@keyframes spinner {
- 0% {
- transform: rotate(0deg);
- }
-
- 100% {
- transform: rotate(360deg);
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Loader/package.json b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Loader/package.json
deleted file mode 100644
index b1718b55..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Loader/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "name": "Loader",
- "version": "0.0.0",
- "private": true,
- "main": "Loader.js"
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Page/Page.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Page/Page.js
deleted file mode 100644
index 5c6926a1..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Page/Page.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import Inula, { Component } from 'inulajs';
-import PropTypes from 'prop-types';
-import classnames from 'classnames';
-import Loader from '../Loader';
-import styles from './Page.module.less';
-
-export default class Page extends Component {
- render() {
- const { className, children, loading = false, inner = false } = this.props;
- const loadingStyle = {
- height: 'calc(100vh - 184px)',
- overflow: 'hidden',
- };
- return (
-
- {loading ? : ''}
- {children}
-
- );
- }
-}
-
-Page.propTypes = {
- className: PropTypes.string,
- children: PropTypes.node,
- loading: PropTypes.bool,
- inner: PropTypes.bool,
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Page/Page.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Page/Page.module.less
deleted file mode 100644
index fa8713aa..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Page/Page.module.less
+++ /dev/null
@@ -1,16 +0,0 @@
-@import '../../themes/vars.less';
-
-.contentInner {
- background: #fff;
- padding: 24px;
- box-shadow: @shadow-1;
- min-height: ~'calc(100vh - 230px)';
- position: relative;
-}
-
-@media (max-width: 767px) {
- .contentInner {
- padding: 12px;
- min-height: ~'calc(100vh - 160px)';
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Page/package.json b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Page/package.json
deleted file mode 100644
index 0b7aa2d8..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/Page/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "name": "Page",
- "version": "0.0.0",
- "private": true,
- "main": "Page.js"
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/ScrollBar/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/ScrollBar/index.js
deleted file mode 100644
index 3b171ce6..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/ScrollBar/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import ScrollBar from 'react-perfect-scrollbar';
-import 'react-perfect-scrollbar/dist/css/styles.css';
-import './index.less';
-
-export default ScrollBar;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/ScrollBar/index.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/ScrollBar/index.less
deleted file mode 100644
index 31e149bc..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/ScrollBar/index.less
+++ /dev/null
@@ -1,31 +0,0 @@
-:global {
- .ps--active-x > .ps__rail-x,
- .ps--active-y > .ps__rail-y {
- background-color: transparent;
- }
-
- .ps__rail-x:hover > .ps__thumb-x,
- .ps__rail-x:focus > .ps__thumb-x {
- height: 8px;
- }
-
- .ps__rail-y:hover > .ps__thumb-y,
- .ps__rail-y:focus > .ps__thumb-y {
- width: 8px;
- }
-
- .ps__rail-y,
- .ps__rail-x {
- z-index: 9;
- }
-
- .ps__thumb-y {
- width: 4px;
- right: 4px;
- }
-
- .ps__thumb-x {
- height: 4px;
- bottom: 4px;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/index.js
deleted file mode 100644
index f94f4ef5..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/components/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import FilterItem from './FilterItem';
-import DropOption from './DropOption';
-import Loader from './Loader';
-import ScrollBar from './ScrollBar';
-import GlobalFooter from './GlobalFooter';
-import Ellipsis from './Ellipsis';
-import * as MyLayout from './Layout';
-import Page from './Page';
-
-export { MyLayout, GlobalFooter, Ellipsis, FilterItem, DropOption, Loader, Page, ScrollBar };
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/BaseLayout.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/BaseLayout.js
deleted file mode 100644
index 253c2da3..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/BaseLayout.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import Inula, { Fragment } from 'inulajs';
-import { queryLayout } from 'utils';
-import config from 'utils/config';
-
-import PublicLayout from './PublicLayout';
-import PrimaryLayout from './PrimaryLayout';
-import { withRouter } from 'inula-router';
-import './BaseLayout.less';
-
-const LayoutMap = {
- primary: PrimaryLayout,
- public: PublicLayout,
-};
-
-function BaseLayout({ children, location }) {
- const Container = LayoutMap[queryLayout(config.layouts, location.pathname)];
-
- return (
-
- {children}
-
- );
-}
-
-export default withRouter(BaseLayout);
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/BaseLayout.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/BaseLayout.less
deleted file mode 100644
index ab1fdbd7..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/BaseLayout.less
+++ /dev/null
@@ -1,76 +0,0 @@
-@import '../themes/vars.less';
-@import '../themes/index.less';
-
-:global {
- #nprogress {
- pointer-events: none;
-
- .bar {
- background: @primary-color;
- position: fixed;
- z-index: 2048;
- top: 0;
- left: 0;
- right: 0;
- width: 100%;
- height: 2px;
- }
-
- .peg {
- display: block;
- position: absolute;
- right: 0;
- width: 100px;
- height: 100%;
- box-shadow:
- 0 0 10px @primary-color,
- 0 0 5px @primary-color;
- opacity: 1;
- transform: rotate(3deg) translate(0, -4px);
- }
-
- .spinner {
- display: block;
- position: fixed;
- z-index: 1031;
- top: 15px;
- right: 15px;
- }
-
- .spinner-icon {
- width: 18px;
- height: 18px;
- box-sizing: border-box;
- border: solid 2px transparent;
- border-top-color: @primary-color;
- border-left-color: @primary-color;
- border-radius: 50%;
-
- :local {
- animation: nprogress-spinner 400ms linear infinite;
- }
- }
- }
-
- .nprogress-custom-parent {
- overflow: hidden;
- position: relative;
-
- #nprogress {
- .bar,
- .spinner {
- position: absolute;
- }
- }
- }
-}
-
-@keyframes nprogress-spinner {
- 0% {
- transform: rotate(0deg);
- }
-
- 100% {
- transform: rotate(360deg);
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/PrimaryLayout.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/PrimaryLayout.module.less
deleted file mode 100644
index d10017fb..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/PrimaryLayout.module.less
+++ /dev/null
@@ -1,58 +0,0 @@
-@import '../themes/vars.less';
-
-.backTop {
- right: 50px;
-
- :global {
- .ant-back-top-content {
- background: @primary-color;
- opacity: 0.3;
- transition: all 0.3s;
- box-shadow: 0 0 15px 1px rgba(69, 65, 78, 0.1);
-
- &:hover {
- opacity: 1;
- }
- }
- }
-}
-
-.content {
- padding: 24px;
- min-height: ~'calc(100% - 72px)';
- // overflow-y: scroll;
-}
-
-.container {
- height: 100vh;
- flex: 1;
- width: ~'calc(100% - 256px)';
- overflow-y: scroll;
- overflow-x: hidden;
-}
-
-.footer {
- background: #fff;
- margin-top: 0;
- margin-bottom: 0;
- padding-top: 24px;
- padding-bottom: 24px;
- min-height: 72px;
-}
-
-@media (max-width: 767px) {
- .content {
- padding: 12px;
- }
-
- .backTop {
- right: 20px;
- bottom: 20px;
- }
-
- .container {
- height: 100vh;
- flex: 1;
- width: 100%;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/PrimaryLayout.tsx b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/PrimaryLayout.tsx
deleted file mode 100644
index 22796e4d..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/PrimaryLayout.tsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import Inula, { useEffect, Fragment } from 'inulajs';
-import PropTypes from 'prop-types';
-import { MyLayout, GlobalFooter } from '../components';
-import { BackTop, Layout, Drawer } from 'antd';
-
-import { pathToRegexp } from 'path-to-regexp';
-import { getLocale } from '../utils';
-import config from '../utils/config';
-import Error from '../pages/404';
-import styles from './PrimaryLayout.module.less';
-import store from 'store';
-import { getStore } from '../models/app-model';
-import { withRouter } from 'inula-router';
-
-const { Content } = Layout;
-const { Header, Bread, Sider } = MyLayout;
-
-function PrimaryLayout({ children, location, history }) {
- const st = getStore();
-
- useEffect(() => {
- st.query(history);
- }, []);
-
- const onCollapseChange = collapsed => {
- st.handleCollapseChange(collapsed);
- };
-
- const theme = st.theme;
- const collapsed = st.collapsed;
- const notifications = st.notifications;
- const user = store.get('user') || {};
- const permissions = st.permissions;
- const routeList = st.routeList || [];
-
- const lang = getLocale();
-
- const newRouteList =
- lang !== 'en'
- ? routeList.map(item => {
- const { name, ...other } = item;
- return {
- ...other,
- name: (item[lang] || {}).name || name,
- };
- })
- : routeList;
-
- // Find a route that matches the pathname.
- const currentRoute = newRouteList.find(_ => _.route && pathToRegexp(`${_.route}`).exec(location.pathname));
-
- // Query whether you have permission to enter this page
- const hasPermission = currentRoute ? permissions.visit.includes(currentRoute.id) : false;
-
- // MenuParentId is equal to -1 is not a available menu.
- const menus = newRouteList.filter(_ => _.menuParentId !== '-1');
-
- const headerProps = {
- menus,
- collapsed,
- notifications,
- onCollapseChange,
- avatar: user.avatar,
- username: user.username,
- fixed: config.fixedHeader,
- onAllNotificationsRead: () => {
- st.allNotificationsRead();
- },
- };
-
- const siderProps = {
- theme,
- menus,
- collapsed,
- onCollapseChange,
- onThemeChange: theme => {
- st.handleThemeChange(theme);
- },
- };
-
- return (
-
-
-
-
-
-
-
-
- {hasPermission ? children : }
-
- document.querySelector('#primaryLayout')} />
-
-
-
-
- );
-}
-
-export default withRouter(PrimaryLayout);
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/PublicLayout.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/PublicLayout.js
deleted file mode 100644
index 962ebb4e..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/PublicLayout.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default ({ children }) => {
- return children;
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/index.js
deleted file mode 100644
index 51fa6d2e..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/layouts/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import Inula, { Suspense } from 'inulajs';
-import { ConfigProvider } from 'antd';
-import { IntlProvider } from 'inula-intl';
-import { getLocale } from '../utils';
-import BaseLayout from './BaseLayout';
-import { Route, withRouter } from 'inula-router';
-import { getRoutes } from '../pages/routes';
-import { getLangResource } from '../utils/intl';
-
-function Layout() {
- let language = getLocale();
-
- let langResource = getLangResource(language);
-
- const routes = getRoutes();
-
- return (
-
-
-
-
-
- {routes[0].childRoutes.map(item => {
- return ;
- })}
-
-
-
-
-
- );
-}
-
-export default withRouter(Layout);
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/locales/en/messages.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/locales/en/messages.js
deleted file mode 100644
index c6dbd55a..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/locales/en/messages.js
+++ /dev/null
@@ -1,54 +0,0 @@
-export default {
- '/dashboard': '/dashboard',
- 'Add Param': 'Add Param',
- Address: 'Address',
- Age: 'Age',
- 'Are you sure delete this record?': 'Are you sure delete this record?',
- Author: 'Author',
- Avatar: 'Avatar',
- Categories: 'Categories',
- 'Clear notifications': 'Clear notifications',
- Comments: 'Comments',
- Create: 'Create',
- 'Create User': 'Create User',
- CreateTime: 'CreateTime',
- Dark: 'Dark',
- Delete: 'Delete',
- Email: 'Email',
- Female: 'Female',
- Gender: 'Gender',
- 'Hi,': 'Hi,',
- Image: 'Image',
- Light: 'Light',
- Male: 'Male',
- Name: 'Name',
- NickName: 'NickName',
- 'Not Found': 'Not Found',
- Operation: 'Operation',
- Params: 'Params',
- Password: 'Password',
- Phone: 'Phone',
- 'Pick an address': 'Pick an address',
- 'Please pick an address': 'Please pick an address',
- Published: 'Published',
- 'Publish Date': 'Publish Date',
- Reset: 'Reset',
- Search: 'Search',
- 'Search Name': 'Search Name',
- Send: 'Send',
- 'Sign in': 'Sign in',
- 'Sign out': 'Sign out',
- 'Switch Theme': 'Switch Theme',
- Tags: 'Tags',
- 'The input is not valid E-mail!': 'The input is not valid E-mail!',
- 'The input is not valid phone!': 'The input is not valid phone!',
- Title: 'Title',
- Total: 'Total {total} Items',
- Unpublished: 'Unpublished',
- Update: 'Update',
- 'Update User': 'Update User',
- Username: 'Username',
- Views: 'Views',
- Visibility: 'Visibility',
- 'You have viewed all notifications.': 'You have viewed all notifications.',
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/locales/pt-br/messages.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/locales/pt-br/messages.js
deleted file mode 100644
index bbbab040..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/locales/pt-br/messages.js
+++ /dev/null
@@ -1,54 +0,0 @@
-export default {
- '/dashboard': '/dashboard',
- 'Add Param': 'Add Parametro',
- Address: 'Endereço',
- Age: 'Ano',
- 'Are you sure delete this record?': 'Tem certeza de excluir este registro?',
- Author: 'Autor',
- Avatar: 'Avatar',
- Categories: 'Categorias',
- 'Clear notifications': 'limpar notificações',
- Comments: 'Comentarios',
- Create: 'Criar',
- 'Create User': 'Criar Usuário',
- CreateTime: 'CreateTime',
- Dark: 'Escuro',
- Delete: 'Deletar',
- Email: 'Email',
- Female: 'Feminino',
- Gender: 'Genero',
- 'Hi,': 'Olá,',
- Image: 'Imagem',
- Light: 'Claro',
- Male: 'masculino',
- Name: 'Nome',
- NickName: 'NickName',
- 'Not Found': 'Não Encontrado',
- Operation: 'Operation',
- Params: 'Parametros',
- Password: 'Senha',
- Phone: 'Fone',
- 'Pick an address': 'Escolha um endereço',
- 'Please pick an address': 'Por favor, escolha um endereço',
- Published: 'Publicado',
- 'Publish Date': 'Data de publicação',
- Reset: 'Reset',
- Search: 'procurar',
- 'Search Name': 'Search Name',
- Send: 'Enviar',
- 'Sign in': 'Sign in',
- 'Sign out': 'Sign out',
- 'Switch Theme': 'Trocar tema',
- Tags: 'Tags',
- 'The input is not valid E-mail!': 'Não é um E-mail valido!',
- 'The input is not valid phone!': 'Não é um telefone Valido!',
- Title: 'Titulo',
- Total: 'Total {total} Items',
- Unpublished: 'Não publicado',
- Update: 'Atualizar',
- 'Update User': 'Atualizar Usuário',
- Username: 'Usuário',
- Views: 'visualizações',
- Visibility: 'Visibilidade',
- 'You have viewed all notifications.': 'Você visualizou todas as notificações.',
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/locales/zh/messages.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/locales/zh/messages.js
deleted file mode 100644
index fb51ae8c..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/locales/zh/messages.js
+++ /dev/null
@@ -1,54 +0,0 @@
-export default {
- '/dashboard': '/zh/dashboard',
- 'Add Param': '添加参数',
- Address: '地址',
- Age: '年龄',
- 'Are you sure delete this record?': '您确定要删除这条记录吗?',
- Author: '作者',
- Avatar: '头像',
- Categories: '类别',
- 'Clear notifications': '清空消息',
- Comments: '评论数',
- Create: '创建',
- 'Create User': '创建用户',
- CreateTime: '创建时间',
- Dark: '暗',
- Delete: '删除',
- Email: '电子邮件',
- Female: '女',
- Gender: '性别',
- 'Hi,': '你好,',
- Image: '图像',
- Light: '明',
- Male: '男性',
- Name: '名字',
- NickName: '昵称',
- 'Not Found': '未找到',
- Operation: '操作',
- Params: '参数',
- Password: '密码',
- Phone: '电话',
- 'Pick an address': '选择地址',
- 'Please pick an address': '选择地址',
- Published: '已发布',
- 'Publish Date': '发布日期',
- Reset: '重置',
- Search: '搜索',
- 'Search Name': '搜索名字',
- Send: '发送',
- 'Sign in': '登录',
- 'Sign out': '退出登录',
- 'Switch Theme': '切换主题',
- Tags: '标签',
- 'The input is not valid E-mail!': '输入的电子邮件无效!',
- 'The input is not valid phone!': '输入无效的手机!',
- Title: '标题',
- Total: '总共 {total} 条记录',
- Unpublished: '未发布',
- Update: '更新',
- 'Update User': '更新用户',
- Username: '用户名',
- Views: '浏览数',
- Visibility: '可见性',
- 'You have viewed all notifications.': '您已查看所有通知',
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/main.jsx b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/main.jsx
deleted file mode 100644
index 05e07a96..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/main.jsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import Inula from 'inulajs';
-import { BrowserRouter } from 'inula-router';
-import config from './utils/config';
-import 'antd/dist/antd.css';
-
-import Layout from './layouts';
-
-document.title = config.siteName;
-
-Inula.render(
-
-
- ,
- document.getElementsByTagName('body')[0]
-);
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/models/app-model.ts b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/models/app-model.ts
deleted file mode 100644
index 05c5cd53..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/models/app-model.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import store from 'store';
-import { pathToRegexp } from 'path-to-regexp';
-import { ROLE_TYPE } from '../utils/constant';
-import api from '../services';
-// @ts-ignore
-const { queryRouteList, queryUserInfo } = api;
-
-import { createStore } from 'inulajs';
-
-const goDashboard = history => {
- if (pathToRegexp(['/', '/login']).exec(window.location.pathname)) {
- history.push({
- pathname: '/dashboard',
- });
- }
-};
-
-export const getStore = createStore({
- id: 'app',
- state: {
- routeList: [],
- permissions: { visit: [] },
- locationPathname: '',
- locationQuery: {},
- theme: store.get('theme') || 'light',
- collapsed: store.get('collapsed') || false,
- notifications: [
- {
- title: 'New User is registered.',
- date: new Date(Date.now() - 10000000),
- },
- {
- title: 'Application has been approved.',
- date: new Date(Date.now() - 50000000),
- },
- ],
- },
- actions: {
- handleThemeChange(state, val) {
- store.set('theme', val);
- state.theme = val;
- },
-
- handleCollapseChange(state, val) {
- store.set('collapsed', val);
- state.collapsed = val;
- },
-
- allNotificationsRead(state) {
- state.notifications = [];
- },
-
- async query(state, history) {
- const locationPathname = state.locationPathname;
- const { success, user } = await queryUserInfo();
- if (success && user) {
- const { list } = await queryRouteList();
- const { permissions } = user;
- let routeList = list;
- if (permissions.role === ROLE_TYPE.ADMIN || permissions.role === ROLE_TYPE.DEVELOPER) {
- permissions.visit = list.map(item => item.id);
- } else {
- routeList = list.filter(item => {
- const cases = [
- permissions.visit.includes(item.id),
- item.mpid ? permissions.visit.includes(item.mpid) || item.mpid === '-1' : true,
- item.bpid ? permissions.visit.includes(item.bpid) : true,
- ];
- return cases.every(_ => _);
- });
- }
- state.routeList = routeList;
- state.permissions = permissions;
- store.set('user', user);
- goDashboard(history);
- }
- },
- },
-});
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/404.jsx b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/404.jsx
deleted file mode 100644
index 4c13bb00..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/404.jsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import Inula from 'inulajs';
-import { FrownOutlined } from '@ant-design/icons';
-import { Page } from 'components';
-import styles from './404.module.less';
-
-const Error = () => (
-
-
-
-
404 Not Found
-
-
-);
-
-export default Error;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/404.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/404.module.less
deleted file mode 100644
index f5300b1f..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/404.module.less
+++ /dev/null
@@ -1,19 +0,0 @@
-.error {
- color: black;
- text-align: center;
- position: absolute;
- top: 30%;
- margin-top: -50px;
- left: 50%;
- margin-left: -100px;
- width: 200px;
-
- :global .anticon {
- font-size: 48px;
- margin-bottom: 16px;
- }
-
- h1 {
- font-family: cursive;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/index.js
deleted file mode 100644
index 36274900..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import NumberCard from './numberCard';
-import Quote from './quote';
-import Sales from './sales';
-import Weather from './weather';
-
-export { NumberCard, Quote, Sales, Weather };
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/numberCard.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/numberCard.js
deleted file mode 100644
index 683b5da4..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/numberCard.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import Inula from 'inulajs';
-import PropTypes from 'prop-types';
-import { Card } from 'antd';
-import iconMap from 'utils/iconMap';
-import styles from './numberCard.module.less';
-
-function NumberCard({ icon, color, title, number }) {
- return (
-
-
- {iconMap[icon]}
-
-
-
{title || 'No Title'}
-
- {number}
-
-
-
- );
-}
-
-NumberCard.propTypes = {
- icon: PropTypes.string,
- color: PropTypes.string,
- title: PropTypes.string,
- number: PropTypes.number,
- countUp: PropTypes.object,
-};
-
-export default NumberCard;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/numberCard.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/numberCard.module.less
deleted file mode 100644
index b8c74ca8..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/numberCard.module.less
+++ /dev/null
@@ -1,33 +0,0 @@
-@import '../../../themes/vars';
-
-.numberCard {
- padding: 32px;
- margin-bottom: 24px;
- cursor: pointer;
-
- .iconWarp {
- font-size: 54px;
- float: left;
- }
-
- .content {
- width: 100%;
- padding-left: 78px;
-
- .title {
- line-height: 16px;
- font-size: 16px;
- margin-bottom: 8px;
- height: 16px;
- .text-overflow();
- }
-
- .number {
- line-height: 32px;
- font-size: 24px;
- height: 32px;
- .text-overflow();
- margin-bottom: 0;
- }
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/quote.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/quote.js
deleted file mode 100644
index 6427e999..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/quote.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import Inula from 'inulajs';
-import PropTypes from 'prop-types';
-import styles from './quote.module.less';
-
-function Quote({ name, content, title, avatar }) {
- return (
-
- );
-}
-
-Quote.propTypes = {
- name: PropTypes.string,
- content: PropTypes.string,
- title: PropTypes.string,
- avatar: PropTypes.string,
-};
-
-export default Quote;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/quote.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/quote.module.less
deleted file mode 100644
index 7d60b714..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/quote.module.less
+++ /dev/null
@@ -1,52 +0,0 @@
-@import '../../../themes/vars';
-
-.quote {
- color: #fff;
- height: 100%;
- width: 100%;
- padding: 24px;
- font-size: 16px;
- font-weight: 700;
-
- .inner {
- text-overflow: ellipsis;
- word-wrap: normal;
- display: -webkit-box;
- -webkit-box-orient: vertical;
- -webkit-line-clamp: 4;
- overflow: hidden;
- text-indent: 24px;
- }
-
- .footer {
- position: relative;
- margin-top: 14px;
-
- .description {
- width: 100%;
-
- p {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- margin-right: 64px;
- text-align: right;
-
- &:last-child {
- font-weight: 100;
- }
- }
- }
-
- .avatar {
- width: 48px;
- height: 48px;
- background-position: center;
- background-size: cover;
- border-radius: 50%;
- position: absolute;
- right: 0;
- top: 0;
- }
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/sales.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/sales.js
deleted file mode 100644
index fe8c7732..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/sales.js
+++ /dev/null
@@ -1,93 +0,0 @@
-import Inula from 'inulajs';
-import PropTypes from 'prop-types';
-import classnames from 'classnames';
-import Color from '../../../utils/theme';
-// import { Color } from '../../../utils/theme';
-import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';
-import styles from './sales.module.less';
-
-function Sales({ data }) {
- return (
-
-
Yearly Sales
-
-
-
-
-
- );
-}
-
-Sales.propTypes = {
- data: PropTypes.array,
-};
-
-export default Sales;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/sales.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/sales.module.less
deleted file mode 100644
index 5de99060..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/sales.module.less
+++ /dev/null
@@ -1,50 +0,0 @@
-@import '../../../themes/vars';
-
-.sales {
- overflow: hidden;
- .title {
- margin-left: 32px;
- font-size: 16px;
- }
-}
-
-.radiusdot {
- width: 12px;
- height: 12px;
- margin-right: 8px;
- border-radius: 50%;
- display: inline-block;
-}
-
-.legend {
- text-align: right;
- color: #999;
- font-size: 14px;
-
- li {
- height: 48px;
- line-height: 48px;
- display: inline-block;
-
- & + li {
- margin-left: 24px;
- }
- }
-}
-
-.tooltip {
- background: #fff;
- padding: 20px;
- font-size: 14px;
-
- .tiptitle {
- font-weight: 700;
- font-size: 16px;
- margin-bottom: 8px;
- }
-
- .tipitem {
- height: 32px;
- line-height: 32px;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/weather.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/weather.js
deleted file mode 100644
index c674e572..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/weather.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import Inula from 'inulajs';
-import PropTypes from 'prop-types';
-import { Spin } from 'antd';
-import styles from './weather.module.less';
-
-function Weather({ city, icon, dateTime, temperature, name, loading }) {
- return (
-
-
-
-
-
{`${temperature}°`}
-
- {city},{dateTime}
-
-
-
-
- );
-}
-
-Weather.propTypes = {
- city: PropTypes.string,
- icon: PropTypes.string,
- dateTime: PropTypes.string,
- temperature: PropTypes.string,
- name: PropTypes.string,
- loading: PropTypes.bool,
-};
-
-export default Weather;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/weather.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/weather.module.less
deleted file mode 100644
index 5ebec21c..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/components/weather.module.less
+++ /dev/null
@@ -1,48 +0,0 @@
-@import '../../../themes/vars';
-
-.weather {
- color: #fff;
- height: 204px;
- padding: 24px;
- justify-content: space-between;
- display: flex;
- font-size: 14px;
-
- .left {
- display: flex;
- flex-direction: column;
- width: 64px;
- padding-top: 55px;
-
- .icon {
- width: 64px;
- height: 64px;
- background-position: center;
- background-size: contain;
- }
-
- p {
- margin-top: 16px;
- }
- }
-
- .right {
- display: flex;
- flex-direction: column;
- width: 50%;
-
- .temperature {
- font-size: 36px;
- text-align: right;
- height: 64px;
- color: #fff;
- }
-
- .description {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- text-align: right;
- }
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/index.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/index.module.less
deleted file mode 100644
index 596b1c45..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/index.module.less
+++ /dev/null
@@ -1,27 +0,0 @@
-.dashboard {
- position: relative;
- :global {
- .ant-card {
- border-radius: 0;
- margin-bottom: 24px;
- &:hover {
- box-shadow: 4px 4px 40px rgba(0, 0, 0, 0.05);
- }
- }
- .ant-card-body {
- overflow-x: hidden;
- }
- }
-
- .weather {
- &:hover {
- box-shadow: 4px 4px 40px rgba(143, 201, 251, 0.6);
- }
- }
-
- .quote {
- &:hover {
- box-shadow: 4px 4px 40px rgba(246, 152, 153, 0.6);
- }
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/index.tsx b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/index.tsx
deleted file mode 100644
index 4049219f..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/index.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import Inula, { useEffect } from 'inulajs';
-import { Row, Col, Card } from 'antd';
-import Color from '../../utils/theme';
-import { Page, ScrollBar } from '../../components';
-import { NumberCard, Quote, Sales, Weather } from './components';
-import styles from './index.module.less';
-import { getStore } from './model';
-
-const bodyStyle = {
- bodyStyle: {
- height: 432,
- background: '#fff',
- },
-};
-
-function Dashboard() {
- const st = getStore();
-
- useEffect(() => {
- st.query();
- }, []);
-
- const weather = st.weather;
- const sales = st.sales;
- const quote = st.quote;
- const numbers = st.numbers;
-
- const numberCards = numbers.map((item, key) => (
-
-
-
- ));
-
- return (
-
-
- {numberCards}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-export default Dashboard;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/model.ts b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/model.ts
deleted file mode 100644
index df35178b..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/model.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import { parse } from 'qs';
-import api from '../../services';
-import { createStore } from 'inulajs';
-
-const { queryDashboard, queryWeather } = api;
-const avatar = '//cdn.antd-admin.zuiidea.com/bc442cf0cc6f7940dcc567e465048d1a8d634493198c4-sPx5BR_fw236.jpeg';
-
-export const getStore = createStore({
- id: 'dashboard',
- state: {
- weather: {
- city: '深圳',
- temperature: '30',
- name: '晴',
- icon: '//cdn.antd-admin.zuiidea.com/sun.png',
- },
- message: null,
- sales: [],
- quote: {
- avatar,
- },
- numbers: [],
- recentSales: [],
- comments: [],
- completed: [],
- browser: [],
- cpu: {},
- user: {
- avatar,
- },
- loading: false,
- },
- actions: {
- async query(state, payload) {
- state.loading = true;
- const data = await queryDashboard(parse(payload));
- state.loading = false;
-
- state.browser = data.browser;
- state.comments = data.comments;
- state.completed = data.completed;
- state.cpu = data.cpu;
- state.message = data.message;
- state.numbers = data.numbers;
- state.quote = data.quote;
- state.recentSales = data.recentSales;
- state.sales = data.sales;
- state.user = data.user;
- },
- async queryWeather(state, payload = {}) {
- payload.location = 'shenzhen';
- const result = await queryWeather(payload);
- const { success } = result;
- if (success) {
- const data = result.results[0];
- const weather = {
- city: data.location.name,
- temperature: data.now.temperature,
- name: data.now.text,
- icon: `//cdn.antd-admin.zuiidea.com/web/icons/3d_50/${data.now.code}.png`,
- };
-
- state.weather = weather;
- }
- },
- },
-});
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/services/dashboard.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/services/dashboard.js
deleted file mode 100644
index b832a809..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/services/dashboard.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { request, config } from 'utils';
-
-const { api } = config;
-const { dashboard } = api;
-
-export function query(params) {
- return request({
- url: dashboard,
- method: 'get',
- data: params,
- });
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/services/weather.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/services/weather.js
deleted file mode 100644
index 4af783e4..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/dashboard/services/weather.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { request, config } from 'utils';
-
-const { APIV1 } = config;
-
-export function query(params) {
- params.key = 'i7sau1babuzwhycn';
- return request({
- url: `${APIV1}/weather/now.json`,
- method: 'get',
- data: params,
- });
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/index.js
deleted file mode 100644
index 5d9b890f..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import Inula from 'inulajs';
-import { Redirect } from 'inula-router';
-
-function Index() {
- return ;
-}
-
-export default Index;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/routes.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/routes.js
deleted file mode 100644
index 6be8211f..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/routes.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import Inula, { lazy } from 'inulajs';
-
-export function getRoutes() {
- const routes = [
- {
- path: '/',
- component: lazy(() => import(/* webpackChunkName: 'layouts__index' */ '@/layouts/index.js')),
- childRoutes: [
- {
- path: '/404',
- component: lazy(() => import(/* webpackChunkName: 'p__404' */ '@/pages/404.jsx')),
- },
- {
- path: '/dashboard',
- component: lazy(() => import(/* webpackChunkName: 'p__dashboard__index' */ './dashboard/index.tsx')),
- },
- {
- path: '/user',
- component: lazy(() => import(/* webpackChunkName: 'p__user__index' */ '@/pages/user/index.tsx')),
- },
- ],
- },
- ];
-
- return routes;
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/Filter.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/Filter.js
deleted file mode 100644
index 41d34da1..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/Filter.js
+++ /dev/null
@@ -1,114 +0,0 @@
-import Inula, { useRef } from 'inulajs';
-import moment from 'moment';
-import { FilterItem } from 'components';
-import { Button, Row, Col, DatePicker, Form, Input, Cascader } from 'antd';
-import city from 'utils/city';
-import { Trans, t } from 'utils/intl';
-import styles from './Filter.module.less';
-
-const { Search } = Input;
-const { RangePicker } = DatePicker;
-
-const ColProps = {
- xs: 24,
- sm: 12,
- style: {
- marginBottom: 16,
- },
-};
-
-const TwoColProps = {
- ...ColProps,
- xl: 96,
-};
-
-function Filter({ onFilterChange, onAdd, filter }) {
- const formRef = useRef();
-
- const handleFields = fields => {
- const { createTime } = fields;
- if (createTime && createTime.length) {
- fields.createTime = [moment(createTime[0]).format('YYYY-MM-DD'), moment(createTime[1]).format('YYYY-MM-DD')];
- }
- return fields;
- };
-
- const handleSubmit = () => {
- const values = formRef.current.getFieldsValue();
- const fields = handleFields(values);
- onFilterChange(fields);
- };
-
- const handleReset = () => {
- const fields = formRef.current.getFieldsValue();
- for (let item in fields) {
- if ({}.hasOwnProperty.call(fields, item)) {
- if (fields[item] instanceof Array) {
- fields[item] = [];
- } else {
- fields[item] = undefined;
- }
- }
- }
- formRef.current.setFieldsValue(fields);
- handleSubmit();
- };
-
- const handleChange = (key, values) => {
- let fields = formRef.current.getFieldsValue();
- fields[key] = values;
- fields = handleFields(fields);
- onFilterChange(fields);
- };
-
- const { name, address } = filter;
-
- let initialCreateTime = [];
- if (filter.createTime && filter.createTime[0]) {
- initialCreateTime[0] = moment(filter.createTime[0]);
- }
- if (filter.createTime && filter.createTime[1]) {
- initialCreateTime[1] = moment(filter.createTime[1]);
- }
-
- return (
-
- );
-}
-
-export default Filter;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/Filter.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/Filter.module.less
deleted file mode 100644
index 0cd55ada..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/Filter.module.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.margin-right {
- margin-right: 16px;
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/List.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/List.js
deleted file mode 100644
index 412774ae..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/List.js
+++ /dev/null
@@ -1,104 +0,0 @@
-import Inula from 'inulajs';
-import { Table, Modal } from 'antd';
-import { DropOption } from 'components';
-import { t } from 'utils/intl';
-import { Trans } from 'utils/intl';
-import styles from './List.module.less';
-
-const { confirm } = Modal;
-
-function List({ onDeleteItem, onEditItem, ...tableProps }) {
- const handleMenuClick = (record, e) => {
- if (e.key === '1') {
- onEditItem(record);
- } else if (e.key === '2') {
- confirm({
- title: t`Are you sure delete this record?`,
- onOk() {
- onDeleteItem(record.id);
- },
- });
- }
- };
-
- const columns = [
- {
- title: Name,
- dataIndex: 'name',
- key: 'name',
- },
- {
- title: NickName,
- dataIndex: 'nickName',
- key: 'nickName',
- },
- {
- title: Age,
- dataIndex: 'age',
- width: '6%',
- key: 'age',
- },
- {
- title: Gender,
- dataIndex: 'isMale',
- key: 'isMale',
- width: '7%',
- render: text => {text ? 'Male' : 'Female'},
- },
- {
- title: Phone,
- dataIndex: 'phone',
- key: 'phone',
- },
- {
- title: Email,
- dataIndex: 'email',
- key: 'email',
- },
- {
- title: Address,
- dataIndex: 'address',
- key: 'address',
- },
- {
- title: CreateTime,
- dataIndex: 'createTime',
- key: 'createTime',
- },
- {
- title: Operation,
- key: 'operation',
- fixed: 'right',
- width: '8%',
- render: (text, record) => {
- return (
- handleMenuClick(record, e)}
- menuOptions={[
- { key: '1', name: t`Update` },
- { key: '2', name: t`Delete` },
- ]}
- />
- );
- },
- },
- ];
-
- return (
- t(`Total`, { total }),
- }}
- className={styles.table}
- bordered
- scroll={{ x: 1200 }}
- columns={columns}
- simple
- rowKey={record => record.id}
- />
- );
-}
-
-export default List;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/List.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/List.module.less
deleted file mode 100644
index 6d35765f..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/List.module.less
+++ /dev/null
@@ -1,7 +0,0 @@
-.table {
- :global {
- .ant-table td {
- white-space: nowrap;
- }
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/Modal.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/Modal.js
deleted file mode 100644
index e7969575..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/components/Modal.js
+++ /dev/null
@@ -1,104 +0,0 @@
-import Inula, { useRef } from 'inulajs';
-import { Form, Input, InputNumber, Radio, Modal, Cascader } from 'antd';
-import { t, Trans } from 'utils/intl';
-import city from 'utils/city';
-
-const FormItem = Form.Item;
-
-const formItemLayout = {
- labelCol: {
- span: 6,
- },
- wrapperCol: {
- span: 14,
- },
-};
-
-function UserModal({ item = {}, onOk, form, ...modalProps }) {
- const formRef = useRef();
-
- const handleOk = () => {
- formRef.current
- .validateFields()
- .then(values => {
- const data = {
- ...values,
- key: item.key,
- };
- data.address = data.address.join(' ');
- onOk(data);
- })
- .catch(errorInfo => {
- console.log(errorInfo);
- });
- };
-
- return (
-
-
-
- );
-}
-
-export default UserModal;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/id/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/id/index.js
deleted file mode 100644
index 9b3a862f..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/id/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import Inula, { PureComponent } from 'inulajs';
-import PropTypes from 'prop-types';
-import { Page } from 'components';
-import styles from './index.module.less';
-
-class UserDetail extends PureComponent {
- render() {
- const { userDetail } = this.props;
- const { data } = userDetail;
- const content = [];
- for (let key in data) {
- if ({}.hasOwnProperty.call(data, key)) {
- content.push(
-
-
{key}
-
{String(data[key])}
-
- );
- }
- }
- return (
-
- {content}
-
- );
- }
-}
-
-UserDetail.propTypes = {
- userDetail: PropTypes.object,
-};
-
-export default UserDetail;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/id/index.module.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/id/index.module.less
deleted file mode 100644
index fa9c7d40..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/id/index.module.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.content {
- line-height: 2.4;
- font-size: 13px;
-
- .item {
- display: flex;
-
- & > div {
- &:first-child {
- width: 100px;
- }
- }
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/id/models/detail.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/id/models/detail.js
deleted file mode 100644
index 4b73d369..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/id/models/detail.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const { pathToRegexp } = require('path-to-regexp');
-import api from 'api';
-
-const { queryUser } = api;
-
-export default {
- namespace: 'userDetail',
-
- state: {
- data: {},
- },
-
- subscriptions: {
- setup({ dispatch, history }) {
- history.listen(({ pathname }) => {
- const match = pathToRegexp('/user/:id').exec(pathname);
- if (match) {
- dispatch({ type: 'query', payload: { id: match[1] } });
- }
- });
- },
- },
-
- effects: {
- *query({ payload }, { call, put }) {
- const data = yield call(queryUser, payload);
- const { success, message, status, ...other } = data;
- if (success) {
- yield put({
- type: 'querySuccess',
- payload: {
- data: other,
- },
- });
- } else {
- throw data;
- }
- },
- },
-
- reducers: {
- querySuccess(state, { payload }) {
- const { data } = payload;
- return {
- ...state,
- data,
- };
- },
- },
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/index.tsx b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/index.tsx
deleted file mode 100644
index e2461885..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/index.tsx
+++ /dev/null
@@ -1,152 +0,0 @@
-import Inula, { useEffect } from 'inulajs';
-import { Row, Col, Button, Popconfirm } from 'antd';
-import { Page } from '../../components';
-import { stringify } from 'qs';
-import List from './components/List';
-import Filter from './components/Filter';
-import Modal from './components/Modal';
-import { getStore } from './model';
-import { pathToRegexp } from 'path-to-regexp';
-import { t } from '../../utils/intl';
-import { parseSearch } from '../../utils';
-
-function User({ location, history }) {
- const st = getStore();
-
- useEffect(() => {
- if (pathToRegexp('/user').exec(location.pathname)) {
- const payload = {
- page: 1,
- pageSize: 10,
- ...parseSearch(location.search),
- };
- st.query(payload);
- }
- }, [st.pagination.total]);
-
- const handleRefresh = newQuery => {
- const { search, pathname } = location;
-
- const params = {
- ...parseSearch(search),
- ...newQuery,
- };
-
- history.push({
- pathname,
- search: stringify(params, { arrayFormat: 'repeat' }),
- });
-
- st.query(params);
- };
-
- const handleDeleteItems = () => {
- st.multiDelete({
- ids: st.selectedRowKeys,
- });
-
- handleRefresh({
- page:
- st.list.length === st.selectedRowKeys.length && st.pagination.current > 1
- ? st.pagination.current - 1
- : st.pagination.current,
- });
- };
-
- const modalProps = () => {
- return {
- item: st.modalType === 'create' ? {} : st.currentItem,
- visible: st.modalVisible,
- destroyOnClose: true,
- maskClosable: false,
- confirmLoading: false,
- title: `${st.modalType === 'create' ? t`Create User` : t`Update User`}`,
- centered: true,
- onOk: data => {
- st[st.modalType](data);
- handleRefresh();
- },
- onCancel() {
- st.hideModal();
- },
- };
- };
-
- const listProps = () => {
- return {
- dataSource: st.list,
- loading: false,
- pagination: st.pagination,
- onChange: page => {
- const { search } = location;
- const params = {
- ...parseSearch(search),
- page: page.current,
- pageSize: page.pageSize,
- };
-
- handleRefresh(params);
- },
- onDeleteItem: id => {
- st.delete(id);
- handleRefresh({
- page: st.list.length === 1 && st.pagination.current > 1 ? st.pagination.current - 1 : st.pagination.current,
- });
- },
- onEditItem: item => {
- st.showModal({
- modalType: 'update',
- currentItem: item,
- });
- },
- rowSelection: {
- selectedRowKeys: st.selectedRowKeys,
- onChange: keys => {
- st.selectedRowKeys = keys;
- },
- },
- };
- };
-
- const filterProps = () => {
- const { search } = location;
-
- return {
- filter: {
- ...parseSearch(search),
- },
- onFilterChange: value => {
- handleRefresh({
- ...value,
- });
- },
- onAdd: () => {
- st.showModal({
- modalType: 'create',
- });
- },
- };
- };
-
- return (
-
-
- {st.selectedRowKeys.length > 0 && (
-
-
- {`Selected ${st.selectedRowKeys.length} items `}
-
-
-
-
-
- )}
-
-
-
- );
-}
-
-export default User;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/model.ts b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/model.ts
deleted file mode 100644
index fd2b883c..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/pages/user/model.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import api from '../../services';
-import { createStore } from 'inulajs';
-
-const { queryUserList, createUser, removeUser, updateUser, removeUserList } = api;
-
-export const getStore = createStore({
- id: 'user',
-
- state: {
- currentItem: {
- id: 0,
- },
- modalVisible: false,
- modalType: 'create',
- selectedRowKeys: [],
-
- list: [],
- pagination: {
- showSizeChanger: true,
- showQuickJumper: true,
- current: 1,
- total: 0,
- pageSize: 10,
- },
- loading: false,
- },
-
- actions: {
- async query(state, payload) {
- state.loading = true;
- const data = await queryUserList(payload);
- state.loading = false;
- if (data) {
- state.list = data.data;
- state.pagination.current = Number(payload.page) || 1;
- state.pagination.pageSize = Number(payload.pageSize) || 10;
- state.pagination.total = data.total;
- }
- },
-
- async delete(state, payload) {
- const data = await removeUser({ id: payload });
- if (data.success) {
- state.selectedRowKeys = state.selectedRowKeys.filter(_ => _ !== payload);
- } else {
- throw data;
- }
- },
-
- async multiDelete(state, payload) {
- const data = await removeUserList(payload);
- if (data.success) {
- state.selectedRowKeys = [];
- } else {
- throw data;
- }
- },
-
- async create(state, payload) {
- const data = await createUser(payload);
- if (data.success) {
- this.hideModal();
- } else {
- throw data;
- }
- },
-
- async update(state, payload) {
- const newUser = { ...payload, id: state.currentItem.id };
- const data = await updateUser(newUser);
- if (data.success) {
- this.hideModal();
- } else {
- throw data;
- }
- },
-
- showModal(state, payload) {
- state.modalVisible = true;
- if (state.modalType !== undefined) {
- state.modalType = payload.modalType;
- }
- if (payload.currentItem !== undefined) {
- state.currentItem = payload.currentItem;
- }
- },
-
- hideModal(state) {
- state.modalVisible = false;
- },
- },
-});
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/plugins/onError.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/plugins/onError.js
deleted file mode 100644
index f9cb6260..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/plugins/onError.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { message } from 'antd';
-
-export default {
- onError(e, a) {
- e.preventDefault();
- if (e.message) {
- message.error(e.message);
- } else {
- /* eslint-disable */
- console.error(e);
- }
- },
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/services/api.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/services/api.js
deleted file mode 100644
index 1dddf50f..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/services/api.js
+++ /dev/null
@@ -1,16 +0,0 @@
-export default {
- queryRouteList: '/routes',
-
- queryUserInfo: '/user',
-
- queryUser: '/user/:id',
- queryUserList: '/users',
- updateUser: 'Patch /user/:id',
- createUser: 'POST /user',
- removeUser: 'DELETE /user/:id',
- removeUserList: 'POST /users/delete',
-
- queryPostList: '/posts',
-
- queryDashboard: '/dashboard',
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/services/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/services/index.js
deleted file mode 100644
index ef4c9bf1..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/services/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import request from 'utils/request';
-import config from 'utils/config';
-
-import api from './api';
-
-const gen = params => {
- let url = config.apiPrefix + params;
- let method = 'GET';
-
- const paramsArray = params.split(' ');
- if (paramsArray.length === 2) {
- method = paramsArray[0];
- url = config.apiPrefix + paramsArray[1];
- }
-
- return function (data) {
- return request({
- url,
- data,
- method,
- });
- };
-};
-
-const APIFunction = {};
-for (const key in api) {
- APIFunction[key] = gen(api[key]);
-}
-
-APIFunction.queryWeather = params => {
- params.key = 'i7sau1babuzwhycn';
- return request({
- url: `${config.apiPrefix}/weather/now.json`,
- data: params,
- });
-};
-
-export default APIFunction;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/default.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/default.less
deleted file mode 100644
index 78678a50..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/default.less
+++ /dev/null
@@ -1,16 +0,0 @@
-// 本文件是对 ant-design:
-// https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less
-// 相应变量值的覆盖
-// 注意:只需写出要覆盖的变量即可(不需要覆盖的变量不要写)
-
-@import '../../../node_modules/antd/lib/style/themes/default.less';
-
-@border-radius-base: 3px;
-@border-radius-sm: 2px;
-@shadow-color: rgba(0, 0, 0, 0.05);
-@shadow-1-down: 4px 4px 40px @shadow-color;
-@border-color-split: #f4f4f4;
-@border-color-base: #e5e5e5;
-@font-size-base: 13px;
-@text-color: #666;
-@hover-color: #f9f9fc;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/index.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/index.less
deleted file mode 100644
index 9b0df9b6..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/index.less
+++ /dev/null
@@ -1,124 +0,0 @@
-@import './vars.less';
-
-body {
- height: 100%;
- overflow-y: hidden;
- background-color: #f8f8f8;
-}
-
-::-webkit-scrollbar-thumb {
- background-color: #e6e6e6;
-}
-
-::-webkit-scrollbar {
- width: 8px;
- height: 8px;
-}
-
-.margin-right {
- margin-right: 16px;
-}
-
-:global {
- .ant-breadcrumb {
- & > span {
- &:last-child {
- color: #999;
- font-weight: normal;
- }
- }
- }
-
- .ant-breadcrumb-link {
- .anticon + span {
- margin-left: 4px;
- }
- }
-
- .ant-table {
- .ant-table-thead > tr > th {
- text-align: center;
- }
-
- .ant-table-tbody > tr > td {
- text-align: center;
- }
-
- &.ant-table-small {
- .ant-table-thead > tr > th {
- background: #f7f7f7;
- }
-
- .ant-table-body > table {
- padding: 0;
- }
- }
- }
-
- .ant-table-pagination {
- float: none !important;
- display: table;
- margin: 16px auto !important;
- }
-
- .ant-popover-inner {
- border: none;
- border-radius: 0;
- box-shadow: 0 0 20px rgba(100, 100, 100, 0.2);
- }
-
- .ant-form-item-control {
- vertical-align: middle;
- }
-
- .ant-modal-mask {
- background-color: rgba(55, 55, 55, 0.2);
- }
-
- .ant-modal-content {
- box-shadow: none;
- }
-
- .ant-select-dropdown-menu-item {
- padding: 12px 16px !important;
- }
-
- a:focus {
- text-decoration: none;
- }
-
- .ant-table-layout-fixed table {
- table-layout: auto;
- }
-}
-@media (min-width: 1600px) {
- :global {
- .ant-col-xl-48 {
- width: 20%;
- }
-
- .ant-col-xl-96 {
- width: 40%;
- }
- }
-}
-@media (max-width: 767px) {
- :global {
- .ant-pagination-item,
- .ant-pagination-next,
- .ant-pagination-options,
- .ant-pagination-prev {
- margin-bottom: 8px;
- }
-
- .ant-card {
- .ant-card-head {
- padding: 0 12px;
- }
-
- .ant-card-body {
- padding: 12px;
- }
- }
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/mixin.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/mixin.less
deleted file mode 100644
index dc01f6b6..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/mixin.less
+++ /dev/null
@@ -1,35 +0,0 @@
-@import './default.less';
-
-@dark-half: #494949;
-@purple: #d897eb;
-@shadow-1: 4px 4px 20px 0 rgba(0, 0, 0, 0.01);
-@shadow-2: 4px 4px 40px 0 rgba(0, 0, 0, 0.05);
-@transition-ease-in: all 0.3s ease-out;
-@transition-ease-out: all 0.3s ease-out;
-@ease-in: ease-in;
-
-.text-overflow {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
-}
-
-.text-gradient {
- background-image: -webkit-gradient(
- linear,
- 37.219838% 34.532506%,
- 36.425669% 93.178216%,
- from(#29cdff),
- to(#0a60ff),
- color-stop(0.37, #148eff)
- );
- -webkit-background-clip: text;
- -webkit-text-fill-color: transparent;
-}
-
-.background-hover {
- transition: @transition-ease-in;
- &:hover {
- background-color: @hover-color;
- }
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/vars.less b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/vars.less
deleted file mode 100644
index b8bb2bc6..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/themes/vars.less
+++ /dev/null
@@ -1,2 +0,0 @@
-@import './default.less';
-@import './mixin.less';
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/city.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/city.js
deleted file mode 100644
index 78aa870d..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/city.js
+++ /dev/null
@@ -1,4051 +0,0 @@
-/*
- ## Address 字典数据
- 字典数据来源 http://www.atatech.org/articles/30028?rnd=254259856
- 国标 省(市)级行政区划码表
- 华北 北京市 天津市 河北省 山西省 内蒙古自治区
- 东北 辽宁省 吉林省 黑龙江省
- 华东 上海市 江苏省 浙江省 安徽省 福建省 江西省 山东省
- 华南 广东省 广西壮族自治区 海南省
- 华中 河南省 湖北省 湖南省
- 西南 重庆市 四川省 贵州省 云南省 西藏自治区
- 西北 陕西省 甘肃省 青海省 宁夏回族自治区 新疆维吾尔自治区
- 港澳台 香港特别行政区 澳门特别行政区 台湾省
-
- **排序**
-
- ```js
- var map = {}
- _.each(_.keys(REGIONS),function(id){
- map[id] = REGIONS[ID]
- })
- JSON.stringify(map)
- ```
-*/
-let DICT = {
- 110000: '北京',
- 110100: '北京市',
- 110101: '东城区',
- 110102: '西城区',
- 110105: '朝阳区',
- 110106: '丰台区',
- 110107: '石景山区',
- 110108: '海淀区',
- 110109: '门头沟区',
- 110111: '房山区',
- 110112: '通州区',
- 110113: '顺义区',
- 110114: '昌平区',
- 110115: '大兴区',
- 110116: '怀柔区',
- 110117: '平谷区',
- 110228: '密云县',
- 110229: '延庆县',
- 110230: '其它区',
- 120000: '天津',
- 120100: '天津市',
- 120101: '和平区',
- 120102: '河东区',
- 120103: '河西区',
- 120104: '南开区',
- 120105: '河北区',
- 120106: '红桥区',
- 120110: '东丽区',
- 120111: '西青区',
- 120112: '津南区',
- 120113: '北辰区',
- 120114: '武清区',
- 120115: '宝坻区',
- 120116: '滨海新区',
- 120221: '宁河县',
- 120223: '静海县',
- 120225: '蓟县',
- 120226: '其它区',
- 130000: '河北省',
- 130100: '石家庄市',
- 130102: '长安区',
- 130103: '桥东区',
- 130104: '桥西区',
- 130105: '新华区',
- 130107: '井陉矿区',
- 130108: '裕华区',
- 130121: '井陉县',
- 130123: '正定县',
- 130124: '栾城县',
- 130125: '行唐县',
- 130126: '灵寿县',
- 130127: '高邑县',
- 130128: '深泽县',
- 130129: '赞皇县',
- 130130: '无极县',
- 130131: '平山县',
- 130132: '元氏县',
- 130133: '赵县',
- 130181: '辛集市',
- 130182: '藁城市',
- 130183: '晋州市',
- 130184: '新乐市',
- 130185: '鹿泉市',
- 130186: '其它区',
- 130200: '唐山市',
- 130202: '路南区',
- 130203: '路北区',
- 130204: '古冶区',
- 130205: '开平区',
- 130207: '丰南区',
- 130208: '丰润区',
- 130223: '滦县',
- 130224: '滦南县',
- 130225: '乐亭县',
- 130227: '迁西县',
- 130229: '玉田县',
- 130230: '曹妃甸区',
- 130281: '遵化市',
- 130283: '迁安市',
- 130284: '其它区',
- 130300: '秦皇岛市',
- 130302: '海港区',
- 130303: '山海关区',
- 130304: '北戴河区',
- 130321: '青龙满族自治县',
- 130322: '昌黎县',
- 130323: '抚宁县',
- 130324: '卢龙县',
- 130398: '其它区',
- 130400: '邯郸市',
- 130402: '邯山区',
- 130403: '丛台区',
- 130404: '复兴区',
- 130406: '峰峰矿区',
- 130421: '邯郸县',
- 130423: '临漳县',
- 130424: '成安县',
- 130425: '大名县',
- 130426: '涉县',
- 130427: '磁县',
- 130428: '肥乡县',
- 130429: '永年县',
- 130430: '邱县',
- 130431: '鸡泽县',
- 130432: '广平县',
- 130433: '馆陶县',
- 130434: '魏县',
- 130435: '曲周县',
- 130481: '武安市',
- 130482: '其它区',
- 130500: '邢台市',
- 130502: '桥东区',
- 130503: '桥西区',
- 130521: '邢台县',
- 130522: '临城县',
- 130523: '内丘县',
- 130524: '柏乡县',
- 130525: '隆尧县',
- 130526: '任县',
- 130527: '南和县',
- 130528: '宁晋县',
- 130529: '巨鹿县',
- 130530: '新河县',
- 130531: '广宗县',
- 130532: '平乡县',
- 130533: '威县',
- 130534: '清河县',
- 130535: '临西县',
- 130581: '南宫市',
- 130582: '沙河市',
- 130583: '其它区',
- 130600: '保定市',
- 130602: '新市区',
- 130603: '北市区',
- 130604: '南市区',
- 130621: '满城县',
- 130622: '清苑县',
- 130623: '涞水县',
- 130624: '阜平县',
- 130625: '徐水县',
- 130626: '定兴县',
- 130627: '唐县',
- 130628: '高阳县',
- 130629: '容城县',
- 130630: '涞源县',
- 130631: '望都县',
- 130632: '安新县',
- 130633: '易县',
- 130634: '曲阳县',
- 130635: '蠡县',
- 130636: '顺平县',
- 130637: '博野县',
- 130638: '雄县',
- 130681: '涿州市',
- 130682: '定州市',
- 130683: '安国市',
- 130684: '高碑店市',
- 130699: '其它区',
- 130700: '张家口市',
- 130702: '桥东区',
- 130703: '桥西区',
- 130705: '宣化区',
- 130706: '下花园区',
- 130721: '宣化县',
- 130722: '张北县',
- 130723: '康保县',
- 130724: '沽源县',
- 130725: '尚义县',
- 130726: '蔚县',
- 130727: '阳原县',
- 130728: '怀安县',
- 130729: '万全县',
- 130730: '怀来县',
- 130731: '涿鹿县',
- 130732: '赤城县',
- 130733: '崇礼县',
- 130734: '其它区',
- 130800: '承德市',
- 130802: '双桥区',
- 130803: '双滦区',
- 130804: '鹰手营子矿区',
- 130821: '承德县',
- 130822: '兴隆县',
- 130823: '平泉县',
- 130824: '滦平县',
- 130825: '隆化县',
- 130826: '丰宁满族自治县',
- 130827: '宽城满族自治县',
- 130828: '围场满族蒙古族自治县',
- 130829: '其它区',
- 130900: '沧州市',
- 130902: '新华区',
- 130903: '运河区',
- 130921: '沧县',
- 130922: '青县',
- 130923: '东光县',
- 130924: '海兴县',
- 130925: '盐山县',
- 130926: '肃宁县',
- 130927: '南皮县',
- 130928: '吴桥县',
- 130929: '献县',
- 130930: '孟村回族自治县',
- 130981: '泊头市',
- 130982: '任丘市',
- 130983: '黄骅市',
- 130984: '河间市',
- 130985: '其它区',
- 131000: '廊坊市',
- 131002: '安次区',
- 131003: '广阳区',
- 131022: '固安县',
- 131023: '永清县',
- 131024: '香河县',
- 131025: '大城县',
- 131026: '文安县',
- 131028: '大厂回族自治县',
- 131081: '霸州市',
- 131082: '三河市',
- 131083: '其它区',
- 131100: '衡水市',
- 131102: '桃城区',
- 131121: '枣强县',
- 131122: '武邑县',
- 131123: '武强县',
- 131124: '饶阳县',
- 131125: '安平县',
- 131126: '故城县',
- 131127: '景县',
- 131128: '阜城县',
- 131181: '冀州市',
- 131182: '深州市',
- 131183: '其它区',
- 140000: '山西省',
- 140100: '太原市',
- 140105: '小店区',
- 140106: '迎泽区',
- 140107: '杏花岭区',
- 140108: '尖草坪区',
- 140109: '万柏林区',
- 140110: '晋源区',
- 140121: '清徐县',
- 140122: '阳曲县',
- 140123: '娄烦县',
- 140181: '古交市',
- 140182: '其它区',
- 140200: '大同市',
- 140202: '城区',
- 140203: '矿区',
- 140211: '南郊区',
- 140212: '新荣区',
- 140221: '阳高县',
- 140222: '天镇县',
- 140223: '广灵县',
- 140224: '灵丘县',
- 140225: '浑源县',
- 140226: '左云县',
- 140227: '大同县',
- 140228: '其它区',
- 140300: '阳泉市',
- 140302: '城区',
- 140303: '矿区',
- 140311: '郊区',
- 140321: '平定县',
- 140322: '盂县',
- 140323: '其它区',
- 140400: '长治市',
- 140421: '长治县',
- 140423: '襄垣县',
- 140424: '屯留县',
- 140425: '平顺县',
- 140426: '黎城县',
- 140427: '壶关县',
- 140428: '长子县',
- 140429: '武乡县',
- 140430: '沁县',
- 140431: '沁源县',
- 140481: '潞城市',
- 140482: '城区',
- 140483: '郊区',
- 140485: '其它区',
- 140500: '晋城市',
- 140502: '城区',
- 140521: '沁水县',
- 140522: '阳城县',
- 140524: '陵川县',
- 140525: '泽州县',
- 140581: '高平市',
- 140582: '其它区',
- 140600: '朔州市',
- 140602: '朔城区',
- 140603: '平鲁区',
- 140621: '山阴县',
- 140622: '应县',
- 140623: '右玉县',
- 140624: '怀仁县',
- 140625: '其它区',
- 140700: '晋中市',
- 140702: '榆次区',
- 140721: '榆社县',
- 140722: '左权县',
- 140723: '和顺县',
- 140724: '昔阳县',
- 140725: '寿阳县',
- 140726: '太谷县',
- 140727: '祁县',
- 140728: '平遥县',
- 140729: '灵石县',
- 140781: '介休市',
- 140782: '其它区',
- 140800: '运城市',
- 140802: '盐湖区',
- 140821: '临猗县',
- 140822: '万荣县',
- 140823: '闻喜县',
- 140824: '稷山县',
- 140825: '新绛县',
- 140826: '绛县',
- 140827: '垣曲县',
- 140828: '夏县',
- 140829: '平陆县',
- 140830: '芮城县',
- 140881: '永济市',
- 140882: '河津市',
- 140883: '其它区',
- 140900: '忻州市',
- 140902: '忻府区',
- 140921: '定襄县',
- 140922: '五台县',
- 140923: '代县',
- 140924: '繁峙县',
- 140925: '宁武县',
- 140926: '静乐县',
- 140927: '神池县',
- 140928: '五寨县',
- 140929: '岢岚县',
- 140930: '河曲县',
- 140931: '保德县',
- 140932: '偏关县',
- 140981: '原平市',
- 140982: '其它区',
- 141000: '临汾市',
- 141002: '尧都区',
- 141021: '曲沃县',
- 141022: '翼城县',
- 141023: '襄汾县',
- 141024: '洪洞县',
- 141025: '古县',
- 141026: '安泽县',
- 141027: '浮山县',
- 141028: '吉县',
- 141029: '乡宁县',
- 141030: '大宁县',
- 141031: '隰县',
- 141032: '永和县',
- 141033: '蒲县',
- 141034: '汾西县',
- 141081: '侯马市',
- 141082: '霍州市',
- 141083: '其它区',
- 141100: '吕梁市',
- 141102: '离石区',
- 141121: '文水县',
- 141122: '交城县',
- 141123: '兴县',
- 141124: '临县',
- 141125: '柳林县',
- 141126: '石楼县',
- 141127: '岚县',
- 141128: '方山县',
- 141129: '中阳县',
- 141130: '交口县',
- 141181: '孝义市',
- 141182: '汾阳市',
- 141183: '其它区',
- 150000: '内蒙古自治区',
- 150100: '呼和浩特市',
- 150102: '新城区',
- 150103: '回民区',
- 150104: '玉泉区',
- 150105: '赛罕区',
- 150121: '土默特左旗',
- 150122: '托克托县',
- 150123: '和林格尔县',
- 150124: '清水河县',
- 150125: '武川县',
- 150126: '其它区',
- 150200: '包头市',
- 150202: '东河区',
- 150203: '昆都仑区',
- 150204: '青山区',
- 150205: '石拐区',
- 150206: '白云鄂博矿区',
- 150207: '九原区',
- 150221: '土默特右旗',
- 150222: '固阳县',
- 150223: '达尔罕茂明安联合旗',
- 150224: '其它区',
- 150300: '乌海市',
- 150302: '海勃湾区',
- 150303: '海南区',
- 150304: '乌达区',
- 150305: '其它区',
- 150400: '赤峰市',
- 150402: '红山区',
- 150403: '元宝山区',
- 150404: '松山区',
- 150421: '阿鲁科尔沁旗',
- 150422: '巴林左旗',
- 150423: '巴林右旗',
- 150424: '林西县',
- 150425: '克什克腾旗',
- 150426: '翁牛特旗',
- 150428: '喀喇沁旗',
- 150429: '宁城县',
- 150430: '敖汉旗',
- 150431: '其它区',
- 150500: '通辽市',
- 150502: '科尔沁区',
- 150521: '科尔沁左翼中旗',
- 150522: '科尔沁左翼后旗',
- 150523: '开鲁县',
- 150524: '库伦旗',
- 150525: '奈曼旗',
- 150526: '扎鲁特旗',
- 150581: '霍林郭勒市',
- 150582: '其它区',
- 150600: '鄂尔多斯市',
- 150602: '东胜区',
- 150621: '达拉特旗',
- 150622: '准格尔旗',
- 150623: '鄂托克前旗',
- 150624: '鄂托克旗',
- 150625: '杭锦旗',
- 150626: '乌审旗',
- 150627: '伊金霍洛旗',
- 150628: '其它区',
- 150700: '呼伦贝尔市',
- 150702: '海拉尔区',
- 150703: '扎赉诺尔区',
- 150721: '阿荣旗',
- 150722: '莫力达瓦达斡尔族自治旗',
- 150723: '鄂伦春自治旗',
- 150724: '鄂温克族自治旗',
- 150725: '陈巴尔虎旗',
- 150726: '新巴尔虎左旗',
- 150727: '新巴尔虎右旗',
- 150781: '满洲里市',
- 150782: '牙克石市',
- 150783: '扎兰屯市',
- 150784: '额尔古纳市',
- 150785: '根河市',
- 150786: '其它区',
- 150800: '巴彦淖尔市',
- 150802: '临河区',
- 150821: '五原县',
- 150822: '磴口县',
- 150823: '乌拉特前旗',
- 150824: '乌拉特中旗',
- 150825: '乌拉特后旗',
- 150826: '杭锦后旗',
- 150827: '其它区',
- 150900: '乌兰察布市',
- 150902: '集宁区',
- 150921: '卓资县',
- 150922: '化德县',
- 150923: '商都县',
- 150924: '兴和县',
- 150925: '凉城县',
- 150926: '察哈尔右翼前旗',
- 150927: '察哈尔右翼中旗',
- 150928: '察哈尔右翼后旗',
- 150929: '四子王旗',
- 150981: '丰镇市',
- 150982: '其它区',
- 152200: '兴安盟',
- 152201: '乌兰浩特市',
- 152202: '阿尔山市',
- 152221: '科尔沁右翼前旗',
- 152222: '科尔沁右翼中旗',
- 152223: '扎赉特旗',
- 152224: '突泉县',
- 152225: '其它区',
- 152500: '锡林郭勒盟',
- 152501: '二连浩特市',
- 152502: '锡林浩特市',
- 152522: '阿巴嘎旗',
- 152523: '苏尼特左旗',
- 152524: '苏尼特右旗',
- 152525: '东乌珠穆沁旗',
- 152526: '西乌珠穆沁旗',
- 152527: '太仆寺旗',
- 152528: '镶黄旗',
- 152529: '正镶白旗',
- 152530: '正蓝旗',
- 152531: '多伦县',
- 152532: '其它区',
- 152900: '阿拉善盟',
- 152921: '阿拉善左旗',
- 152922: '阿拉善右旗',
- 152923: '额济纳旗',
- 152924: '其它区',
- 210000: '辽宁省',
- 210100: '沈阳市',
- 210102: '和平区',
- 210103: '沈河区',
- 210104: '大东区',
- 210105: '皇姑区',
- 210106: '铁西区',
- 210111: '苏家屯区',
- 210112: '东陵区',
- 210113: '新城子区',
- 210114: '于洪区',
- 210122: '辽中县',
- 210123: '康平县',
- 210124: '法库县',
- 210181: '新民市',
- 210184: '沈北新区',
- 210185: '其它区',
- 210200: '大连市',
- 210202: '中山区',
- 210203: '西岗区',
- 210204: '沙河口区',
- 210211: '甘井子区',
- 210212: '旅顺口区',
- 210213: '金州区',
- 210224: '长海县',
- 210281: '瓦房店市',
- 210282: '普兰店市',
- 210283: '庄河市',
- 210298: '其它区',
- 210300: '鞍山市',
- 210302: '铁东区',
- 210303: '铁西区',
- 210304: '立山区',
- 210311: '千山区',
- 210321: '台安县',
- 210323: '岫岩满族自治县',
- 210381: '海城市',
- 210382: '其它区',
- 210400: '抚顺市',
- 210402: '新抚区',
- 210403: '东洲区',
- 210404: '望花区',
- 210411: '顺城区',
- 210421: '抚顺县',
- 210422: '新宾满族自治县',
- 210423: '清原满族自治县',
- 210424: '其它区',
- 210500: '本溪市',
- 210502: '平山区',
- 210503: '溪湖区',
- 210504: '明山区',
- 210505: '南芬区',
- 210521: '本溪满族自治县',
- 210522: '桓仁满族自治县',
- 210523: '其它区',
- 210600: '丹东市',
- 210602: '元宝区',
- 210603: '振兴区',
- 210604: '振安区',
- 210624: '宽甸满族自治县',
- 210681: '东港市',
- 210682: '凤城市',
- 210683: '其它区',
- 210700: '锦州市',
- 210702: '古塔区',
- 210703: '凌河区',
- 210711: '太和区',
- 210726: '黑山县',
- 210727: '义县',
- 210781: '凌海市',
- 210782: '北镇市',
- 210783: '其它区',
- 210800: '营口市',
- 210802: '站前区',
- 210803: '西市区',
- 210804: '鲅鱼圈区',
- 210811: '老边区',
- 210881: '盖州市',
- 210882: '大石桥市',
- 210883: '其它区',
- 210900: '阜新市',
- 210902: '海州区',
- 210903: '新邱区',
- 210904: '太平区',
- 210905: '清河门区',
- 210911: '细河区',
- 210921: '阜新蒙古族自治县',
- 210922: '彰武县',
- 210923: '其它区',
- 211000: '辽阳市',
- 211002: '白塔区',
- 211003: '文圣区',
- 211004: '宏伟区',
- 211005: '弓长岭区',
- 211011: '太子河区',
- 211021: '辽阳县',
- 211081: '灯塔市',
- 211082: '其它区',
- 211100: '盘锦市',
- 211102: '双台子区',
- 211103: '兴隆台区',
- 211121: '大洼县',
- 211122: '盘山县',
- 211123: '其它区',
- 211200: '铁岭市',
- 211202: '银州区',
- 211204: '清河区',
- 211221: '铁岭县',
- 211223: '西丰县',
- 211224: '昌图县',
- 211281: '调兵山市',
- 211282: '开原市',
- 211283: '其它区',
- 211300: '朝阳市',
- 211302: '双塔区',
- 211303: '龙城区',
- 211321: '朝阳县',
- 211322: '建平县',
- 211324: '喀喇沁左翼蒙古族自治县',
- 211381: '北票市',
- 211382: '凌源市',
- 211383: '其它区',
- 211400: '葫芦岛市',
- 211402: '连山区',
- 211403: '龙港区',
- 211404: '南票区',
- 211421: '绥中县',
- 211422: '建昌县',
- 211481: '兴城市',
- 211482: '其它区',
- 220000: '吉林省',
- 220100: '长春市',
- 220102: '南关区',
- 220103: '宽城区',
- 220104: '朝阳区',
- 220105: '二道区',
- 220106: '绿园区',
- 220112: '双阳区',
- 220122: '农安县',
- 220181: '九台市',
- 220182: '榆树市',
- 220183: '德惠市',
- 220188: '其它区',
- 220200: '吉林市',
- 220202: '昌邑区',
- 220203: '龙潭区',
- 220204: '船营区',
- 220211: '丰满区',
- 220221: '永吉县',
- 220281: '蛟河市',
- 220282: '桦甸市',
- 220283: '舒兰市',
- 220284: '磐石市',
- 220285: '其它区',
- 220300: '四平市',
- 220302: '铁西区',
- 220303: '铁东区',
- 220322: '梨树县',
- 220323: '伊通满族自治县',
- 220381: '公主岭市',
- 220382: '双辽市',
- 220383: '其它区',
- 220400: '辽源市',
- 220402: '龙山区',
- 220403: '西安区',
- 220421: '东丰县',
- 220422: '东辽县',
- 220423: '其它区',
- 220500: '通化市',
- 220502: '东昌区',
- 220503: '二道江区',
- 220521: '通化县',
- 220523: '辉南县',
- 220524: '柳河县',
- 220581: '梅河口市',
- 220582: '集安市',
- 220583: '其它区',
- 220600: '白山市',
- 220602: '浑江区',
- 220621: '抚松县',
- 220622: '靖宇县',
- 220623: '长白朝鲜族自治县',
- 220625: '江源区',
- 220681: '临江市',
- 220682: '其它区',
- 220700: '松原市',
- 220702: '宁江区',
- 220721: '前郭尔罗斯蒙古族自治县',
- 220722: '长岭县',
- 220723: '乾安县',
- 220724: '扶余市',
- 220725: '其它区',
- 220800: '白城市',
- 220802: '洮北区',
- 220821: '镇赉县',
- 220822: '通榆县',
- 220881: '洮南市',
- 220882: '大安市',
- 220883: '其它区',
- 222400: '延边朝鲜族自治州',
- 222401: '延吉市',
- 222402: '图们市',
- 222403: '敦化市',
- 222404: '珲春市',
- 222405: '龙井市',
- 222406: '和龙市',
- 222424: '汪清县',
- 222426: '安图县',
- 222427: '其它区',
- 230000: '黑龙江省',
- 230100: '哈尔滨市',
- 230102: '道里区',
- 230103: '南岗区',
- 230104: '道外区',
- 230106: '香坊区',
- 230108: '平房区',
- 230109: '松北区',
- 230111: '呼兰区',
- 230123: '依兰县',
- 230124: '方正县',
- 230125: '宾县',
- 230126: '巴彦县',
- 230127: '木兰县',
- 230128: '通河县',
- 230129: '延寿县',
- 230181: '阿城区',
- 230182: '双城市',
- 230183: '尚志市',
- 230184: '五常市',
- 230186: '其它区',
- 230200: '齐齐哈尔市',
- 230202: '龙沙区',
- 230203: '建华区',
- 230204: '铁锋区',
- 230205: '昂昂溪区',
- 230206: '富拉尔基区',
- 230207: '碾子山区',
- 230208: '梅里斯达斡尔族区',
- 230221: '龙江县',
- 230223: '依安县',
- 230224: '泰来县',
- 230225: '甘南县',
- 230227: '富裕县',
- 230229: '克山县',
- 230230: '克东县',
- 230231: '拜泉县',
- 230281: '讷河市',
- 230282: '其它区',
- 230300: '鸡西市',
- 230302: '鸡冠区',
- 230303: '恒山区',
- 230304: '滴道区',
- 230305: '梨树区',
- 230306: '城子河区',
- 230307: '麻山区',
- 230321: '鸡东县',
- 230381: '虎林市',
- 230382: '密山市',
- 230383: '其它区',
- 230400: '鹤岗市',
- 230402: '向阳区',
- 230403: '工农区',
- 230404: '南山区',
- 230405: '兴安区',
- 230406: '东山区',
- 230407: '兴山区',
- 230421: '萝北县',
- 230422: '绥滨县',
- 230423: '其它区',
- 230500: '双鸭山市',
- 230502: '尖山区',
- 230503: '岭东区',
- 230505: '四方台区',
- 230506: '宝山区',
- 230521: '集贤县',
- 230522: '友谊县',
- 230523: '宝清县',
- 230524: '饶河县',
- 230525: '其它区',
- 230600: '大庆市',
- 230602: '萨尔图区',
- 230603: '龙凤区',
- 230604: '让胡路区',
- 230605: '红岗区',
- 230606: '大同区',
- 230621: '肇州县',
- 230622: '肇源县',
- 230623: '林甸县',
- 230624: '杜尔伯特蒙古族自治县',
- 230625: '其它区',
- 230700: '伊春市',
- 230702: '伊春区',
- 230703: '南岔区',
- 230704: '友好区',
- 230705: '西林区',
- 230706: '翠峦区',
- 230707: '新青区',
- 230708: '美溪区',
- 230709: '金山屯区',
- 230710: '五营区',
- 230711: '乌马河区',
- 230712: '汤旺河区',
- 230713: '带岭区',
- 230714: '乌伊岭区',
- 230715: '红星区',
- 230716: '上甘岭区',
- 230722: '嘉荫县',
- 230781: '铁力市',
- 230782: '其它区',
- 230800: '佳木斯市',
- 230803: '向阳区',
- 230804: '前进区',
- 230805: '东风区',
- 230811: '郊区',
- 230822: '桦南县',
- 230826: '桦川县',
- 230828: '汤原县',
- 230833: '抚远县',
- 230881: '同江市',
- 230882: '富锦市',
- 230883: '其它区',
- 230900: '七台河市',
- 230902: '新兴区',
- 230903: '桃山区',
- 230904: '茄子河区',
- 230921: '勃利县',
- 230922: '其它区',
- 231000: '牡丹江市',
- 231002: '东安区',
- 231003: '阳明区',
- 231004: '爱民区',
- 231005: '西安区',
- 231024: '东宁县',
- 231025: '林口县',
- 231081: '绥芬河市',
- 231083: '海林市',
- 231084: '宁安市',
- 231085: '穆棱市',
- 231086: '其它区',
- 231100: '黑河市',
- 231102: '爱辉区',
- 231121: '嫩江县',
- 231123: '逊克县',
- 231124: '孙吴县',
- 231181: '北安市',
- 231182: '五大连池市',
- 231183: '其它区',
- 231200: '绥化市',
- 231202: '北林区',
- 231221: '望奎县',
- 231222: '兰西县',
- 231223: '青冈县',
- 231224: '庆安县',
- 231225: '明水县',
- 231226: '绥棱县',
- 231281: '安达市',
- 231282: '肇东市',
- 231283: '海伦市',
- 231284: '其它区',
- 232700: '大兴安岭地区',
- 232702: '松岭区',
- 232703: '新林区',
- 232704: '呼中区',
- 232721: '呼玛县',
- 232722: '塔河县',
- 232723: '漠河县',
- 232724: '加格达奇区',
- 232725: '其它区',
- 310000: '上海',
- 310100: '上海市',
- 310101: '黄浦区',
- 310104: '徐汇区',
- 310105: '长宁区',
- 310106: '静安区',
- 310107: '普陀区',
- 310108: '闸北区',
- 310109: '虹口区',
- 310110: '杨浦区',
- 310112: '闵行区',
- 310113: '宝山区',
- 310114: '嘉定区',
- 310115: '浦东新区',
- 310116: '金山区',
- 310117: '松江区',
- 310118: '青浦区',
- 310120: '奉贤区',
- 310230: '崇明县',
- 310231: '其它区',
- 320000: '江苏省',
- 320100: '南京市',
- 320102: '玄武区',
- 320104: '秦淮区',
- 320105: '建邺区',
- 320106: '鼓楼区',
- 320111: '浦口区',
- 320113: '栖霞区',
- 320114: '雨花台区',
- 320115: '江宁区',
- 320116: '六合区',
- 320124: '溧水区',
- 320125: '高淳区',
- 320126: '其它区',
- 320200: '无锡市',
- 320202: '崇安区',
- 320203: '南长区',
- 320204: '北塘区',
- 320205: '锡山区',
- 320206: '惠山区',
- 320211: '滨湖区',
- 320281: '江阴市',
- 320282: '宜兴市',
- 320297: '其它区',
- 320300: '徐州市',
- 320302: '鼓楼区',
- 320303: '云龙区',
- 320305: '贾汪区',
- 320311: '泉山区',
- 320321: '丰县',
- 320322: '沛县',
- 320323: '铜山区',
- 320324: '睢宁县',
- 320381: '新沂市',
- 320382: '邳州市',
- 320383: '其它区',
- 320400: '常州市',
- 320402: '天宁区',
- 320404: '钟楼区',
- 320405: '戚墅堰区',
- 320411: '新北区',
- 320412: '武进区',
- 320481: '溧阳市',
- 320482: '金坛市',
- 320483: '其它区',
- 320500: '苏州市',
- 320505: '虎丘区',
- 320506: '吴中区',
- 320507: '相城区',
- 320508: '姑苏区',
- 320581: '常熟市',
- 320582: '张家港市',
- 320583: '昆山市',
- 320584: '吴江区',
- 320585: '太仓市',
- 320596: '其它区',
- 320600: '南通市',
- 320602: '崇川区',
- 320611: '港闸区',
- 320612: '通州区',
- 320621: '海安县',
- 320623: '如东县',
- 320681: '启东市',
- 320682: '如皋市',
- 320684: '海门市',
- 320694: '其它区',
- 320700: '连云港市',
- 320703: '连云区',
- 320705: '新浦区',
- 320706: '海州区',
- 320721: '赣榆县',
- 320722: '东海县',
- 320723: '灌云县',
- 320724: '灌南县',
- 320725: '其它区',
- 320800: '淮安市',
- 320802: '清河区',
- 320803: '淮安区',
- 320804: '淮阴区',
- 320811: '清浦区',
- 320826: '涟水县',
- 320829: '洪泽县',
- 320830: '盱眙县',
- 320831: '金湖县',
- 320832: '其它区',
- 320900: '盐城市',
- 320902: '亭湖区',
- 320903: '盐都区',
- 320921: '响水县',
- 320922: '滨海县',
- 320923: '阜宁县',
- 320924: '射阳县',
- 320925: '建湖县',
- 320981: '东台市',
- 320982: '大丰市',
- 320983: '其它区',
- 321000: '扬州市',
- 321002: '广陵区',
- 321003: '邗江区',
- 321023: '宝应县',
- 321081: '仪征市',
- 321084: '高邮市',
- 321088: '江都区',
- 321093: '其它区',
- 321100: '镇江市',
- 321102: '京口区',
- 321111: '润州区',
- 321112: '丹徒区',
- 321181: '丹阳市',
- 321182: '扬中市',
- 321183: '句容市',
- 321184: '其它区',
- 321200: '泰州市',
- 321202: '海陵区',
- 321203: '高港区',
- 321281: '兴化市',
- 321282: '靖江市',
- 321283: '泰兴市',
- 321284: '姜堰区',
- 321285: '其它区',
- 321300: '宿迁市',
- 321302: '宿城区',
- 321311: '宿豫区',
- 321322: '沭阳县',
- 321323: '泗阳县',
- 321324: '泗洪县',
- 321325: '其它区',
- 330000: '浙江省',
- 330100: '杭州市',
- 330102: '上城区',
- 330103: '下城区',
- 330104: '江干区',
- 330105: '拱墅区',
- 330106: '西湖区',
- 330108: '滨江区',
- 330109: '萧山区',
- 330110: '余杭区',
- 330122: '桐庐县',
- 330127: '淳安县',
- 330182: '建德市',
- 330183: '富阳市',
- 330185: '临安市',
- 330186: '其它区',
- 330200: '宁波市',
- 330203: '海曙区',
- 330204: '江东区',
- 330205: '江北区',
- 330206: '北仑区',
- 330211: '镇海区',
- 330212: '鄞州区',
- 330225: '象山县',
- 330226: '宁海县',
- 330281: '余姚市',
- 330282: '慈溪市',
- 330283: '奉化市',
- 330284: '其它区',
- 330300: '温州市',
- 330302: '鹿城区',
- 330303: '龙湾区',
- 330304: '瓯海区',
- 330322: '洞头县',
- 330324: '永嘉县',
- 330326: '平阳县',
- 330327: '苍南县',
- 330328: '文成县',
- 330329: '泰顺县',
- 330381: '瑞安市',
- 330382: '乐清市',
- 330383: '其它区',
- 330400: '嘉兴市',
- 330402: '南湖区',
- 330411: '秀洲区',
- 330421: '嘉善县',
- 330424: '海盐县',
- 330481: '海宁市',
- 330482: '平湖市',
- 330483: '桐乡市',
- 330484: '其它区',
- 330500: '湖州市',
- 330502: '吴兴区',
- 330503: '南浔区',
- 330521: '德清县',
- 330522: '长兴县',
- 330523: '安吉县',
- 330524: '其它区',
- 330600: '绍兴市',
- 330602: '越城区',
- 330621: '绍兴县',
- 330624: '新昌县',
- 330681: '诸暨市',
- 330682: '上虞市',
- 330683: '嵊州市',
- 330684: '其它区',
- 330700: '金华市',
- 330702: '婺城区',
- 330703: '金东区',
- 330723: '武义县',
- 330726: '浦江县',
- 330727: '磐安县',
- 330781: '兰溪市',
- 330782: '义乌市',
- 330783: '东阳市',
- 330784: '永康市',
- 330785: '其它区',
- 330800: '衢州市',
- 330802: '柯城区',
- 330803: '衢江区',
- 330822: '常山县',
- 330824: '开化县',
- 330825: '龙游县',
- 330881: '江山市',
- 330882: '其它区',
- 330900: '舟山市',
- 330902: '定海区',
- 330903: '普陀区',
- 330921: '岱山县',
- 330922: '嵊泗县',
- 330923: '其它区',
- 331000: '台州市',
- 331002: '椒江区',
- 331003: '黄岩区',
- 331004: '路桥区',
- 331021: '玉环县',
- 331022: '三门县',
- 331023: '天台县',
- 331024: '仙居县',
- 331081: '温岭市',
- 331082: '临海市',
- 331083: '其它区',
- 331100: '丽水市',
- 331102: '莲都区',
- 331121: '青田县',
- 331122: '缙云县',
- 331123: '遂昌县',
- 331124: '松阳县',
- 331125: '云和县',
- 331126: '庆元县',
- 331127: '景宁畲族自治县',
- 331181: '龙泉市',
- 331182: '其它区',
- 340000: '安徽省',
- 340100: '合肥市',
- 340102: '瑶海区',
- 340103: '庐阳区',
- 340104: '蜀山区',
- 340111: '包河区',
- 340121: '长丰县',
- 340122: '肥东县',
- 340123: '肥西县',
- 340192: '其它区',
- 340200: '芜湖市',
- 340202: '镜湖区',
- 340203: '弋江区',
- 340207: '鸠江区',
- 340208: '三山区',
- 340221: '芜湖县',
- 340222: '繁昌县',
- 340223: '南陵县',
- 340224: '其它区',
- 340300: '蚌埠市',
- 340302: '龙子湖区',
- 340303: '蚌山区',
- 340304: '禹会区',
- 340311: '淮上区',
- 340321: '怀远县',
- 340322: '五河县',
- 340323: '固镇县',
- 340324: '其它区',
- 340400: '淮南市',
- 340402: '大通区',
- 340403: '田家庵区',
- 340404: '谢家集区',
- 340405: '八公山区',
- 340406: '潘集区',
- 340421: '凤台县',
- 340422: '其它区',
- 340500: '马鞍山市',
- 340503: '花山区',
- 340504: '雨山区',
- 340506: '博望区',
- 340521: '当涂县',
- 340522: '其它区',
- 340600: '淮北市',
- 340602: '杜集区',
- 340603: '相山区',
- 340604: '烈山区',
- 340621: '濉溪县',
- 340622: '其它区',
- 340700: '铜陵市',
- 340702: '铜官山区',
- 340703: '狮子山区',
- 340711: '郊区',
- 340721: '铜陵县',
- 340722: '其它区',
- 340800: '安庆市',
- 340802: '迎江区',
- 340803: '大观区',
- 340811: '宜秀区',
- 340822: '怀宁县',
- 340823: '枞阳县',
- 340824: '潜山县',
- 340825: '太湖县',
- 340826: '宿松县',
- 340827: '望江县',
- 340828: '岳西县',
- 340881: '桐城市',
- 340882: '其它区',
- 341000: '黄山市',
- 341002: '屯溪区',
- 341003: '黄山区',
- 341004: '徽州区',
- 341021: '歙县',
- 341022: '休宁县',
- 341023: '黟县',
- 341024: '祁门县',
- 341025: '其它区',
- 341100: '滁州市',
- 341102: '琅琊区',
- 341103: '南谯区',
- 341122: '来安县',
- 341124: '全椒县',
- 341125: '定远县',
- 341126: '凤阳县',
- 341181: '天长市',
- 341182: '明光市',
- 341183: '其它区',
- 341200: '阜阳市',
- 341202: '颍州区',
- 341203: '颍东区',
- 341204: '颍泉区',
- 341221: '临泉县',
- 341222: '太和县',
- 341225: '阜南县',
- 341226: '颍上县',
- 341282: '界首市',
- 341283: '其它区',
- 341300: '宿州市',
- 341302: '埇桥区',
- 341321: '砀山县',
- 341322: '萧县',
- 341323: '灵璧县',
- 341324: '泗县',
- 341325: '其它区',
- 341400: '巢湖市',
- 341421: '庐江县',
- 341422: '无为县',
- 341423: '含山县',
- 341424: '和县',
- 341500: '六安市',
- 341502: '金安区',
- 341503: '裕安区',
- 341521: '寿县',
- 341522: '霍邱县',
- 341523: '舒城县',
- 341524: '金寨县',
- 341525: '霍山县',
- 341526: '其它区',
- 341600: '亳州市',
- 341602: '谯城区',
- 341621: '涡阳县',
- 341622: '蒙城县',
- 341623: '利辛县',
- 341624: '其它区',
- 341700: '池州市',
- 341702: '贵池区',
- 341721: '东至县',
- 341722: '石台县',
- 341723: '青阳县',
- 341724: '其它区',
- 341800: '宣城市',
- 341802: '宣州区',
- 341821: '郎溪县',
- 341822: '广德县',
- 341823: '泾县',
- 341824: '绩溪县',
- 341825: '旌德县',
- 341881: '宁国市',
- 341882: '其它区',
- 350000: '福建省',
- 350100: '福州市',
- 350102: '鼓楼区',
- 350103: '台江区',
- 350104: '仓山区',
- 350105: '马尾区',
- 350111: '晋安区',
- 350121: '闽侯县',
- 350122: '连江县',
- 350123: '罗源县',
- 350124: '闽清县',
- 350125: '永泰县',
- 350128: '平潭县',
- 350181: '福清市',
- 350182: '长乐市',
- 350183: '其它区',
- 350200: '厦门市',
- 350203: '思明区',
- 350205: '海沧区',
- 350206: '湖里区',
- 350211: '集美区',
- 350212: '同安区',
- 350213: '翔安区',
- 350214: '其它区',
- 350300: '莆田市',
- 350302: '城厢区',
- 350303: '涵江区',
- 350304: '荔城区',
- 350305: '秀屿区',
- 350322: '仙游县',
- 350323: '其它区',
- 350400: '三明市',
- 350402: '梅列区',
- 350403: '三元区',
- 350421: '明溪县',
- 350423: '清流县',
- 350424: '宁化县',
- 350425: '大田县',
- 350426: '尤溪县',
- 350427: '沙县',
- 350428: '将乐县',
- 350429: '泰宁县',
- 350430: '建宁县',
- 350481: '永安市',
- 350482: '其它区',
- 350500: '泉州市',
- 350502: '鲤城区',
- 350503: '丰泽区',
- 350504: '洛江区',
- 350505: '泉港区',
- 350521: '惠安县',
- 350524: '安溪县',
- 350525: '永春县',
- 350526: '德化县',
- 350527: '金门县',
- 350581: '石狮市',
- 350582: '晋江市',
- 350583: '南安市',
- 350584: '其它区',
- 350600: '漳州市',
- 350602: '芗城区',
- 350603: '龙文区',
- 350622: '云霄县',
- 350623: '漳浦县',
- 350624: '诏安县',
- 350625: '长泰县',
- 350626: '东山县',
- 350627: '南靖县',
- 350628: '平和县',
- 350629: '华安县',
- 350681: '龙海市',
- 350682: '其它区',
- 350700: '南平市',
- 350702: '延平区',
- 350721: '顺昌县',
- 350722: '浦城县',
- 350723: '光泽县',
- 350724: '松溪县',
- 350725: '政和县',
- 350781: '邵武市',
- 350782: '武夷山市',
- 350783: '建瓯市',
- 350784: '建阳市',
- 350785: '其它区',
- 350800: '龙岩市',
- 350802: '新罗区',
- 350821: '长汀县',
- 350822: '永定县',
- 350823: '上杭县',
- 350824: '武平县',
- 350825: '连城县',
- 350881: '漳平市',
- 350882: '其它区',
- 350900: '宁德市',
- 350902: '蕉城区',
- 350921: '霞浦县',
- 350922: '古田县',
- 350923: '屏南县',
- 350924: '寿宁县',
- 350925: '周宁县',
- 350926: '柘荣县',
- 350981: '福安市',
- 350982: '福鼎市',
- 350983: '其它区',
- 360000: '江西省',
- 360100: '南昌市',
- 360102: '东湖区',
- 360103: '西湖区',
- 360104: '青云谱区',
- 360105: '湾里区',
- 360111: '青山湖区',
- 360121: '南昌县',
- 360122: '新建县',
- 360123: '安义县',
- 360124: '进贤县',
- 360128: '其它区',
- 360200: '景德镇市',
- 360202: '昌江区',
- 360203: '珠山区',
- 360222: '浮梁县',
- 360281: '乐平市',
- 360282: '其它区',
- 360300: '萍乡市',
- 360302: '安源区',
- 360313: '湘东区',
- 360321: '莲花县',
- 360322: '上栗县',
- 360323: '芦溪县',
- 360324: '其它区',
- 360400: '九江市',
- 360402: '庐山区',
- 360403: '浔阳区',
- 360421: '九江县',
- 360423: '武宁县',
- 360424: '修水县',
- 360425: '永修县',
- 360426: '德安县',
- 360427: '星子县',
- 360428: '都昌县',
- 360429: '湖口县',
- 360430: '彭泽县',
- 360481: '瑞昌市',
- 360482: '其它区',
- 360483: '共青城市',
- 360500: '新余市',
- 360502: '渝水区',
- 360521: '分宜县',
- 360522: '其它区',
- 360600: '鹰潭市',
- 360602: '月湖区',
- 360622: '余江县',
- 360681: '贵溪市',
- 360682: '其它区',
- 360700: '赣州市',
- 360702: '章贡区',
- 360721: '赣县',
- 360722: '信丰县',
- 360723: '大余县',
- 360724: '上犹县',
- 360725: '崇义县',
- 360726: '安远县',
- 360727: '龙南县',
- 360728: '定南县',
- 360729: '全南县',
- 360730: '宁都县',
- 360731: '于都县',
- 360732: '兴国县',
- 360733: '会昌县',
- 360734: '寻乌县',
- 360735: '石城县',
- 360781: '瑞金市',
- 360782: '南康市',
- 360783: '其它区',
- 360800: '吉安市',
- 360802: '吉州区',
- 360803: '青原区',
- 360821: '吉安县',
- 360822: '吉水县',
- 360823: '峡江县',
- 360824: '新干县',
- 360825: '永丰县',
- 360826: '泰和县',
- 360827: '遂川县',
- 360828: '万安县',
- 360829: '安福县',
- 360830: '永新县',
- 360881: '井冈山市',
- 360882: '其它区',
- 360900: '宜春市',
- 360902: '袁州区',
- 360921: '奉新县',
- 360922: '万载县',
- 360923: '上高县',
- 360924: '宜丰县',
- 360925: '靖安县',
- 360926: '铜鼓县',
- 360981: '丰城市',
- 360982: '樟树市',
- 360983: '高安市',
- 360984: '其它区',
- 361000: '抚州市',
- 361002: '临川区',
- 361021: '南城县',
- 361022: '黎川县',
- 361023: '南丰县',
- 361024: '崇仁县',
- 361025: '乐安县',
- 361026: '宜黄县',
- 361027: '金溪县',
- 361028: '资溪县',
- 361029: '东乡县',
- 361030: '广昌县',
- 361031: '其它区',
- 361100: '上饶市',
- 361102: '信州区',
- 361121: '上饶县',
- 361122: '广丰县',
- 361123: '玉山县',
- 361124: '铅山县',
- 361125: '横峰县',
- 361126: '弋阳县',
- 361127: '余干县',
- 361128: '鄱阳县',
- 361129: '万年县',
- 361130: '婺源县',
- 361181: '德兴市',
- 361182: '其它区',
- 370000: '山东省',
- 370100: '济南市',
- 370102: '历下区',
- 370103: '市中区',
- 370104: '槐荫区',
- 370105: '天桥区',
- 370112: '历城区',
- 370113: '长清区',
- 370124: '平阴县',
- 370125: '济阳县',
- 370126: '商河县',
- 370181: '章丘市',
- 370182: '其它区',
- 370200: '青岛市',
- 370202: '市南区',
- 370203: '市北区',
- 370211: '黄岛区',
- 370212: '崂山区',
- 370213: '李沧区',
- 370214: '城阳区',
- 370281: '胶州市',
- 370282: '即墨市',
- 370283: '平度市',
- 370285: '莱西市',
- 370286: '其它区',
- 370300: '淄博市',
- 370302: '淄川区',
- 370303: '张店区',
- 370304: '博山区',
- 370305: '临淄区',
- 370306: '周村区',
- 370321: '桓台县',
- 370322: '高青县',
- 370323: '沂源县',
- 370324: '其它区',
- 370400: '枣庄市',
- 370402: '市中区',
- 370403: '薛城区',
- 370404: '峄城区',
- 370405: '台儿庄区',
- 370406: '山亭区',
- 370481: '滕州市',
- 370482: '其它区',
- 370500: '东营市',
- 370502: '东营区',
- 370503: '河口区',
- 370521: '垦利县',
- 370522: '利津县',
- 370523: '广饶县',
- 370591: '其它区',
- 370600: '烟台市',
- 370602: '芝罘区',
- 370611: '福山区',
- 370612: '牟平区',
- 370613: '莱山区',
- 370634: '长岛县',
- 370681: '龙口市',
- 370682: '莱阳市',
- 370683: '莱州市',
- 370684: '蓬莱市',
- 370685: '招远市',
- 370686: '栖霞市',
- 370687: '海阳市',
- 370688: '其它区',
- 370700: '潍坊市',
- 370702: '潍城区',
- 370703: '寒亭区',
- 370704: '坊子区',
- 370705: '奎文区',
- 370724: '临朐县',
- 370725: '昌乐县',
- 370781: '青州市',
- 370782: '诸城市',
- 370783: '寿光市',
- 370784: '安丘市',
- 370785: '高密市',
- 370786: '昌邑市',
- 370787: '其它区',
- 370800: '济宁市',
- 370802: '市中区',
- 370811: '任城区',
- 370826: '微山县',
- 370827: '鱼台县',
- 370828: '金乡县',
- 370829: '嘉祥县',
- 370830: '汶上县',
- 370831: '泗水县',
- 370832: '梁山县',
- 370881: '曲阜市',
- 370882: '兖州市',
- 370883: '邹城市',
- 370884: '其它区',
- 370900: '泰安市',
- 370902: '泰山区',
- 370903: '岱岳区',
- 370921: '宁阳县',
- 370923: '东平县',
- 370982: '新泰市',
- 370983: '肥城市',
- 370984: '其它区',
- 371000: '威海市',
- 371002: '环翠区',
- 371081: '文登市',
- 371082: '荣成市',
- 371083: '乳山市',
- 371084: '其它区',
- 371100: '日照市',
- 371102: '东港区',
- 371103: '岚山区',
- 371121: '五莲县',
- 371122: '莒县',
- 371123: '其它区',
- 371200: '莱芜市',
- 371202: '莱城区',
- 371203: '钢城区',
- 371204: '其它区',
- 371300: '临沂市',
- 371302: '兰山区',
- 371311: '罗庄区',
- 371312: '河东区',
- 371321: '沂南县',
- 371322: '郯城县',
- 371323: '沂水县',
- 371324: '苍山县',
- 371325: '费县',
- 371326: '平邑县',
- 371327: '莒南县',
- 371328: '蒙阴县',
- 371329: '临沭县',
- 371330: '其它区',
- 371400: '德州市',
- 371402: '德城区',
- 371421: '陵县',
- 371422: '宁津县',
- 371423: '庆云县',
- 371424: '临邑县',
- 371425: '齐河县',
- 371426: '平原县',
- 371427: '夏津县',
- 371428: '武城县',
- 371481: '乐陵市',
- 371482: '禹城市',
- 371483: '其它区',
- 371500: '聊城市',
- 371502: '东昌府区',
- 371521: '阳谷县',
- 371522: '莘县',
- 371523: '茌平县',
- 371524: '东阿县',
- 371525: '冠县',
- 371526: '高唐县',
- 371581: '临清市',
- 371582: '其它区',
- 371600: '滨州市',
- 371602: '滨城区',
- 371621: '惠民县',
- 371622: '阳信县',
- 371623: '无棣县',
- 371624: '沾化县',
- 371625: '博兴县',
- 371626: '邹平县',
- 371627: '其它区',
- 371700: '菏泽市',
- 371702: '牡丹区',
- 371721: '曹县',
- 371722: '单县',
- 371723: '成武县',
- 371724: '巨野县',
- 371725: '郓城县',
- 371726: '鄄城县',
- 371727: '定陶县',
- 371728: '东明县',
- 371729: '其它区',
- 410000: '河南省',
- 410100: '郑州市',
- 410102: '中原区',
- 410103: '二七区',
- 410104: '管城回族区',
- 410105: '金水区',
- 410106: '上街区',
- 410108: '惠济区',
- 410122: '中牟县',
- 410181: '巩义市',
- 410182: '荥阳市',
- 410183: '新密市',
- 410184: '新郑市',
- 410185: '登封市',
- 410188: '其它区',
- 410200: '开封市',
- 410202: '龙亭区',
- 410203: '顺河回族区',
- 410204: '鼓楼区',
- 410205: '禹王台区',
- 410211: '金明区',
- 410221: '杞县',
- 410222: '通许县',
- 410223: '尉氏县',
- 410224: '开封县',
- 410225: '兰考县',
- 410226: '其它区',
- 410300: '洛阳市',
- 410302: '老城区',
- 410303: '西工区',
- 410304: '瀍河回族区',
- 410305: '涧西区',
- 410306: '吉利区',
- 410307: '洛龙区',
- 410322: '孟津县',
- 410323: '新安县',
- 410324: '栾川县',
- 410325: '嵩县',
- 410326: '汝阳县',
- 410327: '宜阳县',
- 410328: '洛宁县',
- 410329: '伊川县',
- 410381: '偃师市',
- 410400: '平顶山市',
- 410402: '新华区',
- 410403: '卫东区',
- 410404: '石龙区',
- 410411: '湛河区',
- 410421: '宝丰县',
- 410422: '叶县',
- 410423: '鲁山县',
- 410425: '郏县',
- 410481: '舞钢市',
- 410482: '汝州市',
- 410483: '其它区',
- 410500: '安阳市',
- 410502: '文峰区',
- 410503: '北关区',
- 410505: '殷都区',
- 410506: '龙安区',
- 410522: '安阳县',
- 410523: '汤阴县',
- 410526: '滑县',
- 410527: '内黄县',
- 410581: '林州市',
- 410582: '其它区',
- 410600: '鹤壁市',
- 410602: '鹤山区',
- 410603: '山城区',
- 410611: '淇滨区',
- 410621: '浚县',
- 410622: '淇县',
- 410623: '其它区',
- 410700: '新乡市',
- 410702: '红旗区',
- 410703: '卫滨区',
- 410704: '凤泉区',
- 410711: '牧野区',
- 410721: '新乡县',
- 410724: '获嘉县',
- 410725: '原阳县',
- 410726: '延津县',
- 410727: '封丘县',
- 410728: '长垣县',
- 410781: '卫辉市',
- 410782: '辉县市',
- 410783: '其它区',
- 410800: '焦作市',
- 410802: '解放区',
- 410803: '中站区',
- 410804: '马村区',
- 410811: '山阳区',
- 410821: '修武县',
- 410822: '博爱县',
- 410823: '武陟县',
- 410825: '温县',
- 410881: '济源市',
- 410882: '沁阳市',
- 410883: '孟州市',
- 410884: '其它区',
- 410900: '濮阳市',
- 410902: '华龙区',
- 410922: '清丰县',
- 410923: '南乐县',
- 410926: '范县',
- 410927: '台前县',
- 410928: '濮阳县',
- 410929: '其它区',
- 411000: '许昌市',
- 411002: '魏都区',
- 411023: '许昌县',
- 411024: '鄢陵县',
- 411025: '襄城县',
- 411081: '禹州市',
- 411082: '长葛市',
- 411083: '其它区',
- 411100: '漯河市',
- 411102: '源汇区',
- 411103: '郾城区',
- 411104: '召陵区',
- 411121: '舞阳县',
- 411122: '临颍县',
- 411123: '其它区',
- 411200: '三门峡市',
- 411202: '湖滨区',
- 411221: '渑池县',
- 411222: '陕县',
- 411224: '卢氏县',
- 411281: '义马市',
- 411282: '灵宝市',
- 411283: '其它区',
- 411300: '南阳市',
- 411302: '宛城区',
- 411303: '卧龙区',
- 411321: '南召县',
- 411322: '方城县',
- 411323: '西峡县',
- 411324: '镇平县',
- 411325: '内乡县',
- 411326: '淅川县',
- 411327: '社旗县',
- 411328: '唐河县',
- 411329: '新野县',
- 411330: '桐柏县',
- 411381: '邓州市',
- 411382: '其它区',
- 411400: '商丘市',
- 411402: '梁园区',
- 411403: '睢阳区',
- 411421: '民权县',
- 411422: '睢县',
- 411423: '宁陵县',
- 411424: '柘城县',
- 411425: '虞城县',
- 411426: '夏邑县',
- 411481: '永城市',
- 411482: '其它区',
- 411500: '信阳市',
- 411502: '浉河区',
- 411503: '平桥区',
- 411521: '罗山县',
- 411522: '光山县',
- 411523: '新县',
- 411524: '商城县',
- 411525: '固始县',
- 411526: '潢川县',
- 411527: '淮滨县',
- 411528: '息县',
- 411529: '其它区',
- 411600: '周口市',
- 411602: '川汇区',
- 411621: '扶沟县',
- 411622: '西华县',
- 411623: '商水县',
- 411624: '沈丘县',
- 411625: '郸城县',
- 411626: '淮阳县',
- 411627: '太康县',
- 411628: '鹿邑县',
- 411681: '项城市',
- 411682: '其它区',
- 411700: '驻马店市',
- 411702: '驿城区',
- 411721: '西平县',
- 411722: '上蔡县',
- 411723: '平舆县',
- 411724: '正阳县',
- 411725: '确山县',
- 411726: '泌阳县',
- 411727: '汝南县',
- 411728: '遂平县',
- 411729: '新蔡县',
- 411730: '其它区',
- 420000: '湖北省',
- 420100: '武汉市',
- 420102: '江岸区',
- 420103: '江汉区',
- 420104: '硚口区',
- 420105: '汉阳区',
- 420106: '武昌区',
- 420107: '青山区',
- 420111: '洪山区',
- 420112: '东西湖区',
- 420113: '汉南区',
- 420114: '蔡甸区',
- 420115: '江夏区',
- 420116: '黄陂区',
- 420117: '新洲区',
- 420118: '其它区',
- 420200: '黄石市',
- 420202: '黄石港区',
- 420203: '西塞山区',
- 420204: '下陆区',
- 420205: '铁山区',
- 420222: '阳新县',
- 420281: '大冶市',
- 420282: '其它区',
- 420300: '十堰市',
- 420302: '茅箭区',
- 420303: '张湾区',
- 420321: '郧县',
- 420322: '郧西县',
- 420323: '竹山县',
- 420324: '竹溪县',
- 420325: '房县',
- 420381: '丹江口市',
- 420383: '其它区',
- 420500: '宜昌市',
- 420502: '西陵区',
- 420503: '伍家岗区',
- 420504: '点军区',
- 420505: '猇亭区',
- 420506: '夷陵区',
- 420525: '远安县',
- 420526: '兴山县',
- 420527: '秭归县',
- 420528: '长阳土家族自治县',
- 420529: '五峰土家族自治县',
- 420581: '宜都市',
- 420582: '当阳市',
- 420583: '枝江市',
- 420584: '其它区',
- 420600: '襄阳市',
- 420602: '襄城区',
- 420606: '樊城区',
- 420607: '襄州区',
- 420624: '南漳县',
- 420625: '谷城县',
- 420626: '保康县',
- 420682: '老河口市',
- 420683: '枣阳市',
- 420684: '宜城市',
- 420685: '其它区',
- 420700: '鄂州市',
- 420702: '梁子湖区',
- 420703: '华容区',
- 420704: '鄂城区',
- 420705: '其它区',
- 420800: '荆门市',
- 420802: '东宝区',
- 420804: '掇刀区',
- 420821: '京山县',
- 420822: '沙洋县',
- 420881: '钟祥市',
- 420882: '其它区',
- 420900: '孝感市',
- 420902: '孝南区',
- 420921: '孝昌县',
- 420922: '大悟县',
- 420923: '云梦县',
- 420981: '应城市',
- 420982: '安陆市',
- 420984: '汉川市',
- 420985: '其它区',
- 421000: '荆州市',
- 421002: '沙市区',
- 421003: '荆州区',
- 421022: '公安县',
- 421023: '监利县',
- 421024: '江陵县',
- 421081: '石首市',
- 421083: '洪湖市',
- 421087: '松滋市',
- 421088: '其它区',
- 421100: '黄冈市',
- 421102: '黄州区',
- 421121: '团风县',
- 421122: '红安县',
- 421123: '罗田县',
- 421124: '英山县',
- 421125: '浠水县',
- 421126: '蕲春县',
- 421127: '黄梅县',
- 421181: '麻城市',
- 421182: '武穴市',
- 421183: '其它区',
- 421200: '咸宁市',
- 421202: '咸安区',
- 421221: '嘉鱼县',
- 421222: '通城县',
- 421223: '崇阳县',
- 421224: '通山县',
- 421281: '赤壁市',
- 421283: '其它区',
- 421300: '随州市',
- 421302: '曾都区',
- 421321: '随县',
- 421381: '广水市',
- 421382: '其它区',
- 422800: '恩施土家族苗族自治州',
- 422801: '恩施市',
- 422802: '利川市',
- 422822: '建始县',
- 422823: '巴东县',
- 422825: '宣恩县',
- 422826: '咸丰县',
- 422827: '来凤县',
- 422828: '鹤峰县',
- 422829: '其它区',
- 429004: '仙桃市',
- 429005: '潜江市',
- 429006: '天门市',
- 429021: '神农架林区',
- 430000: '湖南省',
- 430100: '长沙市',
- 430102: '芙蓉区',
- 430103: '天心区',
- 430104: '岳麓区',
- 430105: '开福区',
- 430111: '雨花区',
- 430121: '长沙县',
- 430122: '望城区',
- 430124: '宁乡县',
- 430181: '浏阳市',
- 430182: '其它区',
- 430200: '株洲市',
- 430202: '荷塘区',
- 430203: '芦淞区',
- 430204: '石峰区',
- 430211: '天元区',
- 430221: '株洲县',
- 430223: '攸县',
- 430224: '茶陵县',
- 430225: '炎陵县',
- 430281: '醴陵市',
- 430282: '其它区',
- 430300: '湘潭市',
- 430302: '雨湖区',
- 430304: '岳塘区',
- 430321: '湘潭县',
- 430381: '湘乡市',
- 430382: '韶山市',
- 430383: '其它区',
- 430400: '衡阳市',
- 430405: '珠晖区',
- 430406: '雁峰区',
- 430407: '石鼓区',
- 430408: '蒸湘区',
- 430412: '南岳区',
- 430421: '衡阳县',
- 430422: '衡南县',
- 430423: '衡山县',
- 430424: '衡东县',
- 430426: '祁东县',
- 430481: '耒阳市',
- 430482: '常宁市',
- 430483: '其它区',
- 430500: '邵阳市',
- 430502: '双清区',
- 430503: '大祥区',
- 430511: '北塔区',
- 430521: '邵东县',
- 430522: '新邵县',
- 430523: '邵阳县',
- 430524: '隆回县',
- 430525: '洞口县',
- 430527: '绥宁县',
- 430528: '新宁县',
- 430529: '城步苗族自治县',
- 430581: '武冈市',
- 430582: '其它区',
- 430600: '岳阳市',
- 430602: '岳阳楼区',
- 430603: '云溪区',
- 430611: '君山区',
- 430621: '岳阳县',
- 430623: '华容县',
- 430624: '湘阴县',
- 430626: '平江县',
- 430681: '汨罗市',
- 430682: '临湘市',
- 430683: '其它区',
- 430700: '常德市',
- 430702: '武陵区',
- 430703: '鼎城区',
- 430721: '安乡县',
- 430722: '汉寿县',
- 430723: '澧县',
- 430724: '临澧县',
- 430725: '桃源县',
- 430726: '石门县',
- 430781: '津市市',
- 430782: '其它区',
- 430800: '张家界市',
- 430802: '永定区',
- 430811: '武陵源区',
- 430821: '慈利县',
- 430822: '桑植县',
- 430823: '其它区',
- 430900: '益阳市',
- 430902: '资阳区',
- 430903: '赫山区',
- 430921: '南县',
- 430922: '桃江县',
- 430923: '安化县',
- 430981: '沅江市',
- 430982: '其它区',
- 431000: '郴州市',
- 431002: '北湖区',
- 431003: '苏仙区',
- 431021: '桂阳县',
- 431022: '宜章县',
- 431023: '永兴县',
- 431024: '嘉禾县',
- 431025: '临武县',
- 431026: '汝城县',
- 431027: '桂东县',
- 431028: '安仁县',
- 431081: '资兴市',
- 431082: '其它区',
- 431100: '永州市',
- 431102: '零陵区',
- 431103: '冷水滩区',
- 431121: '祁阳县',
- 431122: '东安县',
- 431123: '双牌县',
- 431124: '道县',
- 431125: '江永县',
- 431126: '宁远县',
- 431127: '蓝山县',
- 431128: '新田县',
- 431129: '江华瑶族自治县',
- 431130: '其它区',
- 431200: '怀化市',
- 431202: '鹤城区',
- 431221: '中方县',
- 431222: '沅陵县',
- 431223: '辰溪县',
- 431224: '溆浦县',
- 431225: '会同县',
- 431226: '麻阳苗族自治县',
- 431227: '新晃侗族自治县',
- 431228: '芷江侗族自治县',
- 431229: '靖州苗族侗族自治县',
- 431230: '通道侗族自治县',
- 431281: '洪江市',
- 431282: '其它区',
- 431300: '娄底市',
- 431302: '娄星区',
- 431321: '双峰县',
- 431322: '新化县',
- 431381: '冷水江市',
- 431382: '涟源市',
- 431383: '其它区',
- 433100: '湘西土家族苗族自治州',
- 433101: '吉首市',
- 433122: '泸溪县',
- 433123: '凤凰县',
- 433124: '花垣县',
- 433125: '保靖县',
- 433126: '古丈县',
- 433127: '永顺县',
- 433130: '龙山县',
- 433131: '其它区',
- 440000: '广东省',
- 440100: '广州市',
- 440103: '荔湾区',
- 440104: '越秀区',
- 440105: '海珠区',
- 440106: '天河区',
- 440111: '白云区',
- 440112: '黄埔区',
- 440113: '番禺区',
- 440114: '花都区',
- 440115: '南沙区',
- 440116: '萝岗区',
- 440183: '增城市',
- 440184: '从化市',
- 440189: '其它区',
- 440200: '韶关市',
- 440203: '武江区',
- 440204: '浈江区',
- 440205: '曲江区',
- 440222: '始兴县',
- 440224: '仁化县',
- 440229: '翁源县',
- 440232: '乳源瑶族自治县',
- 440233: '新丰县',
- 440281: '乐昌市',
- 440282: '南雄市',
- 440283: '其它区',
- 440300: '深圳市',
- 440303: '罗湖区',
- 440304: '福田区',
- 440305: '南山区',
- 440306: '宝安区',
- 440307: '龙岗区',
- 440308: '盐田区',
- 440309: '其它区',
- 440320: '光明新区',
- 440321: '坪山新区',
- 440322: '大鹏新区',
- 440323: '龙华新区',
- 440400: '珠海市',
- 440402: '香洲区',
- 440403: '斗门区',
- 440404: '金湾区',
- 440488: '其它区',
- 440500: '汕头市',
- 440507: '龙湖区',
- 440511: '金平区',
- 440512: '濠江区',
- 440513: '潮阳区',
- 440514: '潮南区',
- 440515: '澄海区',
- 440523: '南澳县',
- 440524: '其它区',
- 440600: '佛山市',
- 440604: '禅城区',
- 440605: '南海区',
- 440606: '顺德区',
- 440607: '三水区',
- 440608: '高明区',
- 440609: '其它区',
- 440700: '江门市',
- 440703: '蓬江区',
- 440704: '江海区',
- 440705: '新会区',
- 440781: '台山市',
- 440783: '开平市',
- 440784: '鹤山市',
- 440785: '恩平市',
- 440786: '其它区',
- 440800: '湛江市',
- 440802: '赤坎区',
- 440803: '霞山区',
- 440804: '坡头区',
- 440811: '麻章区',
- 440823: '遂溪县',
- 440825: '徐闻县',
- 440881: '廉江市',
- 440882: '雷州市',
- 440883: '吴川市',
- 440884: '其它区',
- 440900: '茂名市',
- 440902: '茂南区',
- 440903: '茂港区',
- 440923: '电白县',
- 440981: '高州市',
- 440982: '化州市',
- 440983: '信宜市',
- 440984: '其它区',
- 441200: '肇庆市',
- 441202: '端州区',
- 441203: '鼎湖区',
- 441223: '广宁县',
- 441224: '怀集县',
- 441225: '封开县',
- 441226: '德庆县',
- 441283: '高要市',
- 441284: '四会市',
- 441285: '其它区',
- 441300: '惠州市',
- 441302: '惠城区',
- 441303: '惠阳区',
- 441322: '博罗县',
- 441323: '惠东县',
- 441324: '龙门县',
- 441325: '其它区',
- 441400: '梅州市',
- 441402: '梅江区',
- 441421: '梅县',
- 441422: '大埔县',
- 441423: '丰顺县',
- 441424: '五华县',
- 441426: '平远县',
- 441427: '蕉岭县',
- 441481: '兴宁市',
- 441482: '其它区',
- 441500: '汕尾市',
- 441502: '城区',
- 441521: '海丰县',
- 441523: '陆河县',
- 441581: '陆丰市',
- 441582: '其它区',
- 441600: '河源市',
- 441602: '源城区',
- 441621: '紫金县',
- 441622: '龙川县',
- 441623: '连平县',
- 441624: '和平县',
- 441625: '东源县',
- 441626: '其它区',
- 441700: '阳江市',
- 441702: '江城区',
- 441721: '阳西县',
- 441723: '阳东县',
- 441781: '阳春市',
- 441782: '其它区',
- 441800: '清远市',
- 441802: '清城区',
- 441821: '佛冈县',
- 441823: '阳山县',
- 441825: '连山壮族瑶族自治县',
- 441826: '连南瑶族自治县',
- 441827: '清新区',
- 441881: '英德市',
- 441882: '连州市',
- 441883: '其它区',
- 441900: '东莞市',
- 442000: '中山市',
- 442101: '东沙群岛',
- 445100: '潮州市',
- 445102: '湘桥区',
- 445121: '潮安区',
- 445122: '饶平县',
- 445186: '其它区',
- 445200: '揭阳市',
- 445202: '榕城区',
- 445221: '揭东区',
- 445222: '揭西县',
- 445224: '惠来县',
- 445281: '普宁市',
- 445285: '其它区',
- 445300: '云浮市',
- 445302: '云城区',
- 445321: '新兴县',
- 445322: '郁南县',
- 445323: '云安县',
- 445381: '罗定市',
- 445382: '其它区',
- 450000: '广西壮族自治区',
- 450100: '南宁市',
- 450102: '兴宁区',
- 450103: '青秀区',
- 450105: '江南区',
- 450107: '西乡塘区',
- 450108: '良庆区',
- 450109: '邕宁区',
- 450122: '武鸣县',
- 450123: '隆安县',
- 450124: '马山县',
- 450125: '上林县',
- 450126: '宾阳县',
- 450127: '横县',
- 450128: '其它区',
- 450200: '柳州市',
- 450202: '城中区',
- 450203: '鱼峰区',
- 450204: '柳南区',
- 450205: '柳北区',
- 450221: '柳江县',
- 450222: '柳城县',
- 450223: '鹿寨县',
- 450224: '融安县',
- 450225: '融水苗族自治县',
- 450226: '三江侗族自治县',
- 450227: '其它区',
- 450300: '桂林市',
- 450302: '秀峰区',
- 450303: '叠彩区',
- 450304: '象山区',
- 450305: '七星区',
- 450311: '雁山区',
- 450321: '阳朔县',
- 450322: '临桂区',
- 450323: '灵川县',
- 450324: '全州县',
- 450325: '兴安县',
- 450326: '永福县',
- 450327: '灌阳县',
- 450328: '龙胜各族自治县',
- 450329: '资源县',
- 450330: '平乐县',
- 450331: '荔浦县',
- 450332: '恭城瑶族自治县',
- 450333: '其它区',
- 450400: '梧州市',
- 450403: '万秀区',
- 450405: '长洲区',
- 450406: '龙圩区',
- 450421: '苍梧县',
- 450422: '藤县',
- 450423: '蒙山县',
- 450481: '岑溪市',
- 450482: '其它区',
- 450500: '北海市',
- 450502: '海城区',
- 450503: '银海区',
- 450512: '铁山港区',
- 450521: '合浦县',
- 450522: '其它区',
- 450600: '防城港市',
- 450602: '港口区',
- 450603: '防城区',
- 450621: '上思县',
- 450681: '东兴市',
- 450682: '其它区',
- 450700: '钦州市',
- 450702: '钦南区',
- 450703: '钦北区',
- 450721: '灵山县',
- 450722: '浦北县',
- 450723: '其它区',
- 450800: '贵港市',
- 450802: '港北区',
- 450803: '港南区',
- 450804: '覃塘区',
- 450821: '平南县',
- 450881: '桂平市',
- 450882: '其它区',
- 450900: '玉林市',
- 450902: '玉州区',
- 450903: '福绵区',
- 450921: '容县',
- 450922: '陆川县',
- 450923: '博白县',
- 450924: '兴业县',
- 450981: '北流市',
- 450982: '其它区',
- 451000: '百色市',
- 451002: '右江区',
- 451021: '田阳县',
- 451022: '田东县',
- 451023: '平果县',
- 451024: '德保县',
- 451025: '靖西县',
- 451026: '那坡县',
- 451027: '凌云县',
- 451028: '乐业县',
- 451029: '田林县',
- 451030: '西林县',
- 451031: '隆林各族自治县',
- 451032: '其它区',
- 451100: '贺州市',
- 451102: '八步区',
- 451119: '平桂管理区',
- 451121: '昭平县',
- 451122: '钟山县',
- 451123: '富川瑶族自治县',
- 451124: '其它区',
- 451200: '河池市',
- 451202: '金城江区',
- 451221: '南丹县',
- 451222: '天峨县',
- 451223: '凤山县',
- 451224: '东兰县',
- 451225: '罗城仫佬族自治县',
- 451226: '环江毛南族自治县',
- 451227: '巴马瑶族自治县',
- 451228: '都安瑶族自治县',
- 451229: '大化瑶族自治县',
- 451281: '宜州市',
- 451282: '其它区',
- 451300: '来宾市',
- 451302: '兴宾区',
- 451321: '忻城县',
- 451322: '象州县',
- 451323: '武宣县',
- 451324: '金秀瑶族自治县',
- 451381: '合山市',
- 451382: '其它区',
- 451400: '崇左市',
- 451402: '江州区',
- 451421: '扶绥县',
- 451422: '宁明县',
- 451423: '龙州县',
- 451424: '大新县',
- 451425: '天等县',
- 451481: '凭祥市',
- 451482: '其它区',
- 460000: '海南省',
- 460100: '海口市',
- 460105: '秀英区',
- 460106: '龙华区',
- 460107: '琼山区',
- 460108: '美兰区',
- 460109: '其它区',
- 460200: '三亚市',
- 460300: '三沙市',
- 460321: '西沙群岛',
- 460322: '南沙群岛',
- 460323: '中沙群岛的岛礁及其海域',
- 469001: '五指山市',
- 469002: '琼海市',
- 469003: '儋州市',
- 469005: '文昌市',
- 469006: '万宁市',
- 469007: '东方市',
- 469025: '定安县',
- 469026: '屯昌县',
- 469027: '澄迈县',
- 469028: '临高县',
- 469030: '白沙黎族自治县',
- 469031: '昌江黎族自治县',
- 469033: '乐东黎族自治县',
- 469034: '陵水黎族自治县',
- 469035: '保亭黎族苗族自治县',
- 469036: '琼中黎族苗族自治县',
- 471005: '其它区',
- 500000: '重庆',
- 500100: '重庆市',
- 500101: '万州区',
- 500102: '涪陵区',
- 500103: '渝中区',
- 500104: '大渡口区',
- 500105: '江北区',
- 500106: '沙坪坝区',
- 500107: '九龙坡区',
- 500108: '南岸区',
- 500109: '北碚区',
- 500110: '万盛区',
- 500111: '双桥区',
- 500112: '渝北区',
- 500113: '巴南区',
- 500114: '黔江区',
- 500115: '长寿区',
- 500222: '綦江区',
- 500223: '潼南县',
- 500224: '铜梁县',
- 500225: '大足区',
- 500226: '荣昌县',
- 500227: '璧山县',
- 500228: '梁平县',
- 500229: '城口县',
- 500230: '丰都县',
- 500231: '垫江县',
- 500232: '武隆县',
- 500233: '忠县',
- 500234: '开县',
- 500235: '云阳县',
- 500236: '奉节县',
- 500237: '巫山县',
- 500238: '巫溪县',
- 500240: '石柱土家族自治县',
- 500241: '秀山土家族苗族自治县',
- 500242: '酉阳土家族苗族自治县',
- 500243: '彭水苗族土家族自治县',
- 500381: '江津区',
- 500382: '合川区',
- 500383: '永川区',
- 500384: '南川区',
- 500385: '其它区',
- 510000: '四川省',
- 510100: '成都市',
- 510104: '锦江区',
- 510105: '青羊区',
- 510106: '金牛区',
- 510107: '武侯区',
- 510108: '成华区',
- 510112: '龙泉驿区',
- 510113: '青白江区',
- 510114: '新都区',
- 510115: '温江区',
- 510121: '金堂县',
- 510122: '双流县',
- 510124: '郫县',
- 510129: '大邑县',
- 510131: '蒲江县',
- 510132: '新津县',
- 510181: '都江堰市',
- 510182: '彭州市',
- 510183: '邛崃市',
- 510184: '崇州市',
- 510185: '其它区',
- 510300: '自贡市',
- 510302: '自流井区',
- 510303: '贡井区',
- 510304: '大安区',
- 510311: '沿滩区',
- 510321: '荣县',
- 510322: '富顺县',
- 510323: '其它区',
- 510400: '攀枝花市',
- 510402: '东区',
- 510403: '西区',
- 510411: '仁和区',
- 510421: '米易县',
- 510422: '盐边县',
- 510423: '其它区',
- 510500: '泸州市',
- 510502: '江阳区',
- 510503: '纳溪区',
- 510504: '龙马潭区',
- 510521: '泸县',
- 510522: '合江县',
- 510524: '叙永县',
- 510525: '古蔺县',
- 510526: '其它区',
- 510600: '德阳市',
- 510603: '旌阳区',
- 510623: '中江县',
- 510626: '罗江县',
- 510681: '广汉市',
- 510682: '什邡市',
- 510683: '绵竹市',
- 510684: '其它区',
- 510700: '绵阳市',
- 510703: '涪城区',
- 510704: '游仙区',
- 510722: '三台县',
- 510723: '盐亭县',
- 510724: '安县',
- 510725: '梓潼县',
- 510726: '北川羌族自治县',
- 510727: '平武县',
- 510781: '江油市',
- 510782: '其它区',
- 510800: '广元市',
- 510802: '利州区',
- 510811: '昭化区',
- 510812: '朝天区',
- 510821: '旺苍县',
- 510822: '青川县',
- 510823: '剑阁县',
- 510824: '苍溪县',
- 510825: '其它区',
- 510900: '遂宁市',
- 510903: '船山区',
- 510904: '安居区',
- 510921: '蓬溪县',
- 510922: '射洪县',
- 510923: '大英县',
- 510924: '其它区',
- 511000: '内江市',
- 511002: '市中区',
- 511011: '东兴区',
- 511024: '威远县',
- 511025: '资中县',
- 511028: '隆昌县',
- 511029: '其它区',
- 511100: '乐山市',
- 511102: '市中区',
- 511111: '沙湾区',
- 511112: '五通桥区',
- 511113: '金口河区',
- 511123: '犍为县',
- 511124: '井研县',
- 511126: '夹江县',
- 511129: '沐川县',
- 511132: '峨边彝族自治县',
- 511133: '马边彝族自治县',
- 511181: '峨眉山市',
- 511182: '其它区',
- 511300: '南充市',
- 511302: '顺庆区',
- 511303: '高坪区',
- 511304: '嘉陵区',
- 511321: '南部县',
- 511322: '营山县',
- 511323: '蓬安县',
- 511324: '仪陇县',
- 511325: '西充县',
- 511381: '阆中市',
- 511382: '其它区',
- 511400: '眉山市',
- 511402: '东坡区',
- 511421: '仁寿县',
- 511422: '彭山县',
- 511423: '洪雅县',
- 511424: '丹棱县',
- 511425: '青神县',
- 511426: '其它区',
- 511500: '宜宾市',
- 511502: '翠屏区',
- 511521: '宜宾县',
- 511522: '南溪区',
- 511523: '江安县',
- 511524: '长宁县',
- 511525: '高县',
- 511526: '珙县',
- 511527: '筠连县',
- 511528: '兴文县',
- 511529: '屏山县',
- 511530: '其它区',
- 511600: '广安市',
- 511602: '广安区',
- 511603: '前锋区',
- 511621: '岳池县',
- 511622: '武胜县',
- 511623: '邻水县',
- 511681: '华蓥市',
- 511683: '其它区',
- 511700: '达州市',
- 511702: '通川区',
- 511721: '达川区',
- 511722: '宣汉县',
- 511723: '开江县',
- 511724: '大竹县',
- 511725: '渠县',
- 511781: '万源市',
- 511782: '其它区',
- 511800: '雅安市',
- 511802: '雨城区',
- 511821: '名山区',
- 511822: '荥经县',
- 511823: '汉源县',
- 511824: '石棉县',
- 511825: '天全县',
- 511826: '芦山县',
- 511827: '宝兴县',
- 511828: '其它区',
- 511900: '巴中市',
- 511902: '巴州区',
- 511903: '恩阳区',
- 511921: '通江县',
- 511922: '南江县',
- 511923: '平昌县',
- 511924: '其它区',
- 512000: '资阳市',
- 512002: '雁江区',
- 512021: '安岳县',
- 512022: '乐至县',
- 512081: '简阳市',
- 512082: '其它区',
- 513200: '阿坝藏族羌族自治州',
- 513221: '汶川县',
- 513222: '理县',
- 513223: '茂县',
- 513224: '松潘县',
- 513225: '九寨沟县',
- 513226: '金川县',
- 513227: '小金县',
- 513228: '黑水县',
- 513229: '马尔康县',
- 513230: '壤塘县',
- 513231: '阿坝县',
- 513232: '若尔盖县',
- 513233: '红原县',
- 513234: '其它区',
- 513300: '甘孜藏族自治州',
- 513321: '康定县',
- 513322: '泸定县',
- 513323: '丹巴县',
- 513324: '九龙县',
- 513325: '雅江县',
- 513326: '道孚县',
- 513327: '炉霍县',
- 513328: '甘孜县',
- 513329: '新龙县',
- 513330: '德格县',
- 513331: '白玉县',
- 513332: '石渠县',
- 513333: '色达县',
- 513334: '理塘县',
- 513335: '巴塘县',
- 513336: '乡城县',
- 513337: '稻城县',
- 513338: '得荣县',
- 513339: '其它区',
- 513400: '凉山彝族自治州',
- 513401: '西昌市',
- 513422: '木里藏族自治县',
- 513423: '盐源县',
- 513424: '德昌县',
- 513425: '会理县',
- 513426: '会东县',
- 513427: '宁南县',
- 513428: '普格县',
- 513429: '布拖县',
- 513430: '金阳县',
- 513431: '昭觉县',
- 513432: '喜德县',
- 513433: '冕宁县',
- 513434: '越西县',
- 513435: '甘洛县',
- 513436: '美姑县',
- 513437: '雷波县',
- 513438: '其它区',
- 520000: '贵州省',
- 520100: '贵阳市',
- 520102: '南明区',
- 520103: '云岩区',
- 520111: '花溪区',
- 520112: '乌当区',
- 520113: '白云区',
- 520121: '开阳县',
- 520122: '息烽县',
- 520123: '修文县',
- 520151: '观山湖区',
- 520181: '清镇市',
- 520182: '其它区',
- 520200: '六盘水市',
- 520201: '钟山区',
- 520203: '六枝特区',
- 520221: '水城县',
- 520222: '盘县',
- 520223: '其它区',
- 520300: '遵义市',
- 520302: '红花岗区',
- 520303: '汇川区',
- 520321: '遵义县',
- 520322: '桐梓县',
- 520323: '绥阳县',
- 520324: '正安县',
- 520325: '道真仡佬族苗族自治县',
- 520326: '务川仡佬族苗族自治县',
- 520327: '凤冈县',
- 520328: '湄潭县',
- 520329: '余庆县',
- 520330: '习水县',
- 520381: '赤水市',
- 520382: '仁怀市',
- 520383: '其它区',
- 520400: '安顺市',
- 520402: '西秀区',
- 520421: '平坝县',
- 520422: '普定县',
- 520423: '镇宁布依族苗族自治县',
- 520424: '关岭布依族苗族自治县',
- 520425: '紫云苗族布依族自治县',
- 520426: '其它区',
- 522200: '铜仁市',
- 522201: '碧江区',
- 522222: '江口县',
- 522223: '玉屏侗族自治县',
- 522224: '石阡县',
- 522225: '思南县',
- 522226: '印江土家族苗族自治县',
- 522227: '德江县',
- 522228: '沿河土家族自治县',
- 522229: '松桃苗族自治县',
- 522230: '万山区',
- 522231: '其它区',
- 522300: '黔西南布依族苗族自治州',
- 522301: '兴义市',
- 522322: '兴仁县',
- 522323: '普安县',
- 522324: '晴隆县',
- 522325: '贞丰县',
- 522326: '望谟县',
- 522327: '册亨县',
- 522328: '安龙县',
- 522329: '其它区',
- 522400: '毕节市',
- 522401: '七星关区',
- 522422: '大方县',
- 522423: '黔西县',
- 522424: '金沙县',
- 522425: '织金县',
- 522426: '纳雍县',
- 522427: '威宁彝族回族苗族自治县',
- 522428: '赫章县',
- 522429: '其它区',
- 522600: '黔东南苗族侗族自治州',
- 522601: '凯里市',
- 522622: '黄平县',
- 522623: '施秉县',
- 522624: '三穗县',
- 522625: '镇远县',
- 522626: '岑巩县',
- 522627: '天柱县',
- 522628: '锦屏县',
- 522629: '剑河县',
- 522630: '台江县',
- 522631: '黎平县',
- 522632: '榕江县',
- 522633: '从江县',
- 522634: '雷山县',
- 522635: '麻江县',
- 522636: '丹寨县',
- 522637: '其它区',
- 522700: '黔南布依族苗族自治州',
- 522701: '都匀市',
- 522702: '福泉市',
- 522722: '荔波县',
- 522723: '贵定县',
- 522725: '瓮安县',
- 522726: '独山县',
- 522727: '平塘县',
- 522728: '罗甸县',
- 522729: '长顺县',
- 522730: '龙里县',
- 522731: '惠水县',
- 522732: '三都水族自治县',
- 522733: '其它区',
- 530000: '云南省',
- 530100: '昆明市',
- 530102: '五华区',
- 530103: '盘龙区',
- 530111: '官渡区',
- 530112: '西山区',
- 530113: '东川区',
- 530121: '呈贡区',
- 530122: '晋宁县',
- 530124: '富民县',
- 530125: '宜良县',
- 530126: '石林彝族自治县',
- 530127: '嵩明县',
- 530128: '禄劝彝族苗族自治县',
- 530129: '寻甸回族彝族自治县',
- 530181: '安宁市',
- 530182: '其它区',
- 530300: '曲靖市',
- 530302: '麒麟区',
- 530321: '马龙县',
- 530322: '陆良县',
- 530323: '师宗县',
- 530324: '罗平县',
- 530325: '富源县',
- 530326: '会泽县',
- 530328: '沾益县',
- 530381: '宣威市',
- 530382: '其它区',
- 530400: '玉溪市',
- 530402: '红塔区',
- 530421: '江川县',
- 530422: '澄江县',
- 530423: '通海县',
- 530424: '华宁县',
- 530425: '易门县',
- 530426: '峨山彝族自治县',
- 530427: '新平彝族傣族自治县',
- 530428: '元江哈尼族彝族傣族自治县',
- 530429: '其它区',
- 530500: '保山市',
- 530502: '隆阳区',
- 530521: '施甸县',
- 530522: '腾冲县',
- 530523: '龙陵县',
- 530524: '昌宁县',
- 530525: '其它区',
- 530600: '昭通市',
- 530602: '昭阳区',
- 530621: '鲁甸县',
- 530622: '巧家县',
- 530623: '盐津县',
- 530624: '大关县',
- 530625: '永善县',
- 530626: '绥江县',
- 530627: '镇雄县',
- 530628: '彝良县',
- 530629: '威信县',
- 530630: '水富县',
- 530631: '其它区',
- 530700: '丽江市',
- 530702: '古城区',
- 530721: '玉龙纳西族自治县',
- 530722: '永胜县',
- 530723: '华坪县',
- 530724: '宁蒗彝族自治县',
- 530725: '其它区',
- 530800: '普洱市',
- 530802: '思茅区',
- 530821: '宁洱哈尼族彝族自治县',
- 530822: '墨江哈尼族自治县',
- 530823: '景东彝族自治县',
- 530824: '景谷傣族彝族自治县',
- 530825: '镇沅彝族哈尼族拉祜族自治县',
- 530826: '江城哈尼族彝族自治县',
- 530827: '孟连傣族拉祜族佤族自治县',
- 530828: '澜沧拉祜族自治县',
- 530829: '西盟佤族自治县',
- 530830: '其它区',
- 530900: '临沧市',
- 530902: '临翔区',
- 530921: '凤庆县',
- 530922: '云县',
- 530923: '永德县',
- 530924: '镇康县',
- 530925: '双江拉祜族佤族布朗族傣族自治县',
- 530926: '耿马傣族佤族自治县',
- 530927: '沧源佤族自治县',
- 530928: '其它区',
- 532300: '楚雄彝族自治州',
- 532301: '楚雄市',
- 532322: '双柏县',
- 532323: '牟定县',
- 532324: '南华县',
- 532325: '姚安县',
- 532326: '大姚县',
- 532327: '永仁县',
- 532328: '元谋县',
- 532329: '武定县',
- 532331: '禄丰县',
- 532332: '其它区',
- 532500: '红河哈尼族彝族自治州',
- 532501: '个旧市',
- 532502: '开远市',
- 532522: '蒙自市',
- 532523: '屏边苗族自治县',
- 532524: '建水县',
- 532525: '石屏县',
- 532526: '弥勒市',
- 532527: '泸西县',
- 532528: '元阳县',
- 532529: '红河县',
- 532530: '金平苗族瑶族傣族自治县',
- 532531: '绿春县',
- 532532: '河口瑶族自治县',
- 532533: '其它区',
- 532600: '文山壮族苗族自治州',
- 532621: '文山市',
- 532622: '砚山县',
- 532623: '西畴县',
- 532624: '麻栗坡县',
- 532625: '马关县',
- 532626: '丘北县',
- 532627: '广南县',
- 532628: '富宁县',
- 532629: '其它区',
- 532800: '西双版纳傣族自治州',
- 532801: '景洪市',
- 532822: '勐海县',
- 532823: '勐腊县',
- 532824: '其它区',
- 532900: '大理白族自治州',
- 532901: '大理市',
- 532922: '漾濞彝族自治县',
- 532923: '祥云县',
- 532924: '宾川县',
- 532925: '弥渡县',
- 532926: '南涧彝族自治县',
- 532927: '巍山彝族回族自治县',
- 532928: '永平县',
- 532929: '云龙县',
- 532930: '洱源县',
- 532931: '剑川县',
- 532932: '鹤庆县',
- 532933: '其它区',
- 533100: '德宏傣族景颇族自治州',
- 533102: '瑞丽市',
- 533103: '芒市',
- 533122: '梁河县',
- 533123: '盈江县',
- 533124: '陇川县',
- 533125: '其它区',
- 533300: '怒江傈僳族自治州',
- 533321: '泸水县',
- 533323: '福贡县',
- 533324: '贡山独龙族怒族自治县',
- 533325: '兰坪白族普米族自治县',
- 533326: '其它区',
- 533400: '迪庆藏族自治州',
- 533421: '香格里拉县',
- 533422: '德钦县',
- 533423: '维西傈僳族自治县',
- 533424: '其它区',
- 540000: '西藏自治区',
- 540100: '拉萨市',
- 540102: '城关区',
- 540121: '林周县',
- 540122: '当雄县',
- 540123: '尼木县',
- 540124: '曲水县',
- 540125: '堆龙德庆县',
- 540126: '达孜县',
- 540127: '墨竹工卡县',
- 540128: '其它区',
- 542100: '昌都地区',
- 542121: '昌都县',
- 542122: '江达县',
- 542123: '贡觉县',
- 542124: '类乌齐县',
- 542125: '丁青县',
- 542126: '察雅县',
- 542127: '八宿县',
- 542128: '左贡县',
- 542129: '芒康县',
- 542132: '洛隆县',
- 542133: '边坝县',
- 542134: '其它区',
- 542200: '山南地区',
- 542221: '乃东县',
- 542222: '扎囊县',
- 542223: '贡嘎县',
- 542224: '桑日县',
- 542225: '琼结县',
- 542226: '曲松县',
- 542227: '措美县',
- 542228: '洛扎县',
- 542229: '加查县',
- 542231: '隆子县',
- 542232: '错那县',
- 542233: '浪卡子县',
- 542234: '其它区',
- 542300: '日喀则地区',
- 542301: '日喀则市',
- 542322: '南木林县',
- 542323: '江孜县',
- 542324: '定日县',
- 542325: '萨迦县',
- 542326: '拉孜县',
- 542327: '昂仁县',
- 542328: '谢通门县',
- 542329: '白朗县',
- 542330: '仁布县',
- 542331: '康马县',
- 542332: '定结县',
- 542333: '仲巴县',
- 542334: '亚东县',
- 542335: '吉隆县',
- 542336: '聂拉木县',
- 542337: '萨嘎县',
- 542338: '岗巴县',
- 542339: '其它区',
- 542400: '那曲地区',
- 542421: '那曲县',
- 542422: '嘉黎县',
- 542423: '比如县',
- 542424: '聂荣县',
- 542425: '安多县',
- 542426: '申扎县',
- 542427: '索县',
- 542428: '班戈县',
- 542429: '巴青县',
- 542430: '尼玛县',
- 542431: '其它区',
- 542432: '双湖县',
- 542500: '阿里地区',
- 542521: '普兰县',
- 542522: '札达县',
- 542523: '噶尔县',
- 542524: '日土县',
- 542525: '革吉县',
- 542526: '改则县',
- 542527: '措勤县',
- 542528: '其它区',
- 542600: '林芝地区',
- 542621: '林芝县',
- 542622: '工布江达县',
- 542623: '米林县',
- 542624: '墨脱县',
- 542625: '波密县',
- 542626: '察隅县',
- 542627: '朗县',
- 542628: '其它区',
- 610000: '陕西省',
- 610100: '西安市',
- 610102: '新城区',
- 610103: '碑林区',
- 610104: '莲湖区',
- 610111: '灞桥区',
- 610112: '未央区',
- 610113: '雁塔区',
- 610114: '阎良区',
- 610115: '临潼区',
- 610116: '长安区',
- 610122: '蓝田县',
- 610124: '周至县',
- 610125: '户县',
- 610126: '高陵县',
- 610127: '其它区',
- 610200: '铜川市',
- 610202: '王益区',
- 610203: '印台区',
- 610204: '耀州区',
- 610222: '宜君县',
- 610223: '其它区',
- 610300: '宝鸡市',
- 610302: '渭滨区',
- 610303: '金台区',
- 610304: '陈仓区',
- 610322: '凤翔县',
- 610323: '岐山县',
- 610324: '扶风县',
- 610326: '眉县',
- 610327: '陇县',
- 610328: '千阳县',
- 610329: '麟游县',
- 610330: '凤县',
- 610331: '太白县',
- 610332: '其它区',
- 610400: '咸阳市',
- 610402: '秦都区',
- 610403: '杨陵区',
- 610404: '渭城区',
- 610422: '三原县',
- 610423: '泾阳县',
- 610424: '乾县',
- 610425: '礼泉县',
- 610426: '永寿县',
- 610427: '彬县',
- 610428: '长武县',
- 610429: '旬邑县',
- 610430: '淳化县',
- 610431: '武功县',
- 610481: '兴平市',
- 610482: '其它区',
- 610500: '渭南市',
- 610502: '临渭区',
- 610521: '华县',
- 610522: '潼关县',
- 610523: '大荔县',
- 610524: '合阳县',
- 610525: '澄城县',
- 610526: '蒲城县',
- 610527: '白水县',
- 610528: '富平县',
- 610581: '韩城市',
- 610582: '华阴市',
- 610583: '其它区',
- 610600: '延安市',
- 610602: '宝塔区',
- 610621: '延长县',
- 610622: '延川县',
- 610623: '子长县',
- 610624: '安塞县',
- 610625: '志丹县',
- 610626: '吴起县',
- 610627: '甘泉县',
- 610628: '富县',
- 610629: '洛川县',
- 610630: '宜川县',
- 610631: '黄龙县',
- 610632: '黄陵县',
- 610633: '其它区',
- 610700: '汉中市',
- 610702: '汉台区',
- 610721: '南郑县',
- 610722: '城固县',
- 610723: '洋县',
- 610724: '西乡县',
- 610725: '勉县',
- 610726: '宁强县',
- 610727: '略阳县',
- 610728: '镇巴县',
- 610729: '留坝县',
- 610730: '佛坪县',
- 610731: '其它区',
- 610800: '榆林市',
- 610802: '榆阳区',
- 610821: '神木县',
- 610822: '府谷县',
- 610823: '横山县',
- 610824: '靖边县',
- 610825: '定边县',
- 610826: '绥德县',
- 610827: '米脂县',
- 610828: '佳县',
- 610829: '吴堡县',
- 610830: '清涧县',
- 610831: '子洲县',
- 610832: '其它区',
- 610900: '安康市',
- 610902: '汉滨区',
- 610921: '汉阴县',
- 610922: '石泉县',
- 610923: '宁陕县',
- 610924: '紫阳县',
- 610925: '岚皋县',
- 610926: '平利县',
- 610927: '镇坪县',
- 610928: '旬阳县',
- 610929: '白河县',
- 610930: '其它区',
- 611000: '商洛市',
- 611002: '商州区',
- 611021: '洛南县',
- 611022: '丹凤县',
- 611023: '商南县',
- 611024: '山阳县',
- 611025: '镇安县',
- 611026: '柞水县',
- 611027: '其它区',
- 620000: '甘肃省',
- 620100: '兰州市',
- 620102: '城关区',
- 620103: '七里河区',
- 620104: '西固区',
- 620105: '安宁区',
- 620111: '红古区',
- 620121: '永登县',
- 620122: '皋兰县',
- 620123: '榆中县',
- 620124: '其它区',
- 620200: '嘉峪关市',
- 620300: '金昌市',
- 620302: '金川区',
- 620321: '永昌县',
- 620322: '其它区',
- 620400: '白银市',
- 620402: '白银区',
- 620403: '平川区',
- 620421: '靖远县',
- 620422: '会宁县',
- 620423: '景泰县',
- 620424: '其它区',
- 620500: '天水市',
- 620502: '秦州区',
- 620503: '麦积区',
- 620521: '清水县',
- 620522: '秦安县',
- 620523: '甘谷县',
- 620524: '武山县',
- 620525: '张家川回族自治县',
- 620526: '其它区',
- 620600: '武威市',
- 620602: '凉州区',
- 620621: '民勤县',
- 620622: '古浪县',
- 620623: '天祝藏族自治县',
- 620624: '其它区',
- 620700: '张掖市',
- 620702: '甘州区',
- 620721: '肃南裕固族自治县',
- 620722: '民乐县',
- 620723: '临泽县',
- 620724: '高台县',
- 620725: '山丹县',
- 620726: '其它区',
- 620800: '平凉市',
- 620802: '崆峒区',
- 620821: '泾川县',
- 620822: '灵台县',
- 620823: '崇信县',
- 620824: '华亭县',
- 620825: '庄浪县',
- 620826: '静宁县',
- 620827: '其它区',
- 620900: '酒泉市',
- 620902: '肃州区',
- 620921: '金塔县',
- 620922: '瓜州县',
- 620923: '肃北蒙古族自治县',
- 620924: '阿克塞哈萨克族自治县',
- 620981: '玉门市',
- 620982: '敦煌市',
- 620983: '其它区',
- 621000: '庆阳市',
- 621002: '西峰区',
- 621021: '庆城县',
- 621022: '环县',
- 621023: '华池县',
- 621024: '合水县',
- 621025: '正宁县',
- 621026: '宁县',
- 621027: '镇原县',
- 621028: '其它区',
- 621100: '定西市',
- 621102: '安定区',
- 621121: '通渭县',
- 621122: '陇西县',
- 621123: '渭源县',
- 621124: '临洮县',
- 621125: '漳县',
- 621126: '岷县',
- 621127: '其它区',
- 621200: '陇南市',
- 621202: '武都区',
- 621221: '成县',
- 621222: '文县',
- 621223: '宕昌县',
- 621224: '康县',
- 621225: '西和县',
- 621226: '礼县',
- 621227: '徽县',
- 621228: '两当县',
- 621229: '其它区',
- 622900: '临夏回族自治州',
- 622901: '临夏市',
- 622921: '临夏县',
- 622922: '康乐县',
- 622923: '永靖县',
- 622924: '广河县',
- 622925: '和政县',
- 622926: '东乡族自治县',
- 622927: '积石山保安族东乡族撒拉族自治县',
- 622928: '其它区',
- 623000: '甘南藏族自治州',
- 623001: '合作市',
- 623021: '临潭县',
- 623022: '卓尼县',
- 623023: '舟曲县',
- 623024: '迭部县',
- 623025: '玛曲县',
- 623026: '碌曲县',
- 623027: '夏河县',
- 623028: '其它区',
- 630000: '青海省',
- 630100: '西宁市',
- 630102: '城东区',
- 630103: '城中区',
- 630104: '城西区',
- 630105: '城北区',
- 630121: '大通回族土族自治县',
- 630122: '湟中县',
- 630123: '湟源县',
- 630124: '其它区',
- 632100: '海东市',
- 632121: '平安县',
- 632122: '民和回族土族自治县',
- 632123: '乐都区',
- 632126: '互助土族自治县',
- 632127: '化隆回族自治县',
- 632128: '循化撒拉族自治县',
- 632129: '其它区',
- 632200: '海北藏族自治州',
- 632221: '门源回族自治县',
- 632222: '祁连县',
- 632223: '海晏县',
- 632224: '刚察县',
- 632225: '其它区',
- 632300: '黄南藏族自治州',
- 632321: '同仁县',
- 632322: '尖扎县',
- 632323: '泽库县',
- 632324: '河南蒙古族自治县',
- 632325: '其它区',
- 632500: '海南藏族自治州',
- 632521: '共和县',
- 632522: '同德县',
- 632523: '贵德县',
- 632524: '兴海县',
- 632525: '贵南县',
- 632526: '其它区',
- 632600: '果洛藏族自治州',
- 632621: '玛沁县',
- 632622: '班玛县',
- 632623: '甘德县',
- 632624: '达日县',
- 632625: '久治县',
- 632626: '玛多县',
- 632627: '其它区',
- 632700: '玉树藏族自治州',
- 632721: '玉树市',
- 632722: '杂多县',
- 632723: '称多县',
- 632724: '治多县',
- 632725: '囊谦县',
- 632726: '曲麻莱县',
- 632727: '其它区',
- 632800: '海西蒙古族藏族自治州',
- 632801: '格尔木市',
- 632802: '德令哈市',
- 632821: '乌兰县',
- 632822: '都兰县',
- 632823: '天峻县',
- 632824: '其它区',
- 640000: '宁夏回族自治区',
- 640100: '银川市',
- 640104: '兴庆区',
- 640105: '西夏区',
- 640106: '金凤区',
- 640121: '永宁县',
- 640122: '贺兰县',
- 640181: '灵武市',
- 640182: '其它区',
- 640200: '石嘴山市',
- 640202: '大武口区',
- 640205: '惠农区',
- 640221: '平罗县',
- 640222: '其它区',
- 640300: '吴忠市',
- 640302: '利通区',
- 640303: '红寺堡区',
- 640323: '盐池县',
- 640324: '同心县',
- 640381: '青铜峡市',
- 640382: '其它区',
- 640400: '固原市',
- 640402: '原州区',
- 640422: '西吉县',
- 640423: '隆德县',
- 640424: '泾源县',
- 640425: '彭阳县',
- 640426: '其它区',
- 640500: '中卫市',
- 640502: '沙坡头区',
- 640521: '中宁县',
- 640522: '海原县',
- 640523: '其它区',
- 650000: '新疆维吾尔自治区',
- 650100: '乌鲁木齐市',
- 650102: '天山区',
- 650103: '沙依巴克区',
- 650104: '新市区',
- 650105: '水磨沟区',
- 650106: '头屯河区',
- 650107: '达坂城区',
- 650109: '米东区',
- 650121: '乌鲁木齐县',
- 650122: '其它区',
- 650200: '克拉玛依市',
- 650202: '独山子区',
- 650203: '克拉玛依区',
- 650204: '白碱滩区',
- 650205: '乌尔禾区',
- 650206: '其它区',
- 652100: '吐鲁番地区',
- 652101: '吐鲁番市',
- 652122: '鄯善县',
- 652123: '托克逊县',
- 652124: '其它区',
- 652200: '哈密地区',
- 652201: '哈密市',
- 652222: '巴里坤哈萨克自治县',
- 652223: '伊吾县',
- 652224: '其它区',
- 652300: '昌吉回族自治州',
- 652301: '昌吉市',
- 652302: '阜康市',
- 652323: '呼图壁县',
- 652324: '玛纳斯县',
- 652325: '奇台县',
- 652327: '吉木萨尔县',
- 652328: '木垒哈萨克自治县',
- 652329: '其它区',
- 652700: '博尔塔拉蒙古自治州',
- 652701: '博乐市',
- 652702: '阿拉山口市',
- 652722: '精河县',
- 652723: '温泉县',
- 652724: '其它区',
- 652800: '巴音郭楞蒙古自治州',
- 652801: '库尔勒市',
- 652822: '轮台县',
- 652823: '尉犁县',
- 652824: '若羌县',
- 652825: '且末县',
- 652826: '焉耆回族自治县',
- 652827: '和静县',
- 652828: '和硕县',
- 652829: '博湖县',
- 652830: '其它区',
- 652900: '阿克苏地区',
- 652901: '阿克苏市',
- 652922: '温宿县',
- 652923: '库车县',
- 652924: '沙雅县',
- 652925: '新和县',
- 652926: '拜城县',
- 652927: '乌什县',
- 652928: '阿瓦提县',
- 652929: '柯坪县',
- 652930: '其它区',
- 653000: '克孜勒苏柯尔克孜自治州',
- 653001: '阿图什市',
- 653022: '阿克陶县',
- 653023: '阿合奇县',
- 653024: '乌恰县',
- 653025: '其它区',
- 653100: '喀什地区',
- 653101: '喀什市',
- 653121: '疏附县',
- 653122: '疏勒县',
- 653123: '英吉沙县',
- 653124: '泽普县',
- 653125: '莎车县',
- 653126: '叶城县',
- 653127: '麦盖提县',
- 653128: '岳普湖县',
- 653129: '伽师县',
- 653130: '巴楚县',
- 653131: '塔什库尔干塔吉克自治县',
- 653132: '其它区',
- 653200: '和田地区',
- 653201: '和田市',
- 653221: '和田县',
- 653222: '墨玉县',
- 653223: '皮山县',
- 653224: '洛浦县',
- 653225: '策勒县',
- 653226: '于田县',
- 653227: '民丰县',
- 653228: '其它区',
- 654000: '伊犁哈萨克自治州',
- 654002: '伊宁市',
- 654003: '奎屯市',
- 654021: '伊宁县',
- 654022: '察布查尔锡伯自治县',
- 654023: '霍城县',
- 654024: '巩留县',
- 654025: '新源县',
- 654026: '昭苏县',
- 654027: '特克斯县',
- 654028: '尼勒克县',
- 654029: '其它区',
- 654200: '塔城地区',
- 654201: '塔城市',
- 654202: '乌苏市',
- 654221: '额敏县',
- 654223: '沙湾县',
- 654224: '托里县',
- 654225: '裕民县',
- 654226: '和布克赛尔蒙古自治县',
- 654227: '其它区',
- 654300: '阿勒泰地区',
- 654301: '阿勒泰市',
- 654321: '布尔津县',
- 654322: '富蕴县',
- 654323: '福海县',
- 654324: '哈巴河县',
- 654325: '青河县',
- 654326: '吉木乃县',
- 654327: '其它区',
- 659001: '石河子市',
- 659002: '阿拉尔市',
- 659003: '图木舒克市',
- 659004: '五家渠市',
- 710000: '台湾',
- 710100: '台北市',
- 710101: '中正区',
- 710102: '大同区',
- 710103: '中山区',
- 710104: '松山区',
- 710105: '大安区',
- 710106: '万华区',
- 710107: '信义区',
- 710108: '士林区',
- 710109: '北投区',
- 710110: '内湖区',
- 710111: '南港区',
- 710112: '文山区',
- 710113: '其它区',
- 710200: '高雄市',
- 710201: '新兴区',
- 710202: '前金区',
- 710203: '芩雅区',
- 710204: '盐埕区',
- 710205: '鼓山区',
- 710206: '旗津区',
- 710207: '前镇区',
- 710208: '三民区',
- 710209: '左营区',
- 710210: '楠梓区',
- 710211: '小港区',
- 710212: '其它区',
- 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: '茄萣区',
- 710300: '台南市',
- 710301: '中西区',
- 710302: '东区',
- 710303: '南区',
- 710304: '北区',
- 710305: '安平区',
- 710306: '安南区',
- 710307: '其它区',
- 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: '安定区',
- 710400: '台中市',
- 710401: '中区',
- 710402: '东区',
- 710403: '南区',
- 710404: '西区',
- 710405: '北区',
- 710406: '北屯区',
- 710407: '西屯区',
- 710408: '南屯区',
- 710409: '其它区',
- 710431: '太平区',
- 710432: '大里区',
- 710433: '雾峰区',
- 710434: '乌日区',
- 710435: '丰原区',
- 710436: '后里区',
- 710437: '石冈区',
- 710438: '东势区',
- 710439: '和平区',
- 710440: '新社区',
- 710441: '潭子区',
- 710442: '大雅区',
- 710443: '神冈区',
- 710444: '大肚区',
- 710445: '沙鹿区',
- 710446: '龙井区',
- 710447: '梧栖区',
- 710448: '清水区',
- 710449: '大甲区',
- 710450: '外埔区',
- 710451: '大安区',
- 710500: '金门县',
- 710507: '金沙镇',
- 710508: '金湖镇',
- 710509: '金宁乡',
- 710510: '金城镇',
- 710511: '烈屿乡',
- 710512: '乌坵乡',
- 710600: '南投县',
- 710614: '南投市',
- 710615: '中寮乡',
- 710616: '草屯镇',
- 710617: '国姓乡',
- 710618: '埔里镇',
- 710619: '仁爱乡',
- 710620: '名间乡',
- 710621: '集集镇',
- 710622: '水里乡',
- 710623: '鱼池乡',
- 710624: '信义乡',
- 710625: '竹山镇',
- 710626: '鹿谷乡',
- 710700: '基隆市',
- 710701: '仁爱区',
- 710702: '信义区',
- 710703: '中正区',
- 710704: '中山区',
- 710705: '安乐区',
- 710706: '暖暖区',
- 710707: '七堵区',
- 710708: '其它区',
- 710800: '新竹市',
- 710801: '东区',
- 710802: '北区',
- 710803: '香山区',
- 710804: '其它区',
- 710900: '嘉义市',
- 710901: '东区',
- 710902: '西区',
- 710903: '其它区',
- 711100: '新北市',
- 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: '石门区',
- 711200: '宜兰县',
- 711214: '宜兰市',
- 711215: '头城镇',
- 711216: '礁溪乡',
- 711217: '壮围乡',
- 711218: '员山乡',
- 711219: '罗东镇',
- 711220: '三星乡',
- 711221: '大同乡',
- 711222: '五结乡',
- 711223: '冬山乡',
- 711224: '苏澳镇',
- 711225: '南澳乡',
- 711226: '钓鱼台',
- 711300: '新竹县',
- 711314: '竹北市',
- 711315: '湖口乡',
- 711316: '新丰乡',
- 711317: '新埔镇',
- 711318: '关西镇',
- 711319: '芎林乡',
- 711320: '宝山乡',
- 711321: '竹东镇',
- 711322: '五峰乡',
- 711323: '横山乡',
- 711324: '尖石乡',
- 711325: '北埔乡',
- 711326: '峨眉乡',
- 711400: '桃园县',
- 711414: '中坜市',
- 711415: '平镇市',
- 711416: '龙潭乡',
- 711417: '杨梅市',
- 711418: '新屋乡',
- 711419: '观音乡',
- 711420: '桃园市',
- 711421: '龟山乡',
- 711422: '八德市',
- 711423: '大溪镇',
- 711424: '复兴乡',
- 711425: '大园乡',
- 711426: '芦竹乡',
- 711500: '苗栗县',
- 711519: '竹南镇',
- 711520: '头份镇',
- 711521: '三湾乡',
- 711522: '南庄乡',
- 711523: '狮潭乡',
- 711524: '后龙镇',
- 711525: '通霄镇',
- 711526: '苑里镇',
- 711527: '苗栗市',
- 711528: '造桥乡',
- 711529: '头屋乡',
- 711530: '公馆乡',
- 711531: '大湖乡',
- 711532: '泰安乡',
- 711533: '铜锣乡',
- 711534: '三义乡',
- 711535: '西湖乡',
- 711536: '卓兰镇',
- 711700: '彰化县',
- 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: '二水乡',
- 711900: '嘉义县',
- 711919: '番路乡',
- 711920: '梅山乡',
- 711921: '竹崎乡',
- 711922: '阿里山乡',
- 711923: '中埔乡',
- 711924: '大埔乡',
- 711925: '水上乡',
- 711926: '鹿草乡',
- 711927: '太保市',
- 711928: '朴子市',
- 711929: '东石乡',
- 711930: '六脚乡',
- 711931: '新港乡',
- 711932: '民雄乡',
- 711933: '大林镇',
- 711934: '溪口乡',
- 711935: '义竹乡',
- 711936: '布袋镇',
- 712100: '云林县',
- 712121: '斗南镇',
- 712122: '大埤乡',
- 712123: '虎尾镇',
- 712124: '土库镇',
- 712125: '褒忠乡',
- 712126: '东势乡',
- 712127: '台西乡',
- 712128: '仑背乡',
- 712129: '麦寮乡',
- 712130: '斗六市',
- 712131: '林内乡',
- 712132: '古坑乡',
- 712133: '莿桐乡',
- 712134: '西螺镇',
- 712135: '二仑乡',
- 712136: '北港镇',
- 712137: '水林乡',
- 712138: '口湖乡',
- 712139: '四湖乡',
- 712140: '元长乡',
- 712400: '屏东县',
- 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: '满州乡',
- 712500: '台东县',
- 712517: '台东市',
- 712518: '绿岛乡',
- 712519: '兰屿乡',
- 712520: '延平乡',
- 712521: '卑南乡',
- 712522: '鹿野乡',
- 712523: '关山镇',
- 712524: '海端乡',
- 712525: '池上乡',
- 712526: '东河乡',
- 712527: '成功镇',
- 712528: '长滨乡',
- 712529: '金峰乡',
- 712530: '大武乡',
- 712531: '达仁乡',
- 712532: '太麻里乡',
- 712600: '花莲县',
- 712615: '花莲市',
- 712616: '新城乡',
- 712617: '太鲁阁',
- 712618: '秀林乡',
- 712619: '吉安乡',
- 712620: '寿丰乡',
- 712621: '凤林镇',
- 712622: '光复乡',
- 712623: '丰滨乡',
- 712624: '瑞穗乡',
- 712625: '万荣乡',
- 712626: '玉里镇',
- 712627: '卓溪乡',
- 712628: '富里乡',
- 712700: '澎湖县',
- 712707: '马公市',
- 712708: '西屿乡',
- 712709: '望安乡',
- 712710: '七美乡',
- 712711: '白沙乡',
- 712712: '湖西乡',
- 712800: '连江县',
- 712805: '南竿乡',
- 712806: '北竿乡',
- 712807: '莒光乡',
- 712808: '东引乡',
- 810000: '香港特别行政区',
- 810100: '香港岛',
- 810101: '中西区',
- 810102: '湾仔',
- 810103: '东区',
- 810104: '南区',
- 810200: '九龙',
- 810201: '九龙城区',
- 810202: '油尖旺区',
- 810203: '深水埗区',
- 810204: '黄大仙区',
- 810205: '观塘区',
- 810300: '新界',
- 810301: '北区',
- 810302: '大埔区',
- 810303: '沙田区',
- 810304: '西贡区',
- 810305: '元朗区',
- 810306: '屯门区',
- 810307: '荃湾区',
- 810308: '葵青区',
- 810309: '离岛区',
- 820000: '澳门特别行政区',
- 820100: '澳门半岛',
- 820200: '离岛',
- 990000: '海外',
- 990100: '海外',
-};
-
-const tree = list => {
- let hashTable = Object.create(null);
- list.forEach(aData => (hashTable[aData.id] = { ...aData, children: [] }));
- let dataTree = [];
- list.forEach(aData => {
- if (aData.pid) {
- if (hashTable[aData.pid]) hashTable[aData.pid].children.push(hashTable[aData.id]);
- } else dataTree.push(hashTable[aData.id]);
- });
- return dataTree;
-};
-
-let DICT_FIXED = (function () {
- let fixed = [];
- for (let id in DICT) {
- if ({}.hasOwnProperty.call(DICT, id)) {
- let pid;
- const tmpObj = { id, value: DICT[id], label: DICT[id] };
- if (id.slice(2, 6) !== '0000') {
- pid = id.slice(4, 6) === '00' ? `${id.slice(0, 2)}0000` : `${id.slice(0, 4)}00`;
- }
- if (pid) tmpObj.pid = pid;
- fixed.push(tmpObj);
- }
- }
- return tree(fixed);
-})();
-
-export default DICT_FIXED;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/config.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/config.js
deleted file mode 100644
index f92e7975..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/config.js
+++ /dev/null
@@ -1,38 +0,0 @@
-const config = {
- siteName: 'inula Antd',
- copyright: 'Ant Design Admin ©2020 zuiidea',
- logoPath: '/logo.svg',
- apiPrefix: '/api/v1',
- fixedHeader: true, // sticky primary layout header
-
- /* Layout configuration, specify which layout to use for route. */
- layouts: [
- {
- name: 'primary',
- include: [/.*/],
- exclude: [/(\/(en|zh))*\/login/],
- },
- ],
-
- /* I18n configuration, `languages` and `defaultLanguage` are required currently. */
- i18n: {
- /* Countrys flags: https://www.flaticon.com/packs/countrys-flags */
- languages: [
- {
- key: 'pt-br',
- title: 'Português',
- },
- {
- key: 'en',
- title: 'English',
- },
- {
- key: 'zh',
- title: '中文',
- },
- ],
- defaultLanguage: 'en',
- },
-};
-
-export default config;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/constant.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/constant.js
deleted file mode 100644
index 80b0b7ed..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/constant.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export const ROLE_TYPE = {
- ADMIN: 'admin',
- DEFAULT: 'admin',
- DEVELOPER: 'developer',
-};
-
-export const CANCEL_REQUEST_MESSAGE = 'cancel request';
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/iconMap.jsx b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/iconMap.jsx
deleted file mode 100644
index 58f29731..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/iconMap.jsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import Inula from 'inulajs';
-import {
- PayCircleOutlined,
- ShoppingCartOutlined,
- MessageOutlined,
- TeamOutlined,
- UserOutlined,
- DashboardOutlined,
- ApiOutlined,
- CameraOutlined,
- EditOutlined,
- CodeOutlined,
- LineOutlined,
- BarChartOutlined,
- AreaChartOutlined,
-} from '@ant-design/icons';
-
-export default {
- 'pay-circle-o': ,
- 'shopping-cart': ,
- 'camera-o': ,
- 'line-chart': ,
- 'code-o': ,
- 'area-chart': ,
- 'bar-chart': ,
- message: ,
- team: ,
- dashboard: ,
- user: ,
- api: ,
- edit: ,
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/index.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/index.js
deleted file mode 100644
index 278fd352..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/index.js
+++ /dev/null
@@ -1,178 +0,0 @@
-import { cloneDeep } from 'lodash';
-import { pathToRegexp } from 'path-to-regexp';
-import moment from 'moment';
-import 'moment/locale/zh-cn';
-import store from 'store';
-import config from './config';
-
-// export classnames from 'classnames'
-// export config from './config'
-// export request from './request'
-// export { Color } from './theme'
-
-export const languages = config.i18n ? config.i18n.languages.map(item => item.key) : [];
-export const defaultLanguage = config.i18n ? config.i18n.defaultLanguage : '';
-
-/**
- * Query objects that specify keys and values in an array where all values are objects.
- * @param {array} array An array where all values are objects, like [{key:1},{key:2}].
- * @param {string} key The key of the object that needs to be queried.
- * @param {string} value The value of the object that needs to be queried.
- * @return {object|undefined} Return frist object when query success.
- */
-export function queryArray(array, key, value) {
- if (!Array.isArray(array)) {
- return;
- }
- return array.find(_ => _[key] === value);
-}
-
-/**
- * Convert an array to a tree-structured array.
- * @param {array} array The Array need to Converted.
- * @param {string} id The alias of the unique ID of the object in the array.
- * @param {string} parentId The alias of the parent ID of the object in the array.
- * @param {string} children The alias of children of the object in the array.
- * @return {array} Return a tree-structured array.
- */
-export function arrayToTree(array, id = 'id', parentId = 'pid', children = 'children') {
- const result = [];
- const hash = {};
- const data = cloneDeep(array);
-
- data.forEach((item, index) => {
- hash[data[index][id]] = data[index];
- });
-
- data.forEach(item => {
- const hashParent = hash[item[parentId]];
- if (hashParent) {
- !hashParent[children] && (hashParent[children] = []);
- hashParent[children].push(item);
- } else {
- result.push(item);
- }
- });
- return result;
-}
-
-/**
- * In an array object, traverse all parent IDs based on the value of an object.
- * @param {array} array The Array need to Converted.
- * @param {string} current Specify the value of the object that needs to be queried.
- * @param {string} parentId The alias of the parent ID of the object in the array.
- * @param {string} id The alias of the unique ID of the object in the array.
- * @return {array} Return a key array.
- */
-export function queryPathKeys(array, current, parentId, id = 'id') {
- const result = [current];
- const hashMap = new Map();
- array.forEach(item => hashMap.set(item[id], item));
-
- const getPath = current => {
- const currentParentId = hashMap.get(current)[parentId];
- if (currentParentId) {
- result.push(currentParentId);
- getPath(currentParentId);
- }
- };
-
- getPath(current);
- return result;
-}
-
-/**
- * In an array of objects, specify an object that traverses the objects whose parent ID matches.
- * @param {array} array The Array need to Converted.
- * @param {string} current Specify the object that needs to be queried.
- * @param {string} parentId The alias of the parent ID of the object in the array.
- * @param {string} id The alias of the unique ID of the object in the array.
- * @return {array} Return a key array.
- */
-export function queryAncestors(array, current, parentId, id = 'id') {
- const result = [current];
- const hashMap = new Map();
- array.forEach(item => hashMap.set(item[id], item));
-
- const getPath = current => {
- const currentParentId = hashMap.get(current[id])[parentId];
- if (currentParentId) {
- result.push(hashMap.get(currentParentId));
- getPath(hashMap.get(currentParentId));
- }
- };
-
- getPath(current);
- return result;
-}
-
-/**
- * Query which layout should be used for the current path based on the configuration.
- * @param {layouts} layouts Layout configuration.
- * @param {pathname} pathname Path name to be queried.
- * @return {string} Return frist object when query success.
- */
-export function queryLayout(layouts, pathname) {
- let result = 'public';
-
- const isMatch = regepx => {
- return regepx instanceof RegExp ? regepx.test(pathname) : pathToRegexp(regepx).exec(pathname);
- };
-
- for (const item of layouts) {
- let include = false;
- let exclude = false;
- if (item.include) {
- for (const regepx of item.include) {
- if (isMatch(regepx)) {
- include = true;
- break;
- }
- }
- }
-
- if (include && item.exclude) {
- for (const regepx of item.exclude) {
- if (isMatch(regepx)) {
- exclude = true;
- break;
- }
- }
- }
-
- if (include && !exclude) {
- result = item.name;
- break;
- }
- }
-
- return result;
-}
-
-export function getLocale() {
- return store.get('locale') || defaultLanguage;
-}
-
-export function setLocale(language) {
- if (getLocale() !== language) {
- moment.locale(language === 'zh' ? 'zh-cn' : language);
- store.set('locale', language);
- window.location.reload();
- }
-}
-
-export function parseSearch(search) {
- const searchObj = {};
- search.replace(/([^?&=]+)=([^&]+)/g, (_, k, v) => {
- if (k === "address") {
- if (searchObj[k]) {
- searchObj[k].push(decodeURI(v));
- } else {
- searchObj[k] = [decodeURI(v)]
- }
- } else {
- searchObj[k] = decodeURI(v)
- }
- });
- return searchObj;
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/index.test.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/index.test.js
deleted file mode 100644
index b13551eb..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/index.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const { pathToRegexp } = require('path-to-regexp');
-
-describe('test pathToRegexp', () => {
- it('get right', () => {
- expect(pathToRegexp('/user').exec('/zh/user')).toEqual(pathToRegexp('/user').exec('/user'));
- expect(pathToRegexp('/user').exec('/user')).toEqual(pathToRegexp('/user').exec('/user'));
-
- expect(pathToRegexp('/user/:id').exec('/zh/user/1')).toEqual(pathToRegexp('/user/:id').exec('/user/1'));
- expect(pathToRegexp('/user/:id').exec('/user/1')).toEqual(pathToRegexp('/user/:id').exec('/user/1'));
- });
-});
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/intl.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/intl.js
deleted file mode 100644
index 849ac39a..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/intl.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * 国际化,支持按需加载
- */
-
-import Inula from 'inulajs';
-import { createIntl, createIntlCache, FormattedMessage } from 'inula-intl';
-import zhCN from 'antd/lib/locale-provider/zh_CN';
-import enUS from 'antd/lib/locale-provider/en_US';
-import ptBR from 'antd/lib/locale-provider/pt_BR';
-
-import enMessage from '@/locales/en/messages';
-import zhMessage from '@/locales/zh/messages';
-import ptMessage from '@/locales/pt-br/messages';
-
-const _langResource = {
- zh: { ...zhCN, ...zhMessage },
- en: { ...enUS, ...enMessage },
- 'pt-br': { ...ptBR, ...ptMessage },
-};
-
-let _intl = null;
-
-export const getLangResource = lan => {
- if (!_intl) {
- _intl = createIntl({ locale: lan, messages: _langResource[lan] }, createIntlCache());
- }
-
- return _langResource;
-};
-
-export const loadLangResource = async lan => {
- if (!_intl) {
- _intl = createIntl({ locale: lan, messages: _langResource[lan] }, createIntlCache());
- }
-
- const messages = await import(`@/locales/${lan}/messages`);
-
- Object.keys(messages.default).forEach(key => {
- _langResource[lan][key] = messages.default[key];
- });
-
- Object.assign(_intl.messages, _langResource[lan]);
-};
-
-export const t = (key, values) => {
- if (!key) {
- return;
- }
-
- return _intl.formatMessage({ id: key }, values) || key;
-};
-
-export const Trans = ({ children }) => {
- return ;
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/request.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/request.js
deleted file mode 100644
index 48e1139d..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/request.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import axios from 'axios';
-import { cloneDeep } from 'lodash';
-
-import { parse, compile } from 'path-to-regexp';
-import { message } from 'antd';
-import { CANCEL_REQUEST_MESSAGE } from 'utils/constant';
-
-const { CancelToken } = axios;
-window.cancelRequest = new Map();
-
-export default function request(options) {
- let { data, url } = options;
- const cloneData = cloneDeep(data);
-
- try {
- let domain = '';
- const urlMatch = url.match(/[a-zA-z]+:\/\/[^/]*/);
- if (urlMatch) {
- [domain] = urlMatch;
- url = url.slice(domain.length);
- }
-
- const match = parse(url);
- url = compile(url)(data);
-
- for (const item of match) {
- if (item instanceof Object && item.name in cloneData) {
- delete cloneData[item.name];
- }
- }
- url = domain + url;
- } catch (e) {
- message.error(e.message);
- }
-
- options.url = url;
- options.cancelToken = new CancelToken(cancel => {
- window.cancelRequest.set(Symbol(Date.now()), {
- pathname: window.location.pathname,
- cancel,
- });
- });
-
- options.params = options.data;
-
- return axios(options)
- .then(response => {
- const { statusText, status, data } = response;
-
- let result = {};
- if (typeof data === 'object') {
- if (Array.isArray(data)) {
- result.list = data;
- } else {
- result = data;
- }
- } else {
- result.data = data;
- }
-
- return Promise.resolve({
- success: true,
- message: statusText,
- statusCode: status,
- ...result,
- });
- })
- .catch(error => {
- const { response, message } = error;
-
- if (String(message) === CANCEL_REQUEST_MESSAGE) {
- return {
- success: false,
- };
- }
-
- let msg;
- let statusCode;
-
- if (response && response instanceof Object) {
- const { data, statusText } = response;
- statusCode = response.status;
- msg = data.message || statusText;
- } else {
- statusCode = 600;
- msg = error.message || 'Network Error';
- }
-
- /* eslint-disable */
- return Promise.reject({
- success: false,
- statusCode,
- message: msg,
- });
- });
-}
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/theme.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/theme.js
deleted file mode 100644
index 86d7280b..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/src/admin/utils/theme.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const Color = {
- green: '#64ea91',
- blue: '#8fc9fb',
- purple: '#d897eb',
- red: '#f69899',
- yellow: '#f8c82e',
- peach: '#f797d6',
- borderBase: '#e5e5e5',
- borderSplit: '#f4f4f4',
- grass: '#d6fbb5',
- sky: '#c1e0fc',
-};
-
-export default Color;
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/vite/vite.config.js b/packages/create-inula/lib/generators/Inula-antd/templates/vite/vite.config.js
deleted file mode 100644
index 7d0a2410..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/vite/vite.config.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import { defineConfig } from 'vite';
-import react from '@vitejs/plugin-react';
-import path from 'path';
-import { viteMockServe } from 'vite-plugin-mock';
-// import requireTransform from 'vite-plugin-require-transform';
-
-let alias = {
- '@': path.resolve('src/admin'),
- api: path.resolve('src/admin/services/'),
- components: path.resolve('src/admin/components'),
- config: path.resolve('src/admin/utils/config'),
- themes: path.resolve('src/admin/themes'),
- utils: path.resolve('src/admin/utils'),
- react: 'inulajs', // 新增
- 'react-dom': 'inulajs', // 新增
- 'react/jsx-dev-runtime': 'inulajs/jsx-dev-runtime',
-};
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [
- react({
- babel: {
- plugins: [
- [
- '@babel/plugin-transform-react-jsx',
- {
- runtime: 'automatic', // 新增
- importSource: 'inulajs', // 新增
- },
- ],
- '@babel/plugin-proposal-class-properties',
- '@babel/plugin-syntax-dynamic-import',
- '@babel/plugin-proposal-export-default-from',
- ],
- },
- }),
- viteMockServe({
- mockPath: './mock',
- }),
- ],
- define: {
- global: 'window',
- },
- resolve: {
- alias,
- },
- optimizeDeps: {
- esbuildOptions: {
- loader: {
- '.js': 'jsx',
- '.ts': 'tsx',
- },
- },
- },
- css: {
- preprocessorOptions: {
- less: {
- javascriptEnabled: true,
- },
- },
- },
-});
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.editorconfig b/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.editorconfig
deleted file mode 100644
index 5a51806d..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-root = true
-
-[*]
-end_of_line = lf
-insert_final_newline = true
-charset = utf-8
-indent_size = 2
-indent_style = space
-trim_trailing_whitespace = true
-
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.env b/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.env
deleted file mode 100644
index 6c5aec02..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.env
+++ /dev/null
@@ -1,4 +0,0 @@
-PROJECT_NAME=my-app
-COMPILE_MODE=webpack
-BUILD_PATH=./webpack/webpack.dev.js
-DEBUG=true
\ No newline at end of file
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.eslintignore b/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.eslintignore
deleted file mode 100644
index 60feb237..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.eslintignore
+++ /dev/null
@@ -1,3 +0,0 @@
-**/node_modules
-build/
-*.d.ts
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.eslintrc.js b/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.eslintrc.js
deleted file mode 100644
index 273023f9..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.eslintrc.js
+++ /dev/null
@@ -1,54 +0,0 @@
-module.exports = {
- extends: ['@nce/eslint-config-nce'],
- parser: 'babel-eslint',
- env: {
- amd: true,
- es6: true,
- browser: true,
- node: false,
- },
- globals: {
- Prel: true,
- __webpack_public_path__: true,
- Axios: true,
- },
- settings: {
- 'import/resolver': {
- webpack: {
- config: 'webpack/webpack.basic.js',
- },
- },
- },
- rules: {
- indent: [
- 'error',
- 4,
- {
- SwitchCase: 1,
- flatTernaryExpressions: true,
- },
- ],
- 'no-unused-vars': 'off', // 允许变量声明后未使用
- 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
- 'no-underscore-dangle': ['off', 'always'], // 允许私有变量 _xxx的变量命名方式
- 'react/jsx-indent-props': [2, 4], // 验证JSX中的props缩进
- 'react/prop-types': 0, // 防止在React组件定义中丢失props验证
- 'react/jsx-indent': [
- // 解决react里面的缩进问题
- 'error',
- 4,
- ],
- 'filenames/match-exported': 0,
- 'react/jsx-one-expression-per-line': 0, // 关闭一个表达式必须换行设定
- 'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }], // 允许在 .js 和 .jsx 文件中使用 jsx
- 'consistent-return': 0,
- 'comma-dangle': [2, 'never'], // 组和对象键值对最后一个逗号, never参数:不能带末尾的逗号, always参数:必须带末尾的逗号
- 'react/button-has-type': 0, // button无需强制声明类型
- 'react/no-array-index-key': 0, // 允许使用数组index作为组件的key
- 'global-require': 0, // 允许require语句不出现在顶层中
- 'no-nested-ternary': 0, // 允许嵌套三元表达式
- 'no-unused-expressions': 0, // 允许使用未执行的表达式。比如fn是一个函数,允许 fn && fn()
- 'no-throw-literal': 0, // 允许throw抛出对象格式
- '@typescript-eslint/member-ordering': 0, // 禁用TypeScript声明规范
- },
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.gitignore b/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.gitignore
deleted file mode 100644
index 30ca8b5e..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/node_modules
-.idea
-.vscode
-package-lock.json
-/build
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.horizon.ts b/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.horizon.ts
deleted file mode 100644
index 7f3bb9ea..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.horizon.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export default {
- enableMock: true,
- mockPath: './mock',
-};
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.prettierignore b/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.prettierignore
deleted file mode 100644
index a3360cac..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.prettierignore
+++ /dev/null
@@ -1,4 +0,0 @@
-node_modules/
-webpack/
-build/
-public/
diff --git a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.prettierrc.js b/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.prettierrc.js
deleted file mode 100644
index 3b898b2a..00000000
--- a/packages/create-inula/lib/generators/Inula-antd/templates/webpack/.prettierrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-module.exports = {
- printWidth: 120, // 一行120字符数,如果超过会进行换行
- tabWidth: 2, // tab等2个空格
- useTabs: false, // 用空格缩进行
- semi: true, // 行尾使用分号
- singleQuote: true, // 字符串使用单引号
- quoteProps: 'as-needed', // 仅在需要时在对象属性添加引号
- jsxSingleQuote: false, // 在JSX中使用双引号
- trailingComma: 'es5', // 使用尾逗号(对象、数组等)
- bracketSpacing: true, // 对象的括号间增加空格
- jsxBracketSameLine: false, // 将多行JSX元素的>放在最后一行的末尾
- arrowParens: 'avoid', // 在唯一的arrow函数参数周围省略括号
- vueIndentScriptAndStyle: false, // 不缩进Vue文件中的