zhouhao
2022-01-04 83feeb994ed1e33474c62951356c7f38d3143583
first
65 files added
1 files modified
20865 ■■■■■ changed files
.gitignore 13 ●●●●● patch | view | raw | blame | history
README.md 4 ●●●● patch | view | raw | blame | history
babel.config.js 15 ●●●●● patch | view | raw | blame | history
package-lock.json 11530 ●●●●● patch | view | raw | blame | history
package.json 69 ●●●●● patch | view | raw | blame | history
postcss.config.js 11 ●●●●● patch | view | raw | blame | history
public/index.html 101 ●●●●● patch | view | raw | blame | history
src/App.vue 55 ●●●●● patch | view | raw | blame | history
src/api/config.js 123 ●●●●● patch | view | raw | blame | history
src/api/index.js 65 ●●●●● patch | view | raw | blame | history
src/assets/img/bg.png patch | view | raw | blame | history
src/assets/img/bg_top.png patch | view | raw | blame | history
src/assets/img/detailpark.png patch | view | raw | blame | history
src/assets/img/failstatus.png patch | view | raw | blame | history
src/assets/img/img_fail.png patch | view | raw | blame | history
src/assets/img/img_fail1.png patch | view | raw | blame | history
src/assets/img/img_success.png patch | view | raw | blame | history
src/assets/img/minebg.png patch | view | raw | blame | history
src/assets/img/nodata.png patch | view | raw | blame | history
src/assets/img/regbg.png patch | view | raw | blame | history
src/assets/img/success.png patch | view | raw | blame | history
src/assets/img/successw.png patch | view | raw | blame | history
src/components/vant_register.js 90 ●●●●● patch | view | raw | blame | history
src/index.js 70 ●●●●● patch | view | raw | blame | history
src/router/index.js 37 ●●●●● patch | view | raw | blame | history
src/router/routes.js 35 ●●●●● patch | view | raw | blame | history
src/store/index.js 90 ●●●●● patch | view | raw | blame | history
src/store/module/test.js 11 ●●●●● patch | view | raw | blame | history
src/store/mutations-types.js 30 ●●●●● patch | view | raw | blame | history
src/store/mutations.js 75 ●●●●● patch | view | raw | blame | history
src/style/common.less 213 ●●●●● patch | view | raw | blame | history
src/style/mixin.less 98 ●●●●● patch | view | raw | blame | history
src/style/mixins.less 139 ●●●●● patch | view | raw | blame | history
src/style/myVant.less 12 ●●●●● patch | view | raw | blame | history
src/style/myVideo.less 8 ●●●●● patch | view | raw | blame | history
src/style/normalize.less 219 ●●●●● patch | view | raw | blame | history
src/style/themes.less 52 ●●●●● patch | view | raw | blame | history
src/style/vant_reset.less 199 ●●●●● patch | view | raw | blame | history
src/utils/IDValidator.js 3844 ●●●●● patch | view | raw | blame | history
src/utils/camera.js 171 ●●●●● patch | view | raw | blame | history
src/utils/config.js 29 ●●●●● patch | view | raw | blame | history
src/utils/console.js 19 ●●●●● patch | view | raw | blame | history
src/utils/createUserProtocol.js 27 ●●●●● patch | view | raw | blame | history
src/utils/date.js 73 ●●●●● patch | view | raw | blame | history
src/utils/dateformat.js 282 ●●●●● patch | view | raw | blame | history
src/utils/deviceInfo.js 84 ●●●●● patch | view | raw | blame | history
src/utils/filters.js 31 ●●●●● patch | view | raw | blame | history
src/utils/formCheckAndComb.js 194 ●●●●● patch | view | raw | blame | history
src/utils/formValidator.js 101 ●●●●● patch | view | raw | blame | history
src/utils/index.js 361 ●●●●● patch | view | raw | blame | history
src/utils/jsBridge.js 265 ●●●●● patch | view | raw | blame | history
src/utils/pageBackByAndroid.js 36 ●●●●● patch | view | raw | blame | history
src/utils/validator.js 213 ●●●●● patch | view | raw | blame | history
src/views/main/addBankcard.vue 376 ●●●●● patch | view | raw | blame | history
src/views/main/findPreAudit.vue 56 ●●●●● patch | view | raw | blame | history
src/views/main/queryres.vue 145 ●●●●● patch | view | raw | blame | history
src/views/main/signcont.vue 205 ●●●●● patch | view | raw | blame | history
src/views/main/singsuc.vue 59 ●●●●● patch | view | raw | blame | history
static/README.md 8 ●●●●● patch | view | raw | blame | history
static/agreement1.js 440 ●●●●● patch | view | raw | blame | history
static/agreement2.js 226 ●●●●● patch | view | raw | blame | history
static/agreement5.js 8 ●●●●● patch | view | raw | blame | history
vue.config.js 15 ●●●●● patch | view | raw | blame | history
webpack.common.js 132 ●●●●● patch | view | raw | blame | history
webpack.dev.js 63 ●●●●● patch | view | raw | blame | history
webpack.prod.js 38 ●●●●● patch | view | raw | blame | history
.gitignore
New file
@@ -0,0 +1,13 @@
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
README.md
@@ -1,4 +1,4 @@
## comn_business
## sj_cus
佣金垫付进件端
锁机业务客户活体端
babel.config.js
New file
@@ -0,0 +1,15 @@
const plugins = ["@vue/babel-plugin-transform-vue-jsx"];
// 生产环境移除console
if(process.env.NODE_ENV === 'production') {
  plugins.push("transform-remove-console")
}
module.exports = {
    plugins: [
        ['import', {
            libraryName: 'vant',
            libraryDirectory: 'es',
            style: true
        }, 'vant']
    ]
};
package-lock.json
New file
Diff too large
package.json
New file
@@ -0,0 +1,69 @@
{
  "name": "scene_staging",
  "version": "1.0.0",
  "description": "停车场",
  "main": "webpack.common.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --env.production --config webpack.prod.js",
    "dev": "webpack-dev-server --open --config webpack.dev.js"
  },
  "keywords": [],
  "author": "xq",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.3.4",
    "@babel/preset-env": "^7.3.4",
    "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.3",
    "@vue/babel-preset-jsx": "^1.0.0-beta.3",
    "autoprefixer": "^9.4.10",
    "babel-loader": "^8.0.0-beta.0",
    "babel-plugin-dynamic-import-webpack": "^1.1.0",
    "babel-plugin-import": "^1.12.0",
    "clean-webpack-plugin": "^1.0.1",
    "copy-webpack-plugin": "^5.0.2",
    "css-loader": "^2.1.0",
    "cssnano": "^4.1.10",
    "file-loader": "^3.0.1",
    "html-webpack-plugin": "^3.2.0",
    "less": "^3.9.0",
    "less-loader": "^4.1.0",
    "mini-css-extract-plugin": "^0.5.0",
    "optimize-css-assets-webpack-plugin": "^5.0.1",
    "postcss-loader": "^3.0.0",
    "postcss-pxtorem": "^4.0.1",
    "style-loader": "^0.23.1",
    "style-resources-loader": "^1.2.1",
    "uglifyjs-webpack-plugin": "^2.1.2",
    "url-loader": "^1.1.2",
    "vue-loader": "^15.7.0",
    "vue-template-compiler": "^2.6.10",
    "vux-loader": "^1.2.9",
    "webpack": "^4.46.0",
    "webpack-cli": "^3.3.12",
    "webpack-dev-server": "^3.11.2",
    "webpack-merge": "^4.2.1"
  },
  "dependencies": {
    "axios": "^0.18.0",
    "blueimp-md5": "^2.11.1",
    "element-ui": "^2.13.0",
    "exif-js": "^2.3.0",
    "html2canvas": "^1.0.0-rc.3",
    "moment": "^2.29.1",
    "qrcode": "^1.4.1",
    "vant": "^2.12.19",
    "vue": "^2.6.10",
    "vue-i18n": "^8.14.0",
    "vue-router": "^3.0.2",
    "vue-video-player": "^5.0.2",
    "vuex": "^3.1.0",
    "vuex-persistedstate": "^2.5.4",
    "vux": "^2.9.2"
  },
  "browserslist": [
    "last 1 version",
    "> 1%",
    "IE 10"
  ]
}
postcss.config.js
New file
@@ -0,0 +1,11 @@
module.exports = {
    plugins: {
      'autoprefixer': {},
      //默认不开启rem配置
      'postcss-pxtorem': {
        rootValue: 50,
        mediaQuery:true, //允许在媒体查询中转换px
        propList: ['*'],//px 大写 Px 就不会被转换
      }
    }
  }
public/index.html
New file
@@ -0,0 +1,101 @@
<!--
 * @Author: 小明丶
 * @Date: 2019-08-13 18:10:18
 * @LastEditors: wen丶
 * @LastEditTime: 2021-01-27 10:26:28
 * @Description:
 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge,chrome=1">
    <title>签约</title>
    <link rel="stylesheet" href="https://at.alicdn.com/t/font_1351259_9f4tnx487aa.css">
    <link rel="stylesheet" href="https://at.alicdn.com/t/font_772985_eb4yiklmyk.css">
    <link rel="stylesheet" href="//at.alicdn.com/t/font_1351259_2bjudp60ygk.css">
    <link rel="stylesheet" href="//at.alicdn.com/t/font_1351259_rg7lh167259.css">
    <link rel="stylesheet" href="//at.alicdn.com/t/font_1351259_se186hqx3s.css">
    <link rel="stylesheet" href="//at.alicdn.com/t/font_2456081_vidjr15rrg.css">
    <script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
    <script>
        if (navigator.userAgent.indexOf('AlipayClient') > -1 || navigator.userAgent.indexOf('mPaaSClient') > -1) {
            document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>');
        }
    </script>
    <script>
        (function (doc, win) {
            var docEl = doc.documentElement,
                isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
                dpr = isIOS ? Math.min(win.devicePixelRatio, 3) : 1,
                dpr = window.top === window.self ? dpr : 1, //被iframe引用时,禁止缩放
                dpr = 1,
                scale = 1 / dpr,
                resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
            docEl.dataset.dpr = dpr;
            var metaEl = doc.createElement('meta');
            metaEl.name = 'viewport';
            metaEl.content = 'initial-scale=' + scale + ',maximum-scale=' + scale + ', minimum-scale=' + scale;
            docEl.firstElementChild.appendChild(metaEl);
            var recalc = function () {
                var width = docEl.clientWidth;
                if (width / dpr > 750) {
                    width = 750 * dpr;
                }
                // 乘以50,px : rem = 50 : 1
                docEl.style.fontSize = 100 * (width / 750) + 'px';
            };
            recalc();
            if (!doc.addEventListener) return;
            win.addEventListener(resizeEvt, recalc, false);
        })(document, window);
        (function (m, ei, q, i, a, j, s) {
        m[i] = m[i] || function () {
                (m[i].a = m[i].a || []).push(arguments)
            };
        j = ei.createElement(q),
            s = ei.getElementsByTagName(q)[0];
        j.async = true;
        j.charset = 'UTF-8';
        j.src = 'https://static.meiqia.com/dist/meiqia.js?_=t';
        s.parentNode.insertBefore(j, s);
    })(window, document, 'script', '_MEIQIA');
    _MEIQIA('entId', 119312);
    _MEIQIA('withoutBtn');
    </script>
</head>
<body>
    <body>
        <div id="app"></div>
        <script src="static/agreement5.js"></script>
        <!-- cdn 生产环境打开注释!!!  -->
        <!-- icon 图标 -->
        <!-- 移动端调试用需要时解开 -->
        <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.3.4/vconsole.min.js"></script>
        <script>
            var vConsole = new VConsole();
        </script>
        <script src="https://at.alicdn.com/t/font_1351259_odonw5vycnt.js"></script>
        <script src="https://at.alicdn.com/t/font_1351259_9f4tnx487aa.js"></script>
        <script src="https://at.alicdn.com/t/font_1351259_se186hqx3s.js"></script>
        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.echarts.common.min.js></script>
        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.axios.min.js></script>
        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.vue.js></script>
        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.vue-router.js></script>
        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.vue.min.js></script>
        <script src=https://res.wx.qq.com/open/js/jweixin-1.4.0.js></script>
        <script src="https://unpkg.com/vue/dist/vue.js"></script>
        <script src='https://at.alicdn.com/t/font_2456081_vidjr15rrg.js'></script>
        <script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js "></script>
        <script>
            Vue.prototype.$t = ()=>{};
        </script>
        <!-- <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> -->
    </body>
</body>
</html>
src/App.vue
New file
@@ -0,0 +1,55 @@
<!--
 * @Author: 小明丶
 * @Date: 2019-08-19 15:23:17
 * @LastEditors: 小明丶
 * @LastEditTime: 2019-08-22 16:09:23
 * @Description:
 -->
<template>
    <div class="h-100">
        <router-view></router-view>
        <van-loading type="spinner" color="white" class="app-loading" v-show="AppLoading"></van-loading>
    </div>
</template>
<script>
    import {
        mapState,
        mapActions,
    } from 'vuex';
    export default {
        data() {
            return {
            }
        },
        computed:{
            ...mapState(['AppLoading'])
        },
        methods: {
            ...mapActions(['getArea']),
        },
        created() {
            this.getArea();
        },
    }
</script>
<style lang="less" scoped>
    .h-100 {
        height: 100%;
    }
    .app-loading {
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: @zIndex-999;
        background-color: rgba(0, 0, 0, 0.5);
        padding: 30px;
        border-radius: 4px;
    }
</style>
src/api/config.js
New file
@@ -0,0 +1,123 @@
/*
 * @Descripttion: 配置axios
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-03-30 09:07:29
 * @LastEditTime: 2021-01-07 10:32:33
 */
import axios from 'axios';
import md5 from 'blueimp-md5';
import Store from "@/store/index";
import router from '@/router/index';
import { Notify} from 'vant';
import {SET_APP_LOADING,SET_USER_INFO,SET_SESSION_ID} from '@/store/mutations-types';
function createSign(params){
    if(params.jttechSign){
        delete params.jttechSign;
    }
    let keys = Object.keys(params),
        paramsSign = '';
    keys.forEach(key=>{
        let val = params[key];
        if(typeof val ==='string'){
            if(val.trim().length>0){
                paramsSign +=val;
            }else{
                delete params[key]
            }
        }else if(typeof val === 'number' && !isNaN(val)){
            paramsSign +=val;
        }else if(Array.isArray(val) && !val.length){
            delete params[key]
        }else if(val===null){
            delete params[key]
        }
    })
    let sessionId = Store.state.sessionId || '';
    params.jttechSign = md5(paramsSign + sessionId);
    return params;
}
function deleteCatchInfo(){
    localStorage.removeItem('park_user_account')
    localStorage.removeItem('park_user_pwd')
    Store.commit(SET_USER_INFO,{})
    Store.commit(SET_SESSION_ID,{})
}
// 错误处理
const resolveError = {
    999(message){
        Notify(message || '网络异常,请稍后重试');
    },
    // 90040006
    99(){
        deleteCatchInfo()
        Notify('登录超时,请重新登录!');
        router.push('/');
    },
    90040006(message){
        deleteCatchInfo()
        Notify(message || '登录超时,请重新登录!');
        router.push({
            path:'/',
        });
    },
    // 密码错误
    9990027(message){
        Notify(message);
        deleteCatchInfo()
    },
    // 密码错误
    1340004(message){
        Notify(message);
        deleteCatchInfo()
        router.push('/');
    }
}
const $http = axios.create({
    baseURL: '/lism',
    timeout: 90000,
    headers: {
        'Content-Type': 'application/json; charset=UTF-8'
    }
})
// 添加请求拦截器
$http.interceptors.request.use(config => {
    if(typeof config.data ==='undefined'){
        config.data = {};
    }
    config.data = createSign(config.data);
    if(!config.data.apploading){
        Store.commit(SET_APP_LOADING,true);
    }
    return config;
}, error => {
    Store.commit(SET_APP_LOADING,false);
    return Promise.reject(error);
})
// 添加响应拦截器
$http.interceptors.response.use(response => {
    Store.commit(SET_APP_LOADING,false);
    return response.data;
}, error => {
    Store.commit(SET_APP_LOADING,false);
    let data = error.response.data;
    let code = Math.abs(data.errorCode || data.status);
    if(typeof resolveError[code] ==='function'){
        resolveError[code](data.errMsg || data.message);
    }else{
        Notify(data.errMsg || data.message || '系统错误');
    }
    return Promise.reject(data);
})
export default $http;
src/api/index.js
New file
@@ -0,0 +1,65 @@
/*
 * @Descripttion:该文件用于组织服务器请求,添加请求函数时注意 函数重名!
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-03-30 08:27:46
 * @LastEditTime: 2021-01-04 09:34:57
 */
import $http from './config';
// import oldapi from './oldapi';
const api = {
    //绑卡初始化
    bankCardInit(data) {
        return $http.post('/bankCard/init', data);
    },
      //银行卡ocr
      bankCardOcr(data) {
        return $http.post('/bankCard/ocr', data);
    },
      //绑卡验证码
      bankCardAuthMsg(data) {
        return $http.post('/bankCard/authMsg', data);
    },
      //绑卡签约
      bankCardAgree(data) {
        return $http.post('/bankCard/agreePayAuth', data);
    },
    //绑卡人脸识别
    faceIdUrl(data) {
        return $http.post('/faceId/url', data);
    },
     //人脸识别结果
     faceIdResult(data) {
        return $http.post('/faceId/result', data);
    },
     //签约信息
     signContractInfo(data) {
        return $http.post('/signContract/contractInf', data);
    },
      //发送授权验证码
      sendVerifyCode(data) {
            return $http.post('/signContract/sendVerifyCode', data);
      },
        //校验授权码
        checkVerifyCode(data) {
            return $http.post('/signContract/checkVerifyCode', data);
      },
         //签署3号合同
         signContract(data) {
            return $http.post('/signContract/signContract3', data);
      },
    // ========================================
}
export default {
    install(Vue, opt) {
        Vue.prototype.$api = api;
    }
}
src/assets/img/bg.png
src/assets/img/bg_top.png
src/assets/img/detailpark.png
src/assets/img/failstatus.png
src/assets/img/img_fail.png
src/assets/img/img_fail1.png
src/assets/img/img_success.png
src/assets/img/minebg.png
src/assets/img/nodata.png
src/assets/img/regbg.png
src/assets/img/success.png
src/assets/img/successw.png
src/components/vant_register.js
New file
@@ -0,0 +1,90 @@
/*
 * @Author: 小明丶
 * @Date: 2019-08-15 10:40:29
 * @LastEditors: 小明丶
 * @LastEditTime: 2019-09-02 09:38:20
 * @Description: 注册want组件
 */
import {
    Button,
    Swipe,
    SwipeItem,
    Dialog,
    Checkbox,
    CheckboxGroup,
    Search,
    Icon,
    NumberKeyboard,
    Notify,
    Loading,
    Popup,
    Picker,
    Tabbar,
    TabbarItem,
    NavBar,
    Cell,
    CellGroup,
    RadioGroup,
    Radio,
    Area,
    Field,
    Collapse,
    CollapseItem,
    DatetimePicker,
    Toast,
    List,
    Switch,ActionSheet,Grid, GridItem
} from 'vant';
let arr = [
    Button,
    Swipe,
    SwipeItem,
    Dialog,
    Checkbox,
    CheckboxGroup,
    Search,
    Icon,
    NumberKeyboard,
    Notify,
    Loading,
    Popup,
    Picker,
    Tabbar, TabbarItem,
    NavBar,
    Cell, CellGroup, RadioGroup,
    Radio,
    Area,
    Field,
    Collapse, CollapseItem,
    DatetimePicker,
    Toast,
    List,
    Switch,ActionSheet,Grid, GridItem
]
// Notify.setDefaultOptions({
//     background: '#896EDB'
// })
export default {
    install(Vue, opt) {
        arr.forEach(item => {
            Vue.use(item)
        })
        // Vue.prototype.$notify = (text) => {
        //     Notify({
        //         message: text,
        //         background: 'red'
        //     })
        // }
        Vue.prototype.$notify_success = (text) => {
            Notify({
                message: text,
                background: '#1989fa'
            })
        }
    }
}
src/index.js
New file
@@ -0,0 +1,70 @@
/*
 * @Descripttion: 修改配置
 * @Author: TM丶
 * @Date: 2019-08-14 14:05:51
 * @LastEditors: 小明丶
 * @LastEditTime: 2020-09-03 10:44:01
 */
import Vue from 'vue';
// import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import { Button, Select } from 'element-ui'
import vantRegister from '@/components/vant_register'; //vant组件
import Validator from '@/utils/formValidator'; //vant组件
import log from '@/utils/console';
import { Uploader,Toast  } from 'vant';
import store from "@/store/index";
import router from "@/router/index";
import App from "./App.vue";
import api from "@/api"; //接口
import filters from '@/utils/filters';
import { Image as VanImage } from 'vant';
import { Form } from 'vant';
import { Popup } from 'vant';
Vue.use(Popup);
// import androidBack from './utils/pageBackByAndroid';
Vue.config.productionTip = false; // 关闭生产的提示
import "@/style/normalize.less";
import "@/style/common.less";
import "@/style/vant_reset.less";
Vue.use(Form);
Vue.use(api)
Vue.use(filters)
Vue.use(Validator)
// Vue.use(vuxRegister)
Vue.use(vantRegister)
// Vue.use(customerComponents)
Vue.use(Select)
Vue.use(log);
Vue.use(VanImage);
Vue.use(Uploader);
Vue.use(Toast);
new Vue({
    store,
    router,
    mounted() {
        // var u = navigator.userAgent;
        // if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
        //     window.addEventListener("resize", function() {
        //         let el = document.activeElement;
        //         if(el.tagName=="INPUT" || el.tagName=="TEXTAREA") {
        //             window.setTimeout(function() {
        //                 el.scrollIntoView({
        //                     behavior:'smooth',
        //                 });
        //             },16.7);
        //         }
        //     })
        // }
    },
    render: h => h(App)
}).$mount("#app")
// androidBack.androidBackBtn();
src/router/index.js
New file
@@ -0,0 +1,37 @@
/*
 * @Author: 小明丶
 * @Date: 2019-08-19 15:23:17
 * @LastEditors: 小明丶
 * @LastEditTime: 2021-01-08 10:00:52
 * @Description:
 */
import Vue from "vue";
import VueRouter from 'vue-router';
import routes from './routes';
import Store from '@/store';
Vue.use(VueRouter);
let router =  new VueRouter({
    mode:"hash", //history
    routes,
    scrollBehavior (to, from, savedPosition) {
        return {
            x:0,
            y:0
        }
    },
})
// 全局前置守卫:页面跳转前拦截
router.beforeEach((to, from, next) => {
    next()
})
//全局后置守卫:页面跳转后执行
router.afterEach((to, from) => {
})
export default router;
src/router/routes.js
New file
@@ -0,0 +1,35 @@
/*
 * @Author: 小明丶
 * @Date: 2019-08-13 18:10:18
 * @LastEditors: 小明丶
 * @LastEditTime: 2021-01-05 14:58:59
 * @Description:
 */
export default [
    //  绑卡
    {
        path:"/",
        name:'index',
        component:()=>import("@/views/main/addBankcard.vue")
    },
    {
        path:"/main/queryres",
        name:'queryres',
        component:()=>import("@/views/main/queryres.vue")
    },
    {
        path:"/main/findPre",
        name:'findPre',
        component:()=>import("@/views/main/findPreAudit.vue")
    },
    {
        path:"/main/signcont",
        name:'signcont',
        component:()=>import("@/views/main/signcont.vue")
    },
    {
        path:"/main/bancardsucces",
        name:'signcont',
        component:()=>import("@/views/main/singsuc.vue")
    }
]
src/store/index.js
New file
@@ -0,0 +1,90 @@
/*
 * @Author: 小明丶
 * @Date: 2019-08-19 15:23:17
 * @LastEditors: 小明丶
 * @LastEditTime: 2021-01-05 15:20:51
 * @Description:
 */
import Vue from 'vue';
import Vuex from "vuex";
import md5 from 'blueimp-md5';
import mutations from "./mutations";
import test from "./module/test";
// 数据持久化到session的插件
import createPersistedState from 'vuex-persistedstate';
import { calcArea } from '@/utils/index';
import {
    SET_SESSION_ID,
    SET_FOOTER_NAV,
    SET_USER_INFO,
    SET_AREA_LIST,
    SET_BCAKCOLOR,
    SET_BCJBCOLORF,
    SET_BCJBCOLORB,
    SET_DEFAULT_BG_COLOR,
    SET_LAST_COLOR
} from './mutations-types';
Vue.use(Vuex);
export default new Vuex.Store({
    plugins: [createPersistedState({ storage: window.sessionStorage })],
    state: {
        AppLoading: false,
        sessionId: '',//判断是否登录
        footerNav: [], //底部导航
        userPage: [], //管理页面 用户有的权限页面
        userinfo: {}, //用户信息
        areaList: {//地区列表
            province_list: {}, //省
            city_list: {}, //市
            county_list: {}, //地区、县
        },
        msgCount: {},
        inviteCode: '', //邀请码
        lastColor:'#423d5d',
        backColor:'#0173FE',//主题色
        backJbColorF:'#8F6AFF',//主题渐变色
        backJbColorB:'#9459EC',
        defaultBgColor:'linear-gradient(180deg, #554E7A, #423D5D)',
    },
    getters: {
        orgType(state) {
            return state.userinfo.orgType
        },
        orgId(state) {
            return state.userinfo.orgId
        }
    },
    mutations,
    actions: {
        // 获取地区列表
        // getArea({ commit }) {
        //     Vue.prototype.$api.getArea().then((res) => {
        //         let { provList } = res.body;
        //         let obj = calcArea(provList)
        //         commit(SET_AREA_LIST, {
        //             province_list: obj.province_list,
        //             city_list: obj.city_list,
        //             county_list: obj.county_list
        //         })
        //     }).catch((err) => {
        //     });
        // },
        // 设置主题色
        setColor({commit},{backColor,backJbColorF,backJbColorB,defaultBgColor, lastColor}){
            console.log('defaultBgColor:',defaultBgColor)
            commit(SET_BCAKCOLOR,backColor)
            commit(SET_BCJBCOLORF,backJbColorF)
            commit(SET_BCJBCOLORB,backJbColorB)
            commit(SET_DEFAULT_BG_COLOR,defaultBgColor)
            commit(SET_LAST_COLOR,lastColor)
        }
    },
    modules: {
        test
    }
})
src/store/module/test.js
New file
@@ -0,0 +1,11 @@
export default {
    namespaced:true,
    state:{
        text:"1232"
    },
    mutations:{
        add(state,{value}){
            state.text = value;
        }
    }
}
src/store/mutations-types.js
New file
@@ -0,0 +1,30 @@
/*
 * @Descripttion: 使用常量替代 mutation 事件类型,把这些常量放在单独的文件中可以让整个 app 包含的 mutation 一目了然
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-04-06 21:41:06
 * @LastEditTime: 2020-11-17 10:14:01
 */
export const SET_APP_LOADING = "SET_APP_LOADING";
export const SET_SESSION_ID = "SET_SESSION_ID";
export const SET_USER_INFO = "SET_USER_INFO";
// 设置地区列表
export const SET_AREA_LIST = "SET_AREA_LIST";
//消息
export const SET_MESSAGE_CONUT = "SET_MESSAGE_CONUT";
// 设置用户的底部导航菜单
export const SET_FOOTER_NAV = "SET_FOOTER_NAV";
// 设置用户的权限页面
export const SET_USER_PAGE = "SET_USER_PAGE";
export const SET_INVITE_CODE = "SET_INVITE_CODE";
export const SET_BCAKCOLOR = "SET_BCAKCOLOR";
export const SET_BCJBCOLORF = "SET_BCJBCOLORF";
export const SET_BCJBCOLORB = "SET_BCJBCOLORB";
export const SET_DEFAULT_BG_COLOR = "SET_DEFAULT_BG_COLOR";
export const SET_LAST_COLOR = "SET_LAST_COLOR";
src/store/mutations.js
New file
@@ -0,0 +1,75 @@
/*
 * @Descripttion: 项目的mutations
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-04-06 21:40:25
 * @LastEditTime: 2020-11-17 09:15:09
 */
import {
    SET_APP_LOADING,
    SET_USER_PAGE,
    SET_FOOTER_NAV,
    SET_SESSION_ID,
    SET_USER_INFO,
    SET_AREA_LIST,
    SET_MESSAGE_CONUT,
    SET_INVITE_CODE,
    SET_BCAKCOLOR,
    SET_BCJBCOLORF,
    SET_BCJBCOLORB,
    SET_DEFAULT_BG_COLOR,
    SET_LAST_COLOR
} from "./mutations-types";
//使用 ES2015 风格的计算属性命名功能来使用一个常量作为函数名
export default {
    //设置loading状态
    [SET_APP_LOADING](state, val) {
        state.AppLoading = val;
    },
    //获取邀请码
    [SET_INVITE_CODE](state, val) {
        state.inviteCode = val;
    },
    [SET_AREA_LIST](state, val) {
        state.areaList = val;
    },
    [SET_MESSAGE_CONUT](state, val) {
        state.msgCount = val;
    },
    [SET_SESSION_ID](state, val) {
        state.sessionId = val;
    },
    [SET_USER_INFO](state, val) {
        state.userinfo = val;
    },
    [SET_USER_PAGE](state, val) {
        if (Array.isArray(val)) {
            state.userPage = val;
        }
    },
    [SET_FOOTER_NAV](state, val) {
        if (Array.isArray(val)) {
            state.footerNav = val;
        }
    },
    [SET_BCAKCOLOR](state, val) {
        state.backColor = val;
    },
    [SET_BCJBCOLORF](state, val) {
        state.backJbColorF = val;
    },
    [SET_BCJBCOLORB](state, val) {
        state.backJbColorB = val;
    },
    [SET_DEFAULT_BG_COLOR](state, val) {
        state.defaultBgColor = val;
    },
    [SET_LAST_COLOR](state, val) {
        state.lastColor = val;
    },
    // 设置消息列表
    // [SET_MESSAGE_LIST](state, val) {
    //     state.messageList = val;
    // },
}
src/style/common.less
New file
@@ -0,0 +1,213 @@
/*
 * @Descripttion: 基础css 类,全局类名以 -g 结尾来区分
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-03-11 21:02:51
 * @LastEditTime: 2020-04-24 15:56:39
 */
 html,body{
   height: 100%;
 }
 body {
  font-size: @font-14;
  color: @c-333;
  scroll-behavior: smooth;
}
p,
h1,
h2,
h3,
h4,
h5,
h6,
ul {
  margin: 0;
}
.font-11-g{
  font-size: @font-11;
}
.font-12-g{
  font-size: @font-12;
}
.font-14-g{
  font-size: @font-14;
}
.font-16-g{
  font-size: @font-16;
}
.height-44-g{
  height: 44px;
  width: 100%;
}
.height-20-g{
  height: 20px;
  width: 100%;
}
.c-text-999-g{
  color: @c-text-999;
}
.c-text-666-g{
  color: @c-text-666;
}
hr{
  border: none;
}
.h-100-g{
  min-height: 100%;
}
.w-100-g{
  width: 100%;
}
.fl-g {
  float: left;
}
.fr-g {
  float: right;
}
.clearfix-g {
  zoom: 1;
  &:after {
    content: "";
    display: block;
    clear: both;
  }
}
.text-center-g{
  text-align: center;
}
.img-fluid-g {
  max-width: 100%;
  height: auto;
}
.p-center-g{
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
}
.hidden-g {
  display: none;
}
.flex-start-g {
  .flex(flex-start);
}
.flex-center-g {
  .flex(center);
}
.flex-between-g {
  .flex(space-between);
}
.flex-around-g {
  .flex(space-around);
}
.flex-end-g {
  .flex(flex-end);
}
.flex-1-g{
  flex:1;
}
/*单行溢出*/
.text-clip-g {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
// 滚动条样式
::-webkit-scrollbar {
  max-width: 5px;
  max-height: 8px;
}
::-webkit-scrollbar-thumb {
  background-color: #C9CAD3;
  border-radius: 4px;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
}
// placeholder样式控制
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
  color: @c-999;
  font-size: @font-14;
}
input:-moz-placeholder,
textarea:-moz-placeholder {
  color: @c-999;
  font-size: @font-14;
}
input::-moz-placeholder,
textarea::-moz-placeholder {
  color: @c-999;
  font-size: @font-14;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
  color: @c-999;
  font-size: @font-14;
}
//带阴影的圆角card
.card_park{
  border-radius: 8px;
  box-shadow: 0px 2px 23px 0px rgba(29, 72, 245, 0.08);
}
// 提示
.tips {
  font-size: @font-12;
  padding-left: 0.32rem;
  margin-top: 8px;
  color: #999999;
}
.btn_box {
  width: 100%;
  margin-top: 32px;
  .van-button {
      width: 100%;
      color: #fff;
      font-size: 16px;
      border-radius: 7px;
  }
}
src/style/mixin.less
New file
@@ -0,0 +1,98 @@
/**
 * Created by c.y on 2018-3-1
 * 文件说明: 这个是定义项目全局的mixin
 */
// flex布局
.flexLayout(@justify:flex-start,@align:center,@direction:row) {
    display: flex;
    justify-content: @justify;
    align-items: @align;
    flex-direction: @direction;
}
// 清除浮动
.clearfix() {
    zoom: 1;
    &:before,
    &:after {
        content: '';
        display: table;
    }
    &:after {
        clear: both;
        visibility: hidden;
        font-size: 0;
        height: 0;
    }
}
// 单行文本超出显示省略号
.ellipsis(@w:auto) {
    width: @w;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    word-wrap: normal;
}
// 多行文本超出显示省略号
.ellipsisLn(@line) {
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: @line;
    word-break: break-all;
}
// 单词换行
.text_wrap() {
    word-wrap: break-word;
    word-break: break-all;
}
// 设置箭头 arrowSize--箭头的大小, borderColor---箭头的颜色,@borderWidth箭头的粗细
._setArrow(@arrowsize, @borderColor, @borderWidth) {
    display: inline-block;
    height: @arrowsize;
    width: @arrowsize;
    border-width: @borderWidth @borderWidth 0 0;
    border-color: @borderColor;
    border-style: solid;
}
// 示例调用  .setArrow(top, 10px, red, 2px);向上箭头
.setArrow(@direction, @arrowsize, @borderColor, @borderWidth)
    when
    (@direction = top) {
    ._setArrow(@arrowsize, @borderColor, @borderWidth);
    transform: matrix(0.71, -0.71, 0.71, 0.71, 0, 0); // rotate(-45deg)
}
.setArrow(@direction, @arrowsize, @borderColor,@borderWidth)
    when
    (@direction = right) {
    ._setArrow(@arrowsize, @borderColor, @borderWidth);
    transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); // rotate(45deg);
    position: relative;
    top: -1px;
}
.setArrow(@direction, @arrowsize, @borderColor,@borderWidth)
    when
    (@direction = down) {
    ._setArrow(@arrowsize, @borderColor, @borderWidth);
    transform: matrix(-0.71, 0.71, -0.71, -0.71, 0, 0); // rotate(135deg);
    position: relative;
    top: -1.5px;
}
.setArrow(@direction, @arrowsize, @borderColor,@borderWidth)
    when
    (@direction = left) {
    ._setArrow(@arrowsize, @borderColor, @borderWidth);
    transform: matrix(-0.71, -0.71, 0.71, -0.71, 0, 0); // rotate(-135deg);
    position: relative;
    top: -1px;
}
src/style/mixins.less
New file
@@ -0,0 +1,139 @@
/*
 * @Descripttion: 全局mixins变量
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-03-11 21:02:51
 * @LastEditTime: 2019-08-30 10:42:05
 */
 @import "./themes.less";
 /* 字体 大小*/
 @font-10: 10px;
 @font-11: 11px;
 @font-12: 12px;
 @font-13: 13px;
 @font-14: 14px;
 @font-15: 15px;
 @font-16: 16px;
 @font-17: 17px;
 @font-18: 18px;
 @font-20: 20px;
 @font-24: 24px;
 @font-28: 28px;
 /* z-index*/
 @zIndex-10:10;
 @zIndex-20:20;
 @zIndex-30:30;
 @zIndex-40:40;
 @zIndex-50:50;
 @zIndex-100:100;
 @zIndex-200:200;
 @zIndex-300:300;
 @zIndex-400:400;
 @zIndex-500:500;
 @zIndex-999:999;
 @zIndex-9999:9999;
//  新主题色
  @c-main: #896EDB;
  @c-success: #19BE6B;
  @c-lose:#ED4014;
 // flex布局
 .flex(@x:flex-start,@y:center,@wrap:nowrap,@dir:row) {
   display: flex;
   justify-content: @x;
   align-items: @y;
   flex-wrap: @wrap;
   flex-direction: @dir;
 }
//  老项目复制过来的 兼任!
 .flexLayout(@justify:flex-start,@align:center,@direction:row) {
  display: flex;
  justify-content: @justify;
  align-items: @align;
  flex-direction: @direction;
}
 .lh(@val){
   height: @val;
   line-height: @val;
 }
 /*多行溢出 手机端使用*/
 .text-clip-double(@num:2) {
   display: -webkit-box;
   overflow: hidden;
   word-break: break-all;
   text-overflow: ellipsis;
   -webkit-box-orient: vertical;
   -webkit-line-clamp: @num;
 }
 // 定位到html
//  .p-fixed(@bg:#fff) {
//    position: fixed;
//    top: 0;
//    right: 0;
//    bottom: 0;
//    left: 0;
//    overflow-y: scroll;
//    background-color: @bg;
//  }
//  老项目的变量
@fontEN: -apple-system-font, "Helvetica Neue";
@fontCN: "PingFang SC", "Microsoft YaHei", "sans-serif", "Helvetica Neue";
@fontDefault: @fontEN, @fontCN;
@font-size-tiny: 10Px;
@font-size-small: 12Px;
@font-size-medium: 14Px;
@font-size-base: 15Px;
@font-size-primary: 16Px;
@font-size-large: 18Px;
@font-line-height-base: 1;
@font-line-height-medium: 1.3;
@font-line-height-large: 1.5;
@font-weight-normal: normal;
@font-weight-bold: bold;
@font-weight-base: 400;
@font-weight-thin: 200;
@border-radius-normal-size: 7.5px;
@color-white: #fff;
@backgroundColor: #f1f1f1;
@color-text-main: #3a3a3a; //场景分期文字主要颜色
@color-text-second: #666; //场景分期文字第二颜色
@color-text-three: #bfa073; //场景分期文字第三颜色
@color-text-three-light: rgba(191, 160, 115, 0.05); //场景分期文字第三颜色-淡色
@color-text-placeholder: #a3a3a3; // 场景分期输入框placeholder暗提示颜色
@color-line: #d9d9d9; // 边框颜色
@color-border-theme: #bfa073; // 边框主题颜色
@color-button-default: #3a3a3a;
@color-button-normal: #bfa073;
@tabbar-text-active-color: #bfa073;
@switch-checked-bg-color: #bfa073;
@switch-checked-border-color: #bfa073;
@calendar-arrow-color: #444;
@calendar-today-font-color: #bfa073;
@calendar-selected-bg-color: #bfa073;
src/style/myVant.less
New file
@@ -0,0 +1,12 @@
.ipt,
  .fenqi {
    & {
      border-bottom: 1px solid #e0e1e6;
      color: #333;
      font-size: 16px;
      .van-field__control{
        color: #999 !important;
        font-size: 14px !important;
      }
    }
  }
src/style/myVideo.less
New file
@@ -0,0 +1,8 @@
/*
*只用于video组件的样式调整
*/
.vjs-big-play-button{
    // position: absolute;
    top: 35% !important;
    left: 35% !important;
}
src/style/normalize.less
New file
@@ -0,0 +1,219 @@
html {
  line-height: 1.15;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
main {
  display: block;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
hr {
  box-sizing: content-box;
  height: 0;
  overflow: visible;
}
pre {
  font-family: monospace, monospace;
  font-size: 1em;
}
a {
  background-color: transparent;
}
abbr[title] {
  border-bottom: none;
  text-decoration: underline;
  text-decoration: underline dotted;
}
b,
strong {
  font-weight: bolder;
}
code,
kbd,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}
img {
  border-style: none;
}
button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  font-size: 100%;
  margin: 0;
}
button,
input {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText;
}
fieldset {
  padding: 0.35em 0.75em 0.625em;
}
legend {
  box-sizing: border-box;
  color: inherit;
  display: table;
  max-width: 100%;
  padding: 0;
  white-space: normal;
}
progress {
  vertical-align: baseline;
}
textarea {
  overflow: auto;
}
[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
[type="search"] {
  -webkit-appearance: textfield;
  outline-offset: -2px;
}
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
::-webkit-file-upload-button {
  -webkit-appearance: button;
  font: inherit;
}
details {
  display: block;
}
summary {
  display: list-item;
}
template {
  display: none;
}
[hidden] {
  display: none;
}
src/style/themes.less
New file
@@ -0,0 +1,52 @@
/*
 * @Descripttion: 项目色彩相关配置
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-03-11 21:02:51
 * @LastEditTime: 2019-08-15 16:12:25
 */
/*color*/
@c-default:#896EDB;
@c-fff:#ffffff;
@c-f5:#F5F5F7;
@c-eee:#eeeeee;
@c-333:#333333;
@c-666:#666666;
@c-999:#999999;
@c-green:#19BE6B;
@c-red:#ED4014;
@c-blue:#FF9900;
@c-black:#423D5D;
@c-555:#55516e;
@c-fe:#FEFEFF;
@mainbg:#0173FE;
@pagebg:#FAFBFC;
/* 边框 颜色*/
// @color-border-default:@c-gray-default;
/* 文字 颜色*/
@c-text-default:@c-default;
@c-text-333:@c-333;
@c-text-666:@c-666;
@c-text-999:@c-999;
@c-text-fff:@c-fff;
@c-text-black:@c-black;
@c-text-fe:@c-fe;
@c-text-f5:@c-f5;
/* 背景 颜色*/
@c-bg-default:@c-default;
@c-bg-f5:@c-f5;
@c-bg-eee:@c-eee;
@c-bg-fff:@c-fff;
@c-bg-black:@c-black;
@c-bg-555:@c-555;
/* 边框 */
// @border-default:0.5Px solid @c-gray-e6;
/* boxshadow */
@shadow-default:0 2px 10px 0 rgba(0,39,125,0.1);
src/style/vant_reset.less
New file
@@ -0,0 +1,199 @@
/*
vant 的样式重置文件
*/
.van-cell-group{
    border-radius: 3px;
}
.van-cell{
    padding: 11px 0.32rem;
    .van-cell__title{
        font-size: 14px;
    }
    &:not(:last-child)::after{
        left: 0;
    }
    &:first-child{
        border-top-left-radius: 3px;
        border-top-right-radius: 3px;
    }
    &:last-child{
        border-bottom-left-radius: 3px;
        border-bottom-right-radius: 3px;
    }
}
.van-collapse{
    &:after{
        display: none;
    }
    // 折叠面板样式重置
    .van-collapse-item{
        margin-bottom: 10px;
        &::after{
            display: none;
        }
        .van-cell::after{
            display: none;
        }
        .van-cell__title{
            font-size: @font-14;
            font-weight: bold;
        }
    }
}
.van-popup{
    overflow: initial;
}
// radio 边框颜色
// .van-radio{
//     .van-icon-success{
//         // border: 0.02rem solid @c-bg-default;
//     }
// }
////退出登录     弹框
.setting-box-dialog{
    .van-dialog__message{
        padding: 45px 60px!important;
    }
}
.home-tabbar{
    .van-tabbar-item__text{
        font-size: 11px;
    }
    .van-tabbar-item__icon{
        margin-bottom: 3px;
    }
}
.icons-ser{
    //.flex(center,center);
    .van-cell{
        //.flex(center,center);
    }
}
//添加账号      复选框 样式修改
.account-add{
    .van-checkbox__icon{
        font-size: @font-16;
    }
    .van-check-box{
        .label{
            font-size:@font-14;
            font-weight:500;
            color:#666666;
        }
    }
}
//登录页
.login-page{
    .van-cell{
        margin-top: 15px;
        padding-left: 0;
        padding-right: 0;
        height: 44px;
        max-height: 44px;
    }
    .van-icon{
        margin-right: 5px;
        //color: @c-default;
    }
    .van-button{
        .lh(44px);
        margin-top: 35px;
        display: block;
        width:100%;
        font-size: @font-18;
        color: @c-fff;
        text-align: center;
        border: none;
        // background-color: @c-default;
        -webkit-appearance: none;
    }
}
.forgetpassword,.register-home{
    .van-field__right-icon{
        margin: 0 0.16rem ;
        padding:0;
    }
    .van-field__right-icon::after{
        display: none;
    }
    .van-cell::after{
        position: absolute;
        box-sizing: border-box;
        content: ' ';
        pointer-events: none;
        right: 0;
        bottom: 0;
        left: 0.32rem;
        border-bottom: 0.02rem solid #ebedf0;
        -webkit-transform: scaleY(.5);
        transform: scaleY(.5);
    }
}
.filter-box{
    .van-popup--bottom{
        z-index: 3500 !important;
    }
}
.weui-dialog{
    width: 80%;
}
.vux-header{
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    // height: 3.66667rem;
    height: 44px;
    padding: 0;
    z-index: 99;
    background-color: #fff;
    .vux-header-title{
        color: #3a3a3a;
    }
}
.weui-cells{
    margin-top: 0;
}
src/utils/IDValidator.js
New file
@@ -0,0 +1,3844 @@
/**
 * Created by 陈伟
 * 2017/11/21.
 * 身份证检查
 */
let GB2260 = {
  '110000': '北京市',
  '110100': '北京市市辖区',
  '110101': '北京市东城区',
  '110102': '北京市西城区',
  '110103': '北京市崇文区',
  '110104': '北京市宣武区',
  '110105': '北京市朝阳区',
  '110106': '北京市丰台区',
  '110107': '北京市石景山区',
  '110108': '北京市海淀区',
  '110109': '北京市门头沟区',
  '110111': '北京市房山区',
  '110112': '北京市通州区',
  '110113': '北京市顺义区',
  '110200': '北京市县',
  '110221': '北京市昌平县',
  '110224': '北京市大兴县',
  '110226': '北京市平谷县',
  '110227': '北京市怀柔县',
  '110228': '北京市密云县',
  '110229': '北京市延庆县',
  '120000': '天津市',
  '120100': '天津市市辖区',
  '120101': '天津市和平区',
  '120102': '天津市河东区',
  '120103': '天津市河西区',
  '120104': '天津市南开区',
  '120105': '天津市河北区',
  '120106': '天津市红桥区',
  '120107': '天津市塘沽区',
  '120108': '天津市汉沽区',
  '120109': '天津市大港区',
  '120110': '天津市东丽区',
  '120111': '天津市西青区',
  '120112': '天津市津南区',
  '120113': '天津市北辰区',
  '120200': '天津市县',
  '120221': '天津市宁河县',
  '120222': '天津市武清县',
  '120223': '天津市静海县',
  '120224': '天津市宝坻县',
  '120225': '天津市蓟县',
  '130000': '河北省',
  '130100': '河北省石家庄市',
  '130101': '河北省石家庄市市辖区',
  '130102': '河北省石家庄市长安区',
  '130103': '河北省石家庄市桥东区',
  '130104': '河北省石家庄市桥西区',
  '130105': '河北省石家庄市新华区',
  '130106': '河北省石家庄市郊区',
  '130107': '河北省石家庄市井陉矿区',
  '130121': '河北省石家庄市井陉县',
  '130123': '河北省石家庄市正定县',
  '130124': '河北省石家庄市栾城县',
  '130125': '河北省石家庄市行唐县',
  '130126': '河北省石家庄市灵寿县',
  '130127': '河北省石家庄市高邑县',
  '130128': '河北省石家庄市深泽县',
  '130129': '河北省石家庄市赞皇县',
  '130130': '河北省石家庄市无极县',
  '130131': '河北省石家庄市平山县',
  '130132': '河北省石家庄市元氏县',
  '130133': '河北省石家庄市赵县',
  '130181': '河北省石家庄市辛集市',
  '130182': '河北省石家庄市藁城市',
  '130183': '河北省石家庄市晋州市',
  '130184': '河北省石家庄市新乐市',
  '130185': '河北省石家庄市鹿泉市',
  '130200': '河北省唐山市',
  '130201': '河北省唐山市市辖区',
  '130202': '河北省唐山市路南区',
  '130203': '河北省唐山市路北区',
  '130204': '河北省唐山市古冶区',
  '130205': '河北省唐山市开平区',
  '130206': '河北省唐山市新区',
  '130221': '河北省唐山市丰润县',
  '130223': '河北省唐山市滦县',
  '130224': '河北省唐山市滦南县',
  '130225': '河北省唐山市乐亭县',
  '130227': '河北省唐山市迁西县',
  '130229': '河北省唐山市玉田县',
  '130230': '河北省唐山市唐海县',
  '130281': '河北省唐山市遵化市',
  '130282': '河北省唐山市丰南市',
  '130283': '河北省唐山市迁安市',
  '130300': '河北省秦皇岛市秦皇岛市',
  '130301': '河北省秦皇岛市市辖区',
  '130302': '河北省秦皇岛市海港区',
  '130303': '河北省秦皇岛市山海关区',
  '130304': '河北省秦皇岛市北戴河区',
  '130321': '河北省秦皇岛市青龙满族自治县',
  '130322': '河北省秦皇岛市昌黎县',
  '130323': '河北省秦皇岛市抚宁县',
  '130324': '河北省秦皇岛市卢龙县',
  '130400': '河北省邯郸市邯郸市',
  '130401': '河北省邯郸市市辖区',
  '130402': '河北省邯郸市邯山区',
  '130403': '河北省邯郸市丛台区',
  '130404': '河北省邯郸市复兴区',
  '130406': '河北省邯郸市峰峰矿区',
  '130421': '河北省邯郸市邯郸县',
  '130423': '河北省邯郸市临漳县',
  '130424': '河北省邯郸市成安县',
  '130425': '河北省邯郸市大名县',
  '130426': '河北省邯郸市涉县',
  '130427': '河北省邯郸市磁县',
  '130428': '河北省邯郸市肥乡县',
  '130429': '河北省邯郸市永年县',
  '130430': '河北省邯郸市邱县',
  '130431': '河北省邯郸市鸡泽县',
  '130432': '河北省邯郸市广平县',
  '130433': '河北省邯郸市馆陶县',
  '130434': '河北省邯郸市魏县',
  '130435': '河北省邯郸市曲周县',
  '130481': '河北省邯郸市武安市',
  '130500': '河北省邢台市',
  '130501': '河北省邢台市市辖区',
  '130502': '河北省邢台市桥东区',
  '130503': '河北省邢台市桥西区',
  '130521': '河北省邢台市邢台县',
  '130522': '河北省邢台市临城县',
  '130523': '河北省邢台市内丘县',
  '130524': '河北省邢台市柏乡县',
  '130525': '河北省邢台市隆尧县',
  '130526': '河北省邢台市任县',
  '130527': '河北省邢台市南和县',
  '130528': '河北省邢台市宁晋县',
  '130529': '河北省邢台市巨鹿县',
  '130530': '河北省邢台市新河县',
  '130531': '河北省邢台市广宗县',
  '130532': '河北省邢台市平乡县',
  '130533': '河北省邢台市威县',
  '130534': '河北省邢台市清河县',
  '130535': '河北省邢台市临西县',
  '130581': '河北省邢台市南宫市',
  '130582': '河北省邢台市沙河市',
  '130600': '河北省保定市',
  '130601': '河北省保定市市辖区',
  '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': '河北省保定市高碑店市',
  '130700': '河北省张家口市',
  '130701': '河北省张家口市市辖区',
  '130702': '河北省张家口市桥东区',
  '130703': '河北省张家口市桥西区',
  '130705': '河北省张家口市宣化区',
  '130706': '河北省张家口市下花园区',
  '130721': '河北省张家口市宣化县',
  '130722': '河北省张家口市张北县',
  '130723': '河北省张家口市康保县',
  '130724': '河北省张家口市沽源县',
  '130725': '河北省张家口市尚义县',
  '130726': '河北省张家口市蔚县',
  '130727': '河北省张家口市阳原县',
  '130728': '河北省张家口市怀安县',
  '130729': '河北省张家口市万全县',
  '130730': '河北省张家口市怀来县',
  '130731': '河北省张家口市涿鹿县',
  '130732': '河北省张家口市赤城县',
  '130733': '河北省张家口市崇礼县',
  '130800': '河北省承德市',
  '130801': '河北省承德市市辖区',
  '130802': '河北省承德市双桥区',
  '130803': '河北省承德市双滦区',
  '130804': '河北省承德市鹰手营子矿区',
  '130821': '河北省承德市承德县',
  '130822': '河北省承德市兴隆县',
  '130823': '河北省承德市平泉县',
  '130824': '河北省承德市滦平县',
  '130825': '河北省承德市隆化县',
  '130826': '河北省承德市丰宁满族自治县',
  '130827': '河北省承德市宽城满族自治县',
  '130828': '河北省承德市围场满族蒙古族自治县',
  '130900': '河北省沧州市',
  '130901': '河北省沧州市市辖区',
  '130902': '河北省沧州市新华区',
  '130903': '河北省沧州市运河区',
  '130921': '河北省沧州市沧县',
  '130922': '河北省沧州市青县',
  '130923': '河北省沧州市东光县',
  '130924': '河北省沧州市海兴县',
  '130925': '河北省沧州市盐山县',
  '130926': '河北省沧州市肃宁县',
  '130927': '河北省沧州市南皮县',
  '130928': '河北省沧州市吴桥县',
  '130929': '河北省沧州市献县',
  '130930': '河北省沧州市孟村回族自治县',
  '130981': '河北省沧州市泊头市',
  '130982': '河北省沧州市任丘市',
  '130983': '河北省沧州市黄骅市',
  '130984': '河北省沧州市河间市',
  '131000': '河北省廊坊市',
  '131001': '河北省廊坊市市辖区',
  '131002': '河北省廊坊市安次区',
  '131022': '河北省廊坊市固安县',
  '131023': '河北省廊坊市永清县',
  '131024': '河北省廊坊市香河县',
  '131025': '河北省廊坊市大城县',
  '131026': '河北省廊坊市文安县',
  '131028': '河北省廊坊市大厂回族自治县',
  '131081': '河北省廊坊市霸州市',
  '131082': '河北省廊坊市三河市',
  '131100': '河北省衡水市',
  '131101': '河北省衡水市市辖区',
  '131102': '河北省衡水市桃城区',
  '131121': '河北省衡水市枣强县',
  '131122': '河北省衡水市武邑县',
  '131123': '河北省衡水市武强县',
  '131124': '河北省衡水市饶阳县',
  '131125': '河北省衡水市安平县',
  '131126': '河北省衡水市故城县',
  '131127': '河北省衡水市景县',
  '131128': '河北省衡水市阜城县',
  '131181': '河北省衡水市冀州市',
  '131182': '河北省衡水市深州市',
  '140000': '山西省',
  '140100': '山西省太原市',
  '140101': '山西省太原市市辖区',
  '140105': '山西省太原市小店区',
  '140106': '山西省太原市迎泽区',
  '140107': '山西省太原市杏花岭区',
  '140108': '山西省太原市尖草坪区',
  '140109': '山西省太原市万柏林区',
  '140110': '山西省太原市晋源区',
  '140121': '山西省太原市清徐县',
  '140122': '山西省太原市阳曲县',
  '140123': '山西省太原市娄烦县',
  '140181': '山西省太原市古交市',
  '140200': '山西省大同市',
  '140201': '山西省大同市市辖区',
  '140202': '山西省大同市城区',
  '140203': '山西省大同市矿区',
  '140211': '山西省大同市南郊区',
  '140212': '山西省大同市新荣区',
  '140221': '山西省大同市阳高县',
  '140222': '山西省大同市天镇县',
  '140223': '山西省大同市广灵县',
  '140224': '山西省大同市灵丘县',
  '140225': '山西省大同市浑源县',
  '140226': '山西省大同市左云县',
  '140227': '山西省大同市大同县',
  '140300': '山西省阳泉市',
  '140301': '山西省阳泉市市辖区',
  '140302': '山西省阳泉市城区',
  '140303': '山西省阳泉市矿区',
  '140311': '山西省阳泉市郊区',
  '140321': '山西省阳泉市平定县',
  '140322': '山西省阳泉市盂县',
  '140400': '山西省长治市',
  '140401': '山西省长治市市辖区',
  '140402': '山西省长治市城区',
  '140411': '山西省长治市郊区',
  '140421': '山西省长治市长治县',
  '140423': '山西省长治市襄垣县',
  '140424': '山西省长治市屯留县',
  '140425': '山西省长治市平顺县',
  '140426': '山西省长治市黎城县',
  '140427': '山西省长治市壶关县',
  '140428': '山西省长治市长子县',
  '140429': '山西省长治市武乡县',
  '140430': '山西省长治市沁县',
  '140431': '山西省长治市沁源县',
  '140481': '山西省长治市潞城市',
  '140500': '山西省晋城市',
  '140501': '山西省晋城市市辖区',
  '140502': '山西省晋城市城区',
  '140521': '山西省晋城市沁水县',
  '140522': '山西省晋城市阳城县',
  '140524': '山西省晋城市陵川县',
  '140525': '山西省晋城市泽州县',
  '140581': '山西省晋城市高平市',
  '140600': '山西省晋城市朔州市',
  '140601': '山西省晋城市市辖区',
  '140602': '山西省晋城市朔城区',
  '140603': '山西省晋城市平鲁区',
  '140621': '山西省晋城市山阴县',
  '140622': '山西省晋城市应县',
  '140623': '山西省晋城市右玉县',
  '140624': '山西省晋城市怀仁县',
  '142200': '山西省忻州地区',
  '142201': '山西省忻州地区忻州市',
  '142202': '山西省忻州地区原平市',
  '142222': '山西省忻州地区定襄县',
  '142223': '山西省忻州地区五台县',
  '142225': '山西省忻州地区代县',
  '142226': '山西省忻州地区繁峙县',
  '142227': '山西省忻州地区宁武县',
  '142228': '山西省忻州地区静乐县',
  '142229': '山西省忻州地区神池县',
  '142230': '山西省忻州地区五寨县',
  '142231': '山西省忻州地区岢岚县',
  '142232': '山西省忻州地区河曲县',
  '142233': '山西省忻州地区保德县',
  '142234': '山西省忻州地区偏关县',
  '142300': '山西省忻州地区吕梁地区',
  '142301': '山西省忻州地区孝义市',
  '142302': '山西省忻州地区离石市',
  '142303': '山西省忻州地区汾阳市',
  '142322': '山西省忻州地区文水县',
  '142323': '山西省忻州地区交城县',
  '142325': '山西省忻州地区兴县',
  '142326': '山西省忻州地区临县',
  '142327': '山西省忻州地区柳林县',
  '142328': '山西省忻州地区石楼县',
  '142329': '山西省忻州地区岚县',
  '142330': '山西省忻州地区方山县',
  '142332': '山西省忻州地区中阳县',
  '142333': '山西省忻州地区交口县',
  '142400': '山西省晋中地区',
  '142401': '山西省晋中地区榆次市',
  '142402': '山西省晋中地区介休市',
  '142421': '山西省晋中地区榆社县',
  '142422': '山西省晋中地区左权县',
  '142423': '山西省晋中地区和顺县',
  '142424': '山西省晋中地区昔阳县',
  '142427': '山西省晋中地区寿阳县',
  '142429': '山西省晋中地区太谷县',
  '142430': '山西省晋中地区祁县',
  '142431': '山西省晋中地区平遥县',
  '142433': '山西省晋中地区灵石县',
  '142600': '山西省临汾地区',
  '142601': '山西省临汾地区临汾市',
  '142602': '山西省临汾地区侯马市',
  '142603': '山西省临汾地区霍州市',
  '142621': '山西省临汾地区曲沃县',
  '142622': '山西省临汾地区翼城县',
  '142623': '山西省临汾地区襄汾县',
  '142625': '山西省临汾地区洪洞县',
  '142627': '山西省临汾地区古县',
  '142628': '山西省临汾地区安泽县',
  '142629': '山西省临汾地区浮山县',
  '142630': '山西省临汾地区吉县',
  '142631': '山西省临汾地区乡宁县',
  '142632': '山西省临汾地区蒲县',
  '142633': '山西省临汾地区大宁县',
  '142634': '山西省临汾地区永和县',
  '142635': '山西省临汾地区隰县',
  '142636': '山西省临汾地区汾西县',
  '142700': '山西省运城地区',
  '142701': '山西省运城地区运城市',
  '142702': '山西省运城地区永济市',
  '142703': '山西省运城地区河津市',
  '142723': '山西省运城地区芮城县',
  '142724': '山西省运城地区临猗县',
  '142725': '山西省运城地区万荣县',
  '142726': '山西省运城地区新绛县',
  '142727': '山西省运城地区稷山县',
  '142729': '山西省运城地区闻喜县',
  '142730': '山西省运城地区夏县',
  '142731': '山西省运城地区绛县',
  '142732': '山西省运城地区平陆县',
  '142733': '山西省运城地区垣曲县',
  '150000': '内蒙古自治区',
  '150100': '内蒙古自治区呼和浩特市',
  '150101': '内蒙古自治区呼和浩特市市辖区',
  '150102': '内蒙古自治区呼和浩特市新城区',
  '150103': '内蒙古自治区呼和浩特市回民区',
  '150104': '内蒙古自治区呼和浩特市玉泉区',
  '150105': '内蒙古自治区呼和浩特市郊区',
  '150121': '内蒙古自治区呼和浩特市土默特左旗',
  '150122': '内蒙古自治区呼和浩特市托克托县',
  '150123': '内蒙古自治区呼和浩特市和林格尔县',
  '150124': '内蒙古自治区呼和浩特市清水河县',
  '150125': '内蒙古自治区呼和浩特市武川县',
  '150200': '内蒙古自治区包头市',
  '150201': '内蒙古自治区包头市市辖区',
  '150202': '内蒙古自治区包头市东河区',
  '150203': '内蒙古自治区包头市昆都伦区',
  '150204': '内蒙古自治区包头市青山区',
  '150205': '内蒙古自治区包头市石拐矿区',
  '150206': '内蒙古自治区包头市白云矿区',
  '150207': '内蒙古自治区包头市郊区',
  '150221': '内蒙古自治区包头市土默特右旗',
  '150222': '内蒙古自治区包头市固阳县',
  '150223': '内蒙古自治区包头市达尔罕茂明安联合旗',
  '150300': '内蒙古自治区乌海市',
  '150301': '内蒙古自治区乌海市市辖区',
  '150302': '内蒙古自治区乌海市海勃湾区',
  '150303': '内蒙古自治区乌海市海南区',
  '150304': '内蒙古自治区乌海市乌达区',
  '150400': '内蒙古自治区赤峰市',
  '150401': '内蒙古自治区赤峰市市辖区',
  '150402': '内蒙古自治区赤峰市红山区',
  '150403': '内蒙古自治区赤峰市元宝山区',
  '150404': '内蒙古自治区赤峰市松山区',
  '150421': '内蒙古自治区赤峰市阿鲁科尔沁旗',
  '150422': '内蒙古自治区赤峰市巴林左旗',
  '150423': '内蒙古自治区赤峰市巴林右旗',
  '150424': '内蒙古自治区赤峰市林西县',
  '150425': '内蒙古自治区赤峰市克什克腾旗',
  '150426': '内蒙古自治区赤峰市翁牛特旗',
  '150428': '内蒙古自治区赤峰市喀喇沁旗',
  '150429': '内蒙古自治区赤峰市宁城县',
  '150430': '内蒙古自治区赤峰市敖汉旗',
  '152100': '内蒙古自治区呼伦贝尔盟',
  '152101': '内蒙古自治区呼伦贝尔盟海拉尔市',
  '152102': '内蒙古自治区呼伦贝尔盟满洲里市',
  '152103': '内蒙古自治区呼伦贝尔盟扎兰屯市',
  '152104': '内蒙古自治区呼伦贝尔盟牙克石市',
  '152105': '内蒙古自治区呼伦贝尔盟根河市',
  '152106': '内蒙古自治区呼伦贝尔盟额尔古纳市',
  '152122': '内蒙古自治区呼伦贝尔盟阿荣旗',
  '152123': '内蒙古自治区呼伦贝尔盟莫力达瓦达斡尔族自治旗',
  '152127': '内蒙古自治区呼伦贝尔盟鄂伦春自治旗',
  '152128': '内蒙古自治区呼伦贝尔盟鄂温克族自治旗',
  '152129': '内蒙古自治区呼伦贝尔盟新巴尔虎右旗',
  '152130': '内蒙古自治区呼伦贝尔盟新巴尔虎左旗',
  '152131': '内蒙古自治区呼伦贝尔盟陈巴尔虎旗',
  '152200': '内蒙古自治区兴安盟',
  '152201': '内蒙古自治区兴安盟乌兰浩特市',
  '152202': '内蒙古自治区兴安盟阿尔山市',
  '152221': '内蒙古自治区兴安盟科尔沁右翼前旗',
  '152222': '内蒙古自治区兴安盟科尔沁右翼中旗',
  '152223': '内蒙古自治区兴安盟扎赉特旗',
  '152224': '内蒙古自治区兴安盟突泉县',
  '152300': '内蒙古自治区哲里木盟',
  '152301': '内蒙古自治区哲里木盟通辽市',
  '152302': '内蒙古自治区哲里木盟霍林郭勒市',
  '152322': '内蒙古自治区哲里木盟科尔沁左翼中旗',
  '152323': '内蒙古自治区哲里木盟科尔沁左翼后旗',
  '152324': '内蒙古自治区哲里木盟开鲁县',
  '152325': '内蒙古自治区哲里木盟库伦旗',
  '152326': '内蒙古自治区哲里木盟奈曼旗',
  '152327': '内蒙古自治区哲里木盟扎鲁特旗',
  '152500': '内蒙古自治区锡林郭勒盟',
  '152501': '内蒙古自治区锡林郭勒盟二连浩特市',
  '152502': '内蒙古自治区锡林郭勒盟锡林浩特市',
  '152522': '内蒙古自治区锡林郭勒盟阿巴嘎旗',
  '152523': '内蒙古自治区锡林郭勒盟苏尼特左旗',
  '152524': '内蒙古自治区锡林郭勒盟苏尼特右旗',
  '152525': '内蒙古自治区锡林郭勒盟东乌珠穆沁旗',
  '152526': '内蒙古自治区锡林郭勒盟西乌珠穆沁旗',
  '152527': '内蒙古自治区锡林郭勒盟太仆寺旗',
  '152528': '内蒙古自治区锡林郭勒盟镶黄旗',
  '152529': '内蒙古自治区锡林郭勒盟正镶白旗',
  '152530': '内蒙古自治区锡林郭勒盟正蓝旗',
  '152531': '内蒙古自治区锡林郭勒盟多伦县',
  '152600': '内蒙古自治区乌兰察布盟',
  '152601': '内蒙古自治区乌兰察布盟集宁市',
  '152602': '内蒙古自治区乌兰察布盟丰镇市',
  '152624': '内蒙古自治区乌兰察布盟卓资县',
  '152625': '内蒙古自治区乌兰察布盟化德县',
  '152626': '内蒙古自治区乌兰察布盟商都县',
  '152627': '内蒙古自治区乌兰察布盟兴和县',
  '152629': '内蒙古自治区乌兰察布盟凉城县',
  '152630': '内蒙古自治区乌兰察布盟察哈尔右翼前旗',
  '152631': '内蒙古自治区乌兰察布盟察哈尔右翼中旗',
  '152632': '内蒙古自治区乌兰察布盟察哈尔右翼后旗',
  '152634': '内蒙古自治区乌兰察布盟四子王旗',
  '152700': '内蒙古自治区伊克昭盟',
  '152701': '内蒙古自治区伊克昭盟东胜市',
  '152722': '内蒙古自治区伊克昭盟达拉特旗',
  '152723': '内蒙古自治区伊克昭盟准格尔旗',
  '152724': '内蒙古自治区伊克昭盟鄂托克前旗',
  '152725': '内蒙古自治区伊克昭盟鄂托克旗',
  '152726': '内蒙古自治区伊克昭盟杭锦旗',
  '152727': '内蒙古自治区伊克昭盟乌审旗',
  '152728': '内蒙古自治区伊克昭盟伊金霍洛旗',
  '152800': '内蒙古自治区巴彦淖尔盟',
  '152801': '内蒙古自治区巴彦淖尔盟临河市',
  '152822': '内蒙古自治区巴彦淖尔盟五原县',
  '152823': '内蒙古自治区巴彦淖尔盟磴口县',
  '152824': '内蒙古自治区巴彦淖尔盟乌拉特前旗',
  '152825': '内蒙古自治区巴彦淖尔盟乌拉特中旗',
  '152826': '内蒙古自治区巴彦淖尔盟乌拉特后旗',
  '152827': '内蒙古自治区巴彦淖尔盟杭锦后旗',
  '152900': '内蒙古自治区阿拉善盟',
  '152921': '内蒙古自治区阿拉善盟阿拉善左旗',
  '152922': '内蒙古自治区阿拉善盟阿拉善右旗',
  '152923': '内蒙古自治区阿拉善盟额济纳旗',
  '210000': '辽宁省',
  '210100': '辽宁省沈阳市',
  '210101': '辽宁省沈阳市市辖区',
  '210102': '辽宁省沈阳市和平区',
  '210103': '辽宁省沈阳市沈河区',
  '210104': '辽宁省沈阳市大东区',
  '210105': '辽宁省沈阳市皇姑区',
  '210106': '辽宁省沈阳市铁西区',
  '210111': '辽宁省沈阳市苏家屯区',
  '210112': '辽宁省沈阳市东陵区',
  '210113': '辽宁省沈阳市新城子区',
  '210114': '辽宁省沈阳市于洪区',
  '210122': '辽宁省沈阳市辽中县',
  '210123': '辽宁省沈阳市康平县',
  '210124': '辽宁省沈阳市法库县',
  '210181': '辽宁省沈阳市新民市',
  '210200': '辽宁省大连市',
  '210201': '辽宁省大连市市辖区',
  '210202': '辽宁省大连市中山区',
  '210203': '辽宁省大连市西岗区',
  '210204': '辽宁省大连市沙河口区',
  '210211': '辽宁省大连市甘井子区',
  '210212': '辽宁省大连市旅顺口区',
  '210213': '辽宁省大连市金州区',
  '210224': '辽宁省大连市长海县',
  '210281': '辽宁省大连市瓦房店市',
  '210282': '辽宁省大连市普兰店市',
  '210283': '辽宁省大连市庄河市',
  '210300': '辽宁省鞍山市',
  '210301': '辽宁省鞍山市市辖区',
  '210302': '辽宁省鞍山市铁东区',
  '210303': '辽宁省鞍山市铁西区',
  '210304': '辽宁省鞍山市立山区',
  '210311': '辽宁省鞍山市千山区',
  '210321': '辽宁省鞍山市台安县',
  '210323': '辽宁省鞍山市岫岩满族自治县',
  '210381': '辽宁省鞍山市海城市',
  '210400': '辽宁省抚顺市',
  '210401': '辽宁省抚顺市市辖区',
  '210402': '辽宁省抚顺市新抚区',
  '210403': '辽宁省抚顺市露天区',
  '210404': '辽宁省抚顺市望花区',
  '210411': '辽宁省抚顺市顺城区',
  '210421': '辽宁省抚顺市抚顺县',
  '210422': '辽宁省抚顺市新宾满族自治县',
  '210423': '辽宁省抚顺市清原满族自治县',
  '210500': '辽宁省本溪市',
  '210501': '辽宁省本溪市市辖区',
  '210502': '辽宁省本溪市平山区',
  '210503': '辽宁省本溪市溪湖区',
  '210504': '辽宁省本溪市明山区',
  '210505': '辽宁省本溪市南芬区',
  '210521': '辽宁省本溪市本溪满族自治县',
  '210522': '辽宁省本溪市桓仁满族自治县',
  '210600': '辽宁省丹东市',
  '210601': '辽宁省丹东市市辖区',
  '210602': '辽宁省丹东市元宝区',
  '210603': '辽宁省丹东市振兴区',
  '210604': '辽宁省丹东市振安区',
  '210624': '辽宁省丹东市宽甸满族自治县',
  '210681': '辽宁省丹东市东港市',
  '210682': '辽宁省丹东市凤城市',
  '210700': '辽宁省锦州市',
  '210701': '辽宁省锦州市市辖区',
  '210702': '辽宁省锦州市古塔区',
  '210703': '辽宁省锦州市凌河区',
  '210711': '辽宁省锦州市太和区',
  '210726': '辽宁省锦州市黑山县',
  '210727': '辽宁省锦州市义县',
  '210781': '辽宁省锦州市凌海市',
  '210782': '辽宁省锦州市北宁市',
  '210800': '辽宁省营口市',
  '210801': '辽宁省营口市市辖区',
  '210802': '辽宁省营口市站前区',
  '210803': '辽宁省营口市西市区',
  '210804': '辽宁省营口市鲅鱼圈区',
  '210811': '辽宁省营口市老边区',
  '210881': '辽宁省营口市盖州市',
  '210882': '辽宁省营口市大石桥市',
  '210900': '辽宁省阜新市',
  '210901': '辽宁省阜新市市辖区',
  '210902': '辽宁省阜新市海州区',
  '210903': '辽宁省阜新市新邱区',
  '210904': '辽宁省阜新市太平区',
  '210905': '辽宁省阜新市清河门区',
  '210911': '辽宁省阜新市细河区',
  '210921': '辽宁省阜新市阜新蒙古族自治县',
  '210922': '辽宁省阜新市彰武县',
  '211000': '辽宁省辽阳市',
  '211001': '辽宁省辽阳市市辖区',
  '211002': '辽宁省辽阳市白塔区',
  '211003': '辽宁省辽阳市文圣区',
  '211004': '辽宁省辽阳市宏伟区',
  '211005': '辽宁省辽阳市弓长岭区',
  '211011': '辽宁省辽阳市太子河区',
  '211021': '辽宁省辽阳市辽阳县',
  '211081': '辽宁省辽阳市灯塔市',
  '211100': '辽宁省盘锦市',
  '211101': '辽宁省盘锦市市辖区',
  '211102': '辽宁省盘锦市双台子区',
  '211103': '辽宁省盘锦市兴隆台区',
  '211121': '辽宁省盘锦市大洼县',
  '211122': '辽宁省盘锦市盘山县',
  '211200': '辽宁省铁岭市',
  '211201': '辽宁省铁岭市市辖区',
  '211202': '辽宁省铁岭市银州区',
  '211204': '辽宁省铁岭市清河区',
  '211221': '辽宁省铁岭市铁岭县',
  '211223': '辽宁省铁岭市西丰县',
  '211224': '辽宁省铁岭市昌图县',
  '211281': '辽宁省铁岭市铁法市',
  '211282': '辽宁省铁岭市开原市',
  '211300': '辽宁省朝阳市',
  '211301': '辽宁省朝阳市市辖区',
  '211302': '辽宁省朝阳市双塔区',
  '211303': '辽宁省朝阳市龙城区',
  '211321': '辽宁省朝阳市朝阳县',
  '211322': '辽宁省朝阳市建平县',
  '211324': '辽宁省朝阳市喀喇沁左翼蒙古族自治县',
  '211381': '辽宁省朝阳市北票市',
  '211382': '辽宁省朝阳市凌源市',
  '211400': '辽宁省葫芦岛市',
  '211401': '辽宁省葫芦岛市市辖区',
  '211402': '辽宁省葫芦岛市连山区',
  '211403': '辽宁省葫芦岛市龙港区',
  '211404': '辽宁省葫芦岛市南票区',
  '211421': '辽宁省葫芦岛市绥中县',
  '211422': '辽宁省葫芦岛市建昌县',
  '211481': '辽宁省葫芦岛市兴城市',
  '220000': '吉林省',
  '220100': '吉林省长春市',
  '220101': '吉林省长春市市辖区',
  '220102': '吉林省长春市南关区',
  '220103': '吉林省长春市宽城区',
  '220104': '吉林省长春市朝阳区',
  '220105': '吉林省长春市二道区',
  '220106': '吉林省长春市绿园区',
  '220112': '吉林省长春市双阳区',
  '220122': '吉林省长春市农安县',
  '220181': '吉林省长春市九台市',
  '220182': '吉林省长春市榆树市',
  '220183': '吉林省长春市德惠市',
  '220200': '吉林省吉林市',
  '220201': '吉林省吉林市市辖区',
  '220202': '吉林省吉林市昌邑区',
  '220203': '吉林省吉林市龙潭区',
  '220204': '吉林省吉林市船营区',
  '220211': '吉林省吉林市丰满区',
  '220221': '吉林省吉林市永吉县',
  '220281': '吉林省吉林市蛟河市',
  '220282': '吉林省吉林市桦甸市',
  '220283': '吉林省吉林市舒兰市',
  '220284': '吉林省吉林市磐石市',
  '220300': '吉林省四平市',
  '220301': '吉林省四平市市辖区',
  '220302': '吉林省四平市铁西区',
  '220303': '吉林省四平市铁东区',
  '220322': '吉林省四平市梨树县',
  '220323': '吉林省四平市伊通满族自治县',
  '220381': '吉林省四平市公主岭市',
  '220382': '吉林省四平市双辽市',
  '220400': '吉林省辽源市',
  '220401': '吉林省辽源市市辖区',
  '220402': '吉林省辽源市龙山区',
  '220403': '吉林省辽源市西安区',
  '220421': '吉林省辽源市东丰县',
  '220422': '吉林省辽源市东辽县',
  '220500': '吉林省通化市',
  '220501': '吉林省通化市市辖区',
  '220502': '吉林省通化市东昌区',
  '220503': '吉林省通化市二道江区',
  '220521': '吉林省通化市通化县',
  '220523': '吉林省通化市辉南县',
  '220524': '吉林省通化市柳河县',
  '220581': '吉林省通化市梅河口市',
  '220582': '吉林省通化市集安市',
  '220600': '吉林省白山市',
  '220601': '吉林省白山市市辖区',
  '220602': '吉林省白山市八道江区',
  '220621': '吉林省白山市抚松县',
  '220622': '吉林省白山市靖宇县',
  '220623': '吉林省白山市长白朝鲜族自治县',
  '220625': '吉林省白山市江源县',
  '220681': '吉林省白山市临江市',
  '220700': '吉林省松原市',
  '220701': '吉林省松原市市辖区',
  '220702': '吉林省松原市宁江区',
  '220721': '吉林省松原市前郭尔罗斯蒙古族自治县',
  '220722': '吉林省松原市长岭县',
  '220723': '吉林省松原市乾安县',
  '220724': '吉林省松原市扶余县',
  '220800': '吉林省白城市',
  '220801': '吉林省白城市市辖区',
  '220802': '吉林省白城市洮北区',
  '220821': '吉林省白城市镇赉县',
  '220822': '吉林省白城市通榆县',
  '220881': '吉林省白城市洮南市',
  '220882': '吉林省白城市大安市',
  '222400': '吉林省延边朝鲜族自治州',
  '222401': '吉林省延边朝鲜族自治州延吉市',
  '222402': '吉林省延边朝鲜族自治州图们市',
  '222403': '吉林省延边朝鲜族自治州敦化市',
  '222404': '吉林省延边朝鲜族自治州珲春市',
  '222405': '吉林省延边朝鲜族自治州龙井市',
  '222406': '吉林省延边朝鲜族自治州和龙市',
  '222424': '吉林省延边朝鲜族自治州汪清县',
  '222426': '吉林省延边朝鲜族自治州安图县',
  '230000': '黑龙江省',
  '230100': '黑龙江省哈尔滨市',
  '230101': '黑龙江省哈尔滨市市辖区',
  '230102': '黑龙江省哈尔滨市道里区',
  '230103': '黑龙江省哈尔滨市南岗区',
  '230104': '黑龙江省哈尔滨市道外区',
  '230105': '黑龙江省哈尔滨市太平区',
  '230106': '黑龙江省哈尔滨市香坊区',
  '230107': '黑龙江省哈尔滨市动力区',
  '230108': '黑龙江省哈尔滨市平房区',
  '230121': '黑龙江省哈尔滨市呼兰县',
  '230123': '黑龙江省哈尔滨市依兰县',
  '230124': '黑龙江省哈尔滨市方正县',
  '230125': '黑龙江省哈尔滨市宾县',
  '230126': '黑龙江省哈尔滨市巴彦县',
  '230127': '黑龙江省哈尔滨市木兰县',
  '230128': '黑龙江省哈尔滨市通河县',
  '230129': '黑龙江省哈尔滨市延寿县',
  '230181': '黑龙江省哈尔滨市阿城市',
  '230182': '黑龙江省哈尔滨市双城市',
  '230183': '黑龙江省哈尔滨市尚志市',
  '230184': '黑龙江省哈尔滨市五常市',
  '230200': '黑龙江省齐齐哈尔市',
  '230201': '黑龙江省齐齐哈尔市市辖区',
  '230202': '黑龙江省齐齐哈尔市龙沙区',
  '230203': '黑龙江省齐齐哈尔市建华区',
  '230204': '黑龙江省齐齐哈尔市铁锋区',
  '230205': '黑龙江省齐齐哈尔市昂昂溪区',
  '230206': '黑龙江省齐齐哈尔市富拉尔基区',
  '230207': '黑龙江省齐齐哈尔市碾子山区',
  '230208': '黑龙江省齐齐哈尔市梅里斯达斡尔族区',
  '230221': '黑龙江省齐齐哈尔市龙江县',
  '230223': '黑龙江省齐齐哈尔市依安县',
  '230224': '黑龙江省齐齐哈尔市泰来县',
  '230225': '黑龙江省齐齐哈尔市甘南县',
  '230227': '黑龙江省齐齐哈尔市富裕县',
  '230229': '黑龙江省齐齐哈尔市克山县',
  '230230': '黑龙江省齐齐哈尔市克东县',
  '230231': '黑龙江省齐齐哈尔市拜泉县',
  '230281': '黑龙江省齐齐哈尔市讷河市',
  '230300': '黑龙江省鸡西市',
  '230301': '黑龙江省鸡西市市辖区',
  '230302': '黑龙江省鸡西市鸡冠区',
  '230303': '黑龙江省鸡西市恒山区',
  '230304': '黑龙江省鸡西市滴道区',
  '230305': '黑龙江省鸡西市梨树区',
  '230306': '黑龙江省鸡西市城子河区',
  '230307': '黑龙江省鸡西市麻山区',
  '230321': '黑龙江省鸡西市鸡东县',
  '230381': '黑龙江省鸡西市虎林市',
  '230382': '黑龙江省鸡西市密山市',
  '230400': '黑龙江省鹤岗市',
  '230401': '黑龙江省鹤岗市市辖区',
  '230402': '黑龙江省鹤岗市向阳区',
  '230403': '黑龙江省鹤岗市工农区',
  '230404': '黑龙江省鹤岗市南山区',
  '230405': '黑龙江省鹤岗市兴安区',
  '230406': '黑龙江省鹤岗市东山区',
  '230407': '黑龙江省鹤岗市兴山区',
  '230421': '黑龙江省鹤岗市萝北县',
  '230422': '黑龙江省鹤岗市绥滨县',
  '230500': '黑龙江省双鸭山市',
  '230501': '黑龙江省双鸭山市市辖区',
  '230502': '黑龙江省双鸭山市尖山区',
  '230503': '黑龙江省双鸭山市岭东区',
  '230505': '黑龙江省双鸭山市四方台区',
  '230506': '黑龙江省双鸭山市宝山区',
  '230521': '黑龙江省双鸭山市集贤县',
  '230522': '黑龙江省双鸭山市友谊县',
  '230523': '黑龙江省双鸭山市宝清县',
  '230524': '黑龙江省双鸭山市饶河县',
  '230600': '黑龙江省大庆市',
  '230601': '黑龙江省大庆市市辖区',
  '230602': '黑龙江省大庆市萨尔图区',
  '230603': '黑龙江省大庆市龙凤区',
  '230604': '黑龙江省大庆市让胡路区',
  '230605': '黑龙江省大庆市红岗区',
  '230606': '黑龙江省大庆市大同区',
  '230621': '黑龙江省大庆市肇州县',
  '230622': '黑龙江省大庆市肇源县',
  '230623': '黑龙江省大庆市林甸县',
  '230624': '黑龙江省大庆市杜尔伯特蒙古族自治县',
  '230700': '黑龙江省伊春市',
  '230701': '黑龙江省伊春市市辖区',
  '230702': '黑龙江省伊春市伊春区',
  '230703': '黑龙江省伊春市南岔区',
  '230704': '黑龙江省伊春市友好区',
  '230705': '黑龙江省伊春市西林区',
  '230706': '黑龙江省伊春市翠峦区',
  '230707': '黑龙江省伊春市新青区',
  '230708': '黑龙江省伊春市美溪区',
  '230709': '黑龙江省伊春市金山屯区',
  '230710': '黑龙江省伊春市五营区',
  '230711': '黑龙江省伊春市乌马河区',
  '230712': '黑龙江省伊春市汤旺河区',
  '230713': '黑龙江省伊春市带岭区',
  '230714': '黑龙江省伊春市乌伊岭区',
  '230715': '黑龙江省伊春市红星区',
  '230716': '黑龙江省伊春市上甘岭区',
  '230722': '黑龙江省伊春市嘉荫县',
  '230781': '黑龙江省伊春市铁力市',
  '230800': '黑龙江省佳木斯市',
  '230801': '黑龙江省佳木斯市市辖区',
  '230802': '黑龙江省佳木斯市永红区',
  '230803': '黑龙江省佳木斯市向阳区',
  '230804': '黑龙江省佳木斯市前进区',
  '230805': '黑龙江省佳木斯市东风区',
  '230811': '黑龙江省佳木斯市郊区',
  '230822': '黑龙江省佳木斯市桦南县',
  '230826': '黑龙江省佳木斯市桦川县',
  '230828': '黑龙江省佳木斯市汤原县',
  '230833': '黑龙江省佳木斯市抚远县',
  '230881': '黑龙江省佳木斯市同江市',
  '230882': '黑龙江省佳木斯市富锦市',
  '230900': '黑龙江省七台河市',
  '230901': '黑龙江省七台河市市辖区',
  '230902': '黑龙江省七台河市新兴区',
  '230903': '黑龙江省七台河市桃山区',
  '230904': '黑龙江省七台河市茄子河区',
  '230921': '黑龙江省七台河市勃利县',
  '231000': '黑龙江省牡丹江市',
  '231001': '黑龙江省牡丹江市市辖区',
  '231002': '黑龙江省牡丹江市东安区',
  '231003': '黑龙江省牡丹江市阳明区',
  '231004': '黑龙江省牡丹江市爱民区',
  '231005': '黑龙江省牡丹江市西安区',
  '231024': '黑龙江省牡丹江市东宁县',
  '231025': '黑龙江省牡丹江市林口县',
  '231081': '黑龙江省牡丹江市绥芬河市',
  '231083': '黑龙江省牡丹江市海林市',
  '231084': '黑龙江省牡丹江市宁安市',
  '231085': '黑龙江省牡丹江市穆棱市',
  '231100': '黑龙江省黑河市',
  '231101': '黑龙江省黑河市市辖区',
  '231102': '黑龙江省黑河市爱辉区',
  '231121': '黑龙江省黑河市嫩江县',
  '231123': '黑龙江省黑河市逊克县',
  '231124': '黑龙江省黑河市孙吴县',
  '231181': '黑龙江省黑河市北安市',
  '231182': '黑龙江省黑河市五大连池市',
  '232300': '黑龙江省绥化地区',
  '232301': '黑龙江省绥化地区绥化市',
  '232302': '黑龙江省绥化地区安达市',
  '232303': '黑龙江省绥化地区肇东市',
  '232304': '黑龙江省绥化地区海伦市',
  '232324': '黑龙江省绥化地区望奎县',
  '232325': '黑龙江省绥化地区兰西县',
  '232326': '黑龙江省绥化地区青冈县',
  '232330': '黑龙江省绥化地区庆安县',
  '232331': '黑龙江省绥化地区明水县',
  '232332': '黑龙江省绥化地区绥棱县',
  '232700': '黑龙江省大兴安岭地区',
  '232721': '黑龙江省大兴安岭地区呼玛县',
  '232722': '黑龙江省大兴安岭地区塔河县',
  '232723': '黑龙江省大兴安岭地区漠河县',
  '310000': '上海市',
  '310100': '上海市市辖区',
  '310101': '上海市黄浦区',
  '310102': '上海市南市区',
  '310103': '上海市卢湾区',
  '310104': '上海市徐汇区',
  '310105': '上海市长宁区',
  '310106': '上海市静安区',
  '310107': '上海市普陀区',
  '310108': '上海市闸北区',
  '310109': '上海市虹口区',
  '310110': '上海市杨浦区',
  '310112': '上海市闵行区',
  '310113': '上海市宝山区',
  '310114': '上海市嘉定区',
  '310115': '上海市浦东新区',
  '310116': '上海市金山区',
  '310117': '上海市松江区',
  '310200': '上海市县',
  '310225': '上海市南汇县',
  '310226': '上海市奉贤县',
  '310229': '上海市青浦县',
  '310230': '上海市崇明县',
  '320000': '江苏省',
  '320100': '江苏省南京市',
  '320101': '江苏省南京市市辖区',
  '320102': '江苏省南京市玄武区',
  '320103': '江苏省南京市白下区',
  '320104': '江苏省南京市秦淮区',
  '320105': '江苏省南京市建邺区',
  '320106': '江苏省南京市鼓楼区',
  '320107': '江苏省南京市下关区',
  '320111': '江苏省南京市浦口区',
  '320112': '江苏省南京市大厂区',
  '320113': '江苏省南京市栖霞区',
  '320114': '江苏省南京市雨花台区',
  '320121': '江苏省南京市江宁县',
  '320122': '江苏省南京市江浦县',
  '320123': '江苏省南京市六合县',
  '320124': '江苏省南京市溧水县',
  '320125': '江苏省南京市高淳县',
  '320200': '江苏省无锡市',
  '320201': '江苏省无锡市市辖区',
  '320202': '江苏省无锡市崇安区',
  '320203': '江苏省无锡市南长区',
  '320204': '江苏省无锡市北塘区',
  '320211': '江苏省无锡市郊区',
  '320281': '江苏省无锡市江阴市',
  '320282': '江苏省无锡市宜兴市',
  '320283': '江苏省无锡市锡山市',
  '320300': '江苏省徐州市',
  '320301': '江苏省徐州市市辖区',
  '320302': '江苏省徐州市鼓楼区',
  '320303': '江苏省徐州市云龙区',
  '320304': '江苏省徐州市九里区',
  '320305': '江苏省徐州市贾汪区',
  '320311': '江苏省徐州市泉山区',
  '320321': '江苏省徐州市丰县',
  '320322': '江苏省徐州市沛县',
  '320323': '江苏省徐州市铜山县',
  '320324': '江苏省徐州市睢宁县',
  '320381': '江苏省徐州市新沂市',
  '320382': '江苏省徐州市邳州市',
  '320400': '江苏省常州市',
  '320401': '江苏省常州市市辖区',
  '320402': '江苏省常州市天宁区',
  '320404': '江苏省常州市钟楼区',
  '320405': '江苏省常州市戚墅堰区',
  '320411': '江苏省常州市郊区',
  '320481': '江苏省常州市溧阳市',
  '320482': '江苏省常州市金坛市',
  '320483': '江苏省常州市武进市',
  '320500': '江苏省苏州市',
  '320501': '江苏省苏州市市辖区',
  '320502': '江苏省苏州市沧浪区',
  '320503': '江苏省苏州市平江区',
  '320504': '江苏省苏州市金阊区',
  '320511': '江苏省苏州市郊区',
  '320581': '江苏省苏州市常熟市',
  '320582': '江苏省苏州市张家港市',
  '320583': '江苏省苏州市昆山市',
  '320584': '江苏省苏州市吴江市',
  '320585': '江苏省苏州市太仓市',
  '320586': '江苏省苏州市吴县市',
  '320600': '江苏省南通市',
  '320601': '江苏省南通市市辖区',
  '320602': '江苏省南通市崇川区',
  '320611': '江苏省南通市港闸区',
  '320621': '江苏省南通市海安县',
  '320623': '江苏省南通市如东县',
  '320681': '江苏省南通市启东市',
  '320682': '江苏省南通市如皋市',
  '320683': '江苏省南通市通州市',
  '320684': '江苏省南通市海门市',
  '320700': '江苏省连云港市',
  '320701': '江苏省连云港市市辖区',
  '320703': '江苏省连云港市连云区',
  '320704': '江苏省连云港市云台区',
  '320705': '江苏省连云港市新浦区',
  '320706': '江苏省连云港市海州区',
  '320721': '江苏省连云港市赣榆县',
  '320722': '江苏省连云港市东海县',
  '320723': '江苏省连云港市灌云县',
  '320724': '江苏省连云港市灌南县',
  '320800': '江苏省淮阴市',
  '320801': '江苏省淮阴市市辖区',
  '320802': '江苏省淮阴市清河区',
  '320811': '江苏省淮阴市清浦区',
  '320821': '江苏省淮阴市淮阴县',
  '320826': '江苏省淮阴市涟水县',
  '320829': '江苏省淮阴市洪泽县',
  '320830': '江苏省淮阴市盱眙县',
  '320831': '江苏省淮阴市金湖县',
  '320882': '江苏省淮阴市淮安市',
  '320900': '江苏省盐城市',
  '320901': '江苏省盐城市市辖区',
  '320902': '江苏省盐城市城区',
  '320921': '江苏省盐城市响水县',
  '320922': '江苏省盐城市滨海县',
  '320923': '江苏省盐城市阜宁县',
  '320924': '江苏省盐城市射阳县',
  '320925': '江苏省盐城市建湖县',
  '320928': '江苏省盐城市盐都县',
  '320981': '江苏省盐城市东台市',
  '320982': '江苏省盐城市大丰市',
  '321000': '江苏省扬州市',
  '321001': '江苏省扬州市市辖区',
  '321002': '江苏省扬州市广陵区',
  '321011': '江苏省扬州市郊区',
  '321023': '江苏省扬州市宝应县',
  '321027': '江苏省扬州市邗江县',
  '321081': '江苏省扬州市仪征市',
  '321084': '江苏省扬州市高邮市',
  '321088': '江苏省扬州市江都市',
  '321100': '江苏省镇江市',
  '321101': '江苏省镇江市市辖区',
  '321102': '江苏省镇江市京口区',
  '321111': '江苏省镇江市润州区',
  '321121': '江苏省镇江市丹徒县',
  '321181': '江苏省镇江市丹阳市',
  '321182': '江苏省镇江市扬中市',
  '321183': '江苏省镇江市句容市',
  '321200': '江苏省泰州市',
  '321201': '江苏省泰州市市辖区',
  '321202': '江苏省泰州市海陵区',
  '321203': '江苏省泰州市高港区',
  '321281': '江苏省泰州市兴化市',
  '321282': '江苏省泰州市靖江市',
  '321283': '江苏省泰州市泰兴市',
  '321284': '江苏省泰州市姜堰市',
  '321300': '江苏省宿迁市',
  '321301': '江苏省宿迁市市辖区',
  '321302': '江苏省宿迁市宿城区',
  '321321': '江苏省宿迁市宿豫县',
  '321322': '江苏省宿迁市沭阳县',
  '321323': '江苏省宿迁市泗阳县',
  '321324': '江苏省宿迁市泗洪县',
  '330000': '浙江省',
  '330100': '浙江省杭州市',
  '330101': '浙江省杭州市市辖区',
  '330102': '浙江省杭州市上城区',
  '330103': '浙江省杭州市下城区',
  '330104': '浙江省杭州市江干区',
  '330105': '浙江省杭州市拱墅区',
  '330106': '浙江省杭州市西湖区',
  '330108': '浙江省杭州市滨江区',
  '330122': '浙江省杭州市桐庐县',
  '330127': '浙江省杭州市淳安县',
  '330181': '浙江省杭州市萧山市',
  '330182': '浙江省杭州市建德市',
  '330183': '浙江省杭州市富阳市',
  '330184': '浙江省杭州市余杭市',
  '330185': '浙江省杭州市临安市',
  '330200': '浙江省宁波市',
  '330201': '浙江省宁波市市辖区',
  '330203': '浙江省宁波市海曙区',
  '330204': '浙江省宁波市江东区',
  '330205': '浙江省宁波市江北区',
  '330206': '浙江省宁波市北仑区',
  '330211': '浙江省宁波市镇海区',
  '330225': '浙江省宁波市象山县',
  '330226': '浙江省宁波市宁海县',
  '330227': '浙江省宁波市鄞县',
  '330281': '浙江省宁波市余姚市',
  '330282': '浙江省宁波市慈溪市',
  '330283': '浙江省宁波市奉化市',
  '330300': '浙江省温州市',
  '330301': '浙江省温州市市辖区',
  '330302': '浙江省温州市鹿城区',
  '330303': '浙江省温州市龙湾区',
  '330304': '浙江省温州市瓯海区',
  '330322': '浙江省温州市洞头县',
  '330324': '浙江省温州市永嘉县',
  '330326': '浙江省温州市平阳县',
  '330327': '浙江省温州市苍南县',
  '330328': '浙江省温州市文成县',
  '330329': '浙江省温州市泰顺县',
  '330381': '浙江省温州市瑞安市',
  '330382': '浙江省温州市乐清市',
  '330400': '浙江省嘉兴市',
  '330401': '浙江省嘉兴市市辖区',
  '330402': '浙江省嘉兴市秀城区',
  '330411': '浙江省嘉兴市郊区',
  '330421': '浙江省嘉兴市嘉善县',
  '330424': '浙江省嘉兴市海盐县',
  '330481': '浙江省嘉兴市海宁市',
  '330482': '浙江省嘉兴市平湖市',
  '330483': '浙江省嘉兴市桐乡市',
  '330500': '浙江省湖州市',
  '330501': '浙江省湖州市市辖区',
  '330521': '浙江省湖州市德清县',
  '330522': '浙江省湖州市长兴县',
  '330523': '浙江省湖州市安吉县',
  '330600': '浙江省绍兴市',
  '330601': '浙江省绍兴市市辖区',
  '330602': '浙江省绍兴市越城区',
  '330621': '浙江省绍兴市绍兴县',
  '330624': '浙江省绍兴市新昌县',
  '330681': '浙江省绍兴市诸暨市',
  '330682': '浙江省绍兴市上虞市',
  '330683': '浙江省绍兴市嵊州市',
  '330700': '浙江省金华市',
  '330701': '浙江省金华市市辖区',
  '330702': '浙江省金华市婺城区',
  '330721': '浙江省金华市金华县',
  '330723': '浙江省金华市武义县',
  '330726': '浙江省金华市浦江县',
  '330727': '浙江省金华市磐安县',
  '330781': '浙江省金华市兰溪市',
  '330782': '浙江省金华市义乌市',
  '330783': '浙江省金华市东阳市',
  '330784': '浙江省金华市永康市',
  '330800': '浙江省衢州市',
  '330801': '浙江省衢州市市辖区',
  '330802': '浙江省衢州市柯城区',
  '330821': '浙江省衢州市衢县',
  '330822': '浙江省衢州市常山县',
  '330824': '浙江省衢州市开化县',
  '330825': '浙江省衢州市龙游县',
  '330881': '浙江省衢州市江山市',
  '330900': '浙江省舟山市',
  '330901': '浙江省舟山市市辖区',
  '330902': '浙江省舟山市定海区',
  '330903': '浙江省舟山市普陀区',
  '330921': '浙江省舟山市岱山县',
  '330922': '浙江省舟山市嵊泗县',
  '331000': '浙江省台州市',
  '331001': '浙江省台州市市辖区',
  '331002': '浙江省台州市椒江区',
  '331003': '浙江省台州市黄岩区',
  '331004': '浙江省台州市路桥区',
  '331021': '浙江省台州市玉环县',
  '331022': '浙江省台州市三门县',
  '331023': '浙江省台州市天台县',
  '331024': '浙江省台州市仙居县',
  '331081': '浙江省台州市温岭市',
  '331082': '浙江省台州市临海市',
  '332500': '浙江省丽水地区',
  '332501': '浙江省丽水地区丽水市',
  '332502': '浙江省丽水地区龙泉市',
  '332522': '浙江省丽水地区青田县',
  '332523': '浙江省丽水地区云和县',
  '332525': '浙江省丽水地区庆元县',
  '332526': '浙江省丽水地区缙云县',
  '332527': '浙江省丽水地区遂昌县',
  '332528': '浙江省丽水地区松阳县',
  '332529': '浙江省丽水地区景宁畲族自治县',
  '340000': '安徽省',
  '340100': '安徽省合肥市',
  '340101': '安徽省合肥市市辖区',
  '340102': '安徽省合肥市东市区',
  '340103': '安徽省合肥市中市区',
  '340104': '安徽省合肥市西市区',
  '340111': '安徽省合肥市郊区',
  '340121': '安徽省合肥市长丰县',
  '340122': '安徽省合肥市肥东县',
  '340123': '安徽省合肥市肥西县',
  '340200': '安徽省芜湖市',
  '340201': '安徽省芜湖市市辖区',
  '340202': '安徽省芜湖市镜湖区',
  '340203': '安徽省芜湖市马塘区',
  '340204': '安徽省芜湖市新芜区',
  '340207': '安徽省芜湖市鸠江区',
  '340221': '安徽省芜湖市芜湖县',
  '340222': '安徽省芜湖市繁昌县',
  '340223': '安徽省芜湖市南陵县',
  '340300': '安徽省蚌埠市',
  '340301': '安徽省蚌埠市市辖区',
  '340302': '安徽省蚌埠市东市区',
  '340303': '安徽省蚌埠市中市区',
  '340304': '安徽省蚌埠市西市区',
  '340311': '安徽省蚌埠市郊区',
  '340321': '安徽省蚌埠市怀远县',
  '340322': '安徽省蚌埠市五河县',
  '340323': '安徽省蚌埠市固镇县',
  '340400': '安徽省淮南市',
  '340401': '安徽省淮南市市辖区',
  '340402': '安徽省淮南市大通区',
  '340403': '安徽省淮南市田家庵区',
  '340404': '安徽省淮南市谢家集区',
  '340405': '安徽省淮南市八公山区',
  '340406': '安徽省淮南市潘集区',
  '340421': '安徽省淮南市凤台县',
  '340500': '安徽省马鞍山市',
  '340501': '安徽省马鞍山市市辖区',
  '340502': '安徽省马鞍山市金家庄区',
  '340503': '安徽省马鞍山市花山区',
  '340504': '安徽省马鞍山市雨山区',
  '340505': '安徽省马鞍山市向山区',
  '340521': '安徽省马鞍山市当涂县',
  '340600': '安徽省淮北市',
  '340601': '安徽省淮北市市辖区',
  '340602': '安徽省淮北市杜集区',
  '340603': '安徽省淮北市相山区',
  '340604': '安徽省淮北市烈山区',
  '340621': '安徽省淮北市濉溪县',
  '340700': '安徽省铜陵市',
  '340701': '安徽省铜陵市市辖区',
  '340702': '安徽省铜陵市铜官山区',
  '340703': '安徽省铜陵市狮子山区',
  '340711': '安徽省铜陵市郊区',
  '340721': '安徽省铜陵市铜陵县',
  '340800': '安徽省安庆市',
  '340801': '安徽省安庆市市辖区',
  '340802': '安徽省安庆市迎江区',
  '340803': '安徽省安庆市大观区',
  '340811': '安徽省安庆市郊区',
  '340822': '安徽省安庆市怀宁县',
  '340823': '安徽省安庆市枞阳县',
  '340824': '安徽省安庆市潜山县',
  '340825': '安徽省安庆市太湖县',
  '340826': '安徽省安庆市宿松县',
  '340827': '安徽省安庆市望江县',
  '340828': '安徽省安庆市岳西县',
  '340881': '安徽省安庆市桐城市',
  '341000': '安徽省黄山市',
  '341001': '安徽省黄山市市辖区',
  '341002': '安徽省黄山市屯溪区',
  '341003': '安徽省黄山市黄山区',
  '341004': '安徽省黄山市徽州区',
  '341021': '安徽省黄山市歙县',
  '341022': '安徽省黄山市休宁县',
  '341023': '安徽省黄山市黟县',
  '341024': '安徽省黄山市祁门县',
  '341100': '安徽省滁州市',
  '341101': '安徽省滁州市市辖区',
  '341102': '安徽省滁州市琅琊区',
  '341103': '安徽省滁州市南谯区',
  '341122': '安徽省滁州市来安县',
  '341124': '安徽省滁州市全椒县',
  '341125': '安徽省滁州市定远县',
  '341126': '安徽省滁州市凤阳县',
  '341181': '安徽省滁州市天长市',
  '341182': '安徽省滁州市明光市',
  '341200': '安徽省阜阳市',
  '341201': '安徽省阜阳市市辖区',
  '341202': '安徽省阜阳市颍州区',
  '341203': '安徽省阜阳市颍东区',
  '341204': '安徽省阜阳市颍泉区',
  '341221': '安徽省阜阳市临泉县',
  '341222': '安徽省阜阳市太和县',
  '341223': '安徽省阜阳市涡阳县',
  '341224': '安徽省阜阳市蒙城县',
  '341225': '安徽省阜阳市阜南县',
  '341226': '安徽省阜阳市颍上县',
  '341227': '安徽省阜阳市利辛县',
  '341281': '安徽省阜阳市亳州市',
  '341282': '安徽省阜阳市界首市',
  '341300': '安徽省宿州市',
  '341301': '安徽省宿州市市辖区',
  '341302': '安徽省宿州市甬桥区',
  '341321': '安徽省宿州市砀山县',
  '341322': '安徽省宿州市萧县',
  '341323': '安徽省宿州市灵璧县',
  '341324': '安徽省宿州市泗县',
  '342400': '安徽省六安地区',
  '342401': '安徽省六安地区六安市',
  '342422': '安徽省六安地区寿县',
  '342423': '安徽省六安地区霍邱县',
  '342425': '安徽省六安地区舒城县',
  '342426': '安徽省六安地区金寨县',
  '342427': '安徽省六安地区霍山县',
  '342500': '安徽省宣城地区',
  '342501': '安徽省宣城地区宣州市',
  '342502': '安徽省宣城地区宁国市',
  '342522': '安徽省宣城地区郎溪县',
  '342523': '安徽省宣城地区广德县',
  '342529': '安徽省宣城地区泾县',
  '342530': '安徽省宣城地区旌德县',
  '342531': '安徽省宣城地区绩溪县',
  '342600': '安徽省巢湖地区',
  '342601': '安徽省巢湖地区巢湖市',
  '342622': '安徽省巢湖地区庐江县',
  '342623': '安徽省巢湖地区无为县',
  '342625': '安徽省巢湖地区含山县',
  '342626': '安徽省巢湖地区和县',
  '342900': '安徽省池州地区',
  '342901': '安徽省池州地区贵池市',
  '342921': '安徽省池州地区东至县',
  '342922': '安徽省池州地区石台县',
  '342923': '安徽省池州地区青阳县',
  '350000': '福建省',
  '350100': '福建省福州市',
  '350101': '福建省福州市市辖区',
  '350102': '福建省福州市鼓楼区',
  '350103': '福建省福州市台江区',
  '350104': '福建省福州市仓山区',
  '350105': '福建省福州市马尾区',
  '350111': '福建省福州市晋安区',
  '350121': '福建省福州市闽侯县',
  '350122': '福建省福州市连江县',
  '350123': '福建省福州市罗源县',
  '350124': '福建省福州市闽清县',
  '350125': '福建省福州市永泰县',
  '350128': '福建省福州市平潭县',
  '350181': '福建省福州市福清市',
  '350182': '福建省福州市长乐市',
  '350200': '福建省厦门市',
  '350201': '福建省厦门市市辖区',
  '350202': '福建省厦门市鼓浪屿区',
  '350203': '福建省厦门市思明区',
  '350204': '福建省厦门市开元区',
  '350205': '福建省厦门市杏林区',
  '350206': '福建省厦门市湖里区',
  '350211': '福建省厦门市集美区',
  '350212': '福建省厦门市同安区',
  '350300': '福建省莆田市',
  '350301': '福建省莆田市市辖区',
  '350302': '福建省莆田市城厢区',
  '350303': '福建省莆田市涵江区',
  '350321': '福建省莆田市莆田县',
  '350322': '福建省莆田市仙游县',
  '350400': '福建省三明市',
  '350401': '福建省三明市市辖区',
  '350402': '福建省三明市梅列区',
  '350403': '福建省三明市三元区',
  '350421': '福建省三明市明溪县',
  '350423': '福建省三明市清流县',
  '350424': '福建省三明市宁化县',
  '350425': '福建省三明市大田县',
  '350426': '福建省三明市尤溪县',
  '350427': '福建省三明市沙县',
  '350428': '福建省三明市将乐县',
  '350429': '福建省三明市泰宁县',
  '350430': '福建省三明市建宁县',
  '350481': '福建省三明市永安市',
  '350500': '福建省泉州市',
  '350501': '福建省泉州市市辖区',
  '350502': '福建省泉州市鲤城区',
  '350503': '福建省泉州市丰泽区',
  '350504': '福建省泉州市洛江区',
  '350521': '福建省泉州市惠安县',
  '350524': '福建省泉州市安溪县',
  '350525': '福建省泉州市永春县',
  '350526': '福建省泉州市德化县',
  '350527': '福建省泉州市金门县',
  '350581': '福建省泉州市石狮市',
  '350582': '福建省泉州市晋江市',
  '350583': '福建省泉州市南安市',
  '350600': '福建省漳州市',
  '350601': '福建省漳州市市辖区',
  '350602': '福建省漳州市芗城区',
  '350603': '福建省漳州市龙文区',
  '350622': '福建省漳州市云霄县',
  '350623': '福建省漳州市漳浦县',
  '350624': '福建省漳州市诏安县',
  '350625': '福建省漳州市长泰县',
  '350626': '福建省漳州市东山县',
  '350627': '福建省漳州市南靖县',
  '350628': '福建省漳州市平和县',
  '350629': '福建省漳州市华安县',
  '350681': '福建省漳州市龙海市',
  '350700': '福建省南平市',
  '350701': '福建省南平市市辖区',
  '350702': '福建省南平市延平区',
  '350721': '福建省南平市顺昌县',
  '350722': '福建省南平市浦城县',
  '350723': '福建省南平市光泽县',
  '350724': '福建省南平市松溪县',
  '350725': '福建省南平市政和县',
  '350781': '福建省南平市邵武市',
  '350782': '福建省南平市武夷山市',
  '350783': '福建省南平市建瓯市',
  '350784': '福建省南平市建阳市',
  '350800': '福建省龙岩市',
  '350801': '福建省龙岩市市辖区',
  '350802': '福建省龙岩市新罗区',
  '350821': '福建省龙岩市长汀县',
  '350822': '福建省龙岩市永定县',
  '350823': '福建省龙岩市上杭县',
  '350824': '福建省龙岩市武平县',
  '350825': '福建省龙岩市连城县',
  '350881': '福建省龙岩市漳平市',
  '352200': '福建省宁德地区',
  '352201': '福建省宁德地区宁德市',
  '352202': '福建省宁德地区福安市',
  '352203': '福建省宁德地区福鼎市',
  '352225': '福建省宁德地区霞浦县',
  '352227': '福建省宁德地区古田县',
  '352228': '福建省宁德地区屏南县',
  '352229': '福建省宁德地区寿宁县',
  '352230': '福建省宁德地区周宁县',
  '352231': '福建省宁德地区柘荣县',
  '360000': '江西省',
  '360100': '江西省南昌市',
  '360101': '江西省南昌市市辖区',
  '360102': '江西省南昌市东湖区',
  '360103': '江西省南昌市西湖区',
  '360104': '江西省南昌市青云谱区',
  '360105': '江西省南昌市湾里区',
  '360111': '江西省南昌市郊区',
  '360121': '江西省南昌市南昌县',
  '360122': '江西省南昌市新建县',
  '360123': '江西省南昌市安义县',
  '360124': '江西省南昌市进贤县',
  '360200': '江西省景德镇市',
  '360201': '江西省景德镇市市辖区',
  '360202': '江西省景德镇市昌江区',
  '360203': '江西省景德镇市珠山区',
  '360222': '江西省景德镇市浮梁县',
  '360281': '江西省景德镇市乐平市',
  '360300': '江西省萍乡市',
  '360301': '江西省萍乡市市辖区',
  '360302': '江西省萍乡市安源区',
  '360313': '江西省萍乡市湘东区',
  '360321': '江西省萍乡市莲花县',
  '360322': '江西省萍乡市上栗县',
  '360323': '江西省萍乡市芦溪县',
  '360400': '江西省九江市',
  '360401': '江西省九江市市辖区',
  '360402': '江西省九江市庐山区',
  '360403': '江西省九江市浔阳区',
  '360421': '江西省九江市九江县',
  '360423': '江西省九江市武宁县',
  '360424': '江西省九江市修水县',
  '360425': '江西省九江市永修县',
  '360426': '江西省九江市德安县',
  '360427': '江西省九江市星子县',
  '360428': '江西省九江市都昌县',
  '360429': '江西省九江市湖口县',
  '360430': '江西省九江市彭泽县',
  '360481': '江西省九江市瑞昌市',
  '360500': '江西省新余市',
  '360501': '江西省新余市市辖区',
  '360502': '江西省新余市渝水区',
  '360521': '江西省新余市分宜县',
  '360600': '江西省鹰潭市',
  '360601': '江西省鹰潭市市辖区',
  '360602': '江西省鹰潭市月湖区',
  '360622': '江西省鹰潭市余江县',
  '360681': '江西省鹰潭市贵溪市',
  '360700': '江西省赣州市',
  '360701': '江西省赣州市市辖区',
  '360702': '江西省赣州市章贡区',
  '360721': '江西省赣州市赣县',
  '360722': '江西省赣州市信丰县',
  '360723': '江西省赣州市大余县',
  '360724': '江西省赣州市上犹县',
  '360725': '江西省赣州市崇义县',
  '360726': '江西省赣州市安远县',
  '360727': '江西省赣州市龙南县',
  '360728': '江西省赣州市定南县',
  '360729': '江西省赣州市全南县',
  '360730': '江西省赣州市宁都县',
  '360731': '江西省赣州市于都县',
  '360732': '江西省赣州市兴国县',
  '360733': '江西省赣州市会昌县',
  '360734': '江西省赣州市寻乌县',
  '360735': '江西省赣州市石城县',
  '360781': '江西省赣州市瑞金市',
  '360782': '江西省赣州市南康市',
  '362200': '江西省宜春地区',
  '362201': '江西省宜春地区宜春市',
  '362202': '江西省宜春地区丰城市',
  '362203': '江西省宜春地区樟树市',
  '362204': '江西省宜春地区高安市',
  '362226': '江西省宜春地区奉新县',
  '362227': '江西省宜春地区万载县',
  '362228': '江西省宜春地区上高县',
  '362229': '江西省宜春地区宜丰县',
  '362232': '江西省宜春地区靖安县',
  '362233': '江西省宜春地区铜鼓县',
  '362300': '江西省上饶地区',
  '362301': '江西省上饶地区上饶市',
  '362302': '江西省上饶地区德兴市',
  '362321': '江西省上饶地区上饶县',
  '362322': '江西省上饶地区广丰县',
  '362323': '江西省上饶地区玉山县',
  '362324': '江西省上饶地区铅山县',
  '362325': '江西省上饶地区横峰县',
  '362326': '江西省上饶地区弋阳县',
  '362329': '江西省上饶地区余干县',
  '362330': '江西省上饶地区波阳县',
  '362331': '江西省上饶地区万年县',
  '362334': '江西省上饶地区婺源县',
  '362400': '江西省吉安地区',
  '362401': '江西省吉安地区吉安市',
  '362402': '江西省吉安地区井冈山市',
  '362421': '江西省吉安地区吉安县',
  '362422': '江西省吉安地区吉水县',
  '362423': '江西省吉安地区峡江县',
  '362424': '江西省吉安地区新干县',
  '362425': '江西省吉安地区永丰县',
  '362426': '江西省吉安地区泰和县',
  '362427': '江西省吉安地区遂川县',
  '362428': '江西省吉安地区万安县',
  '362429': '江西省吉安地区安福县',
  '362430': '江西省吉安地区永新县',
  '362432': '江西省吉安地区宁冈县',
  '362500': '江西省抚州地区',
  '362502': '江西省抚州地区临川市',
  '362522': '江西省抚州地区南城县',
  '362523': '江西省抚州地区黎川县',
  '362524': '江西省抚州地区南丰县',
  '362525': '江西省抚州地区崇仁县',
  '362526': '江西省抚州地区乐安县',
  '362527': '江西省抚州地区宜黄县',
  '362528': '江西省抚州地区金溪县',
  '362529': '江西省抚州地区资溪县',
  '362531': '江西省抚州地区东乡县',
  '362532': '江西省抚州地区广昌县',
  '370000': '山东省',
  '370100': '山东省济南市',
  '370101': '山东省济南市市辖区',
  '370102': '山东省济南市历下区',
  '370103': '山东省济南市市中区',
  '370104': '山东省济南市槐荫区',
  '370105': '山东省济南市天桥区',
  '370112': '山东省济南市历城区',
  '370123': '山东省济南市长清县',
  '370124': '山东省济南市平阴县',
  '370125': '山东省济南市济阳县',
  '370126': '山东省济南市商河县',
  '370181': '山东省济南市章丘市',
  '370200': '山东省青岛市',
  '370201': '山东省青岛市市辖区',
  '370202': '山东省青岛市市南区',
  '370203': '山东省青岛市市北区',
  '370205': '山东省青岛市四方区',
  '370211': '山东省青岛市黄岛区',
  '370212': '山东省青岛市崂山区',
  '370213': '山东省青岛市李沧区',
  '370214': '山东省青岛市城阳区',
  '370281': '山东省青岛市胶州市',
  '370282': '山东省青岛市即墨市',
  '370283': '山东省青岛市平度市',
  '370284': '山东省青岛市胶南市',
  '370285': '山东省青岛市莱西市',
  '370300': '山东省淄博市',
  '370301': '山东省淄博市市辖区',
  '370302': '山东省淄博市淄川区',
  '370303': '山东省淄博市张店区',
  '370304': '山东省淄博市博山区',
  '370305': '山东省淄博市临淄区',
  '370306': '山东省淄博市周村区',
  '370321': '山东省淄博市桓台县',
  '370322': '山东省淄博市高青县',
  '370323': '山东省淄博市沂源县',
  '370400': '山东省枣庄市',
  '370401': '山东省枣庄市市辖区',
  '370402': '山东省枣庄市市中区',
  '370403': '山东省枣庄市薛城区',
  '370404': '山东省枣庄市峄城区',
  '370405': '山东省枣庄市台儿庄区',
  '370406': '山东省枣庄市山亭区',
  '370481': '山东省枣庄市滕州市',
  '370500': '山东省东营市',
  '370501': '山东省东营市市辖区',
  '370502': '山东省东营市东营区',
  '370503': '山东省东营市河口区',
  '370521': '山东省东营市垦利县',
  '370522': '山东省东营市利津县',
  '370523': '山东省东营市广饶县',
  '370600': '山东省烟台市',
  '370601': '山东省烟台市市辖区',
  '370602': '山东省烟台市芝罘区',
  '370611': '山东省烟台市福山区',
  '370612': '山东省烟台市牟平区',
  '370613': '山东省烟台市莱山区',
  '370634': '山东省烟台市长岛县',
  '370681': '山东省烟台市龙口市',
  '370682': '山东省烟台市莱阳市',
  '370683': '山东省烟台市莱州市',
  '370684': '山东省烟台市蓬莱市',
  '370685': '山东省烟台市招远市',
  '370686': '山东省烟台市栖霞市',
  '370687': '山东省烟台市海阳市',
  '370700': '山东省潍坊市',
  '370701': '山东省潍坊市市辖区',
  '370702': '山东省潍坊市潍城区',
  '370703': '山东省潍坊市寒亭区',
  '370704': '山东省潍坊市坊子区',
  '370705': '山东省潍坊市奎文区',
  '370724': '山东省潍坊市临朐县',
  '370725': '山东省潍坊市昌乐县',
  '370781': '山东省潍坊市青州市',
  '370782': '山东省潍坊市诸城市',
  '370783': '山东省潍坊市寿光市',
  '370784': '山东省潍坊市安丘市',
  '370785': '山东省潍坊市高密市',
  '370786': '山东省潍坊市昌邑市',
  '370800': '山东省济宁市',
  '370801': '山东省济宁市市辖区',
  '370802': '山东省济宁市市中区',
  '370811': '山东省济宁市任城区',
  '370826': '山东省济宁市微山县',
  '370827': '山东省济宁市鱼台县',
  '370828': '山东省济宁市金乡县',
  '370829': '山东省济宁市嘉祥县',
  '370830': '山东省济宁市汶上县',
  '370831': '山东省济宁市泗水县',
  '370832': '山东省济宁市梁山县',
  '370881': '山东省济宁市曲阜市',
  '370882': '山东省济宁市兖州市',
  '370883': '山东省济宁市邹城市',
  '370900': '山东省泰安市',
  '370901': '山东省泰安市市辖区',
  '370902': '山东省泰安市泰山区',
  '370911': '山东省泰安市郊区',
  '370921': '山东省泰安市宁阳县',
  '370923': '山东省泰安市东平县',
  '370982': '山东省泰安市新泰市',
  '370983': '山东省泰安市肥城市',
  '371000': '山东省威海市',
  '371001': '山东省威海市市辖区',
  '371002': '山东省威海市环翠区',
  '371081': '山东省威海市文登市',
  '371082': '山东省威海市荣成市',
  '371083': '山东省威海市乳山市',
  '371100': '山东省日照市',
  '371101': '山东省日照市市辖区',
  '371102': '山东省日照市东港区',
  '371121': '山东省日照市五莲县',
  '371122': '山东省日照市莒县',
  '371200': '山东省莱芜市',
  '371201': '山东省莱芜市市辖区',
  '371202': '山东省莱芜市莱城区',
  '371203': '山东省莱芜市钢城区',
  '371300': '山东省临沂市',
  '371301': '山东省临沂市市辖区',
  '371302': '山东省临沂市兰山区',
  '371311': '山东省临沂市罗庄区',
  '371312': '山东省临沂市河东区',
  '371321': '山东省临沂市沂南县',
  '371322': '山东省临沂市郯城县',
  '371323': '山东省临沂市沂水县',
  '371324': '山东省临沂市苍山县',
  '371325': '山东省临沂市费县',
  '371326': '山东省临沂市平邑县',
  '371327': '山东省临沂市莒南县',
  '371328': '山东省临沂市蒙阴县',
  '371329': '山东省临沂市临沭县',
  '371400': '山东省德州市',
  '371401': '山东省德州市市辖区',
  '371402': '山东省德州市德城区',
  '371421': '山东省德州市陵县',
  '371422': '山东省德州市宁津县',
  '371423': '山东省德州市庆云县',
  '371424': '山东省德州市临邑县',
  '371425': '山东省德州市齐河县',
  '371426': '山东省德州市平原县',
  '371427': '山东省德州市夏津县',
  '371428': '山东省德州市武城县',
  '371481': '山东省德州市乐陵市',
  '371482': '山东省德州市禹城市',
  '371500': '山东省聊城市',
  '371501': '山东省聊城市市辖区',
  '371502': '山东省聊城市东昌府区',
  '371521': '山东省聊城市阳谷县',
  '371522': '山东省聊城市莘县',
  '371523': '山东省聊城市茌平县',
  '371524': '山东省聊城市东阿县',
  '371525': '山东省聊城市冠县',
  '371526': '山东省聊城市高唐县',
  '371581': '山东省聊城市临清市',
  '372300': '山东省滨州地区',
  '372301': '山东省滨州地区滨州市',
  '372321': '山东省滨州地区惠民县',
  '372323': '山东省滨州地区阳信县',
  '372324': '山东省滨州地区无棣县',
  '372325': '山东省滨州地区沾化县',
  '372328': '山东省滨州地区博兴县',
  '372330': '山东省滨州地区邹平县',
  '372900': '山东省菏泽地区',
  '372901': '山东省菏泽地区菏泽市',
  '372922': '山东省菏泽地区曹县',
  '372923': '山东省菏泽地区定陶县',
  '372924': '山东省菏泽地区成武县',
  '372925': '山东省菏泽地区单县',
  '372926': '山东省菏泽地区巨野县',
  '372928': '山东省菏泽地区郓城县',
  '372929': '山东省菏泽地区鄄城县',
  '372930': '山东省菏泽地区东明县',
  '410000': '河南省',
  '410100': '河南省郑州市',
  '410101': '河南省郑州市市辖区',
  '410102': '河南省郑州市中原区',
  '410103': '河南省郑州市二七区',
  '410104': '河南省郑州市管城回族区',
  '410105': '河南省郑州市金水区',
  '410106': '河南省郑州市上街区',
  '410108': '河南省郑州市邙山区',
  '410122': '河南省郑州市中牟县',
  '410181': '河南省郑州市巩义市',
  '410182': '河南省郑州市荥阳市',
  '410183': '河南省郑州市新密市',
  '410184': '河南省郑州市新郑市',
  '410185': '河南省郑州市登封市',
  '410200': '河南省开封市',
  '410201': '河南省开封市市辖区',
  '410202': '河南省开封市龙亭区',
  '410203': '河南省开封市顺河回族区',
  '410204': '河南省开封市鼓楼区',
  '410205': '河南省开封市南关区',
  '410211': '河南省开封市郊区',
  '410221': '河南省开封市杞县',
  '410222': '河南省开封市通许县',
  '410223': '河南省开封市尉氏县',
  '410224': '河南省开封市开封县',
  '410225': '河南省开封市兰考县',
  '410300': '河南省洛阳市',
  '410301': '河南省洛阳市市辖区',
  '410302': '河南省洛阳市老城区',
  '410303': '河南省洛阳市西工区',
  '410304': '河南省洛阳市廛河回族区',
  '410305': '河南省洛阳市涧西区',
  '410306': '河南省洛阳市吉利区',
  '410311': '河南省洛阳市郊区',
  '410322': '河南省洛阳市孟津县',
  '410323': '河南省洛阳市新安县',
  '410324': '河南省洛阳市栾川县',
  '410325': '河南省洛阳市嵩县',
  '410326': '河南省洛阳市汝阳县',
  '410327': '河南省洛阳市宜阳县',
  '410328': '河南省洛阳市洛宁县',
  '410329': '河南省洛阳市伊川县',
  '410381': '河南省洛阳市偃师市',
  '410400': '河南省平顶山市',
  '410401': '河南省平顶山市市辖区',
  '410402': '河南省平顶山市新华区',
  '410403': '河南省平顶山市卫东区',
  '410404': '河南省平顶山市石龙区',
  '410411': '河南省平顶山市湛河区',
  '410421': '河南省平顶山市宝丰县',
  '410422': '河南省平顶山市叶县',
  '410423': '河南省平顶山市鲁山县',
  '410425': '河南省平顶山市郏县',
  '410481': '河南省平顶山市舞钢市',
  '410482': '河南省平顶山市汝州市',
  '410500': '河南省安阳市',
  '410501': '河南省安阳市市辖区',
  '410502': '河南省安阳市文峰区',
  '410503': '河南省安阳市北关区',
  '410504': '河南省安阳市铁西区',
  '410511': '河南省安阳市郊区',
  '410522': '河南省安阳市安阳县',
  '410523': '河南省安阳市汤阴县',
  '410526': '河南省安阳市滑县',
  '410527': '河南省安阳市内黄县',
  '410581': '河南省安阳市林州市',
  '410600': '河南省鹤壁市',
  '410601': '河南省鹤壁市市辖区',
  '410602': '河南省鹤壁市鹤山区',
  '410603': '河南省鹤壁市山城区',
  '410611': '河南省鹤壁市郊区',
  '410621': '河南省鹤壁市浚县',
  '410622': '河南省鹤壁市淇县',
  '410700': '河南省新乡市',
  '410701': '河南省新乡市市辖区',
  '410702': '河南省新乡市红旗区',
  '410703': '河南省新乡市新华区',
  '410704': '河南省新乡市北站区',
  '410711': '河南省新乡市郊区',
  '410721': '河南省新乡市新乡县',
  '410724': '河南省新乡市获嘉县',
  '410725': '河南省新乡市原阳县',
  '410726': '河南省新乡市延津县',
  '410727': '河南省新乡市封丘县',
  '410728': '河南省新乡市长垣县',
  '410781': '河南省新乡市卫辉市',
  '410782': '河南省新乡市辉县市',
  '410800': '河南省焦作市',
  '410801': '河南省焦作市市辖区',
  '410802': '河南省焦作市解放区',
  '410803': '河南省焦作市中站区',
  '410804': '河南省焦作市马村区',
  '410811': '河南省焦作市山阳区',
  '410821': '河南省焦作市修武县',
  '410822': '河南省焦作市博爱县',
  '410823': '河南省焦作市武陟县',
  '410825': '河南省焦作市温县',
  '410881': '河南省焦作市济源市',
  '410882': '河南省焦作市沁阳市',
  '410883': '河南省焦作市孟州市',
  '410900': '河南省濮阳市',
  '410901': '河南省濮阳市市辖区',
  '410902': '河南省濮阳市市区',
  '410922': '河南省濮阳市清丰县',
  '410923': '河南省濮阳市南乐县',
  '410926': '河南省濮阳市范县',
  '410927': '河南省濮阳市台前县',
  '410928': '河南省濮阳市濮阳县',
  '411000': '河南省许昌市',
  '411001': '河南省许昌市市辖区',
  '411002': '河南省许昌市魏都区',
  '411023': '河南省许昌市许昌县',
  '411024': '河南省许昌市鄢陵县',
  '411025': '河南省许昌市襄城县',
  '411081': '河南省许昌市禹州市',
  '411082': '河南省许昌市长葛市',
  '411100': '河南省漯河市',
  '411101': '河南省漯河市市辖区',
  '411102': '河南省漯河市源汇区',
  '411121': '河南省漯河市舞阳县',
  '411122': '河南省漯河市临颍县',
  '411123': '河南省漯河市郾城县',
  '411200': '河南省三门峡市',
  '411201': '河南省三门峡市市辖区',
  '411202': '河南省三门峡市湖滨区',
  '411221': '河南省三门峡市渑池县',
  '411222': '河南省三门峡市陕县',
  '411224': '河南省三门峡市卢氏县',
  '411281': '河南省三门峡市义马市',
  '411282': '河南省三门峡市灵宝市',
  '411300': '河南省南阳市',
  '411301': '河南省南阳市市辖区',
  '411302': '河南省南阳市宛城区',
  '411303': '河南省南阳市卧龙区',
  '411321': '河南省南阳市南召县',
  '411322': '河南省南阳市方城县',
  '411323': '河南省南阳市西峡县',
  '411324': '河南省南阳市镇平县',
  '411325': '河南省南阳市内乡县',
  '411326': '河南省南阳市淅川县',
  '411327': '河南省南阳市社旗县',
  '411328': '河南省南阳市唐河县',
  '411329': '河南省南阳市新野县',
  '411330': '河南省南阳市桐柏县',
  '411381': '河南省南阳市邓州市',
  '411400': '河南省商丘市',
  '411401': '河南省商丘市市辖区',
  '411402': '河南省商丘市梁园区',
  '411403': '河南省商丘市睢阳区',
  '411421': '河南省商丘市民权县',
  '411422': '河南省商丘市睢县',
  '411423': '河南省商丘市宁陵县',
  '411424': '河南省商丘市柘城县',
  '411425': '河南省商丘市虞城县',
  '411426': '河南省商丘市夏邑县',
  '411481': '河南省商丘市永城市',
  '411500': '河南省信阳市',
  '411501': '河南省信阳市市辖区',
  '411502': '河南省信阳市师河区',
  '411503': '河南省信阳市平桥区',
  '411521': '河南省信阳市罗山县',
  '411522': '河南省信阳市光山县',
  '411523': '河南省信阳市新县',
  '411524': '河南省信阳市商城县',
  '411525': '河南省信阳市固始县',
  '411526': '河南省信阳市潢川县',
  '411527': '河南省信阳市淮滨县',
  '411528': '河南省信阳市息县',
  '412700': '河南省周口地区',
  '412701': '河南省周口地区周口市',
  '412702': '河南省周口地区项城市',
  '412721': '河南省周口地区扶沟县',
  '412722': '河南省周口地区西华县',
  '412723': '河南省周口地区商水县',
  '412724': '河南省周口地区太康县',
  '412725': '河南省周口地区鹿邑县',
  '412726': '河南省周口地区郸城县',
  '412727': '河南省周口地区淮阳县',
  '412728': '河南省周口地区沈丘县',
  '412800': '河南省驻马店地区',
  '412801': '河南省驻马店地区驻马店市',
  '412821': '河南省驻马店地区确山县',
  '412822': '河南省驻马店地区泌阳县',
  '412823': '河南省驻马店地区遂平县',
  '412824': '河南省驻马店地区西平县',
  '412825': '河南省驻马店地区上蔡县',
  '412826': '河南省驻马店地区汝南县',
  '412827': '河南省驻马店地区平舆县',
  '412828': '河南省驻马店地区新蔡县',
  '412829': '河南省驻马店地区正阳县',
  '420000': '湖北省',
  '420100': '湖北省武汉市',
  '420101': '湖北省武汉市市辖区',
  '420102': '湖北省武汉市江岸区',
  '420103': '湖北省武汉市江汉区',
  '420104': '湖北省武汉市乔口区',
  '420105': '湖北省武汉市汉阳区',
  '420106': '湖北省武汉市武昌区',
  '420107': '湖北省武汉市青山区',
  '420111': '湖北省武汉市洪山区',
  '420112': '湖北省武汉市东西湖区',
  '420113': '湖北省武汉市汉南区',
  '420114': '湖北省武汉市蔡甸区',
  '420115': '湖北省武汉市江夏区',
  '420116': '湖北省武汉市黄陂区',
  '420117': '湖北省武汉市新洲区',
  '420200': '湖北省黄石市',
  '420201': '湖北省黄石市市辖区',
  '420202': '湖北省黄石市黄石港区',
  '420203': '湖北省黄石市石灰窑区',
  '420204': '湖北省黄石市下陆区',
  '420205': '湖北省黄石市铁山区',
  '420222': '湖北省黄石市阳新县',
  '420281': '湖北省黄石市大冶市',
  '420300': '湖北省十堰市',
  '420301': '湖北省十堰市市辖区',
  '420302': '湖北省十堰市茅箭区',
  '420303': '湖北省十堰市张湾区',
  '420321': '湖北省十堰市郧县',
  '420322': '湖北省十堰市郧西县',
  '420323': '湖北省十堰市竹山县',
  '420324': '湖北省十堰市竹溪县',
  '420325': '湖北省十堰市房县',
  '420381': '湖北省十堰市丹江口市',
  '420500': '湖北省宜昌市',
  '420501': '湖北省宜昌市市辖区',
  '420502': '湖北省宜昌市西陵区',
  '420503': '湖北省宜昌市伍家岗区',
  '420504': '湖北省宜昌市点军区',
  '420505': '湖北省宜昌市虎亭区',
  '420521': '湖北省宜昌市宜昌县',
  '420525': '湖北省宜昌市远安县',
  '420526': '湖北省宜昌市兴山县',
  '420527': '湖北省宜昌市秭归县',
  '420528': '湖北省宜昌市长阳土家族自治县',
  '420529': '湖北省宜昌市五峰土家族自治县',
  '420581': '湖北省宜昌市宜都市',
  '420582': '湖北省宜昌市当阳市',
  '420583': '湖北省宜昌市枝江市',
  '420600': '湖北省襄樊市',
  '420601': '湖北省襄樊市市辖区',
  '420602': '湖北省襄樊市襄城区',
  '420606': '湖北省襄樊市樊城区',
  '420621': '湖北省襄樊市襄阳县',
  '420624': '湖北省襄樊市南漳县',
  '420625': '湖北省襄樊市谷城县',
  '420626': '湖北省襄樊市保康县',
  '420682': '湖北省襄樊市老河口市',
  '420683': '湖北省襄樊市枣阳市',
  '420684': '湖北省襄樊市宜城市',
  '420700': '湖北省鄂州市',
  '420701': '湖北省鄂州市市辖区',
  '420702': '湖北省鄂州市梁子湖区',
  '420703': '湖北省鄂州市华容区',
  '420704': '湖北省鄂州市鄂城区',
  '420800': '湖北省荆门市',
  '420801': '湖北省荆门市市辖区',
  '420802': '湖北省荆门市东宝区',
  '420821': '湖北省荆门市京山县',
  '420822': '湖北省荆门市沙洋县',
  '420881': '湖北省荆门市钟祥市',
  '420900': '湖北省孝感市',
  '420901': '湖北省孝感市市辖区',
  '420902': '湖北省孝感市孝南区',
  '420921': '湖北省孝感市孝昌县',
  '420922': '湖北省孝感市大悟县',
  '420923': '湖北省孝感市云梦县',
  '420981': '湖北省孝感市应城市',
  '420982': '湖北省孝感市安陆市',
  '420983': '湖北省孝感市广水市',
  '420984': '湖北省孝感市汉川市',
  '421000': '湖北省荆州市',
  '421001': '湖北省荆州市市辖区',
  '421002': '湖北省荆州市沙市区',
  '421003': '湖北省荆州市荆州区',
  '421022': '湖北省荆州市公安县',
  '421023': '湖北省荆州市监利县',
  '421024': '湖北省荆州市江陵县',
  '421081': '湖北省荆州市石首市',
  '421083': '湖北省荆州市洪湖市',
  '421087': '湖北省荆州市松滋市',
  '421100': '湖北省黄冈市',
  '421101': '湖北省黄冈市市辖区',
  '421102': '湖北省黄冈市黄州区',
  '421121': '湖北省黄冈市团风县',
  '421122': '湖北省黄冈市红安县',
  '421123': '湖北省黄冈市罗田县',
  '421124': '湖北省黄冈市英山县',
  '421125': '湖北省黄冈市浠水县',
  '421126': '湖北省黄冈市蕲春县',
  '421127': '湖北省黄冈市黄梅县',
  '421181': '湖北省黄冈市麻城市',
  '421182': '湖北省黄冈市武穴市',
  '421200': '湖北省咸宁市',
  '421201': '湖北省咸宁市市辖区',
  '421202': '湖北省咸宁市咸安区',
  '421221': '湖北省咸宁市嘉鱼县',
  '421222': '湖北省咸宁市通城县',
  '421223': '湖北省咸宁市崇阳县',
  '421224': '湖北省咸宁市通山县',
  '422800': '湖北省施土家族苗族自治州',
  '422801': '湖北省恩施土家族苗族自治州恩施县',
  '422802': '湖北省恩施土家族苗族自治州利川市',
  '422822': '湖北省恩施土家族苗族自治州建始县',
  '422823': '湖北省恩施土家族苗族自治州巴东县',
  '422825': '湖北省恩施土家族苗族自治州宣恩县',
  '422826': '湖北省恩施土家族苗族自治州咸丰县',
  '422827': '湖北省恩施土家族苗族自治州来凤县',
  '422828': '湖北省恩施土家族苗族自治州鹤峰县',
  '429000': '湖北省省直辖县级行政单位',
  '429001': '湖北省随州市',
  '429004': '湖北省仙桃市',
  '429005': '湖北省潜江市',
  '429006': '湖北省天门市',
  '429021': '湖北省神农架林区',
  '430000': '湖南省',
  '430100': '湖南省长沙市',
  '430101': '湖南省长沙市市辖区',
  '430102': '湖南省长沙市芙蓉区',
  '430103': '湖南省长沙市天心区',
  '430104': '湖南省长沙市岳麓区',
  '430105': '湖南省长沙市开福区',
  '430111': '湖南省长沙市雨花区',
  '430121': '湖南省长沙市长沙县',
  '430122': '湖南省长沙市望城县',
  '430124': '湖南省长沙市宁乡县',
  '430181': '湖南省长沙市浏阳市',
  '430200': '湖南省株洲市',
  '430201': '湖南省株洲市市辖区',
  '430202': '湖南省株洲市荷塘区',
  '430203': '湖南省株洲市芦淞区',
  '430204': '湖南省株洲市石峰区',
  '430211': '湖南省株洲市天元区',
  '430221': '湖南省株洲市株洲县',
  '430223': '湖南省株洲市攸县',
  '430224': '湖南省株洲市茶陵县',
  '430225': '湖南省株洲市炎陵县',
  '430281': '湖南省株洲市醴陵市',
  '430300': '湖南省湘潭市',
  '430301': '湖南省湘潭市市辖区',
  '430302': '湖南省湘潭市雨湖区',
  '430304': '湖南省湘潭市岳塘区',
  '430321': '湖南省湘潭市湘潭县',
  '430381': '湖南省湘潭市湘乡市',
  '430382': '湖南省湘潭市韶山市',
  '430400': '湖南省衡阳市',
  '430401': '湖南省衡阳市市辖区',
  '430402': '湖南省衡阳市江东区',
  '430403': '湖南省衡阳市城南区',
  '430404': '湖南省衡阳市城北区',
  '430411': '湖南省衡阳市郊区',
  '430412': '湖南省衡阳市南岳区',
  '430421': '湖南省衡阳市衡阳县',
  '430422': '湖南省衡阳市衡南县',
  '430423': '湖南省衡阳市衡山县',
  '430424': '湖南省衡阳市衡东县',
  '430426': '湖南省衡阳市祁东县',
  '430481': '湖南省衡阳市耒阳市',
  '430482': '湖南省衡阳市常宁市',
  '430500': '湖南省邵阳市',
  '430501': '湖南省邵阳市市辖区',
  '430502': '湖南省邵阳市双清区',
  '430503': '湖南省邵阳市大祥区',
  '430511': '湖南省邵阳市北塔区',
  '430521': '湖南省邵阳市邵东县',
  '430522': '湖南省邵阳市新邵县',
  '430523': '湖南省邵阳市邵阳县',
  '430524': '湖南省邵阳市隆回县',
  '430525': '湖南省邵阳市洞口县',
  '430527': '湖南省邵阳市绥宁县',
  '430528': '湖南省邵阳市新宁县',
  '430529': '湖南省邵阳市城步苗族自治县',
  '430581': '湖南省邵阳市武冈市',
  '430600': '湖南省岳阳市',
  '430601': '湖南省岳阳市市辖区',
  '430602': '湖南省岳阳市岳阳楼区',
  '430603': '湖南省岳阳市云溪区',
  '430611': '湖南省岳阳市君山区',
  '430621': '湖南省岳阳市岳阳县',
  '430623': '湖南省岳阳市华容县',
  '430624': '湖南省岳阳市湘阴县',
  '430626': '湖南省岳阳市平江县',
  '430681': '湖南省岳阳市汨罗市',
  '430682': '湖南省岳阳市临湘市',
  '430700': '湖南省常德市',
  '430701': '湖南省常德市市辖区',
  '430702': '湖南省常德市武陵区',
  '430703': '湖南省常德市鼎城区',
  '430721': '湖南省常德市安乡县',
  '430722': '湖南省常德市汉寿县',
  '430723': '湖南省常德市澧县',
  '430724': '湖南省常德市临澧县',
  '430725': '湖南省常德市桃源县',
  '430726': '湖南省常德市石门县',
  '430781': '湖南省常德市津市市',
  '430800': '湖南省张家界市',
  '430801': '湖南省张家界市市辖区',
  '430802': '湖南省张家界市永定区',
  '430811': '湖南省张家界市武陵源区',
  '430821': '湖南省张家界市慈利县',
  '430822': '湖南省张家界市桑植县',
  '430900': '湖南省益阳市',
  '430901': '湖南省益阳市市辖区',
  '430902': '湖南省益阳市资阳区',
  '430903': '湖南省益阳市赫山区',
  '430921': '湖南省益阳市南县',
  '430922': '湖南省益阳市桃江县',
  '430923': '湖南省益阳市安化县',
  '430981': '湖南省益阳市沅江市',
  '431000': '湖南省郴州市',
  '431001': '湖南省郴州市市辖区',
  '431002': '湖南省郴州市北湖区',
  '431003': '湖南省郴州市苏仙区',
  '431021': '湖南省郴州市桂阳县',
  '431022': '湖南省郴州市宜章县',
  '431023': '湖南省郴州市永兴县',
  '431024': '湖南省郴州市嘉禾县',
  '431025': '湖南省郴州市临武县',
  '431026': '湖南省郴州市汝城县',
  '431027': '湖南省郴州市桂东县',
  '431028': '湖南省郴州市安仁县',
  '431081': '湖南省郴州市资兴市',
  '431100': '湖南省永州市',
  '431101': '湖南省永州市市辖区',
  '431102': '湖南省永州市芝山区',
  '431103': '湖南省永州市冷水滩区',
  '431121': '湖南省永州市祁阳县',
  '431122': '湖南省永州市东安县',
  '431123': '湖南省永州市双牌县',
  '431124': '湖南省永州市道县',
  '431125': '湖南省永州市江永县',
  '431126': '湖南省永州市宁远县',
  '431127': '湖南省永州市蓝山县',
  '431128': '湖南省永州市新田县',
  '431129': '湖南省永州市江华瑶族自治县',
  '431200': '湖南省怀化市',
  '431201': '湖南省怀化市市辖区',
  '431202': '湖南省怀化市鹤城区',
  '431221': '湖南省怀化市中方县',
  '431222': '湖南省怀化市沅陵县',
  '431223': '湖南省怀化市辰溪县',
  '431224': '湖南省怀化市溆浦县',
  '431225': '湖南省怀化市会同县',
  '431226': '湖南省怀化市麻阳苗族自治县',
  '431227': '湖南省怀化市新晃侗族自治县',
  '431228': '湖南省怀化市芷江侗族自治县',
  '431229': '湖南省怀化市靖州苗族侗族自治县',
  '431230': '湖南省怀化市通道侗族自治县',
  '431281': '湖南省怀化市洪江市',
  '432500': '湖南省娄底地区',
  '432501': '湖南省娄底地区娄底市',
  '432502': '湖南省娄底地区冷水江市',
  '432503': '湖南省娄底地区涟源市',
  '432522': '湖南省娄底地区双峰县',
  '432524': '湖南省娄底地区新化县',
  '433000': '湖南省怀化市',
  '433001': '湖南省怀化市',
  '433100': '湖南省湘西土家族苗族自治州',
  '433101': '湖南省湘西土家族苗族自治州吉首市',
  '433122': '湖南省湘西土家族苗族自治州泸溪县',
  '433123': '湖南省湘西土家族苗族自治州凤凰县',
  '433124': '湖南省湘西土家族苗族自治州花垣县',
  '433125': '湖南省湘西土家族苗族自治州保靖县',
  '433126': '湖南省湘西土家族苗族自治州古丈县',
  '433127': '湖南省湘西土家族苗族自治州永顺县',
  '433130': '湖南省湘西土家族苗族自治州龙山县',
  '440000': '广东省',
  '440100': '广东省广州市',
  '440101': '广东省广州市市辖区',
  '440102': '广东省广州市东山区',
  '440103': '广东省广州市荔湾区',
  '440104': '广东省广州市越秀区',
  '440105': '广东省广州市海珠区',
  '440106': '广东省广州市天河区',
  '440107': '广东省广州市芳村区',
  '440111': '广东省广州市白云区',
  '440112': '广东省广州市黄埔区',
  '440181': '广东省广州市番禺市',
  '440182': '广东省广州市花都市',
  '440183': '广东省广州市增城市',
  '440184': '广东省广州市从化市',
  '440200': '广东省韶关市',
  '440201': '广东省韶关市市辖区',
  '440202': '广东省韶关市北江区',
  '440203': '广东省韶关市武江区',
  '440204': '广东省韶关市浈江区',
  '440221': '广东省韶关市曲江县',
  '440222': '广东省韶关市始兴县',
  '440224': '广东省韶关市仁化县',
  '440229': '广东省韶关市翁源县',
  '440232': '广东省韶关市乳源瑶族自治县',
  '440233': '广东省韶关市新丰县',
  '440281': '广东省韶关市乐昌市',
  '440282': '广东省韶关市南雄市',
  '440300': '广东省深圳市',
  '440301': '广东省深圳市市辖区',
  '440303': '广东省深圳市罗湖区',
  '440304': '广东省深圳市福田区',
  '440305': '广东省深圳市南山区',
  '440306': '广东省深圳市宝安区',
  '440307': '广东省深圳市龙岗区',
  '440308': '广东省深圳市盐田区',
  '440400': '广东省珠海市',
  '440401': '广东省珠海市市辖区',
  '440402': '广东省珠海市香洲区',
  '440421': '广东省珠海市斗门县',
  '440500': '广东省汕头市',
  '440501': '广东省汕头市市辖区',
  '440506': '广东省汕头市达濠区',
  '440507': '广东省汕头市龙湖区',
  '440508': '广东省汕头市金园区',
  '440509': '广东省汕头市升平区',
  '440510': '广东省汕头市河浦区',
  '440523': '广东省汕头市南澳县',
  '440582': '广东省汕头市潮阳市',
  '440583': '广东省汕头市澄海市',
  '440600': '广东省佛山市',
  '440601': '广东省佛山市市辖区',
  '440602': '广东省佛山市城区',
  '440603': '广东省佛山市石湾区',
  '440681': '广东省佛山市顺德市',
  '440682': '广东省佛山市南海市',
  '440683': '广东省佛山市三水市',
  '440684': '广东省佛山市高明市',
  '440700': '广东省江门市',
  '440701': '广东省江门市市辖区',
  '440703': '广东省江门市蓬江区',
  '440704': '广东省江门市江海区',
  '440781': '广东省江门市台山市',
  '440782': '广东省江门市新会市',
  '440783': '广东省江门市开平市',
  '440784': '广东省江门市鹤山市',
  '440785': '广东省江门市恩平市',
  '440800': '广东省湛江市',
  '440801': '广东省湛江市市辖区',
  '440802': '广东省湛江市赤坎区',
  '440803': '广东省湛江市霞山区',
  '440804': '广东省湛江市坡头区',
  '440811': '广东省湛江市麻章区',
  '440823': '广东省湛江市遂溪县',
  '440825': '广东省湛江市徐闻县',
  '440881': '广东省湛江市廉江市',
  '440882': '广东省湛江市雷州市',
  '440883': '广东省湛江市吴川市',
  '440900': '广东省茂名市',
  '440901': '广东省茂名市市辖区',
  '440902': '广东省茂名市茂南区',
  '440923': '广东省茂名市电白县',
  '440981': '广东省茂名市高州市',
  '440982': '广东省茂名市化州市',
  '440983': '广东省茂名市信宜市',
  '441200': '广东省肇庆市',
  '441201': '广东省肇庆市市辖区',
  '441202': '广东省肇庆市端州区',
  '441203': '广东省肇庆市鼎湖区',
  '441223': '广东省肇庆市广宁县',
  '441224': '广东省肇庆市怀集县',
  '441225': '广东省肇庆市封开县',
  '441226': '广东省肇庆市德庆县',
  '441283': '广东省肇庆市高要市',
  '441284': '广东省肇庆市四会市',
  '441300': '广东省惠州市',
  '441301': '广东省惠州市市辖区',
  '441302': '广东省惠州市惠城区',
  '441322': '广东省惠州市博罗县',
  '441323': '广东省惠州市惠东县',
  '441324': '广东省惠州市龙门县',
  '441381': '广东省惠州市惠阳市',
  '441400': '广东省梅州市',
  '441401': '广东省梅州市市辖区',
  '441402': '广东省梅州市梅江区',
  '441421': '广东省梅州市梅县',
  '441422': '广东省梅州市大埔县',
  '441423': '广东省梅州市丰顺县',
  '441424': '广东省梅州市五华县',
  '441426': '广东省梅州市平远县',
  '441427': '广东省梅州市蕉岭县',
  '441481': '广东省梅州市兴宁市',
  '441500': '广东省汕尾市',
  '441501': '广东省汕尾市市辖区',
  '441502': '广东省汕尾市城区',
  '441521': '广东省汕尾市海丰县',
  '441523': '广东省汕尾市陆河县',
  '441581': '广东省汕尾市陆丰市',
  '441600': '广东省河源市',
  '441601': '广东省河源市市辖区',
  '441602': '广东省河源市源城区',
  '441621': '广东省河源市紫金县',
  '441622': '广东省河源市龙川县',
  '441623': '广东省河源市连平县',
  '441624': '广东省河源市和平县',
  '441625': '广东省河源市东源县',
  '441700': '广东省阳江市',
  '441701': '广东省阳江市市辖区',
  '441702': '广东省阳江市江城区',
  '441721': '广东省阳江市阳西县',
  '441723': '广东省阳江市阳东县',
  '441781': '广东省阳江市阳春市',
  '441800': '广东省清远市',
  '441801': '广东省清远市市辖区',
  '441802': '广东省清远市清城区',
  '441821': '广东省清远市佛冈县',
  '441823': '广东省清远市阳山县',
  '441825': '广东省清远市连山壮族瑶族自治县',
  '441826': '广东省清远市连南瑶族自治县',
  '441827': '广东省清远市清新县',
  '441881': '广东省清远市英德市',
  '441882': '广东省清远市连州市',
  '441900': '广东省东莞市',
  '441901': '广东省东莞市市辖区',
  '442000': '广东省中山市',
  '442001': '广东省中山市市辖区',
  '445100': '广东省潮州市',
  '445101': '广东省潮州市市辖区',
  '445102': '广东省潮州市湘桥区',
  '445121': '广东省潮州市潮安县',
  '445122': '广东省潮州市饶平县',
  '445200': '广东省揭阳市',
  '445201': '广东省揭阳市市辖区',
  '445202': '广东省揭阳市榕城区',
  '445221': '广东省揭阳市揭东县',
  '445222': '广东省揭阳市揭西县',
  '445224': '广东省揭阳市惠来县',
  '445281': '广东省揭阳市普宁市',
  '445300': '广东省云浮市',
  '445301': '广东省云浮市市辖区',
  '445302': '广东省云浮市云城区',
  '445321': '广东省云浮市新兴县',
  '445322': '广东省云浮市郁南县',
  '445323': '广东省云浮市云安县',
  '445381': '广东省云浮市罗定市',
  '450000': '广西壮族自治区',
  '450100': '广西壮族自治区南宁市',
  '450101': '广西壮族自治区南宁市市辖区',
  '450102': '广西壮族自治区南宁市兴宁区',
  '450103': '广西壮族自治区南宁市新城区',
  '450104': '广西壮族自治区南宁市城北区',
  '450105': '广西壮族自治区南宁市江南区',
  '450106': '广西壮族自治区南宁市永新区',
  '450111': '广西壮族自治区南宁市市郊区',
  '450121': '广西壮族自治区南宁市邕宁县',
  '450122': '广西壮族自治区南宁市武鸣县',
  '450200': '广西壮族自治区柳州市',
  '450201': '广西壮族自治区柳州市市辖区',
  '450202': '广西壮族自治区柳州市城中区',
  '450203': '广西壮族自治区柳州市鱼峰区',
  '450204': '广西壮族自治区柳州市柳南区',
  '450205': '广西壮族自治区柳州市柳北区',
  '450211': '广西壮族自治区柳州市市郊区',
  '450221': '广西壮族自治区柳州市柳江县',
  '450222': '广西壮族自治区柳州市柳城县',
  '450300': '广西壮族自治区桂林市',
  '450301': '广西壮族自治区桂林市市辖区',
  '450302': '广西壮族自治区桂林市秀峰区',
  '450303': '广西壮族自治区桂林市叠彩区',
  '450304': '广西壮族自治区桂林市象山区',
  '450305': '广西壮族自治区桂林市七星区',
  '450311': '广西壮族自治区桂林市雁山区',
  '450321': '广西壮族自治区桂林市阳朔县',
  '450322': '广西壮族自治区桂林市临桂县',
  '450323': '广西壮族自治区桂林市灵川县',
  '450324': '广西壮族自治区桂林市全州县',
  '450325': '广西壮族自治区桂林市兴安县',
  '450326': '广西壮族自治区桂林市永福县',
  '450327': '广西壮族自治区桂林市灌阳县',
  '450328': '广西壮族自治区桂林市龙胜各族自治县',
  '450329': '广西壮族自治区桂林市资源县',
  '450330': '广西壮族自治区桂林市平乐县',
  '450331': '广西壮族自治区桂林市荔浦县',
  '450332': '广西壮族自治区桂林市恭城瑶族自治县',
  '450400': '广西壮族自治区梧州市',
  '450401': '广西壮族自治区梧州市市辖区',
  '450403': '广西壮族自治区梧州市万秀区',
  '450404': '广西壮族自治区梧州市蝶山区',
  '450411': '广西壮族自治区梧州市市郊区',
  '450421': '广西壮族自治区梧州市苍梧县',
  '450422': '广西壮族自治区梧州市藤县',
  '450423': '广西壮族自治区梧州市蒙山县',
  '450481': '广西壮族自治区梧州市岑溪市',
  '450500': '广西壮族自治区北海市',
  '450501': '广西壮族自治区北海市市辖区',
  '450502': '广西壮族自治区北海市海城区',
  '450503': '广西壮族自治区北海市银海区',
  '450512': '广西壮族自治区北海市铁山港区',
  '450521': '广西壮族自治区北海市合浦县',
  '450600': '广西壮族自治区防城港市',
  '450601': '广西壮族自治区防城港市市辖区',
  '450602': '广西壮族自治区防城港市港口区',
  '450603': '广西壮族自治区防城港市防城区',
  '450621': '广西壮族自治区防城港市上思县',
  '450681': '广西壮族自治区防城港市东兴市',
  '450700': '广西壮族自治区钦州市',
  '450701': '广西壮族自治区钦州市市辖区',
  '450702': '广西壮族自治区钦州市钦南区',
  '450703': '广西壮族自治区钦州市钦北区',
  '450721': '广西壮族自治区钦州市灵山县',
  '450722': '广西壮族自治区钦州市浦北县',
  '450800': '广西壮族自治区贵港市',
  '450801': '广西壮族自治区贵港市市辖区',
  '450802': '广西壮族自治区贵港市港北区',
  '450803': '广西壮族自治区贵港市港南区',
  '450821': '广西壮族自治区贵港市平南县',
  '450881': '广西壮族自治区贵港市桂平市',
  '450900': '广西壮族自治区玉林市',
  '450901': '广西壮族自治区玉林市市辖区',
  '450902': '广西壮族自治区玉林市玉州区',
  '450921': '广西壮族自治区玉林市容县',
  '450922': '广西壮族自治区玉林市陆川县',
  '450923': '广西壮族自治区玉林市博白县',
  '450924': '广西壮族自治区玉林市兴业县',
  '450981': '广西壮族自治区玉林市北流市',
  '452100': '广西壮族自治区南宁地区',
  '452101': '广西壮族自治区南宁地区凭祥市',
  '452122': '广西壮族自治区南宁地区横县',
  '452123': '广西壮族自治区南宁地区宾阳县',
  '452124': '广西壮族自治区南宁地区上林县',
  '452126': '广西壮族自治区南宁地区隆安县',
  '452127': '广西壮族自治区南宁地区马山县',
  '452128': '广西壮族自治区南宁地区扶绥县',
  '452129': '广西壮族自治区南宁地区崇左县',
  '452130': '广西壮族自治区南宁地区大新县',
  '452131': '广西壮族自治区南宁地区天等县',
  '452132': '广西壮族自治区南宁地区宁明县',
  '452133': '广西壮族自治区南宁地区龙州县',
  '452200': '广西壮族自治区柳州地区',
  '452201': '广西壮族自治区柳州地区合山市',
  '452223': '广西壮族自治区柳州地区鹿寨县',
  '452224': '广西壮族自治区柳州地区象州县',
  '452225': '广西壮族自治区柳州地区武宣县',
  '452226': '广西壮族自治区柳州地区来宾县',
  '452227': '广西壮族自治区柳州地区融安县',
  '452228': '广西壮族自治区柳州地区三江侗族自治县',
  '452229': '广西壮族自治区柳州地区融水苗族自治县',
  '452230': '广西壮族自治区柳州地区金秀瑶族自治县',
  '452231': '广西壮族自治区柳州地区忻城县',
  '452400': '广西壮族自治区贺州地区',
  '452402': '广西壮族自治区贺州地区贺州市',
  '452424': '广西壮族自治区贺州地区昭平县',
  '452427': '广西壮族自治区贺州地区钟山县',
  '452428': '广西壮族自治区贺州地区富川瑶族自治县',
  '452600': '广西壮族自治区百色地区',
  '452601': '广西壮族自治区百色地区百色市',
  '452622': '广西壮族自治区百色地区田阳县',
  '452623': '广西壮族自治区百色地区田东县',
  '452624': '广西壮族自治区百色地区平果县',
  '452625': '广西壮族自治区百色地区德保县',
  '452626': '广西壮族自治区百色地区靖西县',
  '452627': '广西壮族自治区百色地区那坡县',
  '452628': '广西壮族自治区百色地区凌云县',
  '452629': '广西壮族自治区百色地区乐业县',
  '452630': '广西壮族自治区百色地区田林县',
  '452631': '广西壮族自治区百色地区隆林各族自治县',
  '452632': '广西壮族自治区百色地区西林县',
  '452700': '广西壮族自治区河池地区',
  '452701': '广西壮族自治区河池地区河池市',
  '452702': '广西壮族自治区河池地区宜州市',
  '452723': '广西壮族自治区河池地区罗城仫佬族自治县',
  '452724': '广西壮族自治区河池地区环江毛南族自治县',
  '452725': '广西壮族自治区河池地区南丹县',
  '452726': '广西壮族自治区河池地区天峨县',
  '452727': '广西壮族自治区河池地区凤山县',
  '452728': '广西壮族自治区河池地区东兰县',
  '452729': '广西壮族自治区河池地区巴马瑶族自治县',
  '452730': '广西壮族自治区河池地区都安瑶族自治县',
  '452731': '广西壮族自治区河池地区大化瑶族自治县',
  '460000': '海南省',
  '460001': '海南省三亚市通什市',
  '460002': '海南省三亚市琼海市',
  '460003': '海南省三亚市儋州市',
  '460004': '海南省三亚市琼山市',
  '460005': '海南省三亚市文昌市',
  '460006': '海南省三亚市万宁市',
  '460007': '海南省三亚市东方市',
  '460025': '海南省三亚市定安县',
  '460026': '海南省三亚市屯昌县',
  '460027': '海南省三亚市澄迈县',
  '460028': '海南省三亚市临高县',
  '460030': '海南省三亚市白沙黎族自治县',
  '460031': '海南省三亚市昌江黎族自治县',
  '460033': '海南省三亚市乐东黎族自治县',
  '460034': '海南省三亚市陵水黎族自治县',
  '460035': '海南省三亚市保亭黎族苗族自治县',
  '460036': '海南省三亚市琼中黎族苗族自治县',
  '460037': '海南省西沙群岛',
  '460038': '海南省南沙群岛',
  '460039': '海南省中沙群岛的岛礁及其海域',
  '460100': '海南省海口市',
  '460101': '海南省海口市市辖区',
  '460102': '海南省海口市振东区',
  '460103': '海南省海口市新华区',
  '460104': '海南省海口市秀英区',
  '460200': '海南省三亚市',
  '460201': '海南省三亚市市辖区',
  '500000': '重庆市',
  '500100': '重庆市市辖区',
  '500101': '重庆市万州区',
  '500102': '重庆市涪陵区',
  '500103': '重庆市渝中区',
  '500104': '重庆市大渡口区',
  '500105': '重庆市江北区',
  '500106': '重庆市沙坪坝区',
  '500107': '重庆市九龙坡区',
  '500108': '重庆市南岸区',
  '500109': '重庆市北碚区',
  '500110': '重庆市万盛区',
  '500111': '重庆市双桥区',
  '500112': '重庆市渝北区',
  '500113': '重庆市巴南区',
  '500200': '重庆市县',
  '500221': '重庆市长寿县',
  '500222': '重庆市綦江县',
  '500223': '重庆市潼南县',
  '500224': '重庆市铜梁县',
  '500225': '重庆市大足县',
  '500226': '重庆市荣昌县',
  '500227': '重庆市璧山县',
  '500228': '重庆市梁平县',
  '500229': '重庆市城口县',
  '500230': '重庆市丰都县',
  '500231': '重庆市垫江县',
  '500232': '重庆市武隆县',
  '500233': '重庆市忠县',
  '500234': '重庆市开县',
  '500235': '重庆市云阳县',
  '500236': '重庆市奉节县',
  '500237': '重庆市巫山县',
  '500238': '重庆市巫溪县',
  '500239': '重庆市黔江土家族苗族自治县',
  '500240': '重庆市石柱土家族自治县',
  '500241': '重庆市秀山土家族苗族自治县',
  '500242': '重庆市酉阳土家族苗族自治县',
  '500243': '重庆市彭水苗族土家族自治县',
  '500300': '重庆市(市)',
  '500381': '重庆市江津市',
  '500382': '重庆市合川市',
  '500383': '重庆市永川市',
  '500384': '重庆市南川市',
  '510000': '四川省',
  '510100': '四川省成都市',
  '510101': '四川省成都市市辖区',
  '510104': '四川省成都市锦江区',
  '510105': '四川省成都市青羊区',
  '510106': '四川省成都市金牛区',
  '510107': '四川省成都市武侯区',
  '510108': '四川省成都市成华区',
  '510112': '四川省成都市龙泉驿区',
  '510113': '四川省成都市青白江区',
  '510121': '四川省成都市金堂县',
  '510122': '四川省成都市双流县',
  '510123': '四川省成都市温江县',
  '510124': '四川省成都市郫县',
  '510125': '四川省成都市新都县',
  '510129': '四川省成都市大邑县',
  '510131': '四川省成都市蒲江县',
  '510132': '四川省成都市新津县',
  '510181': '四川省成都市都江堰市',
  '510182': '四川省成都市彭州市',
  '510183': '四川省成都市邛崃市',
  '510184': '四川省成都市崇州市',
  '510300': '四川省自贡市',
  '510301': '四川省自贡市市辖区',
  '510302': '四川省自贡市自流井区',
  '510303': '四川省自贡市贡井区',
  '510304': '四川省自贡市大安区',
  '510311': '四川省自贡市沿滩区',
  '510321': '四川省自贡市荣县',
  '510322': '四川省自贡市富顺县',
  '510400': '四川省攀枝花市',
  '510401': '四川省攀枝花市市辖区',
  '510402': '四川省攀枝花市东区',
  '510403': '四川省攀枝花市西区',
  '510411': '四川省攀枝花市仁和区',
  '510421': '四川省攀枝花市米易县',
  '510422': '四川省攀枝花市盐边县',
  '510500': '四川省泸州市',
  '510501': '四川省泸州市市辖区',
  '510502': '四川省泸州市江阳区',
  '510503': '四川省泸州市纳溪区',
  '510504': '四川省泸州市龙马潭区',
  '510521': '四川省泸州市泸县',
  '510522': '四川省泸州市合江县',
  '510524': '四川省泸州市叙永县',
  '510525': '四川省泸州市古蔺县',
  '510600': '四川省德阳市',
  '510601': '四川省德阳市市辖区',
  '510603': '四川省德阳市旌阳区',
  '510623': '四川省德阳市中江县',
  '510626': '四川省德阳市罗江县',
  '510681': '四川省德阳市广汉市',
  '510682': '四川省德阳市什邡市',
  '510683': '四川省德阳市绵竹市',
  '510700': '四川省绵阳市',
  '510701': '四川省绵阳市市辖区',
  '510703': '四川省绵阳市涪城区',
  '510704': '四川省绵阳市游仙区',
  '510722': '四川省绵阳市三台县',
  '510723': '四川省绵阳市盐亭县',
  '510724': '四川省绵阳市安县',
  '510725': '四川省绵阳市梓潼县',
  '510726': '四川省绵阳市北川县',
  '510727': '四川省绵阳市平武县',
  '510781': '四川省绵阳市江油市',
  '510800': '四川省广元市',
  '510801': '四川省广元市市辖区',
  '510802': '四川省广元市市中区',
  '510811': '四川省广元市元坝区',
  '510812': '四川省广元市朝天区',
  '510821': '四川省广元市旺苍县',
  '510822': '四川省广元市青川县',
  '510823': '四川省广元市剑阁县',
  '510824': '四川省广元市苍溪县',
  '510900': '四川省遂宁市',
  '510901': '四川省遂宁市市辖区',
  '510902': '四川省遂宁市市中区',
  '510921': '四川省遂宁市蓬溪县',
  '510922': '四川省遂宁市射洪县',
  '510923': '四川省遂宁市大英县',
  '511000': '四川省内江市',
  '511001': '四川省内江市市辖区',
  '511002': '四川省内江市市中区',
  '511011': '四川省内江市东兴区',
  '511024': '四川省内江市威远县',
  '511025': '四川省内江市资中县',
  '511028': '四川省内江市隆昌县',
  '511100': '四川省乐山市',
  '511101': '四川省乐山市市辖区',
  '511102': '四川省乐山市市中区',
  '511111': '四川省乐山市沙湾区',
  '511112': '四川省乐山市五通桥区',
  '511113': '四川省乐山市金口河区',
  '511123': '四川省乐山市犍为县',
  '511124': '四川省乐山市井研县',
  '511126': '四川省乐山市夹江县',
  '511129': '四川省乐山市沐川县',
  '511132': '四川省乐山市峨边彝族自治县',
  '511133': '四川省乐山市马边彝族自治县',
  '511181': '四川省乐山市峨眉山市',
  '511300': '四川省南充市',
  '511301': '四川省南充市市辖区',
  '511302': '四川省南充市顺庆区',
  '511303': '四川省南充市高坪区',
  '511304': '四川省南充市嘉陵区',
  '511321': '四川省南充市南部县',
  '511322': '四川省南充市营山县',
  '511323': '四川省南充市蓬安县',
  '511324': '四川省南充市仪陇县',
  '511325': '四川省南充市西充县',
  '511381': '四川省南充市阆中市',
  '511500': '四川省宜宾市',
  '511501': '四川省宜宾市市辖区',
  '511502': '四川省宜宾市翠屏区',
  '511521': '四川省宜宾市宜宾县',
  '511522': '四川省宜宾市南溪县',
  '511523': '四川省宜宾市江安县',
  '511524': '四川省宜宾市长宁县',
  '511525': '四川省宜宾市高县',
  '511526': '四川省宜宾市珙县',
  '511527': '四川省宜宾市筠连县',
  '511528': '四川省宜宾市兴文县',
  '511529': '四川省宜宾市屏山县',
  '511600': '四川省广安市',
  '511601': '四川省广安市市辖区',
  '511602': '四川省广安市广安区',
  '511621': '四川省广安市岳池县',
  '511622': '四川省广安市武胜县',
  '511623': '四川省广安市邻水县',
  '511681': '四川省广安市华蓥市',
  '513000': '四川省达川地区',
  '513001': '四川省达川地区达川市',
  '513002': '四川省达川地区万源市',
  '513021': '四川省达川地区达县',
  '513022': '四川省达川地区宣汉县',
  '513023': '四川省达川地区开江县',
  '513029': '四川省达川地区大竹县',
  '513030': '四川省达川地区渠县',
  '513100': '四川省雅安地区',
  '513101': '四川省雅安地区雅安市',
  '513122': '四川省雅安地区名山县',
  '513123': '四川省雅安地区荥经县',
  '513124': '四川省雅安地区汉源县',
  '513125': '四川省雅安地区石棉县',
  '513126': '四川省雅安地区天全县',
  '513127': '四川省雅安地区芦山县',
  '513128': '四川省雅安地区宝兴县',
  '513200': '四川省阿坝藏族羌族自治州',
  '513221': '四川省阿坝藏族羌族自治州汶川县',
  '513222': '四川省阿坝藏族羌族自治州理县',
  '513223': '四川省阿坝藏族羌族自治州茂县',
  '513224': '四川省阿坝藏族羌族自治州松潘县',
  '513225': '四川省阿坝藏族羌族自治州九寨沟县',
  '513226': '四川省阿坝藏族羌族自治州金川县',
  '513227': '四川省阿坝藏族羌族自治州小金县',
  '513228': '四川省阿坝藏族羌族自治州黑水县',
  '513229': '四川省阿坝藏族羌族自治州马尔康县',
  '513230': '四川省阿坝藏族羌族自治州壤塘县',
  '513231': '四川省阿坝藏族羌族自治州阿坝县',
  '513232': '四川省阿坝藏族羌族自治州若尔盖县',
  '513233': '四川省阿坝藏族羌族自治州红原县',
  '513300': '四川省甘孜藏族自治州',
  '513321': '四川省甘孜藏族自治州康定县',
  '513322': '四川省甘孜藏族自治州泸定县',
  '513323': '四川省甘孜藏族自治州丹巴县',
  '513324': '四川省甘孜藏族自治州九龙县',
  '513325': '四川省甘孜藏族自治州雅江县',
  '513326': '四川省甘孜藏族自治州道孚县',
  '513327': '四川省甘孜藏族自治州炉霍县',
  '513328': '四川省甘孜藏族自治州甘孜县',
  '513329': '四川省甘孜藏族自治州新龙县',
  '513330': '四川省甘孜藏族自治州德格县',
  '513331': '四川省甘孜藏族自治州白玉县',
  '513332': '四川省甘孜藏族自治州石渠县',
  '513333': '四川省甘孜藏族自治州色达县',
  '513334': '四川省甘孜藏族自治州理塘县',
  '513335': '四川省甘孜藏族自治州巴塘县',
  '513336': '四川省甘孜藏族自治州乡城县',
  '513337': '四川省甘孜藏族自治州稻城县',
  '513338': '四川省甘孜藏族自治州得荣县',
  '513400': '四川省凉山彝族自治州',
  '513401': '四川省凉山彝族自治州西昌市',
  '513422': '四川省凉山彝族自治州木里藏族自治县',
  '513423': '四川省凉山彝族自治州盐源县',
  '513424': '四川省凉山彝族自治州德昌县',
  '513425': '四川省凉山彝族自治州会理县',
  '513426': '四川省凉山彝族自治州会东县',
  '513427': '四川省凉山彝族自治州宁南县',
  '513428': '四川省凉山彝族自治州普格县',
  '513429': '四川省凉山彝族自治州布拖县',
  '513430': '四川省凉山彝族自治州金阳县',
  '513431': '四川省凉山彝族自治州昭觉县',
  '513432': '四川省凉山彝族自治州喜德县',
  '513433': '四川省凉山彝族自治州冕宁县',
  '513434': '四川省凉山彝族自治州越西县',
  '513435': '四川省凉山彝族自治州甘洛县',
  '513436': '四川省凉山彝族自治州美姑县',
  '513437': '四川省凉山彝族自治州雷波县',
  '513700': '四川省巴中地区',
  '513701': '四川省巴中地区巴中市',
  '513721': '四川省巴中地区通江县',
  '513722': '四川省巴中地区南江县',
  '513723': '四川省巴中地区平昌县',
  '513800': '四川省眉山地区',
  '513821': '四川省眉山地区眉山县',
  '513822': '四川省眉山地区仁寿县',
  '513823': '四川省眉山地区彭山县',
  '513824': '四川省眉山地区洪雅县',
  '513825': '四川省眉山地区丹棱县',
  '513826': '四川省眉山地区青神县',
  '513900': '四川省眉山地区资阳地区',
  '513901': '四川省眉山地区资阳市',
  '513902': '四川省眉山地区简阳市',
  '513921': '四川省眉山地区安岳县',
  '513922': '四川省眉山地区乐至县',
  '520000': '贵州省',
  '520100': '贵州省贵阳市',
  '520101': '贵州省贵阳市市辖区',
  '520102': '贵州省贵阳市南明区',
  '520103': '贵州省贵阳市云岩区',
  '520111': '贵州省贵阳市花溪区',
  '520112': '贵州省贵阳市乌当区',
  '520113': '贵州省贵阳市白云区',
  '520121': '贵州省贵阳市开阳县',
  '520122': '贵州省贵阳市息烽县',
  '520123': '贵州省贵阳市修文县',
  '520181': '贵州省贵阳市清镇市',
  '520200': '贵州省六盘水市',
  '520201': '贵州省六盘水市钟山区',
  '520202': '贵州省六盘水市盘县特区',
  '520203': '贵州省六盘水市六枝特区',
  '520221': '贵州省六盘水市水城县',
  '520300': '贵州省遵义市',
  '520301': '贵州省遵义市市辖区',
  '520302': '贵州省遵义市红花岗区',
  '520321': '贵州省遵义市遵义县',
  '520322': '贵州省遵义市桐梓县',
  '520323': '贵州省遵义市绥阳县',
  '520324': '贵州省遵义市正安县',
  '520325': '贵州省遵义市道真仡佬族苗族自治县',
  '520326': '贵州省遵义市务川仡佬族苗族自治县',
  '520327': '贵州省遵义市凤冈县',
  '520328': '贵州省遵义市湄潭县',
  '520329': '贵州省遵义市余庆县',
  '520330': '贵州省遵义市习水县',
  '520381': '贵州省遵义市赤水市',
  '520382': '贵州省遵义市仁怀市',
  '522200': '贵州省铜仁地区',
  '522201': '贵州省铜仁地区铜仁市',
  '522222': '贵州省铜仁地区江口县',
  '522223': '贵州省铜仁地区玉屏侗族自治县',
  '522224': '贵州省铜仁地区石阡县',
  '522225': '贵州省铜仁地区思南县',
  '522226': '贵州省铜仁地区印江土家族苗族自治县',
  '522227': '贵州省铜仁地区德江县',
  '522228': '贵州省铜仁地区沿河土家族自治县',
  '522229': '贵州省铜仁地区松桃苗族自治县',
  '522230': '贵州省铜仁地区万山特区',
  '522300': '贵州省黔西南布依族苗族自治州',
  '522301': '贵州省黔西南布依族苗族自治州兴义市',
  '522322': '贵州省黔西南布依族苗族自治州兴仁县',
  '522323': '贵州省黔西南布依族苗族自治州普安县',
  '522324': '贵州省黔西南布依族苗族自治州晴隆县',
  '522325': '贵州省黔西南布依族苗族自治州贞丰县',
  '522326': '贵州省黔西南布依族苗族自治州望谟县',
  '522327': '贵州省黔西南布依族苗族自治州册亨县',
  '522328': '贵州省黔西南布依族苗族自治州安龙县',
  '522400': '贵州省毕节地区',
  '522401': '贵州省毕节地区毕节市',
  '522422': '贵州省毕节地区大方县',
  '522423': '贵州省毕节地区黔西县',
  '522424': '贵州省毕节地区金沙县',
  '522425': '贵州省毕节地区织金县',
  '522426': '贵州省毕节地区纳雍县',
  '522427': '贵州省毕节地区威宁彝族回族苗族自治县',
  '522428': '贵州省毕节地区赫章县',
  '522500': '贵州省安顺地区',
  '522501': '贵州省安顺地区安顺市',
  '522526': '贵州省安顺地区平坝县',
  '522527': '贵州省安顺地区普定县',
  '522528': '贵州省安顺地区关岭布依族苗族自治县',
  '522529': '贵州省安顺地区镇宁布依族苗族自治县',
  '522530': '贵州省安顺地区紫云苗族布依族自治县',
  '522600': '贵州省黔东南苗族侗族自治州',
  '522601': '贵州省黔东南苗族侗族自治州凯里市',
  '522622': '贵州省黔东南苗族侗族自治州黄平县',
  '522623': '贵州省黔东南苗族侗族自治州施秉县',
  '522624': '贵州省黔东南苗族侗族自治州三穗县',
  '522625': '贵州省黔东南苗族侗族自治州镇远县',
  '522626': '贵州省黔东南苗族侗族自治州岑巩县',
  '522627': '贵州省黔东南苗族侗族自治州天柱县',
  '522628': '贵州省黔东南苗族侗族自治州锦屏县',
  '522629': '贵州省黔东南苗族侗族自治州剑河县',
  '522630': '贵州省黔东南苗族侗族自治州台江县',
  '522631': '贵州省黔东南苗族侗族自治州黎平县',
  '522632': '贵州省黔东南苗族侗族自治州榕江县',
  '522633': '贵州省黔东南苗族侗族自治州从江县',
  '522634': '贵州省黔东南苗族侗族自治州雷山县',
  '522635': '贵州省黔东南苗族侗族自治州麻江县',
  '522636': '贵州省黔东南苗族侗族自治州丹寨县',
  '522700': '贵州省黔南布依族苗族自治州',
  '522701': '贵州省黔南布依族苗族自治州都匀市',
  '522702': '贵州省黔南布依族苗族自治州福泉市',
  '522722': '贵州省黔南布依族苗族自治州荔波县',
  '522723': '贵州省黔南布依族苗族自治州贵定县',
  '522725': '贵州省黔南布依族苗族自治州瓮安县',
  '522726': '贵州省黔南布依族苗族自治州独山县',
  '522727': '贵州省黔南布依族苗族自治州平塘县',
  '522728': '贵州省黔南布依族苗族自治州罗甸县',
  '522729': '贵州省黔南布依族苗族自治州长顺县',
  '522730': '贵州省黔南布依族苗族自治州龙里县',
  '522731': '贵州省黔南布依族苗族自治州惠水县',
  '522732': '贵州省黔南布依族苗族自治州三都水族自治县',
  '530000': '云南省',
  '530100': '云南省昆明市',
  '530101': '云南省昆明市市辖区',
  '530102': '云南省昆明市五华区',
  '530103': '云南省昆明市盘龙区',
  '530111': '云南省昆明市官渡区',
  '530112': '云南省昆明市西山区',
  '530113': '云南省昆明市东川区',
  '530121': '云南省昆明市呈贡县',
  '530122': '云南省昆明市晋宁县',
  '530124': '云南省昆明市富民县',
  '530125': '云南省昆明市宜良县',
  '530126': '云南省昆明市石林彝族自治县',
  '530127': '云南省昆明市嵩明县',
  '530128': '云南省昆明市禄劝彝族苗族自治县',
  '530129': '云南省昆明市寻甸回族彝族自治县',
  '530181': '云南省昆明市安宁市',
  '530300': '云南省曲靖市',
  '530301': '云南省曲靖市市辖区',
  '530302': '云南省曲靖市麒麟区',
  '530321': '云南省曲靖市马龙县',
  '530322': '云南省曲靖市陆良县',
  '530323': '云南省曲靖市师宗县',
  '530324': '云南省曲靖市罗平县',
  '530325': '云南省曲靖市富源县',
  '530326': '云南省曲靖市会泽县',
  '530328': '云南省曲靖市沾益县',
  '530381': '云南省曲靖市宣威市',
  '530400': '云南省玉溪市',
  '530401': '云南省玉溪市市辖区',
  '530402': '云南省玉溪市红塔区',
  '530421': '云南省玉溪市江川县',
  '530422': '云南省玉溪市澄江县',
  '530423': '云南省玉溪市通海县',
  '530424': '云南省玉溪市华宁县',
  '530425': '云南省玉溪市易门县',
  '530426': '云南省玉溪市峨山彝族自治县',
  '530427': '云南省玉溪市新平彝族傣族自治县',
  '530428': '云南省玉溪市元江哈尼族彝族傣族自治县',
  '532100': '云南省昭通地区',
  '532101': '云南省昭通地区昭通市',
  '532122': '云南省昭通地区鲁甸县',
  '532123': '云南省昭通地区巧家县',
  '532124': '云南省昭通地区盐津县',
  '532125': '云南省昭通地区大关县',
  '532126': '云南省昭通地区永善县',
  '532127': '云南省昭通地区绥江县',
  '532128': '云南省昭通地区镇雄县',
  '532129': '云南省昭通地区彝良县',
  '532130': '云南省昭通地区威信县',
  '532131': '云南省昭通地区水富县',
  '532300': '云南省楚雄彝族自治州',
  '532301': '云南省楚雄彝族自治州楚雄市',
  '532322': '云南省楚雄彝族自治州双柏县',
  '532323': '云南省楚雄彝族自治州牟定县',
  '532324': '云南省楚雄彝族自治州南华县',
  '532325': '云南省楚雄彝族自治州姚安县',
  '532326': '云南省楚雄彝族自治州大姚县',
  '532327': '云南省楚雄彝族自治州永仁县',
  '532328': '云南省楚雄彝族自治州元谋县',
  '532329': '云南省楚雄彝族自治州武定县',
  '532331': '云南省楚雄彝族自治州禄丰县',
  '532500': '云南省红河哈尼族彝族自治州',
  '532501': '云南省红河哈尼族彝族自治州个旧市',
  '532502': '云南省红河哈尼族彝族自治州开远市',
  '532522': '云南省红河哈尼族彝族自治州蒙自县',
  '532523': '云南省红河哈尼族彝族自治州屏边苗族自治县',
  '532524': '云南省红河哈尼族彝族自治州建水县',
  '532525': '云南省红河哈尼族彝族自治州石屏县',
  '532526': '云南省红河哈尼族彝族自治州弥勒县',
  '532527': '云南省红河哈尼族彝族自治州泸西县',
  '532528': '云南省红河哈尼族彝族自治州元阳县',
  '532529': '云南省红河哈尼族彝族自治州红河县',
  '532530': '云南省红河哈尼族彝族自治州金平苗族瑶族傣族自治县',
  '532531': '云南省红河哈尼族彝族自治州绿春县',
  '532532': '云南省红河哈尼族彝族自治州河口瑶族自治县',
  '532600': '云南省文山壮族苗族自治州',
  '532621': '云南省文山壮族苗族自治州文山县',
  '532622': '云南省文山壮族苗族自治州砚山县',
  '532623': '云南省文山壮族苗族自治州西畴县',
  '532624': '云南省文山壮族苗族自治州麻栗坡县',
  '532625': '云南省文山壮族苗族自治州马关县',
  '532626': '云南省文山壮族苗族自治州丘北县',
  '532627': '云南省文山壮族苗族自治州广南县',
  '532628': '云南省文山壮族苗族自治州富宁县',
  '532700': '云南省思茅地区',
  '532701': '云南省思茅地区思茅市',
  '532722': '云南省思茅地区普洱哈尼族彝族自治县',
  '532723': '云南省思茅地区墨江哈尼族自治县',
  '532724': '云南省思茅地区景东彝族自治县',
  '532725': '云南省思茅地区景谷傣族彝族自治县',
  '532726': '云南省思茅地区镇沅彝族哈尼族拉祜族自治县',
  '532727': '云南省思茅地区江城哈尼族彝族自治县',
  '532728': '云南省思茅地区孟连傣族拉祜族佤族自治县',
  '532729': '云南省思茅地区澜沧拉祜族自治县',
  '532730': '云南省思茅地区西盟佤族自治县',
  '532800': '云南省西双版纳傣族自治州',
  '532801': '云南省西双版纳傣族自治州景洪市',
  '532822': '云南省西双版纳傣族自治州勐海县',
  '532823': '云南省西双版纳傣族自治州勐腊县',
  '532900': '云南省大理白族自治州',
  '532901': '云南省大理白族自治州大理市',
  '532922': '云南省大理白族自治州漾濞彝族自治县',
  '532923': '云南省大理白族自治州祥云县',
  '532924': '云南省大理白族自治州宾川县',
  '532925': '云南省大理白族自治州弥渡县',
  '532926': '云南省大理白族自治州南涧彝族自治县',
  '532927': '云南省大理白族自治州巍山彝族回族自治县',
  '532928': '云南省大理白族自治州永平县',
  '532929': '云南省大理白族自治州云龙县',
  '532930': '云南省大理白族自治州洱源县',
  '532931': '云南省大理白族自治州剑川县',
  '532932': '云南省大理白族自治州鹤庆县',
  '533000': '云南省保山地区',
  '533001': '云南省保山地区保山市',
  '533022': '云南省保山地区施甸县',
  '533023': '云南省保山地区腾冲县',
  '533024': '云南省保山地区龙陵县',
  '533025': '云南省保山地区昌宁县',
  '533100': '云南省德宏傣族景颇族自治州',
  '533101': '云南省德宏傣族景颇族自治州畹町市',
  '533102': '云南省德宏傣族景颇族自治州瑞丽市',
  '533103': '云南省德宏傣族景颇族自治州潞西市',
  '533122': '云南省德宏傣族景颇族自治州梁河县',
  '533123': '云南省德宏傣族景颇族自治州盈江县',
  '533124': '云南省德宏傣族景颇族自治州陇川县',
  '533200': '云南省丽江地区',
  '533221': '云南省丽江地区丽江纳西族自治县',
  '533222': '云南省丽江地区永胜县',
  '533223': '云南省丽江地区华坪县',
  '533224': '云南省丽江地区宁蒗彝族自治县',
  '533300': '云南省怒江傈僳族自治州',
  '533321': '云南省怒江傈僳族自治州泸水县',
  '533323': '云南省怒江傈僳族自治州福贡县',
  '533324': '云南省怒江傈僳族自治州贡山独龙族怒族自治县',
  '533325': '云南省怒江傈僳族自治州兰坪白族普米族自治县',
  '533400': '云南省迪庆藏族自治州',
  '533421': '云南省迪庆藏族自治州中甸县',
  '533422': '云南省迪庆藏族自治州德钦县',
  '533423': '云南省迪庆藏族自治州维西傈僳族自治县',
  '533500': '云南省临沧地区',
  '533521': '云南省临沧地区临沧县',
  '533522': '云南省临沧地区凤庆县',
  '533523': '云南省临沧地区云县',
  '533524': '云南省临沧地区永德县',
  '533525': '云南省临沧地区镇康县',
  '533526': '云南省临沧地区双江拉祜族佤族布朗族傣族自治县',
  '533527': '云南省临沧地区耿马傣族佤族自治县',
  '533528': '云南省临沧地区沧源佤族自治县',
  '540000': '西藏自治区',
  '540100': '西藏自治区拉萨市',
  '540101': '西藏自治区拉萨市市辖区',
  '540102': '西藏自治区拉萨市城关区',
  '540121': '西藏自治区拉萨市林周县',
  '540122': '西藏自治区拉萨市当雄县',
  '540123': '西藏自治区拉萨市尼木县',
  '540124': '西藏自治区拉萨市曲水县',
  '540125': '西藏自治区拉萨市堆龙德庆县',
  '540126': '西藏自治区拉萨市达孜县',
  '540127': '西藏自治区拉萨市墨竹工卡县',
  '542100': '西藏自治区昌都地区',
  '542121': '西藏自治区昌都地区昌都县',
  '542122': '西藏自治区昌都地区江达县',
  '542123': '西藏自治区昌都地区贡觉县',
  '542124': '西藏自治区昌都地区类乌齐县',
  '542125': '西藏自治区昌都地区丁青县',
  '542126': '西藏自治区昌都地区察雅县',
  '542127': '西藏自治区昌都地区八宿县',
  '542128': '西藏自治区昌都地区左贡县',
  '542129': '西藏自治区昌都地区芒康县',
  '542132': '西藏自治区昌都地区洛隆县',
  '542133': '西藏自治区昌都地区边坝县',
  '542134': '西藏自治区昌都地区盐井县',
  '542135': '西藏自治区昌都地区碧土县',
  '542136': '西藏自治区昌都地区妥坝县',
  '542137': '西藏自治区昌都地区生达县',
  '542200': '西藏自治区山南地区',
  '542221': '西藏自治区山南地区乃东县',
  '542222': '西藏自治区山南地区扎囊县',
  '542223': '西藏自治区山南地区贡嘎县',
  '542224': '西藏自治区山南地区桑日县',
  '542225': '西藏自治区山南地区琼结县',
  '542226': '西藏自治区山南地区曲松县',
  '542227': '西藏自治区山南地区措美县',
  '542228': '西藏自治区山南地区洛扎县',
  '542229': '西藏自治区山南地区加查县',
  '542231': '西藏自治区山南地区隆子县',
  '542232': '西藏自治区山南地区错那县',
  '542233': '西藏自治区山南地区浪卡子县',
  '542300': '西藏自治区日喀则地区',
  '542301': '西藏自治区日喀则地区日喀则市',
  '542322': '西藏自治区日喀则地区南木林县',
  '542323': '西藏自治区日喀则地区江孜县',
  '542324': '西藏自治区日喀则地区定日县',
  '542325': '西藏自治区日喀则地区萨迦县',
  '542326': '西藏自治区日喀则地区拉孜县',
  '542327': '西藏自治区日喀则地区昂仁县',
  '542328': '西藏自治区日喀则地区谢通门县',
  '542329': '西藏自治区日喀则地区白朗县',
  '542330': '西藏自治区日喀则地区仁布县',
  '542331': '西藏自治区日喀则地区康马县',
  '542332': '西藏自治区日喀则地区定结县',
  '542333': '西藏自治区日喀则地区仲巴县',
  '542334': '西藏自治区日喀则地区亚东县',
  '542335': '西藏自治区日喀则地区吉隆县',
  '542336': '西藏自治区日喀则地区聂拉木县',
  '542337': '西藏自治区日喀则地区萨嘎县',
  '542338': '西藏自治区日喀则地区岗巴县',
  '542400': '西藏自治区那曲地区',
  '542421': '西藏自治区那曲地区那曲县',
  '542422': '西藏自治区那曲地区嘉黎县',
  '542423': '西藏自治区那曲地区比如县',
  '542424': '西藏自治区那曲地区聂荣县',
  '542425': '西藏自治区那曲地区安多县',
  '542426': '西藏自治区那曲地区申扎县',
  '542427': '西藏自治区那曲地区索县',
  '542428': '西藏自治区那曲地区班戈县',
  '542429': '西藏自治区那曲地区巴青县',
  '542430': '西藏自治区那曲地区尼玛县',
  '542500': '西藏自治区阿里地区',
  '542521': '西藏自治区阿里地区普兰县',
  '542522': '西藏自治区阿里地区札达县',
  '542523': '西藏自治区阿里地区噶尔县',
  '542524': '西藏自治区阿里地区日土县',
  '542525': '西藏自治区阿里地区革吉县',
  '542526': '西藏自治区阿里地区改则县',
  '542527': '西藏自治区阿里地区措勤县',
  '542528': '西藏自治区阿里地区隆格尔县',
  '542600': '西藏自治区林芝地区',
  '542621': '西藏自治区林芝地区林芝县',
  '542622': '西藏自治区林芝地区工布江达县',
  '542623': '西藏自治区林芝地区米林县',
  '542624': '西藏自治区林芝地区墨脱县',
  '542625': '西藏自治区林芝地区波密县',
  '542626': '西藏自治区林芝地区察隅县',
  '542627': '西藏自治区林芝地区朗县',
  '610000': '陕西省',
  '610100': '陕西省西安市',
  '610101': '陕西省西安市市辖区',
  '610102': '陕西省西安市新城区',
  '610103': '陕西省西安市碑林区',
  '610104': '陕西省西安市莲湖区',
  '610111': '陕西省西安市灞桥区',
  '610112': '陕西省西安市未央区',
  '610113': '陕西省西安市雁塔区',
  '610114': '陕西省西安市阎良区',
  '610115': '陕西省西安市临潼区',
  '610121': '陕西省西安市长安县',
  '610122': '陕西省西安市蓝田县',
  '610124': '陕西省西安市周至县',
  '610125': '陕西省西安市户县',
  '610126': '陕西省西安市高陵县',
  '610200': '陕西省铜川市',
  '610201': '陕西省铜川市市辖区',
  '610202': '陕西省铜川市城区',
  '610203': '陕西省铜川市郊区',
  '610221': '陕西省铜川市耀县',
  '610222': '陕西省铜川市宜君县',
  '610300': '陕西省宝鸡市',
  '610301': '陕西省宝鸡市市辖区',
  '610302': '陕西省宝鸡市渭滨区',
  '610303': '陕西省宝鸡市金台区',
  '610321': '陕西省宝鸡市宝鸡县',
  '610322': '陕西省宝鸡市凤翔县',
  '610323': '陕西省宝鸡市岐山县',
  '610324': '陕西省宝鸡市扶风县',
  '610326': '陕西省宝鸡市眉县',
  '610327': '陕西省宝鸡市陇县',
  '610328': '陕西省宝鸡市千阳县',
  '610329': '陕西省宝鸡市麟游县',
  '610330': '陕西省宝鸡市凤县',
  '610331': '陕西省宝鸡市太白县',
  '610400': '陕西省咸阳市',
  '610401': '陕西省咸阳市市辖区',
  '610402': '陕西省咸阳市秦都区',
  '610403': '陕西省咸阳市杨陵区',
  '610404': '陕西省咸阳市渭城区',
  '610422': '陕西省咸阳市三原县',
  '610423': '陕西省咸阳市泾阳县',
  '610424': '陕西省咸阳市乾县',
  '610425': '陕西省咸阳市礼泉县',
  '610426': '陕西省咸阳市永寿县',
  '610427': '陕西省咸阳市彬县',
  '610428': '陕西省咸阳市长武县',
  '610429': '陕西省咸阳市旬邑县',
  '610430': '陕西省咸阳市淳化县',
  '610431': '陕西省咸阳市武功县',
  '610481': '陕西省咸阳市兴平市',
  '610500': '陕西省渭南市',
  '610501': '陕西省渭南市市辖区',
  '610502': '陕西省渭南市临渭区',
  '610521': '陕西省渭南市华县',
  '610522': '陕西省渭南市潼关县',
  '610523': '陕西省渭南市大荔县',
  '610524': '陕西省渭南市合阳县',
  '610525': '陕西省渭南市澄城县',
  '610526': '陕西省渭南市蒲城县',
  '610527': '陕西省渭南市白水县',
  '610528': '陕西省渭南市富平县',
  '610581': '陕西省渭南市韩城市',
  '610582': '陕西省渭南市华阴市',
  '610600': '陕西省延安市',
  '610601': '陕西省延安市市辖区',
  '610602': '陕西省延安市宝塔区',
  '610621': '陕西省延安市延长县',
  '610622': '陕西省延安市延川县',
  '610623': '陕西省延安市子长县',
  '610624': '陕西省延安市安塞县',
  '610625': '陕西省延安市志丹县',
  '610626': '陕西省延安市吴旗县',
  '610627': '陕西省延安市甘泉县',
  '610628': '陕西省延安市富县',
  '610629': '陕西省延安市洛川县',
  '610630': '陕西省延安市宜川县',
  '610631': '陕西省延安市黄龙县',
  '610632': '陕西省延安市黄陵县',
  '610700': '陕西省汉中市',
  '610701': '陕西省汉中市市辖区',
  '610702': '陕西省汉中市汉台区',
  '610721': '陕西省汉中市南郑县',
  '610722': '陕西省汉中市城固县',
  '610723': '陕西省汉中市洋县',
  '610724': '陕西省汉中市西乡县',
  '610725': '陕西省汉中市勉县',
  '610726': '陕西省汉中市宁强县',
  '610727': '陕西省汉中市略阳县',
  '610728': '陕西省汉中市镇巴县',
  '610729': '陕西省汉中市留坝县',
  '610730': '陕西省汉中市佛坪县',
  '612400': '陕西省安康地区',
  '612401': '陕西省安康地区安康市',
  '612422': '陕西省安康地区汉阴县',
  '612423': '陕西省安康地区石泉县',
  '612424': '陕西省安康地区宁陕县',
  '612425': '陕西省安康地区紫阳县',
  '612426': '陕西省安康地区岚皋县',
  '612427': '陕西省安康地区平利县',
  '612428': '陕西省安康地区镇坪县',
  '612429': '陕西省安康地区旬阳县',
  '612430': '陕西省安康地区白河县',
  '612500': '陕西省商洛地区',
  '612501': '陕西省商洛地区商州市',
  '612522': '陕西省商洛地区洛南县',
  '612523': '陕西省商洛地区丹凤县',
  '612524': '陕西省商洛地区商南县',
  '612525': '陕西省商洛地区山阳县',
  '612526': '陕西省商洛地区镇安县',
  '612527': '陕西省商洛地区柞水县',
  '612700': '陕西省榆林地区',
  '612701': '陕西省榆林地区榆林市',
  '612722': '陕西省榆林地区神木县',
  '612723': '陕西省榆林地区府谷县',
  '612724': '陕西省榆林地区横山县',
  '612725': '陕西省榆林地区靖边县',
  '612726': '陕西省榆林地区定边县',
  '612727': '陕西省榆林地区绥德县',
  '612728': '陕西省榆林地区米脂县',
  '612729': '陕西省榆林地区佳县',
  '612730': '陕西省榆林地区吴堡县',
  '612731': '陕西省榆林地区清涧县',
  '612732': '陕西省榆林地区子洲县',
  '620000': '甘肃省',
  '620100': '甘肃省兰州市',
  '620101': '甘肃省兰州市市辖区',
  '620102': '甘肃省兰州市城关区',
  '620103': '甘肃省兰州市七里河区',
  '620104': '甘肃省兰州市西固区',
  '620105': '甘肃省兰州市安宁区',
  '620111': '甘肃省兰州市红古区',
  '620121': '甘肃省兰州市永登县',
  '620122': '甘肃省兰州市皋兰县',
  '620123': '甘肃省兰州市榆中县',
  '620200': '甘肃省嘉峪关市',
  '620201': '甘肃省嘉峪关市市辖区',
  '620300': '甘肃省嘉峪关市金昌市',
  '620301': '甘肃省嘉峪关市市辖区',
  '620302': '甘肃省嘉峪关市金川区',
  '620321': '甘肃省嘉峪关市永昌县',
  '620400': '甘肃省白银市',
  '620401': '甘肃省白银市市辖区',
  '620402': '甘肃省白银市白银区',
  '620403': '甘肃省白银市平川区',
  '620421': '甘肃省白银市靖远县',
  '620422': '甘肃省白银市会宁县',
  '620423': '甘肃省白银市景泰县',
  '620500': '甘肃省天水市',
  '620501': '甘肃省天水市市辖区',
  '620502': '甘肃省天水市秦城区',
  '620503': '甘肃省天水市北道区',
  '620521': '甘肃省天水市清水县',
  '620522': '甘肃省天水市秦安县',
  '620523': '甘肃省天水市甘谷县',
  '620524': '甘肃省天水市武山县',
  '620525': '甘肃省天水市张家川回族自治县',
  '622100': '甘肃省酒泉地区',
  '622101': '甘肃省酒泉地区玉门市',
  '622102': '甘肃省酒泉地区酒泉市',
  '622103': '甘肃省酒泉地区敦煌市',
  '622123': '甘肃省酒泉地区金塔县',
  '622124': '甘肃省酒泉地区肃北蒙古族自治县',
  '622125': '甘肃省酒泉地区阿克塞哈萨克族自治县',
  '622126': '甘肃省酒泉地区安西县',
  '622200': '甘肃省张掖地区',
  '622201': '甘肃省张掖地区张掖市',
  '622222': '甘肃省张掖地区肃南裕固族自治县',
  '622223': '甘肃省张掖地区民乐县',
  '622224': '甘肃省张掖地区临泽县',
  '622225': '甘肃省张掖地区高台县',
  '622226': '甘肃省张掖地区山丹县',
  '622300': '甘肃省武威地区',
  '622301': '甘肃省武威地区武威市',
  '622322': '甘肃省武威地区民勤县',
  '622323': '甘肃省武威地区古浪县',
  '622326': '甘肃省武威地区天祝藏族自治县',
  '622400': '甘肃省定西地区',
  '622421': '甘肃省定西地区定西县',
  '622424': '甘肃省定西地区通渭县',
  '622425': '甘肃省定西地区陇西县',
  '622426': '甘肃省定西地区渭源县',
  '622427': '甘肃省定西地区临洮县',
  '622428': '甘肃省定西地区漳县',
  '622429': '甘肃省定西地区岷县',
  '622600': '甘肃省陇南地区',
  '622621': '甘肃省陇南地区武都县',
  '622623': '甘肃省陇南地区宕昌县',
  '622624': '甘肃省陇南地区成县',
  '622625': '甘肃省陇南地区康县',
  '622626': '甘肃省陇南地区文县',
  '622627': '甘肃省陇南地区西和县',
  '622628': '甘肃省陇南地区礼县',
  '622629': '甘肃省陇南地区两当县',
  '622630': '甘肃省陇南地区徽县',
  '622700': '甘肃省平凉地区',
  '622701': '甘肃省平凉地区平凉市',
  '622722': '甘肃省平凉地区泾川县',
  '622723': '甘肃省平凉地区灵台县',
  '622724': '甘肃省平凉地区崇信县',
  '622725': '甘肃省平凉地区华亭县',
  '622726': '甘肃省平凉地区庄浪县',
  '622727': '甘肃省平凉地区静宁县',
  '622800': '甘肃省庆阳地区',
  '622801': '甘肃省庆阳地区西峰市',
  '622821': '甘肃省庆阳地区庆阳县',
  '622822': '甘肃省庆阳地区环县',
  '622823': '甘肃省庆阳地区华池县',
  '622824': '甘肃省庆阳地区合水县',
  '622825': '甘肃省庆阳地区正宁县',
  '622826': '甘肃省庆阳地区宁县',
  '622827': '甘肃省庆阳地区镇原县',
  '622900': '甘肃省临夏回族自治州',
  '622901': '甘肃省临夏回族自治州临夏市',
  '622921': '甘肃省临夏回族自治州临夏县',
  '622922': '甘肃省临夏回族自治州康乐县',
  '622923': '甘肃省临夏回族自治州永靖县',
  '622924': '甘肃省临夏回族自治州广河县',
  '622925': '甘肃省临夏回族自治州和政县',
  '622926': '甘肃省临夏回族自治州东乡族自治县',
  '622927': '甘肃省临夏回族自治州积石山保安族东乡族撒拉族自治县',
  '623000': '甘肃省甘南藏族自治州',
  '623001': '甘肃省甘南藏族自治州合作市',
  '623021': '甘肃省甘南藏族自治州临潭县',
  '623022': '甘肃省甘南藏族自治州卓尼县',
  '623023': '甘肃省甘南藏族自治州舟曲县',
  '623024': '甘肃省甘南藏族自治州迭部县',
  '623025': '甘肃省甘南藏族自治州玛曲县',
  '623026': '甘肃省甘南藏族自治州碌曲县',
  '623027': '甘肃省甘南藏族自治州夏河县',
  '630000': '青海省',
  '630100': '青海省西宁市',
  '630101': '青海省西宁市市辖区',
  '630102': '青海省西宁市城东区',
  '630103': '青海省西宁市城中区',
  '630104': '青海省西宁市城西区',
  '630105': '青海省西宁市城北区',
  '630121': '青海省西宁市大通回族土族自治县',
  '632100': '青海省海东地区',
  '632121': '青海省海东地区平安县',
  '632122': '青海省海东地区民和回族土族自治县',
  '632123': '青海省海东地区乐都县',
  '632124': '青海省海东地区湟中县',
  '632125': '青海省海东地区湟源县',
  '632126': '青海省海东地区互助土族自治县',
  '632127': '青海省海东地区化隆回族自治县',
  '632128': '青海省海东地区循化撒拉族自治县',
  '632200': '青海省海北藏族自治州',
  '632221': '青海省海北藏族自治州门源回族自治县',
  '632222': '青海省海北藏族自治州祁连县',
  '632223': '青海省海北藏族自治州海晏县',
  '632224': '青海省海北藏族自治州刚察县',
  '632300': '青海省黄南藏族自治州',
  '632321': '青海省黄南藏族自治州同仁县',
  '632322': '青海省黄南藏族自治州尖扎县',
  '632323': '青海省黄南藏族自治州泽库县',
  '632324': '青海省黄南藏族自治州河南蒙古族自治县',
  '632500': '青海省海南藏族自治州',
  '632521': '青海省海南藏族自治州共和县',
  '632522': '青海省海南藏族自治州同德县',
  '632523': '青海省海南藏族自治州贵德县',
  '632524': '青海省海南藏族自治州兴海县',
  '632525': '青海省海南藏族自治州贵南县',
  '632600': '青海省果洛藏族自治州',
  '632621': '青海省果洛藏族自治州玛沁县',
  '632622': '青海省果洛藏族自治州班玛县',
  '632623': '青海省果洛藏族自治州甘德县',
  '632624': '青海省果洛藏族自治州达日县',
  '632625': '青海省果洛藏族自治州久治县',
  '632626': '青海省果洛藏族自治州玛多县',
  '632700': '青海省玉树藏族自治州',
  '632721': '青海省玉树藏族自治州玉树县',
  '632722': '青海省玉树藏族自治州杂多县',
  '632723': '青海省玉树藏族自治州称多县',
  '632724': '青海省玉树藏族自治州治多县',
  '632725': '青海省玉树藏族自治州囊谦县',
  '632726': '青海省玉树藏族自治州曲麻莱县',
  '632800': '青海省海西蒙古族藏族自治州',
  '632801': '青海省海西蒙古族藏族自治州格尔木市',
  '632802': '青海省海西蒙古族藏族自治州德令哈市',
  '632821': '青海省海西蒙古族藏族自治州乌兰县',
  '632822': '青海省海西蒙古族藏族自治州都兰县',
  '632823': '青海省海西蒙古族藏族自治州天峻县',
  '640000': '宁夏回族自治区',
  '640100': '宁夏回族自治区银川市',
  '640101': '宁夏回族自治区银川市市辖区',
  '640102': '宁夏回族自治区银川市城区',
  '640103': '宁夏回族自治区银川市新城区',
  '640111': '宁夏回族自治区银川市郊区',
  '640121': '宁夏回族自治区银川市永宁县',
  '640122': '宁夏回族自治区银川市贺兰县',
  '640200': '宁夏回族自治区石嘴山市',
  '640201': '宁夏回族自治区石嘴山市市辖区',
  '640202': '宁夏回族自治区石嘴山市大武口区',
  '640203': '宁夏回族自治区石嘴山市石嘴山区',
  '640204': '宁夏回族自治区石嘴山市石炭井区',
  '640221': '宁夏回族自治区石嘴山市平罗县',
  '640222': '宁夏回族自治区石嘴山市陶乐县',
  '640223': '宁夏回族自治区石嘴山市惠农县',
  '640300': '宁夏回族自治区吴忠市',
  '640301': '宁夏回族自治区吴忠市市辖区',
  '640302': '宁夏回族自治区吴忠市利通区',
  '640321': '宁夏回族自治区吴忠市中卫县',
  '640322': '宁夏回族自治区吴忠市中宁县',
  '640323': '宁夏回族自治区吴忠市盐池县',
  '640324': '宁夏回族自治区吴忠市同心县',
  '640381': '宁夏回族自治区吴忠市青铜峡市',
  '640382': '宁夏回族自治区吴忠市灵武市',
  '642200': '宁夏回族自治区固原地区',
  '642221': '宁夏回族自治区固原地区固原县',
  '642222': '宁夏回族自治区固原地区海原县',
  '642223': '宁夏回族自治区固原地区西吉县',
  '642224': '宁夏回族自治区固原地区隆德县',
  '642225': '宁夏回族自治区固原地区泾源县',
  '642226': '宁夏回族自治区固原地区彭阳县',
  '650000': '新疆维吾尔自治区',
  '650100': '新疆维吾尔族自治区乌鲁木齐市',
  '650101': '新疆维吾尔族自治区乌鲁木齐市市辖区',
  '650102': '新疆维吾尔族自治区乌鲁木齐市天山区',
  '650103': '新疆维吾尔族自治区乌鲁木齐市沙依巴克区',
  '650104': '新疆维吾尔族自治区乌鲁木齐市新市区',
  '650105': '新疆维吾尔族自治区乌鲁木齐市水磨沟区',
  '650106': '新疆维吾尔族自治区乌鲁木齐市头屯河区',
  '650107': '新疆维吾尔族自治区乌鲁木齐市南山矿区',
  '650108': '新疆维吾尔族自治区乌鲁木齐市东山区',
  '650121': '新疆维吾尔族自治区乌鲁木齐市乌鲁木齐县',
  '650200': '新疆维吾尔族自治区克拉玛依市',
  '650201': '新疆维吾尔族自治区克拉玛依市市辖区',
  '650202': '新疆维吾尔族自治区克拉玛依市独山子区',
  '650203': '新疆维吾尔族自治区克拉玛依市克拉玛依区',
  '650204': '新疆维吾尔族自治区克拉玛依市白碱滩区',
  '650205': '新疆维吾尔族自治区克拉玛依市乌尔禾区',
  '652100': '新疆维吾尔族自治区吐鲁番地区',
  '652101': '新疆维吾尔族自治区吐鲁番地区吐鲁番市',
  '652122': '新疆维吾尔族自治区吐鲁番地区鄯善县',
  '652123': '新疆维吾尔族自治区吐鲁番地区托克逊县',
  '652200': '新疆维吾尔族自治区哈密地区',
  '652201': '新疆维吾尔族自治区哈密地区哈密市',
  '652222': '新疆维吾尔族自治区哈密地区巴里坤哈萨克自治县',
  '652223': '新疆维吾尔族自治区哈密地区伊吾县',
  '652300': '新疆维吾尔族自治区昌吉回族自治州',
  '652301': '新疆维吾尔族自治区昌吉回族自治州昌吉市',
  '652302': '新疆维吾尔族自治区昌吉回族自治州阜康市',
  '652303': '新疆维吾尔族自治区昌吉回族自治州米泉市',
  '652323': '新疆维吾尔族自治区昌吉回族自治州呼图壁县',
  '652324': '新疆维吾尔族自治区昌吉回族自治州玛纳斯县',
  '652325': '新疆维吾尔族自治区昌吉回族自治州奇台县',
  '652327': '新疆维吾尔族自治区昌吉回族自治州吉木萨尔县',
  '652328': '新疆维吾尔族自治区昌吉回族自治州木垒哈萨克自治县',
  '652700': '新疆维吾尔族自治区博尔塔拉蒙古自治州',
  '652701': '新疆维吾尔族自治区博尔塔拉蒙古自治州博乐市',
  '652722': '新疆维吾尔族自治区博尔塔拉蒙古自治州精河县',
  '652723': '新疆维吾尔族自治区博尔塔拉蒙古自治州温泉县',
  '652800': '新疆维吾尔族自治区巴音郭楞蒙古自治州',
  '652801': '新疆维吾尔族自治区巴音郭楞蒙古自治州库尔勒市',
  '652822': '新疆维吾尔族自治区巴音郭楞蒙古自治州轮台县',
  '652823': '新疆维吾尔族自治区巴音郭楞蒙古自治州尉犁县',
  '652824': '新疆维吾尔族自治区巴音郭楞蒙古自治州若羌县',
  '652825': '新疆维吾尔族自治区巴音郭楞蒙古自治州且末县',
  '652826': '新疆维吾尔族自治区巴音郭楞蒙古自治州焉耆回族自治县',
  '652827': '新疆维吾尔族自治区巴音郭楞蒙古自治州和静县',
  '652828': '新疆维吾尔族自治区巴音郭楞蒙古自治州和硕县',
  '652829': '新疆维吾尔族自治区巴音郭楞蒙古自治州博湖县',
  '652900': '新疆维吾尔族自治区阿克苏地区',
  '652901': '新疆维吾尔族自治区阿克苏地区阿克苏市',
  '652922': '新疆维吾尔族自治区阿克苏地区温宿县',
  '652923': '新疆维吾尔族自治区阿克苏地区库车县',
  '652924': '新疆维吾尔族自治区阿克苏地区沙雅县',
  '652925': '新疆维吾尔族自治区阿克苏地区新和县',
  '652926': '新疆维吾尔族自治区阿克苏地区拜城县',
  '652927': '新疆维吾尔族自治区阿克苏地区乌什县',
  '652928': '新疆维吾尔族自治区阿克苏地区阿瓦提县',
  '652929': '新疆维吾尔族自治区阿克苏地区柯坪县',
  '653000': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州',
  '653001': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州阿图什市',
  '653022': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州阿克陶县',
  '653023': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州阿合奇县',
  '653024': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州乌恰县',
  '653100': '新疆维吾尔族自治区喀什地区',
  '653101': '新疆维吾尔族自治区喀什地区喀什市',
  '653121': '新疆维吾尔族自治区喀什地区疏附县',
  '653122': '新疆维吾尔族自治区喀什地区疏勒县',
  '653123': '新疆维吾尔族自治区喀什地区英吉沙县',
  '653124': '新疆维吾尔族自治区喀什地区泽普县',
  '653125': '新疆维吾尔族自治区喀什地区莎车县',
  '653126': '新疆维吾尔族自治区喀什地区叶城县',
  '653127': '新疆维吾尔族自治区喀什地区麦盖提县',
  '653128': '新疆维吾尔族自治区喀什地区岳普湖县',
  '653129': '新疆维吾尔族自治区喀什地区伽师县',
  '653130': '新疆维吾尔族自治区喀什地区巴楚县',
  '653131': '新疆维吾尔族自治区喀什地区塔什库尔干塔吉克自治县',
  '653200': '新疆维吾尔族自治区和田地区',
  '653201': '新疆维吾尔族自治区和田地区和田市',
  '653221': '新疆维吾尔族自治区和田地区和田县',
  '653222': '新疆维吾尔族自治区和田地区墨玉县',
  '653223': '新疆维吾尔族自治区和田地区皮山县',
  '653224': '新疆维吾尔族自治区和田地区洛浦县',
  '653225': '新疆维吾尔族自治区和田地区策勒县',
  '653226': '新疆维吾尔族自治区和田地区于田县',
  '653227': '新疆维吾尔族自治区和田地区民丰县',
  '654000': '新疆维吾尔族自治区伊犁哈萨克自治州',
  '654001': '新疆维吾尔族自治区伊犁哈萨克自治州奎屯市',
  '654100': '新疆维吾尔族自治区伊犁哈萨克自治州伊犁地区',
  '654101': '新疆维吾尔族自治区伊犁哈萨克自治州伊宁市',
  '654121': '新疆维吾尔族自治区伊犁哈萨克自治州伊宁县',
  '654122': '新疆自治区伊犁哈萨克自治州察布查尔锡伯自治县',
  '654123': '新疆维吾尔族自治区伊犁哈萨克自治州霍城县',
  '654124': '新疆维吾尔族自治区伊犁哈萨克自治州巩留县',
  '654125': '新疆维吾尔族自治区伊犁哈萨克自治州新源县',
  '654126': '新疆维吾尔族自治区伊犁哈萨克自治州昭苏县',
  '654127': '新疆维吾尔族自治区伊犁哈萨克自治州特克斯县',
  '654128': '新疆维吾尔族自治区伊犁哈萨克自治州尼勒克县',
  '654200': '新疆维吾尔族自治区塔城地区',
  '654201': '新疆维吾尔族自治区塔城地区塔城市',
  '654202': '新疆维吾尔族自治区塔城地区乌苏市',
  '654221': '新疆维吾尔族自治区塔城地区额敏县',
  '654223': '新疆维吾尔族自治区塔城地区沙湾县',
  '654224': '新疆维吾尔族自治区塔城地区托里县',
  '654225': '新疆维吾尔族自治区塔城地区裕民县',
  '654226': '新疆维吾尔族自治区塔城地区和布克赛尔蒙古自治县',
  '654300': '新疆维吾尔族自治区阿勒泰地区',
  '654301': '新疆维吾尔族自治区阿勒泰地区阿勒泰市',
  '654321': '新疆维吾尔族自治区阿勒泰地区布尔津县',
  '654322': '新疆维吾尔族自治区阿勒泰地区富蕴县',
  '654323': '新疆维吾尔族自治区阿勒泰地区福海县',
  '654324': '新疆维吾尔族自治区阿勒泰地区哈巴河县',
  '654325': '新疆维吾尔族自治区阿勒泰地区青河县',
  '654326': '新疆维吾尔族自治区阿勒泰地区吉木乃县',
  '659000': '新疆维吾尔族自治区直辖县级行政单位',
  '659001': '新疆维吾尔族自治区石河子市'
}
function IDValidator() {
  let param = {
    error: {
      longNumber: '长数字存在精度问题,请使用字符串传值! Long number is not allowed, because the precision of the Number In JavaScript.'
    }
  }
  let util = {
    checkArg: function (id) {
      let argType = (typeof id)
      switch (argType) {
        case 'number':
          // long number not allowed
          id = id.toString()
          if (id.length > 15) {
            this.error(param.error.longNumber)
            return false
          }
          break
        case 'string':
          break
        default:
          return false
      }
      id = id.toUpperCase()
      let code = null
      if (id.length === 18) {
        // 18位
        code = {
          body: id.slice(0, 17),
          checkBit: id.slice(-1),
          type: 18
        }
      } else if (id.length === 15) {
        // 15位
        code = {
          body: id,
          type: 15
        }
      } else {
        return false
      }
      return code
    },
    // 地址码检查
    checkAddr: function (addr, GB2260) {
      let addrInfo = this.getAddrInfo(addr, GB2260)
      return addrInfo !== false
    },
    // 取得地址码信息
    getAddrInfo: function (addr, GB2260) {
      GB2260 = GB2260 || null
      // 查询GB/T2260,没有引入GB2260时略过
      if (GB2260 === null) {
        return addr
      }
      if (!GB2260.hasOwnProperty(addr)) {
        // 考虑标准不全的情况,搜索不到时向上搜索
        let tmpAddr
        tmpAddr = addr.slice(0, 4) + '00'
        if (!GB2260.hasOwnProperty(tmpAddr)) {
          tmpAddr = addr.slice(0, 2) + '0000'
          if (!GB2260.hasOwnProperty(tmpAddr)) {
            return false
          } else {
            return GB2260[tmpAddr] + '未知地区'
          }
        } else {
          return GB2260[tmpAddr] + '未知地区'
        }
      } else {
        return GB2260[addr]
      }
    },
    // 生日码检查
    checkBirth: function (birth) {
      let year, month, day
      if (birth.length === 8) {
        year = parseInt(birth.slice(0, 4), 10)
        month = parseInt(birth.slice(4, 6), 10)
        day = parseInt(birth.slice(-2), 10)
      } else if (birth.length === 6) {
        year = parseInt('19' + birth.slice(0, 2), 10)
        month = parseInt(birth.slice(2, 4), 10)
        day = parseInt(birth.slice(-2), 10)
      } else {
        return false
      }
      // TODO 是否需要判断年份
      /*
       * if( year<1800 ){ return false; }
       */
      // TODO 按月份检测
      if (month > 12 || month === 0 || day > 31 || day === 0) {
        return false
      }
      return true
    },
    // 顺序码检查
    checkOrder: function (order) {
      // 暂无需检测
      return true
    },
    // 加权
    weight: function (t) {
      return Math.pow(2, t - 1) % 11
    },
    // 随机整数
    rand: function (max, min) {
      min = min || 1
      return Math.round(Math.random() * (max - min)) + min
    },
    // 数字补位
    str_pad: function (str, len, chr, right) {
      str = str.toString()
      len = len || 2
      chr = chr || '0'
      right = right || false
      if (str.length >= len) {
        return str
      } else {
        for (let i = 0, j = len - str.length; i < j; i++) {
          if (right) {
            str = str + chr
          } else {
            str = chr + str
          }
        }
        return str
      }
    },
    // 抛错
    error: function (msg) {
      let e = new Error()
      e.message = 'IDValidator: ' + msg
      throw e
    }
  }
  let _IDValidator = function (GB2260) {
    if (typeof GB2260 !== 'undefined') {
      this.GB2260 = GB2260
    }
    // 建立cache
    this.cache = {}
  }
  _IDValidator.prototype = {
    isValid: function (id) {
      let GB2260 = this.GB2260 || null
      let code = util.checkArg(id)
      if (code === false) {
        return false
      }
      // 查询cache
      if (this.cache.hasOwnProperty(id) && typeof (this.cache[id].valid) !== 'undefined') {
        return this.cache[id].valid
      } else {
        if (!this.cache.hasOwnProperty(id)) {
          this.cache[id] = {}
        }
      }
      let addr = code.body.slice(0, 6)
      let birth = (code.type === 18 ? code.body.slice(6, 14) : code.body.slice(6, 12))
      let order = code.body.slice(-3)
      if (!(util.checkAddr(addr, GB2260) && util.checkBirth(birth) && util
          .checkOrder(order))) {
        this.cache[id].valid = false
        return false
      }
      // 15位不含校验码,到此已结束
      if (code.type === 15) {
        this.cache[id].valid = true
        return true
      }
      /* 校验位部分 */
      // 位置加权
      let posWeight = []
      for (let i = 18; i > 1; i--) {
        let wei = util.weight(i)
        posWeight[i] = wei
      }
      // 累加body部分与位置加权的积
      let bodySum = 0
      let bodyArr = code.body.split('')
      for (let j = 0; j < bodyArr.length; j++) {
        bodySum += (parseInt(bodyArr[j], 10) * posWeight[18 - j])
      }
      // 得出校验码
      let checkBit = 12 - (bodySum % 11)
      if (checkBit === 10) {
        checkBit = 'X'
      } else if (checkBit > 10) {
        checkBit = checkBit % 11
      }
      checkBit = (typeof checkBit === 'number' ? checkBit.toString()
        : checkBit)
      // 检查校验码
      if (checkBit !== code.checkBit) {
        this.cache[id].valid = false
        return false
      } else {
        this.cache[id].valid = true
        return true
      }
    },
    // 获取年龄
    getAgeForIdCard: function (idStr) {
      let len = idStr.length // 身份证编码长度
      if (len < 15) {
        return -1
      } else { // 身份证编码大于15位
        if ((len !== 15) && (len !== 18)) { // 判断编码位数等于15或18
          return -1
        } else {
          let date1 = new Date() // 取得当前日期
          let year1 = date1.getFullYear() // 取得当前年份
          let month1 = date1.getMonth() // 取得当前月份
          if (len === 15) { // 15位身份证
            if (month1 > parseInt(idStr.substr(8, 2))) { // 判断当前月分与编码中的月份大小
              return year1 - ('19' + idStr.substr(6, 2))
            } else {
              return year1 - ('19' + idStr.substr(6, 2)) - 1
            }
          } else if (len === 18) { // 18位身份证
            if (month1 > parseInt(idStr.substr(10, 2))) { // 判断当前月分与编码中的月份大小
              return year1 - idStr.substr(6, 4)
            } else {
              return year1 - idStr.substr(6, 4) - 1
            }
          }
        }
      }
    },
    // 获取性别
    getSexForIdCard: function (idStr) {
      let len = idStr.length // 身份证编码长度
      if (len < 15) {
        return -1
      } else { // 身份证编码大于15位
        if ((len !== 15) && (len !== 18)) { // 判断编码位数等于15或18
          return -1
        } else {
          if (len === 15) { // 15位身份证
            return (parseInt(idStr.substring(13, 14)) % 2 === 0) ? 0 : 1
          } else if (len === 18) { // 18位身份证
            return (parseInt(idStr.substring(16, 17)) % 2 === 0) ? 0 : 1
          }
        }
      }
    },
    // 分析详细信息
    getInfo: function (id) {
      let GB2260 = this.GB2260 || null
      // 号码必须有效
      if (this.isValid(id) === false) {
        return false
      }
      // TODO 复用此部分
      let code = util.checkArg(id)
      // 查询cache
      // 到此时通过isValid已经有了cache记录
      if (typeof this.cache[id].info !== 'undefined') {
        return this.cache[id].info
      }
      let addr = code.body.slice(0, 6)
      let birth = (code.type === 18 ? code.body.slice(6, 14) : code.body
        .slice(6, 12))
      let order = code.body.slice(-3)
      let info = {}
      info.addrCode = addr
      if (GB2260 !== null) {
        info.addr = util.getAddrInfo(addr, GB2260)
      }
      info.birth = (code.type === 18 ? (([birth.slice(0, 4),
        birth.slice(4, 6), birth.slice(-2)]).join('-')) : ((
        '19' + birth.slice(0, 2), birth.slice(2, 4),
          birth.slice(-2))).join('-'))
      info.sex = (order % 2 === 0 ? 0 : 1)
      info.length = code.type
      if (code.type === 18) {
        info.checkBit = code.checkBit
      }
      // 记录cache
      this.cache[id].info = info
      return info
    },
    // 仿造一个号
    makeID: function (isFifteen) {
      let GB2260 = this.GB2260 || null
      // 地址码
      let addr = null
      if (GB2260 !== null) {
        let loopCnt = 0
        while (addr === null) {
          // 防止死循环
          if (loopCnt > 10) {
            addr = 110101
            break
          }
          let prov = util.str_pad(util.rand(50), 2, '0')
          let city = util.str_pad(util.rand(20), 2, '0')
          let area = util.str_pad(util.rand(20), 2, '0')
          let addrTest = [prov, city, area].join('')
          if (GB2260[addrTest]) {
            addr = addrTest
            break
          }
        }
      } else {
        addr = 110101
      }
      // 出生年
      let yr = util.str_pad(util.rand(99, 50), 2, '0')
      let mo = util.str_pad(util.rand(12, 1), 2, '0')
      let da = util.str_pad(util.rand(28, 1), 2, '0')
      if (isFifteen) {
        return addr + yr + mo + da + util.str_pad(util.rand(999, 1), 3, '1')
      }
      yr = '19' + yr
      let body = addr + yr + mo + da + util.str_pad(util.rand(999, 1), 3, '1')
      // 位置加权
      let posWeight = []
      for (let i = 18; i > 1; i--) {
        let wei = util.weight(i)
        posWeight[i] = wei
      }
      // 累加body部分与位置加权的积
      let bodySum = 0
      let bodyArr = body.split('')
      for (let j = 0; j < bodyArr.length; j++) {
        bodySum += (parseInt(bodyArr[j], 10) * posWeight[18 - j])
      }
      // 得出校验码
      let checkBit = 12 - (bodySum % 11)
      if (checkBit === 10) {
        checkBit = 'X'
      } else if (checkBit > 10) {
        checkBit = checkBit % 11
      }
      checkBit = (typeof checkBit === 'number' ? checkBit.toString()
        : checkBit)
      return (body + checkBit)
    }
  }// _IDValidator
  GB2260 = GB2260 === null ? '' : GB2260
  return new _IDValidator(GB2260)
}
export default new IDValidator();
src/utils/camera.js
New file
@@ -0,0 +1,171 @@
/**
* 组件: 调用摄像头拍摄的构造函数
* @params {Object} options 参数如下:
*             video {DOM} video元素
*             width {Number} 画布宽度
*             height {Number} 画布高度
*             onShoot {Function} 录像回调函数
*             onError {Function} error回调函数
*         {Object} canvasOption 参数如下:
*             marginTop {Number} 银行卡可视区域距离屏幕顶部的距离,用作画布坐标
*             marginLeft {Number} 银行卡可视区域距离屏幕左侧的距离,用作画布坐标
*             width {Number} 银行卡可视区域宽度
*             height {Number} 银行卡可视区域高度
*调用:
*    Camera.create(options, canvasOption)
*/
function Camera(options, canvasOption) {
  this.video = options.video;
  this.width = options.width || 640;
  this.height = options.height || 480;
  this.shadeMarginTop = canvasOption.marginTop;
  this.shadeMarginLeft = canvasOption.marginLeft;
  this.shadeWidth = canvasOption.width;
  this.shadeHeight = canvasOption.height;
  this.onError = options.onError;
  this.onShoot = options.onShoot;
  this.mediaStreamTrack = null; // 存放视频流
}
Camera.prototype = {
  init: function() {
      if(navigator.mediaDevices === undefined) {
          navigator.mediaDevices = {}
      }
      // 一些浏览器部分支持 mediaDevices。 我们不能直接给对象设置 getUserMedia
      // 因为这样可能会覆盖已有的属性。这里我们只会在没有getUserMedia属性的时候添加它。
      if (navigator.mediaDevices.getUserMedia === undefined) {
          navigator.mediaDevices.getUserMedia = function(constraints) {
              // 首先,如果有getUserMedia的话,就获取它
              var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
              // 一些浏览器根本没实现它 — 那么就返回一个error到promise的reject来保持一个统一的接口
              if (!getUserMedia) {
                  return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
              }
              // 否则,为老的navigator.getUserMedia方法包裹一个Promise
              return new Promise(function(resolve, reject) {
                  getUserMedia.call(navigator, constraints, resolve, reject);
              });
          }
      }
      this.video.autoplay = 'true';
      this.canvasDom = document.createElement('canvas');
      this.canvasDom.width = this.width;
      this.canvasDom.height = this.height;
      this.canvasDom.style.display = 'none';
      document.querySelector('body').appendChild(this.canvasDom);
  },
  // 检查摄像头是否可用
  canCameraUse: function() {
      return (navigator.mediaDevices.getUserMedia && window.URL);
  },
  // 获取录像流到video中
  shoot: function() {
      var self = this;
      var video = self.video;
      if (self.canCameraUse) {
          navigator.mediaDevices.getUserMedia({
              video: { facingMode: { exact: "environment"} } // 后置摄像头设置
          })
          .then(function(stream) {
              self.mediaStreamTrack = stream
              // 旧的浏览器可能没有srcObject
              if ("srcObject" in video) {
                  video.srcObject = stream;
              }else {
                  // 防止在新的浏览器里使用它,因为它已经不再支持了
                  video.src = window.URL.createObjectURL(stream);
              }
              video.onloadedmetadata = function(e) {
                  video.play();
              };
              video.addEventListener('error', function(error) {
                  stream.stop();
                  self.onError && self.onError(error);
              }, false);
          })
          .catch(function(err) {
              self.onError && self.onError(err)
          })
      }
  },
  // 将录像绘制到canvas
  drawVideo: function() {
      var canvasDom = this.canvasDom;
      var ctx = canvasDom.getContext('2d');
      ctx.fillStyle = "#000000";
      // 视频可能不会充满屏幕,这时候,需要按照视频缩放的比例来剪切所需要的部分
      let videoHeight = this.video.videoHeight // 视频本身的高度
      let videoWidth = this.video.videoWidth // 视频本身的宽度
      let videoWidthScale = 1
      if (videoWidth && this.width !== videoWidth) { // 计算当前视频的缩放比例
          videoWidthScale = videoWidth / this.width
      }
      let newHeight = videoHeight / videoWidthScale // 当前显示的视频高度
      let videoMarginTop = this.video.clientHeight - newHeight > 0 ?
                           (this.video.clientHeight - newHeight) / 2 : 0 // 当前视频距离顶部高度
      let x = Math.floor(this.shadeMarginLeft * 1) // 计算剪切视频的x坐标
      let y = Math.floor((this.shadeMarginTop - videoMarginTop) * 1) // 计算剪切视频的y坐标
      let w = videoWidth - x * 2, h = Math.ceil(videoHeight - y * 2) // 计算剪切视频的宽高
      ctx.fillRect(this.shadeMarginLeft, this.shadeMarginTop, this.shadeWidth, this.shadeHeight); // 填充画布
      ctx.drawImage(this.video, x, y, w, h, this.shadeMarginLeft, this.shadeMarginTop, this.shadeWidth, this.shadeHeight) // 剪切视频并绘制成图片
      this.ctx = ctx
  },
  // 录像事件绑定
  addShootEvent: function() {
      let self = this;
      let video = self.video;
      // 正在录像
      video.addEventListener('timeupdate', function() {
          self.drawVideo();
          self.onShoot && self.onShoot()
      }, false)
  },
  // 将录像成图片
  snapshot: function(cb, imageType) {
      let self = this
      let canvas = self.canvasDom;
      imageType = imageType || 'jpeg';
      let imageSrc = canvas.toDataURL('image/' + imageType);
      cb && cb(imageSrc);
  },
  // 开始录像
  play: function() {
      this.video.play();
  },
  // 停止录像
  pause: function() {
      this.video.pause();
      let self = this
      // 关闭摄像头
      self.mediaStreamTrack.getVideoTracks().forEach(function(track) {
          track.stop();
          self.ctx.clearRect(0, 0, self.canvasDom.width, self.canvasDom.height); // 清除画布
      });
  },
  render: function() { // 初始化
      this.init();
      this.shoot();
      this.drawVideo();
      this.addShootEvent();
  }
};
Camera.create = function(options, canvasOption) {
  var camera = new Camera(options, canvasOption.canvasStyle);
  camera.render();
  return camera;
};
export default Camera
src/utils/config.js
New file
@@ -0,0 +1,29 @@
/*
 * @Author: 小明丶
 * @Date: 2019-09-02 14:03:59
 * @LastEditors: 小明丶
 * @LastEditTime: 2019-09-02 14:04:19
 * @Description:
 */
/**
 *   c.k  2017/11/15 创建
 *   c.y  2018/3/16 修改 (把增加了获取项目的动态配置的方法)
 *   获取设备的信息以及渠道号
 *   获取项目的名称,logo,协议等等动态配置
 */
import jsBridge from './jsBridge'; // 安卓/iOS获取设备的信息已经cn值
// import systemApi from '@/api/oldapi';
// 设置客户端的信息
function setClientInfo() {
    // 如果设置是安卓/iOS的话,就通过jsBridge来获取设备信息,以及cn值
    jsBridge.fetchDeviceInfo();
}
// 获取项目的配置信息,项目的标题,logo,协议
function fetchProductConfig() {
    return systemApi.getJson();
}
export default {setClientInfo, fetchProductConfig};
src/utils/console.js
New file
@@ -0,0 +1,19 @@
/*
 * @Author: 小明丶
 * @Date: 2020-09-03 10:32:28
 * @LastEditors: 小明丶
 * @LastEditTime: 2020-09-03 10:53:59
 * @Description: 是否显示控制台打印值,用this.$log()打印到控制台 DEBUG=true为调试模式输出到控制台,DEBUG=false不输出到控制台
 */
const DEBUG = true
var log = function(...araguments){
    if(DEBUG){
        var arr = Array.prototype.slice.call(araguments)
        console.log.apply(console,arr)
    }
}
export default {
    install(Vue,options){
        Vue.prototype.$log = log;
    }
}
src/utils/createUserProtocol.js
New file
@@ -0,0 +1,27 @@
// import agreement from '../../static/agreement2';
export default function(info) {
    //不用引入areement2,因为在index.html里面已经导入了
    let agreement = agreement5;
    agreement = agreement.replace('商户注册时填写的营业执照号', info.licenseNo);
    agreement = agreement.replace('商户注册时填写的负责人姓名', info.priName);
    agreement = agreement.replace(
        '商户注册时填写的负责人手机号',
        info.priMblNo
    );
    agreement = agreement.replace('商户名称或法人姓名', '');
    agreement = agreement.replace('商户注册时填写的银行卡号', '');
    agreement = agreement.replace('商户注册时选择的银行', '');
    agreement = agreement.replace('商户注册时填写的负责人邮箱', info.priEmail);
    agreement = agreement.replace('负责人手机号', info.priMblNo);
    agreement = agreement.replace('商户注册时选择及填写的地址', info.dtlAddr);
    agreement = agreement.replace(/当天日期年/g, `${new Date().getFullYear()}`);
    agreement = agreement.replace(
        /当天日期月/g,
        `${new Date().getMonth() + 1}`
    );
    agreement = agreement.replace(/当天日期日/g, `${new Date().getDate()}`);
    agreement = agreement.replace(/法人姓名/g, info.legalName);
    return agreement;
}
src/utils/date.js
New file
@@ -0,0 +1,73 @@
/*
 * @Author: 小明丶
 * @Date: 2019-10-25 10:17:56
 * @LastEditors: 小明丶
 * @LastEditTime: 2019-10-29 11:11:29
 * @Description:
 */
/**
 * 时间格式化函数,如果没有传递格式就返回时间戳
 * @param date Date 对象
 * @param fmt  格式规范
 * @returns {*}
 */
export default function(date, fmt) {
    if (!date) {
        return null;
    }
    if (typeof date === 'string') {
        date = new Date(date.replace(/-/g, '/'));
    }
    if (typeof date === 'number') {
        date = new Date(date);
    }
    if (fmt === undefined) {
        return Number(date);
    } else {
        var o = {
            'M+': date.getMonth() + 1,
            'D+': date.getDate(),
            'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12,
            'H+': date.getHours(),
            'm+': date.getMinutes(),
            's+': date.getSeconds(),
            'q+': Math.floor((date.getMonth() + 3) / 3),
            S: date.getMilliseconds()
        };
        var week = {
            '0': '\u65e5',
            '1': '\u4e00',
            '2': '\u4e8c',
            '3': '\u4e09',
            '4': '\u56db',
            '5': '\u4e94',
            '6': '\u516d'
        };
        if (/(Y+)/.test(fmt)) {
            fmt = fmt.replace(
                RegExp.$1,
                (date.getFullYear() + '').substr(4 - RegExp.$1.length)
            );
        }
        if (/(E+)/.test(fmt)) {
            fmt = fmt.replace(
                RegExp.$1,
                (RegExp.$1.length > 1
                    ? RegExp.$1.length > 2 ? '\u661f\u671f' : '\u5468'
                    : '') + week[date.getDay() + '']
            );
        }
        for (var k in o) {
            if (new RegExp('(' + k + ')').test(fmt)) {
                fmt = fmt.replace(
                    RegExp.$1,
                    RegExp.$1.length === 1
                        ? o[k]
                        : ('00' + o[k]).substr(('' + o[k]).length)
                );
            }
        }
        return fmt;
    }
}
src/utils/dateformat.js
New file
@@ -0,0 +1,282 @@
/*
 * @Descripttion: 时间格式化函数
 * @Author:
 * @LastEditors  : 小明丶
 * @Date: 2019-03-30 09:24:27
 * @LastEditTime : 2019-12-26 16:14:07
 */
(function (main) {
  'use strict';
  var fecha = {};
  var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g;
  var twoDigits = /\d\d?/;
  var threeDigits = /\d{3}/;
  var fourDigits = /\d{4}/;
  var word = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
  var noop = function () {
  };
  function monthUpdate(arrName) {
    return function (d, v, i18n) {
      var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase());
      if (~index) {
        d.month = index;
      }
    };
  }
  function pad(val, len) {
    val = String(val);
    len = len || 2;
    while (val.length < len) {
      val = '0' + val;
    }
    return val;
  }
  var formatFlags = {
    D: function(dateObj) {
      return dateObj.getDay();
    },
    DD: function(dateObj) {
      return pad(dateObj.getDay());
    },
    Do: function(dateObj, i18n) {
      return i18n.DoFn(dateObj.getDate());
    },
    d: function(dateObj) {
      return dateObj.getDate();
    },
    dd: function(dateObj) {
      return pad(dateObj.getDate());
    },
    ddd: function(dateObj, i18n) {
      return i18n.dayNamesShort[dateObj.getDay()];
    },
    dddd: function(dateObj, i18n) {
      return i18n.dayNames[dateObj.getDay()];
    },
    M: function(dateObj) {
      return dateObj.getMonth() + 1;
    },
    MM: function(dateObj) {
      return pad(dateObj.getMonth() + 1);
    },
    MMM: function(dateObj, i18n) {
      return i18n.monthNamesShort[dateObj.getMonth()];
    },
    MMMM: function(dateObj, i18n) {
      return i18n.monthNames[dateObj.getMonth()];
    },
    yy: function(dateObj) {
      return String(dateObj.getFullYear()).substr(2);
    },
    yyyy: function(dateObj) {
      return dateObj.getFullYear();
    },
    h: function(dateObj) {
      return dateObj.getHours() % 12 || 12;
    },
    hh: function(dateObj) {
      return pad(dateObj.getHours() % 12 || 12);
    },
    H: function(dateObj) {
      return dateObj.getHours();
    },
    HH: function(dateObj) {
      return pad(dateObj.getHours());
    },
    m: function(dateObj) {
      return dateObj.getMinutes();
    },
    mm: function(dateObj) {
      return pad(dateObj.getMinutes());
    },
    s: function(dateObj) {
      return dateObj.getSeconds();
    },
    ss: function(dateObj) {
      return pad(dateObj.getSeconds());
    },
    S: function(dateObj) {
      return Math.round(dateObj.getMilliseconds() / 100);
    },
    SS: function(dateObj) {
      return pad(Math.round(dateObj.getMilliseconds() / 10), 2);
    },
    SSS: function(dateObj) {
      return pad(dateObj.getMilliseconds(), 3);
    },
    a: function(dateObj, i18n) {
      return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];
    },
    A: function(dateObj, i18n) {
      return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();
    },
    ZZ: function(dateObj) {
      var o = dateObj.getTimezoneOffset();
      return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);
    }
  };
  var parseFlags = {
    d: [twoDigits, function (d, v) {
      d.day = v;
    }],
    M: [twoDigits, function (d, v) {
      d.month = v - 1;
    }],
    yy: [twoDigits, function (d, v) {
      var da = new Date(), cent = +('' + da.getFullYear()).substr(0, 2);
      d.year = '' + (v > 68 ? cent - 1 : cent) + v;
    }],
    h: [twoDigits, function (d, v) {
      d.hour = v;
    }],
    m: [twoDigits, function (d, v) {
      d.minute = v;
    }],
    s: [twoDigits, function (d, v) {
      d.second = v;
    }],
    yyyy: [fourDigits, function (d, v) {
      d.year = v;
    }],
    S: [/\d/, function (d, v) {
      d.millisecond = v * 100;
    }],
    SS: [/\d{2}/, function (d, v) {
      d.millisecond = v * 10;
    }],
    SSS: [threeDigits, function (d, v) {
      d.millisecond = v;
    }],
    D: [twoDigits, noop],
    ddd: [word, noop],
    MMM: [word, monthUpdate('monthNamesShort')],
    MMMM: [word, monthUpdate('monthNames')],
    a: [word, function (d, v, i18n) {
      var val = v.toLowerCase();
      if (val === i18n.amPm[0]) {
        d.isPm = false;
      } else if (val === i18n.amPm[1]) {
        d.isPm = true;
      }
    }],
    ZZ: [/[\+\-]\d\d:?\d\d/, function (d, v) {
      var parts = (v + '').match(/([\+\-]|\d\d)/gi), minutes;
      if (parts) {
        minutes = +(parts[1] * 60) + parseInt(parts[2], 10);
        d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;
      }
    }]
  };
  parseFlags.DD = parseFlags.D;
  parseFlags.dddd = parseFlags.ddd;
  parseFlags.Do = parseFlags.dd = parseFlags.d;
  parseFlags.mm = parseFlags.m;
  parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;
  parseFlags.MM = parseFlags.M;
  parseFlags.ss = parseFlags.s;
  parseFlags.A = parseFlags.a;
  fecha.masks = {
    'default': 'ddd MMM dd yyyy HH:mm:ss',
    shortDate: 'M/D/yy',
    mediumDate: 'MMM d, yyyy',
    longDate: 'MMMM d, yyyy',
    fullDate: 'dddd, MMMM d, yyyy',
    shortTime: 'HH:mm',
    mediumTime: 'HH:mm:ss',
    longTime: 'HH:mm:ss.SSS'
  };
  fecha.format = function (dateObj, mask, i18nSettings) {
    var i18n = i18nSettings || fecha.i18n;
    if (typeof dateObj === 'number') {
      dateObj = new Date(dateObj);
    }
    if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {
      //throw new Error('Invalid Date in fecha.format');
    }
    mask = fecha.masks[mask] || mask || fecha.masks['default'];
    return mask.replace(token, function ($0) {
      return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1);
    });
  };
  fecha.parse = function (dateStr, format, i18nSettings) {
    var i18n = i18nSettings || fecha.i18n;
    if (typeof format !== 'string') {
      throw new Error('Invalid format in fecha.parse');
    }
    format = fecha.masks[format] || format;
    if (dateStr.length > 1000) {
      return false;
    }
    var isValid = true;
    var dateInfo = {};
    format.replace(token, function ($0) {
      if (parseFlags[$0]) {
        var info = parseFlags[$0];
        var index = dateStr.search(info[0]);
        if (!~index) {
          isValid = false;
        } else {
          dateStr.replace(info[0], function (result) {
            info[1](dateInfo, result, i18n);
            dateStr = dateStr.substr(index + result.length);
            return result;
          });
        }
      }
      return parseFlags[$0] ? '' : $0.slice(1, $0.length - 1);
    });
    if (!isValid) {
      return false;
    }
    var today = new Date();
    if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {
      dateInfo.hour = +dateInfo.hour + 12;
    } else if (dateInfo.isPm === false && +dateInfo.hour === 12) {
      dateInfo.hour = 0;
    }
    var date;
    if (dateInfo.timezoneOffset != null) {
      dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;
      date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
        dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));
    } else {
      date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
        dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);
    }
    return date;
  };
  if (typeof module !== 'undefined' && module.exports) {
    module.exports = fecha;
  } else if (typeof define === 'function' && define.amd) {
    define(function () {
      return fecha;
    });
  } else {
    main.fecha = fecha;
  }
})(this);
src/utils/deviceInfo.js
New file
@@ -0,0 +1,84 @@
/**
 * Created by c.k on 2017/11/10.
 *  获取客户端本地设备信息和渠道编号
 */
export default {
    saveDeviceInfo(deviceInfo) {
        // 外链默认解析地址里面的chanNo,app时解析原生回传的chanNo
        //   alert(deviceInfo);
        deviceInfo = JSON.parse(deviceInfo);
        if (deviceInfo && deviceInfo.childChan) {
            deviceInfo.isApp = '1';
        }
        let configInfo = window.localStorage.getItem('newClientInfo');
        if (configInfo) {
            configInfo = JSON.parse(configInfo);
            for (let key in deviceInfo) {
                configInfo[key] = deviceInfo[key];
            }
            configInfo.ostype = '03';
            window.localStorage.setItem('newClientInfo',  JSON.stringify(configInfo));
        }
        deviceInfo = JSON.stringify(deviceInfo);
        window.localStorage.setItem('deviceInfo', deviceInfo);
    },
    // 获取本地存储的设备信息
    fetchDeviceInfo() {
        return window.localStorage.getItem('deviceInfo');
    },
    // 获取设备类型
    getDeviceType() {
        let browser = {
            versions() {
                let u = navigator.userAgent;
                return {
                    trident: u.indexOf('Trident') > -1, // IE内核
                    presto: u.indexOf('Presto') > -1, // opera内核
                    webKit: u.indexOf('AppleWebKit') > -1, // 苹果、谷歌内核
                    gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') === -1, // 火狐内核
                    mobile: !!u.match(/AppleWebKit.*Mobile.*/), // 是否为移动终端
                    ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端
                    android:
                        u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, // android终端或者uc浏览器
                    iPhone: u.indexOf('iPhone') > -1, // 是否为iPhone或者QQHD浏览器
                    iPad: u.indexOf('iPad') > -1, // 是否iPad
                    webApp: u.indexOf('Safari') === -1, // 是否web应该程序,没有头部与底部
                    weixin: u.indexOf('MicroMessenger') > -1, // 是否微信 (2015-01-22新增)
                    qq: u.match(/\sQQ/i) === 'qq' // 是否QQ
                };
            },
            language: (
                navigator.browserLanguage || navigator.language
            ).toLowerCase()
        };
        var u = navigator.userAgent;
        var device = ''; //当前设备信息
        if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
            //安卓手机
            device = 'Android';
            return 'Android';
        } else if (u.indexOf('iPhone') > -1) {
            //苹果手机
            device = 'IOS';
            return 'IOS';
        } else if (u.indexOf('Windows Phone') > -1) {
            //winphone手机
            device = 'WindowsPhone';
            return 'WindowsPhone';
        } else if (u.indexOf('MicroMessenger') > -1) {
            device = 'weixin';
            return 'weixin';
        }
        //    let type = browser.versions();
        //    if (type.android) {
        //      return 'Android'
        //    } else if (type.ios || type.iPhone || type.iPad) {
        //      return 'IOS'
        //    } else if (type.weixin) {
        //      return 'weixin'
        //    } else {
        //      return 'other'
        //    }
    }
};
src/utils/filters.js
New file
@@ -0,0 +1,31 @@
/*
 * @Descripttion: Vue过滤器
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-04-05 11:32:33
 * @LastEditTime: 2020-10-10 14:52:54
 */
import dataformat from "./dateformat";
/**
 * @Descripttion: 格式化电话号码
 * @param {tel} 电话号码
 * @return: 13388327924 >>> 133****7924
 */
export function formatPhone(tel) {
    return tel.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
}
let list = [
    {name:'timeformat',fn:dataformat.format},
    // {name:'phoneformat',fn:formatPhone},
];
export default {
    install(Vue,opt){
        list.forEach(item=>{
            Vue.filter(item.name,item.fn);
        })
    }
}
src/utils/formCheckAndComb.js
New file
@@ -0,0 +1,194 @@
/*
 * @Author: 小明丶
 * @Date: 2019-09-02 09:12:30
 * @LastEditors: 小明丶
 * @LastEditTime: 2019-09-02 09:18:52
 * @Description:
 */
/**
 * Created by c.y
 * 2018/4/12
 * form--提交数据组合--例如房抵贷
 */
import Vue from 'vue';
import validate from './validator';
import IDValidator from './IDValidator';
// 把后台返回的null,转换为空字符串, infoObj需要检查
function changeNullToString (infoObj) {
  for (let i in infoObj) {
    infoObj[i] === null ? infoObj[i] = '' : infoObj[i] = infoObj[i];
  }
  return infoObj;
}
// 组合后台返回省,市,区---来满足vux的地址选择插件需要的格式
// province省 city市 country区
function getAddressFormat (province, city, country) {
  let addressList = [];
  if (!validate.checkValEmpty(province)) {
    addressList.push(province);
  }
  if (!validate.checkValEmpty(city)) {
    addressList.push(city);
  }
  if (!validate.checkValEmpty(country)) {
    addressList.push(country);
  }
  return addressList;
}
// 判断地址类型的值,是否必填,并进行提示
// addressList, 代表需要校验的地址数组
function checkAddressRequired (addressList) {
  return validate.checkValEmpty(addressList[0]);
}
// 得到selector的列表
function getOptionsList (optionList) {
  let tmpList = [];
  if (optionList instanceof Array) {
    optionList.forEach(function (item) {
      tmpList.push({
        key: item.code,
        value: item.name
      });
    });
  }
  return tmpList;
}
// 检查必填的字段以及错误提示, requiredList是检查规则, checkInfo要检查的对象
// context为this对象
function checkRequiredField (requiredList, checkInfo, context) {
  let allPassLabel = true;
  for (let i = 0; i < requiredList.length; i++) {
    // 如果配置了validator,那么就以validator进行验证,忽略其他验证(validator需要是函数)
    if (requiredList[i].validator && Object.prototype.toString.call(requiredList[i].validator) === '[object Function]') {
      if (!requiredList[i].validator(requiredList[i], checkInfo, context)) {
        allPassLabel = false;
        return false;
      }
    // 如果是地址的话
    } else if (requiredList[i].type === 'address') {
      // 对于地址检查,是否为空,为空的话,返回true
      if (checkAddressRequired(context[requiredList[i].checkKey])) {
        checkValidateTip(requiredList[i], context);
        allPassLabel = false;
        return false;
      }
      // 如果是非地址的话,那么第一步检查是否为空
    } else {
      // 第一步,先检查是否填写
      if (validate.checkValEmpty(checkInfo[requiredList[i].key])) {
        checkValidateTip(requiredList[i], context);
        allPassLabel = false;
        return false;
      }
      // 如果有patter的话,直接使用pattern,即正则判断(pattern需要正则)
      if (requiredList[i].pattern && Object.prototype.toString.call(requiredList[i].pattern) === '[object RegExp]') {
          if(!requiredList[i].pattern.test(checkInfo[requiredList[i].key])) {
            checkRegularExpreTip(requiredList[i], context);
            allPassLabel = false;
            return false;
          }
      }
      // 对于特定类型,进行判断是否添加正确的类型
      // 如果是名字类型
      if (requiredList[i].type === 'name') {
        if (!validate.checkName(checkInfo[requiredList[i].key])) {
          checkRegularExpreTip(requiredList[i], context);
          allPassLabel = false;
          return false;
        }
        // 如果是手机号
      } else if (requiredList[i].type === 'tel') {
        if (!validate.checkPhone(checkInfo[requiredList[i].key])) {
          checkRegularExpreTip(requiredList[i], context);
          allPassLabel = false;
          return false;
        }
        // 如果是身份证
      } else if (requiredList[i].type === 'idCard') {
        if (!IDValidator.isValid(checkInfo[requiredList[i].key])) {
          checkRegularExpreTip(requiredList[i], context);
          allPassLabel = false;
          return false;
        }
        // 如果是座机
      } else if (requiredList[i].type === 'lineTel') {
        if (!validate.checkLandline(checkInfo[requiredList[i].key])) {
          checkRegularExpreTip(requiredList[i], context);
          allPassLabel = false;
          return false;
        }
        // 如果是房屋楼层
      } else if (requiredList[i].type === 'floor') {
        if (!validate.checkFloor(checkInfo[requiredList[i].key])) {
          checkRegularExpreTip(requiredList[i], context);
          allPassLabel = false;
          return false;
        }
        // 如果是银行卡
      }else if (requiredList[i].type === 'bankCardNo') {
        if (!validate.bankCard(checkInfo[requiredList[i].key])) {
          checkRegularExpreTip(requiredList[i], context);
          allPassLabel = false;
          return false;
        }
      }else if (requiredList[i].type === 'isEmail') {
          if (!validate.checkEmail(checkInfo[requiredList[i].key])) {
              checkRegularExpreTip(requiredList[i], context);
              allPassLabel = false;
              return false;
          }
      }
    }
  }
  return allPassLabel;
}
// 错误提示, requiredItem为检查的对象,context为this对象
function checkValidateTip (requiredItem, context) {
  let _this = context;
  // tipType值为1为输入框,为2的话是下拉选择
  if (requiredItem.tipType === 1) {
    // 如果进行正则验证的话,那么提示内容是正确,而一般的提示没有正确的这个提示字
    // 如果没有type属性的话,那么就是默认的
    Vue.prototype.$notify('请输入' + requiredItem.message, 'middle');
    return false;
  } else if (requiredItem.tipType === 2) {
    Vue.prototype.$notify('请选择' + requiredItem.message, 'middle');
    return false;
  }
}
// 错题提示,requiredItem为检查的对象,context为this对象
// 这个是正则匹配的检测或者其他特殊检测的提示
function checkRegularExpreTip (requiredItem, context) {
  Vue.prototype.$notify('请输入正确的' + requiredItem.message, 'middle');
  return false;
}
// 封装提交数据 submitVal需要提交的val对象
function packageSubmitInfo (submitVal) {
  let submitInfo = {};
  if (submitVal instanceof Object && submitVal !== null) {
    for (let i in submitVal) {
        // 对于非必填的话,其值为空的话,那么不传递给后台
        if (!validate.checkValEmpty(submitVal[i])) {
          submitInfo[i] = submitVal[i];
        }
    }
  }
  return submitInfo;
}
export default {
  getAddressFormat,
  getOptionsList,
  checkRequiredField,
  packageSubmitInfo,
  changeNullToString
};
src/utils/formValidator.js
New file
@@ -0,0 +1,101 @@
/*
 * @Descripttion: 表单验证工具函数
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-04-01 19:54:53
 * @LastEditTime: 2020-11-09 14:26:43
 */
import IDValidator from './IDValidator';
let fns = {
    // 参数是否为真
    isEmpty(value) {
        return value !== "" && typeof value !== "undefined" && value !== null;
    },
    //密码验证
    isPassword(value) {
        // 验证密码格式
        return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(value);
    },
    // 验证码验证
    isCode(value) {
        return /^\d{4}$/.test(value);
    },
    isEmail(value){
        return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(value);
    },
    // 验证电话
    isTel(value) {
        return /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/.test(value);
    },
    //验证身份证
    isIdCard(value){
        return /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value)
    },
    // idCard check
    checkIDCard(idCard) {
        // 验证身份证格式
        return IDValidator.isValid(idCard);
    },
    //验证银行卡号
    isBankCode(iccid){
        let initCard = iccid,
            s1 = 0,
            s2 = 0;
        iccid = iccid.substring(0, iccid.length - 1);
        let reverse = '';
        for (let i = iccid.length; i > 0; i--) {
            reverse += iccid.charAt(i - 1);
        }
        for (let i = 0; i < reverse.length; i++) {
            let digit = parseInt(reverse.charAt(i), 10);
            if (i % 2 != 0) {
                s1 += digit;
            } else {
                s2 += 2 * digit;
                if (digit >= 5) {
                    s2 -= 9;
                }
            }
        }
        let sum = 10 - ((s1 + s2) % 10);
        if (sum === 10) {
            sum = 0;
        }
        return iccid + sum == initCard;
    }
};
let Validator = function (form, rules) {
    return {
        // rule demo
        //rules:>>> [{key:"formkey",message:"",type:"isEmpty",rule:/\d/}]
        check(callback) {
            if (!Array.isArray(rules) && rules.length === 0) throw "rules must be instance of Array";
            let len = rules.length;
            for (let index = 0; index < len; index++) {
                const ruleItem = rules[index];
                let fnName = fns[ruleItem.type];
                if (fnName && !fnName(form[ruleItem.key])) {
                    callback(ruleItem);
                    return false;
                }
                // 如果有自定义验证规则
                let rule = ruleItem.rule;
                if(typeof rule !=='undefined' && !rule.test(form[ruleItem.key])){
                    callback(ruleItem);
                    return false;
                }
            }
            return true;
        }
    }
};
// export default Validator;
export default {
    install(Vue,opt){
        Vue.prototype.$validator = Validator;
    }
}
src/utils/index.js
New file
@@ -0,0 +1,361 @@
/*
 * @Descripttion: 工具函数 以 _ 符号作为函数前缀
 * @Author: TM丶
 * @LastEditors: 小明丶
 * @Date: 2019-03-10 22:05:50
 * @LastEditTime: 2020-03-27 14:17:45
 */
/**
 * @Descripttion: 函数节流
 * @param {method} 执行的方法
 * @param {delay} 延迟时间
 * @param {context} 绑定的this值
 * @return: Function
 */
export function _throller(method, delay, context) {
    var begin = new Date();
    return function () {
        var args = arguments,
            current = new Date();
        if (current - begin >= delay) {
            method.apply(context, args);
            begin = current;
        }
    }
}
/**
 * @Descripttion: 函数防抖
 * @param {method} 执行的方法
 * @param {delay} 延迟时间
 * @return: Function
 */
export function _debounce(method, delay) {
    let timer = null;
    return function () {
        let context = this,
            args = arguments;
        clearTimeout(timer);
        timer = setTimeout(function () {
            method.apply(context, args);
        }, delay);
    }
}
/**
 * @Descripttion: 字符串参数解析
 * @demo '?demo=123&test=test'
 * @return: {demo:123,test:'test'}
 */
export function _getQueryArgs(str) {
    if (str.indexOf('?') === -1) {
        throw Error('参数错误')
    }
    let args = new URLSearchParams(str);
    return args;
}
/**
 * @Descripttion: 将base64转换为文件
 * @param {dataurl} base64
 * @param {filename} 要创建的文件名
 * @return: file
 */
export function _dataURLtoFile(dataurl, filename) {
    var arr = dataurl.split(','),
        mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]),
        n = bstr.length,
        u8arr = new Uint8Array(n);
    while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, {
        type: mime
    });
}
/**
 * @Descripttion: 文字复制到设备的剪切板
 * @param {text} 要复制的文字
 * @return: Boolean
 */
export function _copyToClipboard(text) {
    var textArea = document.createElement('textarea');
    textArea.style.position = 'fixed';
    textArea.style.top = 0;
    textArea.style.left = 0;
    textArea.style.width = '2em';
    textArea.style.height = '2em';
    textArea.style.padding = 0;
    textArea.style.border = 'none';
    textArea.style.outline = 'none';
    textArea.style.boxShadow = 'none';
    textArea.style.background = 'transparent';
    textArea.value = text ? text : "";
    document.body.appendChild(textArea);
    if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {//区分iPhone设备
      window.getSelection().removeAllRanges();//这段代码必须放在前面否则无效
      // var Url2=document.getElementById("biaoios");//要复制文字的节点
      var range = document.createRange();
      // 选中需要复制的节点
      range.selectNode(textArea);
      // 执行选中元素
      window.getSelection().addRange(range);
      // 执行 copy 操作
      var successful = document.execCommand('copy');
      // 移除选中的元素
      window.getSelection().removeAllRanges();
    } else {
      textArea.select();
      var msg = document.execCommand("Copy");
    }
    document.body.removeChild(textArea);
}
/**文件转换base64
 * @param { 文件对象 } file
 * @return { Promise }
 */
export function _fileToBase64(file) {
    if (Object.prototype.toString.call(file) !== "[object File]") {
        console.warn(`file 必须是 文件! >>>${file}`);
        return
    }
    let reader = new FileReader();
    reader.readAsDataURL(file);
    return new Promise((resolve, reject) => {
        reader.onload = function () {
            resolve(this.result);
        }
    })
}
/**
 * @Descripttion: 图片压缩
 * @param {path} 图片路径 || base64
 * @param {options} {quality:图片质量0-1,width,height}
 * @return: base64
 */
export function _imgCompress(path, options = {}) {
    return new Promise((resolve, reject) => {
        let img = new Image();
        img.src = path;
        img.onload = function () {
            let that = this,
                w = that.width,
                h = that.height,
                scale = w / h, // 默认按比例压缩
                quality = options.quality || 0.3,
                canvas = document.createElement('canvas'),
                ctx = canvas.getContext('2d');
            w = options.width || w;
            h = options.height || (w / scale);
            canvas.width = w;
            canvas.height = h;
            ctx.drawImage(that, 0, 0, w, h);
            if (options.quality && options.quality <= 1 && options.quality > 0) {
                quality = options.quality;
            }
            let base64 = canvas.toDataURL('image/jpeg', quality);
            resolve(base64);
        }
    })
}
// 使input=number的maxlength有效
export function disabledInputStr() {
    window.addEventListener('input', (event) => {
        let el = event.target,
            val = el.value,
            tagName = el.tagName.toUpperCase();
        if (tagName === 'INPUT' && el.getAttribute('type') === 'number') {
            let maxlength = el.getAttribute('maxlength');
            if (val.length >= maxlength) {
                el.value = val.slice(0, maxlength);
                event.preventDefault();
            }
        }
    })
}
//移动端判断设备类型:安卓 或 ios
export function judegeDevice() {
    let type = {
        isIos: false,
        isAndroid: false,
    }
    var u = navigator.userAgent;
    if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { //安卓手机
        type.isAndroid = true;
    } else if (u.indexOf('iPhone') > -1) { //苹果手机
        type.isIos = true;
    }
    return type;
}
//解决安卓中键盘弹起时顶起页面,导致元素不在可视区内的问题
export function scrollElement() {
    if (judegeDevice.isAndroid) {
        window.addEventListener("resize", function () {
            let el = document.activeElement;
            if (el.tagName == "INPUT" || el.tagName == "TEXTAREA") {
                setTimeout(function () {
                    // el.scrollIntoViewIfNeeded();
                    el.scrollIntoView({
                        behavior: 'smooth',
                    });
                }, 16.7);
            }
        })
    }
}
/**
 * @description: 禁止右键、选择、复制
 */
export function a() {
    ['contextmenu', 'selectstart', 'copy'].forEach(function (ev) {
        document.addEventListener(ev, function (event) {
            return event.returnValue = false
        })
    });
}
// 根据 用户的机构类型 获取参数
export function getParams(orgType, id) {
    if(!id) return {};
    let obj = {}
    switch (orgType) {
        case 1:
        case 2:
            // 代理、渠道
            obj.merList = [id]
            break;
        case 3:
            //商户
            obj.storeList = [id]
            break;
    }
    return obj
}
// 解析地区
export function calcArea(arr){
    let province_list =[],
        city_list = [],
        county_list = [];
    function parseArea(arr) {
        let obj = {}
        arr.forEach(item => {
            obj[item.value] = item.name;
        })
        return obj;
    }
    arr.forEach(item => {
        item.value = +item.value;
        let value = item.value;
        if (!item.parent) {
            province_list.push(item)
        } else if (item.parent % 10000 === 0) {
            city_list.push(item)
        } else {
            county_list.push(item)
        }
    })
    return {
        province_list:parseArea(province_list),
        city_list:parseArea(city_list),
        county_list:parseArea(county_list)
    }
}
// 解析地区
export function calcAreaTwo(arr){
    let province_list =[],
        city_list = [],
        county_list = [];
    function parseArea(arr) {
        let obj = {}
        arr.forEach(item => {
            obj[item.value] = item.name;
        })
        return obj;
    }
    arr.forEach(item => {
        item.value = +item.value;
        let value = item.value;
        if (item.value%10000 ===0 ) {
            province_list.push(item)
        } else if (item.value % 100 === 0) {
            city_list.push(item)
        } else {
            county_list.push(item)
        }
    })
    return {
        province_list:parseArea(province_list),
        city_list:parseArea(city_list),
        county_list:parseArea(county_list)
    }
}
export function compress(img){
    // 用于压缩图片的canvas
    let canvas = document.createElement('canvas');
    let ctx = canvas.getContext('2d');
    //    瓦片canvas
    var tCanvas = document.createElement('canvas');
    var tctx = tCanvas.getContext('2d');
    let width = img.width;
    let height = img.height;
    // 如果图片大于四百万像素,计算压缩比并将大小压至400万以下
    var ratio;
    if ((ratio = width * height / 4000000) > 1) {
        ratio = Math.sqrt(ratio);
        width /= ratio;
        height /= ratio;
    } else {
        ratio = 1;
    }
    canvas.width = width * 2;
    canvas.height = height * 2;
    // 铺底色
    ctx.fillStyle = '#fff';
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    // 如果图片像素大于100万则使用瓦片绘制
    var count;
    if ((count = width * height / 1000000) > 1) {
        count = ~~(Math.sqrt(count) + 1); // 计算要分成多少块瓦片
        // 计算每块瓦片的宽和高
        var nw = ~~(width / count);
        var nh = ~~(height / count);
        tCanvas.width = nw;
        tCanvas.height = nh;
        for (var i = 0; i < count; i++) {
            for (var j = 0; j < count; j++) {
                tctx.drawImage(img, i * nw * ratio, j * nh * ratio, nw * ratio * 2, nh * ratio * 2, 0, 0, nw, nh);
                ctx.drawImage(tCanvas, i * nw, j * nh, nw * 2, nh * 2);
            }
        }
    } else {
        ctx.drawImage(img, 0, 0, width * 2, height * 2);
    }
    // 进行最小压缩
    let ndata = canvas.toDataURL('image/jpeg', 0.8);
    return ndata;
}
src/utils/jsBridge.js
New file
@@ -0,0 +1,265 @@
/**
 * Created by c.k on 2017/11/20.
 *  global WebViewJavascriptBridge
 * */
import deviceInfo from './deviceInfo';
// import store from '../store'
// import statisticHelper from './statisticalHelper'
// import channelHelper from './channel'
const setupWebViewJavascriptBridge = callback => {
    // 注册事件监听
    if (window.WebViewJavascriptBridge) {
        return callback(WebViewJavascriptBridge);
    } else {
        document.addEventListener(
            'WebViewJavascriptBridgeReady',
            () => {
                callback(WebViewJavascriptBridge);
            },
            false
        );
    }
    // if (window.WVJBCallbacks) {
    //     return window.WVJBCallbacks.push(callback);
    // }
    // window.WVJBCallbacks = [callback];
    // let WVJBIframe = document.createElement('iframe');
    // WVJBIframe.style.display = 'none';
    // WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
    // document.documentElement.appendChild(WVJBIframe);
    // setTimeout(function() {
    //     document.documentElement.removeChild(WVJBIframe);
    // }, 0);
};
export default {
    showLog(log) {
        setupWebViewJavascriptBridge(function(bridge) {
            bridge.callHandler('showLog', log, function responseCallback(
                responseData
            ) {});
        });
    },
    closeApp() {
        if (window.android && window.android.closeActivity) {
            window.android.closeActivity();
        }
    },
    // 获取原生设备信息
    fetchDeviceInfo() {
        if (deviceInfo.getDeviceType() === 'Android') {
            if (window.android && window.android.fetchDeviceInfo) {
                let responseData = window.android.fetchDeviceInfo();
                deviceInfo.saveDeviceInfo(responseData);
            }
        } else {
            setupWebViewJavascriptBridge(function(bridge) {
                bridge.callHandler('kJSFetchDeviceInfo', function(
                    responseData
                ) {
                    deviceInfo.saveDeviceInfo(responseData);
                });
            });
        }
    },
    // 回传页面链接至原生
    sendApplyPageUrlToNative() {
        setupWebViewJavascriptBridge(function(bridge) {
            bridge.callHandler(
                'kJSFetchApplyURL',
                window.location.href,
                function responseCallback(responseData) {}
            );
        });
    },
    // 回传页面信息至原生
    sendApplyPageInfoToNative(info) {
        setupWebViewJavascriptBridge(function(bridge) {
            bridge.callHandler(
                'kJSFetchProductInfo',
                info,
                function responseCallback(responseData) {}
            );
        });
    },
    // 每次启动app时清除之前的登录状态
    logoutWhenAppLaunch() {
        // for android
        // window.forceLogoutWhenAppLaunch = function () {
        //   store.dispatch('logout')
        //   // 首次进入app,默认统计第一个按钮点击事件
        //   statisticHelper.tabbarEventStatistical('loansupermarket');
        // }
        // for iOS
        // setupWebViewJavascriptBridge(function (bridge) {
        //   bridge.registerHandler('kJSAppLaunch', function (data) {
        //     store.dispatch('logout')
        //     // 首次进入app,默认统计第一个按钮点击事件
        //     statisticHelper.tabbarEventStatistical('loansupermarket');
        //   })
        // })
        // if (!channelHelper.isApp()) {
        //   statisticHelper.tabbarEventStatistical('loansupermarket');
        // }
    },
    // 隐藏原生启动页
    hideNativeLaunchImage() {
        // for android
        if (window.appNative && window.appNative.hideLaunchView) {
            window.appNative.hideLaunchView();
        }
        // for iOS
        setupWebViewJavascriptBridge(function(bridge) {
            bridge.callHandler('kJSHideLaunchImage', function responseCallback(
                responseData
            ) {});
        });
    },
    // 隐藏显示原生header
    showAndHideNativeHeader(show) {
        // for android
        if (window.native && window.native.showHeader) {
            window.native.showHeader(show);
        }
        // for iOS
        setupWebViewJavascriptBridge(function(bridge) {
            bridge.callHandler(
                'kJSShowAndHideNativeHeader',
                show,
                function responseCallback(responseData) {}
            );
        });
    },
    // 打开微信
    openWX() {
        // for android
        if (window.android && window.android.openWX) {
            window.android.openWX();
        }
        // for iOS
        // setupWebViewJavascriptBridge(function (bridge) {
        //   bridge.callHandler('kJSOpenWeixin', function responseCallback(responseData) {
        //   })
        // })
    },
    // 打开相册
    openQrCode() {
        // for android
        if (window.android && window.android.fetchQrCode) {
            window.android.fetchQrCode();
        } else {
        }
        // for iOS
    },
    // 打开QQ
    openQQ() {
        // for android
        if (window.android && window.android.openQQApplication) {
            window.android.openQQApplication();
        }
        // for iOS
        // setupWebViewJavascriptBridge(function (bridge) {
        //     bridge.callHandler('kJSOpenWeixin', function responseCallback(responseData) {
        //     })
        // })
    },
    //打开通讯录
    openConect(callback) {
        console.log('js打开通讯录');
        //for iOS
        setupWebViewJavascriptBridge(function(bridge) {
            bridge.callHandler('kJSOpenConect', function responseCallback(
                responseData
            ) {});
            bridge.registerHandler('sendContectInfo', function(
                data,
                responseData
            ) {
                if (callback) {
                    callback(data);
                }
            });
        });
    },
    //获取高德地图定位位置信息
    getAMMapLoactionMsg(callback) {
        console.log('js获取位置信息');
        setupWebViewJavascriptBridge(function(bridge) {
            bridge.callHandler(
                'kJSGetAMMapLoactionInfo',
                function responseCallback(responseData) {
                    // alert(responseData.detail);
                    if (callback) {
                        callback(responseData);
                    }
                }
            );
            // bridge.registerHandler('sendAMMapLoactionInfo',function (data,responseData) {
            //     // alert(data.address);
            //     if(callback){
            //           callback(data);
            //     }
            // })
        });
    },
    //调用ios相机
    openCamera(callback) {
        setupWebViewJavascriptBridge(function(bridge) {
            bridge.callHandler('kJSGetCameraInfo', function responseCallback(
                responseData
            ) {
                if (callback) {
                    callback(responseData);
                }
            });
        });
    },
    openAlbum(callback) {
        setupWebViewJavascriptBridge(function(bridge) {
            bridge.callHandler('kJSGetAlbumInfo', function responseCallback(
                responseData
            ) {
                if (callback) {
                    callback(responseData);
                }
            });
        });
    }
    // 检查定位权限是否打开
    // checkUserAuthorization(callback) {
    //   // for android
    //   if (deviceInfo.isAndroidDevice()) {
    //     if (window.native && window.native.checkUserAuthorization) {
    //       let isOpen = window.native.checkUserAuthorization();
    //       if (isOpen && isOpen === 'true') {
    //         callback(true);
    //       } else {
    //         callback(false);
    //       }
    //     } else {
    //       callback(true);
    //     }
    //   }
    //   // for iOS
    //   setupWebViewJavascriptBridge(function (bridge) {
    //     bridge.callHandler('kJSCheckUserAuthorization', function responseCallback(responseData) {
    //       if (responseData && responseData === 'true') {
    //         callback(true);
    //       } else {
    //         callback(false);
    //       }
    //     })
    //   })
    // }
};
src/utils/pageBackByAndroid.js
New file
@@ -0,0 +1,36 @@
/**
 *  android 返回按钮统一调度的方法,
 *  项目中有两个地方需要修改一个是这个地方,还有有个地方是 index.html 文件
 */
import jsBri from './jsBridge';
import store from '@/store/index';
export default {
    androidBackBtn() {
        window.backPageByAndroid = function(obj) {
            let hash = window.sessionStorage.getItem("gotoPagetemp");
            let footerList =  store.state.footerNav || [];
            if(footerList && footerList.length){
                let result = footerList.find(val => {
                    return val.path === hash;
                });
                if (result) {
                    jsBri.closeApp();
                } else {
                    window.history.back();
                }
            }else{
                if(hash==='/login'||hash==='/'){
                    jsBri.closeApp();
                }else {
                    window.history.go(-1);
                }
            }
        };
        window.showOrgIdAndOrgType = function(obj) {
            window.sessionStorage.setItem('scene_regInfos', obj);
        };
    }
};
src/utils/validator.js
New file
@@ -0,0 +1,213 @@
/**
 * TANGIMING 2018-3-9
 * 这是一个用于存放正则表达式和一些验证方法的插件
 * 除了存放了目前常用的正则之外,还根据这些正则封装了对应的验证方法
 */
import IDValidator from './IDValidator';
export default {
    // 金额格式化
    formatMoney(str = 0) {
        str = str + '';
        let newStr = '';
        let count = 0;
        if (str.indexOf('.') === -1) {
            for (let i = str.length - 1; i >= 0; i--) {
                if (count % 3 === 0 && count !== 0) {
                    newStr = str.charAt(i) + ',' + newStr;
                } else {
                    newStr = str.charAt(i) + newStr;
                }
                count++;
            }
            str = newStr + '.00'; // 自动补小数点后两位
            return str;
        } else {
            for (let i = str.indexOf('.') - 1; i >= 0; i--) {
                if (count % 3 === 0 && count !== 0) {
                    newStr = str.charAt(i) + ',' + newStr;
                } else {
                    newStr = str.charAt(i) + newStr; // 逐个字符相接起来
                }
                count++;
            }
            str = newStr + (str + '00').substr((str + '00').indexOf('.'), 3);
            return str;
        }
    },
    // 身份证 中间用* 显示
    cardIDHide(cardid) {
        if (cardid) {
            return cardid.replace(/^(.{6})(?:\d+)(.{4})$/, '$1****$2');
        } else {
            return '';
        }
    },
    //手机号,中间四位*显示
    formatPhone(phone) {
        return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
    },
    // 电话号码格式
    checkPhone(phone) {
        let reg = /^1[0-9]{10}$/;
        return reg.test(phone);
    },
    checkEmail(email) {
        // 验证邮箱格式
        let reg = /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/;
        // let reg = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/;
        return reg.test(email);
    },
    checkVerifyCode(code) {
        // 验证验证码格式
        let reg = /^\d{6}$/;
        return reg.test(code);
    },
    checkDynamicCode(code) {
        // 验证邀请码格式
        let reg = /^[A-Za-z0-9]{4}$/;
        return reg.test(code);
    },
    // password check
    checkPassword(password) {
        // 验证密码格式
        let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/;
        return reg.test(password);
    },
    // name check
    checkName(name) {
        // 验证用户名格式
        let reg = /^[\u4E00-\u9FA5]{2,10}$/;
        return reg.test(name);
    },
    //  账户名称的正则表达式
    checkUsername(name) {
        let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,16}$/;
        return reg.test(name);
    },
    //  统一验证
    checkCommonField(name) {
        let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,30}$/;
        return reg.test(name);
    },
    // idCard check
    checkIDCard(idCard) {
        // 验证身份证格式
        return IDValidator.isValid(idCard);
    },
    isIdcard(val) {
        let result = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(val);
        return result;
    },
    checkValEmpty(str) {
        // 验证是否为空
        if (
            str === undefined ||
            str === null ||
            str.length <= 0 ||
            str === 'undefined'
        ) {
            return true;
        } else {
            return false;
        }
    },
    // 验证佣金输入金额
    checkCommission(commission) {
        // 小于100且后面可以带4个小数点
        let reg = /^100$|^(\d|[1-9]\d)(\.\d{1,4})*$/;
        //一亿以内,保留四位小数
        //  /^([1-9]\d{0,7}|0)(\.\d{1,4})?$/
        // 如果通过的话,那么判断小数点的前几位数字
        return reg.test(commission);
    },
    // 验证渠道编号是否符合规则--4-8位以内数字+字母,区分大小写
    checkChannelNo(channelNo) {
        let reg = /^[\w\d]{4,8}$/;
        return reg.test(channelNo);
    },
    //验证是否包含空格
    checkSpace(val) {
        let reg = /^\s+$/;
        if (reg.test(val)) {
            return true;
        } else {
            return false;
        }
    },
    //将发送请求中的参数格式化,如果为空则转为null
    formatReq(obj) {
        for (let i in obj) {
            let item = obj[i];
            if (item === null) continue;
            if (
                item === undefined ||
                item === '' ||
                item === 'undefined' ||
                item.length <= 0 ||
                JSON.stringify(item) == '{}'
            ) {
                obj[i] = null;
            }
        }
        return obj;
    },
    // 只能输入数字与小数点正则判断
    checkIntegerAndDot(checkVal) {
        let dotReg = /\./g;
        let IntegerReg = /^[1-9]{1}\d{0,5}$/;
        // 如果输入了多个点,直接不符合要求
        if (checkVal.match(dotReg) && checkVal.match(dotReg).length > 1) {
            return false;
            // 输入了一个点
        } else if (
            checkVal.match(dotReg) &&
            checkVal.match(dotReg).length === 1
        ) {
            // 开头与结尾都不能出现点,点的前面与后面必须是数字
            let strLen = checkVal.length;
            if (
                checkVal.indexOf('.') === 0 ||
                checkVal.indexOf('.') === strLen - 1
            ) {
                return false;
                // 超过个数的限制的话
            } else {
                return strLen <= 6;
            }
            // 没有小数点的话,那么就是全部数字进行匹配
        } else if (!checkVal.match(dotReg)) {
            return IntegerReg.test(checkVal);
        }
    },
    //银行卡验证
    bankCard(iccid) {
        let initCard = iccid;
        var s1 = 0,
            s2 = 0;
        iccid = iccid.substring(0, iccid.length - 1);
        var reverse = '';
        for (var i = iccid.length; i > 0; i--) {
            reverse += iccid.charAt(i - 1);
        }
        for (i = 0; i < reverse.length; i++) {
            var digit = parseInt(reverse.charAt(i), 10);
            if (i % 2 != 0) {
                // this is for odd digits, they are 1-indexed in the
                // algorithm
                s1 += digit;
            } else {
                // add 2 * digit for 0-4, add 2 * digit - 9 for 5-9
                s2 += 2 * digit;
                if (digit >= 5) {
                    s2 -= 9;
                }
            }
        }
        var sum = 10 - ((s1 + s2) % 10);
        if (sum === 10) {
            sum = 0;
        }
        return iccid + sum == initCard;
    }
};
src/views/main/addBankcard.vue
New file
@@ -0,0 +1,376 @@
<template>
  <div class='text-main'>
    <van-nav-bar  :title="title"  left-arrow  @click-left="onClickLeft" />
    <van-form validate-first ref="credRef">
      <div  class="bes-title"><div> 分销个人</div></div>
      <!-- <van-field v-model.trim="dataForm.bankCardNo" label="银行卡号" placeholder="请输入银行卡号" :rules="bankId" name="bankId" clearable>
        <template #button>
          <van-icon name="scan" size="25" @click="imgClick()" />
        </template>
      </van-field> -->
      <!-- <van-field readonly clickable name="noName" :value="bankName" label="银行名称" placeholder="请选择银行名称" @click="showPicker = true"  :rules="noName"  right-icon="arrow"/> -->
      <div>
      <van-field v-model.trim="dataForm.bankCardMblNo"   label="姓名:"    readonly/>
      <van-field v-model.trim="dataForm.bankCardMblNo"  label="身份证号:"  readonly/>
      </div>
      <!-- <van-field v-model.trim="dataForm.verCode" center clearable label="短信验证码" :rules="codeRules" placeholder="请输入短信验证码" >
        <template #button>
          <van-button size="small" color="#E43A28" @click.stop="getCode"  native-type="button" :disabled="isdisabled">{{codeText}}</van-button>
        </template>
      </van-field> -->
      <div class="index-title">
        <van-checkbox v-model="checked" style="height:30px; margin-right:5px" checked-color="#6cc3bb"></van-checkbox>
        <div  v-if="orderType==1"> 阅读并同意<span  style="border-bottom:1px solid #00F; color:#00F"  @click="show=true">《信息授权函》</span>的签订</div>
        <div  v-if="orderType==2"> 阅读并同意<span  style="border-bottom:1px solid #00F; color:#00F"  @click="showx=true">《保理付款服务合同》</span>的签订</div>
      </div>
      <div style="margin: 16px;margin-top:30px">
        <van-button round block  color="#6cc3bb" @click="onFailed" native-type="submit">确认</van-button>
      </div>
    </van-form>
    <van-popup v-model="show">
      <div class="agreenBox">
        <div class="agreen-html" v-html="agreementext"></div>
        <div class="close-agreen" @click="show = false">
          <van-icon name="close" color="#c8c9cc" />
        </div>
      </div>
    </van-popup>
    <van-popup v-model="showx">
      <div class="agreenBox">
        <div class="agreen-html" v-html="agreementextw"></div>
        <div class="close-agreen" @click="showx = false">
          <van-icon name="close" color="#c8c9cc" />
        </div>
      </div>
    </van-popup>
   <van-popup v-model="showPicker" position="bottom">
    <van-picker show-toolbar :columns="dataObj.bankList" @confirm="onConfirm" @cancel="showPicker = false" value-key="name" ref="pickerRef"/>
  </van-popup>
    <input style="float: left;  display: none;" type="file" id='uploadFile' accept="image/*" v-on:change="readLocalFile()" v-if="ishowFile">
  </div>
  </div>
</template>
<script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import { repstr } from '../../../static/agreement5'
import { repstrw } from '../../../static/agreement2'
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {},
  data() {
    //这里存放数据
    return {
      dataForm: {
        bankCode:'',
        bankCardNo:''
      },
      ishowFile:true,
      dataObj :{},
      showPicker: false,
      agreementext: '',
      agreementextw: '', //代扣委託書
      checked: false,
      codeValue: '',
      isdisabled: false,
      show: false,
      showx: false,
      bankName:'',
      orderId:this.$route.query.orderId,   //订单编号
      orderType:this.$route.query.orderType,  //订单类型
      title:this.$route.query.orderType==1?'授信信息确认':'签约信息确认',
      codeText: '获取验证码',
      noName: [
        {
          required: true,
          message: '银行名称不能为空',
          trigger: 'onChange',
        },
      ],
      bankId: [
        {
          required: true,
          message: '银行卡号不能为空',
          trigger: 'onBlur',
        },
        {
          validator: (value) => {
            return /^[1-9]\d{9,29}$/.test(
              value
            )
          },
          message: '银行卡号错误,请检查!',
          trigger: 'onBlur',
        },
      ],
      tel: [
        {
          required: true,
          message: '预留手机号不能为空',
          trigger: 'onBlur',
        },
        // {
        //   validator: (value) => {
        //     return /^(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/.test(
        //       value
        //     )
        //   },
        //   message: '手机号格式错误!',
        //   trigger: 'onBlur',
        // },
      ],
       codeRules: [
        {
          required: true,
          message: '验证码不能为空',
          trigger: 'onBlur',
        },
        {
          validator: (value) => {
            return /^\d{6}$/.test(
              value
            )
          },
          message: '验证码必须为6位数字',
          trigger: 'onBlur',
        },
      ]
    };
  },
  //监听属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {
    dataForm: {
    handler(newValue, oldValue) {
//      if(newValue.bankCardNo==''){
             this.ishowFile = false // 销毁
// }
    },
    deep: true
  }
  },
  //方法集合
  methods: {
    bankCardNoInit() {
         console.log(this.orderId)
         console.log(this.orderType)
      // this.$api.bankCardInit({ orderId: this.orderId}).then(res => {
      //   if (res.body.orderStatus==0){  // 待绑卡
      //    this.dataForm.bankCardMblNo =res.body.mblNo
      //    this.dataObj =res.body
      //    this.agreementextw = repstrw(this.dataObj.userName,this.dataObj.idNo);
      //    this.agreementext = repstr(this.dataObj.userName,this.dataObj.idNo);
      //   }else if(res.body.orderStatus==1){ //待活体签约
      //                 this.$api.faceIdUrl({orderId: this.orderId}).then(res => {
      //               window.location.href =res.body.url
      //       })
      //   }else if(res.body.orderStatus==2){ //待审批状态
      //          this.$router.push({path:'/main/queryres',query:{orderId: this.orderId}})
      //   }else if(res.body.orderStatus==3){ //已拒绝
      //       this.$router.push({path:'/main/queryres',query:{orderNo: this.$route.query.orderId,orderStatus:3}})
      //   }else if(res.body.orderStatus==4){ //待签约
      //       this.$router.push({path:'/main/findPre',query:{orderId: this.$route.query.orderId}})
      //   }
      //   else if(res.body.orderStatus==5){//待支付首期款
      //   }
      // })
    },
    onClickLeft(){
    },
   onConfirm(value) {
      this.bankName = value.name;
      this.dataForm.bankCode=this.$refs.pickerRef.getValues()[0].code
      this.showPicker = false;
    },
    onFailed() {
      let mes  = `请阅读并同意${this.orderType==1?'信息授权函':'保理付款服务合同'}`
       if (!this.checked) return this.$notify(mes)
      // this.$refs.credRef.validate().then(() => {
      //   // 验证通过
      //   if (this.dataForm.verCode ==undefined || this.dataForm.verCode =='') return this.$notify('请输入验证码')
      //   if (!this.checked) return this.$notify('请阅读数据授权协议')
      //   this.$api.bankCardAgree({orderId:this.orderId,verCode:this.dataForm.verCode}).then(res => {
      //         this.$router.push({path:'/main/queryres',query:{orderNo:this.orderId}})
      //   })
      // })
    },
      getCode(e) {
      this.$refs.credRef.validate(['bankId','noName']).then(()=>{
          this.getVerificationCode()
      })
    },
    setTime: function () {
      let time = 60
      let i = 0
      let that = this
      //1.在60秒之内,button上倒计时60秒,并显示
      //2.向controller请求验证码,并发送到指定的手机号上面
      let set = setInterval(function () {
        that.codeText = --time + '秒后重发'
        i++
        //此变量用于标识只调用一次获取验证码的函数
        if (i == 1) {
          console.log('get code start1 ... ')
          //使获取验证码按钮不可点击
          that.isdisabled = true
          // that.getVerificationCode()
        }
      }, 1000)
      //60秒之后需要做的事情
      setTimeout(function () {
        //恢复获取验证码按钮可点击
        that.isdisabled = false
        that.codeText = '获取验证码'
        clearInterval(set) //清除计时器
      }, time * 1000) //60000
    },
    getVerificationCode: function () {
      // 向服务器获取验证码
         this.$api.bankCardAuthMsg({...this.dataForm, orderId: this.orderId}).then(res => {
       this.agreementextw = repstrw(this.dataObj.userName,this.dataObj.idNo,this.dataForm.bankCardMblNo,this.bankName,this.dataForm.bankCardNo);
        this.$notify_success('验证码发送成功!')
        this.setTime()
      })
    },
    //图片click
    imgClick: function () {
        this.ishowFile = true // 重建
      this.$nextTick(()=>{
               document.getElementById("uploadFile").click();
      })
    //
    },
    //点击选中图片
    readLocalFile: function () {
      console.log(document.getElementById("uploadFile").files)
              this.ishowFile = false // 销毁
      var localFile = document.getElementById("uploadFile").files[0];
      var reader = new FileReader();
      var content;
      var self = this;
      reader.onload = function (event) {
        content = event.target.result;
       self.compress(content, 800, 0.5).then(val => {
       val =  val.substring(val.indexOf(',')+1)
           self.$api.bankCardOcr({base64Img:val}).then(res=>{
           self.dataForm.bankCardNo =res.body.bankCardNo
       })
      });
        // current.imgs.push(content);  //获取图片base64代码
      }
      reader.onerror = function (event) {
        alert('error')
      }
      content = reader.readAsDataURL(localFile, "UTF-8");
           this.ishowFile = true // 重建
    },
  // 压缩图片
    compress(base64String, w, quality) {
      var newImage = new Image();
      var imgWidth, imgHeight;
      var promise = new Promise(resolve => (newImage.onload = resolve));
      newImage.src = base64String;
      return promise.then(() => {
        imgWidth = newImage.width;
        imgHeight = newImage.height;
        var canvas = document.createElement("canvas");
        var ctx = canvas.getContext("2d");
        if (Math.max(imgWidth, imgHeight) > w) {
          if (imgWidth > imgHeight) {
            canvas.width = w;
            canvas.height = (w * imgHeight) / imgWidth;
          } else {
            canvas.height = w;
            canvas.width = (w * imgWidth) / imgHeight;
          }
        } else {
          canvas.width = imgWidth;
          canvas.height = imgHeight;
        }
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.drawImage(newImage, 0, 0, canvas.width, canvas.height);
        // var base64 = canvas.toDataURL(getMimeType(base64String), quality);
        var base64 = canvas.toDataURL("image/jpeg", quality);
        return base64;
      });
    }
  },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {
    this.bankCardNoInit()
  },
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {
  }
}
</script>
<style  lang="less" scoped>
.text-main {
  background-color: @c-f5;
  min-height: 100vh;
  //padding-bottom: 44px;
  .van-form {
    margin-top: 5px;
  }
  .index-title {
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 10px;
  }
  /deep/ .van-field__right-icon .van-icon {
    font-size: 0.5rem;
  }
  /deep/.van-popup__close-icon {
    color: #c8c9cc;
  }
  .van-cell__title {
    color: #999999;
    font-size: 12px;
  }
  .bes-title{
    background-color: #fff;
    font-size: 20px;
    font-weight: bold;
    height: 60px;
    div{
      margin-left: 16px;
      line-height: 60px;
    }
  }
}
.agreenBox {
  width: 80vw;
  height: 70vh;
  padding: 60px 20px 30px 20px;
  position: relative;
}
.agreen-html {
  width: 100%;
  height: 100%;
  overflow: scroll;
  box-sizing: border-box;
}
.close-agreen {
  .lh(30px);
  .flex(center, center);
  .van-icon {
    font-size: @font-16;
  }
}
</style>
src/views/main/findPreAudit.vue
New file
@@ -0,0 +1,56 @@
<template>
  <div class='text-main'>
    <van-nav-bar title="审核结果"  />
    <div style="  text-align: center;">
    <img width="70%" height="200" src="../../assets/img/successw.png"  />
    </div>
    <div class="content">
      <p class="content-text"> 恭喜你通过审核!</p>
    <van-button square color="#E43A28" style="width:70%;margin-top:20px" @click="$router.push({path:'/main/signcont',query:{orderId:$route.query.orderId}})" >去签约</van-button>
    </div>
  </div>
</template>
<script>
export default {
  components: {},
  data() {
    //这里存放数据
    return {
    };
  },
  //监听属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
  },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {
  },
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {
  },
}
</script>
<style   lang="less"  scoped>
img {
   margin: 10px auto;
}
.content {
  text-align: center;
  .content-text {
    font-size: 16px;
    font-weight: 500;
    color: #333333;
  }
  .content-main {
    font-weight: 500;
    color: #999999;
  }
}
</style>
src/views/main/queryres.vue
New file
@@ -0,0 +1,145 @@
<template>
  <div class='text-main'>
    <van-nav-bar title="审核结果" />
    <div style="  text-align: center;">
      <img width="70%" height="180" src="../../assets/img/success.png"   v-if="ResultIs"/>
      <img width="70%" height="180" src="../../assets/img/img_fail.png"   v-else >
    </div>
    <div class="content">
      <p class="content-text"> {{datastr}}</p>
      <p class="content-text" v-if="isActive">{{examineStr}}</p>
      <div class="btn-content">
      <van-button color="#E43A28" @click="returnApp"  round  plain hairline v-if="!ResultIs">返回</van-button>
      <van-button  color="#E43A28" @click="checkBtn" round v-if="!ResultIs && examineIs">重新校验</van-button>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  components: {},
  data() {
    //这里存放数据
    return {
      datastr: '活体校验中....',
      examineStr:'正在审核订单,请稍后...',
      isActive: false,
      orderNo:0,
      ResultIs:true,
      examineIs:true
    };
  },
  //监听属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
    bankCardNoInit() {
      var slfe = this
      var t2 = window.setInterval(function () {
        slfe.$api.bankCardInit({ orderId:   slfe.orderNo }).then(res => {
          if (res.body.orderStatus == 0) {  // 待绑卡
                    window.clearInterval(t2)  // 去除定时器
            slfe.$router.push({ path: '/', query: { orderId:  slfe.orderNo } })
          } else if (res.body.orderStatus == 1) { //待活体签约
                    window.clearInterval(t2)  // 去除定时器
            slfe.$api.faceIdUrl({ orderId:  slfe.orderNo }).then(res => {
              window.location.href = res.body.url
            })
          } else if (res.body.orderStatus == 2) { //待审批状态
            // slfe.$router.push({ path: '/main/queryres', query: { orderId:  slfe.orderNo } })
          } else if (res.body.orderStatus == 3) { //已拒绝
                        // this.examineStr="订单审核失败!"
                        // this.ResultIs =false
                        // this.examineIs=false
                        window.clearInterval(t2)  // 去除定时器
                      window.location.href ="https://www.shouxinshibai.com/"
          } else if (res.body.orderStatus == 4) { //待签约
                    window.clearInterval(t2)  // 去除定时器
            slfe.$router.push({ path: '/main/findPre', query: { orderId:  slfe.orderNo } })
          }
          else if (res.body.orderStatus == 5) {//待支付首期款
                  window.clearInterval(t2)  // 去除定时器
          }
        })
      }, 5000)
    },
    getQueryVariable(variable) {  //获取url参数
      var query = window.location.search.substring(1);
      var vars = query.split("&");
      for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) { return pair[1]; }
      }
      return (false);
    },
    checkBtn(){  //重新校验
           this.$api.faceIdUrl({orderId: this.orderNo}).then(res => {
                       window.location.href =res.body.url
            })
    },
    returnApp(){
           window.location.href ="https://www.shouxinshibai.com/"
    }
  },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {
    if(this.getQueryVariable('orderNo')){
          this.orderNo=this.getQueryVariable('orderNo')
    }else{
            this.orderNo=this.$route.query.orderNo
    }
    let  orderStatus =this.$route.query.orderStatus
    if(orderStatus && orderStatus==3){
            this.datastr='正在审核订单,请稍后...'
          //  this.bankCardNoInit()
             window.location.href ="https://www.shouxinshibai.com/"
    }else{
    //         this.$api.faceIdResult({orderId:  this.orderNo}).then(res=>{
    //            this.datastr="活体校验成功"
    //            this.isActive =true
    //            this.ResultIs =true
    //           this.bankCardNoInit()
    // }).catch(err=>{
    //   this.ResultIs =false
    //   this.datastr =err.errMsg
    // })
    this.datastr='正在审核订单,请稍后...'
    this.bankCardNoInit()
    }
  },
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {
  },
}
</script>
<style   lang="less"  scoped>
img {
  margin: 10px auto;
}
.content {
  text-align: center;
  .content-text {
    font-size: 16px;
    font-weight: 500;
    color: #333333;
  }
  .content-main {
    font-weight: 500;
    color: #999999;
  }
  .btn-content{
    display: flex;
    margin-top: 20px;
   justify-content:space-around;
  }
  .van-button{
    width: 150px;
  }
}
</style>
src/views/main/signcont.vue
New file
@@ -0,0 +1,205 @@
<template>
  <div class='text-main'>
    <van-nav-bar title="签约信息" left-arrow />
    <van-form validate-first ref="credRef">
      <van-field v-model.trim="dataObj.name" label="姓名:" readonly />
      <van-field v-model.trim="dataObj.idNo" label="身份证号:" readonly />
      <van-field v-model.trim="dataObj.mblNo" label="手机号:" readonly />
      <van-field v-model.trim="dataObj.amt" label="租金金额:" readonly />
      <van-field v-model.trim="dataObj.term" label="分期期数:" readonly />
      <van-field v-model.trim="dataObj.payDay" label="还款日:" readonly />
            <van-collapse v-model="activeName" accordion>
        <van-collapse-item title="还款计划" name="1">
                      <table class="tab" cellspacing='0'>
                <tr>
                    <th>期数</th>
                    <th>还款日期</th>
                    <th>还款金额</th>
                </tr>
                <tr v-for="(val,index) in dataObj.replyPlanInfItemVos" :key="index"  align="center">
                    <td>{{val.term}}期</td>
                    <td>{{val.rpyDay}}</td>
                    <td>{{val.rpyAmt}}元</td>
                </tr>
            </table>
        </van-collapse-item>
      <van-field v-model.trim="dataForm.verCode" center clearable label="签约验证码" placeholder="请输入短信授权码">
        <template #button>
          <van-button size="small" color="#E43A28" @click.stop="getCode" :disabled="isdisabled">{{codeText}}</van-button>
        </template>
      </van-field>
      </van-collapse>
      <div class="index-title">
        <van-checkbox v-model="checked" style="height:30px;margin-right:5px" checked-color="#E43A28"></van-checkbox>
        <div> 本人已阅读并同意签署<span @click="show=true" style="border-bottom:1px solid #00F; color:#00F">《借款合同》</span>同意报送贷款<br>相关信息至金融信用信息基础数据库(人行征信系统)</div>
      </div>
      <div style="margin: 16px;margin-top:30px">
        <van-button round block color="#E43A28" @click="onFailed" native-type="submit">立即签约</van-button>
      </div>
    </van-form>
    <van-popup v-model="show">
      <div class="agreenBox">
        <div class="agreen-html" v-html="agreementext"></div>
        <div class="close-agreen" @click="show = false">
          <van-icon name="close" color="#c8c9cc" />
        </div>
      </div>
    </van-popup>
    <!-- <van-popup v-model="show"  closeable ></van-popup> -->
  </div>
</template>
<script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import { repstrh } from '../../../static/agreement1'
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {},
  data() {
    //这里存放数据
    return {
      dataForm: {
        idNo: '',
        mblNo: '',
        userName: '',
      },
      activeName: '0',
      isdisabled: false,
      tableinit:['还款期数','还款日期','还款金额'],
      dataObj: {},
      agreementext: repstrh(),
      checked: false,
      show: false,
      codeText: '获取授权码',
    };
  },
  //监听属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
    onFailed() {
      // this.$api.checkVerifyCode()
      // 验证通过
      if (this.dataForm.verCode == undefined || this.dataForm.verCode == '') return this.$notify('请填写授权码')
      this.$api.checkVerifyCode({ verifyCode: this.dataForm.verCode, orderId: this.$route.query.orderId }).then(res => {
        if (!this.checked) return this.$notify('请阅读并勾选数据授权协议')
        this.$api.signContract({ orderId: this.$route.query.orderId }).then(res => {
              this.$router.push('/main/bancardsucces')
        })
      })
    },
    getCode: function (e) {
      this.setTime()
    },
    setTime: function () {
      let time = 60
      let i = 0
      let that = this
      //1.在60秒之内,button上倒计时60秒,并显示
      //2.向controller请求验证码,并发送到指定的手机号上面
      let set = setInterval(function () {
        that.codeText = --time + '秒后重发'
        i++
        //此变量用于标识只调用一次获取验证码的函数
        if (i == 1) {
          console.log('get code start1 ... ')
          //使获取验证码按钮不可点击
          that.isdisabled = true
          that.getVerificationCode()
        }
      }, 1000)
      //60秒之后需要做的事情
      setTimeout(function () {
        //恢复获取验证码按钮可点击
        that.isdisabled = false
        that.codeText = '获取授权码'
        clearInterval(set) //清除计时器
      }, time * 1000) //60000
    },
    getVerificationCode: function () {
      // 向服务器获取验证码
      this.$api.sendVerifyCode({ orderId: this.$route.query.orderId }).then(res => {
        this.$notify_success('授权码发送成功!')
      })
    },
    signInit() {
      this.$api.signContractInfo({ orderId: this.$route.query.orderId }).then(res => {
        console.log(res)
        this.dataObj = res.body
      })
    }
  },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {
    this.signInit()
  },
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {
  }
}
</script>
<style  lang="less" scoped>
.text-main {
  background-color: @c-f5;
  min-height: 100vh;
  //padding-bottom: 44px;
  .van-form {
    margin-top: 5px;
  }
  .index-title {
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 10px;
  }
  /deep/ .van-field__right-icon .van-icon {
    font-size: 0.5rem;
  }
  /deep/.van-popup__close-icon {
    color: #c8c9cc;
  }
  .van-cell__title {
    color: #999999;
    font-size: 12px;
  }
}
.agreenBox {
  width: 80vw;
  height: 70vh;
  padding: 60px 20px 30px 20px;
  position: relative;
}
.agreen-html {
  width: 100%;
  height: 100%;
  overflow: scroll;
  box-sizing: border-box;
}
.close-agreen {
  .lh(30px);
  .flex(center, center);
  .van-icon {
    font-size: @font-16;
  }
}
    .tab{
        width: 100%;
        th{
            background-color: #F9F7FC;
            height: 35px;
            color: #666666;
            font-size: 13px;
        }
        td{
            height: 35px;
            font-size: 14px;
        }
    }
</style>
src/views/main/singsuc.vue
New file
@@ -0,0 +1,59 @@
<template>
  <div class='text-main'>
    <van-nav-bar title="审核结果"/>
    <div style="  text-align: center;">
    <img width="70%" height="180" src="../../assets/img/successw.png"  />
    </div>
    <div class="content">
      <p class="content-text"> 签约成功</p>
      <van-button  @click="returnApp"  round block  color="#E43A28">返回</van-button>
    </div>
  </div>
</template>
<script>
export default {
  components: {},
  data() {
    //这里存放数据
    return {
      dataForm: {}
    };
  },
  //监听属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
      returnApp(){
           window.location.href ="https://www.qianyuechenggong.com/"
    }
  },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {
  },
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {
  },
}
</script>
<style   lang="less"  scoped>
img {
   margin: 10px auto;
}
.content {
  text-align: center;
  .content-text {
    font-size: 16px;
    font-weight: 500;
    color: #333333;
  }
  .content-main {
    font-weight: 500;
    color: #999999;
  }
}
</style>
static/README.md
New file
@@ -0,0 +1,8 @@
<!--
 * @Author: 小明丶
 * @Date: 2019-08-13 18:10:18
 * @LastEditors: 小明丶
 * @LastEditTime: 2019-08-13 18:10:18
 * @Description:
 -->
# 静态文件目录
static/agreement1.js
New file
@@ -0,0 +1,440 @@
export var repstrh = function(userNamex) {
  const agreement5 =`<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-align:center">
  <strong><span style="font-family: 宋体;font-size: 19px">保理付款服务合同</span></strong>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-align:center;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span></strong>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">特别提醒:在您确认并签署本合同(包括附件,下同)之前,请您务必充分阅读本合同所有条款,尤其是加粗部分。如您对合同内容及页面提示有疑问,请您暂停后续操作,您可致电我方客服热线以便我们为您解释和说明。</span></strong>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">为了及时给您提供服务支持,</span> 一旦您通过点击或其他方式确认本合同,即意味着您同意签订本合同。</span></strong>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">本合同由正文、附件及我方不时发布的有关本服务的具体页面、账单、指引、说明和介绍等共同组成,共同构成您与我方之间就本保理付款服务的完整协议。</span></strong>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span></strong>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">甲方:深圳市景天商业保理有限公司</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">法定代表人</span>/负责人:张科</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">联系电话:</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">028-67641158</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">地址:成都市高新区交子大道</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">177</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">号中海国际中心</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">D</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">座</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">1704</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">乙方:</span>xxxxx</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">法定代表人</span>/负责人:【xxxx】</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">联系电话:【</span>xxxxx】</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">地址:【</span>xxxxx】</span>
</p>
<p style="margin-top:4px;margin-right:10px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">丙方:【</span>xxxx】</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">身份证号:【</span>xxxx】</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">联系电话【</span>xxxx】</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">地址:【</span>xxxx】</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">甲方方是一家在中华人民共和国注册的商业保理公司,可提供融资性保理服务及债务人资信调查与评估、应收账款管理等非融资性保理服务。</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">乙方是一家独立营运的房地产行业销售公司,承接并从事房屋销售业务,为本协议中的保理融资申请人。</span>
</p>
<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">丙方为中华人民共和国公民,年满</span>18周岁,具备独立民事行为能力的个人,为本协议中的担保个人。 </span><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;</span></strong>
</p>
<p style="margin-top:7px;margin-left:0;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span></strong>
</p>
<p style="margin-top:7px;margin-left:0;text-indent:32px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">第</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">一</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">条</span> </span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">服务规则</span></strong>
</p>
<p style="margin-top:7px;text-indent:30px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">根据甲方与乙方</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">签订的编号为【】的《有追索权保理业务合同》(以下称</span>“原合同”),乙方将本协议项下的单笔应收账款债权(详见附件:债权转让清单),出让给甲方以便向甲方申请单笔保理融资。</span>
</p>
<p style="margin-top:7px;text-indent:30px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">上述</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">应收账款债权,将在甲方对乙方资信</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">评估</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">审核通过(具体以甲方页面或系统记录为准)时,自动从乙方转让至甲方。</span>
</p>
<p style="margin-top:7px;text-indent:30px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">第</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">二</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">条</span> </span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">融资信息</span></strong>
</p>
<p style="margin-left:9px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">融资金额:【】元</span>
</p>
<p style="margin-left:9px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">融资期限:【</span>365】天</span>
</p>
<p style="margin-left:9px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">还款方式:到期一次性还本付息。</span>
</p>
<p style="margin-left:9px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">融资服务费(融资利息)计算方式:按日计费,放款当天(含)到还款当天(含),前</span>182天以融资金额为基数,按【0.11】‰/日的标准计算,之后以融资金额为基数,按【0.65】‰/日的标准计算,直至全部结清。</span>
</p>
<p style="margin-left:9px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">滞纳金:融资期限届满后,以未还总额为基数,按【</span>0.1】‰/日的标准额外支付滞纳金。</span>
</p>
<p style="margin-left:9px;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">提前还款:放款后可提前还款,根据实际资金占用时间计算保理服务费。</span>
</p>
<p style="margin-left:9px;text-indent:32px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">第三条</span> 收款账户</span></strong>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">乙方委托甲方将本合同项下的单笔融资款中的【】元转入如下账户:</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">收款账户信息:</span>
</p>
<p style="margin-right:10px;margin-left:0;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">开户行:【</span>xxxxx】</span>
</p>
<p style="margin-right:10px;margin-left:0;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">户</span> &nbsp;名:【xxxx】</span>
</p>
<p style="margin-right:10px;margin-left:8px;text-indent:24px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">账</span> &nbsp;号:【xxxx】</span>
</p>
<p style="margin-right:10px;margin-left:0;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">乙方委托甲方将本合同项下的单笔融资款中的【】转入如下账户:</span>
</p>
<p style="line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family:宋体">收款账户信息:</span></span>
</p>
<p style="margin-right:10px;margin-left:8px;text-indent:24px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">开户行:</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">待完善</span>
</p>
<p style="margin-right:10px;margin-left:8px;text-indent:24px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">户</span> &nbsp;名:四川华弘汇商务咨询有限公司</span>
</p>
<p style="margin-right:10px;margin-left:8px;text-indent:24px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">账</span> &nbsp;号:待完善</span><strong><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span></span></strong>
</p>
<p style="margin-top:7px;text-indent:30px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">第</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">四</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">条</span> </span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">担保信息</span></strong>
</p>
<p style="margin-top:7px;margin-left:0;text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">丙方在签订本协议时,已明确知晓甲乙双方签订的原合同相关内容,且自愿为乙方就本合同项下的所有付款义务,向甲方提供连带担保责任。担保范围为乙方就本合同项下发生的融资本金、服务费、滞纳金及违约发生的所有费用,担保期限为三年,自本合同项下融资期限届满之日或甲方要求乙方回购本合同项下债权之日起算。</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">如发生下列情形之一,自接到债权人通知之日起</span>5个工作日内,无条件履行本合同项下的保证责任:</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>1)债务人未按时足额偿还债务或违反主合同约定;</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>2)债务人被宣告解散、破产的;</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>3)债务人转移资产,抽逃资金,以逃避债务,或经营和财务状况恶化,无法清偿到期债务,或债务人卷入或即将卷入重大的诉讼或仲裁程序及其他法律纠纷,足以影响其偿债能力的;</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>4)债权人根据法律法规之规定或主合同的约定提前收回债权,债务人未予清偿的;</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>5)债务人违反主合同的约定或法律法规之规定,可能影响债权人实现债权的;</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>6)其他足以影响或可能影响债权人实现债权的情况。</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">发生下列情形之一,无需经保证人另行同意,保证人应继续按照本合同的约定对变更后的主合同债务承担保证责任:</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>1)债权人与债务人协商变更主合同,未加重债务人的债务的;</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>2)债权人与债务人协商延长债务履行期限的;</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>3)因利率调整而导致主债权数额发生变化的;</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>4)债权人将主债权转让给第三人的。</span>
</p>
<p style="margin-right:13px;margin-left:0;text-indent:30px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;letter-spacing: -1px;font-size: 16px"><span style="font-family:宋体">第五条</span> </span></strong><strong><span style="font-family: 宋体;line-height: 150%;letter-spacing: -1px;font-size: 16px">违约责任</span></strong>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">任何一方违反本合同约定,给对方造成损失的,除本合同已有约定外,还应赔偿对方的一切损失(包括但不限于诉讼费、仲裁费、律师费、鉴定费、拍卖费、公告费、催告费、财产保全申请费、保全担保费、差旅费、通讯费等)。</span>
</p>
<p style="margin-top:7px;text-indent:30px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">第</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">六</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">条</span> 通知、送达与管辖</span></strong>
</p>
<p style="text-indent:33px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">本协议项下各方指定的联络信息如下:</span></strong>
</p>
<table cellspacing="0" width="568">
  <tbody>
      <tr class="firstRow">
          <td width="84" valign="top" rowspan="2" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">甲方:</span></strong>
              </p>
          </td>
          <td width="484" valign="top" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">送达地址:</span></strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">成都市高新区交子大道</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">177</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">号中海国际中心</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">D</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">座</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">1704</span>
              </p>
          </td>
      </tr>
      <tr>
          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">电子邮箱:</span></strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">kefu@finlean.com</span>
              </p>
          </td>
      </tr>
      <tr>
          <td width="84" valign="top" rowspan="3" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">乙方:</span></strong>
              </p>
          </td>
          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">送达地址:【】</span></strong>
              </p>
          </td>
      </tr>
      <tr>
          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">电话:【】</span> </span></strong>
              </p>
          </td>
      </tr>
      <tr>
          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">电子邮箱:【】</span> </span></strong>
              </p>
          </td>
      </tr>
      <tr>
          <td width="84" valign="top" rowspan="3" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
              <p style="line-height: 150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">丙方</span></strong>
              </p>
          </td>
          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">送达地址:【】</span></strong>
              </p>
          </td>
      </tr>
      <tr>
          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">电话:【】</span> </span></strong>
              </p>
          </td>
      </tr>
      <tr>
          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
              <p style="line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">电子邮箱:【】</span> </span></strong>
              </p>
          </td>
      </tr>
  </tbody>
</table>
<p style="text-indent:33px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">三方该联络方式适用范围包括双方非诉时各类通知、协议等文件以及就合同发生纠纷时相关文件和法律文书的送达,同时包括在争议进入仲裁、民事诉讼程序后司法及仲裁机构相关文书的送达,程序包括一审、二审、再审和执行程序,以邮寄方式进行送达的,邮寄成功</span>3日后视为送达,以电子方式进行送达的,发送即视为送达。</span></strong>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">任何一方的联络方式需要变更时,应以书面方式提前</span>7日通知对方,否则应承担一切不利后果。对于本合同明确约定的联络方式,法院进行送达时可直接邮寄送达或通过电子方式送达,即使当事人(指甲方和/或乙方)未能收到法院邮寄送达或电子送达的文书或拒绝签收的,由于其在本合同中的约定,也应当视为送达。</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">因本合同引起的或与本合同有关的一切争议,甲丙丁三方首先应当通过友好协商解决;未能协商解决的,交由原告所在地或协议签署地(即成都高新区)有管辖权的人民法院诉讼解决。</span></strong>
</p>
<p style="text-indent:33px;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">第六条</span> 其他</span></strong>
</p>
<p style="margin-right:10px;text-indent:24px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">各方均同意本协议将以电子方式进行签署,一经签署即对各方均发生约束力。</span>
</p>
<p style="line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style="line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">(以下为签署页及附件)</span>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">甲方签署:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">签署时间:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</p>
<p style="line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">乙方签署:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;</span>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">授权代理人签署:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">签署时间:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">丙方签署:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</p>
<p style="text-indent:33px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">签署时间:【】</span> &nbsp;&nbsp;</span>
</p>
<p style="line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">附件:《债权转让清单》</span>
</p>
<p style=";text-align:center;line-height:150%">
  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">债权转让清单</span></strong>
</p>
<p style=";text-align:right;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;</span>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">致:</span> 深圳市景天商业保理有限公司</span>
</p>
<p style="text-indent:32px;line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">根据我司与贵司于</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">年</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">月</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">日签订的编号为【】号的《有追索权保理业务合同》,我司现将如下应收账款转让予贵司:</span>
</p>
<table cellspacing="0" width="511">
  <tbody>
      <tr style="height:43px" class="firstRow">
          <td width="62" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
              <p style="text-align:center;line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">债务人姓名</span></strong>
              </p>
          </td>
          <td width="57" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
              <p style="text-align:center;line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">项目名称</span></strong>
              </p>
          </td>
          <td width="159" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
              <p style="text-align:center;line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">销售房号</span></strong>
              </p>
          </td>
          <td width="114" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
              <p style="text-align:center;line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">应收账款金额</span></strong>
              </p>
          </td>
          <td width="119" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
              <p style="text-align:center;line-height:150%">
                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">应收账款到期日</span></strong>
              </p>
          </td>
      </tr>
      <tr style="height:28px">
          <td width="62" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
          <td width="57" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
          <td width="159" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
          <td width="114" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
          <td width="119" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
      </tr>
  </tbody>
</table>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style=";line-height:150%">
  <br/>
</p>
<p style=";line-height:150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
</p>
<p style="text-indent: 304px;line-height: 150%">
  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">日期:</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">年</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">月</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">日</span>
</p>
<p>
  <br/>
</p>`
  return agreement5
}
static/agreement2.js
New file
@@ -0,0 +1,226 @@
export var repstrw = function(userNamex,idNo,tel='',bankname='',bankCard='') {
           var d = new Date();
           const agreement5 =`<p>
           <span style=";font-family:DengXian;font-size:14px">特别提示:</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">本《信息授权函》</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">是由四川华弘汇商务咨询有限公司及关联公司四川塞萨尔科技有限公司、成都弗他利网络科技有限公司、中科御言(深圳)投资咨询有限公司(以下合称</span>“信息服务商”)接受金融机构(包括但不限于银行、消费金融公司、小额贷款公司、商业保理公司等)的委托,协助金融机构</span><span style=";font-family:DengXian;font-size:14px">评估并决定是否向您提供您所申请的</span><span style=";font-family:DengXian;font-size:14px">金融</span><span style=";font-family:DengXian;font-size:14px">业务的基础,如您未按本函约定提供个人信息并进行授权,您可能无法继</span><span style=";font-family:DengXian;font-size:14px">续申请或可能被拒绝提供相关业务及服务。在签署本文件前,请您仔细阅读本文件的所有条款(尤其用加粗或带下划线等突出显示的内容),请确保您已完全理解本文件所有内容,否则请勿签署本文件。</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">信息服务商在</span><span style=";font-family:DengXian;font-size:14px">为您提供相关服务的过程中会按照相关法律法规及本《信息授权函》的约定,在合法、必要、最小范围内,收集、使用、处理、保存、披</span><span style=";font-family:DengXian;font-size:14px">露和传输与您相关的个人信息,包括但不限于身份证件号码、个人生物识别信息、银行账号、收入状况、通信记录、征信</span><span style=";font-family:DengXian;font-size:14px">/信用信息、住址、IP地址等敏感信</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">息。勾选本《信息授权函》即代表您确认您已阅读、完全理解并同意本《信息授权函》全部内容,并知晓和接受提供该等授权及拒绝授权分别可能导致的不利后果。</span>&nbsp;</span>
       </p>
       <p style="text-align:center">
           <span style=";font-family:DengXian;font-size:19px">信息授权函</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">信息服务商及为本人所申请的业务提供服务的金融机构(以下合称</span>“被授权人”):</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">本人(姓名:【】;身份证号:【</span><span style=";font-family:DengXian;font-size:14px">】)申请</span><span style=";font-family:DengXian;font-size:14px">金融付款</span><span style=";font-family:DengXian;font-size:14px">相关业务及服务,兹作出以下授权:</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">1、本人同意并授权</span><span style=";font-family:DengXian;font-size:14px">被授权人及金融机构</span><span style=";font-family:DengXian;font-size:14px">为向本人提供相关业务及服务之目的,采取以下途径采集、获取本人的个人信息:</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)向本人直接采集、获取;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)通过本人所选择的服务相关方、其他合法设立并存续的第三方、与本人有关的联系人/机构采集、获取;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)通过公开(包括有限公开)渠道或是平台的采集、获取;以及</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">4)在本人使用业务相关系统、平台、客户端或类似媒介的过程中通过技术手段采集、获取。</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">2、本人同意并授权</span><span style=";font-family:DengXian;font-size:14px">被授权人,</span><span style=";font-family:DengXian;font-size:14px">为以下一项或多项用途、目的,将所采集、获取的本人个人信息进行整理、查验、复制、加工、使用、存储、披露、传输:</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)为本人提供信用评估服务并进行后续管理及服务更新;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)审核、处理本人所选择的业务产品、服务之申请;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)单独或通过本人选择的</span><span style=";font-family:DengXian;font-size:14px">分期</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">服务相关方,向本人提供相关业务产品、服务,进行后续管理,处理异议</span>/投诉/纠纷;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">4)自行或与本人有关的联系人/机构联络,或通过合法设立并存续的第三方,进行与本人所选择的业务产品、服务相关的身份识别、信息资料核实、债务</span><span style=";font-family:DengXian;font-size:14px">催收、资信</span><span style=";font-family:DengXian;font-size:14px">/信用核查评估、欺诈防范、数据及信息的统计/分析/处理、风险审查管理。对于本人有关的联系人/机构,本人在提供(无论主动填写或默认同意)</span><span style=";font-family:DengXian;font-size:14px">其联系方式之前已获取其关于被授权人进行联络之同意;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">5)进行产品、服务、流程、模型、技术、系统、数据源、合作方的评估、引入、测试、上线、设计、分析、调整、升级;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">6)自行或通过</span><span style=";font-family:DengXian;font-size:14px">被授权人、为本人提供服务的金融机构</span><span style=";font-family:DengXian;font-size:14px">所选择的合法设立并存续的第三方</span><span style=";font-family:DengXian;font-size:14px">进行</span><span style=";font-family:DengXian;font-size:14px">资产</span><span style=";font-family:DengXian;font-size:14px">处置</span><span style=";font-family:DengXian;font-size:14px">,进行协议、资</span><span style=";font-family:DengXian;font-size:14px">产、权利义务的转让;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">7)维护、改进、评估、分析日常运营、业务发展、风险管理;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">8)自行或与其他数据公司在法律允许的范围内进行数据的汇聚融合,从而建立、维护、改进数据模型;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">9)开展合法的营销推广、向本人推送介绍本人可能感兴趣的产品/服务及其提供方;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">10)执行任何有约束力或是管辖权的法律、法规、政策、规则、约定、判决、裁定、交易所或有权机关要求;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">11)其他合理,或经本人同意的目的、用途。</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span><span style=";font-family:DengXian;font-size:14px">3、本人与</span><span style=";font-family:DengXian;font-size:14px">被授权人</span><span style=";font-family:DengXian;font-size:14px">的业务、服务涉及第三方的情况</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span><span style=";font-family:DengXian;font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;3.1 本人同意并授权</span><span style=";font-family:DengXian;font-size:14px">被授权人</span><span style=";font-family:DengXian;font-size:14px">为完成本人</span><span style=";font-family:DengXian;font-size:14px">所申请的业务及服务</span><span style=";font-family:DengXian;font-size:14px">之目的,对个</span><span style=";font-family:DengXian;font-size:14px">人信息进行以下操作:</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)本人同意并授权被授权人将本人信息披露、传输给第三方,委托该第三方进行进一步的信息采集、处理、加工并返回处理结果;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)本人同意并授权该第三方接收被授权人所披露、传输的信息,根据本人授权及被授权人的指令进行相关处理、加工,并将处理结果向被授权人</span><span style=";font-family:DengXian;font-size:14px">进行</span><span style=";font-family:DengXian;font-size:14px">传输和披</span><span style=";font-family:DengXian;font-size:14px">露;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)本人同意并授权该第三方通过合法存有本人信息的机构进一步收集本人的信息,根据本人授权及被授权人的指令进行相关处理、加工,并将处理结</span><span style=";font-family:DengXian;font-size:14px">果向被授权人传输和披露。</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span><span style=";font-family:DengXian;font-size:14px">3.2 在本人通过相关方向被授权人申请</span><span style=";font-family:DengXian;font-size:14px">分期</span><span style=";font-family:DengXian;font-size:14px">业务及服务的情况下,本人需要通过该相关方的网站、客户端等渠道办理业务并接受</span><span style=";font-family:DengXian;font-size:14px">具体分期服务,本人同意并授权被授权人及该相关方对个人信息进行以下操作:</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)本人同意并授权该相关方为本人办理业务、服务之目的,采集并向被授权人传输本人个人信息;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)本人同意并授权被授权人从该相关方处采集、接收本人信息并按照本《信息授权函》相关约定整理、查验、复制、加工、使用、存储、披露、传输;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)本人同意并授权被授权人将本人与被授权人之间的业务、服务相关数据,包括但不限于业务审批结果、业务交易数据等向该相关方传输、披露并在其渠道</span><span style=";font-family:DengXian;font-size:14px">中向本人展示。</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">4、本人知悉并同意有关本人的个人信息,尤其是不良信息,可能在符合法律法规规定、本《信息授权函》约定以及被授权人认为必要时被披露给与本人有关</span><span style=";font-family:DengXian;font-size:14px">的联系人</span><span style=";font-family:DengXian;font-size:14px">/机构、本人选择的</span><span style=";font-family:DengXian;font-size:14px">分期</span><span style=";font-family:DengXian;font-size:14px">服务相关方或其他第三方,包括但不限于本人的亲属朋友、同事、紧急联系人、通讯录联系人、雇主、工作单位、征信机构、</span><span style=";font-family:DengXian;font-size:14px">合法的风控服务机构、催收机构、法律服务机构、信息服务机构等。</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">5、本人确认,本人已被明确告知并理解提供本人个人信息可能给本人带来财产或信用损失或其他可能的不利后果,包括对本人信用可能产生不良影响、个</span><span style=";font-family:DengXian;font-size:14px">人信息被他人不当利用等风险,本人同意承担该等可能的不利后果。</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">6、本人确认并同意,基于反洗钱反恐及金融监管等义务和监管要求,被授权人可在本人所选择的业务及服务完结之后继续留存相应个人信息,并在业务关系</span><span style=";font-family:DengXian;font-size:14px">终结之日起的</span><span style=";font-family:DengXian;font-size:14px">5年后对个人信息进行匿名化或去标识化处理。</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">7、本人承诺,本人所提供的所有信息均真实、有效、准确、完整,且不存在任何遗漏、隐瞒及误导。在不损害本人在其他文件中做出的承诺的前提下,如</span><span style=";font-family:DengXian;font-size:14px">果该等信息有任何变更,本人将在变更后立即通知被授权人及金融机构,如因本人未及时更新信息导致的损失,由本人自行承担。</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">8、在本人所选择的业务涉及本人相关的机构的情况下,本人确认并承诺:本人已获得相关机构的授权和同意,将本《信息授权函》所称“本人个人信息”</span><span style=";font-family:DengXian;font-size:14px">的范围扩大覆盖为本人个人信息以及本人相关的机构信息,并有权代相关机构向被授权人及合法设立并存续的第三方作出上述全部授权及承诺,即被授权人及金融机构有权根据第</span><span style=";font-family:DengXian;font-size:14px">2条采集、获取、整理、核实、查验、复制、加工、使用、存储、披露、传输本人相关的机构信息,被授权人</span><span style=";font-family:DengXian;font-size:14px">及金融机构</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">委托的合法设立并存续的第三方有权根据第</span>3条采</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">集、加工、处理、披露和传输本人相关的机构信息。</span>“本人相关的机构信息”是指与本人有关的机构(本人的工作单位、本人投资或经营的实体以及与之有合作、供销、关联关系的机构等)之信息,包括但不限于机构的名称、地址、联系方式、工商信息、税务信息、财务信息、经营信息、交易信息、资信信息、征信及信用信息、融资信息、关联方信息、诉讼、执行、行政处罚、刑事程序相关信息、负责人、法定代表人、股东、董事、高管、员工信息等。</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">9、本函所涉之定义</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">9.1 “个人信息” 即本人个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别本人的身份或者反映本人的相关情况的各种信息,包</span><span style=";font-family:DengXian;font-size:14px">括但不限于:</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)基本个人信息,包括但不限于姓名、性别、国籍、民族、出生日期、身份证件信息、学历信息、婚姻及家庭状况、面部特征、声音;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)通信、通讯、社交平台及联系信息,包括但不限于具体方式及内容;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)收入、工作及职业信息,包括但不限于收入来源及金额、工作单位、职业、工资发放日;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">4)亲属、联系人、推荐人信息;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">5)财产及账户信息,包括但不限于居住及住房情况、资产及财产状况、银行账户相关信息、社保信息、公积金信息、支付宝信息、交易信息、投资信</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">息、经营信息、税务信息;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">6)信用及征信信息,包括但不限于金融信用信息基础数据库信息及报告、芝麻信用信息、百行征信有限公司信用信息共享平台信息、中国互联网金融协</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">会信用信息共享平台信息,以及其他第三方提供的信用及征信信息;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">7)交易信息,包括但不限于任何交易的需求、发起、申请、进度、成交、约定、履约情况,以及相关衍生信息(如交易习惯或意愿),而该等交易可能涉</span><span style=";font-family:DengXian;font-size:14px">及由任何主体提供或是参与的任何产品或是服务,包括但不限于任何形式的贷款(含与贷款有关的基础交易)、投资、保险、消费、订购或其他经营性、非经营性交易;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">8)法律程序相关信息,包括但不限于诉讼、执行、行政处罚、刑事程序相关信息;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">9)设备及行为信息,包括但不限于域名、IP 地址、位置及轨迹、设备、系统、连接、访问浏览记录;以及</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">10)其他个人信息。</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">本人知晓上述部分信息为本人的个人敏感信息(包括但不限于身份证件号码、个人生物识别信息、银行账号、通信记录和内容、财产信息、征信信息、行踪轨迹),本人同时知晓该等信息一旦泄露、非法提供或滥用可能存在危害本人人身和财产安全的风险,并自愿接受上述风险。</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">为避免疑惑,以上所列的某些信息在单独出现的情况下是无法与任何特定个人直接建立联系的信息,不属于个人信息。如果将这类信息与其他信息结合用于识别个人身份,或者将其与个人信息结合使用,则在结合使用期间,此类信息将被视为个人信息。</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">9.2 “不良信息” 是指任何负面信息或可能产生负面影响的信息,包括但不限于任何违法、违规、违约信息、不良信用及征信信息,涉及的范围包括个人信</span><span style=";font-family:DengXian;font-size:14px">息及相关机构信息。</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">9.3 “有权机关” 是指位于任何司法管辖区的任何政府部门、半政府部门、类政府部门、税务部门、监管部门、法院、检察院、公安机关、仲裁庭、自律组</span><span style=";font-family:DengXian;font-size:14px">织或其他有权机关。</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">9.4 “公开(包括有限公开)或非公开渠道或平台” ,包括但不限于全国公民身份证号码查询服务中心、金融信用信息基础数据库、百行征信有限公司信用</span><span style=";font-family:DengXian;font-size:14px">信息共享平台、中国互联网金融协会信用信息共享平台,以及合法设立的征信或信用机构及其他类似机构;</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">9.5 “与本人有关的联系人/机构“ ,包括但不限于本人的亲属、朋友、同事、紧急联系人、通讯录联系人、雇主、工作单位、本人投资/经营的实体以及与</span><span style=";font-family:DengXian;font-size:14px">之有合作</span><span style=";font-family:DengXian;font-size:14px">/供销/关联关系的机构、其他合理的、或本人及/或其他信息当事人同意的相关方。</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">10、本《信息授权函》自在线勾选确认之日起生效,适用于所有在本《信息授权函》生效之前已经发生或存在的与个人信息有关事项,本《信息授权函》具</span><span style=";font-family:DengXian;font-size:14px">有独立性,不受其他文件或约定瑕疵的影响。</span>
       </p>
       <p style="text-indent:28px">
           <span style=";font-family:DengXian;font-size:14px">11、本人已仔细阅读并完全理解本函全部内容,亦完全了解与本函有关的所有风险和不利影响,本人知晓本人有权拒绝签署本函,但本人系出于完全的自愿</span><span style=";font-family:DengXian;font-size:14px">签署本函,本人愿意承担由此带来的一切法律后果。</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">(以下无正文)</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;授权人:【】</span>
       </p>
       <p>
           <span style=";font-family:DengXian;font-size:14px">&nbsp;授权日期:&nbsp;【】</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">年</span>&nbsp;</span><span style=";font-family:DengXian;font-size:14px">【】</span><span style=";font-family:DengXian;font-size:14px">&nbsp;月&nbsp;</span><span style=";font-family:DengXian;font-size:14px">【】</span><span style=";font-family:DengXian;font-size:14px">&nbsp;日</span>
       </p>
       <p>
           <br/>
       </p>`
           return agreement5
}
static/agreement5.js
New file
@@ -0,0 +1,8 @@
export var repstr = function(userNamex,idNo) {
           var d = new Date();
           const agreement5 =``
           return agreement5
}
vue.config.js
New file
@@ -0,0 +1,15 @@
/*
 * @Author: 小明丶
 * @Date: 2019-08-30 09:19:08
 * @LastEditors: 小明丶
 * @LastEditTime: 2019-08-30 09:47:47
 * @Description:
 */
module.exports = {
    configureWebpack: config => {
        require('vux-loader').merge(config, {
            options: {},
            plugins: ['vux-ui']
        })
    }
}
webpack.common.js
New file
@@ -0,0 +1,132 @@
/*
 * @Author: 小明丶
 * @Date: 2019-08-19 15:23:18
 * @LastEditors: 小明丶
 * @LastEditTime: 2021-01-07 10:34:13
 * @Description:
 */
//  webpack通用配置
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CopyPlugin = require('copy-webpack-plugin');
const vuxLoader = require('vux-loader');
let env = process.env.NODE_ENV ==='production';
console.log(env)
//打包地址
let srcUrl = '/comn_business/'
module.exports = {
    entry: {
        index: "./src/index.js",
    },
    output: {
        filename: 'js/[name].js',
        path: path.resolve(__dirname, 'dist'),
        publicPath: env ? srcUrl : '/' //根据线上项目路径更改 /projectpath
    },
    /**防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖,
     * 简而言之:就是使用cdn~不打包这些变量引用的文件,生成环境时需要在index.html中手动引入cdn
     */
    externals: {
        vue: "Vue",
        axios: "axios",
        vuex: "Vuex",
        router: "VueRouter",
    },
    resolve: {
        extensions: ['.vue', '.js', '.less'],
        alias: { //别名配置
            "@": path.resolve(__dirname, 'src')
        }
    },
    module: {
        rules: [{
                test: /\.(svg|ttf|eot|woff)\??.*$/,
                loader: "url-loader?limit=10000"
            },
            {
                test: /\.css$/,
                use: [
                    env ? MiniCssExtractPlugin.loader : "vue-style-loader",
                    'css-loader',
                    "postcss-loader",
                ],
            },
            {
                test: /\.less$/,
                use: [
                    env ? MiniCssExtractPlugin.loader : "vue-style-loader",
                    'css-loader',
                    "postcss-loader", //posscss-loader顺序一定要在less-loader前面~不然无法解析
                    'less-loader',
                    // 全局注入less变量,在所有vue组件中可使用
                    // 不能写不接受变量的死类名在这些文件里,不然每个vue文件都会注入这些css类,打包后增加css体积!
                    {
                        loader: 'style-resources-loader',
                        options: {
                            patterns: [
                                path.resolve(__dirname, 'src/style/mixins.less'),
                            ]
                        }
                    }
                ]
            },
            {
                test: /\.(png|svg|jpg|gif)/, //处理图片
                use: [{
                    loader: 'url-loader',
                    options: {
                        limit: 10000,
                        outputPath: 'img/',
                        publicPath:env ?`${srcUrl}img`:`/img`
                    }
                }]
            },
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            },
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        // @vue/babel-preset-jsx  vue jsx语法支持
                        presets: ['@babel/preset-env', '@vue/babel-preset-jsx'],
                        plugins: ["dynamic-import-webpack"] //import 函数支持,需要安装
                    }
                }
            },
        ]
    },
    plugins: [
        // 静态目录
        new CopyPlugin([{
            from: path.resolve(__dirname, 'static'),
            to: 'static',
        }, ]),
        new VueLoaderPlugin(),
        new HtmlWebpackPlugin({
            template: './public/index.html', //以这个文件作为模板
            filename: 'index.html', //打包后的文件名
            title: 'Vue_webpack',
            hash: true,
            minify: {
                removeComments: true, //移除注释
                collapseWhitespace: true,
                removeEmptyAttributes: true, //移除空属性
                removeAttributeQuotes: true //移除属性html标签属性的引号 ""
            },
        }),
    ],
}
// module.exports = vuxLoader.merge(webpackConfig, {
//     plugins: [{
//         name: 'vux-ui'
//     }]
//     }
// );
webpack.dev.js
New file
@@ -0,0 +1,63 @@
/*
 * @Author: 小明丶
 * @Date: 2019-08-19 15:23:18
 * @LastEditors: 小明丶
 * @LastEditTime: 2020-11-20 17:19:45
 * @Description:
 */
//  webpack开发环境配置
const webpack = require('webpack');
const merge = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
    mode: 'development',
    // 如果大型项目可以使用source-map,如果是中小型项目使用eval-source-map就可以了(方便debug)
    devtool: 'source-map',
    watch: true,
    devServer: {
        contentBase: './dist',
        inline: true,
        hot: true,
        host: 'localhost',
        //服务端压缩是否开启
        compress: true,
        //配置服务端口号
        port: 8011,
        // 代理配置
        proxy:{
            "/lism": {
                // target: 'http://192.168.1.46:8096',
                target: 'https://t.finlean.com',
                // target: 'https://pre.finlean.com',
                // target: 'http://192.168.1.63:8096',
                ws: true,
                changeOrigin: true
            },
            "/image": {
                // target: 'https://pre.finlean.com',
                target: 'https://t.finlean.com',
                ws: true,
                changeOrigin: true
            },
            '/jttech': {
                //target: 'https://pre.finlean.com',
                target: 'https://t.finlean.com',
                secure: false,
                changeOrigin: true
            }
        }
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
    ],
    watchOptions: {
        //不监听的目录
        ignored: /node_modules/,
        //当第一个文件更改,会在重新构建前增加延迟。这个选项允许 webpack 将这段时间内进行的任何其他更改都聚合到一次重新构建里。
        aggregateTimeout:800,
        // 通过传递 true 开启 polling,或者指定毫秒为单位进行轮询。
        // poll:1000,
    }
});
webpack.prod.js
New file
@@ -0,0 +1,38 @@
//  webpack生产环境配置
process.env.NODE_ENV = 'production';
const webpack = require('webpack');
const merge = require('webpack-merge');
const common = require('./webpack.common.js');
// 每次build之前删除dist文件夹
const CleanWebpackPlugin = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
// css压缩插件
var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
// js 压缩插件
// const Uglify = require('uglifyjs-webpack-plugin');
module.exports = merge(common, {
    mode:"production",
    plugins: [
        // new Uglify(),
        // 把vue组件的css文件提取出来
        new MiniCssExtractPlugin({
            filename: 'css/[name].[hash].css'
        }),
        // css压缩(cssnano、OptimizeCssAssetsPlugin) 需要install
        new OptimizeCssAssetsPlugin({
            assetNameRegExp: /\.css$/g,
            cssProcessor: require('cssnano'),
            cssProcessorPluginOptions: {
              preset: ['default', { discardComments: { removeAll: true } }],
            },
            canPrint: true
        }),
        // 指定环境
        new webpack.DefinePlugin({
            'process.env.NODE_ENV': JSON.stringify('production')
        }),
        // 清理/dist 文件夹
        new CleanWebpackPlugin(['dist']),
    ],
});